From jriehl at codespeak.net Fri Apr 1 00:16:46 2005 From: jriehl at codespeak.net (jriehl at codespeak.net) Date: Fri, 1 Apr 2005 00:16:46 +0200 (MEST) Subject: [pypy-svn] r10207 - in pypy/dist/pypy/module/parser: . test Message-ID: <20050331221646.91D9727BCB@code1.codespeak.net> Author: jriehl Date: Fri Apr 1 00:16:46 2005 New Revision: 10207 Modified: pypy/dist/pypy/module/parser/DFAParser.py pypy/dist/pypy/module/parser/PgenParser.py pypy/dist/pypy/module/parser/test/test_parser.py pypy/dist/pypy/module/parser/test/test_simple.py Log: Trying to remove some more of the Basil dependencies out of the parser code. Fixed(?) test modules so they at least appear to work from test_all. Modified: pypy/dist/pypy/module/parser/DFAParser.py ============================================================================== --- pypy/dist/pypy/module/parser/DFAParser.py (original) +++ pypy/dist/pypy/module/parser/DFAParser.py Fri Apr 1 00:16:46 2005 @@ -54,6 +54,7 @@ E_SYNTAX = 2 __DEBUG__ = 0 +__BASIL__ = 0 if __DEBUG__: import string @@ -280,10 +281,7 @@ # ____________________________________________________________ # Build tokenizer import sys - try: - from basil.lang.python import StdTokenizer - except ImportError: - import StdTokenizer + import StdTokenizer if inputFile == None: inputFile = "" fileObj = sys.stdin @@ -293,32 +291,34 @@ # ____________________________________________________________ # Build parser import pprint - from basil.parsing import pgen - gramAst = pgen.metaParser.parseFile(inputGrammar) - myParser = pgen.buildParser(gramAst) - grammar = myParser.toTuple() + import PgenParser + import PyPgen + gramAst = PgenParser.parseFile(inputGrammar) + grammarObj = PyPgen.PyPgen()(gramAst) # XXX - Maybe this API should change? + myParser = PyPgen.PyPgenParser(grammarObj) if __DEBUG__: - pprint.pprint(grammar) + pprint.pprint(grammarObj) symbols = myParser.stringToSymbolMap() # ____________________________________________________________ # Run parser import time t0 = time.time() - parseTree = parsetok(tokenizer, grammar, symbols['file_input']) + parseTree = parsetok(tokenizer, grammarObj, symbols['file_input']) t1 = time.time() print "DFAParser took %g seconds" % (t1 - t0) fileObj.close() # ____________________________________________________________ # Display AST - from basil.visuals.TreeBox import showTree - showTree(parseTree).mainloop() + if __BASIL__: + from basil.visuals.TreeBox import showTree + showTree(parseTree).mainloop() # ______________________________________________________________________ if __name__ == "__main__": import sys # XXX - Maybe this file location should not be hard coded?? - inputGrammar = "../../parsing/tests/test.pgen" + inputGrammar = "Grammar" if len(sys.argv) == 1: main(inputGrammar) else: Modified: pypy/dist/pypy/module/parser/PgenParser.py ============================================================================== --- pypy/dist/pypy/module/parser/PgenParser.py (original) +++ pypy/dist/pypy/module/parser/PgenParser.py Fri Apr 1 00:16:46 2005 @@ -212,8 +212,6 @@ parseTree = parseFile(sys.argv[1]) else: parseTree = parseString(sys.stdin.read()) - from basil.visuals.TreeBox import showTree - showTree(parseTree).mainloop() # ______________________________________________________________________ Modified: pypy/dist/pypy/module/parser/test/test_parser.py ============================================================================== --- pypy/dist/pypy/module/parser/test/test_parser.py (original) +++ pypy/dist/pypy/module/parser/test/test_parser.py Fri Apr 1 00:16:46 2005 @@ -1,399 +1,399 @@ -import basil.common.python.pyparser as parser -import unittest -from test import test_support - -# -# First, we test that we can generate trees from valid source fragments, -# and that these valid trees are indeed allowed by the tree-loading side -# of the parser module. -# - -class RoundtripLegalSyntaxTestCase(unittest.TestCase): - - def roundtrip(self, f, s): - st1 = f(s) - t = st1.totuple() - try: - st2 = parser.sequence2st(t) - except parser.ParserError: - self.fail("could not roundtrip %r" % s) - - self.assertEquals(t, st2.totuple(), - "could not re-generate syntax tree") - - def check_expr(self, s): - self.roundtrip(parser.expr, s) - - def check_suite(self, s): - self.roundtrip(parser.suite, s) - - def test_yield_statement(self): - self.check_suite("def f(): yield 1") - self.check_suite("def f(): return; yield 1") - self.check_suite("def f(): yield 1; return") - self.check_suite("def f():\n" - " for x in range(30):\n" - " yield x\n") - - def test_expressions(self): - self.check_expr("foo(1)") - self.check_expr("[1, 2, 3]") - self.check_expr("[x**3 for x in range(20)]") - self.check_expr("[x**3 for x in range(20) if x % 3]") - self.check_expr("foo(*args)") - self.check_expr("foo(*args, **kw)") - self.check_expr("foo(**kw)") - self.check_expr("foo(key=value)") - self.check_expr("foo(key=value, *args)") - self.check_expr("foo(key=value, *args, **kw)") - self.check_expr("foo(key=value, **kw)") - self.check_expr("foo(a, b, c, *args)") - self.check_expr("foo(a, b, c, *args, **kw)") - self.check_expr("foo(a, b, c, **kw)") - self.check_expr("foo + bar") - self.check_expr("foo - bar") - self.check_expr("foo * bar") - self.check_expr("foo / bar") - self.check_expr("foo // bar") - self.check_expr("lambda: 0") - self.check_expr("lambda x: 0") - self.check_expr("lambda *y: 0") - self.check_expr("lambda *y, **z: 0") - self.check_expr("lambda **z: 0") - self.check_expr("lambda x, y: 0") - self.check_expr("lambda foo=bar: 0") - self.check_expr("lambda foo=bar, spaz=nifty+spit: 0") - self.check_expr("lambda foo=bar, **z: 0") - self.check_expr("lambda foo=bar, blaz=blat+2, **z: 0") - self.check_expr("lambda foo=bar, blaz=blat+2, *y, **z: 0") - self.check_expr("lambda x, *y, **z: 0") - - def test_print(self): - self.check_suite("print") - self.check_suite("print 1") - self.check_suite("print 1,") - self.check_suite("print >>fp") - self.check_suite("print >>fp, 1") - self.check_suite("print >>fp, 1,") - - def test_simple_expression(self): - # expr_stmt - self.check_suite("a") - - def test_simple_assignments(self): - self.check_suite("a = b") - self.check_suite("a = b = c = d = e") - - def test_simple_augmented_assignments(self): - self.check_suite("a += b") - self.check_suite("a -= b") - self.check_suite("a *= b") - self.check_suite("a /= b") - self.check_suite("a //= b") - self.check_suite("a %= b") - self.check_suite("a &= b") - self.check_suite("a |= b") - self.check_suite("a ^= b") - self.check_suite("a <<= b") - self.check_suite("a >>= b") - self.check_suite("a **= b") - - def test_function_defs(self): - self.check_suite("def f(): pass") - self.check_suite("def f(*args): pass") - self.check_suite("def f(*args, **kw): pass") - self.check_suite("def f(**kw): pass") - self.check_suite("def f(foo=bar): pass") - self.check_suite("def f(foo=bar, *args): pass") - self.check_suite("def f(foo=bar, *args, **kw): pass") - self.check_suite("def f(foo=bar, **kw): pass") - - self.check_suite("def f(a, b): pass") - self.check_suite("def f(a, b, *args): pass") - self.check_suite("def f(a, b, *args, **kw): pass") - self.check_suite("def f(a, b, **kw): pass") - self.check_suite("def f(a, b, foo=bar): pass") - self.check_suite("def f(a, b, foo=bar, *args): pass") - self.check_suite("def f(a, b, foo=bar, *args, **kw): pass") - self.check_suite("def f(a, b, foo=bar, **kw): pass") - - def test_import_from_statement(self): - self.check_suite("from sys.path import *") - self.check_suite("from sys.path import dirname") - self.check_suite("from sys.path import dirname as my_dirname") - self.check_suite("from sys.path import dirname, basename") - self.check_suite( - "from sys.path import dirname as my_dirname, basename") - self.check_suite( - "from sys.path import dirname, basename as my_basename") - - def test_basic_import_statement(self): - self.check_suite("import sys") - self.check_suite("import sys as system") - self.check_suite("import sys, math") - self.check_suite("import sys as system, math") - self.check_suite("import sys, math as my_math") - - def test_pep263(self): - self.check_suite("# -*- coding: iso-8859-1 -*-\n" - "pass\n") - - def test_assert(self): - self.check_suite("assert alo < ahi and blo < bhi\n") - -# -# Second, we take *invalid* trees and make sure we get ParserError -# rejections for them. -# - -class IllegalSyntaxTestCase(unittest.TestCase): - - bad_trees = {} - - def check_bad_tree(self, tree, label): - try: - parser.sequence2st(tree) - except parser.ParserError: - pass - else: - self.fail("did not detect invalid tree for %r" % label) - - def test_junk(self): - # not even remotely valid: - self.check_bad_tree((1, 2, 3), "") - - bad_trees['illegal_yield_1'] = \ - (257, - (264, - (285, - (259, - (1, 'def'), - (1, 'f'), - (260, (7, '('), (8, ')')), - (11, ':'), - (291, - (4, ''), - (5, ''), - (264, - (265, - (266, - (272, - (275, - (1, 'return'), - (313, - (292, - (293, - (294, - (295, - (297, - (298, - (299, - (300, - (301, - (302, (303, (304, (305, (2, '1')))))))))))))))))), - (264, - (265, - (266, - (272, - (276, - (1, 'yield'), - (313, - (292, - (293, - (294, - (295, - (297, - (298, - (299, - (300, - (301, - (302, - (303, (304, (305, (2, '1')))))))))))))))))), - (4, ''))), - (6, ''))))), - (4, ''), - (0, '')))) - - def test_illegal_yield_1(self): - # Illegal yield statement: def f(): return 1; yield 1 - tree = self.bad_trees['illegal_yield_1'] - self.check_bad_tree(tree, "def f():\n return 1\n yield 1") - - bad_trees['illegal_yield_2'] = \ - (257, - (264, - (265, - (266, - (278, - (1, 'from'), - (281, (1, '__future__')), - (1, 'import'), - (279, (1, 'generators')))), - (4, ''))), - (264, - (285, - (259, - (1, 'def'), - (1, 'f'), - (260, (7, '('), (8, ')')), - (11, ':'), - (291, - (4, ''), - (5, ''), - (264, - (265, - (266, - (272, - (275, - (1, 'return'), - (313, - (292, - (293, - (294, - (295, - (297, - (298, - (299, - (300, - (301, - (302, (303, (304, (305, (2, '1')))))))))))))))))), - (264, - (265, - (266, - (272, - (276, - (1, 'yield'), - (313, - (292, - (293, - (294, - (295, - (297, - (298, - (299, - (300, - (301, - (302, - (303, (304, (305, (2, '1')))))))))))))))))), - (4, ''))), - (6, ''))))), - (4, ''), - (0, '')))) - - def test_illegal_yield_2(self): - # Illegal return in generator: def f(): return 1; yield 1 - tree = self.bad_trees['illegal_yield_2'] - self.check_bad_tree(tree, "def f():\n return 1\n yield 1") - - bad_trees['print_chevron_comma'] = \ - (257, - (264, - (265, - (266, - (268, - (1, 'print'), - (35, '>>'), - (290, - (291, - (292, - (293, - (295, - (296, - (297, - (298, (299, (300, (301, (302, (303, (1, 'fp')))))))))))))), - (12, ','))), - (4, ''))), - (0, '')) - - def test_print_chevron_comma(self): - # Illegal input: print >>fp, - tree = self.bad_trees['print_chevron_comma'] - self.check_bad_tree(tree, "print >>fp,") - - bad_trees['a_comma_comma_c'] = \ - (258, - (311, - (290, - (291, - (292, - (293, - (295, - (296, - (297, - (298, (299, (300, (301, (302, (303, (1, 'a')))))))))))))), - (12, ','), - (12, ','), - (290, - (291, - (292, - (293, - (295, - (296, - (297, - (298, (299, (300, (301, (302, (303, (1, 'c'))))))))))))))), - (4, ''), - (0, '')) - - def test_a_comma_comma_c(self): - # Illegal input: a,,c - tree = self.bad_trees['a_comma_comma_c'] - self.check_bad_tree(tree, "a,,c") - - bad_trees['illegal_operator'] = \ - (257, - (264, - (265, - (266, - (267, - (312, - (291, - (292, - (293, - (294, - (296, - (297, - (298, - (299, - (300, (301, (302, (303, (304, (1, 'a'))))))))))))))), - (268, (37, '$=')), - (312, - (291, - (292, - (293, - (294, - (296, - (297, - (298, - (299, - (300, (301, (302, (303, (304, (1, 'b'))))))))))))))))), - (4, ''))), - (0, '')) - - def test_illegal_operator(self): - # Illegal input: a $= b - tree = self.bad_trees['illegal_operator'] - self.check_bad_tree(tree, "a $= b") - - bad_trees['malformed_global'] = \ - (257, - (264, - (265, - (266, - (282, (1, 'foo'))), (4, ''))), - (4, ''), - (0, '')) - - def test_malformed_global(self): - #doesn't have global keyword in ast - tree = self.bad_trees['malformed_global'] - self.check_bad_tree(tree, "malformed global ast") - -def test_main(): - test_support.run_unittest( - RoundtripLegalSyntaxTestCase, - IllegalSyntaxTestCase - ) - - -if __name__ == "__main__": - test_main() +import parser +import unittest +from test import test_support + +# +# First, we test that we can generate trees from valid source fragments, +# and that these valid trees are indeed allowed by the tree-loading side +# of the parser module. +# + +class RoundtripLegalSyntaxTestCase(unittest.TestCase): + + def roundtrip(self, f, s): + st1 = f(s) + t = st1.totuple() + try: + st2 = parser.sequence2st(t) + except parser.ParserError: + self.fail("could not roundtrip %r" % s) + + self.assertEquals(t, st2.totuple(), + "could not re-generate syntax tree") + + def check_expr(self, s): + self.roundtrip(parser.expr, s) + + def check_suite(self, s): + self.roundtrip(parser.suite, s) + + def test_yield_statement(self): + self.check_suite("def f(): yield 1") + self.check_suite("def f(): return; yield 1") + self.check_suite("def f(): yield 1; return") + self.check_suite("def f():\n" + " for x in range(30):\n" + " yield x\n") + + def test_expressions(self): + self.check_expr("foo(1)") + self.check_expr("[1, 2, 3]") + self.check_expr("[x**3 for x in range(20)]") + self.check_expr("[x**3 for x in range(20) if x % 3]") + self.check_expr("foo(*args)") + self.check_expr("foo(*args, **kw)") + self.check_expr("foo(**kw)") + self.check_expr("foo(key=value)") + self.check_expr("foo(key=value, *args)") + self.check_expr("foo(key=value, *args, **kw)") + self.check_expr("foo(key=value, **kw)") + self.check_expr("foo(a, b, c, *args)") + self.check_expr("foo(a, b, c, *args, **kw)") + self.check_expr("foo(a, b, c, **kw)") + self.check_expr("foo + bar") + self.check_expr("foo - bar") + self.check_expr("foo * bar") + self.check_expr("foo / bar") + self.check_expr("foo // bar") + self.check_expr("lambda: 0") + self.check_expr("lambda x: 0") + self.check_expr("lambda *y: 0") + self.check_expr("lambda *y, **z: 0") + self.check_expr("lambda **z: 0") + self.check_expr("lambda x, y: 0") + self.check_expr("lambda foo=bar: 0") + self.check_expr("lambda foo=bar, spaz=nifty+spit: 0") + self.check_expr("lambda foo=bar, **z: 0") + self.check_expr("lambda foo=bar, blaz=blat+2, **z: 0") + self.check_expr("lambda foo=bar, blaz=blat+2, *y, **z: 0") + self.check_expr("lambda x, *y, **z: 0") + + def test_print(self): + self.check_suite("print") + self.check_suite("print 1") + self.check_suite("print 1,") + self.check_suite("print >>fp") + self.check_suite("print >>fp, 1") + self.check_suite("print >>fp, 1,") + + def test_simple_expression(self): + # expr_stmt + self.check_suite("a") + + def test_simple_assignments(self): + self.check_suite("a = b") + self.check_suite("a = b = c = d = e") + + def test_simple_augmented_assignments(self): + self.check_suite("a += b") + self.check_suite("a -= b") + self.check_suite("a *= b") + self.check_suite("a /= b") + self.check_suite("a //= b") + self.check_suite("a %= b") + self.check_suite("a &= b") + self.check_suite("a |= b") + self.check_suite("a ^= b") + self.check_suite("a <<= b") + self.check_suite("a >>= b") + self.check_suite("a **= b") + + def test_function_defs(self): + self.check_suite("def f(): pass") + self.check_suite("def f(*args): pass") + self.check_suite("def f(*args, **kw): pass") + self.check_suite("def f(**kw): pass") + self.check_suite("def f(foo=bar): pass") + self.check_suite("def f(foo=bar, *args): pass") + self.check_suite("def f(foo=bar, *args, **kw): pass") + self.check_suite("def f(foo=bar, **kw): pass") + + self.check_suite("def f(a, b): pass") + self.check_suite("def f(a, b, *args): pass") + self.check_suite("def f(a, b, *args, **kw): pass") + self.check_suite("def f(a, b, **kw): pass") + self.check_suite("def f(a, b, foo=bar): pass") + self.check_suite("def f(a, b, foo=bar, *args): pass") + self.check_suite("def f(a, b, foo=bar, *args, **kw): pass") + self.check_suite("def f(a, b, foo=bar, **kw): pass") + + def test_import_from_statement(self): + self.check_suite("from sys.path import *") + self.check_suite("from sys.path import dirname") + self.check_suite("from sys.path import dirname as my_dirname") + self.check_suite("from sys.path import dirname, basename") + self.check_suite( + "from sys.path import dirname as my_dirname, basename") + self.check_suite( + "from sys.path import dirname, basename as my_basename") + + def test_basic_import_statement(self): + self.check_suite("import sys") + self.check_suite("import sys as system") + self.check_suite("import sys, math") + self.check_suite("import sys as system, math") + self.check_suite("import sys, math as my_math") + + def test_pep263(self): + self.check_suite("# -*- coding: iso-8859-1 -*-\n" + "pass\n") + + def test_assert(self): + self.check_suite("assert alo < ahi and blo < bhi\n") + +# +# Second, we take *invalid* trees and make sure we get ParserError +# rejections for them. +# + +class IllegalSyntaxTestCase(unittest.TestCase): + + bad_trees = {} + + def check_bad_tree(self, tree, label): + try: + parser.sequence2st(tree) + except parser.ParserError: + pass + else: + self.fail("did not detect invalid tree for %r" % label) + + def test_junk(self): + # not even remotely valid: + self.check_bad_tree((1, 2, 3), "") + + bad_trees['illegal_yield_1'] = \ + (257, + (264, + (285, + (259, + (1, 'def'), + (1, 'f'), + (260, (7, '('), (8, ')')), + (11, ':'), + (291, + (4, ''), + (5, ''), + (264, + (265, + (266, + (272, + (275, + (1, 'return'), + (313, + (292, + (293, + (294, + (295, + (297, + (298, + (299, + (300, + (301, + (302, (303, (304, (305, (2, '1')))))))))))))))))), + (264, + (265, + (266, + (272, + (276, + (1, 'yield'), + (313, + (292, + (293, + (294, + (295, + (297, + (298, + (299, + (300, + (301, + (302, + (303, (304, (305, (2, '1')))))))))))))))))), + (4, ''))), + (6, ''))))), + (4, ''), + (0, '')))) + + def test_illegal_yield_1(self): + # Illegal yield statement: def f(): return 1; yield 1 + tree = self.bad_trees['illegal_yield_1'] + self.check_bad_tree(tree, "def f():\n return 1\n yield 1") + + bad_trees['illegal_yield_2'] = \ + (257, + (264, + (265, + (266, + (278, + (1, 'from'), + (281, (1, '__future__')), + (1, 'import'), + (279, (1, 'generators')))), + (4, ''))), + (264, + (285, + (259, + (1, 'def'), + (1, 'f'), + (260, (7, '('), (8, ')')), + (11, ':'), + (291, + (4, ''), + (5, ''), + (264, + (265, + (266, + (272, + (275, + (1, 'return'), + (313, + (292, + (293, + (294, + (295, + (297, + (298, + (299, + (300, + (301, + (302, (303, (304, (305, (2, '1')))))))))))))))))), + (264, + (265, + (266, + (272, + (276, + (1, 'yield'), + (313, + (292, + (293, + (294, + (295, + (297, + (298, + (299, + (300, + (301, + (302, + (303, (304, (305, (2, '1')))))))))))))))))), + (4, ''))), + (6, ''))))), + (4, ''), + (0, '')))) + + def test_illegal_yield_2(self): + # Illegal return in generator: def f(): return 1; yield 1 + tree = self.bad_trees['illegal_yield_2'] + self.check_bad_tree(tree, "def f():\n return 1\n yield 1") + + bad_trees['print_chevron_comma'] = \ + (257, + (264, + (265, + (266, + (268, + (1, 'print'), + (35, '>>'), + (290, + (291, + (292, + (293, + (295, + (296, + (297, + (298, (299, (300, (301, (302, (303, (1, 'fp')))))))))))))), + (12, ','))), + (4, ''))), + (0, '')) + + def test_print_chevron_comma(self): + # Illegal input: print >>fp, + tree = self.bad_trees['print_chevron_comma'] + self.check_bad_tree(tree, "print >>fp,") + + bad_trees['a_comma_comma_c'] = \ + (258, + (311, + (290, + (291, + (292, + (293, + (295, + (296, + (297, + (298, (299, (300, (301, (302, (303, (1, 'a')))))))))))))), + (12, ','), + (12, ','), + (290, + (291, + (292, + (293, + (295, + (296, + (297, + (298, (299, (300, (301, (302, (303, (1, 'c'))))))))))))))), + (4, ''), + (0, '')) + + def test_a_comma_comma_c(self): + # Illegal input: a,,c + tree = self.bad_trees['a_comma_comma_c'] + self.check_bad_tree(tree, "a,,c") + + bad_trees['illegal_operator'] = \ + (257, + (264, + (265, + (266, + (267, + (312, + (291, + (292, + (293, + (294, + (296, + (297, + (298, + (299, + (300, (301, (302, (303, (304, (1, 'a'))))))))))))))), + (268, (37, '$=')), + (312, + (291, + (292, + (293, + (294, + (296, + (297, + (298, + (299, + (300, (301, (302, (303, (304, (1, 'b'))))))))))))))))), + (4, ''))), + (0, '')) + + def test_illegal_operator(self): + # Illegal input: a $= b + tree = self.bad_trees['illegal_operator'] + self.check_bad_tree(tree, "a $= b") + + bad_trees['malformed_global'] = \ + (257, + (264, + (265, + (266, + (282, (1, 'foo'))), (4, ''))), + (4, ''), + (0, '')) + + def test_malformed_global(self): + #doesn't have global keyword in ast + tree = self.bad_trees['malformed_global'] + self.check_bad_tree(tree, "malformed global ast") + +def test_main(): + test_support.run_unittest( + RoundtripLegalSyntaxTestCase, + IllegalSyntaxTestCase + ) + + +if __name__ == "__main__": + test_main() Modified: pypy/dist/pypy/module/parser/test/test_simple.py ============================================================================== --- pypy/dist/pypy/module/parser/test/test_simple.py (original) +++ pypy/dist/pypy/module/parser/test/test_simple.py Fri Apr 1 00:16:46 2005 @@ -1,39 +1,129 @@ +#! /usr/bin/env python +# ______________________________________________________________________ import unittest, inspect, compiler import sys -import parser as cpy_parser -sys.path.insert(0, '..') -del sys.modules['parser'] -import pyparser as parser -assert hasattr(parser, 'PyTokenizer'), "not using Basil's common parser" + +# XXX - Is there a better way to detect that we are in PyPy? +print sys.version +if "pypy" in sys.version: + cpy_parser = None + import parser +else: + import parser as cpy_parser + del sys.modules['parser'] + import pypy.module.parser.pyparser as parser + print dir(parser) + #assert hasattr(parser, 'PyTokenizer'), "not using Basil's common parser" + from pypy.objspace.std import StdObjSpace + space = StdObjSpace() + # XXX - This is a hack to get around the object space. Should take a + # closer look at these tests and build real PyPy tests, not hacked + # CPython-style tests. One might also note this is an application level + # test of interpreter level code, unless it is run in the mode given above. + old_suite = parser.suite + def new_suite (source): + return old_suite(space, source) + parser.suite = new_suite class SimpleParserTestCase(unittest.TestCase): def test_compile_empty_function(self): - ast1 = parser.suite('def f(): pass') - ast2 = cpy_parser.suite('def f(): pass') - - tup1 = parser.ast2tuple(ast1) - tup2 = cpy_parser.ast2tuple(ast2) + source = "def f(): pass" + + if cpy_parser != None: + ast1 = parser.suite(source) + tup1 = ast1.totuple() + ast2 = cpy_parser.suite(source) + tup2 = cpy_parser.ast2tuple(ast2) + else: + ast1 = parser.suite(source) + tup1 = parser.ast2tuple(ast1) + # XXX - This is hand computed against the 2.3.5 parser! + tup2 = (257, + (264, + (285, + (259, + (1, 'def'), + (1, 'f'), + (260, + (7, '('), + (8, ')')), + (11, ':'), + (291, + (265, + (266, + (271, + (1, 'pass'))), + (4, '')))))), + (0, '')) self.assertEquals(tup1, tup2) def test_compile_function(self): source = "def f(x, arg1=None): return x" - ast1 = parser.suite(source) - ast2 = cpy_parser.suite(source) - - tup1 = parser.ast2tuple(ast1) - tup2 = cpy_parser.ast2tuple(ast2) - + if cpy_parser != None: + ast1 = parser.suite(source) + tup1 = parser.ast2tuple(ast1) + ast2 = cpy_parser.suite(source) + tup2 = cpy_parser.ast2tuple(ast2) + else: + # XXX - This is hand computed against the 2.3.5 parser! + ast1 = parser.suite(source) + tup1 = parser.ast2tuple(ast1) + tup2 = (257, + (264, + (285, + (259, + (1, 'def'), + (1, 'f'), + (260, (7, '('), + (261, + (262, (1, 'x')), (12, ','), + (262, (1, 'arg1')), (22, '='), + (292, + (293, + (294, + (295, + (297, + (298, + (299, + (300, + (301, + (302, + (303, (304, (305, (1, 'None'))))))))))))))), + (8, ')')), + (11, ':'), + (291, + (265, + (266, + (272, + (275, (1, 'return'), + (313, + (292, + (293, + (294, + (295, + (297, + (298, + (299, + (300, + (301, + (302, + (303, + (304, (305, (1, 'x')))))))))))))))))), + (4, '')))))), (0, '')) self.assertEquals(tup1, tup2) class SimpleCompilerTestCase(unittest.TestCase): def test_compile_simple(self): source = "def f(arg): return arg + 1\ni = f(41)" co1, co2 = self.compile2(source) - d1, d2 = {}, {} - exec co1 in d1 + d1, d2 = {}, {} exec co2 in d2 - self.assertEquals(d1['i'], d2['i']) + if co1 != None: + exec co1 in d1 + self.assertEquals(d1['i'], d2['i']) + else: + self.assertEquals(d2['i'], 42) def compile2(self, source): #ast1 = cpy_parser.suite(source) From cfbolz at codespeak.net Fri Apr 1 02:50:58 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Fri, 1 Apr 2005 02:50:58 +0200 (MEST) Subject: [pypy-svn] r10208 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050401005058.D2D9327BD8@code1.codespeak.net> Author: cfbolz Date: Fri Apr 1 02:50:58 2005 New Revision: 10208 Modified: pypy/dist/pypy/translator/llvm/genllvm.py pypy/dist/pypy/translator/llvm/llvmbc.py pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: fixed a bug. Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Fri Apr 1 02:50:58 2005 @@ -159,4 +159,28 @@ yield l_dep1 yield l_repr +<<<<<<< .mine +## class AAA(object): +## def __init__(self): +## self.a = 1 + +## class BBB(AAA): +## def __init__(self): +## self.a = 2 +## self.b = 2 + +## def f1(flag): +## if flag: +## a = AAA() +## else: +## a = BBB() +## return a.a + +## t = Translator(f1, simplifying=True) +## a = t.annotate([bool]) +## t.view() +## f = llvmcompile(t) +======= + +>>>>>>> .r10207 Modified: pypy/dist/pypy/translator/llvm/llvmbc.py ============================================================================== --- pypy/dist/pypy/translator/llvm/llvmbc.py (original) +++ pypy/dist/pypy/translator/llvm/llvmbc.py Fri Apr 1 02:50:58 2005 @@ -73,6 +73,9 @@ self.instructions.append(s + ", ".join([a.typed_name() for a in l_args]) + ")") + def invoke(self, l_target, l_func, l_args, errorblock): + pass + def ret(self, l_value): self.instructions.append("ret %s" % l_value.typed_name()) @@ -134,3 +137,11 @@ s += ["\t%s\n" % ins] return "".join(s) + +class ExceptionBasicBlock(BasicBlock): + def __init__(self, label, regularblock, exceptblock): + self.label = label + self.exceptblock = exceptblock + self.regularblock = regularblock + self.llvmblocks = [] + self.instructions = [] Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Fri Apr 1 02:50:58 2005 @@ -830,7 +830,7 @@ self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) else: self.llvm_func.basic_block(lblock) - #Create Phi nodes (but not for the first node) + #Create Phi nodes (but not for the first block) incoming_links = [] def visit(node): if isinstance(node, Link) and node.target == pyblock: @@ -847,25 +847,14 @@ l_v2 = self.gen.get_repr(incoming_links[0].args[i]) self.dependencies.update([l_arg, l_switch, l_v1, l_v2]) lblock.select(l_arg, l_select, l_v1, l_v2) - #special case for isinstance blocks: - #if the type changes a cast is neccessary - elif len(incoming_links) == 1: - link = incoming_links[0] - for i, arg in enumerate(pyblock.inputargs): - l_arg = self.gen.get_repr(arg) - l_value = self.gen.get_repr(link.args[i]) - self.dependencies.update([l_arg, l_value]) - if l_arg.llvmtype() == l_value.llvmtype(): - lblock.phi( - l_arg, [l_value], - ["%%block%i" % self.blocknum[link.prevblock]]) - else: - lblock.cast(l_arg, l_value) elif len(incoming_links) != 0: for i, arg in enumerate(pyblock.inputargs): l_arg = self.gen.get_repr(arg) l_values = [self.gen.get_repr(l.args[i]) for l in incoming_links] + for j in range(len(l_values)): + if l_values[j].llvmtype() != l_arg.llvmtype(): + l_values[j] = l_values[j].alt_types[l_arg.llvmtype()] self.dependencies.add(l_arg) self.dependencies.update(l_values) lblock.phi(l_arg, l_values, @@ -894,6 +883,24 @@ "Dispatched on: %s" % l_arg0 raise CompileError, s + # XXX: If a variable is passed to another block and has a different + # type there, we have to make the cast in this block since the phi + # instructions in the next block cannot be preceded by any other + # instrcution + for link in pyblock.exits: + for i, arg in enumerate(link.args): + localtype = self.annotator.binding(arg) + targettype = self.annotator.binding( + link.target.inputargs[i]) + l_targettype = self.gen.get_repr(targettype) + l_localtype = self.gen.get_repr(localtype) + l_local = self.gen.get_repr(arg) + self.dependencies.update([l_targettype, l_localtype, + l_local]) + if l_targettype.llvmname() != l_localtype.llvmname(): + l_tmp = self.gen.get_local_tmp(l_targettype, self) + lblock.cast(l_tmp, l_local) + l_local.alt_types = {l_targettype.llvmname(): l_tmp} #Create branches if pyblock.exitswitch is None: if pyblock.exits == (): Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Fri Apr 1 02:50:58 2005 @@ -226,6 +226,23 @@ c = CCC() return ifisinstance(a) + ifisinstance(b) + ifisinstance(c) +class CLA(object): + def __init__(self): + self.a = 1 + +class CLB(CLA): + def __init__(self): + self.a = 2 + self.b = 1 + +def merge_classes(flag): + if flag: + a = CLA() + else: + a = CLB() + return a.a + + #string snippets def string_f1(i): j = 0 Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Fri Apr 1 02:50:58 2005 @@ -219,6 +219,11 @@ def test_flow_type(self): f = compile_function(llvmsnippet.flow_type, []) assert f() == 16 + + def test_merge_class(self): + f = compile_function(llvmsnippet.merge_classes, [bool]) + assert f(True) == 1 + assert f(False) == 2 class TestString(object): def setup_method(self, method): From cfbolz at codespeak.net Fri Apr 1 02:53:56 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Fri, 1 Apr 2005 02:53:56 +0200 (MEST) Subject: [pypy-svn] r10209 - pypy/dist/pypy/translator/llvm Message-ID: <20050401005356.D0AF927BDB@code1.codespeak.net> Author: cfbolz Date: Fri Apr 1 02:53:56 2005 New Revision: 10209 Modified: pypy/dist/pypy/translator/llvm/genllvm.py Log: Oops. I got no idea what happened here. Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Fri Apr 1 02:53:56 2005 @@ -159,28 +159,4 @@ yield l_dep1 yield l_repr -<<<<<<< .mine -## class AAA(object): -## def __init__(self): -## self.a = 1 - -## class BBB(AAA): -## def __init__(self): -## self.a = 2 -## self.b = 2 - -## def f1(flag): -## if flag: -## a = AAA() -## else: -## a = BBB() -## return a.a - -## t = Translator(f1, simplifying=True) -## a = t.annotate([bool]) -## t.view() -## f = llvmcompile(t) -======= - ->>>>>>> .r10207 From mcherm at codespeak.net Fri Apr 1 04:17:50 2005 From: mcherm at codespeak.net (mcherm at codespeak.net) Date: Fri, 1 Apr 2005 04:17:50 +0200 (MEST) Subject: [pypy-svn] r10211 - in pypy/dist/pypy: interpreter module/_sre_pypy objspace/std Message-ID: <20050401021750.3027627BD9@code1.codespeak.net> Author: mcherm Date: Fri Apr 1 04:17:49 2005 New Revision: 10211 Added: pypy/dist/pypy/module/_sre_pypy/ (props changed) pypy/dist/pypy/module/_sre_pypy/__init__.py (contents, props changed) pypy/dist/pypy/module/_sre_pypy/application_code.py (contents, props changed) pypy/dist/pypy/module/_sre_pypy/interpreter_code.py (contents, props changed) pypy/dist/pypy/module/_sre_pypy/test.py (contents, props changed) Modified: pypy/dist/pypy/interpreter/baseobjspace.py pypy/dist/pypy/objspace/std/fake.py Log: Created _sre module which delegates to the C implementation of _sre from the underlying python interpreter. Modified: pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/dist/pypy/interpreter/baseobjspace.py Fri Apr 1 04:17:49 2005 @@ -82,6 +82,12 @@ self.setitem(w_modules, w_name, w_builtin) self.setitem(self.builtin.w_dict, self.wrap('__builtins__'), w_builtin) + from pypy.module._sre_pypy import Module + w_name = self.wrap('_sre') + mod = Module(self, w_name) + w_mod = self.wrap(mod) + self.setitem(w_modules, w_name, w_mod) + self.setbuiltinmodule('parser') # initialize with "bootstrap types" from objspace (e.g. w_None) Added: pypy/dist/pypy/module/_sre_pypy/__init__.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/_sre_pypy/__init__.py Fri Apr 1 04:17:49 2005 @@ -0,0 +1,53 @@ +""" + _sre_pypy + + A pypy interpreter-level implementation of the _sre module which is + implemented by invoking _sre from the underlying interpreter and + wrapping the results. + + We hope someday to replace the C dependency; hopefully this module + allows us to do so one piece at a time. +""" + +from pypy.interpreter.lazymodule import LazyModule + + +class Module(LazyModule): + """_sre_pypy module""" + + appleveldefs = { + '__name__': 'application_code.__name__', + '__doc__': 'application_code.__doc__', + 'getcodesize': 'application_code.getcodesize', + 'compile': 'application_code.compile', + 'SRE_Pattern': 'application_code.SRE_Pattern', + 'SRE_Match': 'application_code.SRE_Match', + } + + interpleveldefs = { + # constants + 'MAGIC' : '(space.wrap(interpreter_code._sre.MAGIC))', + 'CODESIZE' : '(space.wrap(interpreter_code._sre.CODESIZE))', + 'getlower' : 'interpreter_code.getlower', + '_compile' : 'interpreter_code._compile', + '_fget' : 'interpreter_code._fget', + '_SRE_Pattern_match' : 'interpreter_code._SRE_Pattern_match', + '_SRE_Pattern_search' : 'interpreter_code._SRE_Pattern_search', + '_SRE_Pattern_findall' : 'interpreter_code._SRE_Pattern_findall', + '_SRE_Pattern_sub' : 'interpreter_code._SRE_Pattern_sub', + '_SRE_Pattern_subn' : 'interpreter_code._SRE_Pattern_subn', + '_SRE_Pattern_split' : 'interpreter_code._SRE_Pattern_split', + '_SRE_Pattern_finditer' : 'interpreter_code._SRE_Pattern_finditer', + '_SRE_Pattern_scanner' : 'interpreter_code._SRE_Pattern_scanner', + '_SRE_Match_start' : 'interpreter_code._SRE_Match_start', + '_SRE_Match_end' : 'interpreter_code._SRE_Match_end', + '_SRE_Match_expand' : 'interpreter_code._SRE_Match_expand', + '_SRE_Match_span' : 'interpreter_code._SRE_Match_span', + '_SRE_Match_groups' : 'interpreter_code._SRE_Match_groups', + '_SRE_Match_groupdict' : 'interpreter_code._SRE_Match_groupdict', + '_SRE_Match_group' : 'interpreter_code._SRE_Match_group', + '_SRE_Finditer_next' : 'interpreter_code._SRE_Finditer_next', + '_SRE_Scanner_match' : 'interpreter_code._SRE_Scanner_match', + '_SRE_Scanner_search' : 'interpreter_code._SRE_Scanner_search', + } + Added: pypy/dist/pypy/module/_sre_pypy/application_code.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/_sre_pypy/application_code.py Fri Apr 1 04:17:49 2005 @@ -0,0 +1,162 @@ +"""The application layer implementation of the _sre module.""" + +import sys +import _sre # Here we are importing the pypy version of _sre, (which is being + # defined within this very file!). This is done in order to access + # some methods written at interpreter level (they all start with + # underscores). + +__name__ = '_sre' +__doc__ = '_sre module: the core of the regular expression engine, implemented in C.' + +def getcodesize(): + return _sre.CODESIZE + + +def compile(pattern, flags, code, groups=0, groupindex={}, indexgroup=[None]): + import _sre + result = _sre._compile(pattern, flags, code, groups, groupindex, indexgroup) + return SRE_Pattern(result) + + +def _read_only_attribute(attr_name): + """This is used to construct read-only attributes.""" + def fget(self): + return _sre._fget(self._wrapped, attr_name) + return property(fget) + + +class SRE_Pattern(object): + def __init__(self, _wrapped): + self._wrapped = _wrapped + + pattern = _read_only_attribute('pattern') + flags = _read_only_attribute('flags') + groups = _read_only_attribute('groups') + groupindex = _read_only_attribute('groupindex') + + def match(self, pattern, pos=0, endpos=sys.maxint): + """Searches through the string 'pattern' (which is the string + to be searched, NOT the regular expression pattern) starting at + pos and ending at endpos looking for matches to the pattern. If + any are found it returns a SRE_Match match object; if no matches + are found it returns None.""" + result = _sre._SRE_Pattern_match(self._wrapped, pattern, pos, endpos) + if result is None: + return None + else: + return SRE_Match(result, self) + + def search(self, pattern, pos=0, endpos=sys.maxint): + result = _sre._SRE_Pattern_search(self._wrapped, pattern, pos, endpos) + if result is None: + return None + else: + return SRE_Match(result, self) + + def findall(self, string): + return _sre._SRE_Pattern_findall(self._wrapped, string) + + def sub(self, repl, string, count=0): + return _sre._SRE_Pattern_sub(self._wrapped, repl, string, count) + + def subn(self, repl, string, count=0): + return _sre._SRE_Pattern_subn(self._wrapped, repl, string, count) + + def split(self, string, maxsplit=0): + return _sre._SRE_Pattern_split(self._wrapped, string, maxsplit) + + def finditer(self, string): + result = _sre._SRE_Pattern_finditer(self._wrapped, string) + return SRE_Finditer(result, self) + + def scanner(self, string, start=0, end=sys.maxint): + result = _sre._SRE_Pattern_scanner(self._wrapped, string, start, end) + return SRE_Scanner(result, self) + + def __copy__(): + raise TypeError, 'cannot copy this pattern object' + + def __deepcopy__(): + raise TypeError, 'cannot copy this pattern object' + + + +class SRE_Finditer(object): + def __init__(self, _wrapped, _re): + self._wrapped = _wrapped + self._re = _re + def __iter__(self): + return self + def next(self): + match_obj = _sre._SRE_Finditer_next(self._wrapped) + return SRE_Match( match_obj, self._re) + + +class SRE_Scanner(object): + def __init__(self, _wrapped, pattern): + self._wrapped = _wrapped + self.pattern = pattern + + def match(self): + """Returns a match object if the string matches the pattern + starting at the current position, and advances the current position to + the end of the match. Returns None if the string fails to match the + pattern at the current position.""" + match_obj = _sre._SRE_Scanner_match(self._wrapped) + if match_obj is None: + return None + else: + return SRE_Match( match_obj, self.pattern ) + + def search(self): + """Returns a match object if the string matches the pattern anywhere + on or after the current position, and advances the curent position to + the end of the match. Returns None if the string fails to match the + pattern at the current position.""" + match_obj = _sre._SRE_Scanner_search(self._wrapped) + if match_obj is None: + return None + else: + return SRE_Match( match_obj, self.pattern ) + + +class SRE_Match(object): + def __init__(self, _wrapped, re): + self._wrapped = _wrapped + self.re = re + + string = _read_only_attribute('string') + pos = _read_only_attribute('pos') + endpos = _read_only_attribute('endpos') + lastindex = _read_only_attribute('lastindex') + lastgroup = _read_only_attribute('lastgroup') + regs = _read_only_attribute('regs') + + def start(self, group=0): + return _sre._SRE_Match_start(self._wrapped, group) + + def end(self, group=0): + return _sre._SRE_Match_end(self._wrapped, group) + + def span(self, group=0): + return _sre._SRE_Match_span(self._wrapped, group) + + def expand(self, template): + return _sre._SRE_Match_expand(self._wrapped, template) + + def groups(self, default=None): + return _sre._SRE_Match_groups(self._wrapped, default) + + def groupdict(self, default=None): + return _sre._SRE_Match_groupdict(self._wrapped, default) + + def group(self, *args): + return _sre._SRE_Match_group(self._wrapped, args) + + def __copy__(): + raise TypeError, 'cannot copy this pattern object' + + def __deepcopy__(): + raise TypeError, 'cannot copy this pattern object' + Added: pypy/dist/pypy/module/_sre_pypy/interpreter_code.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/_sre_pypy/interpreter_code.py Fri Apr 1 04:17:49 2005 @@ -0,0 +1,270 @@ +""" +This file contains the interpreter-level code for pypy's _sre module. +Really, it's nothing but a very thin wrapper around the underlying +interpreter's _sre module (ie, the one written in C). Since the C +code can't be meaningfully optimized and this is nothing more than +a minimally thin layer that deals with wrapping and unwrapping, +there is no particular reason for any of this code to be RPython + + + NOT RPython + +""" + +# NOTE: In some places, after setting f.unwrap_spec, the property +# f.return_type has also been set. This has no effect whatsoever, +# it was just a convenient way of documenting the return type, +# which can be difficult to look up in _sre.c. + + +from pypy.interpreter.baseobjspace import Wrappable, W_Root, ObjSpace +from pypy.interpreter.gateway import NoneNotWrapped +from pypy.interpreter.error import OperationError +import _sre # This runs at interpreter level, so here we are importing the + # C version of _sre provided by underlying virtual machine. + + + +def _unwrap_list_of_ints(space, w_list): + list_w = space.unpackiterable(w_list) + list = [space.int_w(w_x) for w_x in list_w] + return list + +def _unwrap_dict_of_strings_to_ints(space, w_dict): + w_items = space.call_method(w_dict, 'iteritems') + items_w = space.unpackiterable(w_items) + result = {} + for item_w in items_w: + w_key, w_value = space.unpackiterable(item_w) + key = space.str_w(w_key) + value = space.int_w(w_value) + result[key] = value + return result + +def _unwrap_list_of_None_or_strings(space, w_list): + list_w = space.unpackiterable(w_list) + result = [] + for w_item in list_w: + if space.is_w(w_item, space.w_None): + result.append(None) + else: + result.append( space.str_w(w_item) ) + return result + +def _unwrap_int_or_str(space, w_item): + try: + return space.int_w(w_item) + except OperationError, e: + if not e.match(space, space.w_TypeError): + raise + return space.str_w(w_item) + +def _unwrap_list_of_ints_and_strings(space, w_list): + list_w = space.unpackiterable(w_list) + return [_unwrap_int_or_str(space, w_item) for w_item in list_w] + + + +def _fget(space, w_wrapped, w_attr): + """A generalized attribute accessor, this is passed a wrapped + OpaqueObject and an attribute name. It performs getattr(wrapped, attr) + and returns the wrapped version of the result.""" + wrapped = space.interpclass_w(w_wrapped).value + attr = space.str_w(w_attr) + result = getattr(wrapped, attr) + return space.wrap(result) + + +class OpaqueObject(Wrappable): + """This stores a single interpreter-level object ('value') and can be + wrapped (via "o_w = space.wrap(o)") and unwrapped (via + "o = space.interpclass_w(o_w)").""" + def __init__(self, value): + self.value = value + + +def getlower(space, character, flags): + return space.wrap( _sre.getlower(character, flags) ) +getlower.unwrap_spec = [ObjSpace, int, int] +getlower.return_type = int # just for documentation + + +def _compile(space, pattern, flags, w_code, groups=0, + w_groupindex=NoneNotWrapped, w_indexgroup=NoneNotWrapped): + """"compile" pattern descriptor to pattern object""" + code = _unwrap_list_of_ints(space, w_code) + groupindex = _unwrap_dict_of_strings_to_ints(space, w_groupindex) + indexgroup = _unwrap_list_of_None_or_strings(space, w_indexgroup) + + pattern_obj = _sre.compile(pattern, flags, code, groups, groupindex, indexgroup) + w_opaque_pattern_obj = space.wrap(OpaqueObject(pattern_obj)) + return w_opaque_pattern_obj +_compile.unwrap_spec = [ObjSpace, str, int, W_Root, int, W_Root, W_Root] + + +def _SRE_Pattern_match(space, w_wrapped, pattern, pos, endpos): + wrapped = space.interpclass_w(w_wrapped).value + match_obj = wrapped.match(pattern, pos, endpos) + if match_obj is None: + return space.w_None + else: + w_opaque_match_obj = space.wrap(OpaqueObject(match_obj)) + return w_opaque_match_obj +_SRE_Pattern_match.unwrap_spec = [ObjSpace, W_Root, str, int, int] + +def _SRE_Pattern_search(space, w_wrapped, pattern, pos, endpos): + wrapped = space.interpclass_w(w_wrapped).value + match_obj = wrapped.search(pattern, pos, endpos) + if match_obj is None: + return space.w_None + else: + w_opaque_match_obj = space.wrap(OpaqueObject(match_obj)) + return w_opaque_match_obj +_SRE_Pattern_search.unwrap_spec = [ObjSpace, W_Root, str, int, int] + +def _SRE_Pattern_findall(space, w_wrapped, string): + wrapped = space.interpclass_w(w_wrapped).value + result = wrapped.findall(string) + return space.wrap(result) +_SRE_Pattern_findall.unwrap_spec = [ObjSpace, W_Root, str] +_SRE_Pattern_findall.return_type = 'list' # just for documentation + +def _SRE_Pattern_sub(space, w_wrapped, repl, string, count): + wrapped = space.interpclass_w(w_wrapped).value + result = wrapped.sub(repl, string, count) + return space.wrap(result) +_SRE_Pattern_sub.unwrap_spec = [ObjSpace, W_Root, str, str, int] +_SRE_Pattern_sub.return_type = str # just for documentation + +def _SRE_Pattern_subn(space, w_wrapped, repl, string, count): + wrapped = space.interpclass_w(w_wrapped).value + result = wrapped.subn(repl, string, count) + return space.wrap(result) +_SRE_Pattern_subn.unwrap_spec = [ObjSpace, W_Root, str, str, int] +_SRE_Pattern_subn.return_type = 'tuple' # just for documentation + +def _SRE_Pattern_split(space, w_wrapped, string, maxsplit): + wrapped = space.interpclass_w(w_wrapped).value + result = wrapped.split(string, maxsplit) + return space.wrap(result) +_SRE_Pattern_split.unwrap_spec = [ObjSpace, W_Root, str, int] +_SRE_Pattern_split.return_type = 'list' # just for documentation + +def _SRE_Pattern_finditer(space, w_wrapped, string): + wrapped = space.interpclass_w(w_wrapped).value + iter_obj = wrapped.finditer(string) + return space.wrap(OpaqueObject(iter_obj)) +_SRE_Pattern_finditer.unwrap_spec = [ObjSpace, W_Root, str] + +def _SRE_Pattern_scanner(space, w_wrapped, string, start, end): + wrapped = space.interpclass_w(w_wrapped).value + scanner_obj = wrapped.scanner(string) + return space.wrap(OpaqueObject(scanner_obj)) +_SRE_Pattern_scanner.unwrap_spec = [ObjSpace, W_Root, str, int, int] + + +def _SRE_Match_start(space, w_wrapped, w_group): + wrapped = space.interpclass_w(w_wrapped).value + group = _unwrap_int_or_str(space, w_group) + try: + return space.wrap(wrapped.start(group)) + except IndexError, err: + raise OperationError(space.w_IndexError, space.wrap(str(err))) +_SRE_Match_start.unwrap_spec = [ObjSpace, W_Root, W_Root] +_SRE_Match_start.return_type = int # just for documentation + +def _SRE_Match_end(space, w_wrapped, w_group): + wrapped = space.interpclass_w(w_wrapped).value + group = _unwrap_int_or_str(space, w_group) + try: + return space.wrap(wrapped.end(group)) + except IndexError, err: + raise OperationError(space.w_IndexError, space.wrap(str(err))) +_SRE_Match_end.unwrap_spec = [ObjSpace, W_Root, W_Root] +_SRE_Match_end.return_type = int # just for documentation + +def _SRE_Match_span(space, w_wrapped, w_group): + wrapped = space.interpclass_w(w_wrapped).value + group = _unwrap_int_or_str(space, w_group) + try: + result_tuple = wrapped.span(group) + except IndexError, err: + raise OperationError(space.w_IndexError, space.wrap(str(err))) + return space.newtuple( [space.wrap(x) for x in result_tuple] ) +_SRE_Match_span.unwrap_spec = [ObjSpace, W_Root, W_Root] +_SRE_Match_span.return_type = '2-tuple' # just for documentation + +def _SRE_Match_expand(space, w_wrapped, template): + wrapped = space.interpclass_w(w_wrapped).value + return space.wrap(wrapped.expand(template)) +_SRE_Match_expand.unwrap_spec = [ObjSpace, W_Root, str] +_SRE_Match_expand.return_type = str # just for documentation + + +def _SRE_Match_groups(space, w_wrapped, w_default): + wrapped = space.interpclass_w(w_wrapped).value + result = wrapped.groups(None) + result_w = [] + for item in result: + if item is None: + result_w.append(w_default) + else: + result_w.append(space.wrap(item)) + return space.newtuple(result_w) +_SRE_Match_groups.unwrap_spec = [ObjSpace, W_Root, W_Root] +_SRE_Match_groups.return_type = 'tuple' # just for documentation + +def _SRE_Match_groupdict(space, w_wrapped, w_default): + wrapped = space.interpclass_w(w_wrapped).value + result = wrapped.groupdict(None) + result_items_w = [] + for key, value in result.iteritems(): + w_key = space.wrap(key) + if value is None: + w_value = w_default + else: + w_value = space.wrap(value) + result_items_w.append( (w_key, w_value) ) + w_result = space.newdict(result_items_w) + return w_result +_SRE_Match_groupdict.unwrap_spec = [ObjSpace, W_Root, W_Root] +_SRE_Match_groupdict.return_type = 'dict' # just for documentation + +def _SRE_Match_group(space, w_wrapped, w_args): + wrapped = space.interpclass_w(w_wrapped).value + args = _unwrap_list_of_ints_and_strings(space, w_args) + try: + return space.wrap( wrapped.group(*args) ) + except IndexError, err: + raise OperationError(space.w_IndexError, space.wrap(str(err))) +_SRE_Match_group.unwrap_spec = [ObjSpace, W_Root, W_Root] +_SRE_Match_group.return_type = 'str|tuple|w_None' # just for documentation + + +def _SRE_Finditer_next(space, w_wrapped): + wrapped = space.interpclass_w(w_wrapped).value + try: + match_obj = wrapped.next() + return space.wrap(OpaqueObject(match_obj)) + except StopIteration, err: + raise OperationError(space.w_StopIteration, space.wrap("")) +_SRE_Finditer_next.unwrap_spec = [ObjSpace, W_Root] + + +def _SRE_Scanner_match(space, w_wrapped): + wrapped = space.interpclass_w(w_wrapped).value + match_obj = wrapped.match() + if match_obj is None: + return space.w_None + else: + return space.wrap(OpaqueObject(match_obj)) +_SRE_Scanner_match.unwrap_spec = [ObjSpace, W_Root] + +def _SRE_Scanner_search(space, w_wrapped): + wrapped = space.interpclass_w(w_wrapped).value + match_obj = wrapped.search() + if match_obj is None: + return space.w_None + else: + return space.wrap(OpaqueObject(match_obj)) +_SRE_Scanner_search.unwrap_spec = [ObjSpace, W_Root] Added: pypy/dist/pypy/module/_sre_pypy/test.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/_sre_pypy/test.py Fri Apr 1 04:17:49 2005 @@ -0,0 +1,154 @@ +# +# These are tests for the _sre module. Specifically, they test that it +# it *EXACTLY* conforms to the C implementation of _sre. This is not +# something we want to maintain in the future... it was useful only +# while developing the first version of _sre. Since _sre is considered +# a "private" module, we can modify its behavior as long as the re +# module continues to work the same, so we do not WANT to be running +# tests which ensure that every single non-documented interface of +# _sre works exactly as it does in the C version. Therefore, we should +# NOT be running these tests. In fact, they probably shouldn't even +# get checked in... except that it may be convenient someday to be +# able to look back in svn history and see the contents of this file. +# So just for the moment this file is getting checked in despite the +# fact that it's not a proper test file and we probably don't want +# it anyway... we can delete it soon. +# +# This does not test unicode behavior at all (and, in fact, the module +# doesn't support unicode properly). +# + +import _sre + +assert _sre.CODESIZE == 4 +assert _sre.getcodesize() == 4 +assert _sre.getlower(97,2) == 97 + +def assert_raises(err_type, f, *args, **kwargs): + try: + f(*args, **kwargs) + assert False # Should have raised + except IndexError: + pass + except: + assert False # Should have raised a different type + + +# Simple pattern +pat = _sre.compile('a', 0, [16, 8, 3, 1, 1, 1, 1, 97, 0, 18, 97, 1]) +assert pat.pattern == 'a' +assert pat.flags == 0 +assert pat.groups == 0 +assert pat.groupindex == {} +assert pat.match('xxx') is None + +m = pat.match('ax') +assert m is not None +assert m +assert m.string == 'ax' +assert m.re is pat +assert m.pos == 0 +assert m.endpos == 2 +assert m.lastindex is None +assert m.lastgroup is None +assert m.regs == ((0,1),) +assert m.start() == 0 +assert m.end() == 1 +assert m.span() == (0,1) +assert m.expand('xx') == 'xx' +assert m.groupdict() == {} +assert m.group() == 'a' +assert m.group(0) == 'a' + +assert_raises(IndexError, m.start, 1) +assert_raises(IndexError, m.end, 1) +assert_raises(IndexError, m.span, 1) +assert_raises(IndexError, m.group, 1) +assert_raises(IndexError, m.group, -1) + +assert pat.search('xxx') is None +ma = pat.search('xxax') +assert ma +assert ma.pos == 0 +assert ma.endpos == 4 +assert ma.span() == (2,3) + +assert pat.findall('__a__a_') == ['a','a'] +assert pat.sub('qq', '_a__') == '_qq__' +assert pat.sub('qq', '_aa_a_', 2) == '_qqqq_a_' +assert pat.subn('qq', '_a__') == ('_qq__', 1) +assert pat.subn('qq', '_aa_a_', 2) == ('_qqqq_a_', 2) +assert pat.split('12a34a5') == ['12','34','5'] + +assert [(x.start(), x.group()) for x in pat.finditer('_a_a_')] == [(1,'a'), (3,'a')] + +def test_scanner_match(): + scan = pat.scanner('x') + assert scan.match() is None + scan = pat.scanner('a') + assert scan.match().start() == 0 + assert scan.match() is None + scan = pat.scanner('aaxa') + assert scan.match().start() == 0 + assert scan.match().start() == 1 + assert scan.match() is None +test_scanner_match() + +def test_scanner_search(): + scan = pat.scanner('x') + assert scan.search() is None + scan = pat.scanner('a') + assert scan.search().start() == 0 + assert scan.search() is None + scan = pat.scanner('aaxa') + assert scan.search().start() == 0 + assert scan.search().start() == 1 + assert scan.search().start() == 3 + assert scan.search() is None +test_scanner_search() + +# Pattern with groups +pat2 = _sre.compile('(a)(b)?', 0, + [16, 8, 1, 1, 2, 1, 0, 97, 0, 20, 0, 18, 97, 20, 1, 27, 9, 0, 1, 20, 2, 18, 98, 20, 3, 21, 1], + 2, {}, [None, None, None]) +m2 = pat2.match('abc') +assert m2.lastindex == 2 +assert m2.groups() == ('a', 'b') +assert m2.group(1,2,0) == ('a', 'b', 'ab') +assert_raises(IndexError, m2.start, 99) + + +m2b = pat2.match('axx') +assert m2b.groups() == ('a', None) +assert m2b.groups(43) == ('a', 43) + +assert pat2.findall('_a__abb') == [('a', ''), ('a', 'b')] + +# Pattern with named group +pat3 = _sre.compile('(?Pa)', 0, + [16, 8, 1, 1, 1, 1, 0, 97, 0, 20, 0, 18, 97, 20, 1, 1], + 1, {'first': 1}, [None, 'first']) +assert pat3.groupindex == {'first': 1} +m3 = pat3.match('abc') +assert m3.start(0) == 0 +assert m3.start(1) == 0 +assert m3.start('first') == 0 +assert m3.end('first') == 1 +assert m3.span('first') == (0,1) +assert_raises(IndexError, m3.start, 2) +assert_raises(IndexError, m3.start, 'second') +assert m3.lastindex == 1 +assert m3.lastgroup == 'first' +assert m3.group('first') == 'a' +assert m3.groupdict() == {'first': 'a'} + +# Pattern with a named group that doesn't participate in the match +pat4 = _sre.compile('(?Pa)(?Pb)?', 0, [16, 8, 1, 1, 2, 1, 0, 97, 0, 20, 0, 18, 97, 20, 1, 27, 9, 0, 1, 20, 2, 18, 98, 20, 3, 21, 1], 2, {'second': 2, 'first': 1}, [None, 'first', 'second']) + +assert pat4.match('ax').group('second') == None +assert pat4.match('ab').groupdict() == {'first': 'a', 'second': 'b'} +assert pat4.match('ax').groupdict() == {'first': 'a', 'second': None} +assert pat4.match('ax').groupdict(42) == {'first': 'a', 'second': 42} + + +print 'Tests OK' Modified: pypy/dist/pypy/objspace/std/fake.py ============================================================================== --- pypy/dist/pypy/objspace/std/fake.py (original) +++ pypy/dist/pypy/objspace/std/fake.py Fri Apr 1 04:17:49 2005 @@ -42,23 +42,10 @@ debug_print('faking %r'%(cpy_type,)) kw = {} - if cpy_type.__name__ == 'SRE_Pattern': - import re - import __builtin__ - p = re.compile("foo") - for meth_name in p.__methods__: - kw[meth_name] = __builtin__.eval("lambda p,*args,**kwds: p.%s(*args,**kwds)" % meth_name) - elif cpy_type.__name__ == 'SRE_Match': - import re - import __builtin__ - m = re.compile("foo").match('foo') - for meth_name in m.__methods__: - kw[meth_name] = __builtin__.eval("lambda m,*args,**kwds: m.%s(*args,**kwds)" % meth_name) - else: - for s, v in cpy_type.__dict__.items(): - if not (cpy_type is unicode and s in ['__add__', '__contains__']): - if s != '__getattribute__' or cpy_type is type(sys): - kw[s] = v + for s, v in cpy_type.__dict__.items(): + if not (cpy_type is unicode and s in ['__add__', '__contains__']): + if s != '__getattribute__' or cpy_type is type(sys): + kw[s] = v kw['__module__'] = cpy_type.__module__ From arigo at codespeak.net Fri Apr 1 16:29:46 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 1 Apr 2005 16:29:46 +0200 (MEST) Subject: [pypy-svn] r10221 - pypy/dist/pypy/translator Message-ID: <20050401142946.3C94827C17@code1.codespeak.net> Author: arigo Date: Fri Apr 1 16:29:46 2005 New Revision: 10221 Added: pypy/dist/pypy/translator/genc_pyobj.py (contents, props changed) pypy/dist/pypy/translator/genc_type.py (contents, props changed) Modified: pypy/dist/pypy/translator/typer.py Log: The 'typer' can be done with reasonably clean code, at least so far. Its purpose is to put type-specific operations and conversion operations in the flow graph, but also a 'type_cls' attribute on all Variables and Constants that appear. This 'type_cls' points to one of the new CType_Xxx classes in genc_pyobj.py or genc_type.py. The idea is that the generic GenC.nameof() method would be replaced by a nameof() method per CType_Xxx class, in order to generate the appropriate representation for a typed constant. This should allow most of the mess that remains in genc.py to be moved to genc_pyobj.py. Added: pypy/dist/pypy/translator/genc_pyobj.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc_pyobj.py Fri Apr 1 16:29:46 2005 @@ -0,0 +1,4 @@ + + +class CType_PyObject: + pass Added: pypy/dist/pypy/translator/genc_type.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc_type.py Fri Apr 1 16:29:46 2005 @@ -0,0 +1,5 @@ + + +class CType_Int: + convert_to_obj = 'int2obj' + convert_from_obj = 'obj2int' Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Fri Apr 1 16:29:46 2005 @@ -1,88 +1,189 @@ import autopath -from pypy.annotation.model import * from pypy.objspace.flow.model import SpaceOperation, Variable, Constant -from pypy.translator.transform import fully_annotated_blocks +from pypy.objspace.flow.model import Block, Link -S_INT = SomeInteger() - -SpecializationTable = [ - ('add', 'int_add', S_INT, S_INT), - ('sub', 'int_sub', S_INT, S_INT), - ('is_true', 'int_is_true', S_INT), - ] - -TypesToConvert = { - SomeInteger: ('int2obj', 'obj2int'), - } - -def setup_specialization_dict(): - for e in SpecializationTable: - spectypes = e[2:] - opname1 = e[0] - opname2 = e[1] - SpecializationDict.setdefault(opname1, []).append((opname2, spectypes)) - SpecializationDict.setdefault(opname2, []).append((opname2, spectypes)) +class TypeMatch: + def __init__(self, s_type, type_cls): + self.s_type = s_type + self.type_cls = type_cls + + +class Specializer: + specializationdict = {} + + def __init__(self, annotator): + if not self.specializationdict: + # setup the class + d = self.specializationdict + for e in self.specializationtable: + opname1 = e[0] + opname2 = e[1] + spectypes = e[2:-1] + restypecls = e[-1] + info = opname2, spectypes, restypecls + d.setdefault(opname1, []).append(info) + d.setdefault(opname2, []).append(info) + self.annotator = annotator + + def specialize(self): + for block in self.annotator.annotated: + if block.operations: + self.specialize_block(block) + + def settype(self, a, type_cls): + """Set the type_cls of a Variable or Constant.""" + assert not hasattr(a, 'type_cls') + a.type_cls = type_cls + + def setbesttype(self, a): + """Set the best type_cls for a Variable or Constant according to + the annotations.""" + try: + return a.type_cls + except AttributeError: + besttype = self.defaulttypecls + s_value = self.annotator.binding(a, True) + if s_value is not None: + for tmatch in self.typematches: + if tmatch.s_type.contains(s_value): + besttype = tmatch.type_cls + break + self.settype(a, besttype) + return besttype -SpecializationDict = {} -setup_specialization_dict() + def convertvar(self, v, type_cls): + """Get the operation(s) needed to convert 'v' to the given type.""" + ops = [] + if isinstance(v, Constant): + self.settype(v, type_cls) # mark the concrete type of the Constant + + elif v.type_cls is not type_cls: + # XXX do we need better conversion paths? + + # 1) convert to the generic type + if v.type_cls is not self.defaulttypecls: + v2 = Variable() + v2.type_cls = self.defaulttypecls + op = SpaceOperation(v.type_cls.convert_to_obj, [v], v2) + v = v2 + ops.append(op) + + # 2) convert back from the generic type + if type_cls is not self.defaulttypecls: + v2 = Variable() + v2.type_cls = type_cls + op = SpaceOperation(type_cls.convert_from_obj, [v], v2) + v = v2 + ops.append(op) + + return v, ops + + def specialize_block(self, block): + # give the best possible types to the input args + for a in block.inputargs: + self.setbesttype(a) -# ____________________________________________________________ - -def specialize(annotator): - for block in fully_annotated_blocks(annotator): - if not block.operations: - continue + # specialize all the operations, as far as possible newops = [] for op in block.operations: indices = range(len(op.args)) args = list(op.args) - bindings = [annotator.binding(a, True) for a in args] - noteworthyindices = [] + bindings = [self.annotator.binding(a, True) for a in args] + # replace constant annotations with real Constants for i in indices: if isinstance(args[i], Variable) and bindings[i] is not None: if bindings[i].is_constant(): args[i] = Constant(bindings[i].const) - else: - noteworthyindices.append(i) - specializations = SpecializationDict.get(op.opname, ()) - for opname2, spectypes in specializations: - assert len(spectypes) == len(op.args) - for i in indices: - if bindings[i] is None: - break - if not spectypes[i].contains(bindings[i]): - break - else: - op = SpaceOperation(opname2, args, op.result) - break - else: - for i in noteworthyindices: - for cls in bindings[i].__class__.__mro__: - if cls in TypesToConvert: - convert, backconvert = TypesToConvert[cls] - result = Variable() - newops.append(SpaceOperation(convert, [args[i]], - result)) - args[i] = result - break - if args != op.args: - op = SpaceOperation(op.opname, args, op.result) - result = op.result - result_binding = annotator.binding(result, True) - if result_binding is not None: - for cls in result_binding.__class__.__mro__: - if cls in TypesToConvert: - convert, backconvert = TypesToConvert[cls] - intermediate = Variable() - newops.append(SpaceOperation(op.opname, args, - intermediate)) - op = SpaceOperation(backconvert, [intermediate], - result) - break + # look for a specialized version of the current operation + opname2, argtypes, restypecls = self.getspecializedop(op, bindings) + + # type-convert the input arguments + for i in indices: + args[i], convops = self.convertvar(args[i], argtypes[i]) + newops += convops + # store the result variable's type + self.settype(op.result, restypecls) + + # store the possibly modified SpaceOperation + if opname2 != op.opname or args != op.args: + op = SpaceOperation(opname2, args, op.result) newops.append(op) + block.operations[:] = newops + + # insert the needed conversions on the links + for link in block.exits: + # numbering of Variables: + # a1 in the original Link + # a2 in the inserted block before conversion + # a3 in the inserted block after conversion + # a4 in the original target block's inputargs + convargs = [] + convops = [] + for i in range(len(link.args)): + a1 = link.args[i] + a4 = link.target.inputargs[i] + a4type = self.setbesttype(a4) + a3, convop1 = self.convertvar(a1, a4type) + convargs.append(a3) + convops += convop1 + # if there are conversion operations, they are inserted into + # a new block along this link + if convops: + newblock = Block([]) + mapping = {} + for a1 in link.args: + a2 = Variable() + a2.type_cls = a1.type_cls + newblock.inputargs.append(a2) + mapping[a1] = a2 + newblock.operations = convops + newblock.closeblock(Link(convargs, link.target)) + newblock.renamevariables(mapping) + link.target = newblock + + def getspecializedop(self, op, bindings): + specializations = self.specializationdict.get(op.opname, ()) + for opname2, spectypes, restypecls in specializations: + assert len(spectypes) == len(op.args) == len(bindings) + for i in range(len(spectypes)): + if bindings[i] is None: + break + if not spectypes[i].s_type.contains(bindings[i]): + break + else: + # specialization found + # opname2 and restypecls are set above by the for loop + argtypes = [tmatch.type_cls for tmatch in spectypes] + break + else: + # specialization not found + opname2 = op.opname + argtypes = [CType_PyObject] * len(op.args) + restypecls = self.defaulttypecls + return opname2, argtypes, restypecls + +# ____________________________________________________________ +# GenC-specific specializer + +from pypy.annotation.model import SomeInteger +from pypy.translator.genc_pyobj import CType_PyObject +from pypy.translator.genc_type import CType_Int + +class GenCSpecializer(Specializer): + + TInt = TypeMatch(SomeInteger(), CType_Int) + typematches = [TInt] # in more-specific-first, more-general-last order + defaulttypecls = CType_PyObject + + specializationtable = [ + ## op specialized op arg types concrete return type + ('add', 'int_add', TInt, TInt, CType_Int), + ('sub', 'int_sub', TInt, TInt, CType_Int), + ('is_true', 'int_is_true', TInt, CType_Int), + ] From pedronis at codespeak.net Fri Apr 1 17:06:52 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 1 Apr 2005 17:06:52 +0200 (MEST) Subject: [pypy-svn] r10223 - pypy/dist/pypy/translator/tool Message-ID: <20050401150652.8DBCB27C1A@code1.codespeak.net> Author: pedronis Date: Fri Apr 1 17:06:52 2005 New Revision: 10223 Modified: pypy/dist/pypy/translator/tool/graphpage.py Log: start refactoring of graph pages to work on supporting workaround displays when the whole call graph is too huge Modified: pypy/dist/pypy/translator/tool/graphpage.py ============================================================================== --- pypy/dist/pypy/translator/tool/graphpage.py (original) +++ pypy/dist/pypy/translator/tool/graphpage.py Fri Apr 1 17:06:52 2005 @@ -175,58 +175,21 @@ self.source = dotgen.generate(target=None) +class BaseTranslatorPage(GraphPage): + """Abstract GraphPage for showing some of the call graph between functions + and possibily the class hierarchy.""" -class TranslatorPage(GraphPage): - """A GraphPage showing a the call graph between functions - as well as the class hierarchy.""" + def graph_name(self, *args): + raise NotImplementedError - def compute(self, translator): + def compute(self, translator, *args): self.translator = translator self.object_by_name = {} self.name_by_object = {} - dotgen = DotGen('translator') + dotgen = DotGen(self.graph_name(*args)) dotgen.emit('mclimit=15.0') - # show the call graph - functions = translator.functions - blocked_functions = {} - if translator.annotator: - # don't use translator.annotator.blocked_functions here because - # it is not populated until the annotator finishes. - annotated = translator.annotator.annotated - for fn, graph in translator.flowgraphs.items(): - def visit(node): - if annotated.get(node) is False: - blocked_functions[fn] = True - traverse(visit, graph) - highlight_functions = getattr(translator, 'highlight_functions', {}) # XXX - dotgen.emit_node('entry', fillcolor="green", shape="octagon", - label="Translator\\nEntry Point") - for func in functions: - name = func.func_name - class_ = getattr(func, 'class_', None) - if class_ is not None: - name = '%s.%s' % (class_.__name__, name) - data = self.labelof(func, name) - if func in blocked_functions: - kw = {'fillcolor': 'red'} - elif func in highlight_functions: - kw = {'fillcolor': '#ffcccc'} - else: - kw = {} - dotgen.emit_node(nameof(func), label=data, shape="box", **kw) - dotgen.emit_edge('entry', nameof(functions[0]), color="green") - for f1, f2 in translator.callgraph.itervalues(): - dotgen.emit_edge(nameof(f1), nameof(f2)) - - # show the class hierarchy - if self.translator.annotator: - dotgen.emit_node(nameof(None), color="red", shape="octagon", - label="Root Class\\nobject") - for classdef in self.translator.annotator.getuserclassdefinitions(): - data = self.labelof(classdef, classdef.cls.__name__) - dotgen.emit_node(nameof(classdef), label=data, shape="box") - dotgen.emit_edge(nameof(classdef.basedef), nameof(classdef)) + self.do_compute(dotgen, *args) self.source = dotgen.generate(target=None) @@ -246,6 +209,32 @@ source.split('\n')[0]) self.links[name] = data + def get_blocked_functions(self, functions): + translator = self.translator + blocked_functions = {} + if translator.annotator: + # don't use translator.annotator.blocked_functions here because + # it is not populated until the annotator finishes. + annotated = translator.annotator.annotated + for fn in functions: + graph = translator.flowgraphs[fn] + def visit(node): + if annotated.get(node) is False: + blocked_functions[fn] = True + traverse(visit, graph) + + return blocked_functions + + def compute_class_hieararchy(self, dotgen): + # show the class hierarchy + if self.translator.annotator: + dotgen.emit_node(nameof(None), color="red", shape="octagon", + label="Root Class\\nobject") + for classdef in self.translator.annotator.getuserclassdefinitions(): + data = self.labelof(classdef, classdef.cls.__name__) + dotgen.emit_node(nameof(classdef), label=data, shape="box") + dotgen.emit_edge(nameof(classdef.basedef), nameof(classdef)) + def labelof(self, obj, objname): name = objname i = 1 @@ -263,6 +252,43 @@ else: return FlowGraphPage(self.translator, [obj], self.name_by_object) +class TranslatorPage(BaseTranslatorPage): + """A GraphPage showing a the call graph between functions + as well as the class hierarchy.""" + + def graph_name(self): + return 'translator' + + def do_compute(self, dotgen): + translator = self.translator + + # show the call graph + functions = translator.functions + blocked_functions = self.get_blocked_functions(functions) + + highlight_functions = getattr(translator, 'highlight_functions', {}) # XXX + dotgen.emit_node('entry', fillcolor="green", shape="octagon", + label="Translator\\nEntry Point") + for func in functions: + name = func.func_name + class_ = getattr(func, 'class_', None) + if class_ is not None: + name = '%s.%s' % (class_.__name__, name) + data = self.labelof(func, name) + if func in blocked_functions: + kw = {'fillcolor': 'red'} + elif func in highlight_functions: + kw = {'fillcolor': '#ffcccc'} + else: + kw = {} + dotgen.emit_node(nameof(func), label=data, shape="box", **kw) + dotgen.emit_edge('entry', nameof(functions[0]), color="green") + for f1, f2 in translator.callgraph.itervalues(): + dotgen.emit_edge(nameof(f1), nameof(f2)) + + # show the class hierarchy + self.compute_class_hieararchy(dotgen) + def nameof(obj, cache={}): # NB. the purpose of the cache is not performance, but to ensure that From arigo at codespeak.net Fri Apr 1 17:44:55 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 1 Apr 2005 17:44:55 +0200 (MEST) Subject: [pypy-svn] r10224 - pypy/dist/pypy/translator Message-ID: <20050401154455.8A3CA27C1C@code1.codespeak.net> Author: arigo Date: Fri Apr 1 17:44:55 2005 New Revision: 10224 Removed: pypy/dist/pypy/translator/genc_pyobj.py Log: Removed this just a minute, to allow for the following svn cp genc.py genc_pyobj.py Deleted: /pypy/dist/pypy/translator/genc_pyobj.py ============================================================================== --- /pypy/dist/pypy/translator/genc_pyobj.py Fri Apr 1 17:44:55 2005 +++ (empty file) @@ -1,4 +0,0 @@ - - -class CType_PyObject: - pass From arigo at codespeak.net Fri Apr 1 17:50:07 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 1 Apr 2005 17:50:07 +0200 (MEST) Subject: [pypy-svn] r10225 - pypy/dist/pypy/translator Message-ID: <20050401155007.0726F27C1D@code1.codespeak.net> Author: arigo Date: Fri Apr 1 17:50:06 2005 New Revision: 10225 Added: pypy/dist/pypy/translator/genc_pyobj.py - copied, changed from r10217, pypy/dist/pypy/translator/genc.py Modified: pypy/dist/pypy/translator/genc.py pypy/dist/pypy/translator/genc_funcdef.py Log: Moved all the nameof() stuff from genc.py to genc_pyobj.py. Modified: pypy/dist/pypy/translator/genc.py ============================================================================== --- pypy/dist/pypy/translator/genc.py (original) +++ pypy/dist/pypy/translator/genc.py Fri Apr 1 17:50:06 2005 @@ -2,17 +2,14 @@ Generate a C source file from the flowmodel. """ -from __future__ import generators -import autopath, os, sys, __builtin__, marshal, zlib +import autopath, os from pypy.objspace.flow.model import Variable, Constant -from types import FunctionType, CodeType, InstanceType, ClassType -from pypy.translator.gensupp import builtin_base, uniquemodulename +from pypy.translator.gensupp import uniquemodulename from pypy.translator.gensupp import NameManager -from pypy.objspace.std.restricted_int import r_int, r_uint - from pypy.translator.genc_funcdef import FunctionDef, USE_CALL_TRACE +from pypy.translator.genc_pyobj import CType_PyObject # ____________________________________________________________ @@ -30,21 +27,6 @@ self.translator = translator self.modname = (modname or uniquemodulename(translator.functions[0].__name__)) - self.cnames = {Constant(None).key: 'Py_None', - Constant(False).key: 'Py_False', - Constant(True).key: 'Py_True', - } - self.seennames = {} - self.initcode = [ # list of lines for the module's initxxx() - 'import new, types, sys', - 'Py_None = None', - 'Py_False = False', - 'Py_True = True', - ] - - self.latercode = [] # list of generators generating extra lines - # for later in initxxx() -- for recursive - # objects self.namespace= NameManager() # keywords cannot be reused. This is the C99 draft's list. self.namespace.make_reserved_names(''' @@ -64,126 +46,25 @@ self.namespace.make_reserved_names('self args kwds') self.globaldecl = [] - self.globalobjects = [] self.pendingfunctions = [] self.funcdefs = {} self.allfuncdefs = [] - self.debugstack = () # linked list of nested nameof() + self.ctyperepresenters = {} + self.pyobjrepr = self.getrepresenter(CType_PyObject) self.gen_source() - def nameof(self, obj, debug=None): - key = Constant(obj).key + def getrepresenter(self, type_cls): try: - return self.cnames[key] + return self.ctyperepresenters[type_cls] except KeyError: - if debug: - stackentry = debug, obj - else: - stackentry = obj - self.debugstack = (self.debugstack, stackentry) - obj_builtin_base = builtin_base(obj) - if obj_builtin_base in (object, int, long) and type(obj) is not obj_builtin_base: - # assume it's a user defined thingy - name = self.nameof_instance(obj) - else: - for cls in type(obj).__mro__: - meth = getattr(self, - 'nameof_' + cls.__name__.replace(' ', ''), - None) - if meth: - break - else: - raise Exception, "nameof(%r)" % (obj,) - name = meth(obj) - self.debugstack, x = self.debugstack - assert x is stackentry - self.cnames[key] = name - return name - - def uniquename(self, basename): - name = self.namespace.uniquename(basename) - self.globalobjects.append(name) - self.globaldecl.append('static PyObject *%s;' % (name,)) - return name - - def initcode_python(self, name, pyexpr): - # generate init code that will evaluate the given Python expression - #self.initcode.append("print 'setting up', %r" % name) - self.initcode.append("%s = %s" % (name, pyexpr)) - - def nameof_object(self, value): - if type(value) is not object: - raise Exception, "nameof(%r)" % (value,) - name = self.uniquename('g_object') - self.initcode_python(name, "object()") - return name - - def nameof_module(self, value): - assert value is os or not hasattr(value, "__file__") or \ - not (value.__file__.endswith('.pyc') or - value.__file__.endswith('.py') or - value.__file__.endswith('.pyo')), \ - "%r is not a builtin module (probably :)"%value - name = self.uniquename('mod%s'%value.__name__) - self.initcode_python(name, "__import__(%r)" % (value.__name__,)) - return name - - - def nameof_int(self, value): - if value >= 0: - name = 'gint_%d' % value - else: - name = 'gint_minus%d' % abs(value) - name = self.uniquename(name) - self.initcode_python(name, repr(value)) - return name - - def nameof_long(self, value): - if value >= 0: - name = 'glong%d' % value - else: - name = 'glong_minus%d' % abs(value) - name = self.uniquename(name) - self.initcode_python(name, repr(value)) - return name - - def nameof_float(self, value): - name = 'gfloat_%s' % value - name = (name.replace('-', 'minus') - .replace('.', 'dot')) - name = self.uniquename(name) - self.initcode_python(name, repr(value)) - return name - - def nameof_str(self, value): - name = self.uniquename('gstr_' + value[:32]) -## if [c for c in value if c<' ' or c>'~' or c=='"' or c=='\\']: -## # non-printable string -## s = 'chr_%s' % name -## self.globaldecl.append('static char %s[] = { %s };' % ( -## s, ', '.join(['%d' % ord(c) for c in value]))) -## else: -## # printable string -## s = '"%s"' % value - self.initcode_python(name, repr(value)) - return name - - def skipped_function(self, func): - # debugging only! Generates a placeholder for missing functions - # that raises an exception when called. - if self.translator.frozen: - warning = 'NOT GENERATING' - else: - warning = 'skipped' - printable_name = '(%s:%d) %s' % ( - func.func_globals.get('__name__', '?'), - func.func_code.co_firstlineno, - func.__name__) - print warning, printable_name - name = self.uniquename('gskippedfunc_' + func.__name__) - self.initcode.append('def %s(*a,**k):' % name) - self.initcode.append(' raise NotImplementedError') - return name + crepr = self.ctyperepresenters[type_cls] = type_cls(self) + return crepr + + def nameofconst(self, c, type_cls=None, debug=None): + if type_cls is None: + type_cls = getattr(c, 'type_cls', CType_PyObject) + crepr = self.getrepresenter(type_cls) + return crepr.nameof(c.value, debug=debug) def getfuncdef(self, func): if func not in self.funcdefs: @@ -200,269 +81,14 @@ self.pendingfunctions.append(funcdef) return self.funcdefs[func] - def nameof_function(self, func, progress=['-\x08', '\\\x08', - '|\x08', '/\x08']): - funcdef = self.getfuncdef(func) - if funcdef is None: - return self.skipped_function(func) - if not self.translator.frozen: - p = progress.pop(0) - sys.stderr.write(p) - progress.append(p) - return funcdef.get_globalobject() - - def nameof_staticmethod(self, sm): - # XXX XXX XXXX - func = sm.__get__(42.5) - name = self.uniquename('gsm_' + func.__name__) - functionname = self.nameof(func) - self.initcode_python(name, 'staticmethod(%s)' % functionname) - return name - - def nameof_instancemethod(self, meth): - if meth.im_self is None: - # no error checking here - return self.nameof(meth.im_func) - else: - ob = self.nameof(meth.im_self) - func = self.nameof(meth.im_func) - typ = self.nameof(meth.im_class) - name = self.uniquename('gmeth_'+meth.im_func.__name__) - self.initcode_python(name, 'new.instancemethod(%s, %s, %s)' % ( - func, ob, typ)) - return name - - def should_translate_attr(self, pbc, attr): - ann = self.translator.annotator - if ann is None: - ignore = getattr(pbc.__class__, 'NOT_RPYTHON_ATTRIBUTES', []) - if attr in ignore: - return False - else: - return "probably" # True - classdef = ann.getuserclasses().get(pbc.__class__) - if classdef and classdef.about_attribute(attr) is not None: - return True - return False - - def later(self, gen): - self.latercode.append((gen, self.debugstack)) - - def nameof_instance(self, instance): - klass = instance.__class__ - name = self.uniquename('ginst_' + klass.__name__) - cls = self.nameof(klass) - if hasattr(klass, '__base__'): - base_class = builtin_base(instance) - base = self.nameof(base_class) - else: - base_class = None - base = cls - def initinstance(): - content = instance.__dict__.items() - content.sort() - for key, value in content: - if self.should_translate_attr(instance, key): - line = '%s.%s = %s' % (name, key, self.nameof(value)) - yield line - if hasattr(instance,'__reduce_ex__'): - import copy_reg - reduced = instance.__reduce_ex__() - assert reduced[0] is copy_reg._reconstructor,"not clever enough" - assert reduced[1][1] is base_class, "not clever enough for %r vs. %r" % (base_class, reduced) - state = reduced[1][2] - else: - state = None - self.initcode.append('if isinstance(%s, type):' % cls) - if state is not None: - self.initcode.append(' %s = %s.__new__(%s, %r)' % (name, base, cls, state)) - else: - self.initcode.append(' %s = %s.__new__(%s)' % (name, base, cls)) - self.initcode.append('else:') - self.initcode.append(' %s = new.instance(%s)' % (name, cls)) - self.later(initinstance()) - return name - - def nameof_builtin_function_or_method(self, func): - if func.__self__ is None: - # builtin function - # where does it come from? Python2.2 doesn't have func.__module__ - for modname, module in sys.modules.items(): - if hasattr(module, '__file__'): - if (module.__file__.endswith('.py') or - module.__file__.endswith('.pyc') or - module.__file__.endswith('.pyo')): - continue # skip non-builtin modules - if func is getattr(module, func.__name__, None): - break - else: - raise Exception, '%r not found in any built-in module' % (func,) - name = self.uniquename('gbltin_' + func.__name__) - if modname == '__builtin__': - self.initcode_python(name, func.__name__) - else: - modname = self.nameof(module) - self.initcode_python(name, '%s.%s' % (modname, func.__name__)) - else: - # builtin (bound) method - name = self.uniquename('gbltinmethod_' + func.__name__) - selfname = self.nameof(func.__self__) - self.initcode_python(name, '%s.%s' % (selfname, func.__name__)) - return name - - def nameof_classobj(self, cls): - if cls.__doc__ and cls.__doc__.lstrip().startswith('NOT_RPYTHON'): - raise Exception, "%r should never be reached" % (cls,) - - metaclass = "type" - if issubclass(cls, Exception): - if cls.__module__ == 'exceptions': - name = self.uniquename('gexc_' + cls.__name__) - self.initcode_python(name, cls.__name__) - return name - #else: - # # exceptions must be old-style classes (grr!) - # metaclass = "&PyClass_Type" - # For the moment, use old-style classes exactly when the - # pypy source uses old-style classes, to avoid strange problems. - if not isinstance(cls, type): - assert type(cls) is ClassType - metaclass = "types.ClassType" - - name = self.uniquename('gcls_' + cls.__name__) - basenames = [self.nameof(base) for base in cls.__bases__] - def initclassobj(): - content = cls.__dict__.items() - content.sort() - for key, value in content: - if key.startswith('__'): - if key in ['__module__', '__doc__', '__dict__', - '__weakref__', '__repr__', '__metaclass__']: - continue - # XXX some __NAMES__ are important... nicer solution sought - #raise Exception, "unexpected name %r in class %s"%(key, cls) - if isinstance(value, staticmethod) and value.__get__(1) not in self.translator.flowgraphs and self.translator.frozen: - print value - continue - if isinstance(value, classmethod) and value.__get__(cls).__doc__.lstrip().startswith("NOT_RPYTHON"): - continue - if isinstance(value, FunctionType) and value not in self.translator.flowgraphs and self.translator.frozen: - print value - continue - - yield '%s.%s = %s' % (name, key, self.nameof(value)) - - baseargs = ", ".join(basenames) - if baseargs: - baseargs = '(%s)' % baseargs - self.initcode.append('class %s%s:' % (name, baseargs)) - self.initcode.append(' __metaclass__ = %s' % metaclass) - self.later(initclassobj()) - return name - - nameof_class = nameof_classobj # for Python 2.2 - - typename_mapping = { - InstanceType: 'types.InstanceType', - type(None): 'type(None)', - CodeType: 'types.CodeType', - type(sys): 'type(new)', - - r_int: 'int', # XXX - r_uint: 'int', # XXX - - # XXX more hacks - # type 'builtin_function_or_method': - type(len): 'type(len)', - # type 'method_descriptor': - type(list.append): 'type(list.append)', - # type 'wrapper_descriptor': - type(type(None).__repr__): 'type(type(None).__repr__)', - # type 'getset_descriptor': - type(type.__dict__['__dict__']): "type(type.__dict__['__dict__'])", - # type 'member_descriptor': - type(type.__dict__['__basicsize__']): "type(type.__dict__['__basicsize__'])", - } - - def nameof_type(self, cls): - if cls.__module__ != '__builtin__': - return self.nameof_classobj(cls) # user-defined type - name = self.uniquename('gtype_%s' % cls.__name__) - if getattr(__builtin__, cls.__name__, None) is cls: - expr = cls.__name__ # type available from __builtin__ - else: - expr = self.typename_mapping[cls] - self.initcode_python(name, expr) - return name - - def nameof_tuple(self, tup): - name = self.uniquename('g%dtuple' % len(tup)) - args = [self.nameof(x) for x in tup] - args = ', '.join(args) - if args: - args += ',' - self.initcode_python(name, '(%s)' % args) - return name - - def nameof_list(self, lis): - name = self.uniquename('g%dlist' % len(lis)) - def initlist(): - for i in range(len(lis)): - item = self.nameof(lis[i]) - yield '%s.append(%s)' % (name, item) - self.initcode_python(name, '[]') - self.later(initlist()) - return name - - def nameof_dict(self, dic): - assert dic is not __builtins__ - assert '__builtins__' not in dic, 'Seems to be the globals of %s' % ( - dic.get('__name__', '?'),) - name = self.uniquename('g%ddict' % len(dic)) - def initdict(): - for k in dic: - if type(k) is str: - yield '%s[%r] = %s' % (name, k, self.nameof(dic[k])) - else: - yield '%s[%s] = %s' % (name, self.nameof(k), - self.nameof(dic[k])) - self.initcode_python(name, '{}') - self.later(initdict()) - return name - - # strange prebuilt instances below, don't look too closely - # XXX oh well. - def nameof_member_descriptor(self, md): - name = self.uniquename('gdescriptor_%s_%s' % ( - md.__objclass__.__name__, md.__name__)) - cls = self.nameof(md.__objclass__) - self.initcode_python(name, '%s.__dict__[%r]' % (cls, md.__name__)) - return name - nameof_getset_descriptor = nameof_member_descriptor - nameof_method_descriptor = nameof_member_descriptor - nameof_wrapper_descriptor = nameof_member_descriptor - - def nameof_file(self, fil): - if fil is sys.stdin: - name = self.uniquename("gsys_stdin") - self.initcode_python(name, "sys.stdin") - return name - if fil is sys.stdout: - name = self.uniquename("gsys_stdout") - self.initcode_python(name, "sys.stdout") - return name - if fil is sys.stderr: - name = self.uniquename("gsys_stderr") - self.initcode_python(name, "sys.stderr") - return name - raise Exception, 'Cannot translate an already-open file: %r' % (fil,) + # ____________________________________________________________ def gen_source(self): f = self.f info = { 'modname': self.modname, 'entrypointname': self.translator.functions[0].__name__, - 'entrypoint': self.nameof(self.translator.functions[0]), + 'entrypoint': self.pyobjrepr.nameof(self.translator.functions[0]), } # header if USE_CALL_TRACE: @@ -474,12 +100,9 @@ funcdef = self.pendingfunctions.pop() self.gen_cfunction(funcdef) # collect more of the latercode after each function - while self.latercode: - gen, self.debugstack = self.latercode.pop() - #self.initcode.extend(gen) -- eats TypeError! bad CPython! - for line in gen: - self.initcode.append(line) - self.debugstack = () + for crepr in self.ctyperepresenters.values(): + if hasattr(crepr, 'collect_globals'): + crepr.collect_globals() self.gen_global_declarations() # after all the ff_xxx() functions we generate the pyff_xxx() wrappers @@ -489,7 +112,7 @@ # global object table print >> f, self.C_OBJECT_TABLE - for name in self.globalobjects: + for name in self.pyobjrepr.globalobjects: if not name.startswith('gfunc_'): print >> f, '\t{&%s, "%s"},' % (name, name) print >> f, self.C_TABLE_END @@ -507,7 +130,7 @@ # frozen init bytecode print >> f, self.C_FROZEN_BEGIN - bytecode = self.getfrozenbytecode() + bytecode = self.pyobjrepr.getfrozenbytecode() def char_repr(c): if c in '\\"': return '\\' + c if ' ' <= c < '\x7F': return c @@ -531,27 +154,6 @@ print >> f, line print >> f del g[:] - if self.f2 is not None: - for line in self.initcode: - print >> self.f2, line - del self.initcode[:] - - def getfrozenbytecode(self): - if self.f2 is not None: - self.f2.seek(0) - self.initcode.insert(0, self.f2.read()) - self.initcode.append('') - source = '\n'.join(self.initcode) - del self.initcode[:] - co = compile(source, self.modname, 'exec') - del source - small = zlib.compress(marshal.dumps(co)) - source = """if 1: - import zlib, marshal - exec marshal.loads(zlib.decompress(%r))""" % small - co = compile(source, self.modname, 'exec') - del source - return marshal.dumps(co) def gen_cfunction(self, funcdef): ## print 'gen_cfunction (%s:%d) %s' % ( Modified: pypy/dist/pypy/translator/genc_funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc_funcdef.py (original) +++ pypy/dist/pypy/translator/genc_funcdef.py Fri Apr 1 17:50:06 2005 @@ -72,7 +72,7 @@ fast_function_header = ('static PyObject *\n' '%s(%s)' % (self.fast_name, declare_fast_args)) - name_of_defaults = [self.genc.nameof(x, debug=('Default argument of', + name_of_defaults = [self.genc.pyobjrepr.nameof(x, debug=('Default argument of', self)) for x in (func.func_defaults or ())] @@ -91,7 +91,7 @@ def get_globalobject(self): if self.globalobject_name is None: self.wrapper_name = 'py' + self.fast_name - self.globalobject_name = self.genc.uniquename('gfunc_' + + self.globalobject_name = self.genc.pyobjrepr.uniquename('gfunc_' + self.base_name) return self.globalobject_name @@ -105,7 +105,7 @@ if isinstance(v, Variable): return self.localscope.localname(v.name) elif isinstance(v, Constant): - return self.genc.nameof(v.value, + return self.genc.nameofconst(v, debug=('Constant in the graph of', self)) else: raise TypeError, "expr(%r)" % (v,) @@ -309,7 +309,7 @@ for link in block.exits[1:]: assert issubclass(link.exitcase, Exception) yield 'if (PyErr_ExceptionMatches(%s)) {' % ( - self.genc.nameof(link.exitcase),) + self.genc.pyobjrepr.nameof(link.exitcase),) yield '\tPyObject *exc_cls, *exc_value, *exc_tb;' yield '\tPyErr_Fetch(&exc_cls, &exc_value, &exc_tb);' yield '\tif (exc_value == NULL) {' Copied: pypy/dist/pypy/translator/genc_pyobj.py (from r10217, pypy/dist/pypy/translator/genc.py) ============================================================================== --- pypy/dist/pypy/translator/genc.py (original) +++ pypy/dist/pypy/translator/genc_pyobj.py Fri Apr 1 17:50:06 2005 @@ -1,40 +1,25 @@ -""" -Generate a C source file from the flowmodel. - -""" from __future__ import generators import autopath, os, sys, __builtin__, marshal, zlib from pypy.objspace.flow.model import Variable, Constant +from pypy.translator.gensupp import builtin_base from types import FunctionType, CodeType, InstanceType, ClassType -from pypy.translator.gensupp import builtin_base, uniquemodulename -from pypy.translator.gensupp import NameManager - from pypy.objspace.std.restricted_int import r_int, r_uint -from pypy.translator.genc_funcdef import FunctionDef, USE_CALL_TRACE -# ____________________________________________________________ +class CType_PyObject: + """The PyObject* C type. + This class contains all the nameof_xxx() methods that allow a wild variety + of Python objects to be 'pickled' as Python source code that will + reconstruct them. + """ -#def go_figure_out_this_name(source): -# # ahem -# return 'PyRun_String("%s", Py_eval_input, PyEval_GetGlobals(), NULL)' % ( -# source, ) - -class GenC: - MODNAMES = {} - - def __init__(self, f, translator, modname=None, f2=None): - self.f = f - self.f2 = f2 - self.translator = translator - self.modname = (modname or - uniquemodulename(translator.functions[0].__name__)) + def __init__(self, genc): + self.genc = genc self.cnames = {Constant(None).key: 'Py_None', Constant(False).key: 'Py_False', Constant(True).key: 'Py_True', } - self.seennames = {} self.initcode = [ # list of lines for the module's initxxx() 'import new, types, sys', 'Py_None = None', @@ -45,31 +30,8 @@ self.latercode = [] # list of generators generating extra lines # for later in initxxx() -- for recursive # objects - self.namespace= NameManager() - # keywords cannot be reused. This is the C99 draft's list. - self.namespace.make_reserved_names(''' - auto enum restrict unsigned - break extern return void - case float short volatile - char for signed while - const goto sizeof _Bool - continue if static _Complex - default inline struct _Imaginary - do int switch - double long typedef - else register union - ''') - # these names are used in function headers, - # therefore pseudo-preserved in scope 1: - self.namespace.make_reserved_names('self args kwds') - - self.globaldecl = [] self.globalobjects = [] - self.pendingfunctions = [] - self.funcdefs = {} - self.allfuncdefs = [] self.debugstack = () # linked list of nested nameof() - self.gen_source() def nameof(self, obj, debug=None): key = Constant(obj).key @@ -101,9 +63,9 @@ return name def uniquename(self, basename): - name = self.namespace.uniquename(basename) + name = self.genc.namespace.uniquename(basename) self.globalobjects.append(name) - self.globaldecl.append('static PyObject *%s;' % (name,)) + self.genc.globaldecl.append('static PyObject *%s;' % (name,)) return name def initcode_python(self, name, pyexpr): @@ -171,7 +133,7 @@ def skipped_function(self, func): # debugging only! Generates a placeholder for missing functions # that raises an exception when called. - if self.translator.frozen: + if self.genc.translator.frozen: warning = 'NOT GENERATING' else: warning = 'skipped' @@ -185,27 +147,12 @@ self.initcode.append(' raise NotImplementedError') return name - def getfuncdef(self, func): - if func not in self.funcdefs: - if self.translator.frozen: - if func not in self.translator.flowgraphs: - return None - else: - if (func.func_doc and - func.func_doc.lstrip().startswith('NOT_RPYTHON')): - return None - funcdef = FunctionDef(func, self) - self.funcdefs[func] = funcdef - self.allfuncdefs.append(funcdef) - self.pendingfunctions.append(funcdef) - return self.funcdefs[func] - def nameof_function(self, func, progress=['-\x08', '\\\x08', '|\x08', '/\x08']): - funcdef = self.getfuncdef(func) + funcdef = self.genc.getfuncdef(func) if funcdef is None: return self.skipped_function(func) - if not self.translator.frozen: + if not self.genc.translator.frozen: p = progress.pop(0) sys.stderr.write(p) progress.append(p) @@ -233,7 +180,7 @@ return name def should_translate_attr(self, pbc, attr): - ann = self.translator.annotator + ann = self.genc.translator.annotator if ann is None: ignore = getattr(pbc.__class__, 'NOT_RPYTHON_ATTRIBUTES', []) if attr in ignore: @@ -245,9 +192,6 @@ return True return False - def later(self, gen): - self.latercode.append((gen, self.debugstack)) - def nameof_instance(self, instance): klass = instance.__class__ name = self.uniquename('ginst_' + klass.__name__) @@ -341,12 +285,12 @@ continue # XXX some __NAMES__ are important... nicer solution sought #raise Exception, "unexpected name %r in class %s"%(key, cls) - if isinstance(value, staticmethod) and value.__get__(1) not in self.translator.flowgraphs and self.translator.frozen: + if isinstance(value, staticmethod) and value.__get__(1) not in self.genc.translator.flowgraphs and self.genc.translator.frozen: print value continue if isinstance(value, classmethod) and value.__get__(cls).__doc__.lstrip().startswith("NOT_RPYTHON"): continue - if isinstance(value, FunctionType) and value not in self.translator.flowgraphs and self.translator.frozen: + if isinstance(value, FunctionType) and value not in self.genc.translator.flowgraphs and self.genc.translator.frozen: print value continue @@ -457,150 +401,35 @@ return name raise Exception, 'Cannot translate an already-open file: %r' % (fil,) - def gen_source(self): - f = self.f - info = { - 'modname': self.modname, - 'entrypointname': self.translator.functions[0].__name__, - 'entrypoint': self.nameof(self.translator.functions[0]), - } - # header - if USE_CALL_TRACE: - print >> f, '#define USE_CALL_TRACE' - print >> f, self.C_HEADER - - # function implementations - while self.pendingfunctions: - funcdef = self.pendingfunctions.pop() - self.gen_cfunction(funcdef) - # collect more of the latercode after each function - while self.latercode: - gen, self.debugstack = self.latercode.pop() - #self.initcode.extend(gen) -- eats TypeError! bad CPython! - for line in gen: - self.initcode.append(line) - self.debugstack = () - self.gen_global_declarations() - - # after all the ff_xxx() functions we generate the pyff_xxx() wrappers - for funcdef in self.allfuncdefs: - if funcdef.wrapper_name is not None: - funcdef.gen_wrapper(f) - - # global object table - print >> f, self.C_OBJECT_TABLE - for name in self.globalobjects: - if not name.startswith('gfunc_'): - print >> f, '\t{&%s, "%s"},' % (name, name) - print >> f, self.C_TABLE_END - - # global function table - print >> f, self.C_FUNCTION_TABLE - for funcdef in self.allfuncdefs: - if funcdef.globalobject_name is not None: - print >> f, ('\t{&%s, {"%s", (PyCFunction)%s, ' - 'METH_VARARGS|METH_KEYWORDS}},' % ( - funcdef.globalobject_name, - funcdef.base_name, - funcdef.wrapper_name)) - print >> f, self.C_TABLE_END - - # frozen init bytecode - print >> f, self.C_FROZEN_BEGIN - bytecode = self.getfrozenbytecode() - def char_repr(c): - if c in '\\"': return '\\' + c - if ' ' <= c < '\x7F': return c - return '\\%03o' % ord(c) - for i in range(0, len(bytecode), 32): - print >> f, ''.join([char_repr(c) for c in bytecode[i:i+32]])+'\\' - if (i+32) % 1024 == 0: - print >> f, self.C_FROZEN_BETWEEN - print >> f, self.C_FROZEN_END - print >> f, "#define FROZEN_INITCODE_SIZE %d" % len(bytecode) - - # the footer proper: the module init function */ - print >> f, self.C_FOOTER % info - - def gen_global_declarations(self): - g = self.globaldecl - if g: - f = self.f - print >> f, '/* global declaration%s */' % ('s'*(len(g)>1)) - for line in g: - print >> f, line - print >> f - del g[:] - if self.f2 is not None: + + def later(self, gen): + self.latercode.append((gen, self.debugstack)) + + def collect_globals(self): + while self.latercode: + gen, self.debugstack = self.latercode.pop() + #self.initcode.extend(gen) -- eats TypeError! bad CPython! + for line in gen: + self.initcode.append(line) + self.debugstack = () + if self.genc.f2 is not None: for line in self.initcode: - print >> self.f2, line + print >> self.genc.f2, line del self.initcode[:] def getfrozenbytecode(self): - if self.f2 is not None: - self.f2.seek(0) - self.initcode.insert(0, self.f2.read()) + if self.genc.f2 is not None: + self.genc.f2.seek(0) + self.initcode.insert(0, self.genc.f2.read()) self.initcode.append('') source = '\n'.join(self.initcode) del self.initcode[:] - co = compile(source, self.modname, 'exec') + co = compile(source, self.genc.modname, 'exec') del source small = zlib.compress(marshal.dumps(co)) source = """if 1: import zlib, marshal exec marshal.loads(zlib.decompress(%r))""" % small - co = compile(source, self.modname, 'exec') + co = compile(source, self.genc.modname, 'exec') del source return marshal.dumps(co) - - def gen_cfunction(self, funcdef): -## print 'gen_cfunction (%s:%d) %s' % ( -## func.func_globals.get('__name__', '?'), -## func.func_code.co_firstlineno, -## func.__name__) - - # compute the whole body - body = list(funcdef.cfunction_body()) - - # generate the source now - self.gen_global_declarations() #.. before the body where they are needed - funcdef.gen_cfunction(self.f, body) - - # this is only to keep the RAM consumption under control - funcdef.clear() - if not self.translator.frozen: - del self.translator.flowgraphs[funcdef.func] - Variable.instances.clear() - -# ____________________________________________________________ - - C_HEADER = '#include "genc.h"\n' - - C_SEP = "/************************************************************/" - - C_OBJECT_TABLE = C_SEP + ''' - -/* Table of global objects */ -static globalobjectdef_t globalobjectdefs[] = {''' - - C_FUNCTION_TABLE = ''' -/* Table of functions */ -static globalfunctiondef_t globalfunctiondefs[] = {''' - - C_TABLE_END = '\t{ NULL }\t/* Sentinel */\n};' - - C_FROZEN_BEGIN = ''' -/* Frozen Python bytecode: the initialization code */ -static char *frozen_initcode[] = {"\\''' - - C_FROZEN_BETWEEN = '''", "\\''' - - C_FROZEN_END = '''"};\n''' - - C_FOOTER = C_SEP + ''' - -MODULE_INITFUNC(%(modname)s) -{ -\tSETUP_MODULE(%(modname)s) -\tPyModule_AddObject(m, "%(entrypointname)s", %(entrypoint)s); -}''' From hpk at codespeak.net Fri Apr 1 18:22:10 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 1 Apr 2005 18:22:10 +0200 (MEST) Subject: [pypy-svn] r10226 - pypy/dist/pypy/interpreter Message-ID: <20050401162210.9385527C24@code1.codespeak.net> Author: hpk Date: Fri Apr 1 18:22:10 2005 New Revision: 10226 Modified: pypy/dist/pypy/interpreter/baseobjspace.py Log: disable the _sre wrapper from Michael for now because of unwrapping problems (see pypy-dev for more details). The problem is that this breaks the revreports which by itself shouldn't happen so easily ... Modified: pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/dist/pypy/interpreter/baseobjspace.py Fri Apr 1 18:22:10 2005 @@ -82,13 +82,11 @@ self.setitem(w_modules, w_name, w_builtin) self.setitem(self.builtin.w_dict, self.wrap('__builtins__'), w_builtin) - from pypy.module._sre_pypy import Module - w_name = self.wrap('_sre') - mod = Module(self, w_name) - w_mod = self.wrap(mod) - self.setitem(w_modules, w_name, w_mod) + # XXX we need to resolve unwrapping issues to + # make this the default _sre module + #self.setbuiltinmodule("_sre", "_sre_pypy") - self.setbuiltinmodule('parser') + self.setbuiltinmodule('parser') # initialize with "bootstrap types" from objspace (e.g. w_None) for name, value in self.__dict__.items(): From arigo at codespeak.net Fri Apr 1 19:39:14 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 1 Apr 2005 19:39:14 +0200 (MEST) Subject: [pypy-svn] r10235 - pypy/dist/pypy/translator/tool Message-ID: <20050401173914.8287E27C26@code1.codespeak.net> Author: arigo Date: Fri Apr 1 19:39:14 2005 New Revision: 10235 Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py Log: For now, writing out the warning messages is useful. Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/dist/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/dist/pypy/translator/tool/buildpyxmodule.py Fri Apr 1 19:39:14 2005 @@ -96,11 +96,12 @@ os.environ[key] = value finally: foutput, foutput = c.done() + data = foutput.read() + if data: + fdump = open("%s.errors" % modname, "w") + fdump.write(data) + fdump.close() except: - data = foutput.read() - fdump = open("%s.errors" % modname, "w") - fdump.write(data) - fdump.close() print data raise # XXX do we need to do some check on fout/ferr? From arigo at codespeak.net Fri Apr 1 19:43:32 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 1 Apr 2005 19:43:32 +0200 (MEST) Subject: [pypy-svn] r10236 - pypy/dist/pypy/translator Message-ID: <20050401174332.23EA827C26@code1.codespeak.net> Author: arigo Date: Fri Apr 1 19:43:31 2005 New Revision: 10236 Added: pypy/dist/pypy/translator/genc_type.h (contents, props changed) Modified: pypy/dist/pypy/translator/genc.h pypy/dist/pypy/translator/genc.py pypy/dist/pypy/translator/genc_funcdef.py pypy/dist/pypy/translator/genc_pyobj.py pypy/dist/pypy/translator/genc_type.py Log: Trying to combine the typer and genc, we get a bit more mess into genc_funcdef but it is hopefully still reasonable. Types are a bit difficult to follow right now; they don't show up in the pygame viewers, and the chosen local variable names don't hint at them either. Debugging segfaults might become a problem because type errors (which are real errors) are lost in the sea of the C compiler's warnings (which we don't care about, like label not used). Modified: pypy/dist/pypy/translator/genc.h ============================================================================== --- pypy/dist/pypy/translator/genc.h (original) +++ pypy/dist/pypy/translator/genc.h Fri Apr 1 19:43:31 2005 @@ -14,6 +14,8 @@ #define MIN(a,b) (((a)<(b))?(a):(b)) #endif /* MIN */ +#include "genc_type.h" + static PyObject *this_module_globals; /* Set genc_funcdef.USE_CALL_TRACE if you want call trace frames to be built */ @@ -156,13 +158,6 @@ #define OP_ISSUBTYPE(x,y,r,err) \ op_bool(r,err,PyClass_IsSubclass(x, y)) -/*** tests ***/ - -#define EQ_False(o) (o == Py_False) -#define EQ_True(o) (o == Py_True) -#define EQ_0(o) (PyInt_Check(o) && PyInt_AS_LONG(o)==0) -#define EQ_1(o) (PyInt_Check(o) && PyInt_AS_LONG(o)==1) - /*** misc ***/ @@ -533,7 +528,7 @@ PyObject* o; PyObject* key; PyObject* t2; - int i, nargs, nkwds, nvarargs, starflag, starstarflag; + int i, nargs, nkwds, starflag, starstarflag; va_list vargs; if (!PyTuple_Check(shape) || Modified: pypy/dist/pypy/translator/genc.py ============================================================================== --- pypy/dist/pypy/translator/genc.py (original) +++ pypy/dist/pypy/translator/genc.py Fri Apr 1 19:43:31 2005 @@ -9,7 +9,7 @@ from pypy.translator.gensupp import NameManager from pypy.translator.genc_funcdef import FunctionDef, USE_CALL_TRACE -from pypy.translator.genc_pyobj import CType_PyObject +from pypy.translator.genc_pyobj import CType_PyObject, ctypeof # ____________________________________________________________ @@ -41,10 +41,6 @@ double long typedef else register union ''') - # these names are used in function headers, - # therefore pseudo-preserved in scope 1: - self.namespace.make_reserved_names('self args kwds') - self.globaldecl = [] self.pendingfunctions = [] self.funcdefs = {} @@ -60,12 +56,14 @@ crepr = self.ctyperepresenters[type_cls] = type_cls(self) return crepr - def nameofconst(self, c, type_cls=None, debug=None): - if type_cls is None: - type_cls = getattr(c, 'type_cls', CType_PyObject) - crepr = self.getrepresenter(type_cls) + def nameofconst(self, c, debug=None): + crepr = self.getrepresenter(ctypeof(c)) return crepr.nameof(c.value, debug=debug) + def nameofvalue(self, value, type_cls): + crepr = self.getrepresenter(type_cls) + return crepr.nameof(value) + def getfuncdef(self, func): if func not in self.funcdefs: if self.translator.frozen: Modified: pypy/dist/pypy/translator/genc_funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc_funcdef.py (original) +++ pypy/dist/pypy/translator/genc_funcdef.py Fri Apr 1 19:43:31 2005 @@ -8,7 +8,7 @@ from types import FunctionType from pypy.translator.gensupp import c_string - +from pypy.translator.genc_pyobj import ctypeof # Set this if you want call trace frames to be built USE_CALL_TRACE = False @@ -20,12 +20,14 @@ The operations of each function are collected in a C function with signature: - static PyObject *fn_xxx(PyObject *arg1, PyObject *arg2, etc); + static T fn_xxx(T1 arg1, T2 arg2, etc); + + where the T, T1, T2.. are C types like 'int' or 'PyObject *'. If needed, another wrapper function is created with a signature suitable for the built-in function type of CPython: - static PyObject *pyfn_xxx(PyObject *self, PyObject *args); + static PyObject *pyfn_xxx(PyObject *self, PyObject *args, PyObject* kw); The built-in function object, if needed, is put in the global variable named gfn_xxx. @@ -43,6 +45,7 @@ self.globalobject_name = None # gfunc_xxx self.localscope = namespace.localScope() self.graph = graph = genc.translator.getflowgraph(func) + graph_args = graph.getargs() # collect all the local variables localslst = [] @@ -50,27 +53,19 @@ if isinstance(node, Block): localslst.extend(node.getvariables()) traverse(visit, graph) - self.localnames = [self.expr(a) for a in uniqueitems(localslst)] + fast_set = dict(zip(graph_args, graph_args)) + self.localnames = [self.decl(a) for a in localslst if a not in fast_set] # collect all the arguments - if func.func_code.co_flags & CO_VARARGS: - vararg = graph.getargs()[-1] - positional_args = graph.getargs()[:-1] - else: - vararg = None - positional_args = graph.getargs() - - fast_args = [self.expr(a) for a in positional_args] - if vararg is not None: - vararg = self.expr(vararg) - fast_args.append(vararg) - - declare_fast_args = [('PyObject *' + a) for a in fast_args] + fast_args = [self.expr(a) for a in graph_args] + declare_fast_args = [self.decl(a) for a in graph_args] if USE_CALL_TRACE: declare_fast_args.insert(0, 'TRACE_ARGS') declare_fast_args = ', '.join(declare_fast_args) or 'void' - fast_function_header = ('static PyObject *\n' - '%s(%s)' % (self.fast_name, declare_fast_args)) + name_and_arguments = '%s(%s)' % (self.fast_name, declare_fast_args) + ctret = ctypeof(graph.getreturnvar()) + fast_function_header = 'static ' + ( + ctret.ctypetemplate % (name_and_arguments,)) name_of_defaults = [self.genc.pyobjrepr.nameof(x, debug=('Default argument of', self)) @@ -78,11 +73,14 @@ # store misc. information self.fast_function_header = fast_function_header + self.graphargs = graph_args + self.ctret = ctret + self.vararg = bool(func.func_code.co_flags & CO_VARARGS) self.fast_args = fast_args - self.fast_set = dict(zip(fast_args, fast_args)) - self.vararg = vararg - self.positional_args = positional_args self.name_of_defaults = name_of_defaults + + error_return = getattr(ctret, 'error_return', 'NULL') + self.return_error = 'FUNCTION_RETURN(%s)' % error_return # generate the forward header self.genc.globaldecl.append(fast_function_header + '; /* forward */') @@ -98,9 +96,12 @@ def clear(self): del self.localscope del self.localnames - del self.fast_set del self.graph + def decl(self, v): + assert isinstance(v, Variable) + return ctypeof(v).ctypetemplate % (self.localscope.localname(v.name),) + def expr(self, v): if isinstance(v, Variable): return self.localscope.localname(v.name) @@ -115,11 +116,12 @@ def gen_wrapper(self, f): func = self.func f_name = self.wrapper_name - positional_args = self.positional_args - vararg = self.vararg name_of_defaults = self.name_of_defaults + graphargs = self.graphargs + vararg = self.vararg + nb_positional_args = len(graphargs) - vararg - min_number_of_args = len(self.positional_args) - len(name_of_defaults) + min_number_of_args = nb_positional_args - len(name_of_defaults) print >> f, 'static PyObject *' print >> f, '%s(PyObject* self, PyObject* args, PyObject* kwds)' % ( f_name,) @@ -136,53 +138,93 @@ kwlist.append('0') print >> f, '\tstatic char* kwlist[] = {%s};' % (', '.join(kwlist),) - if self.fast_args: - print >> f, '\tPyObject *%s;' % (', *'.join(self.fast_args)) + numberednames = ['o%d' % (i+1) for i in range(len(graphargs))] + if vararg: + numberednames[-1] = 'ovararg' + numberednames.append('oret') + print >> f, '\tPyObject *%s;' % (', *'.join(numberednames)) + conversions = [] + call_fast_args = [] + for a, numberedname in zip(graphargs, numberednames): + try: + convert_from_obj = a.type_cls.convert_from_obj + except AttributeError: + call_fast_args.append(numberedname) + else: + convertedname = numberedname.replace('o', 'a') + ct = ctypeof(a) + print >> f, '\t%s;' % (ct.ctypetemplate % (convertedname,)) + conversions.append('\tOP_%s(%s, %s, type_error)' % ( + convert_from_obj.upper(), numberedname, convertedname)) + # XXX successfully converted objects may need to be decrefed + # XXX even though they are not PyObjects + call_fast_args.append(convertedname) + # return value conversion + try: + convert_to_obj = self.ctret.convert_to_obj + except AttributeError: + putresultin = 'oret' + footer = None + else: + print >> f, '\t%s;' % (self.ctret.ctypetemplate % ('aret',)) + putresultin = 'aret' + footer = 'OP_%s(aret, oret, type_error)' % convert_to_obj.upper() print >> f if USE_CALL_TRACE: print >> f, '\tFUNCTION_CHECK()' # argument unpacking - if vararg is not None: - print >> f, '\t%s = PyTuple_GetSlice(args, %d, INT_MAX);' % ( - vararg, len(positional_args)) - print >> f, '\tif (%s == NULL)' % (vararg,) + if vararg: + print >> f, '\tovararg = PyTuple_GetSlice(args, %d, INT_MAX);' % ( + nb_positional_args,) + print >> f, '\tif (ovararg == NULL)' print >> f, '\t\tFUNCTION_RETURN(NULL)' print >> f, '\targs = PyTuple_GetSlice(args, 0, %d);' % ( - len(positional_args),) + nb_positional_args,) print >> f, '\tif (args == NULL) {' - print >> f, '\t\tERR_DECREF(%s)' % (vararg,) + print >> f, '\t\tERR_DECREF(ovararg)' print >> f, '\t\tFUNCTION_RETURN(NULL)' print >> f, '\t}' tail = """{ \t\tERR_DECREF(args) -\t\tERR_DECREF(%s) +\t\tERR_DECREF(ovararg) \t\tFUNCTION_RETURN(NULL); \t} -\tPy_DECREF(args);""" % vararg +\tPy_DECREF(args);""" else: tail = '\n\t\tFUNCTION_RETURN(NULL)' for i in range(len(name_of_defaults)): print >> f, '\t%s = %s;' % ( - self.fast_args[min_number_of_args+i], + numberednames[min_number_of_args+i], name_of_defaults[i]) fmt = 'O'*min_number_of_args - if min_number_of_args < len(positional_args): - fmt += '|' + 'O'*(len(positional_args)-min_number_of_args) + if min_number_of_args < nb_positional_args: + fmt += '|' + 'O'*(nb_positional_args-min_number_of_args) lst = ['args', 'kwds', '"%s:%s"' % (fmt, func.__name__), 'kwlist', ] - lst += ['&' + a for a in self.fast_args] + lst += ['&' + a for a in numberednames] print >> f, '\tif (!PyArg_ParseTupleAndKeywords(%s))' % ', '.join(lst), print >> f, tail - call_fast_args = list(self.fast_args) + for line in conversions: + print >> f, line + if USE_CALL_TRACE: call_fast_args.insert(0, 'TRACE_CALL') call_fast_args = ', '.join(call_fast_args) - print >> f, '\treturn %s(%s);' % (self.fast_name, call_fast_args) + print >> f, '\t%s = %s(%s);' % (putresultin, self.fast_name, + call_fast_args) + if footer: + print >> f, '\t' + footer + print >> f, '\treturn oret;' + + if conversions: + print >> f, ' type_error:' + print >> f, ' return NULL;' + print >> f, '}' print >> f @@ -192,15 +234,24 @@ print >> f, self.fast_function_header print >> f, '{' - fast_locals = [arg for arg in self.localnames - if arg not in self.fast_set] - if fast_locals: - print >> f, '\tPyObject *%s;' % (', *'.join(fast_locals),) - print >> f + localnames = self.localnames + lengths = [len(a) for a in localnames] + lengths.append(9999) + start = 0 + while start < len(localnames): + total = lengths[start] + 9 + end = start+1 + while total + lengths[end] < 76: + total += lengths[end] + 2 + end += 1 + print >> f, '\t' + '; '.join(localnames[start:end]) + ';' + start = end # generate an incref for each input argument - for v in self.positional_args: - print >> f, '\tPy_INCREF(%s);' % self.expr(v) + for a in self.graphargs: + cincref = getattr(ctypeof(a), 'cincref', None) + if cincref: + print >> f, '\t' + cincref % (self.expr(a),) # print the body for line in body: @@ -243,10 +294,17 @@ if a1 in has_ref: del has_ref[a1] else: - line += '\tPy_INCREF(%s);' % self.expr(a2) + ct1 = ctypeof(a1) + ct2 = ctypeof(a2) + assert ct1 == ct2 + cincref = getattr(ct1, 'cincref', None) + if cincref: + line += '\t' + cincref % (self.expr(a2),) yield line for v in has_ref: - yield 'Py_DECREF(%s);' % linklocalvars[v] + cdecref = getattr(ctypeof(v), 'cdecref', None) + if cdecref: + yield cdecref % (linklocalvars[v],) yield 'goto block%d;' % blocknum[link.target] # collect all blocks @@ -281,7 +339,7 @@ exc_cls = self.expr(block.inputargs[0]) exc_value = self.expr(block.inputargs[1]) yield 'PyErr_Restore(%s, %s, NULL);' % (exc_cls, exc_value) - yield 'FUNCTION_RETURN(NULL)' + yield self.return_error else: # regular return block retval = self.expr(block.inputargs[0]) @@ -325,15 +383,18 @@ err_reachable = True else: # block ending in a switch on a value + ct = ctypeof(block.exitswitch) for link in block.exits[:-1]: - yield 'if (EQ_%s(%s)) {' % (link.exitcase, - self.expr(block.exitswitch)) + assert link.exitcase in (False, True) + yield 'if (%s == %s) {' % (self.expr(block.exitswitch), + self.genc.nameofvalue(link.exitcase, ct)) for op in gen_link(link): yield '\t' + op yield '}' link = block.exits[-1] - yield 'assert(EQ_%s(%s));' % (link.exitcase, - self.expr(block.exitswitch)) + assert link.exitcase in (False, True) + yield 'assert(%s == %s);' % (self.expr(block.exitswitch), + self.genc.nameofvalue(link.exitcase, ct)) for op in gen_link(block.exits[-1]): yield op yield '' @@ -341,11 +402,16 @@ while to_release: v = to_release.pop() if err_reachable: - yield 'ERR_DECREF(%s)' % self.expr(v) + if not hasattr(v, 'type_cls'): + yield 'ERR_DECREF(%s)' % self.expr(v) + else: + cdecref = getattr(ctypeof(v), 'cdecref', None) + if cdecref: + yield cdecref % (self.expr(v),) yield 'err%d_%d:' % (blocknum[block], len(to_release)) err_reachable = True if err_reachable: - yield 'FUNCTION_RETURN(NULL)' + yield self.return_error # ____________________________________________________________ @@ -388,7 +454,7 @@ funcdef = self.genc.getfuncdef(target.value) if funcdef is None: return None - if len(funcdef.positional_args) != len(args) or funcdef.vararg: + if len(funcdef.graphargs) != len(args) or funcdef.vararg: return None return 'if (!(%s=%s(%s))) FAIL(%s);' % ( r, funcdef.fast_name, ', '.join(args), err) Modified: pypy/dist/pypy/translator/genc_pyobj.py ============================================================================== --- pypy/dist/pypy/translator/genc_pyobj.py (original) +++ pypy/dist/pypy/translator/genc_pyobj.py Fri Apr 1 19:43:31 2005 @@ -13,6 +13,9 @@ of Python objects to be 'pickled' as Python source code that will reconstruct them. """ + ctypetemplate = 'PyObject *%s' + cincref = 'Py_INCREF(%s);' + cdecref = 'Py_DECREF(%s);' def __init__(self, genc): self.genc = genc @@ -433,3 +436,7 @@ co = compile(source, self.genc.modname, 'exec') del source return marshal.dumps(co) + + +def ctypeof(v): + return getattr(v, 'type_cls', CType_PyObject) Added: pypy/dist/pypy/translator/genc_type.h ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc_type.h Fri Apr 1 19:43:31 2005 @@ -0,0 +1,12 @@ + +/************************************************************/ + /*** C header subsection: typed operations ***/ + +/* This file is included from genc.h. */ + + +#define OP_INT2OBJ(i,r,err) if (!(r=PyInt_FromLong(i))) FAIL(err) +#define OP_OBJ2INT(o,r,err) if ((r=PyInt_AsLong(o))==-1 && PyErr_Occurred()) \ + FAIL(err) + +#define OP_INT_IS_TRUE(x,r,err) r = (x != 0); Modified: pypy/dist/pypy/translator/genc_type.py ============================================================================== --- pypy/dist/pypy/translator/genc_type.py (original) +++ pypy/dist/pypy/translator/genc_type.py Fri Apr 1 19:43:31 2005 @@ -1,5 +1,13 @@ class CType_Int: + ctypetemplate = 'int %s' convert_to_obj = 'int2obj' convert_from_obj = 'obj2int' + error_return = '-1' + + def __init__(self, genc): + pass + + def nameof(self, v, debug=None): + return '%d' % v From pedronis at codespeak.net Fri Apr 1 20:01:31 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 1 Apr 2005 20:01:31 +0200 (MEST) Subject: [pypy-svn] r10238 - pypy/dist/goal Message-ID: <20050401180131.DA4A527C2B@code1.codespeak.net> Author: pedronis Date: Fri Apr 1 20:01:31 2005 New Revision: 10238 Added: pypy/dist/goal/targetpypy.py - copied, changed from r10225, pypy/dist/goal/translate_pypy.py pypy/dist/goal/targetpypy0.py - copied, changed from r10225, pypy/dist/goal/translate_pypy0.py pypy/dist/goal/targetpypy1.py - copied, changed from r10225, pypy/dist/goal/translate_pypy1.py Modified: pypy/dist/goal/buildcache2.py pypy/dist/goal/translate_pypy.py Log: refactored the various translate_pypy* so that the bulk of the functionality lives and is changeable in a unified translate_pypy.py, the name of an other python file can be passed as argument (defaults to targetpypy), this file should define a target and run functions to define and setup the entry_point and have code to run the translated result. What is now translate_pypy1.py can be achieved as translate_pypy.py targetpypy1 Modified: pypy/dist/goal/buildcache2.py ============================================================================== --- pypy/dist/goal/buildcache2.py (original) +++ pypy/dist/goal/buildcache2.py Fri Apr 1 20:01:31 2005 @@ -1,8 +1,7 @@ -import autopath - -from pypy.interpreter.typedef import interptypes def buildcache(space): + from pypy.interpreter.typedef import interptypes + space.builtin.getdict() print "*builtin*" w_dic = space.builtin.w_dict @@ -41,6 +40,7 @@ print "cache build finished" if __name__ == '__main__': + import autopath from pypy.objspace.std.objspace import StdObjSpace space = StdObjSpace() Copied: pypy/dist/goal/targetpypy.py (from r10225, pypy/dist/goal/translate_pypy.py) ============================================================================== --- pypy/dist/goal/translate_pypy.py (original) +++ pypy/dist/goal/targetpypy.py Fri Apr 1 20:01:31 2005 @@ -1,35 +1,6 @@ -# -# -# -""" -Command-line options for translate_pypy: - - port Listen on the given port number for connexions - (see pypy/translator/tool/pygame/graphclient.py) - -text Don't start the Pygame viewer - -no-a Don't infer annotations, just translate everything - -no-c Don't generate the C code - -c Generate the C code, but don't compile it - -o Generate and compile the C code, but don't run it - -no-mark-some-objects - Do not mark functions that have SomeObject in their signature. - -tcc Equivalent to the envvar PYPY_CC='tcc -shared -o "%s.so" "%s.c"' - -- http://fabrice.bellard.free.fr/tcc/ - -no-d Disable recording of debugging information -""" -import autopath, sys, threading, pdb, os import buildcache2 from pypy.objspace.std.objspace import StdObjSpace, W_Object from pypy.objspace.std.intobject import W_IntObject -from pypy.translator.translator import Translator -from pypy.annotation import model as annmodel -from pypy.tool.cache import Cache -from pypy.annotation.model import SomeObject -from pypy.tool.udir import udir - -# XXX this tries to make compiling faster -from pypy.translator.tool import buildpyxmodule -buildpyxmodule.enable_fast_compilation() # __________ Entry point __________ @@ -38,10 +9,10 @@ w_b = W_IntObject(space, -7) return space.mul(w_a, w_b) -# __________ Main __________ +# _____ Define and setup target ___ -def analyse(entry_point=entry_point): - global t, space +def target(): + global space # disable translation of the whole of classobjinterp.py StdObjSpace.setup_old_style_classes = lambda self: None space = StdObjSpace() @@ -50,225 +21,12 @@ # further call the entry_point once to trigger building remaining # caches (as far as analyzing the entry_point is concerned) entry_point() - t = Translator(entry_point, verbose=True, simplifying=True) - if listen_port: - run_async_server() - if not options['-no-a']: - a = t.annotate([]) - a.simplify() - t.frozen = True # cannot freeze if we don't have annotations - if not options['-no-mark-some-objects']: - options['-no-mark-some-objects'] = True # Do not do this again - find_someobjects(t) - - -def find_someobjects(translator, quiet=False): - """Find all functions in that have SomeObject in their signature.""" - annotator = translator.annotator - if not annotator: - return # no annotations available - - translator.highlight_functions = {} - - def is_someobject(var): - try: - return annotator.binding(var).__class__ == SomeObject - except KeyError: - return False - - def short_binding(var): - try: - binding = annotator.binding(var) - except KeyError: - return "?" - if binding.is_constant(): - return 'const %s' % binding.__class__.__name__ - else: - return binding.__class__.__name__ - - header = True - items = [(graph.name, func, graph) - for func, graph in translator.flowgraphs.items()] - items.sort() - num = someobjnum = 0 - for graphname, func, graph in items: - unknown_input_args = len(filter(is_someobject, graph.getargs())) - unknown_return_value = is_someobject(graph.getreturnvar()) - if unknown_input_args or unknown_return_value: - someobjnum += 1 - translator.highlight_functions[func] = True - if not quiet: - if header: - header = False - print "=" * 70 - print "Functions that have SomeObject in their signature" - print "=" * 70 - print ("%(name)s(%(args)s) -> %(result)s\n" - "%(filename)s:%(lineno)s\n" - % {'name': graph.name, - 'filename': func.func_globals.get('__name__', '?'), - 'lineno': func.func_code.co_firstlineno, - 'args': ', '.join(map(short_binding, - graph.getargs())), - 'result': short_binding(graph.getreturnvar())}) - num += 1 - if not quiet: - print "=" * 70 - percent = int(num and (100.0*someobjnum / num) or 0) - print "somobjectness: %2d percent" % (percent) - print "(%d out of %d functions get or return SomeObjects" % ( - someobjnum, num) - print "=" * 70 - - -def update_usession_dir(stabledir = udir.dirpath('usession')): - from py import path - try: - if stabledir.check(dir=1): - for x in udir.visit(path.checker(file=1)): - target = stabledir.join(x.relto(udir)) - if target.check(): - target.remove() - else: - target.dirpath().ensure(dir=1) - try: - target.mklinkto(x) - except path.Invalid: - x.copy(target) - except path.Invalid: - print "ignored: couldn't link or copy to %s" % stabledir - -def run_in_thread(fn, args, cleanup=None, cleanup_args=()): - def _run_in_thread(): - fn(*args) - if cleanup is not None: - cleanup(*cleanup_args) - return threading.Thread(target=_run_in_thread, args=()) - -def run_async_server(): - from pypy.translator.tool import graphpage, graphserver - homepage = graphpage.TranslatorPage(t) - graphserver.run_server(homepage, port=listen_port, background=True) - options['-text'] = True - - -if __name__ == '__main__': - - options = {'-text': False, - '-no-c': False, - '-c': False, - '-o': False, - '-no-mark-some-objects': False, - '-no-a': False, - '-tcc': False, - '-no-d': False, - } - listen_port = None - for arg in sys.argv[1:]: - if arg in ('-h', '--help'): - print __doc__.strip() - sys.exit() - try: - listen_port = int(arg) - except ValueError: - assert arg in options, "unknown option %r" % (arg,) - options[arg] = True - if options['-tcc']: - os.environ['PYPY_CC'] = 'tcc -shared -o "%s.so" "%s.c"' - if options['-no-d']: - annmodel.DEBUG = False - - def about(x): - """ interactive debugging helper """ - from pypy.objspace.flow.model import Block, flatten - if isinstance(x, Block): - for func, graph in t.flowgraphs.items(): - if x in flatten(graph): - funcname = func.func_name - cls = getattr(func, 'class_', None) - if cls: - funcname = '%s.%s' % (cls.__name__, funcname) - print '%s is a %s in the graph of %s' % (x, - x.__class__.__name__, funcname) - print 'at %s:%d' % (func.func_globals.get('__name__', '?'), - func.func_code.co_firstlineno) - break - else: - print '%s is a %s at some unknown location' % (x, - x.__class__.__name__) - print 'containing the following operations:' - for op in x.operations: - print op - print '--end--' - return - print "don't know about", x - - def run_server(): - from pypy.translator.tool.graphpage import TranslatorPage - from pypy.translator.tool.pygame.graphclient import get_layout - from pypy.translator.tool.pygame.graphdisplay import GraphDisplay - import pygame - - if not options['-no-mark-some-objects']: - find_someobjects(t, quiet=True) - - display = GraphDisplay(get_layout(TranslatorPage(t))) - async_quit = display.async_quit - return display.run, async_quit, pygame.quit - - def debug(got_error): - if got_error: - import traceback - exc, val, tb = sys.exc_info() - print >> sys.stderr - traceback.print_exception(exc, val, tb) - print >> sys.stderr - - block = getattr(val, '__annotator_block', None) - if block: - print '-'*60 - about(block) - print '-'*60 - print >> sys.stderr - func, args = pdb.post_mortem, (tb,) - else: - print '-'*60 - print 'Done.' - print - func, args = pdb.set_trace, () - if options['-text']: - func(*args) - else: - start, stop, cleanup = run_server() - debugger = run_in_thread(func, args, stop) - debugger.start() - start() - debugger.join() - cleanup() + return entry_point, [] - try: - analyse() - print '-'*60 - if options['-no-c']: - print 'Not generating C code.' - elif options['-c']: - print 'Generating C code without compiling it...' - filename = t.ccompile(really_compile=False) - update_usession_dir() - print 'Written %s.' % (filename,) - else: - print 'Generating and compiling C code...' - c_entry_point = t.ccompile() - update_usession_dir() - if not options['-o']: - print 'Running!' - w_result = c_entry_point() - print w_result - print w_result.intval - assert w_result.intval == 42 - except: - debug(True) - else: - debug(False) - +# _____ Run translated _____ +def run(c_entry_point): + w_result = c_entry_point() + print w_result + print w_result.intval + assert w_result.intval == 42 Copied: pypy/dist/goal/targetpypy0.py (from r10225, pypy/dist/goal/translate_pypy0.py) ============================================================================== --- pypy/dist/goal/translate_pypy0.py (original) +++ pypy/dist/goal/targetpypy0.py Fri Apr 1 20:01:31 2005 @@ -1,39 +1,6 @@ -# -# -# -""" -Command-line options for translate_pypy: - - port Listen on the given port number for connexions - (see pypy/translator/tool/pygame/graphclient.py) - -text Don't start the Pygame viewer - -no-a Don't infer annotations, just translate everything - -no-c Don't generate the C code - -c Generate the C code, but don't compile it - -o Generate and compile the C code, but don't run it - -no-mark-some-objects - Do not mark functions that have SomeObject in their signature. - -tcc Equivalent to the envvar PYPY_CC='tcc -shared -o "%s.so" "%s.c"' - -- http://fabrice.bellard.free.fr/tcc/ - -no-d Disable recording of debugging information -""" -import autopath, sys, threading, pdb, os -import buildcache2 -from pypy.objspace.std.objspace import StdObjSpace, W_Object -from pypy.objspace.std.intobject import W_IntObject -from pypy.translator.translator import Translator -from pypy.annotation import model as annmodel -from pypy.tool.cache import Cache -from pypy.annotation.model import SomeObject -from pypy.tool.udir import udir - from pypy.objspace import dummy from pypy.interpreter.pycode import PyCode -# XXX this tries to make compiling faster -from pypy.translator.tool import buildpyxmodule -buildpyxmodule.enable_fast_compilation() - # __________ Entry point __________ def entry_point(code, w_loc): @@ -41,15 +8,11 @@ code2 = code2._from_code(code) code2.exec_code(space, space.wrap({}), w_loc) -# __________ Main __________ +# _____ Define and setup target _____ -def analyse(entry_point=entry_point): - global t, space +def target(): + global space space = dummy.DummyObjSpace() - # call cache filling code - #buildcache2.buildcache(space) - # further call the entry_point once to trigger building remaining - # caches (as far as analyzing the entry_point is concerned) from pypy.interpreter import pycode @@ -60,223 +23,11 @@ # cheat space._gatewaycache.content[pyopcode.app] = space.newdict([]) - t = Translator(entry_point, verbose=True, simplifying=True) - if listen_port: - run_async_server() - if not options['-no-a']: - a = t.annotate([object, dummy.W_Obj]) - a.simplify() - t.frozen = True # cannot freeze if we don't have annotations - if not options['-no-mark-some-objects']: - options['-no-mark-some-objects'] = True # Do not do this again - find_someobjects(t) - - -def find_someobjects(translator, quiet=False): - """Find all functions in that have SomeObject in their signature.""" - annotator = translator.annotator - if not annotator: - return # no annotations available - - translator.highlight_functions = {} - - def is_someobject(var): - try: - return annotator.binding(var).__class__ == SomeObject - except KeyError: - return False - - def short_binding(var): - try: - binding = annotator.binding(var) - except KeyError: - return "?" - if binding.is_constant(): - return 'const %s' % binding.__class__.__name__ - else: - return binding.__class__.__name__ - - header = True - items = [(graph.name, func, graph) - for func, graph in translator.flowgraphs.items()] - items.sort() - num = someobjnum = 0 - for graphname, func, graph in items: - unknown_input_args = len(filter(is_someobject, graph.getargs())) - unknown_return_value = is_someobject(graph.getreturnvar()) - if unknown_input_args or unknown_return_value: - someobjnum += 1 - translator.highlight_functions[func] = True - if not quiet: - if header: - header = False - print "=" * 70 - print "Functions that have SomeObject in their signature" - print "=" * 70 - print ("%(name)s(%(args)s) -> %(result)s\n" - "%(filename)s:%(lineno)s\n" - % {'name': graph.name, - 'filename': func.func_globals.get('__name__', '?'), - 'lineno': func.func_code.co_firstlineno, - 'args': ', '.join(map(short_binding, - graph.getargs())), - 'result': short_binding(graph.getreturnvar())}) - num += 1 - if not quiet: - print "=" * 70 - percent = int(num and (100.0*someobjnum / num) or 0) - print "somobjectness: %2d percent" % (percent) - print "(%d out of %d functions get or return SomeObjects" % ( - someobjnum, num) - print "=" * 70 - - -def update_usession_dir(stabledir = udir.dirpath('usession')): - from py import path - try: - if stabledir.check(dir=1): - for x in udir.visit(path.checker(file=1)): - target = stabledir.join(x.relto(udir)) - if target.check(): - target.remove() - else: - target.dirpath().ensure(dir=1) - try: - target.mklinkto(x) - except path.Invalid: - x.copy(target) - except path.Invalid: - print "ignored: couldn't link or copy to %s" % stabledir - -def run_in_thread(fn, args, cleanup=None, cleanup_args=()): - def _run_in_thread(): - fn(*args) - if cleanup is not None: - cleanup(*cleanup_args) - return threading.Thread(target=_run_in_thread, args=()) - -def run_async_server(): - from pypy.translator.tool import graphpage, graphserver - homepage = graphpage.TranslatorPage(t) - graphserver.run_server(homepage, port=listen_port, background=True) - options['-text'] = True - - -if __name__ == '__main__': - - options = {'-text': False, - '-no-c': False, - '-c': False, - '-o': False, - '-no-mark-some-objects': False, - '-no-a': False, - '-tcc': False, - '-no-d': False, - } - listen_port = None - for arg in sys.argv[1:]: - if arg in ('-h', '--help'): - print __doc__.strip() - sys.exit() - try: - listen_port = int(arg) - except ValueError: - assert arg in options, "unknown option %r" % (arg,) - options[arg] = True - if options['-tcc']: - os.environ['PYPY_CC'] = 'tcc -shared -o "%s.so" "%s.c"' - if options['-no-d']: - annmodel.DEBUG = False - - def about(x): - """ interactive debugging helper """ - from pypy.objspace.flow.model import Block, flatten - if isinstance(x, Block): - for func, graph in t.flowgraphs.items(): - if x in flatten(graph): - funcname = func.func_name - cls = getattr(func, 'class_', None) - if cls: - funcname = '%s.%s' % (cls.__name__, funcname) - print '%s is a %s in the graph of %s' % (x, - x.__class__.__name__, funcname) - print 'at %s:%d' % (func.func_globals.get('__name__', '?'), - func.func_code.co_firstlineno) - break - else: - print '%s is a %s at some unknown location' % (x, - x.__class__.__name__) - print 'containing the following operations:' - for op in x.operations: - print op - print '--end--' - return - print "don't know about", x - - def run_server(): - from pypy.translator.tool.graphpage import TranslatorPage - from pypy.translator.tool.pygame.graphclient import get_layout - from pypy.translator.tool.pygame.graphdisplay import GraphDisplay - import pygame - - if not options['-no-mark-some-objects']: - find_someobjects(t, quiet=True) - - display = GraphDisplay(get_layout(TranslatorPage(t))) - async_quit = display.async_quit - return display.run, async_quit, pygame.quit - - def debug(got_error): - if got_error: - import traceback - exc, val, tb = sys.exc_info() - print >> sys.stderr - traceback.print_exception(exc, val, tb) - print >> sys.stderr - - block = getattr(val, '__annotator_block', None) - if block: - print '-'*60 - about(block) - print '-'*60 - - print >> sys.stderr - func, args = pdb.post_mortem, (tb,) - else: - print '-'*60 - print 'Done.' - print - func, args = pdb.set_trace, () - if options['-text']: - func(*args) - else: - start, stop, cleanup = run_server() - debugger = run_in_thread(func, args, stop) - debugger.start() - start() - debugger.join() - cleanup() - - try: - analyse() - print '-'*60 - if options['-no-c']: - print 'Not generating C code.' - elif options['-c']: - print 'Generating C code without compiling it...' - filename = t.ccompile(really_compile=False) - update_usession_dir() - print 'Written %s.' % (filename,) - else: - print 'Generating and compiling C code...' - c_entry_point = t.ccompile() - update_usession_dir() - if not options['-o']: - print 'Running!' - w_result = c_entry_point(compile("a+b","","eval"),dummy.W_Obj()) - print w_result - except: - debug(True) - else: - debug(False) - + return entry_point,[object, dummy.W_Obj] + +# _____ Run translated _____ + +def run(c_entry_point): + w_result = c_entry_point(compile("a+b","","eval"),dummy.W_Obj()) + print w_result + Copied: pypy/dist/goal/targetpypy1.py (from r10225, pypy/dist/goal/translate_pypy1.py) ============================================================================== --- pypy/dist/goal/translate_pypy1.py (original) +++ pypy/dist/goal/targetpypy1.py Fri Apr 1 20:01:31 2005 @@ -1,36 +1,7 @@ -# -# -# -""" -Command-line options for translate_pypy: - - port Listen on the given port number for connexions - (see pypy/translator/tool/pygame/graphclient.py) - -text Don't start the Pygame viewer - -no-a Don't infer annotations, just translate everything - -no-c Don't generate the C code - -c Generate the C code, but don't compile it - -o Generate and compile the C code, but don't run it - -no-mark-some-objects - Do not mark functions that have SomeObject in their signature. - -tcc Equivalent to the envvar PYPY_CC='tcc -shared -o "%s.so" "%s.c"' - -- http://fabrice.bellard.free.fr/tcc/ - -no-d Disable recording of debugging information -""" -import autopath, sys, threading, pdb, os import buildcache2 from pypy.objspace.std.objspace import StdObjSpace, W_Object from pypy.objspace.std.intobject import W_IntObject from pypy.objspace.std import stdtypedef -from pypy.translator.translator import Translator -from pypy.annotation import model as annmodel -from pypy.tool.cache import Cache -from pypy.annotation.model import SomeObject -from pypy.tool.udir import udir - -# XXX this tries to make compiling faster -from pypy.translator.tool import buildpyxmodule -buildpyxmodule.enable_fast_compilation() # __________ Entry point __________ @@ -39,10 +10,9 @@ w_b = W_IntObject(space, -7) return mmentrypoint(space, w_a, w_b) -# __________ Main __________ - -def analyse(entry_point=entry_point): - global t, space, mmentrypoint +# _____ Define and setup target _____ +def target(): + global space, mmentrypoint # disable translation of the whole of classobjinterp.py StdObjSpace.setup_old_style_classes = lambda self: None space = StdObjSpace() @@ -63,225 +33,13 @@ # further call the entry_point once to trigger building remaining # caches (as far as analyzing the entry_point is concerned) entry_point() - t = Translator(entry_point, verbose=True, simplifying=True) - if listen_port: - run_async_server() - if not options['-no-a']: - a = t.annotate([]) - a.simplify() - t.frozen = True # cannot freeze if we don't have annotations - if not options['-no-mark-some-objects']: - options['-no-mark-some-objects'] = True # Do not do this again - find_someobjects(t) - - -def find_someobjects(translator, quiet=False): - """Find all functions in that have SomeObject in their signature.""" - annotator = translator.annotator - if not annotator: - return # no annotations available - - translator.highlight_functions = {} - - def is_someobject(var): - try: - return annotator.binding(var).__class__ == SomeObject - except KeyError: - return False - - def short_binding(var): - try: - binding = annotator.binding(var) - except KeyError: - return "?" - if binding.is_constant(): - return 'const %s' % binding.__class__.__name__ - else: - return binding.__class__.__name__ - - header = True - items = [(graph.name, func, graph) - for func, graph in translator.flowgraphs.items()] - items.sort() - num = someobjnum = 0 - for graphname, func, graph in items: - unknown_input_args = len(filter(is_someobject, graph.getargs())) - unknown_return_value = is_someobject(graph.getreturnvar()) - if unknown_input_args or unknown_return_value: - someobjnum += 1 - translator.highlight_functions[func] = True - if not quiet: - if header: - header = False - print "=" * 70 - print "Functions that have SomeObject in their signature" - print "=" * 70 - print ("%(name)s(%(args)s) -> %(result)s\n" - "%(filename)s:%(lineno)s\n" - % {'name': graph.name, - 'filename': func.func_globals.get('__name__', '?'), - 'lineno': func.func_code.co_firstlineno, - 'args': ', '.join(map(short_binding, - graph.getargs())), - 'result': short_binding(graph.getreturnvar())}) - num += 1 - if not quiet: - print "=" * 70 - percent = int(num and (100.0*someobjnum / num) or 0) - print "somobjectness: %2d percent" % (percent) - print "(%d out of %d functions get or return SomeObjects" % ( - someobjnum, num) - print "=" * 70 - - -def update_usession_dir(stabledir = udir.dirpath('usession')): - from py import path - try: - if stabledir.check(dir=1): - for x in udir.visit(path.checker(file=1)): - target = stabledir.join(x.relto(udir)) - if target.check(): - target.remove() - else: - target.dirpath().ensure(dir=1) - try: - target.mklinkto(x) - except path.Invalid: - x.copy(target) - except path.Invalid: - print "ignored: couldn't link or copy to %s" % stabledir - -def run_in_thread(fn, args, cleanup=None, cleanup_args=()): - def _run_in_thread(): - fn(*args) - if cleanup is not None: - cleanup(*cleanup_args) - return threading.Thread(target=_run_in_thread, args=()) - -def run_async_server(): - from pypy.translator.tool import graphpage, graphserver - homepage = graphpage.TranslatorPage(t) - graphserver.run_server(homepage, port=listen_port, background=True) - options['-text'] = True - - -if __name__ == '__main__': - - options = {'-text': False, - '-no-c': False, - '-c': False, - '-o': False, - '-no-mark-some-objects': False, - '-no-a': False, - '-tcc': False, - '-no-d': False, - } - listen_port = None - for arg in sys.argv[1:]: - if arg in ('-h', '--help'): - print __doc__.strip() - sys.exit() - try: - listen_port = int(arg) - except ValueError: - assert arg in options, "unknown option %r" % (arg,) - options[arg] = True - if options['-tcc']: - os.environ['PYPY_CC'] = 'tcc -shared -o "%s.so" "%s.c"' - if options['-no-d']: - annmodel.DEBUG = False - - def about(x): - """ interactive debugging helper """ - from pypy.objspace.flow.model import Block, flatten - if isinstance(x, Block): - for func, graph in t.flowgraphs.items(): - if x in flatten(graph): - funcname = func.func_name - cls = getattr(func, 'class_', None) - if cls: - funcname = '%s.%s' % (cls.__name__, funcname) - print '%s is a %s in the graph of %s' % (x, - x.__class__.__name__, funcname) - print 'at %s:%d' % (func.func_globals.get('__name__', '?'), - func.func_code.co_firstlineno) - break - else: - print '%s is a %s at some unknown location' % (x, - x.__class__.__name__) - print 'containing the following operations:' - for op in x.operations: - print op - print '--end--' - return - print "don't know about", x - - def run_server(): - from pypy.translator.tool.graphpage import TranslatorPage - from pypy.translator.tool.pygame.graphclient import get_layout - from pypy.translator.tool.pygame.graphdisplay import GraphDisplay - import pygame - - if not options['-no-mark-some-objects']: - find_someobjects(t, quiet=True) - - display = GraphDisplay(get_layout(TranslatorPage(t))) - async_quit = display.async_quit - return display.run, async_quit, pygame.quit - - def debug(got_error): - if got_error: - import traceback - exc, val, tb = sys.exc_info() - print >> sys.stderr - traceback.print_exception(exc, val, tb) - print >> sys.stderr - block = getattr(val, '__annotator_block', None) - if block: - print '-'*60 - about(block) - print '-'*60 + return entry_point, [] - print >> sys.stderr - func, args = pdb.post_mortem, (tb,) - else: - print '-'*60 - print 'Done.' - print - func, args = pdb.set_trace, () - if options['-text']: - func(*args) - else: - start, stop, cleanup = run_server() - debugger = run_in_thread(func, args, stop) - debugger.start() - start() - debugger.join() - cleanup() +# _____ Run translated _____ - try: - analyse() - print '-'*60 - if options['-no-c']: - print 'Not generating C code.' - elif options['-c']: - print 'Generating C code without compiling it...' - filename = t.ccompile(really_compile=False) - update_usession_dir() - print 'Written %s.' % (filename,) - else: - print 'Generating and compiling C code...' - c_entry_point = t.ccompile() - update_usession_dir() - if not options['-o']: - print 'Running!' - w_result = c_entry_point() - print w_result - print w_result.intval - assert w_result.intval == 42 - except: - debug(True) - else: - debug(False) - +def run(c_entry_point): + w_result = c_entry_point() + print w_result + print w_result.intval + assert w_result.intval == 42 Modified: pypy/dist/goal/translate_pypy.py ============================================================================== --- pypy/dist/goal/translate_pypy.py (original) +++ pypy/dist/goal/translate_pypy.py Fri Apr 1 20:01:31 2005 @@ -4,57 +4,54 @@ """ Command-line options for translate_pypy: - port Listen on the given port number for connexions - (see pypy/translator/tool/pygame/graphclient.py) - -text Don't start the Pygame viewer - -no-a Don't infer annotations, just translate everything - -no-c Don't generate the C code - -c Generate the C code, but don't compile it - -o Generate and compile the C code, but don't run it + port Listen on the given port number for connexions + (see pypy/translator/tool/pygame/graphclient.py) + targetspec + targetspec.py is a python file defining + what is the translation target and setting things up for it, + it should have a target function returning an entry_point ...; + defaults to targetpypy + -text Don't start the Pygame viewer + -no-a Don't infer annotations, just translate everything + -no-c Don't generate the C code + -c Generate the C code, but don't compile it + -o Generate and compile the C code, but don't run it -no-mark-some-objects - Do not mark functions that have SomeObject in their signature. - -tcc Equivalent to the envvar PYPY_CC='tcc -shared -o "%s.so" "%s.c"' - -- http://fabrice.bellard.free.fr/tcc/ - -no-d Disable recording of debugging information + Do not mark functions that have SomeObject in their signature. + -tcc Equivalent to the envvar PYPY_CC='tcc -shared -o "%s.so" "%s.c"' + -- http://fabrice.bellard.free.fr/tcc/ + -no-d Disable recording of debugging information """ import autopath, sys, threading, pdb, os -import buildcache2 -from pypy.objspace.std.objspace import StdObjSpace, W_Object -from pypy.objspace.std.intobject import W_IntObject + from pypy.translator.translator import Translator from pypy.annotation import model as annmodel from pypy.tool.cache import Cache from pypy.annotation.model import SomeObject from pypy.tool.udir import udir + + + # XXX this tries to make compiling faster from pypy.translator.tool import buildpyxmodule buildpyxmodule.enable_fast_compilation() -# __________ Entry point __________ -def entry_point(): - w_a = W_IntObject(space, -6) - w_b = W_IntObject(space, -7) - return space.mul(w_a, w_b) + # __________ Main __________ -def analyse(entry_point=entry_point): - global t, space - # disable translation of the whole of classobjinterp.py - StdObjSpace.setup_old_style_classes = lambda self: None - space = StdObjSpace() - # call cache filling code - buildcache2.buildcache(space) - # further call the entry_point once to trigger building remaining - # caches (as far as analyzing the entry_point is concerned) - entry_point() +def analyse(target): + global t + + entry_point, inputtypes = target() + t = Translator(entry_point, verbose=True, simplifying=True) if listen_port: run_async_server() if not options['-no-a']: - a = t.annotate([]) + a = t.annotate(inputtypes) a.simplify() t.frozen = True # cannot freeze if we don't have annotations if not options['-no-mark-some-objects']: @@ -154,6 +151,8 @@ if __name__ == '__main__': + targetspec = 'targetpypy' + options = {'-text': False, '-no-c': False, '-c': False, @@ -171,8 +170,11 @@ try: listen_port = int(arg) except ValueError: - assert arg in options, "unknown option %r" % (arg,) - options[arg] = True + if os.path.isfile(arg+'.py'): + targetspec = arg + else: + assert arg in options, "unknown option %r" % (arg,) + options[arg] = True if options['-tcc']: os.environ['PYPY_CC'] = 'tcc -shared -o "%s.so" "%s.c"' if options['-no-d']: @@ -248,7 +250,11 @@ cleanup() try: - analyse() + targetspec_dic = {} + sys.path.insert(0, os.path.dirname(targetspec)) + execfile(targetspec+'.py',targetspec_dic) + print "Analysing target as defined by %s" % targetspec + analyse(targetspec_dic['target']) print '-'*60 if options['-no-c']: print 'Not generating C code.' @@ -263,10 +269,7 @@ update_usession_dir() if not options['-o']: print 'Running!' - w_result = c_entry_point() - print w_result - print w_result.intval - assert w_result.intval == 42 + targetspec_dic['run'](c_entry_point) except: debug(True) else: From arigo at codespeak.net Fri Apr 1 20:02:48 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 1 Apr 2005 20:02:48 +0200 (MEST) Subject: [pypy-svn] r10239 - pypy/dist/pypy/translator/tool Message-ID: <20050401180248.3293827C2C@code1.codespeak.net> Author: arigo Date: Fri Apr 1 20:02:48 2005 New Revision: 10239 Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py Log: Argh. Figuring out why the TCC warning messages didn't show up in the .errors file was tedious. Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/dist/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/dist/pypy/translator/tool/buildpyxmodule.py Fri Apr 1 20:02:48 2005 @@ -66,7 +66,7 @@ str(dirpath.join(modname))) for dir in [gcv['INCLUDEPY']] + list(include_dirs): cmd += ' -I%s' % dir - cmdexec(cmd) + os.system(cmd) else: from distutils.dist import Distribution from distutils.extension import Extension From pedronis at codespeak.net Fri Apr 1 20:12:24 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 1 Apr 2005 20:12:24 +0200 (MEST) Subject: [pypy-svn] r10240 - pypy/dist/goal Message-ID: <20050401181224.76A7127C2F@code1.codespeak.net> Author: pedronis Date: Fri Apr 1 20:12:24 2005 New Revision: 10240 Removed: pypy/dist/goal/translate_pypy0.py pypy/dist/goal/translate_pypy1.py Log: removed redundant translate_pypy*.py Deleted: /pypy/dist/goal/translate_pypy0.py ============================================================================== --- /pypy/dist/goal/translate_pypy0.py Fri Apr 1 20:12:24 2005 +++ (empty file) @@ -1,282 +0,0 @@ -# -# -# -""" -Command-line options for translate_pypy: - - port Listen on the given port number for connexions - (see pypy/translator/tool/pygame/graphclient.py) - -text Don't start the Pygame viewer - -no-a Don't infer annotations, just translate everything - -no-c Don't generate the C code - -c Generate the C code, but don't compile it - -o Generate and compile the C code, but don't run it - -no-mark-some-objects - Do not mark functions that have SomeObject in their signature. - -tcc Equivalent to the envvar PYPY_CC='tcc -shared -o "%s.so" "%s.c"' - -- http://fabrice.bellard.free.fr/tcc/ - -no-d Disable recording of debugging information -""" -import autopath, sys, threading, pdb, os -import buildcache2 -from pypy.objspace.std.objspace import StdObjSpace, W_Object -from pypy.objspace.std.intobject import W_IntObject -from pypy.translator.translator import Translator -from pypy.annotation import model as annmodel -from pypy.tool.cache import Cache -from pypy.annotation.model import SomeObject -from pypy.tool.udir import udir - -from pypy.objspace import dummy -from pypy.interpreter.pycode import PyCode - -# XXX this tries to make compiling faster -from pypy.translator.tool import buildpyxmodule -buildpyxmodule.enable_fast_compilation() - -# __________ Entry point __________ - -def entry_point(code, w_loc): - code2 = PyCode(space) - code2 = code2._from_code(code) - code2.exec_code(space, space.wrap({}), w_loc) - -# __________ Main __________ - -def analyse(entry_point=entry_point): - global t, space - space = dummy.DummyObjSpace() - # call cache filling code - #buildcache2.buildcache(space) - # further call the entry_point once to trigger building remaining - # caches (as far as analyzing the entry_point is concerned) - - from pypy.interpreter import pycode - - pycode.setup_frame_classes() - - from pypy.interpreter import pyopcode - - # cheat - space._gatewaycache.content[pyopcode.app] = space.newdict([]) - - t = Translator(entry_point, verbose=True, simplifying=True) - if listen_port: - run_async_server() - if not options['-no-a']: - a = t.annotate([object, dummy.W_Obj]) - a.simplify() - t.frozen = True # cannot freeze if we don't have annotations - if not options['-no-mark-some-objects']: - options['-no-mark-some-objects'] = True # Do not do this again - find_someobjects(t) - - -def find_someobjects(translator, quiet=False): - """Find all functions in that have SomeObject in their signature.""" - annotator = translator.annotator - if not annotator: - return # no annotations available - - translator.highlight_functions = {} - - def is_someobject(var): - try: - return annotator.binding(var).__class__ == SomeObject - except KeyError: - return False - - def short_binding(var): - try: - binding = annotator.binding(var) - except KeyError: - return "?" - if binding.is_constant(): - return 'const %s' % binding.__class__.__name__ - else: - return binding.__class__.__name__ - - header = True - items = [(graph.name, func, graph) - for func, graph in translator.flowgraphs.items()] - items.sort() - num = someobjnum = 0 - for graphname, func, graph in items: - unknown_input_args = len(filter(is_someobject, graph.getargs())) - unknown_return_value = is_someobject(graph.getreturnvar()) - if unknown_input_args or unknown_return_value: - someobjnum += 1 - translator.highlight_functions[func] = True - if not quiet: - if header: - header = False - print "=" * 70 - print "Functions that have SomeObject in their signature" - print "=" * 70 - print ("%(name)s(%(args)s) -> %(result)s\n" - "%(filename)s:%(lineno)s\n" - % {'name': graph.name, - 'filename': func.func_globals.get('__name__', '?'), - 'lineno': func.func_code.co_firstlineno, - 'args': ', '.join(map(short_binding, - graph.getargs())), - 'result': short_binding(graph.getreturnvar())}) - num += 1 - if not quiet: - print "=" * 70 - percent = int(num and (100.0*someobjnum / num) or 0) - print "somobjectness: %2d percent" % (percent) - print "(%d out of %d functions get or return SomeObjects" % ( - someobjnum, num) - print "=" * 70 - - -def update_usession_dir(stabledir = udir.dirpath('usession')): - from py import path - try: - if stabledir.check(dir=1): - for x in udir.visit(path.checker(file=1)): - target = stabledir.join(x.relto(udir)) - if target.check(): - target.remove() - else: - target.dirpath().ensure(dir=1) - try: - target.mklinkto(x) - except path.Invalid: - x.copy(target) - except path.Invalid: - print "ignored: couldn't link or copy to %s" % stabledir - -def run_in_thread(fn, args, cleanup=None, cleanup_args=()): - def _run_in_thread(): - fn(*args) - if cleanup is not None: - cleanup(*cleanup_args) - return threading.Thread(target=_run_in_thread, args=()) - -def run_async_server(): - from pypy.translator.tool import graphpage, graphserver - homepage = graphpage.TranslatorPage(t) - graphserver.run_server(homepage, port=listen_port, background=True) - options['-text'] = True - - -if __name__ == '__main__': - - options = {'-text': False, - '-no-c': False, - '-c': False, - '-o': False, - '-no-mark-some-objects': False, - '-no-a': False, - '-tcc': False, - '-no-d': False, - } - listen_port = None - for arg in sys.argv[1:]: - if arg in ('-h', '--help'): - print __doc__.strip() - sys.exit() - try: - listen_port = int(arg) - except ValueError: - assert arg in options, "unknown option %r" % (arg,) - options[arg] = True - if options['-tcc']: - os.environ['PYPY_CC'] = 'tcc -shared -o "%s.so" "%s.c"' - if options['-no-d']: - annmodel.DEBUG = False - - def about(x): - """ interactive debugging helper """ - from pypy.objspace.flow.model import Block, flatten - if isinstance(x, Block): - for func, graph in t.flowgraphs.items(): - if x in flatten(graph): - funcname = func.func_name - cls = getattr(func, 'class_', None) - if cls: - funcname = '%s.%s' % (cls.__name__, funcname) - print '%s is a %s in the graph of %s' % (x, - x.__class__.__name__, funcname) - print 'at %s:%d' % (func.func_globals.get('__name__', '?'), - func.func_code.co_firstlineno) - break - else: - print '%s is a %s at some unknown location' % (x, - x.__class__.__name__) - print 'containing the following operations:' - for op in x.operations: - print op - print '--end--' - return - print "don't know about", x - - def run_server(): - from pypy.translator.tool.graphpage import TranslatorPage - from pypy.translator.tool.pygame.graphclient import get_layout - from pypy.translator.tool.pygame.graphdisplay import GraphDisplay - import pygame - - if not options['-no-mark-some-objects']: - find_someobjects(t, quiet=True) - - display = GraphDisplay(get_layout(TranslatorPage(t))) - async_quit = display.async_quit - return display.run, async_quit, pygame.quit - - def debug(got_error): - if got_error: - import traceback - exc, val, tb = sys.exc_info() - print >> sys.stderr - traceback.print_exception(exc, val, tb) - print >> sys.stderr - - block = getattr(val, '__annotator_block', None) - if block: - print '-'*60 - about(block) - print '-'*60 - - print >> sys.stderr - func, args = pdb.post_mortem, (tb,) - else: - print '-'*60 - print 'Done.' - print - func, args = pdb.set_trace, () - if options['-text']: - func(*args) - else: - start, stop, cleanup = run_server() - debugger = run_in_thread(func, args, stop) - debugger.start() - start() - debugger.join() - cleanup() - - try: - analyse() - print '-'*60 - if options['-no-c']: - print 'Not generating C code.' - elif options['-c']: - print 'Generating C code without compiling it...' - filename = t.ccompile(really_compile=False) - update_usession_dir() - print 'Written %s.' % (filename,) - else: - print 'Generating and compiling C code...' - c_entry_point = t.ccompile() - update_usession_dir() - if not options['-o']: - print 'Running!' - w_result = c_entry_point(compile("a+b","","eval"),dummy.W_Obj()) - print w_result - except: - debug(True) - else: - debug(False) - Deleted: /pypy/dist/goal/translate_pypy1.py ============================================================================== --- /pypy/dist/goal/translate_pypy1.py Fri Apr 1 20:12:24 2005 +++ (empty file) @@ -1,287 +0,0 @@ -# -# -# -""" -Command-line options for translate_pypy: - - port Listen on the given port number for connexions - (see pypy/translator/tool/pygame/graphclient.py) - -text Don't start the Pygame viewer - -no-a Don't infer annotations, just translate everything - -no-c Don't generate the C code - -c Generate the C code, but don't compile it - -o Generate and compile the C code, but don't run it - -no-mark-some-objects - Do not mark functions that have SomeObject in their signature. - -tcc Equivalent to the envvar PYPY_CC='tcc -shared -o "%s.so" "%s.c"' - -- http://fabrice.bellard.free.fr/tcc/ - -no-d Disable recording of debugging information -""" -import autopath, sys, threading, pdb, os -import buildcache2 -from pypy.objspace.std.objspace import StdObjSpace, W_Object -from pypy.objspace.std.intobject import W_IntObject -from pypy.objspace.std import stdtypedef -from pypy.translator.translator import Translator -from pypy.annotation import model as annmodel -from pypy.tool.cache import Cache -from pypy.annotation.model import SomeObject -from pypy.tool.udir import udir - -# XXX this tries to make compiling faster -from pypy.translator.tool import buildpyxmodule -buildpyxmodule.enable_fast_compilation() - -# __________ Entry point __________ - -def entry_point(): - w_a = W_IntObject(space, -6) - w_b = W_IntObject(space, -7) - return mmentrypoint(space, w_a, w_b) - -# __________ Main __________ - -def analyse(entry_point=entry_point): - global t, space, mmentrypoint - # disable translation of the whole of classobjinterp.py - StdObjSpace.setup_old_style_classes = lambda self: None - space = StdObjSpace() - # call cache filling code - buildcache2.buildcache(space) - - # ------------------------------------------------------------ - name = 'mul' - mm = space.MM.mul - exprargs, expr, miniglobals, fallback = ( - mm.install_not_sliced(space.model.typeorder, baked_perform_call=False)) - func = stdtypedef.make_perform_trampoline('__mm_'+name, - exprargs, expr, miniglobals, - mm) - mmentrypoint = func - # ------------------------------------------------------------ - - # further call the entry_point once to trigger building remaining - # caches (as far as analyzing the entry_point is concerned) - entry_point() - t = Translator(entry_point, verbose=True, simplifying=True) - if listen_port: - run_async_server() - if not options['-no-a']: - a = t.annotate([]) - a.simplify() - t.frozen = True # cannot freeze if we don't have annotations - if not options['-no-mark-some-objects']: - options['-no-mark-some-objects'] = True # Do not do this again - find_someobjects(t) - - -def find_someobjects(translator, quiet=False): - """Find all functions in that have SomeObject in their signature.""" - annotator = translator.annotator - if not annotator: - return # no annotations available - - translator.highlight_functions = {} - - def is_someobject(var): - try: - return annotator.binding(var).__class__ == SomeObject - except KeyError: - return False - - def short_binding(var): - try: - binding = annotator.binding(var) - except KeyError: - return "?" - if binding.is_constant(): - return 'const %s' % binding.__class__.__name__ - else: - return binding.__class__.__name__ - - header = True - items = [(graph.name, func, graph) - for func, graph in translator.flowgraphs.items()] - items.sort() - num = someobjnum = 0 - for graphname, func, graph in items: - unknown_input_args = len(filter(is_someobject, graph.getargs())) - unknown_return_value = is_someobject(graph.getreturnvar()) - if unknown_input_args or unknown_return_value: - someobjnum += 1 - translator.highlight_functions[func] = True - if not quiet: - if header: - header = False - print "=" * 70 - print "Functions that have SomeObject in their signature" - print "=" * 70 - print ("%(name)s(%(args)s) -> %(result)s\n" - "%(filename)s:%(lineno)s\n" - % {'name': graph.name, - 'filename': func.func_globals.get('__name__', '?'), - 'lineno': func.func_code.co_firstlineno, - 'args': ', '.join(map(short_binding, - graph.getargs())), - 'result': short_binding(graph.getreturnvar())}) - num += 1 - if not quiet: - print "=" * 70 - percent = int(num and (100.0*someobjnum / num) or 0) - print "somobjectness: %2d percent" % (percent) - print "(%d out of %d functions get or return SomeObjects" % ( - someobjnum, num) - print "=" * 70 - - -def update_usession_dir(stabledir = udir.dirpath('usession')): - from py import path - try: - if stabledir.check(dir=1): - for x in udir.visit(path.checker(file=1)): - target = stabledir.join(x.relto(udir)) - if target.check(): - target.remove() - else: - target.dirpath().ensure(dir=1) - try: - target.mklinkto(x) - except path.Invalid: - x.copy(target) - except path.Invalid: - print "ignored: couldn't link or copy to %s" % stabledir - -def run_in_thread(fn, args, cleanup=None, cleanup_args=()): - def _run_in_thread(): - fn(*args) - if cleanup is not None: - cleanup(*cleanup_args) - return threading.Thread(target=_run_in_thread, args=()) - -def run_async_server(): - from pypy.translator.tool import graphpage, graphserver - homepage = graphpage.TranslatorPage(t) - graphserver.run_server(homepage, port=listen_port, background=True) - options['-text'] = True - - -if __name__ == '__main__': - - options = {'-text': False, - '-no-c': False, - '-c': False, - '-o': False, - '-no-mark-some-objects': False, - '-no-a': False, - '-tcc': False, - '-no-d': False, - } - listen_port = None - for arg in sys.argv[1:]: - if arg in ('-h', '--help'): - print __doc__.strip() - sys.exit() - try: - listen_port = int(arg) - except ValueError: - assert arg in options, "unknown option %r" % (arg,) - options[arg] = True - if options['-tcc']: - os.environ['PYPY_CC'] = 'tcc -shared -o "%s.so" "%s.c"' - if options['-no-d']: - annmodel.DEBUG = False - - def about(x): - """ interactive debugging helper """ - from pypy.objspace.flow.model import Block, flatten - if isinstance(x, Block): - for func, graph in t.flowgraphs.items(): - if x in flatten(graph): - funcname = func.func_name - cls = getattr(func, 'class_', None) - if cls: - funcname = '%s.%s' % (cls.__name__, funcname) - print '%s is a %s in the graph of %s' % (x, - x.__class__.__name__, funcname) - print 'at %s:%d' % (func.func_globals.get('__name__', '?'), - func.func_code.co_firstlineno) - break - else: - print '%s is a %s at some unknown location' % (x, - x.__class__.__name__) - print 'containing the following operations:' - for op in x.operations: - print op - print '--end--' - return - print "don't know about", x - - def run_server(): - from pypy.translator.tool.graphpage import TranslatorPage - from pypy.translator.tool.pygame.graphclient import get_layout - from pypy.translator.tool.pygame.graphdisplay import GraphDisplay - import pygame - - if not options['-no-mark-some-objects']: - find_someobjects(t, quiet=True) - - display = GraphDisplay(get_layout(TranslatorPage(t))) - async_quit = display.async_quit - return display.run, async_quit, pygame.quit - - def debug(got_error): - if got_error: - import traceback - exc, val, tb = sys.exc_info() - print >> sys.stderr - traceback.print_exception(exc, val, tb) - print >> sys.stderr - - block = getattr(val, '__annotator_block', None) - if block: - print '-'*60 - about(block) - print '-'*60 - - print >> sys.stderr - func, args = pdb.post_mortem, (tb,) - else: - print '-'*60 - print 'Done.' - print - func, args = pdb.set_trace, () - if options['-text']: - func(*args) - else: - start, stop, cleanup = run_server() - debugger = run_in_thread(func, args, stop) - debugger.start() - start() - debugger.join() - cleanup() - - try: - analyse() - print '-'*60 - if options['-no-c']: - print 'Not generating C code.' - elif options['-c']: - print 'Generating C code without compiling it...' - filename = t.ccompile(really_compile=False) - update_usession_dir() - print 'Written %s.' % (filename,) - else: - print 'Generating and compiling C code...' - c_entry_point = t.ccompile() - update_usession_dir() - if not options['-o']: - print 'Running!' - w_result = c_entry_point() - print w_result - print w_result.intval - assert w_result.intval == 42 - except: - debug(True) - else: - debug(False) - From pedronis at codespeak.net Fri Apr 1 21:03:54 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 1 Apr 2005 21:03:54 +0200 (MEST) Subject: [pypy-svn] r10241 - in pypy/dist: goal pypy/translator/tool/pygame Message-ID: <20050401190354.C334A27C33@code1.codespeak.net> Author: pedronis Date: Fri Apr 1 21:03:54 2005 New Revision: 10241 Modified: pypy/dist/goal/translate_pypy.py pypy/dist/pypy/translator/tool/pygame/graphdisplay.py Log: start of infrastructure to support commands at the translate_pypy debug prompt to pick graphs to show Modified: pypy/dist/goal/translate_pypy.py ============================================================================== --- pypy/dist/goal/translate_pypy.py (original) +++ pypy/dist/goal/translate_pypy.py Fri Apr 1 21:03:54 2005 @@ -216,9 +216,51 @@ display = GraphDisplay(get_layout(TranslatorPage(t))) async_quit = display.async_quit - return display.run, async_quit, pygame.quit + def show(page): + display.async_cmd(layout=get_layout(page)) + return display.run, show, async_quit, pygame.quit + + class PdbPlusShow(pdb.Pdb): + + def post_mortem(self, t): + self.reset() + while t.tb_next is not None: + t = t.tb_next + self.interaction(t.tb_frame, t) + + show = None + + def _show(self, page): + if not self.show: + print "*** No display" + return + self.show(page) + + def do_show(self, arg): + if '.' in arg: + name = '' + obj = None + for comp in arg.split('.'): + name += comp + obj = getattr(obj, comp, None) + if obj is None: + try: + obj = __import__(name, {}, {}, ['*']) + except ImportError: + print "*** Not found: %s" % arg + return + name += '.' + if hasattr(obj, 'im_func'): + obj = obj.im_func + if obj in t.flowgraphs: + from pypy.translator.tool.graphpage import FlowGraphPage + self._show(FlowGraphPage(t, [obj])) + else: + print "*** Nothing to do" def debug(got_error): + pdb_plus_show = PdbPlusShow() + if got_error: import traceback exc, val, tb = sys.exc_info() @@ -233,16 +275,17 @@ print '-'*60 print >> sys.stderr - func, args = pdb.post_mortem, (tb,) + func, args = pdb_plus_show.post_mortem, (tb,) else: print '-'*60 print 'Done.' print - func, args = pdb.set_trace, () + func, args = pdb_plus_show.set_trace, () if options['-text']: func(*args) else: - start, stop, cleanup = run_server() + start, show, stop, cleanup = run_server() + pdb_plus_show.show = show debugger = run_in_thread(func, args, stop) debugger.start() start() Modified: pypy/dist/pypy/translator/tool/pygame/graphdisplay.py ============================================================================== --- pypy/dist/pypy/translator/tool/pygame/graphdisplay.py (original) +++ pypy/dist/pypy/translator/tool/pygame/graphdisplay.py Fri Apr 1 21:03:54 2005 @@ -637,6 +637,12 @@ def async_quit(self): pygame.event.post(pygame.event.Event(QUIT)) + + def async_cmd(self, **kwds): + pygame.event.post(pygame.event.Event(USEREVENT, **kwds)) + + def process_UserEvent(self, event): + self.setlayout(event.layout) def quit(self): raise StopIteration From pedronis at codespeak.net Fri Apr 1 21:51:32 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 1 Apr 2005 21:51:32 +0200 (MEST) Subject: [pypy-svn] r10242 - pypy/dist/pypy/interpreter Message-ID: <20050401195132.2AA2427C36@code1.codespeak.net> Author: pedronis Date: Fri Apr 1 21:51:31 2005 New Revision: 10242 Modified: pypy/dist/pypy/interpreter/baseobjspace.py Log: NOT_RPYTHON Modified: pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/dist/pypy/interpreter/baseobjspace.py Fri Apr 1 21:51:31 2005 @@ -56,7 +56,7 @@ return self.__class__.__name__ def setbuiltinmodule(self, name, importname=None): - """ load a lazy pypy/module and put it into sys.modules""" + """NOT_RPYTHON. load a lazy pypy/module and put it into sys.modules""" if importname is None: importname = name Module = __import__("pypy.module.%s" % importname, From pedronis at codespeak.net Sat Apr 2 03:40:00 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 2 Apr 2005 03:40:00 +0200 (MEST) Subject: [pypy-svn] r10244 - pypy/dist/pypy/translator/tool Message-ID: <20050402014000.5501A27C45@code1.codespeak.net> Author: pedronis Date: Sat Apr 2 03:40:00 2005 New Revision: 10244 Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py Log: with gcc, don't emit warnings for unused labels and variables Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/dist/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/dist/pypy/translator/tool/buildpyxmodule.py Sat Apr 2 03:40:00 2005 @@ -81,10 +81,12 @@ 'name': "testmodule", 'ext_modules': [ Extension(modname, [str(cfile)], - include_dirs=include_dirs) + include_dirs=include_dirs, + extra_compile_args=["-Wno-unused-label", + "-Wno-unused-variable"]) ], 'script_name': 'setup.py', - 'script_args': ['-q', 'build_ext', '--inplace'], + 'script_args': [ '-q', 'build_ext', '--inplace'], } dist = Distribution(attrs) if not dist.parse_command_line(): From pedronis at codespeak.net Sat Apr 2 03:49:10 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 2 Apr 2005 03:49:10 +0200 (MEST) Subject: [pypy-svn] r10245 - pypy/dist/pypy/translator/tool Message-ID: <20050402014910.A462027C45@code1.codespeak.net> Author: pedronis Date: Sat Apr 2 03:49:10 2005 New Revision: 10245 Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py Log: whitespace oops Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/dist/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/dist/pypy/translator/tool/buildpyxmodule.py Sat Apr 2 03:49:10 2005 @@ -86,7 +86,7 @@ "-Wno-unused-variable"]) ], 'script_name': 'setup.py', - 'script_args': [ '-q', 'build_ext', '--inplace'], + 'script_args': ['-q', 'build_ext', '--inplace'], } dist = Distribution(attrs) if not dist.parse_command_line(): From pedronis at codespeak.net Sat Apr 2 05:35:26 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 2 Apr 2005 05:35:26 +0200 (MEST) Subject: [pypy-svn] r10246 - pypy/dist/pypy/translator Message-ID: <20050402033526.1ABF627C4A@code1.codespeak.net> Author: pedronis Date: Sat Apr 2 05:35:25 2005 New Revision: 10246 Modified: pypy/dist/pypy/translator/genc_funcdef.py Log: moved remove_direct_loops so that introduced vars are declared as needed Modified: pypy/dist/pypy/translator/genc_funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc_funcdef.py (original) +++ pypy/dist/pypy/translator/genc_funcdef.py Sat Apr 2 05:35:25 2005 @@ -45,6 +45,8 @@ self.globalobject_name = None # gfunc_xxx self.localscope = namespace.localScope() self.graph = graph = genc.translator.getflowgraph(func) + remove_direct_loops(graph) # this can introduce new vars! we need to declare them + checkgraph(graph) graph_args = graph.getargs() # collect all the local variables @@ -272,8 +274,6 @@ def cfunction_body(self): graph = self.graph - remove_direct_loops(graph) - checkgraph(graph) blocknum = {} allblocks = [] From arigo at codespeak.net Sat Apr 2 16:44:36 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 2 Apr 2005 16:44:36 +0200 (MEST) Subject: [pypy-svn] r10247 - in pypy/dist/pypy/translator: . tool Message-ID: <20050402144436.9D04027C56@code1.codespeak.net> Author: arigo Date: Sat Apr 2 16:44:36 2005 New Revision: 10247 Added: pypy/dist/pypy/translator/unsimplify.py (contents, props changed) Modified: pypy/dist/pypy/translator/genc_funcdef.py pypy/dist/pypy/translator/geninterplevel.py pypy/dist/pypy/translator/simplify.py pypy/dist/pypy/translator/tool/graphpage.py pypy/dist/pypy/translator/typer.py Log: A stupid bug prevented blocks with no operation from having their input/output variables typed. Aaargh. Also in this check-in: * _temporarily_ moved remove_direct_loops() into "unsimplify.py", with a copyvar() method taking a translator argument. * type conversion of variables across links is delicate. It might be more correct now. * display the results of typer.py in the pygame graphs. Modified: pypy/dist/pypy/translator/genc_funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc_funcdef.py (original) +++ pypy/dist/pypy/translator/genc_funcdef.py Sat Apr 2 16:44:36 2005 @@ -3,7 +3,7 @@ from pypy.objspace.flow.model import traverse, uniqueitems, checkgraph from pypy.objspace.flow.model import Block, Link from pypy.objspace.flow.model import last_exception, last_exc_value -from pypy.translator.simplify import remove_direct_loops +from pypy.translator.unsimplify import remove_direct_loops from pypy.interpreter.pycode import CO_VARARGS from types import FunctionType @@ -44,8 +44,11 @@ self.wrapper_name = None # pyfn_xxx self.globalobject_name = None # gfunc_xxx self.localscope = namespace.localScope() + + # get the flow graph, and ensure that there is no direct loop in it + # as we cannot generate valid code for this case. self.graph = graph = genc.translator.getflowgraph(func) - remove_direct_loops(graph) # this can introduce new vars! we need to declare them + remove_direct_loops(genc.translator, graph) checkgraph(graph) graph_args = graph.getargs() Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Sat Apr 2 16:44:36 2005 @@ -23,7 +23,6 @@ from pypy.objspace.flow.model import FunctionGraph, Block, Link from pypy.objspace.flow.model import last_exception, last_exc_value from pypy.objspace.flow.model import traverse, uniqueitems, checkgraph -from pypy.translator.simplify import remove_direct_loops from pypy.interpreter.pycode import CO_VARARGS, CO_VARKEYWORDS from pypy.annotation import model as annmodel from types import FunctionType, CodeType, ModuleType Modified: pypy/dist/pypy/translator/simplify.py ============================================================================== --- pypy/dist/pypy/translator/simplify.py (original) +++ pypy/dist/pypy/translator/simplify.py Sat Apr 2 16:44:36 2005 @@ -3,8 +3,6 @@ 'Syntactic-ish' simplifications on a flow graph. simplify_graph() applies all simplifications defined in this file. -See also remove_direct_loops(), which is a 'de-simplification' useful -for code generators. """ from pypy.objspace.flow.model import * @@ -103,21 +101,6 @@ link.prevblock.exitswitch = None traverse(visit, graph) -def remove_direct_loops(graph): - """This is useful for code generators: it ensures that no link has - common input and output variables, which could occur if a block's exit - points back directly to the same block. It allows code generators to be - simpler because they don't have to worry about overwriting input - variables when generating a sequence of assignments.""" - def visit(link): - if isinstance(link, Link) and link.prevblock is link.target: - # insert an empty block with fresh variables. - intermediate = [Variable() for a in link.args] - b = Block(intermediate) - b.closeblock(Link(intermediate, link.target)) - link.target = b - traverse(visit, graph) - def transform_dead_op_vars(graph): """Remove dead operations and variables that are passed over a link but not used in the target block. Input is a graph.""" Modified: pypy/dist/pypy/translator/tool/graphpage.py ============================================================================== --- pypy/dist/pypy/translator/tool/graphpage.py (original) +++ pypy/dist/pypy/translator/tool/graphpage.py Sat Apr 2 16:44:36 2005 @@ -1,5 +1,5 @@ import inspect -from pypy.objspace.flow.model import traverse +from pypy.objspace.flow.model import traverse, Block from pypy.translator.tool.make_dot import DotGen, make_dot, make_dot_graphs from pypy.interpreter.pycode import CO_VARARGS, CO_VARKEYWORDS from pypy.annotation import model @@ -124,6 +124,16 @@ self.annotator.binding_cause_history.get(var, [])) self.binding_history[var.name] = zip(history, cause_history) + def visit(node): + if isinstance(node, Block): + for var in node.getvariables(): + if hasattr(var, 'type_cls'): + info = self.links.get(var.name, var.name) + info = '(%s) %s' % (var.type_cls.__name__, info) + self.links[var.name] = info + for graph in graphs: + traverse(visit, graph) + def followlink(self, varname): # clicking on a variable name shows its binding history cur_value = self.current_value[varname] Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Sat Apr 2 16:44:36 2005 @@ -1,6 +1,6 @@ import autopath from pypy.objspace.flow.model import SpaceOperation, Variable, Constant -from pypy.objspace.flow.model import Block, Link +from pypy.objspace.flow.model import Block, Link, uniqueitems class TypeMatch: @@ -8,6 +8,9 @@ self.s_type = s_type self.type_cls = type_cls +class TyperError: + pass + class Specializer: specializationdict = {} @@ -28,12 +31,13 @@ def specialize(self): for block in self.annotator.annotated: - if block.operations: + if block.operations != (): self.specialize_block(block) def settype(self, a, type_cls): """Set the type_cls of a Variable or Constant.""" - assert not hasattr(a, 'type_cls') + if hasattr(a, 'type_cls') and a.type_cls != type_cls: + raise TyperError, "inconsitent type for %r" % (a,) a.type_cls = type_cls def setbesttype(self, a): @@ -56,7 +60,12 @@ """Get the operation(s) needed to convert 'v' to the given type.""" ops = [] if isinstance(v, Constant): - self.settype(v, type_cls) # mark the concrete type of the Constant + try: + # mark the concrete type of the Constant + self.settype(v, type_cls) + except TyperError: + v = Constant(v.value) # need a copy of the Constant + self.settype(v, type_cls) elif v.type_cls is not type_cls: # XXX do we need better conversion paths? @@ -123,6 +132,7 @@ # a2 in the inserted block before conversion # a3 in the inserted block after conversion # a4 in the original target block's inputargs + # warning, link.args may contain the same Variable multiple times! convargs = [] convops = [] for i in range(len(link.args)): @@ -135,9 +145,11 @@ # if there are conversion operations, they are inserted into # a new block along this link if convops: + vars = uniqueitems([a1 for a1 in link.args + if isinstance(a1, Variable)]) newblock = Block([]) mapping = {} - for a1 in link.args: + for a1 in vars: a2 = Variable() a2.type_cls = a1.type_cls newblock.inputargs.append(a2) @@ -146,6 +158,9 @@ newblock.closeblock(Link(convargs, link.target)) newblock.renamevariables(mapping) link.target = newblock + link.args[:] = vars + else: + link.args[:] = convargs # some Constants may have changed def getspecializedop(self, op, bindings): specializations = self.specializationdict.get(op.opname, ()) Added: pypy/dist/pypy/translator/unsimplify.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/unsimplify.py Sat Apr 2 16:44:36 2005 @@ -0,0 +1,27 @@ +from pypy.objspace.flow.model import * + +def copyvar(v): + """Make a copy of the Variable v, preserving annotations and type_cls.""" + assert isinstance(v, Variable) + newvar = Variable(v) + annotator = translator.annotator + if annotator is not None and v in annotator.bindings: + annotator.bindings[newvar] = annotator.bindings[v] + if hasattr(v, 'type_cls'): + newvar.type_cls = v.type_cls + return newvar + +def remove_direct_loops(translator, graph): + """This is useful for code generators: it ensures that no link has + common input and output variables, which could occur if a block's exit + points back directly to the same block. It allows code generators to be + simpler because they don't have to worry about overwriting input + variables when generating a sequence of assignments.""" + def visit(link): + if isinstance(link, Link) and link.prevblock is link.target: + # insert an empty block with fresh variables. + intermediate = [copyvar(a) for a in link.args] + b = Block(intermediate) + b.closeblock(Link(intermediate, link.target)) + link.target = b + traverse(visit, graph) From arigo at codespeak.net Sat Apr 2 16:48:58 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 2 Apr 2005 16:48:58 +0200 (MEST) Subject: [pypy-svn] r10248 - pypy/dist/pypy/translator/java Message-ID: <20050402144858.D412C27C58@code1.codespeak.net> Author: arigo Date: Sat Apr 2 16:48:58 2005 New Revision: 10248 Modified: pypy/dist/pypy/translator/java/genjava.py Log: fix "import remove_direct_loops". Modified: pypy/dist/pypy/translator/java/genjava.py ============================================================================== --- pypy/dist/pypy/translator/java/genjava.py (original) +++ pypy/dist/pypy/translator/java/genjava.py Sat Apr 2 16:48:58 2005 @@ -8,7 +8,7 @@ from pypy.objspace.flow import FlowObjSpace from pypy.objspace.flow.model import FunctionGraph, Block, Link, Variable, Constant from pypy.objspace.flow.model import last_exception, last_exc_value, checkgraph -from pypy.translator.simplify import remove_direct_loops +from pypy.translator.unsimplify import remove_direct_loops from pypy.interpreter.error import OperationError from types import FunctionType @@ -441,7 +441,7 @@ t = self.translator #t.simplify(func) graph = t.getflowgraph(func) - remove_direct_loops(graph) + remove_direct_loops(t, graph) checkgraph(graph) name = self.nameof(func) From arigo at codespeak.net Sat Apr 2 17:02:22 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 2 Apr 2005 17:02:22 +0200 (MEST) Subject: [pypy-svn] r10249 - in pypy/dist/pypy/translator: . test Message-ID: <20050402150222.060CD27C5A@code1.codespeak.net> Author: arigo Date: Sat Apr 2 17:02:22 2005 New Revision: 10249 Modified: pypy/dist/pypy/translator/test/test_ctrans.py pypy/dist/pypy/translator/unsimplify.py Log: Typo in unsimplify.py. Added a test that exercices this code, and also crashes if remove_direct_loops() is not called at all on the graph. Modified: pypy/dist/pypy/translator/test/test_ctrans.py ============================================================================== --- pypy/dist/pypy/translator/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/test/test_ctrans.py Sat Apr 2 17:02:22 2005 @@ -201,6 +201,19 @@ fn = self.build_cfunc(snippet.one_thing2) assert fn() == 4 + def test_direct_loop(self): + # check that remove_direct_loops() does its job correctly + def direct_loop(n, m): + while 1: + o = n; n = m; m = o + n -= 10 + if n < 0: + return n + fn = self.build_cfunc(direct_loop) + assert fn(117, 114) == -6 + assert fn(117, 124) == -3 + + class TestTypedTestCase: def getcompiled(self, func): Modified: pypy/dist/pypy/translator/unsimplify.py ============================================================================== --- pypy/dist/pypy/translator/unsimplify.py (original) +++ pypy/dist/pypy/translator/unsimplify.py Sat Apr 2 17:02:22 2005 @@ -1,6 +1,6 @@ from pypy.objspace.flow.model import * -def copyvar(v): +def copyvar(translator, v): """Make a copy of the Variable v, preserving annotations and type_cls.""" assert isinstance(v, Variable) newvar = Variable(v) @@ -20,7 +20,7 @@ def visit(link): if isinstance(link, Link) and link.prevblock is link.target: # insert an empty block with fresh variables. - intermediate = [copyvar(a) for a in link.args] + intermediate = [copyvar(translator, a) for a in link.args] b = Block(intermediate) b.closeblock(Link(intermediate, link.target)) link.target = b From arigo at codespeak.net Sat Apr 2 17:07:59 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 2 Apr 2005 17:07:59 +0200 (MEST) Subject: [pypy-svn] r10250 - in pypy/dist/pypy/translator: . test Message-ID: <20050402150759.62C0A27C5C@code1.codespeak.net> Author: arigo Date: Sat Apr 2 17:07:59 2005 New Revision: 10250 Modified: pypy/dist/pypy/translator/genc_funcdef.py pypy/dist/pypy/translator/genc_type.h pypy/dist/pypy/translator/test/test_ctrans.py pypy/dist/pypy/translator/typer.py Log: Minor fixes, and an extension to test_ctrans that compiles and runs the functions using the typer (disabled for now, as some of these still segfault). Modified: pypy/dist/pypy/translator/genc_funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc_funcdef.py (original) +++ pypy/dist/pypy/translator/genc_funcdef.py Sat Apr 2 17:07:59 2005 @@ -226,7 +226,7 @@ print >> f, '\t' + footer print >> f, '\treturn oret;' - if conversions: + if conversions or footer: print >> f, ' type_error:' print >> f, ' return NULL;' Modified: pypy/dist/pypy/translator/genc_type.h ============================================================================== --- pypy/dist/pypy/translator/genc_type.h (original) +++ pypy/dist/pypy/translator/genc_type.h Sat Apr 2 17:07:59 2005 @@ -10,3 +10,6 @@ FAIL(err) #define OP_INT_IS_TRUE(x,r,err) r = (x != 0); + +#define OP_INT_ADD(x,y,r,err) r = x + y; +#define OP_INT_SUB(x,y,r,err) r = x - y; Modified: pypy/dist/pypy/translator/test/test_ctrans.py ============================================================================== --- pypy/dist/pypy/translator/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/test/test_ctrans.py Sat Apr 2 17:07:59 2005 @@ -2,6 +2,7 @@ import py from pypy.tool.udir import udir from pypy.translator.genc import GenC +from pypy.translator.typer import GenCSpecializer from pypy.objspace.flow.model import * from pypy.translator.tool.buildpyxmodule import make_module_from_c from pypy.translator.tool.buildpyxmodule import skip_missing_compiler @@ -214,7 +215,7 @@ assert fn(117, 124) == -3 -class TestTypedTestCase: +class TestAnnotatedTestCase: def getcompiled(self, func): t = Translator(func, simplifying=True) @@ -313,4 +314,21 @@ assert result == list('abc') result = fn(l, 2**64) assert result == list('abc') - + + +class IN_PROGRESS_TestTypedTestCase(TestAnnotatedTestCase): + + def getcompiled(self, func): + t = Translator(func, simplifying=True) + # builds starting-types from func_defs + argstypelist = [] + if func.func_defaults: + for spec in func.func_defaults: + if isinstance(spec, tuple): + spec = spec[0] # use the first type only for the tests + argstypelist.append(spec) + a = t.annotate(argstypelist) + a.simplify() + GenCSpecializer(a).specialize() + t.checkgraphs() + return skip_missing_compiler(t.ccompile) Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Sat Apr 2 17:07:59 2005 @@ -8,7 +8,7 @@ self.s_type = s_type self.type_cls = type_cls -class TyperError: +class TyperError(Exception): pass From arigo at codespeak.net Sat Apr 2 17:15:27 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 2 Apr 2005 17:15:27 +0200 (MEST) Subject: [pypy-svn] r10251 - in pypy/dist/pypy/translator: . test Message-ID: <20050402151527.2377827C5F@code1.codespeak.net> Author: arigo Date: Sat Apr 2 17:15:26 2005 New Revision: 10251 Modified: pypy/dist/pypy/translator/genc_funcdef.py pypy/dist/pypy/translator/test/test_ctrans.py Log: The genc+typer tests work if we disable the op_simple_call() shortcut. This shortcut was a hack anyway: it should be reintroduced as a specialization in typer.py. Modified: pypy/dist/pypy/translator/genc_funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc_funcdef.py (original) +++ pypy/dist/pypy/translator/genc_funcdef.py Sat Apr 2 17:15:26 2005 @@ -443,30 +443,30 @@ args.insert(0, '%d' % len(args)) return 'OP_NEWTUPLE((%s), %s, %s)' % (', '.join(args), r, err) - def fast_simple_call(self, args, r, err): - # try to generate a SIMPLE_CALL using a shortcut: - # a direct call to the ff_xxx() function, using its C signature. - if USE_CALL_TRACE: - return None - target = args[0].args[0] - args = [arg.compute() for arg in args[1:]] - if not isinstance(target, Constant): - return None - if not isinstance(target.value, FunctionType): - return None - funcdef = self.genc.getfuncdef(target.value) - if funcdef is None: - return None - if len(funcdef.graphargs) != len(args) or funcdef.vararg: - return None - return 'if (!(%s=%s(%s))) FAIL(%s);' % ( - r, funcdef.fast_name, ', '.join(args), err) +## def fast_simple_call(self, args, r, err): +## # try to generate a SIMPLE_CALL using a shortcut: +## # a direct call to the ff_xxx() function, using its C signature. +## if USE_CALL_TRACE: +## return None +## target = args[0].args[0] +## args = [arg.compute() for arg in args[1:]] +## if not isinstance(target, Constant): +## return None +## if not isinstance(target.value, FunctionType): +## return None +## funcdef = self.genc.getfuncdef(target.value) +## if funcdef is None: +## return None +## if len(funcdef.graphargs) != len(args) or funcdef.vararg: +## return None +## return 'if (!(%s=%s(%s))) FAIL(%s);' % ( +## r, funcdef.fast_name, ', '.join(args), err) def OP_SIMPLE_CALL(self, args, r, err): - result = self.fast_simple_call(args, r, err) - if result is not None: - return result - # fall-back +## result = self.fast_simple_call(args, r, err) +## if result is not None: +## return result +## # fall-back args = [arg.compute() for arg in args] args.append('NULL') return 'OP_SIMPLE_CALL((%s), %s, %s)' % (', '.join(args), r, err) Modified: pypy/dist/pypy/translator/test/test_ctrans.py ============================================================================== --- pypy/dist/pypy/translator/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/test/test_ctrans.py Sat Apr 2 17:15:26 2005 @@ -1,5 +1,5 @@ import autopath -import py +import py, sys from pypy.tool.udir import udir from pypy.translator.genc import GenC from pypy.translator.typer import GenCSpecializer @@ -306,7 +306,7 @@ assert result == ([3, 'c'], [9], [11, 'h']) def test_slice_long(self): - def slice_long(l=list, n=int): + def slice_long(l=list, n=long): return l[:n] fn = self.getcompiled(slice_long) l = list('abc') @@ -316,7 +316,7 @@ assert result == list('abc') -class IN_PROGRESS_TestTypedTestCase(TestAnnotatedTestCase): +class TestTypedTestCase(TestAnnotatedTestCase): def getcompiled(self, func): t = Translator(func, simplifying=True) @@ -332,3 +332,7 @@ GenCSpecializer(a).specialize() t.checkgraphs() return skip_missing_compiler(t.ccompile) + + def test_int_overflow(self): + fn = self.getcompiled(snippet.simple_func) + raises(OverflowError, fn, sys.maxint+1) From arigo at codespeak.net Sat Apr 2 17:57:38 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 2 Apr 2005 17:57:38 +0200 (MEST) Subject: [pypy-svn] r10252 - in pypy/dist/pypy/translator: . genc genc/test test Message-ID: <20050402155738.4FC0227C62@code1.codespeak.net> Author: arigo Date: Sat Apr 2 17:57:37 2005 New Revision: 10252 Added: pypy/dist/pypy/translator/genc/ (props changed) pypy/dist/pypy/translator/genc/__init__.py pypy/dist/pypy/translator/genc/autopath.py - copied unchanged from r10250, pypy/dist/pypy/translator/autopath.py pypy/dist/pypy/translator/genc/ctyper.py pypy/dist/pypy/translator/genc/funcdef.py - copied, changed from r10251, pypy/dist/pypy/translator/genc_funcdef.py pypy/dist/pypy/translator/genc/g_include.h - copied, changed from r10250, pypy/dist/pypy/translator/genc.h pypy/dist/pypy/translator/genc/g_int.h - copied, changed from r10250, pypy/dist/pypy/translator/genc_type.h pypy/dist/pypy/translator/genc/g_module.h - copied, changed from r10250, pypy/dist/pypy/translator/genc.h pypy/dist/pypy/translator/genc/g_operation.h - copied, changed from r10250, pypy/dist/pypy/translator/genc.h pypy/dist/pypy/translator/genc/g_support.h - copied, changed from r10250, pypy/dist/pypy/translator/genc.h pypy/dist/pypy/translator/genc/g_trace.h - copied, changed from r10250, pypy/dist/pypy/translator/genc.h pypy/dist/pypy/translator/genc/genc.py - copied, changed from r10250, pypy/dist/pypy/translator/genc.py pypy/dist/pypy/translator/genc/t_int.py - copied unchanged from r10250, pypy/dist/pypy/translator/genc_type.py pypy/dist/pypy/translator/genc/t_pyobj.py - copied unchanged from r10250, pypy/dist/pypy/translator/genc_pyobj.py pypy/dist/pypy/translator/genc/test/ (props changed) pypy/dist/pypy/translator/genc/test/__init__.py (contents, props changed) pypy/dist/pypy/translator/genc/test/autopath.py - copied unchanged from r10250, pypy/dist/pypy/translator/test/autopath.py pypy/dist/pypy/translator/genc/test/test_ctrans.py - copied, changed from r10251, pypy/dist/pypy/translator/test/test_ctrans.py Removed: pypy/dist/pypy/translator/genc.h pypy/dist/pypy/translator/genc.py pypy/dist/pypy/translator/genc_funcdef.py pypy/dist/pypy/translator/genc_pyobj.py pypy/dist/pypy/translator/genc_type.h pypy/dist/pypy/translator/genc_type.py pypy/dist/pypy/translator/test/test_ctrans.py Modified: pypy/dist/pypy/translator/translator.py pypy/dist/pypy/translator/typer.py Log: Moved all the pieces specific to genc into a single subdirectory genc/. Deleted: /pypy/dist/pypy/translator/genc.h ============================================================================== --- /pypy/dist/pypy/translator/genc.h Sat Apr 2 17:57:37 2005 +++ (empty file) @@ -1,873 +0,0 @@ - -/************************************************************/ -/*** Generic C header section ***/ - -#include "Python.h" -#include "compile.h" -#include "frameobject.h" -#include "structmember.h" -#include "traceback.h" -#include "marshal.h" -#include "eval.h" - -#if !defined(MIN) -#define MIN(a,b) (((a)<(b))?(a):(b)) -#endif /* MIN */ - -#include "genc_type.h" - -static PyObject *this_module_globals; - -/* Set genc_funcdef.USE_CALL_TRACE if you want call trace frames to be built */ - -#if 0 -#define OBNOXIOUS_PRINT_STATEMENTS -#endif - -#define op_bool(r,err,what) { \ - int _retval = what; \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyBool_FromLong(_retval); \ - } - -#define op_richcmp(x,y,r,err,dir) \ - if (!(r=PyObject_RichCompare(x,y,dir))) FAIL(err) -#define OP_LT(x,y,r,err) op_richcmp(x,y,r,err, Py_LT) -#define OP_LE(x,y,r,err) op_richcmp(x,y,r,err, Py_LE) -#define OP_EQ(x,y,r,err) op_richcmp(x,y,r,err, Py_EQ) -#define OP_NE(x,y,r,err) op_richcmp(x,y,r,err, Py_NE) -#define OP_GT(x,y,r,err) op_richcmp(x,y,r,err, Py_GT) -#define OP_GE(x,y,r,err) op_richcmp(x,y,r,err, Py_GE) - -#define OP_IS_(x,y,r,err) op_bool(r,err,(x == y)) - -#define OP_IS_TRUE(x,r,err) op_bool(r,err,PyObject_IsTrue(x)) - -#define OP_LEN(x,r,err) { \ - int _retval = PyObject_Size(x); \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyInt_FromLong(_retval); \ - } -#define OP_NEG(x,r,err) if (!(r=PyNumber_Negative(x))) FAIL(err) -#define OP_POS(x,r,err) if (!(r=PyNumber_Positive(x))) FAIL(err) -#define OP_INVERT(x,r,err) if (!(r=PyNumber_Invert(x))) FAIL(err) - -#define OP_ADD(x,y,r,err) if (!(r=PyNumber_Add(x,y))) FAIL(err) -#define OP_SUB(x,y,r,err) if (!(r=PyNumber_Subtract(x,y))) FAIL(err) -#define OP_MUL(x,y,r,err) if (!(r=PyNumber_Multiply(x,y))) FAIL(err) -#define OP_TRUEDIV(x,y,r,err) if (!(r=PyNumber_TrueDivide(x,y))) FAIL(err) -#define OP_FLOORDIV(x,y,r,err) if (!(r=PyNumber_FloorDivide(x,y)))FAIL(err) -#define OP_DIV(x,y,r,err) if (!(r=PyNumber_Divide(x,y))) FAIL(err) -#define OP_MOD(x,y,r,err) if (!(r=PyNumber_Remainder(x,y))) FAIL(err) -#define OP_POW(x,y,z,r,err) if (!(r=PyNumber_Power(x,y,z))) FAIL(err) -#define OP_LSHIFT(x,y,r,err) if (!(r=PyNumber_Lshift(x,y))) FAIL(err) -#define OP_RSHIFT(x,y,r,err) if (!(r=PyNumber_Rshift(x,y))) FAIL(err) -#define OP_AND_(x,y,r,err) if (!(r=PyNumber_And(x,y))) FAIL(err) -#define OP_OR_(x,y,r,err) if (!(r=PyNumber_Or(x,y))) FAIL(err) -#define OP_XOR(x,y,r,err) if (!(r=PyNumber_Xor(x,y))) FAIL(err) - -#define OP_INPLACE_ADD(x,y,r,err) if (!(r=PyNumber_InPlaceAdd(x,y))) \ - FAIL(err) -#define OP_INPLACE_SUB(x,y,r,err) if (!(r=PyNumber_InPlaceSubtract(x,y))) \ - FAIL(err) -#define OP_INPLACE_MUL(x,y,r,err) if (!(r=PyNumber_InPlaceMultiply(x,y))) \ - FAIL(err) -#define OP_INPLACE_TRUEDIV(x,y,r,err) if (!(r=PyNumber_InPlaceTrueDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_FLOORDIV(x,y,r,err)if(!(r=PyNumber_InPlaceFloorDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_DIV(x,y,r,err) if (!(r=PyNumber_InPlaceDivide(x,y))) \ - FAIL(err) -#define OP_INPLACE_MOD(x,y,r,err) if (!(r=PyNumber_InPlaceRemainder(x,y))) \ - FAIL(err) -#define OP_INPLACE_POW(x,y,r,err) if (!(r=PyNumber_InPlacePower(x,y,Py_None))) \ - FAIL(err) -#define OP_INPLACE_LSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceLshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_RSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceRshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_AND(x,y,r,err) if (!(r=PyNumber_InPlaceAnd(x,y))) \ - FAIL(err) -#define OP_INPLACE_OR(x,y,r,err) if (!(r=PyNumber_InPlaceOr(x,y))) \ - FAIL(err) -#define OP_INPLACE_XOR(x,y,r,err) if (!(r=PyNumber_InPlaceXor(x,y))) \ - FAIL(err) - -#define OP_GETITEM(x,y,r,err) if (!(r=PyObject_GetItem1(x,y))) FAIL(err) -#define OP_SETITEM(x,y,z,r,err) if ((PyObject_SetItem1(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELITEM(x,y,r,err) if ((PyObject_DelItem(x,y))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_CONTAINS(x,y,r,err) op_bool(r,err,(PySequence_Contains(x,y))) - -#define OP_GETATTR(x,y,r,err) if (!(r=PyObject_GetAttr(x,y))) FAIL(err) -#define OP_SETATTR(x,y,z,r,err) if ((PyObject_SetAttr(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELATTR(x,y,r,err) if ((PyObject_SetAttr(x,y,NULL))<0)FAIL(err) \ - r=Py_None; Py_INCREF(r); - -#define OP_NEWSLICE(x,y,z,r,err) if (!(r=PySlice_New(x,y,z))) FAIL(err) - -#define OP_GETSLICE(x,y,z,r,err) { \ - PyObject *__yo = y, *__zo = z; \ - int __y = 0, __z = INT_MAX; \ - if (__yo == Py_None) __yo = NULL; \ - if (__zo == Py_None) __zo = NULL; \ - if (!_PyEval_SliceIndex(__yo, &__y) || \ - !_PyEval_SliceIndex(__zo, &__z) || \ - !(r=PySequence_GetSlice(x, __y, __z))) FAIL(err) \ - } - -#define OP_ALLOC_AND_SET(x,y,r,err) { \ - /* XXX check for long/int overflow */ \ - int __i, __x = PyInt_AsLong(x); \ - if (PyErr_Occurred()) FAIL(err) \ - if (!(r = PyList_New(__x))) FAIL(err) \ - for (__i=0; __i<__x; __i++) { \ - Py_INCREF(y); \ - PyList_SET_ITEM(r, __i, y); \ - } \ - } - -#define OP_ITER(x,r,err) if (!(r=PyObject_GetIter(x))) FAIL(err) -#define OP_NEXT(x,r,err) if (!(r=PyIter_Next(x))) { \ - if (!PyErr_Occurred()) PyErr_SetNone(PyExc_StopIteration); \ - FAIL(err) \ - } - -#define OP_SIMPLE_CALL(args,r,err) if (!(r=PyObject_CallFunctionObjArgs args)) \ - FAIL(err) -#define OP_CALL_ARGS(args,r,err) if (!(r=CallWithShape args)) FAIL(err) - -/* Needs to act like getattr(x, '__class__', type(x)) */ -#define OP_TYPE(x,r,err) { \ - PyObject *o = x; \ - if (PyInstance_Check(o)) { \ - r = (PyObject*)(((PyInstanceObject*)o)->in_class); \ - } else { \ - r = (PyObject*)o->ob_type; \ - } \ - Py_INCREF(r); \ - } - -/* Needs to act like instance(x,y) */ -#define OP_ISSUBTYPE(x,y,r,err) \ - op_bool(r,err,PyClass_IsSubclass(x, y)) - - -/*** misc ***/ - -#define MOVE(x, y) y = x; - -#define INITCHK(expr) if (!(expr)) return; -#define REGISTER_GLOBAL(name) Py_INCREF(name); PyModule_AddObject(m, #name, name); - - -#if defined(USE_CALL_TRACE) - -#define TRACE_CALL __f, __tstate -#define TRACE_ARGS PyFrameObject *__f, PyThreadState *__tstate - -#define FAIL(err) { __f->f_lineno = __f->f_code->co_firstlineno = __LINE__; goto err; } - -#define FUNCTION_HEAD(signature, self, args, names, file, line) \ - PyThreadState *__tstate = PyThreadState_GET(); \ - PyObject *__localnames = PyList_CrazyStringPack names; \ - PyFrameObject *__f = traced_function_head(self, args, signature, file, line, __tstate, __localnames); - -#define FUNCTION_CHECK() \ - assert (__f != NULL); - -#define ERR_DECREF(arg) { if (__f->f_locals) { PyDict_SetItemString(__f->f_locals, #arg, arg); } Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return traced_function_tail(rval, __f, __tstate); - -#else /* !defined(USE_CALL_TRACE) */ - -#define FAIL(err) { goto err; } - -#define ERR_DECREF(arg) { Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return rval; - -#endif /* defined(USE_CALL_TRACE) */ - - - - - -/* we need a subclass of 'builtin_function_or_method' which can be used - as methods: builtin function objects that can be bound on instances */ -static PyObject * -gencfunc_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - if (obj == Py_None) - obj = NULL; - return PyMethod_New(func, obj, type); -} -static PyTypeObject PyGenCFunction_Type = { - PyObject_HEAD_INIT(NULL) - 0, - "pypy_generated_function", - sizeof(PyCFunctionObject), - 0, - 0, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - /*&PyCFunction_Type set below*/ 0, /* tp_base */ - 0, /* tp_dict */ - gencfunc_descr_get, /* tp_descr_get */ - 0, /* tp_descr_set */ -}; - -#define MODULE_INITFUNC(modname) \ - static PyMethodDef no_methods[] = { (char *)NULL, (PyCFunction)NULL }; \ - PyMODINIT_FUNC init##modname(void) - -#define SETUP_MODULE(modname) \ - PyObject *m = Py_InitModule(#modname, no_methods); \ - PyModule_AddStringConstant(m, "__sourcefile__", __FILE__); \ - this_module_globals = PyModule_GetDict(m); \ - PyGenCFunction_Type.tp_base = &PyCFunction_Type; \ - PyType_Ready(&PyGenCFunction_Type); \ - if (setup_globalfunctions(globalfunctiondefs) < 0) \ - return; \ - if (setup_initcode(frozen_initcode, FROZEN_INITCODE_SIZE) < 0) \ - return; \ - if (setup_globalobjects(globalobjectdefs) < 0) \ - return; - - -/*** table of global objects ***/ - -typedef struct { - PyObject** p; - char* name; -} globalobjectdef_t; - -typedef struct { - PyObject** p; - PyMethodDef ml; -} globalfunctiondef_t; - -static int setup_globalobjects(globalobjectdef_t* def) -{ - PyObject* obj; - - for (; def->p != NULL; def++) { - obj = PyDict_GetItemString(this_module_globals, def->name); - if (obj == NULL) { - PyErr_Format(PyExc_AttributeError, - "initialization code should have " - "created '%s'", def->name); - return -1; - } - Py_INCREF(obj); - *def->p = obj; /* store the object ref in the global var */ - } - return 0; -} - -static int setup_globalfunctions(globalfunctiondef_t* def) -{ - PyObject* fn; - PyObject* name; - int len; - - for (; def->p != NULL; def++) { - fn = PyCFunction_New(&def->ml, NULL); - if (fn == NULL) - return -1; - fn->ob_type = &PyGenCFunction_Type; - *def->p = fn; /* store the object ref in the global var */ - - len = 0; - while (def->ml.ml_name[len] != 0) - len++; - name = PyString_FromStringAndSize(NULL, 6+len); - if (name == NULL) - return -1; - memcpy(PyString_AS_STRING(name), "gfunc_", 6); - memcpy(PyString_AS_STRING(name)+6, def->ml.ml_name, len); - if (PyDict_SetItem(this_module_globals, name, fn) < 0) - return -1; - Py_DECREF(name); - } - return 0; -} - -static int setup_initcode(char* frozendata[], int len) -{ - PyObject* co; - PyObject* globals; - PyObject* res; - char *buffer, *bufp; - int chunk, count = 0; - - buffer = PyMem_NEW(char, len); - if (buffer == NULL) - return -1; - bufp = buffer; - while (count < len) { - chunk = len-count < 1024 ? len-count : 1024; - memcpy(bufp, *frozendata, chunk); - bufp += chunk; - count += chunk; - ++frozendata; - } - co = PyMarshal_ReadObjectFromString(buffer, len); - if (co == NULL) - return -1; - PyMem_DEL(buffer); - if (!PyCode_Check(co)) { - PyErr_SetString(PyExc_TypeError, "uh?"); - return -1; - } - globals = this_module_globals; - if (PyDict_GetItemString(globals, "__builtins__") == NULL) - PyDict_SetItemString(globals, "__builtins__", - PyEval_GetBuiltins()); - res = PyEval_EvalCode((PyCodeObject *) co, globals, globals); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; -} - - -/*** operations with a variable number of arguments ***/ - -#define OP_NEWLIST0(r,err) if (!(r=PyList_New(0))) FAIL(err) -#define OP_NEWLIST(args,r,err) if (!(r=PyList_Pack args)) FAIL(err) -#define OP_NEWDICT0(r,err) if (!(r=PyDict_New())) FAIL(err) -#define OP_NEWDICT(args,r,err) if (!(r=PyDict_Pack args)) FAIL(err) -#define OP_NEWTUPLE(args,r,err) if (!(r=PyTuple_Pack args)) FAIL(err) - -static PyObject* PyList_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyList_New(n); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyList_SET_ITEM(result, i, o); - } - va_end(vargs); - return result; -} - -static PyObject* PyDict_Pack(int n, ...) -{ - int i; - PyObject *key, *val; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyDict_New(); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - key = va_arg(vargs, PyObject *); - val = va_arg(vargs, PyObject *); - if (PyDict_SetItem(result, key, val) < 0) { - Py_DECREF(result); - return NULL; - } - } - va_end(vargs); - return result; -} - -#if PY_VERSION_HEX < 0x02040000 /* 2.4 */ -static PyObject* PyTuple_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - PyObject **items; - va_list vargs; - - va_start(vargs, n); - result = PyTuple_New(n); - if (result == NULL) { - return NULL; - } - items = ((PyTupleObject *)result)->ob_item; - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - items[i] = o; - } - va_end(vargs); - return result; -} -#endif - -#if PY_VERSION_HEX >= 0x02030000 /* 2.3 */ -# define PyObject_GetItem1 PyObject_GetItem -# define PyObject_SetItem1 PyObject_SetItem -#else -/* for Python 2.2 only */ -static PyObject* PyObject_GetItem1(PyObject* obj, PyObject* index) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_GetItem(obj, index); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_GetSlice(obj, start, stop); -} -static PyObject* PyObject_SetItem1(PyObject* obj, PyObject* index, PyObject* v) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_SetItem(obj, index, v); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_SetSlice(obj, start, stop, v); -} -#endif - -static PyObject* CallWithShape(PyObject* callable, PyObject* shape, ...) -{ - /* XXX the 'shape' argument is a tuple as specified by - XXX pypy.interpreter.argument.fromshape(). This code should - XXX we made independent on the format of the 'shape' later... */ - PyObject* result = NULL; - PyObject* t = NULL; - PyObject* d = NULL; - PyObject* o; - PyObject* key; - PyObject* t2; - int i, nargs, nkwds, starflag, starstarflag; - va_list vargs; - - if (!PyTuple_Check(shape) || - PyTuple_GET_SIZE(shape) != 4 || - !PyInt_Check(PyTuple_GET_ITEM(shape, 0)) || - !PyTuple_Check(PyTuple_GET_ITEM(shape, 1)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 2)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 3))) { - Py_FatalError("in genc.h: invalid 'shape' argument"); - } - nargs = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 0)); - nkwds = PyTuple_GET_SIZE(PyTuple_GET_ITEM(shape, 1)); - starflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 2)); - starstarflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 3)); - - va_start(vargs, shape); - t = PyTuple_New(nargs); - if (t == NULL) - goto finally; - for (i = 0; i < nargs; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyTuple_SET_ITEM(t, i, o); - } - if (nkwds) { - d = PyDict_New(); - if (d == NULL) - goto finally; - for (i = 0; i < nkwds; i++) { - o = va_arg(vargs, PyObject *); - key = PyTuple_GET_ITEM(PyTuple_GET_ITEM(shape, 1), i); - if (PyDict_SetItem(d, key, o) < 0) - goto finally; - } - } - if (starflag) { - o = va_arg(vargs, PyObject *); - o = PySequence_Tuple(o); - if (o == NULL) - goto finally; - t2 = PySequence_Concat(t, o); - Py_DECREF(o); - Py_DECREF(t); - t = t2; - if (t == NULL) - goto finally; - } - if (starstarflag) { - int len1, len2, len3; - o = va_arg(vargs, PyObject *); - len1 = PyDict_Size(d); - len2 = PyDict_Size(o); - if (len1 < 0 || len2 < 0) - goto finally; - if (PyDict_Update(d, o) < 0) - goto finally; - len3 = PyDict_Size(d); - if (len1 + len2 != len3) { - PyErr_SetString(PyExc_TypeError, - "genc.h: duplicate keyword arguments"); - goto finally; - } - } - va_end(vargs); - - result = PyObject_Call(callable, t, d); - - finally: - Py_XDECREF(d); - Py_XDECREF(t); - return result; -} - - -#if defined(USE_CALL_TRACE) - -static int callstack_depth = -1; -static PyCodeObject* getcode(char *func_name, char *func_filename, int lineno); -static int trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val); -static int trace_frame_exc(PyThreadState *tstate, PyFrameObject *f); - -static int -trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val) -{ - int result = 0; - if (!tstate->use_tracing || tstate->tracing) { - /*printf("if (!tstate->use_tracing || tstate->tracing)\n");*/ - return 0; - } - if (tstate->c_profilefunc != NULL) { - /*printf("if (tstate->c_profilefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_profilefunc(tstate->c_profileobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - if (result) { - /*printf(" if (result)\n");*/ - return result; - } - } - if (tstate->c_tracefunc != NULL) { - /*printf("if (tstate->c_tracefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_tracefunc(tstate->c_traceobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - } - /*printf("return result;\n");*/ - return result; -} - -static int -trace_frame_exc(PyThreadState *tstate, PyFrameObject *f) -{ - PyObject *type, *value, *traceback, *arg; - int err; - - if (tstate->c_tracefunc == NULL) { - return 0; - } - - PyErr_Fetch(&type, &value, &traceback); - if (value == NULL) { - value = Py_None; - Py_INCREF(value); - } - arg = PyTuple_Pack(3, type, value, traceback); - if (arg == NULL) { - PyErr_Restore(type, value, traceback); - return 0; - } - err = trace_frame(tstate, f, PyTrace_EXCEPTION, arg); - Py_DECREF(arg); - if (err == 0) { - PyErr_Restore(type, value, traceback); - } else { - Py_XDECREF(type); - Py_XDECREF(value); - Py_XDECREF(traceback); - } - return err; -} - -static PyCodeObject* -getcode(char *func_name, char *func_filename, int lineno) -{ - PyObject *code = NULL; - PyObject *name = NULL; - PyObject *nulltuple = NULL; - PyObject *filename = NULL; - PyCodeObject *tb_code = NULL; -#if defined(OBNOXIOUS_PRINT_STATEMENTS) - int i; - - printf("%5d: ", lineno); - assert(callstack_depth >= 0); - if (callstack_depth) { - for (i=0; iframe = f; - if (trace_frame(tstate, f, PyTrace_CALL, Py_None) < 0) { - Py_DECREF(args); - callstack_depth--; - return NULL; - } - - return f; -} - -static PyObject *traced_function_tail(PyObject *rval, PyFrameObject *f, PyThreadState *tstate) { - /* - STEALS a reference to f - */ - if (f == NULL) { - goto bad_args; - } - if (rval == NULL) { - if (tstate->curexc_traceback == NULL) { - PyTraceBack_Here(f); - } - if (trace_frame_exc(tstate, f) < 0) { - goto end; - } - } else { - if (trace_frame(tstate, f, PyTrace_RETURN, rval) < 0) { - Py_DECREF(rval); - rval = NULL; - } - } -end: - tstate->frame = f->f_back; - Py_DECREF(f); -bad_args: - callstack_depth--; - return rval; -} - -static PyObject* PyList_CrazyStringPack(char *begin, ...) -{ - PyObject *o; - PyObject *result; - va_list vargs; - - result = PyList_New(0); - if (result == NULL || begin == NULL) { - return result; - } - va_start(vargs, begin); - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return result; - } - Py_DECREF(o); - while ((begin = va_arg(vargs, char *)) != NULL) { - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return NULL; - } - Py_DECREF(o); - } - va_end(vargs); - return result; -} - -#endif /* defined(USE_CALL_TRACE) */ Deleted: /pypy/dist/pypy/translator/genc.py ============================================================================== --- /pypy/dist/pypy/translator/genc.py Sat Apr 2 17:57:37 2005 +++ (empty file) @@ -1,206 +0,0 @@ -""" -Generate a C source file from the flowmodel. - -""" -import autopath, os -from pypy.objspace.flow.model import Variable, Constant - -from pypy.translator.gensupp import uniquemodulename -from pypy.translator.gensupp import NameManager - -from pypy.translator.genc_funcdef import FunctionDef, USE_CALL_TRACE -from pypy.translator.genc_pyobj import CType_PyObject, ctypeof - -# ____________________________________________________________ - -#def go_figure_out_this_name(source): -# # ahem -# return 'PyRun_String("%s", Py_eval_input, PyEval_GetGlobals(), NULL)' % ( -# source, ) - -class GenC: - MODNAMES = {} - - def __init__(self, f, translator, modname=None, f2=None): - self.f = f - self.f2 = f2 - self.translator = translator - self.modname = (modname or - uniquemodulename(translator.functions[0].__name__)) - self.namespace= NameManager() - # keywords cannot be reused. This is the C99 draft's list. - self.namespace.make_reserved_names(''' - auto enum restrict unsigned - break extern return void - case float short volatile - char for signed while - const goto sizeof _Bool - continue if static _Complex - default inline struct _Imaginary - do int switch - double long typedef - else register union - ''') - self.globaldecl = [] - self.pendingfunctions = [] - self.funcdefs = {} - self.allfuncdefs = [] - self.ctyperepresenters = {} - self.pyobjrepr = self.getrepresenter(CType_PyObject) - self.gen_source() - - def getrepresenter(self, type_cls): - try: - return self.ctyperepresenters[type_cls] - except KeyError: - crepr = self.ctyperepresenters[type_cls] = type_cls(self) - return crepr - - def nameofconst(self, c, debug=None): - crepr = self.getrepresenter(ctypeof(c)) - return crepr.nameof(c.value, debug=debug) - - def nameofvalue(self, value, type_cls): - crepr = self.getrepresenter(type_cls) - return crepr.nameof(value) - - def getfuncdef(self, func): - if func not in self.funcdefs: - if self.translator.frozen: - if func not in self.translator.flowgraphs: - return None - else: - if (func.func_doc and - func.func_doc.lstrip().startswith('NOT_RPYTHON')): - return None - funcdef = FunctionDef(func, self) - self.funcdefs[func] = funcdef - self.allfuncdefs.append(funcdef) - self.pendingfunctions.append(funcdef) - return self.funcdefs[func] - - # ____________________________________________________________ - - def gen_source(self): - f = self.f - info = { - 'modname': self.modname, - 'entrypointname': self.translator.functions[0].__name__, - 'entrypoint': self.pyobjrepr.nameof(self.translator.functions[0]), - } - # header - if USE_CALL_TRACE: - print >> f, '#define USE_CALL_TRACE' - print >> f, self.C_HEADER - - # function implementations - while self.pendingfunctions: - funcdef = self.pendingfunctions.pop() - self.gen_cfunction(funcdef) - # collect more of the latercode after each function - for crepr in self.ctyperepresenters.values(): - if hasattr(crepr, 'collect_globals'): - crepr.collect_globals() - self.gen_global_declarations() - - # after all the ff_xxx() functions we generate the pyff_xxx() wrappers - for funcdef in self.allfuncdefs: - if funcdef.wrapper_name is not None: - funcdef.gen_wrapper(f) - - # global object table - print >> f, self.C_OBJECT_TABLE - for name in self.pyobjrepr.globalobjects: - if not name.startswith('gfunc_'): - print >> f, '\t{&%s, "%s"},' % (name, name) - print >> f, self.C_TABLE_END - - # global function table - print >> f, self.C_FUNCTION_TABLE - for funcdef in self.allfuncdefs: - if funcdef.globalobject_name is not None: - print >> f, ('\t{&%s, {"%s", (PyCFunction)%s, ' - 'METH_VARARGS|METH_KEYWORDS}},' % ( - funcdef.globalobject_name, - funcdef.base_name, - funcdef.wrapper_name)) - print >> f, self.C_TABLE_END - - # frozen init bytecode - print >> f, self.C_FROZEN_BEGIN - bytecode = self.pyobjrepr.getfrozenbytecode() - def char_repr(c): - if c in '\\"': return '\\' + c - if ' ' <= c < '\x7F': return c - return '\\%03o' % ord(c) - for i in range(0, len(bytecode), 32): - print >> f, ''.join([char_repr(c) for c in bytecode[i:i+32]])+'\\' - if (i+32) % 1024 == 0: - print >> f, self.C_FROZEN_BETWEEN - print >> f, self.C_FROZEN_END - print >> f, "#define FROZEN_INITCODE_SIZE %d" % len(bytecode) - - # the footer proper: the module init function */ - print >> f, self.C_FOOTER % info - - def gen_global_declarations(self): - g = self.globaldecl - if g: - f = self.f - print >> f, '/* global declaration%s */' % ('s'*(len(g)>1)) - for line in g: - print >> f, line - print >> f - del g[:] - - def gen_cfunction(self, funcdef): -## print 'gen_cfunction (%s:%d) %s' % ( -## func.func_globals.get('__name__', '?'), -## func.func_code.co_firstlineno, -## func.__name__) - - # compute the whole body - body = list(funcdef.cfunction_body()) - - # generate the source now - self.gen_global_declarations() #.. before the body where they are needed - funcdef.gen_cfunction(self.f, body) - - # this is only to keep the RAM consumption under control - funcdef.clear() - if not self.translator.frozen: - del self.translator.flowgraphs[funcdef.func] - Variable.instances.clear() - -# ____________________________________________________________ - - C_HEADER = '#include "genc.h"\n' - - C_SEP = "/************************************************************/" - - C_OBJECT_TABLE = C_SEP + ''' - -/* Table of global objects */ -static globalobjectdef_t globalobjectdefs[] = {''' - - C_FUNCTION_TABLE = ''' -/* Table of functions */ -static globalfunctiondef_t globalfunctiondefs[] = {''' - - C_TABLE_END = '\t{ NULL }\t/* Sentinel */\n};' - - C_FROZEN_BEGIN = ''' -/* Frozen Python bytecode: the initialization code */ -static char *frozen_initcode[] = {"\\''' - - C_FROZEN_BETWEEN = '''", "\\''' - - C_FROZEN_END = '''"};\n''' - - C_FOOTER = C_SEP + ''' - -MODULE_INITFUNC(%(modname)s) -{ -\tSETUP_MODULE(%(modname)s) -\tPyModule_AddObject(m, "%(entrypointname)s", %(entrypoint)s); -}''' Added: pypy/dist/pypy/translator/genc/__init__.py ============================================================================== Added: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/ctyper.py Sat Apr 2 17:57:37 2005 @@ -0,0 +1,21 @@ +""" +GenC-specific type specializer +""" + +from pypy.translator.typer import Specializer, TypeMatch +from pypy.annotation.model import SomeInteger +from pypy.translator.genc.t_pyobj import CType_PyObject +from pypy.translator.genc.t_int import CType_Int + +class GenCSpecializer(Specializer): + + TInt = TypeMatch(SomeInteger(), CType_Int) + typematches = [TInt] # in more-specific-first, more-general-last order + defaulttypecls = CType_PyObject + + specializationtable = [ + ## op specialized op arg types concrete return type + ('add', 'int_add', TInt, TInt, CType_Int), + ('sub', 'int_sub', TInt, TInt, CType_Int), + ('is_true', 'int_is_true', TInt, CType_Int), + ] Copied: pypy/dist/pypy/translator/genc/funcdef.py (from r10251, pypy/dist/pypy/translator/genc_funcdef.py) ============================================================================== --- pypy/dist/pypy/translator/genc_funcdef.py (original) +++ pypy/dist/pypy/translator/genc/funcdef.py Sat Apr 2 17:57:37 2005 @@ -8,7 +8,7 @@ from types import FunctionType from pypy.translator.gensupp import c_string -from pypy.translator.genc_pyobj import ctypeof +from pypy.translator.genc.t_pyobj import ctypeof # Set this if you want call trace frames to be built USE_CALL_TRACE = False Copied: pypy/dist/pypy/translator/genc/g_include.h (from r10250, pypy/dist/pypy/translator/genc.h) ============================================================================== --- pypy/dist/pypy/translator/genc.h (original) +++ pypy/dist/pypy/translator/genc/g_include.h Sat Apr 2 17:57:37 2005 @@ -1,6 +1,6 @@ /************************************************************/ -/*** Generic C header section ***/ +/*** C header file for code produced by genc.py ***/ #include "Python.h" #include "compile.h" @@ -10,864 +10,8 @@ #include "marshal.h" #include "eval.h" -#if !defined(MIN) -#define MIN(a,b) (((a)<(b))?(a):(b)) -#endif /* MIN */ - -#include "genc_type.h" - -static PyObject *this_module_globals; - -/* Set genc_funcdef.USE_CALL_TRACE if you want call trace frames to be built */ - -#if 0 -#define OBNOXIOUS_PRINT_STATEMENTS -#endif - -#define op_bool(r,err,what) { \ - int _retval = what; \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyBool_FromLong(_retval); \ - } - -#define op_richcmp(x,y,r,err,dir) \ - if (!(r=PyObject_RichCompare(x,y,dir))) FAIL(err) -#define OP_LT(x,y,r,err) op_richcmp(x,y,r,err, Py_LT) -#define OP_LE(x,y,r,err) op_richcmp(x,y,r,err, Py_LE) -#define OP_EQ(x,y,r,err) op_richcmp(x,y,r,err, Py_EQ) -#define OP_NE(x,y,r,err) op_richcmp(x,y,r,err, Py_NE) -#define OP_GT(x,y,r,err) op_richcmp(x,y,r,err, Py_GT) -#define OP_GE(x,y,r,err) op_richcmp(x,y,r,err, Py_GE) - -#define OP_IS_(x,y,r,err) op_bool(r,err,(x == y)) - -#define OP_IS_TRUE(x,r,err) op_bool(r,err,PyObject_IsTrue(x)) - -#define OP_LEN(x,r,err) { \ - int _retval = PyObject_Size(x); \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyInt_FromLong(_retval); \ - } -#define OP_NEG(x,r,err) if (!(r=PyNumber_Negative(x))) FAIL(err) -#define OP_POS(x,r,err) if (!(r=PyNumber_Positive(x))) FAIL(err) -#define OP_INVERT(x,r,err) if (!(r=PyNumber_Invert(x))) FAIL(err) - -#define OP_ADD(x,y,r,err) if (!(r=PyNumber_Add(x,y))) FAIL(err) -#define OP_SUB(x,y,r,err) if (!(r=PyNumber_Subtract(x,y))) FAIL(err) -#define OP_MUL(x,y,r,err) if (!(r=PyNumber_Multiply(x,y))) FAIL(err) -#define OP_TRUEDIV(x,y,r,err) if (!(r=PyNumber_TrueDivide(x,y))) FAIL(err) -#define OP_FLOORDIV(x,y,r,err) if (!(r=PyNumber_FloorDivide(x,y)))FAIL(err) -#define OP_DIV(x,y,r,err) if (!(r=PyNumber_Divide(x,y))) FAIL(err) -#define OP_MOD(x,y,r,err) if (!(r=PyNumber_Remainder(x,y))) FAIL(err) -#define OP_POW(x,y,z,r,err) if (!(r=PyNumber_Power(x,y,z))) FAIL(err) -#define OP_LSHIFT(x,y,r,err) if (!(r=PyNumber_Lshift(x,y))) FAIL(err) -#define OP_RSHIFT(x,y,r,err) if (!(r=PyNumber_Rshift(x,y))) FAIL(err) -#define OP_AND_(x,y,r,err) if (!(r=PyNumber_And(x,y))) FAIL(err) -#define OP_OR_(x,y,r,err) if (!(r=PyNumber_Or(x,y))) FAIL(err) -#define OP_XOR(x,y,r,err) if (!(r=PyNumber_Xor(x,y))) FAIL(err) - -#define OP_INPLACE_ADD(x,y,r,err) if (!(r=PyNumber_InPlaceAdd(x,y))) \ - FAIL(err) -#define OP_INPLACE_SUB(x,y,r,err) if (!(r=PyNumber_InPlaceSubtract(x,y))) \ - FAIL(err) -#define OP_INPLACE_MUL(x,y,r,err) if (!(r=PyNumber_InPlaceMultiply(x,y))) \ - FAIL(err) -#define OP_INPLACE_TRUEDIV(x,y,r,err) if (!(r=PyNumber_InPlaceTrueDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_FLOORDIV(x,y,r,err)if(!(r=PyNumber_InPlaceFloorDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_DIV(x,y,r,err) if (!(r=PyNumber_InPlaceDivide(x,y))) \ - FAIL(err) -#define OP_INPLACE_MOD(x,y,r,err) if (!(r=PyNumber_InPlaceRemainder(x,y))) \ - FAIL(err) -#define OP_INPLACE_POW(x,y,r,err) if (!(r=PyNumber_InPlacePower(x,y,Py_None))) \ - FAIL(err) -#define OP_INPLACE_LSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceLshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_RSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceRshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_AND(x,y,r,err) if (!(r=PyNumber_InPlaceAnd(x,y))) \ - FAIL(err) -#define OP_INPLACE_OR(x,y,r,err) if (!(r=PyNumber_InPlaceOr(x,y))) \ - FAIL(err) -#define OP_INPLACE_XOR(x,y,r,err) if (!(r=PyNumber_InPlaceXor(x,y))) \ - FAIL(err) - -#define OP_GETITEM(x,y,r,err) if (!(r=PyObject_GetItem1(x,y))) FAIL(err) -#define OP_SETITEM(x,y,z,r,err) if ((PyObject_SetItem1(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELITEM(x,y,r,err) if ((PyObject_DelItem(x,y))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_CONTAINS(x,y,r,err) op_bool(r,err,(PySequence_Contains(x,y))) - -#define OP_GETATTR(x,y,r,err) if (!(r=PyObject_GetAttr(x,y))) FAIL(err) -#define OP_SETATTR(x,y,z,r,err) if ((PyObject_SetAttr(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELATTR(x,y,r,err) if ((PyObject_SetAttr(x,y,NULL))<0)FAIL(err) \ - r=Py_None; Py_INCREF(r); - -#define OP_NEWSLICE(x,y,z,r,err) if (!(r=PySlice_New(x,y,z))) FAIL(err) - -#define OP_GETSLICE(x,y,z,r,err) { \ - PyObject *__yo = y, *__zo = z; \ - int __y = 0, __z = INT_MAX; \ - if (__yo == Py_None) __yo = NULL; \ - if (__zo == Py_None) __zo = NULL; \ - if (!_PyEval_SliceIndex(__yo, &__y) || \ - !_PyEval_SliceIndex(__zo, &__z) || \ - !(r=PySequence_GetSlice(x, __y, __z))) FAIL(err) \ - } - -#define OP_ALLOC_AND_SET(x,y,r,err) { \ - /* XXX check for long/int overflow */ \ - int __i, __x = PyInt_AsLong(x); \ - if (PyErr_Occurred()) FAIL(err) \ - if (!(r = PyList_New(__x))) FAIL(err) \ - for (__i=0; __i<__x; __i++) { \ - Py_INCREF(y); \ - PyList_SET_ITEM(r, __i, y); \ - } \ - } - -#define OP_ITER(x,r,err) if (!(r=PyObject_GetIter(x))) FAIL(err) -#define OP_NEXT(x,r,err) if (!(r=PyIter_Next(x))) { \ - if (!PyErr_Occurred()) PyErr_SetNone(PyExc_StopIteration); \ - FAIL(err) \ - } - -#define OP_SIMPLE_CALL(args,r,err) if (!(r=PyObject_CallFunctionObjArgs args)) \ - FAIL(err) -#define OP_CALL_ARGS(args,r,err) if (!(r=CallWithShape args)) FAIL(err) - -/* Needs to act like getattr(x, '__class__', type(x)) */ -#define OP_TYPE(x,r,err) { \ - PyObject *o = x; \ - if (PyInstance_Check(o)) { \ - r = (PyObject*)(((PyInstanceObject*)o)->in_class); \ - } else { \ - r = (PyObject*)o->ob_type; \ - } \ - Py_INCREF(r); \ - } - -/* Needs to act like instance(x,y) */ -#define OP_ISSUBTYPE(x,y,r,err) \ - op_bool(r,err,PyClass_IsSubclass(x, y)) - - -/*** misc ***/ - -#define MOVE(x, y) y = x; - -#define INITCHK(expr) if (!(expr)) return; -#define REGISTER_GLOBAL(name) Py_INCREF(name); PyModule_AddObject(m, #name, name); - - -#if defined(USE_CALL_TRACE) - -#define TRACE_CALL __f, __tstate -#define TRACE_ARGS PyFrameObject *__f, PyThreadState *__tstate - -#define FAIL(err) { __f->f_lineno = __f->f_code->co_firstlineno = __LINE__; goto err; } - -#define FUNCTION_HEAD(signature, self, args, names, file, line) \ - PyThreadState *__tstate = PyThreadState_GET(); \ - PyObject *__localnames = PyList_CrazyStringPack names; \ - PyFrameObject *__f = traced_function_head(self, args, signature, file, line, __tstate, __localnames); - -#define FUNCTION_CHECK() \ - assert (__f != NULL); - -#define ERR_DECREF(arg) { if (__f->f_locals) { PyDict_SetItemString(__f->f_locals, #arg, arg); } Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return traced_function_tail(rval, __f, __tstate); - -#else /* !defined(USE_CALL_TRACE) */ - -#define FAIL(err) { goto err; } - -#define ERR_DECREF(arg) { Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return rval; - -#endif /* defined(USE_CALL_TRACE) */ - - - - - -/* we need a subclass of 'builtin_function_or_method' which can be used - as methods: builtin function objects that can be bound on instances */ -static PyObject * -gencfunc_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - if (obj == Py_None) - obj = NULL; - return PyMethod_New(func, obj, type); -} -static PyTypeObject PyGenCFunction_Type = { - PyObject_HEAD_INIT(NULL) - 0, - "pypy_generated_function", - sizeof(PyCFunctionObject), - 0, - 0, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - /*&PyCFunction_Type set below*/ 0, /* tp_base */ - 0, /* tp_dict */ - gencfunc_descr_get, /* tp_descr_get */ - 0, /* tp_descr_set */ -}; - -#define MODULE_INITFUNC(modname) \ - static PyMethodDef no_methods[] = { (char *)NULL, (PyCFunction)NULL }; \ - PyMODINIT_FUNC init##modname(void) - -#define SETUP_MODULE(modname) \ - PyObject *m = Py_InitModule(#modname, no_methods); \ - PyModule_AddStringConstant(m, "__sourcefile__", __FILE__); \ - this_module_globals = PyModule_GetDict(m); \ - PyGenCFunction_Type.tp_base = &PyCFunction_Type; \ - PyType_Ready(&PyGenCFunction_Type); \ - if (setup_globalfunctions(globalfunctiondefs) < 0) \ - return; \ - if (setup_initcode(frozen_initcode, FROZEN_INITCODE_SIZE) < 0) \ - return; \ - if (setup_globalobjects(globalobjectdefs) < 0) \ - return; - - -/*** table of global objects ***/ - -typedef struct { - PyObject** p; - char* name; -} globalobjectdef_t; - -typedef struct { - PyObject** p; - PyMethodDef ml; -} globalfunctiondef_t; - -static int setup_globalobjects(globalobjectdef_t* def) -{ - PyObject* obj; - - for (; def->p != NULL; def++) { - obj = PyDict_GetItemString(this_module_globals, def->name); - if (obj == NULL) { - PyErr_Format(PyExc_AttributeError, - "initialization code should have " - "created '%s'", def->name); - return -1; - } - Py_INCREF(obj); - *def->p = obj; /* store the object ref in the global var */ - } - return 0; -} - -static int setup_globalfunctions(globalfunctiondef_t* def) -{ - PyObject* fn; - PyObject* name; - int len; - - for (; def->p != NULL; def++) { - fn = PyCFunction_New(&def->ml, NULL); - if (fn == NULL) - return -1; - fn->ob_type = &PyGenCFunction_Type; - *def->p = fn; /* store the object ref in the global var */ - - len = 0; - while (def->ml.ml_name[len] != 0) - len++; - name = PyString_FromStringAndSize(NULL, 6+len); - if (name == NULL) - return -1; - memcpy(PyString_AS_STRING(name), "gfunc_", 6); - memcpy(PyString_AS_STRING(name)+6, def->ml.ml_name, len); - if (PyDict_SetItem(this_module_globals, name, fn) < 0) - return -1; - Py_DECREF(name); - } - return 0; -} - -static int setup_initcode(char* frozendata[], int len) -{ - PyObject* co; - PyObject* globals; - PyObject* res; - char *buffer, *bufp; - int chunk, count = 0; - - buffer = PyMem_NEW(char, len); - if (buffer == NULL) - return -1; - bufp = buffer; - while (count < len) { - chunk = len-count < 1024 ? len-count : 1024; - memcpy(bufp, *frozendata, chunk); - bufp += chunk; - count += chunk; - ++frozendata; - } - co = PyMarshal_ReadObjectFromString(buffer, len); - if (co == NULL) - return -1; - PyMem_DEL(buffer); - if (!PyCode_Check(co)) { - PyErr_SetString(PyExc_TypeError, "uh?"); - return -1; - } - globals = this_module_globals; - if (PyDict_GetItemString(globals, "__builtins__") == NULL) - PyDict_SetItemString(globals, "__builtins__", - PyEval_GetBuiltins()); - res = PyEval_EvalCode((PyCodeObject *) co, globals, globals); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; -} - - -/*** operations with a variable number of arguments ***/ - -#define OP_NEWLIST0(r,err) if (!(r=PyList_New(0))) FAIL(err) -#define OP_NEWLIST(args,r,err) if (!(r=PyList_Pack args)) FAIL(err) -#define OP_NEWDICT0(r,err) if (!(r=PyDict_New())) FAIL(err) -#define OP_NEWDICT(args,r,err) if (!(r=PyDict_Pack args)) FAIL(err) -#define OP_NEWTUPLE(args,r,err) if (!(r=PyTuple_Pack args)) FAIL(err) - -static PyObject* PyList_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyList_New(n); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyList_SET_ITEM(result, i, o); - } - va_end(vargs); - return result; -} - -static PyObject* PyDict_Pack(int n, ...) -{ - int i; - PyObject *key, *val; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyDict_New(); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - key = va_arg(vargs, PyObject *); - val = va_arg(vargs, PyObject *); - if (PyDict_SetItem(result, key, val) < 0) { - Py_DECREF(result); - return NULL; - } - } - va_end(vargs); - return result; -} - -#if PY_VERSION_HEX < 0x02040000 /* 2.4 */ -static PyObject* PyTuple_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - PyObject **items; - va_list vargs; - - va_start(vargs, n); - result = PyTuple_New(n); - if (result == NULL) { - return NULL; - } - items = ((PyTupleObject *)result)->ob_item; - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - items[i] = o; - } - va_end(vargs); - return result; -} -#endif - -#if PY_VERSION_HEX >= 0x02030000 /* 2.3 */ -# define PyObject_GetItem1 PyObject_GetItem -# define PyObject_SetItem1 PyObject_SetItem -#else -/* for Python 2.2 only */ -static PyObject* PyObject_GetItem1(PyObject* obj, PyObject* index) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_GetItem(obj, index); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_GetSlice(obj, start, stop); -} -static PyObject* PyObject_SetItem1(PyObject* obj, PyObject* index, PyObject* v) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_SetItem(obj, index, v); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_SetSlice(obj, start, stop, v); -} -#endif - -static PyObject* CallWithShape(PyObject* callable, PyObject* shape, ...) -{ - /* XXX the 'shape' argument is a tuple as specified by - XXX pypy.interpreter.argument.fromshape(). This code should - XXX we made independent on the format of the 'shape' later... */ - PyObject* result = NULL; - PyObject* t = NULL; - PyObject* d = NULL; - PyObject* o; - PyObject* key; - PyObject* t2; - int i, nargs, nkwds, starflag, starstarflag; - va_list vargs; - - if (!PyTuple_Check(shape) || - PyTuple_GET_SIZE(shape) != 4 || - !PyInt_Check(PyTuple_GET_ITEM(shape, 0)) || - !PyTuple_Check(PyTuple_GET_ITEM(shape, 1)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 2)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 3))) { - Py_FatalError("in genc.h: invalid 'shape' argument"); - } - nargs = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 0)); - nkwds = PyTuple_GET_SIZE(PyTuple_GET_ITEM(shape, 1)); - starflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 2)); - starstarflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 3)); - - va_start(vargs, shape); - t = PyTuple_New(nargs); - if (t == NULL) - goto finally; - for (i = 0; i < nargs; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyTuple_SET_ITEM(t, i, o); - } - if (nkwds) { - d = PyDict_New(); - if (d == NULL) - goto finally; - for (i = 0; i < nkwds; i++) { - o = va_arg(vargs, PyObject *); - key = PyTuple_GET_ITEM(PyTuple_GET_ITEM(shape, 1), i); - if (PyDict_SetItem(d, key, o) < 0) - goto finally; - } - } - if (starflag) { - o = va_arg(vargs, PyObject *); - o = PySequence_Tuple(o); - if (o == NULL) - goto finally; - t2 = PySequence_Concat(t, o); - Py_DECREF(o); - Py_DECREF(t); - t = t2; - if (t == NULL) - goto finally; - } - if (starstarflag) { - int len1, len2, len3; - o = va_arg(vargs, PyObject *); - len1 = PyDict_Size(d); - len2 = PyDict_Size(o); - if (len1 < 0 || len2 < 0) - goto finally; - if (PyDict_Update(d, o) < 0) - goto finally; - len3 = PyDict_Size(d); - if (len1 + len2 != len3) { - PyErr_SetString(PyExc_TypeError, - "genc.h: duplicate keyword arguments"); - goto finally; - } - } - va_end(vargs); - - result = PyObject_Call(callable, t, d); - - finally: - Py_XDECREF(d); - Py_XDECREF(t); - return result; -} - - -#if defined(USE_CALL_TRACE) - -static int callstack_depth = -1; -static PyCodeObject* getcode(char *func_name, char *func_filename, int lineno); -static int trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val); -static int trace_frame_exc(PyThreadState *tstate, PyFrameObject *f); - -static int -trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val) -{ - int result = 0; - if (!tstate->use_tracing || tstate->tracing) { - /*printf("if (!tstate->use_tracing || tstate->tracing)\n");*/ - return 0; - } - if (tstate->c_profilefunc != NULL) { - /*printf("if (tstate->c_profilefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_profilefunc(tstate->c_profileobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - if (result) { - /*printf(" if (result)\n");*/ - return result; - } - } - if (tstate->c_tracefunc != NULL) { - /*printf("if (tstate->c_tracefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_tracefunc(tstate->c_traceobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - } - /*printf("return result;\n");*/ - return result; -} - -static int -trace_frame_exc(PyThreadState *tstate, PyFrameObject *f) -{ - PyObject *type, *value, *traceback, *arg; - int err; - - if (tstate->c_tracefunc == NULL) { - return 0; - } - - PyErr_Fetch(&type, &value, &traceback); - if (value == NULL) { - value = Py_None; - Py_INCREF(value); - } - arg = PyTuple_Pack(3, type, value, traceback); - if (arg == NULL) { - PyErr_Restore(type, value, traceback); - return 0; - } - err = trace_frame(tstate, f, PyTrace_EXCEPTION, arg); - Py_DECREF(arg); - if (err == 0) { - PyErr_Restore(type, value, traceback); - } else { - Py_XDECREF(type); - Py_XDECREF(value); - Py_XDECREF(traceback); - } - return err; -} - -static PyCodeObject* -getcode(char *func_name, char *func_filename, int lineno) -{ - PyObject *code = NULL; - PyObject *name = NULL; - PyObject *nulltuple = NULL; - PyObject *filename = NULL; - PyCodeObject *tb_code = NULL; -#if defined(OBNOXIOUS_PRINT_STATEMENTS) - int i; - - printf("%5d: ", lineno); - assert(callstack_depth >= 0); - if (callstack_depth) { - for (i=0; iframe = f; - if (trace_frame(tstate, f, PyTrace_CALL, Py_None) < 0) { - Py_DECREF(args); - callstack_depth--; - return NULL; - } - - return f; -} - -static PyObject *traced_function_tail(PyObject *rval, PyFrameObject *f, PyThreadState *tstate) { - /* - STEALS a reference to f - */ - if (f == NULL) { - goto bad_args; - } - if (rval == NULL) { - if (tstate->curexc_traceback == NULL) { - PyTraceBack_Here(f); - } - if (trace_frame_exc(tstate, f) < 0) { - goto end; - } - } else { - if (trace_frame(tstate, f, PyTrace_RETURN, rval) < 0) { - Py_DECREF(rval); - rval = NULL; - } - } -end: - tstate->frame = f->f_back; - Py_DECREF(f); -bad_args: - callstack_depth--; - return rval; -} - -static PyObject* PyList_CrazyStringPack(char *begin, ...) -{ - PyObject *o; - PyObject *result; - va_list vargs; - - result = PyList_New(0); - if (result == NULL || begin == NULL) { - return result; - } - va_start(vargs, begin); - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return result; - } - Py_DECREF(o); - while ((begin = va_arg(vargs, char *)) != NULL) { - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return NULL; - } - Py_DECREF(o); - } - va_end(vargs); - return result; -} - -#endif /* defined(USE_CALL_TRACE) */ +#include "g_operation.h" +#include "g_int.h" +#include "g_trace.h" +#include "g_support.h" +#include "g_module.h" Copied: pypy/dist/pypy/translator/genc/g_int.h (from r10250, pypy/dist/pypy/translator/genc_type.h) ============================================================================== --- pypy/dist/pypy/translator/genc_type.h (original) +++ pypy/dist/pypy/translator/genc/g_int.h Sat Apr 2 17:57:37 2005 @@ -1,8 +1,6 @@ /************************************************************/ - /*** C header subsection: typed operations ***/ - -/* This file is included from genc.h. */ + /*** C header subsection: operations between ints ***/ #define OP_INT2OBJ(i,r,err) if (!(r=PyInt_FromLong(i))) FAIL(err) Copied: pypy/dist/pypy/translator/genc/g_module.h (from r10250, pypy/dist/pypy/translator/genc.h) ============================================================================== --- pypy/dist/pypy/translator/genc.h (original) +++ pypy/dist/pypy/translator/genc/g_module.h Sat Apr 2 17:57:37 2005 @@ -1,251 +1,7 @@ /************************************************************/ -/*** Generic C header section ***/ + /*** C header subsection: CPython-extension-module-ness ***/ -#include "Python.h" -#include "compile.h" -#include "frameobject.h" -#include "structmember.h" -#include "traceback.h" -#include "marshal.h" -#include "eval.h" - -#if !defined(MIN) -#define MIN(a,b) (((a)<(b))?(a):(b)) -#endif /* MIN */ - -#include "genc_type.h" - -static PyObject *this_module_globals; - -/* Set genc_funcdef.USE_CALL_TRACE if you want call trace frames to be built */ - -#if 0 -#define OBNOXIOUS_PRINT_STATEMENTS -#endif - -#define op_bool(r,err,what) { \ - int _retval = what; \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyBool_FromLong(_retval); \ - } - -#define op_richcmp(x,y,r,err,dir) \ - if (!(r=PyObject_RichCompare(x,y,dir))) FAIL(err) -#define OP_LT(x,y,r,err) op_richcmp(x,y,r,err, Py_LT) -#define OP_LE(x,y,r,err) op_richcmp(x,y,r,err, Py_LE) -#define OP_EQ(x,y,r,err) op_richcmp(x,y,r,err, Py_EQ) -#define OP_NE(x,y,r,err) op_richcmp(x,y,r,err, Py_NE) -#define OP_GT(x,y,r,err) op_richcmp(x,y,r,err, Py_GT) -#define OP_GE(x,y,r,err) op_richcmp(x,y,r,err, Py_GE) - -#define OP_IS_(x,y,r,err) op_bool(r,err,(x == y)) - -#define OP_IS_TRUE(x,r,err) op_bool(r,err,PyObject_IsTrue(x)) - -#define OP_LEN(x,r,err) { \ - int _retval = PyObject_Size(x); \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyInt_FromLong(_retval); \ - } -#define OP_NEG(x,r,err) if (!(r=PyNumber_Negative(x))) FAIL(err) -#define OP_POS(x,r,err) if (!(r=PyNumber_Positive(x))) FAIL(err) -#define OP_INVERT(x,r,err) if (!(r=PyNumber_Invert(x))) FAIL(err) - -#define OP_ADD(x,y,r,err) if (!(r=PyNumber_Add(x,y))) FAIL(err) -#define OP_SUB(x,y,r,err) if (!(r=PyNumber_Subtract(x,y))) FAIL(err) -#define OP_MUL(x,y,r,err) if (!(r=PyNumber_Multiply(x,y))) FAIL(err) -#define OP_TRUEDIV(x,y,r,err) if (!(r=PyNumber_TrueDivide(x,y))) FAIL(err) -#define OP_FLOORDIV(x,y,r,err) if (!(r=PyNumber_FloorDivide(x,y)))FAIL(err) -#define OP_DIV(x,y,r,err) if (!(r=PyNumber_Divide(x,y))) FAIL(err) -#define OP_MOD(x,y,r,err) if (!(r=PyNumber_Remainder(x,y))) FAIL(err) -#define OP_POW(x,y,z,r,err) if (!(r=PyNumber_Power(x,y,z))) FAIL(err) -#define OP_LSHIFT(x,y,r,err) if (!(r=PyNumber_Lshift(x,y))) FAIL(err) -#define OP_RSHIFT(x,y,r,err) if (!(r=PyNumber_Rshift(x,y))) FAIL(err) -#define OP_AND_(x,y,r,err) if (!(r=PyNumber_And(x,y))) FAIL(err) -#define OP_OR_(x,y,r,err) if (!(r=PyNumber_Or(x,y))) FAIL(err) -#define OP_XOR(x,y,r,err) if (!(r=PyNumber_Xor(x,y))) FAIL(err) - -#define OP_INPLACE_ADD(x,y,r,err) if (!(r=PyNumber_InPlaceAdd(x,y))) \ - FAIL(err) -#define OP_INPLACE_SUB(x,y,r,err) if (!(r=PyNumber_InPlaceSubtract(x,y))) \ - FAIL(err) -#define OP_INPLACE_MUL(x,y,r,err) if (!(r=PyNumber_InPlaceMultiply(x,y))) \ - FAIL(err) -#define OP_INPLACE_TRUEDIV(x,y,r,err) if (!(r=PyNumber_InPlaceTrueDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_FLOORDIV(x,y,r,err)if(!(r=PyNumber_InPlaceFloorDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_DIV(x,y,r,err) if (!(r=PyNumber_InPlaceDivide(x,y))) \ - FAIL(err) -#define OP_INPLACE_MOD(x,y,r,err) if (!(r=PyNumber_InPlaceRemainder(x,y))) \ - FAIL(err) -#define OP_INPLACE_POW(x,y,r,err) if (!(r=PyNumber_InPlacePower(x,y,Py_None))) \ - FAIL(err) -#define OP_INPLACE_LSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceLshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_RSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceRshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_AND(x,y,r,err) if (!(r=PyNumber_InPlaceAnd(x,y))) \ - FAIL(err) -#define OP_INPLACE_OR(x,y,r,err) if (!(r=PyNumber_InPlaceOr(x,y))) \ - FAIL(err) -#define OP_INPLACE_XOR(x,y,r,err) if (!(r=PyNumber_InPlaceXor(x,y))) \ - FAIL(err) - -#define OP_GETITEM(x,y,r,err) if (!(r=PyObject_GetItem1(x,y))) FAIL(err) -#define OP_SETITEM(x,y,z,r,err) if ((PyObject_SetItem1(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELITEM(x,y,r,err) if ((PyObject_DelItem(x,y))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_CONTAINS(x,y,r,err) op_bool(r,err,(PySequence_Contains(x,y))) - -#define OP_GETATTR(x,y,r,err) if (!(r=PyObject_GetAttr(x,y))) FAIL(err) -#define OP_SETATTR(x,y,z,r,err) if ((PyObject_SetAttr(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELATTR(x,y,r,err) if ((PyObject_SetAttr(x,y,NULL))<0)FAIL(err) \ - r=Py_None; Py_INCREF(r); - -#define OP_NEWSLICE(x,y,z,r,err) if (!(r=PySlice_New(x,y,z))) FAIL(err) - -#define OP_GETSLICE(x,y,z,r,err) { \ - PyObject *__yo = y, *__zo = z; \ - int __y = 0, __z = INT_MAX; \ - if (__yo == Py_None) __yo = NULL; \ - if (__zo == Py_None) __zo = NULL; \ - if (!_PyEval_SliceIndex(__yo, &__y) || \ - !_PyEval_SliceIndex(__zo, &__z) || \ - !(r=PySequence_GetSlice(x, __y, __z))) FAIL(err) \ - } - -#define OP_ALLOC_AND_SET(x,y,r,err) { \ - /* XXX check for long/int overflow */ \ - int __i, __x = PyInt_AsLong(x); \ - if (PyErr_Occurred()) FAIL(err) \ - if (!(r = PyList_New(__x))) FAIL(err) \ - for (__i=0; __i<__x; __i++) { \ - Py_INCREF(y); \ - PyList_SET_ITEM(r, __i, y); \ - } \ - } - -#define OP_ITER(x,r,err) if (!(r=PyObject_GetIter(x))) FAIL(err) -#define OP_NEXT(x,r,err) if (!(r=PyIter_Next(x))) { \ - if (!PyErr_Occurred()) PyErr_SetNone(PyExc_StopIteration); \ - FAIL(err) \ - } - -#define OP_SIMPLE_CALL(args,r,err) if (!(r=PyObject_CallFunctionObjArgs args)) \ - FAIL(err) -#define OP_CALL_ARGS(args,r,err) if (!(r=CallWithShape args)) FAIL(err) - -/* Needs to act like getattr(x, '__class__', type(x)) */ -#define OP_TYPE(x,r,err) { \ - PyObject *o = x; \ - if (PyInstance_Check(o)) { \ - r = (PyObject*)(((PyInstanceObject*)o)->in_class); \ - } else { \ - r = (PyObject*)o->ob_type; \ - } \ - Py_INCREF(r); \ - } - -/* Needs to act like instance(x,y) */ -#define OP_ISSUBTYPE(x,y,r,err) \ - op_bool(r,err,PyClass_IsSubclass(x, y)) - - -/*** misc ***/ - -#define MOVE(x, y) y = x; - -#define INITCHK(expr) if (!(expr)) return; -#define REGISTER_GLOBAL(name) Py_INCREF(name); PyModule_AddObject(m, #name, name); - - -#if defined(USE_CALL_TRACE) - -#define TRACE_CALL __f, __tstate -#define TRACE_ARGS PyFrameObject *__f, PyThreadState *__tstate - -#define FAIL(err) { __f->f_lineno = __f->f_code->co_firstlineno = __LINE__; goto err; } - -#define FUNCTION_HEAD(signature, self, args, names, file, line) \ - PyThreadState *__tstate = PyThreadState_GET(); \ - PyObject *__localnames = PyList_CrazyStringPack names; \ - PyFrameObject *__f = traced_function_head(self, args, signature, file, line, __tstate, __localnames); - -#define FUNCTION_CHECK() \ - assert (__f != NULL); - -#define ERR_DECREF(arg) { if (__f->f_locals) { PyDict_SetItemString(__f->f_locals, #arg, arg); } Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return traced_function_tail(rval, __f, __tstate); - -#else /* !defined(USE_CALL_TRACE) */ - -#define FAIL(err) { goto err; } - -#define ERR_DECREF(arg) { Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return rval; - -#endif /* defined(USE_CALL_TRACE) */ - - - - - -/* we need a subclass of 'builtin_function_or_method' which can be used - as methods: builtin function objects that can be bound on instances */ -static PyObject * -gencfunc_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - if (obj == Py_None) - obj = NULL; - return PyMethod_New(func, obj, type); -} -static PyTypeObject PyGenCFunction_Type = { - PyObject_HEAD_INIT(NULL) - 0, - "pypy_generated_function", - sizeof(PyCFunctionObject), - 0, - 0, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - /*&PyCFunction_Type set below*/ 0, /* tp_base */ - 0, /* tp_dict */ - gencfunc_descr_get, /* tp_descr_get */ - 0, /* tp_descr_set */ -}; #define MODULE_INITFUNC(modname) \ static PyMethodDef no_methods[] = { (char *)NULL, (PyCFunction)NULL }; \ @@ -267,6 +23,8 @@ /*** table of global objects ***/ +static PyObject *this_module_globals; + typedef struct { PyObject** p; char* name; @@ -360,514 +118,3 @@ Py_DECREF(res); return 0; } - - -/*** operations with a variable number of arguments ***/ - -#define OP_NEWLIST0(r,err) if (!(r=PyList_New(0))) FAIL(err) -#define OP_NEWLIST(args,r,err) if (!(r=PyList_Pack args)) FAIL(err) -#define OP_NEWDICT0(r,err) if (!(r=PyDict_New())) FAIL(err) -#define OP_NEWDICT(args,r,err) if (!(r=PyDict_Pack args)) FAIL(err) -#define OP_NEWTUPLE(args,r,err) if (!(r=PyTuple_Pack args)) FAIL(err) - -static PyObject* PyList_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyList_New(n); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyList_SET_ITEM(result, i, o); - } - va_end(vargs); - return result; -} - -static PyObject* PyDict_Pack(int n, ...) -{ - int i; - PyObject *key, *val; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyDict_New(); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - key = va_arg(vargs, PyObject *); - val = va_arg(vargs, PyObject *); - if (PyDict_SetItem(result, key, val) < 0) { - Py_DECREF(result); - return NULL; - } - } - va_end(vargs); - return result; -} - -#if PY_VERSION_HEX < 0x02040000 /* 2.4 */ -static PyObject* PyTuple_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - PyObject **items; - va_list vargs; - - va_start(vargs, n); - result = PyTuple_New(n); - if (result == NULL) { - return NULL; - } - items = ((PyTupleObject *)result)->ob_item; - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - items[i] = o; - } - va_end(vargs); - return result; -} -#endif - -#if PY_VERSION_HEX >= 0x02030000 /* 2.3 */ -# define PyObject_GetItem1 PyObject_GetItem -# define PyObject_SetItem1 PyObject_SetItem -#else -/* for Python 2.2 only */ -static PyObject* PyObject_GetItem1(PyObject* obj, PyObject* index) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_GetItem(obj, index); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_GetSlice(obj, start, stop); -} -static PyObject* PyObject_SetItem1(PyObject* obj, PyObject* index, PyObject* v) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_SetItem(obj, index, v); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_SetSlice(obj, start, stop, v); -} -#endif - -static PyObject* CallWithShape(PyObject* callable, PyObject* shape, ...) -{ - /* XXX the 'shape' argument is a tuple as specified by - XXX pypy.interpreter.argument.fromshape(). This code should - XXX we made independent on the format of the 'shape' later... */ - PyObject* result = NULL; - PyObject* t = NULL; - PyObject* d = NULL; - PyObject* o; - PyObject* key; - PyObject* t2; - int i, nargs, nkwds, starflag, starstarflag; - va_list vargs; - - if (!PyTuple_Check(shape) || - PyTuple_GET_SIZE(shape) != 4 || - !PyInt_Check(PyTuple_GET_ITEM(shape, 0)) || - !PyTuple_Check(PyTuple_GET_ITEM(shape, 1)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 2)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 3))) { - Py_FatalError("in genc.h: invalid 'shape' argument"); - } - nargs = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 0)); - nkwds = PyTuple_GET_SIZE(PyTuple_GET_ITEM(shape, 1)); - starflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 2)); - starstarflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 3)); - - va_start(vargs, shape); - t = PyTuple_New(nargs); - if (t == NULL) - goto finally; - for (i = 0; i < nargs; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyTuple_SET_ITEM(t, i, o); - } - if (nkwds) { - d = PyDict_New(); - if (d == NULL) - goto finally; - for (i = 0; i < nkwds; i++) { - o = va_arg(vargs, PyObject *); - key = PyTuple_GET_ITEM(PyTuple_GET_ITEM(shape, 1), i); - if (PyDict_SetItem(d, key, o) < 0) - goto finally; - } - } - if (starflag) { - o = va_arg(vargs, PyObject *); - o = PySequence_Tuple(o); - if (o == NULL) - goto finally; - t2 = PySequence_Concat(t, o); - Py_DECREF(o); - Py_DECREF(t); - t = t2; - if (t == NULL) - goto finally; - } - if (starstarflag) { - int len1, len2, len3; - o = va_arg(vargs, PyObject *); - len1 = PyDict_Size(d); - len2 = PyDict_Size(o); - if (len1 < 0 || len2 < 0) - goto finally; - if (PyDict_Update(d, o) < 0) - goto finally; - len3 = PyDict_Size(d); - if (len1 + len2 != len3) { - PyErr_SetString(PyExc_TypeError, - "genc.h: duplicate keyword arguments"); - goto finally; - } - } - va_end(vargs); - - result = PyObject_Call(callable, t, d); - - finally: - Py_XDECREF(d); - Py_XDECREF(t); - return result; -} - - -#if defined(USE_CALL_TRACE) - -static int callstack_depth = -1; -static PyCodeObject* getcode(char *func_name, char *func_filename, int lineno); -static int trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val); -static int trace_frame_exc(PyThreadState *tstate, PyFrameObject *f); - -static int -trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val) -{ - int result = 0; - if (!tstate->use_tracing || tstate->tracing) { - /*printf("if (!tstate->use_tracing || tstate->tracing)\n");*/ - return 0; - } - if (tstate->c_profilefunc != NULL) { - /*printf("if (tstate->c_profilefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_profilefunc(tstate->c_profileobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - if (result) { - /*printf(" if (result)\n");*/ - return result; - } - } - if (tstate->c_tracefunc != NULL) { - /*printf("if (tstate->c_tracefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_tracefunc(tstate->c_traceobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - } - /*printf("return result;\n");*/ - return result; -} - -static int -trace_frame_exc(PyThreadState *tstate, PyFrameObject *f) -{ - PyObject *type, *value, *traceback, *arg; - int err; - - if (tstate->c_tracefunc == NULL) { - return 0; - } - - PyErr_Fetch(&type, &value, &traceback); - if (value == NULL) { - value = Py_None; - Py_INCREF(value); - } - arg = PyTuple_Pack(3, type, value, traceback); - if (arg == NULL) { - PyErr_Restore(type, value, traceback); - return 0; - } - err = trace_frame(tstate, f, PyTrace_EXCEPTION, arg); - Py_DECREF(arg); - if (err == 0) { - PyErr_Restore(type, value, traceback); - } else { - Py_XDECREF(type); - Py_XDECREF(value); - Py_XDECREF(traceback); - } - return err; -} - -static PyCodeObject* -getcode(char *func_name, char *func_filename, int lineno) -{ - PyObject *code = NULL; - PyObject *name = NULL; - PyObject *nulltuple = NULL; - PyObject *filename = NULL; - PyCodeObject *tb_code = NULL; -#if defined(OBNOXIOUS_PRINT_STATEMENTS) - int i; - - printf("%5d: ", lineno); - assert(callstack_depth >= 0); - if (callstack_depth) { - for (i=0; iframe = f; - if (trace_frame(tstate, f, PyTrace_CALL, Py_None) < 0) { - Py_DECREF(args); - callstack_depth--; - return NULL; - } - - return f; -} - -static PyObject *traced_function_tail(PyObject *rval, PyFrameObject *f, PyThreadState *tstate) { - /* - STEALS a reference to f - */ - if (f == NULL) { - goto bad_args; - } - if (rval == NULL) { - if (tstate->curexc_traceback == NULL) { - PyTraceBack_Here(f); - } - if (trace_frame_exc(tstate, f) < 0) { - goto end; - } - } else { - if (trace_frame(tstate, f, PyTrace_RETURN, rval) < 0) { - Py_DECREF(rval); - rval = NULL; - } - } -end: - tstate->frame = f->f_back; - Py_DECREF(f); -bad_args: - callstack_depth--; - return rval; -} - -static PyObject* PyList_CrazyStringPack(char *begin, ...) -{ - PyObject *o; - PyObject *result; - va_list vargs; - - result = PyList_New(0); - if (result == NULL || begin == NULL) { - return result; - } - va_start(vargs, begin); - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return result; - } - Py_DECREF(o); - while ((begin = va_arg(vargs, char *)) != NULL) { - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return NULL; - } - Py_DECREF(o); - } - va_end(vargs); - return result; -} - -#endif /* defined(USE_CALL_TRACE) */ Copied: pypy/dist/pypy/translator/genc/g_operation.h (from r10250, pypy/dist/pypy/translator/genc.h) ============================================================================== --- pypy/dist/pypy/translator/genc.h (original) +++ pypy/dist/pypy/translator/genc/g_operation.h Sat Apr 2 17:57:37 2005 @@ -1,28 +1,8 @@ /************************************************************/ -/*** Generic C header section ***/ + /*** C header subsection: untyped operations ***/ + /*** as OP_XXX() macros calling the CPython API ***/ -#include "Python.h" -#include "compile.h" -#include "frameobject.h" -#include "structmember.h" -#include "traceback.h" -#include "marshal.h" -#include "eval.h" - -#if !defined(MIN) -#define MIN(a,b) (((a)<(b))?(a):(b)) -#endif /* MIN */ - -#include "genc_type.h" - -static PyObject *this_module_globals; - -/* Set genc_funcdef.USE_CALL_TRACE if you want call trace frames to be built */ - -#if 0 -#define OBNOXIOUS_PRINT_STATEMENTS -#endif #define op_bool(r,err,what) { \ int _retval = what; \ @@ -163,205 +143,6 @@ #define MOVE(x, y) y = x; -#define INITCHK(expr) if (!(expr)) return; -#define REGISTER_GLOBAL(name) Py_INCREF(name); PyModule_AddObject(m, #name, name); - - -#if defined(USE_CALL_TRACE) - -#define TRACE_CALL __f, __tstate -#define TRACE_ARGS PyFrameObject *__f, PyThreadState *__tstate - -#define FAIL(err) { __f->f_lineno = __f->f_code->co_firstlineno = __LINE__; goto err; } - -#define FUNCTION_HEAD(signature, self, args, names, file, line) \ - PyThreadState *__tstate = PyThreadState_GET(); \ - PyObject *__localnames = PyList_CrazyStringPack names; \ - PyFrameObject *__f = traced_function_head(self, args, signature, file, line, __tstate, __localnames); - -#define FUNCTION_CHECK() \ - assert (__f != NULL); - -#define ERR_DECREF(arg) { if (__f->f_locals) { PyDict_SetItemString(__f->f_locals, #arg, arg); } Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return traced_function_tail(rval, __f, __tstate); - -#else /* !defined(USE_CALL_TRACE) */ - -#define FAIL(err) { goto err; } - -#define ERR_DECREF(arg) { Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return rval; - -#endif /* defined(USE_CALL_TRACE) */ - - - - - -/* we need a subclass of 'builtin_function_or_method' which can be used - as methods: builtin function objects that can be bound on instances */ -static PyObject * -gencfunc_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - if (obj == Py_None) - obj = NULL; - return PyMethod_New(func, obj, type); -} -static PyTypeObject PyGenCFunction_Type = { - PyObject_HEAD_INIT(NULL) - 0, - "pypy_generated_function", - sizeof(PyCFunctionObject), - 0, - 0, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - /*&PyCFunction_Type set below*/ 0, /* tp_base */ - 0, /* tp_dict */ - gencfunc_descr_get, /* tp_descr_get */ - 0, /* tp_descr_set */ -}; - -#define MODULE_INITFUNC(modname) \ - static PyMethodDef no_methods[] = { (char *)NULL, (PyCFunction)NULL }; \ - PyMODINIT_FUNC init##modname(void) - -#define SETUP_MODULE(modname) \ - PyObject *m = Py_InitModule(#modname, no_methods); \ - PyModule_AddStringConstant(m, "__sourcefile__", __FILE__); \ - this_module_globals = PyModule_GetDict(m); \ - PyGenCFunction_Type.tp_base = &PyCFunction_Type; \ - PyType_Ready(&PyGenCFunction_Type); \ - if (setup_globalfunctions(globalfunctiondefs) < 0) \ - return; \ - if (setup_initcode(frozen_initcode, FROZEN_INITCODE_SIZE) < 0) \ - return; \ - if (setup_globalobjects(globalobjectdefs) < 0) \ - return; - - -/*** table of global objects ***/ - -typedef struct { - PyObject** p; - char* name; -} globalobjectdef_t; - -typedef struct { - PyObject** p; - PyMethodDef ml; -} globalfunctiondef_t; - -static int setup_globalobjects(globalobjectdef_t* def) -{ - PyObject* obj; - - for (; def->p != NULL; def++) { - obj = PyDict_GetItemString(this_module_globals, def->name); - if (obj == NULL) { - PyErr_Format(PyExc_AttributeError, - "initialization code should have " - "created '%s'", def->name); - return -1; - } - Py_INCREF(obj); - *def->p = obj; /* store the object ref in the global var */ - } - return 0; -} - -static int setup_globalfunctions(globalfunctiondef_t* def) -{ - PyObject* fn; - PyObject* name; - int len; - - for (; def->p != NULL; def++) { - fn = PyCFunction_New(&def->ml, NULL); - if (fn == NULL) - return -1; - fn->ob_type = &PyGenCFunction_Type; - *def->p = fn; /* store the object ref in the global var */ - - len = 0; - while (def->ml.ml_name[len] != 0) - len++; - name = PyString_FromStringAndSize(NULL, 6+len); - if (name == NULL) - return -1; - memcpy(PyString_AS_STRING(name), "gfunc_", 6); - memcpy(PyString_AS_STRING(name)+6, def->ml.ml_name, len); - if (PyDict_SetItem(this_module_globals, name, fn) < 0) - return -1; - Py_DECREF(name); - } - return 0; -} - -static int setup_initcode(char* frozendata[], int len) -{ - PyObject* co; - PyObject* globals; - PyObject* res; - char *buffer, *bufp; - int chunk, count = 0; - - buffer = PyMem_NEW(char, len); - if (buffer == NULL) - return -1; - bufp = buffer; - while (count < len) { - chunk = len-count < 1024 ? len-count : 1024; - memcpy(bufp, *frozendata, chunk); - bufp += chunk; - count += chunk; - ++frozendata; - } - co = PyMarshal_ReadObjectFromString(buffer, len); - if (co == NULL) - return -1; - PyMem_DEL(buffer); - if (!PyCode_Check(co)) { - PyErr_SetString(PyExc_TypeError, "uh?"); - return -1; - } - globals = this_module_globals; - if (PyDict_GetItemString(globals, "__builtins__") == NULL) - PyDict_SetItemString(globals, "__builtins__", - PyEval_GetBuiltins()); - res = PyEval_EvalCode((PyCodeObject *) co, globals, globals); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; -} - - /*** operations with a variable number of arguments ***/ #define OP_NEWLIST0(r,err) if (!(r=PyList_New(0))) FAIL(err) @@ -369,505 +150,3 @@ #define OP_NEWDICT0(r,err) if (!(r=PyDict_New())) FAIL(err) #define OP_NEWDICT(args,r,err) if (!(r=PyDict_Pack args)) FAIL(err) #define OP_NEWTUPLE(args,r,err) if (!(r=PyTuple_Pack args)) FAIL(err) - -static PyObject* PyList_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyList_New(n); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyList_SET_ITEM(result, i, o); - } - va_end(vargs); - return result; -} - -static PyObject* PyDict_Pack(int n, ...) -{ - int i; - PyObject *key, *val; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyDict_New(); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - key = va_arg(vargs, PyObject *); - val = va_arg(vargs, PyObject *); - if (PyDict_SetItem(result, key, val) < 0) { - Py_DECREF(result); - return NULL; - } - } - va_end(vargs); - return result; -} - -#if PY_VERSION_HEX < 0x02040000 /* 2.4 */ -static PyObject* PyTuple_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - PyObject **items; - va_list vargs; - - va_start(vargs, n); - result = PyTuple_New(n); - if (result == NULL) { - return NULL; - } - items = ((PyTupleObject *)result)->ob_item; - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - items[i] = o; - } - va_end(vargs); - return result; -} -#endif - -#if PY_VERSION_HEX >= 0x02030000 /* 2.3 */ -# define PyObject_GetItem1 PyObject_GetItem -# define PyObject_SetItem1 PyObject_SetItem -#else -/* for Python 2.2 only */ -static PyObject* PyObject_GetItem1(PyObject* obj, PyObject* index) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_GetItem(obj, index); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_GetSlice(obj, start, stop); -} -static PyObject* PyObject_SetItem1(PyObject* obj, PyObject* index, PyObject* v) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_SetItem(obj, index, v); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_SetSlice(obj, start, stop, v); -} -#endif - -static PyObject* CallWithShape(PyObject* callable, PyObject* shape, ...) -{ - /* XXX the 'shape' argument is a tuple as specified by - XXX pypy.interpreter.argument.fromshape(). This code should - XXX we made independent on the format of the 'shape' later... */ - PyObject* result = NULL; - PyObject* t = NULL; - PyObject* d = NULL; - PyObject* o; - PyObject* key; - PyObject* t2; - int i, nargs, nkwds, starflag, starstarflag; - va_list vargs; - - if (!PyTuple_Check(shape) || - PyTuple_GET_SIZE(shape) != 4 || - !PyInt_Check(PyTuple_GET_ITEM(shape, 0)) || - !PyTuple_Check(PyTuple_GET_ITEM(shape, 1)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 2)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 3))) { - Py_FatalError("in genc.h: invalid 'shape' argument"); - } - nargs = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 0)); - nkwds = PyTuple_GET_SIZE(PyTuple_GET_ITEM(shape, 1)); - starflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 2)); - starstarflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 3)); - - va_start(vargs, shape); - t = PyTuple_New(nargs); - if (t == NULL) - goto finally; - for (i = 0; i < nargs; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyTuple_SET_ITEM(t, i, o); - } - if (nkwds) { - d = PyDict_New(); - if (d == NULL) - goto finally; - for (i = 0; i < nkwds; i++) { - o = va_arg(vargs, PyObject *); - key = PyTuple_GET_ITEM(PyTuple_GET_ITEM(shape, 1), i); - if (PyDict_SetItem(d, key, o) < 0) - goto finally; - } - } - if (starflag) { - o = va_arg(vargs, PyObject *); - o = PySequence_Tuple(o); - if (o == NULL) - goto finally; - t2 = PySequence_Concat(t, o); - Py_DECREF(o); - Py_DECREF(t); - t = t2; - if (t == NULL) - goto finally; - } - if (starstarflag) { - int len1, len2, len3; - o = va_arg(vargs, PyObject *); - len1 = PyDict_Size(d); - len2 = PyDict_Size(o); - if (len1 < 0 || len2 < 0) - goto finally; - if (PyDict_Update(d, o) < 0) - goto finally; - len3 = PyDict_Size(d); - if (len1 + len2 != len3) { - PyErr_SetString(PyExc_TypeError, - "genc.h: duplicate keyword arguments"); - goto finally; - } - } - va_end(vargs); - - result = PyObject_Call(callable, t, d); - - finally: - Py_XDECREF(d); - Py_XDECREF(t); - return result; -} - - -#if defined(USE_CALL_TRACE) - -static int callstack_depth = -1; -static PyCodeObject* getcode(char *func_name, char *func_filename, int lineno); -static int trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val); -static int trace_frame_exc(PyThreadState *tstate, PyFrameObject *f); - -static int -trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val) -{ - int result = 0; - if (!tstate->use_tracing || tstate->tracing) { - /*printf("if (!tstate->use_tracing || tstate->tracing)\n");*/ - return 0; - } - if (tstate->c_profilefunc != NULL) { - /*printf("if (tstate->c_profilefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_profilefunc(tstate->c_profileobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - if (result) { - /*printf(" if (result)\n");*/ - return result; - } - } - if (tstate->c_tracefunc != NULL) { - /*printf("if (tstate->c_tracefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_tracefunc(tstate->c_traceobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - } - /*printf("return result;\n");*/ - return result; -} - -static int -trace_frame_exc(PyThreadState *tstate, PyFrameObject *f) -{ - PyObject *type, *value, *traceback, *arg; - int err; - - if (tstate->c_tracefunc == NULL) { - return 0; - } - - PyErr_Fetch(&type, &value, &traceback); - if (value == NULL) { - value = Py_None; - Py_INCREF(value); - } - arg = PyTuple_Pack(3, type, value, traceback); - if (arg == NULL) { - PyErr_Restore(type, value, traceback); - return 0; - } - err = trace_frame(tstate, f, PyTrace_EXCEPTION, arg); - Py_DECREF(arg); - if (err == 0) { - PyErr_Restore(type, value, traceback); - } else { - Py_XDECREF(type); - Py_XDECREF(value); - Py_XDECREF(traceback); - } - return err; -} - -static PyCodeObject* -getcode(char *func_name, char *func_filename, int lineno) -{ - PyObject *code = NULL; - PyObject *name = NULL; - PyObject *nulltuple = NULL; - PyObject *filename = NULL; - PyCodeObject *tb_code = NULL; -#if defined(OBNOXIOUS_PRINT_STATEMENTS) - int i; - - printf("%5d: ", lineno); - assert(callstack_depth >= 0); - if (callstack_depth) { - for (i=0; iframe = f; - if (trace_frame(tstate, f, PyTrace_CALL, Py_None) < 0) { - Py_DECREF(args); - callstack_depth--; - return NULL; - } - - return f; -} - -static PyObject *traced_function_tail(PyObject *rval, PyFrameObject *f, PyThreadState *tstate) { - /* - STEALS a reference to f - */ - if (f == NULL) { - goto bad_args; - } - if (rval == NULL) { - if (tstate->curexc_traceback == NULL) { - PyTraceBack_Here(f); - } - if (trace_frame_exc(tstate, f) < 0) { - goto end; - } - } else { - if (trace_frame(tstate, f, PyTrace_RETURN, rval) < 0) { - Py_DECREF(rval); - rval = NULL; - } - } -end: - tstate->frame = f->f_back; - Py_DECREF(f); -bad_args: - callstack_depth--; - return rval; -} - -static PyObject* PyList_CrazyStringPack(char *begin, ...) -{ - PyObject *o; - PyObject *result; - va_list vargs; - - result = PyList_New(0); - if (result == NULL || begin == NULL) { - return result; - } - va_start(vargs, begin); - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return result; - } - Py_DECREF(o); - while ((begin = va_arg(vargs, char *)) != NULL) { - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return NULL; - } - Py_DECREF(o); - } - va_end(vargs); - return result; -} - -#endif /* defined(USE_CALL_TRACE) */ Copied: pypy/dist/pypy/translator/genc/g_support.h (from r10250, pypy/dist/pypy/translator/genc.h) ============================================================================== --- pypy/dist/pypy/translator/genc.h (original) +++ pypy/dist/pypy/translator/genc/g_support.h Sat Apr 2 17:57:37 2005 @@ -1,204 +1,12 @@ /************************************************************/ -/*** Generic C header section ***/ + /*** C header subsection: support functions ***/ -#include "Python.h" -#include "compile.h" -#include "frameobject.h" -#include "structmember.h" -#include "traceback.h" -#include "marshal.h" -#include "eval.h" #if !defined(MIN) #define MIN(a,b) (((a)<(b))?(a):(b)) #endif /* MIN */ -#include "genc_type.h" - -static PyObject *this_module_globals; - -/* Set genc_funcdef.USE_CALL_TRACE if you want call trace frames to be built */ - -#if 0 -#define OBNOXIOUS_PRINT_STATEMENTS -#endif - -#define op_bool(r,err,what) { \ - int _retval = what; \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyBool_FromLong(_retval); \ - } - -#define op_richcmp(x,y,r,err,dir) \ - if (!(r=PyObject_RichCompare(x,y,dir))) FAIL(err) -#define OP_LT(x,y,r,err) op_richcmp(x,y,r,err, Py_LT) -#define OP_LE(x,y,r,err) op_richcmp(x,y,r,err, Py_LE) -#define OP_EQ(x,y,r,err) op_richcmp(x,y,r,err, Py_EQ) -#define OP_NE(x,y,r,err) op_richcmp(x,y,r,err, Py_NE) -#define OP_GT(x,y,r,err) op_richcmp(x,y,r,err, Py_GT) -#define OP_GE(x,y,r,err) op_richcmp(x,y,r,err, Py_GE) - -#define OP_IS_(x,y,r,err) op_bool(r,err,(x == y)) - -#define OP_IS_TRUE(x,r,err) op_bool(r,err,PyObject_IsTrue(x)) - -#define OP_LEN(x,r,err) { \ - int _retval = PyObject_Size(x); \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyInt_FromLong(_retval); \ - } -#define OP_NEG(x,r,err) if (!(r=PyNumber_Negative(x))) FAIL(err) -#define OP_POS(x,r,err) if (!(r=PyNumber_Positive(x))) FAIL(err) -#define OP_INVERT(x,r,err) if (!(r=PyNumber_Invert(x))) FAIL(err) - -#define OP_ADD(x,y,r,err) if (!(r=PyNumber_Add(x,y))) FAIL(err) -#define OP_SUB(x,y,r,err) if (!(r=PyNumber_Subtract(x,y))) FAIL(err) -#define OP_MUL(x,y,r,err) if (!(r=PyNumber_Multiply(x,y))) FAIL(err) -#define OP_TRUEDIV(x,y,r,err) if (!(r=PyNumber_TrueDivide(x,y))) FAIL(err) -#define OP_FLOORDIV(x,y,r,err) if (!(r=PyNumber_FloorDivide(x,y)))FAIL(err) -#define OP_DIV(x,y,r,err) if (!(r=PyNumber_Divide(x,y))) FAIL(err) -#define OP_MOD(x,y,r,err) if (!(r=PyNumber_Remainder(x,y))) FAIL(err) -#define OP_POW(x,y,z,r,err) if (!(r=PyNumber_Power(x,y,z))) FAIL(err) -#define OP_LSHIFT(x,y,r,err) if (!(r=PyNumber_Lshift(x,y))) FAIL(err) -#define OP_RSHIFT(x,y,r,err) if (!(r=PyNumber_Rshift(x,y))) FAIL(err) -#define OP_AND_(x,y,r,err) if (!(r=PyNumber_And(x,y))) FAIL(err) -#define OP_OR_(x,y,r,err) if (!(r=PyNumber_Or(x,y))) FAIL(err) -#define OP_XOR(x,y,r,err) if (!(r=PyNumber_Xor(x,y))) FAIL(err) - -#define OP_INPLACE_ADD(x,y,r,err) if (!(r=PyNumber_InPlaceAdd(x,y))) \ - FAIL(err) -#define OP_INPLACE_SUB(x,y,r,err) if (!(r=PyNumber_InPlaceSubtract(x,y))) \ - FAIL(err) -#define OP_INPLACE_MUL(x,y,r,err) if (!(r=PyNumber_InPlaceMultiply(x,y))) \ - FAIL(err) -#define OP_INPLACE_TRUEDIV(x,y,r,err) if (!(r=PyNumber_InPlaceTrueDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_FLOORDIV(x,y,r,err)if(!(r=PyNumber_InPlaceFloorDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_DIV(x,y,r,err) if (!(r=PyNumber_InPlaceDivide(x,y))) \ - FAIL(err) -#define OP_INPLACE_MOD(x,y,r,err) if (!(r=PyNumber_InPlaceRemainder(x,y))) \ - FAIL(err) -#define OP_INPLACE_POW(x,y,r,err) if (!(r=PyNumber_InPlacePower(x,y,Py_None))) \ - FAIL(err) -#define OP_INPLACE_LSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceLshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_RSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceRshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_AND(x,y,r,err) if (!(r=PyNumber_InPlaceAnd(x,y))) \ - FAIL(err) -#define OP_INPLACE_OR(x,y,r,err) if (!(r=PyNumber_InPlaceOr(x,y))) \ - FAIL(err) -#define OP_INPLACE_XOR(x,y,r,err) if (!(r=PyNumber_InPlaceXor(x,y))) \ - FAIL(err) - -#define OP_GETITEM(x,y,r,err) if (!(r=PyObject_GetItem1(x,y))) FAIL(err) -#define OP_SETITEM(x,y,z,r,err) if ((PyObject_SetItem1(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELITEM(x,y,r,err) if ((PyObject_DelItem(x,y))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_CONTAINS(x,y,r,err) op_bool(r,err,(PySequence_Contains(x,y))) - -#define OP_GETATTR(x,y,r,err) if (!(r=PyObject_GetAttr(x,y))) FAIL(err) -#define OP_SETATTR(x,y,z,r,err) if ((PyObject_SetAttr(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELATTR(x,y,r,err) if ((PyObject_SetAttr(x,y,NULL))<0)FAIL(err) \ - r=Py_None; Py_INCREF(r); - -#define OP_NEWSLICE(x,y,z,r,err) if (!(r=PySlice_New(x,y,z))) FAIL(err) - -#define OP_GETSLICE(x,y,z,r,err) { \ - PyObject *__yo = y, *__zo = z; \ - int __y = 0, __z = INT_MAX; \ - if (__yo == Py_None) __yo = NULL; \ - if (__zo == Py_None) __zo = NULL; \ - if (!_PyEval_SliceIndex(__yo, &__y) || \ - !_PyEval_SliceIndex(__zo, &__z) || \ - !(r=PySequence_GetSlice(x, __y, __z))) FAIL(err) \ - } - -#define OP_ALLOC_AND_SET(x,y,r,err) { \ - /* XXX check for long/int overflow */ \ - int __i, __x = PyInt_AsLong(x); \ - if (PyErr_Occurred()) FAIL(err) \ - if (!(r = PyList_New(__x))) FAIL(err) \ - for (__i=0; __i<__x; __i++) { \ - Py_INCREF(y); \ - PyList_SET_ITEM(r, __i, y); \ - } \ - } - -#define OP_ITER(x,r,err) if (!(r=PyObject_GetIter(x))) FAIL(err) -#define OP_NEXT(x,r,err) if (!(r=PyIter_Next(x))) { \ - if (!PyErr_Occurred()) PyErr_SetNone(PyExc_StopIteration); \ - FAIL(err) \ - } - -#define OP_SIMPLE_CALL(args,r,err) if (!(r=PyObject_CallFunctionObjArgs args)) \ - FAIL(err) -#define OP_CALL_ARGS(args,r,err) if (!(r=CallWithShape args)) FAIL(err) - -/* Needs to act like getattr(x, '__class__', type(x)) */ -#define OP_TYPE(x,r,err) { \ - PyObject *o = x; \ - if (PyInstance_Check(o)) { \ - r = (PyObject*)(((PyInstanceObject*)o)->in_class); \ - } else { \ - r = (PyObject*)o->ob_type; \ - } \ - Py_INCREF(r); \ - } - -/* Needs to act like instance(x,y) */ -#define OP_ISSUBTYPE(x,y,r,err) \ - op_bool(r,err,PyClass_IsSubclass(x, y)) - - -/*** misc ***/ - -#define MOVE(x, y) y = x; - -#define INITCHK(expr) if (!(expr)) return; -#define REGISTER_GLOBAL(name) Py_INCREF(name); PyModule_AddObject(m, #name, name); - - -#if defined(USE_CALL_TRACE) - -#define TRACE_CALL __f, __tstate -#define TRACE_ARGS PyFrameObject *__f, PyThreadState *__tstate - -#define FAIL(err) { __f->f_lineno = __f->f_code->co_firstlineno = __LINE__; goto err; } - -#define FUNCTION_HEAD(signature, self, args, names, file, line) \ - PyThreadState *__tstate = PyThreadState_GET(); \ - PyObject *__localnames = PyList_CrazyStringPack names; \ - PyFrameObject *__f = traced_function_head(self, args, signature, file, line, __tstate, __localnames); - -#define FUNCTION_CHECK() \ - assert (__f != NULL); - -#define ERR_DECREF(arg) { if (__f->f_locals) { PyDict_SetItemString(__f->f_locals, #arg, arg); } Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return traced_function_tail(rval, __f, __tstate); - -#else /* !defined(USE_CALL_TRACE) */ - -#define FAIL(err) { goto err; } - -#define ERR_DECREF(arg) { Py_DECREF(arg); } - -#define FUNCTION_RETURN(rval) return rval; - -#endif /* defined(USE_CALL_TRACE) */ - - - - /* we need a subclass of 'builtin_function_or_method' which can be used as methods: builtin function objects that can be bound on instances */ @@ -247,128 +55,8 @@ 0, /* tp_descr_set */ }; -#define MODULE_INITFUNC(modname) \ - static PyMethodDef no_methods[] = { (char *)NULL, (PyCFunction)NULL }; \ - PyMODINIT_FUNC init##modname(void) - -#define SETUP_MODULE(modname) \ - PyObject *m = Py_InitModule(#modname, no_methods); \ - PyModule_AddStringConstant(m, "__sourcefile__", __FILE__); \ - this_module_globals = PyModule_GetDict(m); \ - PyGenCFunction_Type.tp_base = &PyCFunction_Type; \ - PyType_Ready(&PyGenCFunction_Type); \ - if (setup_globalfunctions(globalfunctiondefs) < 0) \ - return; \ - if (setup_initcode(frozen_initcode, FROZEN_INITCODE_SIZE) < 0) \ - return; \ - if (setup_globalobjects(globalobjectdefs) < 0) \ - return; - - -/*** table of global objects ***/ - -typedef struct { - PyObject** p; - char* name; -} globalobjectdef_t; - -typedef struct { - PyObject** p; - PyMethodDef ml; -} globalfunctiondef_t; -static int setup_globalobjects(globalobjectdef_t* def) -{ - PyObject* obj; - - for (; def->p != NULL; def++) { - obj = PyDict_GetItemString(this_module_globals, def->name); - if (obj == NULL) { - PyErr_Format(PyExc_AttributeError, - "initialization code should have " - "created '%s'", def->name); - return -1; - } - Py_INCREF(obj); - *def->p = obj; /* store the object ref in the global var */ - } - return 0; -} - -static int setup_globalfunctions(globalfunctiondef_t* def) -{ - PyObject* fn; - PyObject* name; - int len; - - for (; def->p != NULL; def++) { - fn = PyCFunction_New(&def->ml, NULL); - if (fn == NULL) - return -1; - fn->ob_type = &PyGenCFunction_Type; - *def->p = fn; /* store the object ref in the global var */ - - len = 0; - while (def->ml.ml_name[len] != 0) - len++; - name = PyString_FromStringAndSize(NULL, 6+len); - if (name == NULL) - return -1; - memcpy(PyString_AS_STRING(name), "gfunc_", 6); - memcpy(PyString_AS_STRING(name)+6, def->ml.ml_name, len); - if (PyDict_SetItem(this_module_globals, name, fn) < 0) - return -1; - Py_DECREF(name); - } - return 0; -} - -static int setup_initcode(char* frozendata[], int len) -{ - PyObject* co; - PyObject* globals; - PyObject* res; - char *buffer, *bufp; - int chunk, count = 0; - - buffer = PyMem_NEW(char, len); - if (buffer == NULL) - return -1; - bufp = buffer; - while (count < len) { - chunk = len-count < 1024 ? len-count : 1024; - memcpy(bufp, *frozendata, chunk); - bufp += chunk; - count += chunk; - ++frozendata; - } - co = PyMarshal_ReadObjectFromString(buffer, len); - if (co == NULL) - return -1; - PyMem_DEL(buffer); - if (!PyCode_Check(co)) { - PyErr_SetString(PyExc_TypeError, "uh?"); - return -1; - } - globals = this_module_globals; - if (PyDict_GetItemString(globals, "__builtins__") == NULL) - PyDict_SetItemString(globals, "__builtins__", - PyEval_GetBuiltins()); - res = PyEval_EvalCode((PyCodeObject *) co, globals, globals); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; -} - - -/*** operations with a variable number of arguments ***/ - -#define OP_NEWLIST0(r,err) if (!(r=PyList_New(0))) FAIL(err) -#define OP_NEWLIST(args,r,err) if (!(r=PyList_Pack args)) FAIL(err) -#define OP_NEWDICT0(r,err) if (!(r=PyDict_New())) FAIL(err) -#define OP_NEWDICT(args,r,err) if (!(r=PyDict_Pack args)) FAIL(err) -#define OP_NEWTUPLE(args,r,err) if (!(r=PyTuple_Pack args)) FAIL(err) +/*** misc support functions ***/ static PyObject* PyList_Pack(int n, ...) { @@ -601,273 +289,3 @@ Py_XDECREF(t); return result; } - - -#if defined(USE_CALL_TRACE) - -static int callstack_depth = -1; -static PyCodeObject* getcode(char *func_name, char *func_filename, int lineno); -static int trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val); -static int trace_frame_exc(PyThreadState *tstate, PyFrameObject *f); - -static int -trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val) -{ - int result = 0; - if (!tstate->use_tracing || tstate->tracing) { - /*printf("if (!tstate->use_tracing || tstate->tracing)\n");*/ - return 0; - } - if (tstate->c_profilefunc != NULL) { - /*printf("if (tstate->c_profilefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_profilefunc(tstate->c_profileobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - if (result) { - /*printf(" if (result)\n");*/ - return result; - } - } - if (tstate->c_tracefunc != NULL) { - /*printf("if (tstate->c_tracefunc != NULL)\n");*/ - tstate->tracing++; - result = tstate->c_tracefunc(tstate->c_traceobj, - f, code , val); - tstate->use_tracing = ((tstate->c_tracefunc != NULL) - || (tstate->c_profilefunc != NULL)); - tstate->tracing--; - } - /*printf("return result;\n");*/ - return result; -} - -static int -trace_frame_exc(PyThreadState *tstate, PyFrameObject *f) -{ - PyObject *type, *value, *traceback, *arg; - int err; - - if (tstate->c_tracefunc == NULL) { - return 0; - } - - PyErr_Fetch(&type, &value, &traceback); - if (value == NULL) { - value = Py_None; - Py_INCREF(value); - } - arg = PyTuple_Pack(3, type, value, traceback); - if (arg == NULL) { - PyErr_Restore(type, value, traceback); - return 0; - } - err = trace_frame(tstate, f, PyTrace_EXCEPTION, arg); - Py_DECREF(arg); - if (err == 0) { - PyErr_Restore(type, value, traceback); - } else { - Py_XDECREF(type); - Py_XDECREF(value); - Py_XDECREF(traceback); - } - return err; -} - -static PyCodeObject* -getcode(char *func_name, char *func_filename, int lineno) -{ - PyObject *code = NULL; - PyObject *name = NULL; - PyObject *nulltuple = NULL; - PyObject *filename = NULL; - PyCodeObject *tb_code = NULL; -#if defined(OBNOXIOUS_PRINT_STATEMENTS) - int i; - - printf("%5d: ", lineno); - assert(callstack_depth >= 0); - if (callstack_depth) { - for (i=0; iframe = f; - if (trace_frame(tstate, f, PyTrace_CALL, Py_None) < 0) { - Py_DECREF(args); - callstack_depth--; - return NULL; - } - - return f; -} - -static PyObject *traced_function_tail(PyObject *rval, PyFrameObject *f, PyThreadState *tstate) { - /* - STEALS a reference to f - */ - if (f == NULL) { - goto bad_args; - } - if (rval == NULL) { - if (tstate->curexc_traceback == NULL) { - PyTraceBack_Here(f); - } - if (trace_frame_exc(tstate, f) < 0) { - goto end; - } - } else { - if (trace_frame(tstate, f, PyTrace_RETURN, rval) < 0) { - Py_DECREF(rval); - rval = NULL; - } - } -end: - tstate->frame = f->f_back; - Py_DECREF(f); -bad_args: - callstack_depth--; - return rval; -} - -static PyObject* PyList_CrazyStringPack(char *begin, ...) -{ - PyObject *o; - PyObject *result; - va_list vargs; - - result = PyList_New(0); - if (result == NULL || begin == NULL) { - return result; - } - va_start(vargs, begin); - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return result; - } - Py_DECREF(o); - while ((begin = va_arg(vargs, char *)) != NULL) { - o = PyString_FromString(begin); - if (o == NULL) { - Py_XDECREF(result); - return NULL; - } - if (PyList_Append(result, o) == -1) { - Py_DECREF(o); - Py_XDECREF(result); - return NULL; - } - Py_DECREF(o); - } - va_end(vargs); - return result; -} - -#endif /* defined(USE_CALL_TRACE) */ Copied: pypy/dist/pypy/translator/genc/g_trace.h (from r10250, pypy/dist/pypy/translator/genc.h) ============================================================================== --- pypy/dist/pypy/translator/genc.h (original) +++ pypy/dist/pypy/translator/genc/g_trace.h Sat Apr 2 17:57:37 2005 @@ -1,22 +1,6 @@ /************************************************************/ -/*** Generic C header section ***/ - -#include "Python.h" -#include "compile.h" -#include "frameobject.h" -#include "structmember.h" -#include "traceback.h" -#include "marshal.h" -#include "eval.h" - -#if !defined(MIN) -#define MIN(a,b) (((a)<(b))?(a):(b)) -#endif /* MIN */ - -#include "genc_type.h" - -static PyObject *this_module_globals; + /*** C header subsection: pdb tracing of calls ***/ /* Set genc_funcdef.USE_CALL_TRACE if you want call trace frames to be built */ @@ -24,148 +8,8 @@ #define OBNOXIOUS_PRINT_STATEMENTS #endif -#define op_bool(r,err,what) { \ - int _retval = what; \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyBool_FromLong(_retval); \ - } - -#define op_richcmp(x,y,r,err,dir) \ - if (!(r=PyObject_RichCompare(x,y,dir))) FAIL(err) -#define OP_LT(x,y,r,err) op_richcmp(x,y,r,err, Py_LT) -#define OP_LE(x,y,r,err) op_richcmp(x,y,r,err, Py_LE) -#define OP_EQ(x,y,r,err) op_richcmp(x,y,r,err, Py_EQ) -#define OP_NE(x,y,r,err) op_richcmp(x,y,r,err, Py_NE) -#define OP_GT(x,y,r,err) op_richcmp(x,y,r,err, Py_GT) -#define OP_GE(x,y,r,err) op_richcmp(x,y,r,err, Py_GE) - -#define OP_IS_(x,y,r,err) op_bool(r,err,(x == y)) - -#define OP_IS_TRUE(x,r,err) op_bool(r,err,PyObject_IsTrue(x)) - -#define OP_LEN(x,r,err) { \ - int _retval = PyObject_Size(x); \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyInt_FromLong(_retval); \ - } -#define OP_NEG(x,r,err) if (!(r=PyNumber_Negative(x))) FAIL(err) -#define OP_POS(x,r,err) if (!(r=PyNumber_Positive(x))) FAIL(err) -#define OP_INVERT(x,r,err) if (!(r=PyNumber_Invert(x))) FAIL(err) - -#define OP_ADD(x,y,r,err) if (!(r=PyNumber_Add(x,y))) FAIL(err) -#define OP_SUB(x,y,r,err) if (!(r=PyNumber_Subtract(x,y))) FAIL(err) -#define OP_MUL(x,y,r,err) if (!(r=PyNumber_Multiply(x,y))) FAIL(err) -#define OP_TRUEDIV(x,y,r,err) if (!(r=PyNumber_TrueDivide(x,y))) FAIL(err) -#define OP_FLOORDIV(x,y,r,err) if (!(r=PyNumber_FloorDivide(x,y)))FAIL(err) -#define OP_DIV(x,y,r,err) if (!(r=PyNumber_Divide(x,y))) FAIL(err) -#define OP_MOD(x,y,r,err) if (!(r=PyNumber_Remainder(x,y))) FAIL(err) -#define OP_POW(x,y,z,r,err) if (!(r=PyNumber_Power(x,y,z))) FAIL(err) -#define OP_LSHIFT(x,y,r,err) if (!(r=PyNumber_Lshift(x,y))) FAIL(err) -#define OP_RSHIFT(x,y,r,err) if (!(r=PyNumber_Rshift(x,y))) FAIL(err) -#define OP_AND_(x,y,r,err) if (!(r=PyNumber_And(x,y))) FAIL(err) -#define OP_OR_(x,y,r,err) if (!(r=PyNumber_Or(x,y))) FAIL(err) -#define OP_XOR(x,y,r,err) if (!(r=PyNumber_Xor(x,y))) FAIL(err) - -#define OP_INPLACE_ADD(x,y,r,err) if (!(r=PyNumber_InPlaceAdd(x,y))) \ - FAIL(err) -#define OP_INPLACE_SUB(x,y,r,err) if (!(r=PyNumber_InPlaceSubtract(x,y))) \ - FAIL(err) -#define OP_INPLACE_MUL(x,y,r,err) if (!(r=PyNumber_InPlaceMultiply(x,y))) \ - FAIL(err) -#define OP_INPLACE_TRUEDIV(x,y,r,err) if (!(r=PyNumber_InPlaceTrueDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_FLOORDIV(x,y,r,err)if(!(r=PyNumber_InPlaceFloorDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_DIV(x,y,r,err) if (!(r=PyNumber_InPlaceDivide(x,y))) \ - FAIL(err) -#define OP_INPLACE_MOD(x,y,r,err) if (!(r=PyNumber_InPlaceRemainder(x,y))) \ - FAIL(err) -#define OP_INPLACE_POW(x,y,r,err) if (!(r=PyNumber_InPlacePower(x,y,Py_None))) \ - FAIL(err) -#define OP_INPLACE_LSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceLshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_RSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceRshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_AND(x,y,r,err) if (!(r=PyNumber_InPlaceAnd(x,y))) \ - FAIL(err) -#define OP_INPLACE_OR(x,y,r,err) if (!(r=PyNumber_InPlaceOr(x,y))) \ - FAIL(err) -#define OP_INPLACE_XOR(x,y,r,err) if (!(r=PyNumber_InPlaceXor(x,y))) \ - FAIL(err) - -#define OP_GETITEM(x,y,r,err) if (!(r=PyObject_GetItem1(x,y))) FAIL(err) -#define OP_SETITEM(x,y,z,r,err) if ((PyObject_SetItem1(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELITEM(x,y,r,err) if ((PyObject_DelItem(x,y))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_CONTAINS(x,y,r,err) op_bool(r,err,(PySequence_Contains(x,y))) - -#define OP_GETATTR(x,y,r,err) if (!(r=PyObject_GetAttr(x,y))) FAIL(err) -#define OP_SETATTR(x,y,z,r,err) if ((PyObject_SetAttr(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELATTR(x,y,r,err) if ((PyObject_SetAttr(x,y,NULL))<0)FAIL(err) \ - r=Py_None; Py_INCREF(r); - -#define OP_NEWSLICE(x,y,z,r,err) if (!(r=PySlice_New(x,y,z))) FAIL(err) - -#define OP_GETSLICE(x,y,z,r,err) { \ - PyObject *__yo = y, *__zo = z; \ - int __y = 0, __z = INT_MAX; \ - if (__yo == Py_None) __yo = NULL; \ - if (__zo == Py_None) __zo = NULL; \ - if (!_PyEval_SliceIndex(__yo, &__y) || \ - !_PyEval_SliceIndex(__zo, &__z) || \ - !(r=PySequence_GetSlice(x, __y, __z))) FAIL(err) \ - } - -#define OP_ALLOC_AND_SET(x,y,r,err) { \ - /* XXX check for long/int overflow */ \ - int __i, __x = PyInt_AsLong(x); \ - if (PyErr_Occurred()) FAIL(err) \ - if (!(r = PyList_New(__x))) FAIL(err) \ - for (__i=0; __i<__x; __i++) { \ - Py_INCREF(y); \ - PyList_SET_ITEM(r, __i, y); \ - } \ - } - -#define OP_ITER(x,r,err) if (!(r=PyObject_GetIter(x))) FAIL(err) -#define OP_NEXT(x,r,err) if (!(r=PyIter_Next(x))) { \ - if (!PyErr_Occurred()) PyErr_SetNone(PyExc_StopIteration); \ - FAIL(err) \ - } - -#define OP_SIMPLE_CALL(args,r,err) if (!(r=PyObject_CallFunctionObjArgs args)) \ - FAIL(err) -#define OP_CALL_ARGS(args,r,err) if (!(r=CallWithShape args)) FAIL(err) - -/* Needs to act like getattr(x, '__class__', type(x)) */ -#define OP_TYPE(x,r,err) { \ - PyObject *o = x; \ - if (PyInstance_Check(o)) { \ - r = (PyObject*)(((PyInstanceObject*)o)->in_class); \ - } else { \ - r = (PyObject*)o->ob_type; \ - } \ - Py_INCREF(r); \ - } - -/* Needs to act like instance(x,y) */ -#define OP_ISSUBTYPE(x,y,r,err) \ - op_bool(r,err,PyClass_IsSubclass(x, y)) - - -/*** misc ***/ - -#define MOVE(x, y) y = x; - -#define INITCHK(expr) if (!(expr)) return; -#define REGISTER_GLOBAL(name) Py_INCREF(name); PyModule_AddObject(m, #name, name); +/*** Interface ***/ #if defined(USE_CALL_TRACE) @@ -197,411 +41,7 @@ #endif /* defined(USE_CALL_TRACE) */ - - - -/* we need a subclass of 'builtin_function_or_method' which can be used - as methods: builtin function objects that can be bound on instances */ -static PyObject * -gencfunc_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - if (obj == Py_None) - obj = NULL; - return PyMethod_New(func, obj, type); -} -static PyTypeObject PyGenCFunction_Type = { - PyObject_HEAD_INIT(NULL) - 0, - "pypy_generated_function", - sizeof(PyCFunctionObject), - 0, - 0, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - /*&PyCFunction_Type set below*/ 0, /* tp_base */ - 0, /* tp_dict */ - gencfunc_descr_get, /* tp_descr_get */ - 0, /* tp_descr_set */ -}; - -#define MODULE_INITFUNC(modname) \ - static PyMethodDef no_methods[] = { (char *)NULL, (PyCFunction)NULL }; \ - PyMODINIT_FUNC init##modname(void) - -#define SETUP_MODULE(modname) \ - PyObject *m = Py_InitModule(#modname, no_methods); \ - PyModule_AddStringConstant(m, "__sourcefile__", __FILE__); \ - this_module_globals = PyModule_GetDict(m); \ - PyGenCFunction_Type.tp_base = &PyCFunction_Type; \ - PyType_Ready(&PyGenCFunction_Type); \ - if (setup_globalfunctions(globalfunctiondefs) < 0) \ - return; \ - if (setup_initcode(frozen_initcode, FROZEN_INITCODE_SIZE) < 0) \ - return; \ - if (setup_globalobjects(globalobjectdefs) < 0) \ - return; - - -/*** table of global objects ***/ - -typedef struct { - PyObject** p; - char* name; -} globalobjectdef_t; - -typedef struct { - PyObject** p; - PyMethodDef ml; -} globalfunctiondef_t; - -static int setup_globalobjects(globalobjectdef_t* def) -{ - PyObject* obj; - - for (; def->p != NULL; def++) { - obj = PyDict_GetItemString(this_module_globals, def->name); - if (obj == NULL) { - PyErr_Format(PyExc_AttributeError, - "initialization code should have " - "created '%s'", def->name); - return -1; - } - Py_INCREF(obj); - *def->p = obj; /* store the object ref in the global var */ - } - return 0; -} - -static int setup_globalfunctions(globalfunctiondef_t* def) -{ - PyObject* fn; - PyObject* name; - int len; - - for (; def->p != NULL; def++) { - fn = PyCFunction_New(&def->ml, NULL); - if (fn == NULL) - return -1; - fn->ob_type = &PyGenCFunction_Type; - *def->p = fn; /* store the object ref in the global var */ - - len = 0; - while (def->ml.ml_name[len] != 0) - len++; - name = PyString_FromStringAndSize(NULL, 6+len); - if (name == NULL) - return -1; - memcpy(PyString_AS_STRING(name), "gfunc_", 6); - memcpy(PyString_AS_STRING(name)+6, def->ml.ml_name, len); - if (PyDict_SetItem(this_module_globals, name, fn) < 0) - return -1; - Py_DECREF(name); - } - return 0; -} - -static int setup_initcode(char* frozendata[], int len) -{ - PyObject* co; - PyObject* globals; - PyObject* res; - char *buffer, *bufp; - int chunk, count = 0; - - buffer = PyMem_NEW(char, len); - if (buffer == NULL) - return -1; - bufp = buffer; - while (count < len) { - chunk = len-count < 1024 ? len-count : 1024; - memcpy(bufp, *frozendata, chunk); - bufp += chunk; - count += chunk; - ++frozendata; - } - co = PyMarshal_ReadObjectFromString(buffer, len); - if (co == NULL) - return -1; - PyMem_DEL(buffer); - if (!PyCode_Check(co)) { - PyErr_SetString(PyExc_TypeError, "uh?"); - return -1; - } - globals = this_module_globals; - if (PyDict_GetItemString(globals, "__builtins__") == NULL) - PyDict_SetItemString(globals, "__builtins__", - PyEval_GetBuiltins()); - res = PyEval_EvalCode((PyCodeObject *) co, globals, globals); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; -} - - -/*** operations with a variable number of arguments ***/ - -#define OP_NEWLIST0(r,err) if (!(r=PyList_New(0))) FAIL(err) -#define OP_NEWLIST(args,r,err) if (!(r=PyList_Pack args)) FAIL(err) -#define OP_NEWDICT0(r,err) if (!(r=PyDict_New())) FAIL(err) -#define OP_NEWDICT(args,r,err) if (!(r=PyDict_Pack args)) FAIL(err) -#define OP_NEWTUPLE(args,r,err) if (!(r=PyTuple_Pack args)) FAIL(err) - -static PyObject* PyList_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyList_New(n); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyList_SET_ITEM(result, i, o); - } - va_end(vargs); - return result; -} - -static PyObject* PyDict_Pack(int n, ...) -{ - int i; - PyObject *key, *val; - PyObject *result; - va_list vargs; - - va_start(vargs, n); - result = PyDict_New(); - if (result == NULL) { - return NULL; - } - for (i = 0; i < n; i++) { - key = va_arg(vargs, PyObject *); - val = va_arg(vargs, PyObject *); - if (PyDict_SetItem(result, key, val) < 0) { - Py_DECREF(result); - return NULL; - } - } - va_end(vargs); - return result; -} - -#if PY_VERSION_HEX < 0x02040000 /* 2.4 */ -static PyObject* PyTuple_Pack(int n, ...) -{ - int i; - PyObject *o; - PyObject *result; - PyObject **items; - va_list vargs; - - va_start(vargs, n); - result = PyTuple_New(n); - if (result == NULL) { - return NULL; - } - items = ((PyTupleObject *)result)->ob_item; - for (i = 0; i < n; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - items[i] = o; - } - va_end(vargs); - return result; -} -#endif - -#if PY_VERSION_HEX >= 0x02030000 /* 2.3 */ -# define PyObject_GetItem1 PyObject_GetItem -# define PyObject_SetItem1 PyObject_SetItem -#else -/* for Python 2.2 only */ -static PyObject* PyObject_GetItem1(PyObject* obj, PyObject* index) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_GetItem(obj, index); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_GetSlice(obj, start, stop); -} -static PyObject* PyObject_SetItem1(PyObject* obj, PyObject* index, PyObject* v) -{ - int start, stop, step; - if (!PySlice_Check(index)) { - return PyObject_SetItem(obj, index, v); - } - if (((PySliceObject*) index)->start == Py_None) { - start = -INT_MAX-1; - } else { - start = PyInt_AsLong(((PySliceObject*) index)->start); - if (start == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->stop == Py_None) { - stop = INT_MAX; - } else { - stop = PyInt_AsLong(((PySliceObject*) index)->stop); - if (stop == -1 && PyErr_Occurred()) { - return NULL; - } - } - if (((PySliceObject*) index)->step != Py_None) { - step = PyInt_AsLong(((PySliceObject*) index)->step); - if (step == -1 && PyErr_Occurred()) { - return NULL; - } - if (step != 1) { - PyErr_SetString(PyExc_ValueError, - "obj[slice]: no step allowed"); - return NULL; - } - } - return PySequence_SetSlice(obj, start, stop, v); -} -#endif - -static PyObject* CallWithShape(PyObject* callable, PyObject* shape, ...) -{ - /* XXX the 'shape' argument is a tuple as specified by - XXX pypy.interpreter.argument.fromshape(). This code should - XXX we made independent on the format of the 'shape' later... */ - PyObject* result = NULL; - PyObject* t = NULL; - PyObject* d = NULL; - PyObject* o; - PyObject* key; - PyObject* t2; - int i, nargs, nkwds, starflag, starstarflag; - va_list vargs; - - if (!PyTuple_Check(shape) || - PyTuple_GET_SIZE(shape) != 4 || - !PyInt_Check(PyTuple_GET_ITEM(shape, 0)) || - !PyTuple_Check(PyTuple_GET_ITEM(shape, 1)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 2)) || - !PyInt_Check(PyTuple_GET_ITEM(shape, 3))) { - Py_FatalError("in genc.h: invalid 'shape' argument"); - } - nargs = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 0)); - nkwds = PyTuple_GET_SIZE(PyTuple_GET_ITEM(shape, 1)); - starflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 2)); - starstarflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 3)); - - va_start(vargs, shape); - t = PyTuple_New(nargs); - if (t == NULL) - goto finally; - for (i = 0; i < nargs; i++) { - o = va_arg(vargs, PyObject *); - Py_INCREF(o); - PyTuple_SET_ITEM(t, i, o); - } - if (nkwds) { - d = PyDict_New(); - if (d == NULL) - goto finally; - for (i = 0; i < nkwds; i++) { - o = va_arg(vargs, PyObject *); - key = PyTuple_GET_ITEM(PyTuple_GET_ITEM(shape, 1), i); - if (PyDict_SetItem(d, key, o) < 0) - goto finally; - } - } - if (starflag) { - o = va_arg(vargs, PyObject *); - o = PySequence_Tuple(o); - if (o == NULL) - goto finally; - t2 = PySequence_Concat(t, o); - Py_DECREF(o); - Py_DECREF(t); - t = t2; - if (t == NULL) - goto finally; - } - if (starstarflag) { - int len1, len2, len3; - o = va_arg(vargs, PyObject *); - len1 = PyDict_Size(d); - len2 = PyDict_Size(o); - if (len1 < 0 || len2 < 0) - goto finally; - if (PyDict_Update(d, o) < 0) - goto finally; - len3 = PyDict_Size(d); - if (len1 + len2 != len3) { - PyErr_SetString(PyExc_TypeError, - "genc.h: duplicate keyword arguments"); - goto finally; - } - } - va_end(vargs); - - result = PyObject_Call(callable, t, d); - - finally: - Py_XDECREF(d); - Py_XDECREF(t); - return result; -} - +/*** Implementation ***/ #if defined(USE_CALL_TRACE) Copied: pypy/dist/pypy/translator/genc/genc.py (from r10250, pypy/dist/pypy/translator/genc.py) ============================================================================== --- pypy/dist/pypy/translator/genc.py (original) +++ pypy/dist/pypy/translator/genc/genc.py Sat Apr 2 17:57:37 2005 @@ -8,8 +8,8 @@ from pypy.translator.gensupp import uniquemodulename from pypy.translator.gensupp import NameManager -from pypy.translator.genc_funcdef import FunctionDef, USE_CALL_TRACE -from pypy.translator.genc_pyobj import CType_PyObject, ctypeof +from pypy.translator.genc.funcdef import FunctionDef, USE_CALL_TRACE +from pypy.translator.genc.t_pyobj import CType_PyObject, ctypeof # ____________________________________________________________ @@ -174,7 +174,7 @@ # ____________________________________________________________ - C_HEADER = '#include "genc.h"\n' + C_HEADER = '#include "g_include.h"\n' C_SEP = "/************************************************************/" Added: pypy/dist/pypy/translator/genc/test/__init__.py ============================================================================== Copied: pypy/dist/pypy/translator/genc/test/test_ctrans.py (from r10251, pypy/dist/pypy/translator/test/test_ctrans.py) ============================================================================== --- pypy/dist/pypy/translator/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_ctrans.py Sat Apr 2 17:57:37 2005 @@ -1,8 +1,8 @@ import autopath import py, sys from pypy.tool.udir import udir -from pypy.translator.genc import GenC -from pypy.translator.typer import GenCSpecializer +from pypy.translator.genc.genc import GenC +from pypy.translator.genc.ctyper import GenCSpecializer from pypy.objspace.flow.model import * from pypy.translator.tool.buildpyxmodule import make_module_from_c from pypy.translator.tool.buildpyxmodule import skip_missing_compiler Deleted: /pypy/dist/pypy/translator/genc_funcdef.py ============================================================================== --- /pypy/dist/pypy/translator/genc_funcdef.py Sat Apr 2 17:57:37 2005 +++ (empty file) @@ -1,486 +0,0 @@ -from __future__ import generators -from pypy.objspace.flow.model import Variable, Constant -from pypy.objspace.flow.model import traverse, uniqueitems, checkgraph -from pypy.objspace.flow.model import Block, Link -from pypy.objspace.flow.model import last_exception, last_exc_value -from pypy.translator.unsimplify import remove_direct_loops -from pypy.interpreter.pycode import CO_VARARGS -from types import FunctionType - -from pypy.translator.gensupp import c_string -from pypy.translator.genc_pyobj import ctypeof - -# Set this if you want call trace frames to be built -USE_CALL_TRACE = False - - -class FunctionDef: - """ - Collects information about a function which we have to generate. - The operations of each function are collected in a C function - with signature: - - static T fn_xxx(T1 arg1, T2 arg2, etc); - - where the T, T1, T2.. are C types like 'int' or 'PyObject *'. - - If needed, another wrapper function is created with a signature - suitable for the built-in function type of CPython: - - static PyObject *pyfn_xxx(PyObject *self, PyObject *args, PyObject* kw); - - The built-in function object, if needed, is put in the global - variable named gfn_xxx. - """ - - def __init__(self, func, genc): - self.func = func - self.genc = genc - - # get the function name - namespace = genc.namespace - self.fast_name = namespace.uniquename('fn_' + func.__name__) # fn_xxx - self.base_name = self.fast_name[3:] # xxx - self.wrapper_name = None # pyfn_xxx - self.globalobject_name = None # gfunc_xxx - self.localscope = namespace.localScope() - - # get the flow graph, and ensure that there is no direct loop in it - # as we cannot generate valid code for this case. - self.graph = graph = genc.translator.getflowgraph(func) - remove_direct_loops(genc.translator, graph) - checkgraph(graph) - graph_args = graph.getargs() - - # collect all the local variables - localslst = [] - def visit(node): - if isinstance(node, Block): - localslst.extend(node.getvariables()) - traverse(visit, graph) - fast_set = dict(zip(graph_args, graph_args)) - self.localnames = [self.decl(a) for a in localslst if a not in fast_set] - - # collect all the arguments - fast_args = [self.expr(a) for a in graph_args] - declare_fast_args = [self.decl(a) for a in graph_args] - if USE_CALL_TRACE: - declare_fast_args.insert(0, 'TRACE_ARGS') - declare_fast_args = ', '.join(declare_fast_args) or 'void' - name_and_arguments = '%s(%s)' % (self.fast_name, declare_fast_args) - ctret = ctypeof(graph.getreturnvar()) - fast_function_header = 'static ' + ( - ctret.ctypetemplate % (name_and_arguments,)) - - name_of_defaults = [self.genc.pyobjrepr.nameof(x, debug=('Default argument of', - self)) - for x in (func.func_defaults or ())] - - # store misc. information - self.fast_function_header = fast_function_header - self.graphargs = graph_args - self.ctret = ctret - self.vararg = bool(func.func_code.co_flags & CO_VARARGS) - self.fast_args = fast_args - self.name_of_defaults = name_of_defaults - - error_return = getattr(ctret, 'error_return', 'NULL') - self.return_error = 'FUNCTION_RETURN(%s)' % error_return - - # generate the forward header - self.genc.globaldecl.append(fast_function_header + '; /* forward */') - - - def get_globalobject(self): - if self.globalobject_name is None: - self.wrapper_name = 'py' + self.fast_name - self.globalobject_name = self.genc.pyobjrepr.uniquename('gfunc_' + - self.base_name) - return self.globalobject_name - - def clear(self): - del self.localscope - del self.localnames - del self.graph - - def decl(self, v): - assert isinstance(v, Variable) - return ctypeof(v).ctypetemplate % (self.localscope.localname(v.name),) - - def expr(self, v): - if isinstance(v, Variable): - return self.localscope.localname(v.name) - elif isinstance(v, Constant): - return self.genc.nameofconst(v, - debug=('Constant in the graph of', self)) - else: - raise TypeError, "expr(%r)" % (v,) - - # ____________________________________________________________ - - def gen_wrapper(self, f): - func = self.func - f_name = self.wrapper_name - name_of_defaults = self.name_of_defaults - graphargs = self.graphargs - vararg = self.vararg - nb_positional_args = len(graphargs) - vararg - - min_number_of_args = nb_positional_args - len(name_of_defaults) - print >> f, 'static PyObject *' - print >> f, '%s(PyObject* self, PyObject* args, PyObject* kwds)' % ( - f_name,) - print >> f, '{' - if USE_CALL_TRACE: - print >> f, '\tFUNCTION_HEAD(%s, %s, args, %s, __FILE__, __LINE__ - 2)' % ( - c_string('%s(%s)' % (self.base_name, ', '.join(name_of_defaults))), - self.globalobject_name, - '(%s)' % (', '.join(map(c_string, name_of_defaults) + ['NULL']),), - ) - - kwlist = ['"%s"' % name for name in - func.func_code.co_varnames[:func.func_code.co_argcount]] - kwlist.append('0') - print >> f, '\tstatic char* kwlist[] = {%s};' % (', '.join(kwlist),) - - numberednames = ['o%d' % (i+1) for i in range(len(graphargs))] - if vararg: - numberednames[-1] = 'ovararg' - numberednames.append('oret') - print >> f, '\tPyObject *%s;' % (', *'.join(numberednames)) - conversions = [] - call_fast_args = [] - for a, numberedname in zip(graphargs, numberednames): - try: - convert_from_obj = a.type_cls.convert_from_obj - except AttributeError: - call_fast_args.append(numberedname) - else: - convertedname = numberedname.replace('o', 'a') - ct = ctypeof(a) - print >> f, '\t%s;' % (ct.ctypetemplate % (convertedname,)) - conversions.append('\tOP_%s(%s, %s, type_error)' % ( - convert_from_obj.upper(), numberedname, convertedname)) - # XXX successfully converted objects may need to be decrefed - # XXX even though they are not PyObjects - call_fast_args.append(convertedname) - # return value conversion - try: - convert_to_obj = self.ctret.convert_to_obj - except AttributeError: - putresultin = 'oret' - footer = None - else: - print >> f, '\t%s;' % (self.ctret.ctypetemplate % ('aret',)) - putresultin = 'aret' - footer = 'OP_%s(aret, oret, type_error)' % convert_to_obj.upper() - print >> f - - if USE_CALL_TRACE: - print >> f, '\tFUNCTION_CHECK()' - - # argument unpacking - if vararg: - print >> f, '\tovararg = PyTuple_GetSlice(args, %d, INT_MAX);' % ( - nb_positional_args,) - print >> f, '\tif (ovararg == NULL)' - print >> f, '\t\tFUNCTION_RETURN(NULL)' - print >> f, '\targs = PyTuple_GetSlice(args, 0, %d);' % ( - nb_positional_args,) - print >> f, '\tif (args == NULL) {' - print >> f, '\t\tERR_DECREF(ovararg)' - print >> f, '\t\tFUNCTION_RETURN(NULL)' - print >> f, '\t}' - tail = """{ -\t\tERR_DECREF(args) -\t\tERR_DECREF(ovararg) -\t\tFUNCTION_RETURN(NULL); -\t} -\tPy_DECREF(args);""" - else: - tail = '\n\t\tFUNCTION_RETURN(NULL)' - for i in range(len(name_of_defaults)): - print >> f, '\t%s = %s;' % ( - numberednames[min_number_of_args+i], - name_of_defaults[i]) - fmt = 'O'*min_number_of_args - if min_number_of_args < nb_positional_args: - fmt += '|' + 'O'*(nb_positional_args-min_number_of_args) - lst = ['args', 'kwds', - '"%s:%s"' % (fmt, func.__name__), - 'kwlist', - ] - lst += ['&' + a for a in numberednames] - print >> f, '\tif (!PyArg_ParseTupleAndKeywords(%s))' % ', '.join(lst), - print >> f, tail - - for line in conversions: - print >> f, line - - if USE_CALL_TRACE: - call_fast_args.insert(0, 'TRACE_CALL') - call_fast_args = ', '.join(call_fast_args) - print >> f, '\t%s = %s(%s);' % (putresultin, self.fast_name, - call_fast_args) - if footer: - print >> f, '\t' + footer - print >> f, '\treturn oret;' - - if conversions or footer: - print >> f, ' type_error:' - print >> f, ' return NULL;' - - print >> f, '}' - print >> f - - # ____________________________________________________________ - - def gen_cfunction(self, f, body): - print >> f, self.fast_function_header - print >> f, '{' - - localnames = self.localnames - lengths = [len(a) for a in localnames] - lengths.append(9999) - start = 0 - while start < len(localnames): - total = lengths[start] + 9 - end = start+1 - while total + lengths[end] < 76: - total += lengths[end] + 2 - end += 1 - print >> f, '\t' + '; '.join(localnames[start:end]) + ';' - start = end - - # generate an incref for each input argument - for a in self.graphargs: - cincref = getattr(ctypeof(a), 'cincref', None) - if cincref: - print >> f, '\t' + cincref % (self.expr(a),) - - # print the body - for line in body: - if line.endswith(':'): - if line.startswith('err'): - fmt = '\t%s' - else: - fmt = ' %s\n' - elif line: - fmt = '\t%s\n' - else: - fmt = '%s\n' - f.write(fmt % line) - print >> f, '}' - print >> f - - # ____________________________________________________________ - - def cfunction_body(self): - graph = self.graph - - blocknum = {} - allblocks = [] - - def gen_link(link, linklocalvars=None): - "Generate the code to jump across the given Link." - has_ref = {} - linklocalvars = linklocalvars or {} - for v in to_release: - linklocalvars[v] = self.expr(v) - has_ref = linklocalvars.copy() - for a1, a2 in zip(link.args, link.target.inputargs): - if a1 in linklocalvars: - src = linklocalvars[a1] - else: - src = self.expr(a1) - line = 'MOVE(%s, %s)' % (src, self.expr(a2)) - if a1 in has_ref: - del has_ref[a1] - else: - ct1 = ctypeof(a1) - ct2 = ctypeof(a2) - assert ct1 == ct2 - cincref = getattr(ct1, 'cincref', None) - if cincref: - line += '\t' + cincref % (self.expr(a2),) - yield line - for v in has_ref: - cdecref = getattr(ctypeof(v), 'cdecref', None) - if cdecref: - yield cdecref % (linklocalvars[v],) - yield 'goto block%d;' % blocknum[link.target] - - # collect all blocks - def visit(block): - if isinstance(block, Block): - allblocks.append(block) - blocknum[block] = len(blocknum) - traverse(visit, graph) - - # generate the body of each block - for block in allblocks: - yield '' - yield 'block%d:' % blocknum[block] - to_release = list(block.inputargs) - for op in block.operations: - args = [lazy(self.expr, v) for v in op.args] - res = self.expr(op.result) - err = 'err%d_%d' % (blocknum[block], len(to_release)) - macro = 'OP_%s' % op.opname.upper() - meth = getattr(self, macro, None) - if meth: - yield meth(args, res, err) - else: - lst = [arg.compute() for arg in args] + [res, err] - yield '%s(%s)' % (macro, ', '.join(lst)) - to_release.append(op.result) - - err_reachable = False - if len(block.exits) == 0: - if len(block.inputargs) == 2: # exc_cls, exc_value - # exceptional return block - exc_cls = self.expr(block.inputargs[0]) - exc_value = self.expr(block.inputargs[1]) - yield 'PyErr_Restore(%s, %s, NULL);' % (exc_cls, exc_value) - yield self.return_error - else: - # regular return block - retval = self.expr(block.inputargs[0]) - yield 'FUNCTION_RETURN(%s)' % retval - continue - elif block.exitswitch is None: - # single-exit block - assert len(block.exits) == 1 - for op in gen_link(block.exits[0]): - yield op - yield '' - elif block.exitswitch == Constant(last_exception): - # block catching the exceptions raised by its last operation - # we handle the non-exceptional case first - link = block.exits[0] - assert link.exitcase is None - for op in gen_link(link): - yield op - # we must catch the exception raised by the last operation, - # which goes to the last err%d_%d label written above. - yield '' - to_release.pop() # skip default error handling for this label - yield 'err%d_%d:' % (blocknum[block], len(to_release)) - yield '' - for link in block.exits[1:]: - assert issubclass(link.exitcase, Exception) - yield 'if (PyErr_ExceptionMatches(%s)) {' % ( - self.genc.pyobjrepr.nameof(link.exitcase),) - yield '\tPyObject *exc_cls, *exc_value, *exc_tb;' - yield '\tPyErr_Fetch(&exc_cls, &exc_value, &exc_tb);' - yield '\tif (exc_value == NULL) {' - yield '\t\texc_value = Py_None;' - yield '\t\tPy_INCREF(Py_None);' - yield '\t}' - yield '\tPy_XDECREF(exc_tb);' - for op in gen_link(link, { - Constant(last_exception): 'exc_cls', - Constant(last_exc_value): 'exc_value'}): - yield '\t' + op - yield '}' - err_reachable = True - else: - # block ending in a switch on a value - ct = ctypeof(block.exitswitch) - for link in block.exits[:-1]: - assert link.exitcase in (False, True) - yield 'if (%s == %s) {' % (self.expr(block.exitswitch), - self.genc.nameofvalue(link.exitcase, ct)) - for op in gen_link(link): - yield '\t' + op - yield '}' - link = block.exits[-1] - assert link.exitcase in (False, True) - yield 'assert(%s == %s);' % (self.expr(block.exitswitch), - self.genc.nameofvalue(link.exitcase, ct)) - for op in gen_link(block.exits[-1]): - yield op - yield '' - - while to_release: - v = to_release.pop() - if err_reachable: - if not hasattr(v, 'type_cls'): - yield 'ERR_DECREF(%s)' % self.expr(v) - else: - cdecref = getattr(ctypeof(v), 'cdecref', None) - if cdecref: - yield cdecref % (self.expr(v),) - yield 'err%d_%d:' % (blocknum[block], len(to_release)) - err_reachable = True - if err_reachable: - yield self.return_error - - # ____________________________________________________________ - - # the C preprocessor cannot handle operations taking a variable number - # of arguments, so here are Python methods that do it - - def OP_NEWLIST(self, args, r, err): - args = [arg.compute() for arg in args] - if len(args) == 0: - return 'OP_NEWLIST0(%s, %s)' % (r, err) - else: - args.insert(0, '%d' % len(args)) - return 'OP_NEWLIST((%s), %s, %s)' % (', '.join(args), r, err) - - def OP_NEWDICT(self, args, r, err): - args = [arg.compute() for arg in args] - if len(args) == 0: - return 'OP_NEWDICT0(%s, %s)' % (r, err) - else: - assert len(args) % 2 == 0 - args.insert(0, '%d' % (len(args)//2)) - return 'OP_NEWDICT((%s), %s, %s)' % (', '.join(args), r, err) - - def OP_NEWTUPLE(self, args, r, err): - args = [arg.compute() for arg in args] - args.insert(0, '%d' % len(args)) - return 'OP_NEWTUPLE((%s), %s, %s)' % (', '.join(args), r, err) - -## def fast_simple_call(self, args, r, err): -## # try to generate a SIMPLE_CALL using a shortcut: -## # a direct call to the ff_xxx() function, using its C signature. -## if USE_CALL_TRACE: -## return None -## target = args[0].args[0] -## args = [arg.compute() for arg in args[1:]] -## if not isinstance(target, Constant): -## return None -## if not isinstance(target.value, FunctionType): -## return None -## funcdef = self.genc.getfuncdef(target.value) -## if funcdef is None: -## return None -## if len(funcdef.graphargs) != len(args) or funcdef.vararg: -## return None -## return 'if (!(%s=%s(%s))) FAIL(%s);' % ( -## r, funcdef.fast_name, ', '.join(args), err) - - def OP_SIMPLE_CALL(self, args, r, err): -## result = self.fast_simple_call(args, r, err) -## if result is not None: -## return result -## # fall-back - args = [arg.compute() for arg in args] - args.append('NULL') - return 'OP_SIMPLE_CALL((%s), %s, %s)' % (', '.join(args), r, err) - - def OP_CALL_ARGS(self, args, r, err): - args = [arg.compute() for arg in args] - return 'OP_CALL_ARGS((%s), %s, %s)' % (', '.join(args), r, err) - -# ____________________________________________________________ - -class lazy: - def __init__(self, fn, *args, **kwds): - self.fn = fn - self.args = args - self.kwds = kwds - def compute(self): - return self.fn(*self.args, **self.kwds) Deleted: /pypy/dist/pypy/translator/genc_pyobj.py ============================================================================== --- /pypy/dist/pypy/translator/genc_pyobj.py Sat Apr 2 17:57:37 2005 +++ (empty file) @@ -1,442 +0,0 @@ -from __future__ import generators -import autopath, os, sys, __builtin__, marshal, zlib -from pypy.objspace.flow.model import Variable, Constant -from pypy.translator.gensupp import builtin_base -from types import FunctionType, CodeType, InstanceType, ClassType - -from pypy.objspace.std.restricted_int import r_int, r_uint - - -class CType_PyObject: - """The PyObject* C type. - This class contains all the nameof_xxx() methods that allow a wild variety - of Python objects to be 'pickled' as Python source code that will - reconstruct them. - """ - ctypetemplate = 'PyObject *%s' - cincref = 'Py_INCREF(%s);' - cdecref = 'Py_DECREF(%s);' - - def __init__(self, genc): - self.genc = genc - self.cnames = {Constant(None).key: 'Py_None', - Constant(False).key: 'Py_False', - Constant(True).key: 'Py_True', - } - self.initcode = [ # list of lines for the module's initxxx() - 'import new, types, sys', - 'Py_None = None', - 'Py_False = False', - 'Py_True = True', - ] - - self.latercode = [] # list of generators generating extra lines - # for later in initxxx() -- for recursive - # objects - self.globalobjects = [] - self.debugstack = () # linked list of nested nameof() - - def nameof(self, obj, debug=None): - key = Constant(obj).key - try: - return self.cnames[key] - except KeyError: - if debug: - stackentry = debug, obj - else: - stackentry = obj - self.debugstack = (self.debugstack, stackentry) - obj_builtin_base = builtin_base(obj) - if obj_builtin_base in (object, int, long) and type(obj) is not obj_builtin_base: - # assume it's a user defined thingy - name = self.nameof_instance(obj) - else: - for cls in type(obj).__mro__: - meth = getattr(self, - 'nameof_' + cls.__name__.replace(' ', ''), - None) - if meth: - break - else: - raise Exception, "nameof(%r)" % (obj,) - name = meth(obj) - self.debugstack, x = self.debugstack - assert x is stackentry - self.cnames[key] = name - return name - - def uniquename(self, basename): - name = self.genc.namespace.uniquename(basename) - self.globalobjects.append(name) - self.genc.globaldecl.append('static PyObject *%s;' % (name,)) - return name - - def initcode_python(self, name, pyexpr): - # generate init code that will evaluate the given Python expression - #self.initcode.append("print 'setting up', %r" % name) - self.initcode.append("%s = %s" % (name, pyexpr)) - - def nameof_object(self, value): - if type(value) is not object: - raise Exception, "nameof(%r)" % (value,) - name = self.uniquename('g_object') - self.initcode_python(name, "object()") - return name - - def nameof_module(self, value): - assert value is os or not hasattr(value, "__file__") or \ - not (value.__file__.endswith('.pyc') or - value.__file__.endswith('.py') or - value.__file__.endswith('.pyo')), \ - "%r is not a builtin module (probably :)"%value - name = self.uniquename('mod%s'%value.__name__) - self.initcode_python(name, "__import__(%r)" % (value.__name__,)) - return name - - - def nameof_int(self, value): - if value >= 0: - name = 'gint_%d' % value - else: - name = 'gint_minus%d' % abs(value) - name = self.uniquename(name) - self.initcode_python(name, repr(value)) - return name - - def nameof_long(self, value): - if value >= 0: - name = 'glong%d' % value - else: - name = 'glong_minus%d' % abs(value) - name = self.uniquename(name) - self.initcode_python(name, repr(value)) - return name - - def nameof_float(self, value): - name = 'gfloat_%s' % value - name = (name.replace('-', 'minus') - .replace('.', 'dot')) - name = self.uniquename(name) - self.initcode_python(name, repr(value)) - return name - - def nameof_str(self, value): - name = self.uniquename('gstr_' + value[:32]) -## if [c for c in value if c<' ' or c>'~' or c=='"' or c=='\\']: -## # non-printable string -## s = 'chr_%s' % name -## self.globaldecl.append('static char %s[] = { %s };' % ( -## s, ', '.join(['%d' % ord(c) for c in value]))) -## else: -## # printable string -## s = '"%s"' % value - self.initcode_python(name, repr(value)) - return name - - def skipped_function(self, func): - # debugging only! Generates a placeholder for missing functions - # that raises an exception when called. - if self.genc.translator.frozen: - warning = 'NOT GENERATING' - else: - warning = 'skipped' - printable_name = '(%s:%d) %s' % ( - func.func_globals.get('__name__', '?'), - func.func_code.co_firstlineno, - func.__name__) - print warning, printable_name - name = self.uniquename('gskippedfunc_' + func.__name__) - self.initcode.append('def %s(*a,**k):' % name) - self.initcode.append(' raise NotImplementedError') - return name - - def nameof_function(self, func, progress=['-\x08', '\\\x08', - '|\x08', '/\x08']): - funcdef = self.genc.getfuncdef(func) - if funcdef is None: - return self.skipped_function(func) - if not self.genc.translator.frozen: - p = progress.pop(0) - sys.stderr.write(p) - progress.append(p) - return funcdef.get_globalobject() - - def nameof_staticmethod(self, sm): - # XXX XXX XXXX - func = sm.__get__(42.5) - name = self.uniquename('gsm_' + func.__name__) - functionname = self.nameof(func) - self.initcode_python(name, 'staticmethod(%s)' % functionname) - return name - - def nameof_instancemethod(self, meth): - if meth.im_self is None: - # no error checking here - return self.nameof(meth.im_func) - else: - ob = self.nameof(meth.im_self) - func = self.nameof(meth.im_func) - typ = self.nameof(meth.im_class) - name = self.uniquename('gmeth_'+meth.im_func.__name__) - self.initcode_python(name, 'new.instancemethod(%s, %s, %s)' % ( - func, ob, typ)) - return name - - def should_translate_attr(self, pbc, attr): - ann = self.genc.translator.annotator - if ann is None: - ignore = getattr(pbc.__class__, 'NOT_RPYTHON_ATTRIBUTES', []) - if attr in ignore: - return False - else: - return "probably" # True - classdef = ann.getuserclasses().get(pbc.__class__) - if classdef and classdef.about_attribute(attr) is not None: - return True - return False - - def nameof_instance(self, instance): - klass = instance.__class__ - name = self.uniquename('ginst_' + klass.__name__) - cls = self.nameof(klass) - if hasattr(klass, '__base__'): - base_class = builtin_base(instance) - base = self.nameof(base_class) - else: - base_class = None - base = cls - def initinstance(): - content = instance.__dict__.items() - content.sort() - for key, value in content: - if self.should_translate_attr(instance, key): - line = '%s.%s = %s' % (name, key, self.nameof(value)) - yield line - if hasattr(instance,'__reduce_ex__'): - import copy_reg - reduced = instance.__reduce_ex__() - assert reduced[0] is copy_reg._reconstructor,"not clever enough" - assert reduced[1][1] is base_class, "not clever enough for %r vs. %r" % (base_class, reduced) - state = reduced[1][2] - else: - state = None - self.initcode.append('if isinstance(%s, type):' % cls) - if state is not None: - self.initcode.append(' %s = %s.__new__(%s, %r)' % (name, base, cls, state)) - else: - self.initcode.append(' %s = %s.__new__(%s)' % (name, base, cls)) - self.initcode.append('else:') - self.initcode.append(' %s = new.instance(%s)' % (name, cls)) - self.later(initinstance()) - return name - - def nameof_builtin_function_or_method(self, func): - if func.__self__ is None: - # builtin function - # where does it come from? Python2.2 doesn't have func.__module__ - for modname, module in sys.modules.items(): - if hasattr(module, '__file__'): - if (module.__file__.endswith('.py') or - module.__file__.endswith('.pyc') or - module.__file__.endswith('.pyo')): - continue # skip non-builtin modules - if func is getattr(module, func.__name__, None): - break - else: - raise Exception, '%r not found in any built-in module' % (func,) - name = self.uniquename('gbltin_' + func.__name__) - if modname == '__builtin__': - self.initcode_python(name, func.__name__) - else: - modname = self.nameof(module) - self.initcode_python(name, '%s.%s' % (modname, func.__name__)) - else: - # builtin (bound) method - name = self.uniquename('gbltinmethod_' + func.__name__) - selfname = self.nameof(func.__self__) - self.initcode_python(name, '%s.%s' % (selfname, func.__name__)) - return name - - def nameof_classobj(self, cls): - if cls.__doc__ and cls.__doc__.lstrip().startswith('NOT_RPYTHON'): - raise Exception, "%r should never be reached" % (cls,) - - metaclass = "type" - if issubclass(cls, Exception): - if cls.__module__ == 'exceptions': - name = self.uniquename('gexc_' + cls.__name__) - self.initcode_python(name, cls.__name__) - return name - #else: - # # exceptions must be old-style classes (grr!) - # metaclass = "&PyClass_Type" - # For the moment, use old-style classes exactly when the - # pypy source uses old-style classes, to avoid strange problems. - if not isinstance(cls, type): - assert type(cls) is ClassType - metaclass = "types.ClassType" - - name = self.uniquename('gcls_' + cls.__name__) - basenames = [self.nameof(base) for base in cls.__bases__] - def initclassobj(): - content = cls.__dict__.items() - content.sort() - for key, value in content: - if key.startswith('__'): - if key in ['__module__', '__doc__', '__dict__', - '__weakref__', '__repr__', '__metaclass__']: - continue - # XXX some __NAMES__ are important... nicer solution sought - #raise Exception, "unexpected name %r in class %s"%(key, cls) - if isinstance(value, staticmethod) and value.__get__(1) not in self.genc.translator.flowgraphs and self.genc.translator.frozen: - print value - continue - if isinstance(value, classmethod) and value.__get__(cls).__doc__.lstrip().startswith("NOT_RPYTHON"): - continue - if isinstance(value, FunctionType) and value not in self.genc.translator.flowgraphs and self.genc.translator.frozen: - print value - continue - - yield '%s.%s = %s' % (name, key, self.nameof(value)) - - baseargs = ", ".join(basenames) - if baseargs: - baseargs = '(%s)' % baseargs - self.initcode.append('class %s%s:' % (name, baseargs)) - self.initcode.append(' __metaclass__ = %s' % metaclass) - self.later(initclassobj()) - return name - - nameof_class = nameof_classobj # for Python 2.2 - - typename_mapping = { - InstanceType: 'types.InstanceType', - type(None): 'type(None)', - CodeType: 'types.CodeType', - type(sys): 'type(new)', - - r_int: 'int', # XXX - r_uint: 'int', # XXX - - # XXX more hacks - # type 'builtin_function_or_method': - type(len): 'type(len)', - # type 'method_descriptor': - type(list.append): 'type(list.append)', - # type 'wrapper_descriptor': - type(type(None).__repr__): 'type(type(None).__repr__)', - # type 'getset_descriptor': - type(type.__dict__['__dict__']): "type(type.__dict__['__dict__'])", - # type 'member_descriptor': - type(type.__dict__['__basicsize__']): "type(type.__dict__['__basicsize__'])", - } - - def nameof_type(self, cls): - if cls.__module__ != '__builtin__': - return self.nameof_classobj(cls) # user-defined type - name = self.uniquename('gtype_%s' % cls.__name__) - if getattr(__builtin__, cls.__name__, None) is cls: - expr = cls.__name__ # type available from __builtin__ - else: - expr = self.typename_mapping[cls] - self.initcode_python(name, expr) - return name - - def nameof_tuple(self, tup): - name = self.uniquename('g%dtuple' % len(tup)) - args = [self.nameof(x) for x in tup] - args = ', '.join(args) - if args: - args += ',' - self.initcode_python(name, '(%s)' % args) - return name - - def nameof_list(self, lis): - name = self.uniquename('g%dlist' % len(lis)) - def initlist(): - for i in range(len(lis)): - item = self.nameof(lis[i]) - yield '%s.append(%s)' % (name, item) - self.initcode_python(name, '[]') - self.later(initlist()) - return name - - def nameof_dict(self, dic): - assert dic is not __builtins__ - assert '__builtins__' not in dic, 'Seems to be the globals of %s' % ( - dic.get('__name__', '?'),) - name = self.uniquename('g%ddict' % len(dic)) - def initdict(): - for k in dic: - if type(k) is str: - yield '%s[%r] = %s' % (name, k, self.nameof(dic[k])) - else: - yield '%s[%s] = %s' % (name, self.nameof(k), - self.nameof(dic[k])) - self.initcode_python(name, '{}') - self.later(initdict()) - return name - - # strange prebuilt instances below, don't look too closely - # XXX oh well. - def nameof_member_descriptor(self, md): - name = self.uniquename('gdescriptor_%s_%s' % ( - md.__objclass__.__name__, md.__name__)) - cls = self.nameof(md.__objclass__) - self.initcode_python(name, '%s.__dict__[%r]' % (cls, md.__name__)) - return name - nameof_getset_descriptor = nameof_member_descriptor - nameof_method_descriptor = nameof_member_descriptor - nameof_wrapper_descriptor = nameof_member_descriptor - - def nameof_file(self, fil): - if fil is sys.stdin: - name = self.uniquename("gsys_stdin") - self.initcode_python(name, "sys.stdin") - return name - if fil is sys.stdout: - name = self.uniquename("gsys_stdout") - self.initcode_python(name, "sys.stdout") - return name - if fil is sys.stderr: - name = self.uniquename("gsys_stderr") - self.initcode_python(name, "sys.stderr") - return name - raise Exception, 'Cannot translate an already-open file: %r' % (fil,) - - - def later(self, gen): - self.latercode.append((gen, self.debugstack)) - - def collect_globals(self): - while self.latercode: - gen, self.debugstack = self.latercode.pop() - #self.initcode.extend(gen) -- eats TypeError! bad CPython! - for line in gen: - self.initcode.append(line) - self.debugstack = () - if self.genc.f2 is not None: - for line in self.initcode: - print >> self.genc.f2, line - del self.initcode[:] - - def getfrozenbytecode(self): - if self.genc.f2 is not None: - self.genc.f2.seek(0) - self.initcode.insert(0, self.genc.f2.read()) - self.initcode.append('') - source = '\n'.join(self.initcode) - del self.initcode[:] - co = compile(source, self.genc.modname, 'exec') - del source - small = zlib.compress(marshal.dumps(co)) - source = """if 1: - import zlib, marshal - exec marshal.loads(zlib.decompress(%r))""" % small - co = compile(source, self.genc.modname, 'exec') - del source - return marshal.dumps(co) - - -def ctypeof(v): - return getattr(v, 'type_cls', CType_PyObject) Deleted: /pypy/dist/pypy/translator/genc_type.h ============================================================================== --- /pypy/dist/pypy/translator/genc_type.h Sat Apr 2 17:57:37 2005 +++ (empty file) @@ -1,15 +0,0 @@ - -/************************************************************/ - /*** C header subsection: typed operations ***/ - -/* This file is included from genc.h. */ - - -#define OP_INT2OBJ(i,r,err) if (!(r=PyInt_FromLong(i))) FAIL(err) -#define OP_OBJ2INT(o,r,err) if ((r=PyInt_AsLong(o))==-1 && PyErr_Occurred()) \ - FAIL(err) - -#define OP_INT_IS_TRUE(x,r,err) r = (x != 0); - -#define OP_INT_ADD(x,y,r,err) r = x + y; -#define OP_INT_SUB(x,y,r,err) r = x - y; Deleted: /pypy/dist/pypy/translator/genc_type.py ============================================================================== --- /pypy/dist/pypy/translator/genc_type.py Sat Apr 2 17:57:37 2005 +++ (empty file) @@ -1,13 +0,0 @@ - - -class CType_Int: - ctypetemplate = 'int %s' - convert_to_obj = 'int2obj' - convert_from_obj = 'obj2int' - error_return = '-1' - - def __init__(self, genc): - pass - - def nameof(self, v, debug=None): - return '%d' % v Deleted: /pypy/dist/pypy/translator/test/test_ctrans.py ============================================================================== --- /pypy/dist/pypy/translator/test/test_ctrans.py Sat Apr 2 17:57:37 2005 +++ (empty file) @@ -1,338 +0,0 @@ -import autopath -import py, sys -from pypy.tool.udir import udir -from pypy.translator.genc import GenC -from pypy.translator.typer import GenCSpecializer -from pypy.objspace.flow.model import * -from pypy.translator.tool.buildpyxmodule import make_module_from_c -from pypy.translator.tool.buildpyxmodule import skip_missing_compiler -from pypy.translator.translator import Translator - -from pypy.translator.test import snippet - -# XXX this tries to make compiling faster for full-scale testing -from pypy.translator.tool import buildpyxmodule -buildpyxmodule.enable_fast_compilation() - -class TestNoTypeCGenTestCase: - objspacename = 'flow' - - def build_cfunc(self, func, *morefuncs): - try: func = func.im_func - except AttributeError: pass - t = Translator(func) - for fn in morefuncs: - t.getflowgraph(fn) - t.simplify() - return skip_missing_compiler(t.ccompile) - - def test_simple_func(self): - cfunc = self.build_cfunc(snippet.simple_func) - assert cfunc(1) == 2 - - def test_while_func(self): - while_func = self.build_cfunc(snippet.while_func) - assert while_func(10) == 55 - - def test_nested_whiles(self): - nested_whiles = self.build_cfunc(snippet.nested_whiles) - assert nested_whiles(111, 114) == ( - '...!...!...!...!...!') - - def test_poor_man_range(self): - poor_man_range = self.build_cfunc(snippet.poor_man_range) - assert poor_man_range(10) == range(10) - - def poor_man_rev_range(self): - poor_man_rev_range = self.build_cfunc(snippet.poor_man_rev_range) - assert poor_man_rev_range(10) == range(9,-1,-1) - - def test_simple_id(self): - #we just want to see, if renaming of parameter works correctly - #if the first branch is the end branch - simple_id = self.build_cfunc(snippet.simple_id) - assert simple_id(9) == 9 - - def test_branch_id(self): - branch_id = self.build_cfunc(snippet.branch_id) - assert branch_id(1, 2, 3) == 2 - assert branch_id(0, 2, 3) == 3 - - def test_int_id(self): - int_id = self.build_cfunc(snippet.int_id) - assert int_id(3) == 3 - - def dont_test_attrs(self): - attrs = self.build_cfunc(snippet.attrs) - assert attrs() == 9 - - def test_builtinusage(self): - fun = self.build_cfunc(snippet.builtinusage) - assert fun() == 4 - - def test_sieve(self): - sieve = self.build_cfunc(snippet.sieve_of_eratosthenes) - assert sieve() == 1028 - - def test_slice(self): - half = self.build_cfunc(snippet.half_of_n) - assert half(10) == 5 - - def test_poly_branch(self): - poly_branch = self.build_cfunc(snippet.poly_branch) - assert poly_branch(10) == [1,2,3]*2 - assert poly_branch(0) == ['a','b','c']*2 - - def test_and(self): - sand = self.build_cfunc(snippet.s_and) - assert sand(5, 6) == "yes" - assert sand(5, 0) == "no" - assert sand(0, 6) == "no" - assert sand(0, 0) == "no" - - def test_yast(self): - yast = self.build_cfunc(snippet.yast) - assert yast([1000,100,10,1]) == 1111 - assert yast(range(100)) == (99*100)/2 - - def test_with_init(self): - with_init = self.build_cfunc(snippet.with_init) - assert with_init(0) == 0 - assert with_init(-100) == -100 - - def test_with_more_init(self): - with_more_init = self.build_cfunc(snippet.with_more_init) - assert with_more_init(10, False) == -10 - assert with_more_init(20, True) == 20 - - def test_global_instance(self): - global_instance = self.build_cfunc(snippet.global_instance) - assert global_instance() == 42 - - def test_global_newstyle_instance(self): - global_newstyle_instance = self.build_cfunc(snippet.global_newstyle_instance) - assert global_newstyle_instance().a == 1 - - def test_global_recursive_list(self): - global_recursive_list = self.build_cfunc(snippet.global_recursive_list) - lst = global_recursive_list() - assert len(lst) == 1 - assert lst[0] is lst - -## def test_global_badinit(self): -## global_badinit = self.build_cfunc(snippet.global_badinit) -## self.assertEquals(global_badinit(), 1) - - def test_multiple_inheritance(self): - multiple_inheritance = self.build_cfunc(snippet.multiple_inheritance) - assert multiple_inheritance() == 1+2+3+4 - - def test_call_star_args(self): - call_star_args = self.build_cfunc(snippet.call_star_args) - assert call_star_args(42) == 52 - - def test_call_default_args(self): - call_default_args = self.build_cfunc(snippet.call_default_args) - assert call_default_args(42) == 111+42+3 - - def test_call_default_and_star_args(self): - call_default_and_star_args = self.build_cfunc( - snippet.call_default_and_star_args) - assert call_default_and_star_args(42) == ( - (111+42+3+0, -1000-2000-3000+2)) - - def test_call_with_star(self): - call_with_star = self.build_cfunc(snippet.call_with_star) - assert call_with_star(()) == -15L - assert call_with_star((4,)) == -13L - assert call_with_star((4,7)) == -9L - assert call_with_star([]) == -15L - assert call_with_star([4]) == -13L - assert call_with_star([4,7]) == -9L - raises(TypeError, call_with_star, (4,7,12)) - raises(TypeError, call_with_star, [4,7,12,63]) - raises(TypeError, call_with_star, 521) - - def test_call_with_keyword(self): - call_with_keyword = self.build_cfunc(snippet.call_with_keyword) - assert call_with_keyword(100) == 82 - - def test_call_very_complex(self): - call_very_complex = self.build_cfunc(snippet.call_very_complex, - snippet.default_args) - assert call_very_complex(5, (3,), {}) == -12 - assert call_very_complex(5, (), {'y': 3}) == -12 - raises(TypeError, call_very_complex, 5, (3,), {'y': 4}) - - def test_finallys(self): - finallys = self.build_cfunc(snippet.finallys) - assert finallys(['hello']) == 8 - assert finallys('X') == 8 - assert finallys([]) == 6 - assert finallys('XY') == 6 - - def test_finally2(self): - finally2 = self.build_cfunc(snippet.finally2) - lst = range(10) - finally2(lst, 5) - assert lst == [0,1,2,3,4, 6, 6,7,8, 'done'] - dic = {} - raises(KeyError, finally2, dic, "won't find this key") - assert dic == {-1: 'done'} - - def test_bare_raise(self): - bare_raise = self.build_cfunc(snippet.bare_raise) - assert bare_raise(range(0, 100, 10), False) == 50 - assert bare_raise(range(0, 100, 10), True) == 50 - raises(IndexError, bare_raise, range(0, 30, 10), False) - assert bare_raise(range(0, 30, 10), True) == None - - def test_get_set_del_slice(self): - fn = self.build_cfunc(snippet.get_set_del_slice) - l = list('abcdefghij') - result = fn(l) - assert l == [3, 'c', 8, 11, 'h', 9] - assert result == ([3, 'c'], [9], [11, 'h']) - - def test_global_const_w_init(self): - fn = self.build_cfunc(snippet.one_thing1) - assert fn().thingness == 1 - - def test_global_const_w_new(self): - fn = self.build_cfunc(snippet.one_thing2) - assert fn() == 4 - - def test_direct_loop(self): - # check that remove_direct_loops() does its job correctly - def direct_loop(n, m): - while 1: - o = n; n = m; m = o - n -= 10 - if n < 0: - return n - fn = self.build_cfunc(direct_loop) - assert fn(117, 114) == -6 - assert fn(117, 124) == -3 - - -class TestAnnotatedTestCase: - - def getcompiled(self, func): - t = Translator(func, simplifying=True) - # builds starting-types from func_defs - argstypelist = [] - if func.func_defaults: - for spec in func.func_defaults: - if isinstance(spec, tuple): - spec = spec[0] # use the first type only for the tests - argstypelist.append(spec) - a = t.annotate(argstypelist) - a.simplify() - return skip_missing_compiler(t.ccompile) - - def test_set_attr(self): - set_attr = self.getcompiled(snippet.set_attr) - assert set_attr() == 2 - - def test_inheritance2(self): - inheritance2 = self.getcompiled(snippet.inheritance2) - assert inheritance2() == ((-12, -12), (3, "world")) - - def test_factorial2(self): - factorial2 = self.getcompiled(snippet.factorial2) - assert factorial2(5) == 120 - - def test_factorial(self): - factorial = self.getcompiled(snippet.factorial) - assert factorial(5) == 120 - - def test_simple_method(self): - simple_method = self.getcompiled(snippet.simple_method) - assert simple_method(55) == 55 - - def test_sieve_of_eratosthenes(self): - sieve_of_eratosthenes = self.getcompiled(snippet.sieve_of_eratosthenes) - assert sieve_of_eratosthenes() == 1028 - - def test_nested_whiles(self): - nested_whiles = self.getcompiled(snippet.nested_whiles) - assert nested_whiles(5,3) == '!!!!!' - - def test_call_five(self): - call_five = self.getcompiled(snippet.call_five) - result = call_five() - assert result == [5] - # -- currently result isn't a real list, but a pseudo-array - # that can't be inspected from Python. - #self.assertEquals(result.__class__.__name__[:8], "list of ") - - def test_call_unpack_56(self): - call_unpack_56 = self.getcompiled(snippet.call_unpack_56) - result = call_unpack_56() - assert result == (2, 5, 6) - - def test_class_defaultattr(self): - class K: - n = "hello" - def class_defaultattr(): - k = K() - k.n += " world" - return k.n - fn = self.getcompiled(class_defaultattr) - assert fn() == "hello world" - - def test_tuple_repr(self): - def tuple_repr(x=int, y=object): - z = x, y - while x: - x = x-1 - return z - fn = self.getcompiled(tuple_repr) - assert fn(6,'a') == (6,'a') - - def test_classattribute(self): - fn = self.getcompiled(snippet.classattribute) - assert fn(1) == 123 - assert fn(2) == 456 - assert fn(3) == 789 - assert fn(4) == 789 - assert fn(5) == 101112 - - def test_get_set_del_slice(self): - fn = self.getcompiled(snippet.get_set_del_slice) - l = list('abcdefghij') - result = fn(l) - assert l == [3, 'c', 8, 11, 'h', 9] - assert result == ([3, 'c'], [9], [11, 'h']) - - def test_slice_long(self): - def slice_long(l=list, n=long): - return l[:n] - fn = self.getcompiled(slice_long) - l = list('abc') - result = fn(l, 2**32) - assert result == list('abc') - result = fn(l, 2**64) - assert result == list('abc') - - -class TestTypedTestCase(TestAnnotatedTestCase): - - def getcompiled(self, func): - t = Translator(func, simplifying=True) - # builds starting-types from func_defs - argstypelist = [] - if func.func_defaults: - for spec in func.func_defaults: - if isinstance(spec, tuple): - spec = spec[0] # use the first type only for the tests - argstypelist.append(spec) - a = t.annotate(argstypelist) - a.simplify() - GenCSpecializer(a).specialize() - t.checkgraphs() - return skip_missing_compiler(t.ccompile) - - def test_int_overflow(self): - fn = self.getcompiled(snippet.simple_func) - raises(OverflowError, fn, sys.maxint+1) Modified: pypy/dist/pypy/translator/translator.py ============================================================================== --- pypy/dist/pypy/translator/translator.py (original) +++ pypy/dist/pypy/translator/translator.py Sat Apr 2 17:57:37 2005 @@ -29,7 +29,7 @@ Try dir(test) for list of current snippets. """ -import autopath +import autopath, os from pypy.objspace.flow.model import * from pypy.annotation.model import * @@ -37,7 +37,7 @@ from pypy.translator.simplify import simplify_graph from pypy.translator.genpyrex import GenPyrex from pypy.translator.gencl import GenCL -from pypy.translator.genc import GenC +from pypy.translator.genc.genc import GenC from pypy.translator.gensupp import uniquemodulename from pypy.translator.tool.buildpyxmodule import make_module_from_pyxstring from pypy.translator.tool.buildpyxmodule import make_module_from_c @@ -242,7 +242,7 @@ if not really_compile: return cfile mod = make_module_from_c(cfile, - include_dirs=[autopath.this_dir]) + include_dirs=[os.path.join(autopath.this_dir, 'genc')]) return getattr(mod, self.entrypoint.func_name) def call(self, *args): Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Sat Apr 2 17:57:37 2005 @@ -179,26 +179,6 @@ else: # specialization not found opname2 = op.opname - argtypes = [CType_PyObject] * len(op.args) + argtypes = [self.defaulttypecls] * len(op.args) restypecls = self.defaulttypecls return opname2, argtypes, restypecls - -# ____________________________________________________________ -# GenC-specific specializer - -from pypy.annotation.model import SomeInteger -from pypy.translator.genc_pyobj import CType_PyObject -from pypy.translator.genc_type import CType_Int - -class GenCSpecializer(Specializer): - - TInt = TypeMatch(SomeInteger(), CType_Int) - typematches = [TInt] # in more-specific-first, more-general-last order - defaulttypecls = CType_PyObject - - specializationtable = [ - ## op specialized op arg types concrete return type - ('add', 'int_add', TInt, TInt, CType_Int), - ('sub', 'int_sub', TInt, TInt, CType_Int), - ('is_true', 'int_is_true', TInt, CType_Int), - ] From pedronis at codespeak.net Sat Apr 2 18:17:27 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 2 Apr 2005 18:17:27 +0200 (MEST) Subject: [pypy-svn] r10253 - pypy/dist/pypy/translator/tool Message-ID: <20050402161727.3201927C63@code1.codespeak.net> Author: pedronis Date: Sat Apr 2 18:17:27 2005 New Revision: 10253 Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py Log: add the -W warning disabling flags only with unix-y compilers Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/dist/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/dist/pypy/translator/tool/buildpyxmodule.py Sat Apr 2 18:17:27 2005 @@ -70,6 +70,7 @@ else: from distutils.dist import Distribution from distutils.extension import Extension + from distutils.ccompiler import get_default_compiler saved_environ = os.environ.items() try: # distutils.core.setup() is really meant for end-user @@ -77,13 +78,16 @@ # turn them into SystemExits. Instead, we directly # instantiate a Distribution, which also allows us to # ignore unwanted features like config files. + extra_compile_args = [] + if get_default_compiler() == 'unix': + extra_compile_args.extend(["-Wno-unused-label", + "-Wno-unused-variable"]) attrs = { 'name': "testmodule", 'ext_modules': [ Extension(modname, [str(cfile)], include_dirs=include_dirs, - extra_compile_args=["-Wno-unused-label", - "-Wno-unused-variable"]) + extra_compile_args=extra_compile_args) ], 'script_name': 'setup.py', 'script_args': ['-q', 'build_ext', '--inplace'], From arigo at codespeak.net Sat Apr 2 19:20:39 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 2 Apr 2005 19:20:39 +0200 (MEST) Subject: [pypy-svn] r10254 - in pypy/dist/pypy/translator: . genc/test Message-ID: <20050402172039.445F327C66@code1.codespeak.net> Author: arigo Date: Sat Apr 2 19:20:39 2005 New Revision: 10254 Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py pypy/dist/pypy/translator/unsimplify.py Log: remove_direct_loops() still not right... Test and fix. There is now a general-purpose insert_empty_block() function, as this seems surprisingly difficult to get right. Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py ============================================================================== --- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_ctrans.py Sat Apr 2 19:20:39 2005 @@ -205,14 +205,16 @@ def test_direct_loop(self): # check that remove_direct_loops() does its job correctly def direct_loop(n, m): + x = False while 1: o = n; n = m; m = o n -= 10 if n < 0: - return n + return n, x + x = True fn = self.build_cfunc(direct_loop) - assert fn(117, 114) == -6 - assert fn(117, 124) == -3 + assert fn(117, 114) == (-6, True) + assert fn(117, 124) == (-3, True) class TestAnnotatedTestCase: Modified: pypy/dist/pypy/translator/unsimplify.py ============================================================================== --- pypy/dist/pypy/translator/unsimplify.py (original) +++ pypy/dist/pypy/translator/unsimplify.py Sat Apr 2 19:20:39 2005 @@ -11,6 +11,19 @@ newvar.type_cls = v.type_cls return newvar +def insert_empty_block(translator, link): + """Insert and return a new block along the given link.""" + vars = uniqueitems([v for v in link.args if isinstance(v, Variable)]) + mapping = {} + for v in vars: + mapping[v] = copyvar(translator, v) + newblock = Block(vars) + newblock.closeblock(Link(link.args, link.target)) + newblock.renamevariables(mapping) + link.args[:] = vars + link.target = newblock + return newblock + def remove_direct_loops(translator, graph): """This is useful for code generators: it ensures that no link has common input and output variables, which could occur if a block's exit @@ -19,9 +32,5 @@ variables when generating a sequence of assignments.""" def visit(link): if isinstance(link, Link) and link.prevblock is link.target: - # insert an empty block with fresh variables. - intermediate = [copyvar(translator, a) for a in link.args] - b = Block(intermediate) - b.closeblock(Link(intermediate, link.target)) - link.target = b + insert_empty_block(translator, link) traverse(visit, graph) From hpk at codespeak.net Sat Apr 2 19:23:23 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 2 Apr 2005 19:23:23 +0200 (MEST) Subject: [pypy-svn] r10255 - pypy/dist/pypy/translator/tool Message-ID: <20050402172323.8473927C68@code1.codespeak.net> Author: hpk Date: Sat Apr 2 19:23:23 2005 New Revision: 10255 Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py Log: minor import cleanup Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/dist/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/dist/pypy/translator/tool/buildpyxmodule.py Sat Apr 2 19:23:23 2005 @@ -1,8 +1,6 @@ import autopath import py -from py.process import cmdexec -from py import path from pypy.translator.genpyrex import GenPyrex import os, sys, inspect, re @@ -11,7 +9,7 @@ debug = 0 def make_module_from_pyxstring(name, dirpath, string): - dirpath = path.local(dirpath) + dirpath = py.path.local(dirpath) pyxfile = dirpath.join('%s.pyx' % name) i = 0 while pyxfile.check(): @@ -50,7 +48,7 @@ include_dirs = [] dirpath = cfile.dirpath() - lastdir = path.local() + lastdir = py.path.local() os.chdir(str(dirpath)) try: modname = cfile.purebasename From arigo at codespeak.net Sat Apr 2 19:31:38 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 2 Apr 2005 19:31:38 +0200 (MEST) Subject: [pypy-svn] r10256 - pypy/dist/pypy/translator Message-ID: <20050402173138.B36BA27C6A@code1.codespeak.net> Author: arigo Date: Sat Apr 2 19:31:38 2005 New Revision: 10256 Modified: pypy/dist/pypy/translator/typer.py Log: Typer gets simpler by using insert_empty_block() Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Sat Apr 2 19:31:38 2005 @@ -1,6 +1,7 @@ import autopath from pypy.objspace.flow.model import SpaceOperation, Variable, Constant from pypy.objspace.flow.model import Block, Link, uniqueitems +from pypy.translator.unsimplify import insert_empty_block class TypeMatch: @@ -106,6 +107,7 @@ if isinstance(args[i], Variable) and bindings[i] is not None: if bindings[i].is_constant(): args[i] = Constant(bindings[i].const) + op = SpaceOperation(op.opname, args, op.result) # look for a specialized version of the current operation opname2, argtypes, restypecls = self.getspecializedop(op, bindings) @@ -125,42 +127,28 @@ block.operations[:] = newops + self.insert_link_conversions(block) + + def insert_link_conversions(self, block): # insert the needed conversions on the links + can_insert_here = block.exitswitch is None and len(block.exits) == 1 for link in block.exits: - # numbering of Variables: - # a1 in the original Link - # a2 in the inserted block before conversion - # a3 in the inserted block after conversion - # a4 in the original target block's inputargs - # warning, link.args may contain the same Variable multiple times! - convargs = [] - convops = [] for i in range(len(link.args)): a1 = link.args[i] - a4 = link.target.inputargs[i] - a4type = self.setbesttype(a4) - a3, convop1 = self.convertvar(a1, a4type) - convargs.append(a3) - convops += convop1 - # if there are conversion operations, they are inserted into - # a new block along this link - if convops: - vars = uniqueitems([a1 for a1 in link.args - if isinstance(a1, Variable)]) - newblock = Block([]) - mapping = {} - for a1 in vars: - a2 = Variable() - a2.type_cls = a1.type_cls - newblock.inputargs.append(a2) - mapping[a1] = a2 - newblock.operations = convops - newblock.closeblock(Link(convargs, link.target)) - newblock.renamevariables(mapping) - link.target = newblock - link.args[:] = vars - else: - link.args[:] = convargs # some Constants may have changed + a2 = link.target.inputargs[i] + a2type = self.setbesttype(a2) + a1, convops = self.convertvar(a1, a2type) + if convops and not can_insert_here: + # cannot insert conversion operations around a single + # link, unless it is the only exit of this block. + # create a new block along the link... + newblock = insert_empty_block(self.annotator.translator, + link) + # ...and do the conversions there. + self.insert_link_conversions(block) + break # done with this link + block.operations += convops + link.args[i] = a1 def getspecializedop(self, op, bindings): specializations = self.specializationdict.get(op.opname, ()) From cfbolz at codespeak.net Sat Apr 2 19:43:52 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sat, 2 Apr 2005 19:43:52 +0200 (MEST) Subject: [pypy-svn] r10257 - pypy/dist/pypy/translator Message-ID: <20050402174352.5197327C6B@code1.codespeak.net> Author: cfbolz Date: Sat Apr 2 19:43:52 2005 New Revision: 10257 Modified: pypy/dist/pypy/translator/unsimplify.py Log: Added a flowgraph transformation needed by genllvm. Modified: pypy/dist/pypy/translator/unsimplify.py ============================================================================== --- pypy/dist/pypy/translator/unsimplify.py (original) +++ pypy/dist/pypy/translator/unsimplify.py Sat Apr 2 19:43:52 2005 @@ -34,3 +34,16 @@ if isinstance(link, Link) and link.prevblock is link.target: insert_empty_block(translator, link) traverse(visit, graph) + + +def remove_double_links(translator, graph): + """This can be useful for code generators: it ensures that no block has + more than one incoming links from one and the same other block. It allows + argument passing along links to be implemented with phi nodes since the + value of an argument can be determined by looking from which block the + control passed. """ + def visit(block): + if isinstance(block, Block) and len(block.exits) == 2 and \ + block.exits[0].target == block.exits[1].target: + insert_empty_block(translator, block.exits[0]) + traverse(visit, graph) From arigo at codespeak.net Sat Apr 2 19:44:16 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 2 Apr 2005 19:44:16 +0200 (MEST) Subject: [pypy-svn] r10258 - in pypy/dist/pypy/translator: . genc/test Message-ID: <20050402174416.9B9E827C3F@code1.codespeak.net> Author: arigo Date: Sat Apr 2 19:44:16 2005 New Revision: 10258 Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py pypy/dist/pypy/translator/typer.py Log: Typo in typer.insert_link_conversions(). Test. Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py ============================================================================== --- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_ctrans.py Sat Apr 2 19:44:16 2005 @@ -317,6 +317,20 @@ result = fn(l, 2**64) assert result == list('abc') + def test_type_conversion(self): + # obfuscated test case specially for typer.insert_link_conversions() + def type_conversion(n): + if n > 3: + while n > 0: + n = n-1 + if n == 5: + n += 3.1416 + return n + fn = self.getcompiled(type_conversion) + assert fn(3) == 3 + assert fn(5) == 0 + assert abs(fn(7) + 0.8584) < 1E-5 + class TestTypedTestCase(TestAnnotatedTestCase): Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Sat Apr 2 19:44:16 2005 @@ -145,7 +145,7 @@ newblock = insert_empty_block(self.annotator.translator, link) # ...and do the conversions there. - self.insert_link_conversions(block) + self.insert_link_conversions(newblock) break # done with this link block.operations += convops link.args[i] = a1 From cfbolz at codespeak.net Sat Apr 2 20:43:44 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sat, 2 Apr 2005 20:43:44 +0200 (MEST) Subject: [pypy-svn] r10259 - pypy/dist/pypy/translator Message-ID: <20050402184344.5F1DA27C6E@code1.codespeak.net> Author: cfbolz Date: Sat Apr 2 20:43:44 2005 New Revision: 10259 Modified: pypy/dist/pypy/translator/unsimplify.py Log: Fixed remove_double_links to support the general case with more than two exits in a block. Modified: pypy/dist/pypy/translator/unsimplify.py ============================================================================== --- pypy/dist/pypy/translator/unsimplify.py (original) +++ pypy/dist/pypy/translator/unsimplify.py Sat Apr 2 20:43:44 2005 @@ -35,6 +35,15 @@ insert_empty_block(translator, link) traverse(visit, graph) +def uniqueitems(lst): + "Returns a list with duplicate elements removed." + result = [] + seen = {} + for item in lst: + if item not in seen: + result.append(item) + seen[item] = True + return result def remove_double_links(translator, graph): """This can be useful for code generators: it ensures that no block has @@ -43,7 +52,13 @@ value of an argument can be determined by looking from which block the control passed. """ def visit(block): - if isinstance(block, Block) and len(block.exits) == 2 and \ - block.exits[0].target == block.exits[1].target: - insert_empty_block(translator, block.exits[0]) + if isinstance(block, Block): + double_links = [] + seen = {} + for link in block.exits: + seen[link.target] = True + if link.target in seen: + double_links.append(link) + for link in double_links[:-1]: + insert_empty_block(translator, link) traverse(visit, graph) From cfbolz at codespeak.net Sat Apr 2 20:44:59 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sat, 2 Apr 2005 20:44:59 +0200 (MEST) Subject: [pypy-svn] r10260 - pypy/dist/pypy/translator Message-ID: <20050402184459.B2A2527C71@code1.codespeak.net> Author: cfbolz Date: Sat Apr 2 20:44:59 2005 New Revision: 10260 Modified: pypy/dist/pypy/translator/unsimplify.py Log: Oops. I really want to know what I did here. Modified: pypy/dist/pypy/translator/unsimplify.py ============================================================================== --- pypy/dist/pypy/translator/unsimplify.py (original) +++ pypy/dist/pypy/translator/unsimplify.py Sat Apr 2 20:44:59 2005 @@ -35,16 +35,6 @@ insert_empty_block(translator, link) traverse(visit, graph) -def uniqueitems(lst): - "Returns a list with duplicate elements removed." - result = [] - seen = {} - for item in lst: - if item not in seen: - result.append(item) - seen[item] = True - return result - def remove_double_links(translator, graph): """This can be useful for code generators: it ensures that no block has more than one incoming links from one and the same other block. It allows From cfbolz at codespeak.net Sat Apr 2 21:29:19 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sat, 2 Apr 2005 21:29:19 +0200 (MEST) Subject: [pypy-svn] r10261 - pypy/dist/pypy/translator Message-ID: <20050402192919.05ED027C74@code1.codespeak.net> Author: cfbolz Date: Sat Apr 2 21:29:19 2005 New Revision: 10261 Modified: pypy/dist/pypy/translator/unsimplify.py Log: Fixed a bug in remove_double_links. Modified: pypy/dist/pypy/translator/unsimplify.py ============================================================================== --- pypy/dist/pypy/translator/unsimplify.py (original) +++ pypy/dist/pypy/translator/unsimplify.py Sat Apr 2 21:29:19 2005 @@ -46,9 +46,9 @@ double_links = [] seen = {} for link in block.exits: - seen[link.target] = True if link.target in seen: double_links.append(link) + seen[link.target] = True for link in double_links[:-1]: insert_empty_block(translator, link) traverse(visit, graph) From cfbolz at codespeak.net Sat Apr 2 21:37:10 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sat, 2 Apr 2005 21:37:10 +0200 (MEST) Subject: [pypy-svn] r10262 - pypy/dist/pypy/translator Message-ID: <20050402193710.9067A27C75@code1.codespeak.net> Author: cfbolz Date: Sat Apr 2 21:37:10 2005 New Revision: 10262 Modified: pypy/dist/pypy/translator/unsimplify.py Log: remove_double_links was still not right. Modified: pypy/dist/pypy/translator/unsimplify.py ============================================================================== --- pypy/dist/pypy/translator/unsimplify.py (original) +++ pypy/dist/pypy/translator/unsimplify.py Sat Apr 2 21:37:10 2005 @@ -49,6 +49,6 @@ if link.target in seen: double_links.append(link) seen[link.target] = True - for link in double_links[:-1]: + for link in double_links: insert_empty_block(translator, link) traverse(visit, graph) From arigo at codespeak.net Sun Apr 3 00:43:42 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 3 Apr 2005 00:43:42 +0200 (MEST) Subject: [pypy-svn] r10263 - in pypy/dist/pypy/translator: . genc Message-ID: <20050402224342.F169327C7E@code1.codespeak.net> Author: arigo Date: Sun Apr 3 00:43:42 2005 New Revision: 10263 Added: pypy/dist/pypy/translator/genc/parametric.py (contents, props changed) pypy/dist/pypy/translator/genc/t_func.py (contents, props changed) Modified: pypy/dist/pypy/translator/genc/ctyper.py pypy/dist/pypy/translator/genc/funcdef.py pypy/dist/pypy/translator/typer.py Log: (Draft) support for the type "function pointer", which allows direct shortcutting calls between generated functions to be reintroduced. Uses a parametrization mecanism: for each C type "function taking arguments of type T1,..,Tn and returning a T", there is a corresponding Python class that is a dynamically created subclass, using the [] operator: pypy.translator.genc.t_func.CType_FuncPtr[T1, .., Tn, T] Modified: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- pypy/dist/pypy/translator/genc/ctyper.py (original) +++ pypy/dist/pypy/translator/genc/ctyper.py Sun Apr 3 00:43:42 2005 @@ -3,9 +3,12 @@ """ from pypy.translator.typer import Specializer, TypeMatch -from pypy.annotation.model import SomeInteger +from pypy.annotation.model import SomeInteger, SomePBC from pypy.translator.genc.t_pyobj import CType_PyObject from pypy.translator.genc.t_int import CType_Int +from pypy.translator.genc.t_func import CType_FuncPtr +import types +from pypy.interpreter.pycode import CO_VARARGS class GenCSpecializer(Specializer): @@ -14,8 +17,42 @@ defaulttypecls = CType_PyObject specializationtable = [ - ## op specialized op arg types concrete return type - ('add', 'int_add', TInt, TInt, CType_Int), - ('sub', 'int_sub', TInt, TInt, CType_Int), - ('is_true', 'int_is_true', TInt, CType_Int), + ## op specialized op arg types concrete return type + ('add', 'int_add', TInt, TInt, CType_Int), + ('inplace_add', 'int_add', TInt, TInt, CType_Int), + ('sub', 'int_sub', TInt, TInt, CType_Int), + ('inplace_sub', 'int_sub', TInt, TInt, CType_Int), + ('is_true', 'int_is_true', TInt, CType_Int), ] + + def annotation2typecls(self, s_value): + besttype = Specializer.annotation2typecls(self, s_value) + if besttype is None: + + if isinstance(s_value, SomePBC): + # XXX! must be somehow unified with bookkeeper.pycall()! + # XXX for now, we support the very simplest case only. + if (s_value.is_constant() and + isinstance(s_value.const, types.FunctionType) and + not (s_value.const.func_code.co_flags & CO_VARARGS) and + s_value.const in self.annotator.translator.flowgraphs): + + graph = self.annotator.translator.flowgraphs[s_value.const] + args_ct = [self.setbesttype(a) for a in graph.getargs()] + res_ct = self.setbesttype(graph.getreturnvar()) + key = tuple(args_ct + [res_ct]) + besttype = CType_FuncPtr[key] + + return besttype + + def getspecializedop(self, op, bindings): + if op.opname == 'simple_call': + s_callable = self.annotator.binding(op.args[0], True) + if s_callable is not None: + ct = self.annotation2typecls(s_callable) + if ct is not None and issubclass(ct, CType_FuncPtr): + args_typecls = [ct] + args_typecls += ct.args_typecls + return 'direct_call', args_typecls, ct.return_typecls + + return Specializer.getspecializedop(self, op, bindings) Modified: pypy/dist/pypy/translator/genc/funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc/funcdef.py (original) +++ pypy/dist/pypy/translator/genc/funcdef.py Sun Apr 3 00:43:42 2005 @@ -475,6 +475,11 @@ args = [arg.compute() for arg in args] return 'OP_CALL_ARGS((%s), %s, %s)' % (', '.join(args), r, err) + def OP_DIRECT_CALL(self, args, r, err): + args = [arg.compute() for arg in args] + return '%s = %s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( + r, args[0], ', '.join(args[1:]), err) + # ____________________________________________________________ class lazy: Added: pypy/dist/pypy/translator/genc/parametric.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/parametric.py Sun Apr 3 00:43:42 2005 @@ -0,0 +1,41 @@ +import types + + +class parametrictype(type): + """The metaclass of parametric type classes.""" + + def __getitem__(cls, key): + if '_parametrizedinstances_' not in cls.__dict__: + cls._parametrizedinstances_ = {} + elif cls._parametrizedinstances_ is None: + raise TypeError, "'%s' is already specialized" % cls.__name__ + try: + return cls._parametrizedinstances_[key] + except KeyError: + keyrepr = recrepr(key) + if keyrepr.startswith('(') and keyrepr.endswith(')') and key != (): + keyrepr = keyrepr[1:-1] + newname = '%s[%s]' % (cls.__name__, keyrepr) + CType_Parametrized = type(cls)(newname, (cls,), { + '_parametrizedinstances_': None, + '__module__': cls.__module__, + }) + cls._parametrizedinstances_[key] = CType_Parametrized + for basecls in CType_Parametrized.__mro__: + raw = basecls.__dict__.get('__initsubclass__') + if isinstance(raw, types.FunctionType): + raw(CType_Parametrized, key) # call it as a class method + return CType_Parametrized + + +def recrepr(key): + if isinstance(key, tuple): + items = [recrepr(x) for x in key] + if len(items) == 1: + return '(%s,)' % (items[0],) + else: + return '(%s)' % (', '.join(items),) + try: + return key.__name__ + except AttributeError: + return repr(key) Added: pypy/dist/pypy/translator/genc/t_func.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/t_func.py Sun Apr 3 00:43:42 2005 @@ -0,0 +1,19 @@ +from pypy.translator.genc.parametric import parametrictype + + +class CType_FuncPtr: + __metaclass__ = parametrictype + + def __initsubclass__(cls, key): + cls.args_typecls = key[:-1] + cls.return_typecls = key[-1] + arglist = [tc.ctypetemplate % ('',) for tc in cls.args_typecls] + argtemplate = ', '.join(arglist or ['void']) + header = '(*%s)(' + argtemplate + ')' + cls.ctypetemplate = cls.return_typecls.ctypetemplate % (header,) + + def __init__(self, genc): + self.genc = genc + + def nameof(self, func, debug=None): + return self.genc.getfuncdef(func).fast_name Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Sun Apr 3 00:43:42 2005 @@ -50,13 +50,16 @@ besttype = self.defaulttypecls s_value = self.annotator.binding(a, True) if s_value is not None: - for tmatch in self.typematches: - if tmatch.s_type.contains(s_value): - besttype = tmatch.type_cls - break + besttype = self.annotation2typecls(s_value) or besttype self.settype(a, besttype) return besttype + def annotation2typecls(self, s_value): + for tmatch in self.typematches: + if tmatch.s_type.contains(s_value): + return tmatch.type_cls + return None + def convertvar(self, v, type_cls): """Get the operation(s) needed to convert 'v' to the given type.""" ops = [] @@ -111,6 +114,7 @@ # look for a specialized version of the current operation opname2, argtypes, restypecls = self.getspecializedop(op, bindings) + assert len(argtypes) == len(args) # type-convert the input arguments for i in indices: From cfbolz at codespeak.net Sun Apr 3 02:42:29 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sun, 3 Apr 2005 02:42:29 +0200 (MEST) Subject: [pypy-svn] r10264 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050403004229.1F4AD27C80@code1.codespeak.net> Author: cfbolz Date: Sun Apr 3 02:42:28 2005 New Revision: 10264 Modified: pypy/dist/pypy/translator/llvm/class.ll pypy/dist/pypy/translator/llvm/llvmbc.py pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: Changed genllvm to use remove_double_links, which makes it a bit simpler. Furthermore I added some machinery for exception support (which doesn't work yet, though). Modified: pypy/dist/pypy/translator/llvm/class.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/class.ll (original) +++ pypy/dist/pypy/translator/llvm/class.ll Sun Apr 3 02:42:28 2005 @@ -3,13 +3,17 @@ %std.class = type {%std.class*, uint} %std.object = type {%std.class*} +%std.list.sbyte = type {uint, sbyte*} +%std.exception = type {%std.class*, %std.list.sbyte*} +%std.last_exception.type = internal global %std.class {%std.class* null, uint 0} +%std.last_exception.value = internal global %std.exception {%std.class* null, %std.list.sbyte* null} implementation ;functions for type info at runtime -bool %std.issubtype(%std.class* %a, %std.class* %b) { +internal bool %std.issubtype(%std.class* %a, %std.class* %b) { entry: br label %not_null not_null: @@ -28,7 +32,7 @@ ret bool %result } -bool %std.isinstance(%std.object* %a, %std.class* %b) { +internal bool %std.isinstance(%std.object* %a, %std.class* %b) { entry: %baseptr = getelementptr %std.object* %a, int 0, uint 0 %class = load %std.class** %baseptr @@ -36,5 +40,9 @@ ret bool %result } - +internal bool %std.is_(%std.class* %a, %std.class* %b) { +entry: + %result = seteq %std.class* %a, %b + ret bool %result +} Modified: pypy/dist/pypy/translator/llvm/llvmbc.py ============================================================================== --- pypy/dist/pypy/translator/llvm/llvmbc.py (original) +++ pypy/dist/pypy/translator/llvm/llvmbc.py Sun Apr 3 02:42:28 2005 @@ -73,9 +73,6 @@ self.instructions.append(s + ", ".join([a.typed_name() for a in l_args]) + ")") - def invoke(self, l_target, l_func, l_args, errorblock): - pass - def ret(self, l_value): self.instructions.append("ret %s" % l_value.typed_name()) @@ -138,10 +135,54 @@ return "".join(s) -class ExceptionBasicBlock(BasicBlock): +class TryBasicBlock(BasicBlock): def __init__(self, label, regularblock, exceptblock): self.label = label self.exceptblock = exceptblock self.regularblock = regularblock self.llvmblocks = [] self.instructions = [] + self.finalized = False + + def invoke(self, l_target, l_func, l_args): + if l_target.llvmtype() == "void": + s = "invoke void %s(" % l_func.llvmname() + elif l_target.llvmtype() == "%std.void": + s = "invoke %std.void %s(" % l_func.llvmname() + else: + s = "%s = invoke %s %s(" % (l_target.llvmname(), + l_target.llvmtype(), l_func.llvmname()) + s += ", ".join([a.typed_name() for a in l_args]) + ")" + s += "\n\t\tto label %s.%i\n\t\texcept label %s" % \ + (self.label, len(self.llvmblocks), self.exceptblock) + self.instructions.append(s) + self.llvmblocks.append(self.instructions) + self.instructions = [] + + def invoke_void(self, l_func, l_args): + s = "call %s %s(" % (l_func.rettype(), l_func.llvmname()) + s += ", ".join([a.typed_name() for a in l_args]) + ")" + s += "\n\t\tto label %s.%i\n\t\texcept label %s" % \ + (self.label, len(self.llvmblocks), self.exceptblock) + self.instructions.append(s) + self.llvmblocks.append(self.instructions) + self.instructions = [] + + def __str__(self): + if not self.finalized: + self.uncond_branch(self.regularblock) + self.llvmblocks.append(self.instructions) + self.instructions = [] + self.finalized = True + s = [] + for i, instrs in enumerate(self.llvmblocks): + if i == 0: + label = self.label + else: + label = "%s.%i" % (self.label, i - 1) + s.append(label + ":\n") + for ins in instrs: + s.append("\t%s\n" % ins) + return "".join(s) + + Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Sun Apr 3 02:42:28 2005 @@ -1,7 +1,7 @@ import autopath import exceptions, sets, StringIO -from types import FunctionType, MethodType +from types import FunctionType, MethodType, ClassType import new from pypy.objspace.flow.model import Variable, Constant, SpaceOperation @@ -10,9 +10,8 @@ from pypy.objspace.flow.model import traverse, uniqueitems, checkgraph from pypy.annotation import model as annmodel from pypy.annotation.classdef import ClassDef -from pypy.translator import transform from pypy.translator.llvm import llvmbc - +from pypy.translator.unsimplify import remove_double_links INTRINSIC_OPS = ["lt", "le", "eq", "ne", "gt", "ge", "is", "is_true", "len", "neg", "pos", "invert", "add", "sub", "mul", "truediv", @@ -492,18 +491,26 @@ lblock.cast(l_tmp, l_val, l_type) return l_tmp +class ClassObjectRepr(TypeRepr): + def get(obj, gen): + pass + get = staticmethod(get) + class SimpleTypeRepr(TypeRepr): def get(obj, gen): if obj.__class__ is annmodel.SomeInteger: l_repr = SimpleTypeRepr("int", gen) - return l_repr + return l_repr elif obj.__class__ is annmodel.SomeBool: l_repr = SimpleTypeRepr("bool", gen) - return l_repr + return l_repr elif obj.__class__ is annmodel.SomeChar: l_repr = SimpleTypeRepr("sbyte", gen) - return l_repr + return l_repr + elif obj.__class__ is annmodel.SomePBC: + if obj.knowntype == object or obj.knowntype == ClassType: + return SimpleTypeRepr("%std.class", gen) return None get = staticmethod(get) @@ -552,8 +559,8 @@ if obj.__class__ is Constant: bind = gen.annotator.binding(obj) if bind.__class__ is annmodel.SomePBC and \ - bind.const.__class__ == type: - classdef = gen.annotator.bookkeeper.userclasses[bind.const] + gen.annotator.bookkeeper.userclasses.has_key(bind.const): + classdef = gen.annotator.bookkeeper.userclasses[bind.const] elif isinstance(obj, annmodel.SomeInstance): classdef = obj.classdef elif isinstance(obj, ClassDef): @@ -650,6 +657,7 @@ #XXXX: Ouch. I get bitten by the fact that # in LLVM typedef != class object # This will work, as long as class objects are only passed to functions + # (as opposed to used in LLVM instructions) return "%%std.class* %s" % self.objectname def op_simple_call(self, l_target, args, lblock, l_func): @@ -731,6 +739,58 @@ for l_c in l_cls.iter_subclasses(): yield l_c +class ExceptionTypeRepr(TypeRepr): + def get(obj, gen): + try: + if isinstance(obj, Constant): + if issubclass(obj.value, Exception): + return ExceptionTypeRepr(obj.value, gen) + return None + elif issubclass(obj, Exception): + return ExceptionTypeRepr(obj, gen) + except TypeError: + pass + return None + get = staticmethod(get) + + def __init__(self, exception, gen): + if debug: + print "ExceptionTypeRepr: %s" % exception + self.gen = gen + self.exception = exception + self.name = "%std.exception" + self.objectname = gen.get_global_tmp("class.%s.object" % + self.exception.__name__) + s = "%s = internal global %%std.class {%%std.class* null, uint %i}" + self.definition = s % (self.objectname, abs(id(exception))) + self.dependencies = sets.Set() + + def setup(self): + if len(self.exception.__bases__) != 0: + self.l_base = self.gen.get_repr(self.exception.__bases__[0]) + self.dependencies.add(self.l_base) + else: + self.l_base = None + + def llvmname(self): + return "%std.exception* " + + def llvmtype(self): + return "%std.class* " + + def typed_name(self): + return "%%std.class* %s" % self.objectname + + def collect_init_code(self, lblock, l_func): + if self.l_base is None: + return + l_tmp = self.gen.get_local_tmp(None, l_func) + i = "%s = getelementptr %%std.class* %s, int 0, uint 0" % \ + (l_tmp.llvmname(), self.objectname) + lblock.instruction(i) + lblock.instruction("store %%std.class* %s, %%std.class** %s" % + (self.l_base.objectname, l_tmp.llvmname())) + class BuiltinFunctionRepr(LLVMRepr): def get(obj, gen): if isinstance(obj, Constant) and \ @@ -796,6 +856,7 @@ self.allblocks = [] self.pyrex_source = "" self.dependencies = sets.Set() + remove_double_links(self.translator, self.graph) self.get_bbs() self.se = False @@ -822,10 +883,19 @@ self.same_origin_block = [False] * len(self.allblocks) def build_bbs(self): + checkgraph(self.graph) a = self.annotator for number, pyblock in enumerate(self.allblocks): - lblock = llvmbc.BasicBlock("block%i" % number) pyblock = self.allblocks[number] + is_tryblock = isinstance(pyblock.exitswitch, Constant) and \ + pyblock.exitswitch == last_exception + if is_tryblock: + regularblock = "block%i" % self.blocknum[self.exits[0].target] + exceptblock = "block%i" % self.blocknum[self.exits[1].target] + pyblock = llvmbc.TryBasicBlock("block%i" % number, + regularblock, exceptblock) + else: + lblock = llvmbc.BasicBlock("block%i" % number) if number == 0: self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) else: @@ -836,25 +906,18 @@ if isinstance(node, Link) and node.target == pyblock: incoming_links.append(node) traverse(visit, self.graph) - #special case if the incoming links are from the same block - if len(incoming_links) == 2 and \ - incoming_links[0].prevblock == incoming_links[1].prevblock: - for i, arg in enumerate(pyblock.inputargs): - l_select = self.gen.get_repr( - incoming_links[0].prevblock.exitswitch) - l_arg = self.gen.get_repr(arg) - l_v1 = self.gen.get_repr(incoming_links[1].args[i]) - l_v2 = self.gen.get_repr(incoming_links[0].args[i]) - self.dependencies.update([l_arg, l_switch, l_v1, l_v2]) - lblock.select(l_arg, l_select, l_v1, l_v2) - elif len(incoming_links) != 0: + if len(incoming_links) != 0: for i, arg in enumerate(pyblock.inputargs): l_arg = self.gen.get_repr(arg) l_values = [self.gen.get_repr(l.args[i]) for l in incoming_links] for j in range(len(l_values)): if l_values[j].llvmtype() != l_arg.llvmtype(): - l_values[j] = l_values[j].alt_types[l_arg.llvmtype()] + try: + l_values[j] = \ + l_values[j].alt_types[l_arg.llvmtype()] + except KeyError: + pass self.dependencies.add(l_arg) self.dependencies.update(l_values) lblock.phi(l_arg, l_values, @@ -886,7 +949,7 @@ # XXX: If a variable is passed to another block and has a different # type there, we have to make the cast in this block since the phi # instructions in the next block cannot be preceded by any other - # instrcution + # instruction for link in pyblock.exits: for i, arg in enumerate(link.args): localtype = self.annotator.binding(arg) @@ -903,13 +966,17 @@ l_local.alt_types = {l_targettype.llvmname(): l_tmp} #Create branches if pyblock.exitswitch is None: - if pyblock.exits == (): + if pyblock == self.graph.returnblock: l_returnvalue = self.gen.get_repr(pyblock.inputargs[0]) self.dependencies.add(l_returnvalue) lblock.ret(l_returnvalue) else: lblock.uncond_branch( "%%block%i" % self.blocknum[pyblock.exits[0].target]) + elif isinstance(pyblock.exitswitch, Constant) and \ + pyblock.exitswitch.value == last_exception: + lblock.uncond_branch( + "%%block%i" % self.blocknum[pyblock.exits[0].target]) else: assert isinstance(a.binding(pyblock.exitswitch), annmodel.SomeBool) Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Sun Apr 3 02:42:28 2005 @@ -266,3 +266,16 @@ def tuple_f3(i): j, s1, s2, l = tuple_f2(i) return j + + +#exception snippets: +def two_exceptions(n): + lst = range(10) + try: + lst[n] + except IndexError: + return 2 + except KeyError: + return 3 + return 4 + Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Sun Apr 3 02:42:28 2005 @@ -5,16 +5,15 @@ from pypy.translator.translator import Translator from pypy.translator.llvm.genllvm import LLVMGenerator +from pypy.translator.llvm.test import llvmsnippet from pypy.translator.test import snippet as test from pypy.objspace.flow.model import Constant, Variable -from pypy.translator.llvm.test import llvmsnippet - def setup_module(mod): mod.llvm_found = is_on_path("llvm-as") def compile_function(function, annotate): - t = Translator(function, simplifying=True) + t = Translator(function) a = t.annotate(annotate) a.simplify() gen = LLVMGenerator(t) From pedronis at codespeak.net Sun Apr 3 04:26:21 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 3 Apr 2005 04:26:21 +0200 (MEST) Subject: [pypy-svn] r10265 - pypy/dist/pypy/objspace/std Message-ID: <20050403022621.67A5927C81@code1.codespeak.net> Author: pedronis Date: Sun Apr 3 04:26:21 2005 New Revision: 10265 Removed: pypy/dist/pypy/objspace/std/fake.py Log: soon to be reinstanted from the past Deleted: /pypy/dist/pypy/objspace/std/fake.py ============================================================================== --- /pypy/dist/pypy/objspace/std/fake.py Sun Apr 3 04:26:21 2005 +++ (empty file) @@ -1,179 +0,0 @@ -from pypy.interpreter.error import OperationError, debug_print -from pypy.interpreter import baseobjspace -from pypy.interpreter import eval -from pypy.interpreter.function import Function -from pypy.objspace.std.stdtypedef import * -from pypy.objspace.std.objspace import W_Object, StdObjSpace -from pypy.objspace.std.model import UnwrapError -from pypy.tool.cache import Cache - -# this file automatically generates non-reimplementations of CPython -# types that we do not yet implement in the standard object space -# (files being the biggy) - -import sys - -_fake_type_cache = Cache() - -# real-to-wrapped exceptions -def wrap_exception(space): - exc, value, tb = sys.exc_info() - if exc is OperationError: - raise exc, value, tb # just re-raise it - name = exc.__name__ - if hasattr(space, 'w_' + name): - w_exc = getattr(space, 'w_' + name) - w_value = space.call_function(w_exc, - *[space.wrap(a) for a in value.args]) - for key, value in value.__dict__.items(): - if not key.startswith('_'): - space.setattr(w_value, space.wrap(key), space.wrap(value)) - else: - w_exc = space.wrap(exc) - w_value = space.wrap(value) - raise OperationError, OperationError(w_exc, w_value), tb - -def fake_type(cpy_type): - assert type(cpy_type) is type - return _fake_type_cache.getorbuild(cpy_type, really_build_fake_type, None) - -def really_build_fake_type(cpy_type, ignored): - "NOT_RPYTHON (not remotely so!)." - debug_print('faking %r'%(cpy_type,)) - kw = {} - - for s, v in cpy_type.__dict__.items(): - if not (cpy_type is unicode and s in ['__add__', '__contains__']): - if s != '__getattribute__' or cpy_type is type(sys): - kw[s] = v - - kw['__module__'] = cpy_type.__module__ - - def fake__new__(space, w_type, args_w): - args = [space.unwrap(w_arg) for w_arg in args_w] - try: - r = cpy_type.__new__(cpy_type, *args) - except: - wrap_exception(space) - w_obj = space.allocate_instance(W_Fake, w_type) - w_obj.__init__(space, r) - return w_obj - - kw['__new__'] = gateway.interp2app(fake__new__, - unwrap_spec = [baseobjspace.ObjSpace, - baseobjspace.W_Root, - 'args_w']) - if cpy_type.__base__ is not object: - assert cpy_type.__base__ is basestring - from pypy.objspace.std.basestringtype import basestring_typedef - base = basestring_typedef - else: - base = None - class W_Fake(W_Object): - typedef = StdTypeDef( - cpy_type.__name__, base, **kw) - def __init__(w_self, space, val): - W_Object.__init__(w_self, space) - w_self.val = val - def unwrap(w_self): - return w_self.val - - # cannot write to W_Fake.__name__ in Python 2.2! - W_Fake = type(W_Object)('W_Fake%s'%(cpy_type.__name__.capitalize()), - (W_Object,), - dict(W_Fake.__dict__.items())) - W_Fake.typedef.fakedcpytype = cpy_type - return W_Fake - -# ____________________________________________________________ -# -# Special case for built-in functions, methods, and slot wrappers. - -class CPythonFakeCode(eval.Code): - def __init__(self, cpy_callable): - eval.Code.__init__(self, getattr(cpy_callable, '__name__', '?')) - self.cpy_callable = cpy_callable - assert callable(cpy_callable), cpy_callable - def create_frame(self, space, w_globals, closure=None): - return CPythonFakeFrame(space, self, w_globals) - def signature(self): - return [], 'args', 'kwds' - -class CPythonFakeFrame(eval.Frame): - - def setfastscope(self, scope_w): - w_args, w_kwds = scope_w - try: - self.unwrappedargs = self.space.unwrap(w_args) - self.unwrappedkwds = self.space.unwrap(w_kwds) - except UnwrapError, e: - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) - - def getfastscope(self): - raise OperationError(self.space.w_TypeError, - self.space.wrap("cannot get fastscope of a CPythonFakeFrame")) - def run(self): - fn = self.code.cpy_callable - try: - result = apply(fn, self.unwrappedargs, self.unwrappedkwds) - except: - wrap_exception(self.space) - return self.space.wrap(result) - -def fake_builtin_callable(space, val): - return Function(space, CPythonFakeCode(val)) - -_fake_type_cache.content[type(len)] = fake_builtin_callable -_fake_type_cache.content[type(list.append)] = fake_builtin_callable -_fake_type_cache.content[type(type(None).__repr__)] = fake_builtin_callable - - -from pypy.interpreter.baseobjspace import Wrappable -from pypy.interpreter.typedef import TypeDef -from pypy.interpreter.gateway import interp2app - -class W_FakeDescriptor(Wrappable): - # Mimics pypy.interpreter.typedef.GetSetProperty. - - def __init__(self, space, d): - self.name = d.__name__ - - def descr_descriptor_get(space, w_descriptor, w_obj, w_cls=None): - # XXX HAAAAAAAAAAAACK (but possibly a good one) - if w_obj == space.w_None and not space.is_true(space.is_(w_cls, space.type(space.w_None))): - #print w_descriptor, w_obj, w_cls - return w_descriptor - else: - name = space.unwrap(w_descriptor).name - obj = space.unwrap(w_obj) - try: - val = getattr(obj, name) # this gives a "not RPython" warning - except: - wrap_exception(space) - return space.wrap(val) - - def descr_descriptor_set(space, w_descriptor, w_obj, w_value): - name = space.unwrap(w_descriptor).name - obj = space.unwrap(w_obj) - val = space.unwrap(w_value) - try: - setattr(obj, name, val) # this gives a "not RPython" warning - except: - wrap_exception(space) - - def descr_descriptor_del(space, w_descriptor, w_obj): - name = space.unwrap(w_descriptor).name - obj = space.unwrap(w_obj) - try: - delattr(obj, name) - except: - wrap_exception(space) - - typedef = TypeDef("FakeDescriptor", - __get__ = interp2app(descr_descriptor_get), - __set__ = interp2app(descr_descriptor_set), - __delete__ = interp2app(descr_descriptor_del), - ) - -_fake_type_cache.content[type(file.softspace)] = W_FakeDescriptor -_fake_type_cache.content[type(type.__dict__['__dict__'])] = W_FakeDescriptor From pedronis at codespeak.net Sun Apr 3 04:27:00 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 3 Apr 2005 04:27:00 +0200 (MEST) Subject: [pypy-svn] r10266 - pypy/dist/pypy/objspace/std Message-ID: <20050403022700.155F627C83@code1.codespeak.net> Author: pedronis Date: Sun Apr 3 04:26:59 2005 New Revision: 10266 Added: pypy/dist/pypy/objspace/std/fake.py - copied unchanged from r10054, pypy/dist/pypy/objspace/std/fake.py Log: fake with special code for _sre From hpk at codespeak.net Sun Apr 3 15:41:13 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 3 Apr 2005 15:41:13 +0200 (MEST) Subject: [pypy-svn] r10267 - pypy/dist/pypy Message-ID: <20050403134113.7E47927C94@code1.codespeak.net> Author: hpk Date: Sun Apr 3 15:41:13 2005 New Revision: 10267 Modified: pypy/dist/pypy/TODO Log: extracted TODOs from reading the IRC backlog :-) Modified: pypy/dist/pypy/TODO ============================================================================== --- pypy/dist/pypy/TODO (original) +++ pypy/dist/pypy/TODO Sun Apr 3 15:41:13 2005 @@ -5,6 +5,8 @@ compiler, a number of C modules, and some types -- as printed when running py.py: "faking ". +* mark debugging variables to make our code more readable + * re-allow more than one instance of StdObjSpace (probably requiring geninterp to generate less global init-code) From arigo at codespeak.net Sun Apr 3 16:30:13 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 3 Apr 2005 16:30:13 +0200 (MEST) Subject: [pypy-svn] r10268 - pypy/dist/pypy/documentation Message-ID: <20050403143013.14B7327C96@code1.codespeak.net> Author: arigo Date: Sun Apr 3 16:30:12 2005 New Revision: 10268 Modified: pypy/dist/pypy/documentation/controlflow.txt Log: The objspace.flow.model has been around unmodified for quite some time now. Time to document it precisely... Modified: pypy/dist/pypy/documentation/controlflow.txt ============================================================================== --- pypy/dist/pypy/documentation/controlflow.txt (original) +++ pypy/dist/pypy/documentation/controlflow.txt Sun Apr 3 16:30:12 2005 @@ -18,145 +18,85 @@ For example, if the placeholder ``v1`` is given as the argument to the above function, the interpreter will call ``v2 = space.mul(space.wrap(3), v1)`` and then ``v3 = space.add(v2, space.wrap(2))`` and return ``v3`` as the result. During these calls the FlowObjSpace will record a basic block:: Block(v1): # input argument - v2 = mul(constant(3), v1) - v3 = add(v2, constant(2)) + v2 = mul(Constant(3), v1) + v3 = add(v2, Constant(2)) -Joining basic blocks --------------------- +The Flow model +-------------- -A basic block ends in one of two cases: when the interpreters calls ``is_true()``, or when a joinpoint is reached. +``pypy.objspace.flow.model`` defines the data model used by the flow graphs, as created by the FlowObjSpace, manipulated by ``pypy.translator.simplify`` and ``pypy.translator.transform``, and in general read by almost all the modules in ``pypy.translator``. -* A joinpoint is a specially marked position in the bytecode. This is the only bytecode dependency in FlowObjSpace. Intuitively, there should be one joinpoint at each bytecode position where two different paths can "join" together, e.g. the entry point of a loop. A joinpoint forces a basic block to end and the next one to begin. A snapshot of the current frame is taken (a FrameState) and recorded on the joinpoint. If the control flow later reaches this point again, we put a "backwards" jump to the old basic block that starts at this point. (The control flow is actually just a graph, with basic blocks pointing to each other, so there is not really a notion of "backwards".) +It is recommended to play with ``python translator.py`` on a few examples to get an idea of the structure of flow graphs. Here is a short summary of the non-obvious parts. -* If the interpreter calls ``is_true()``, the FlowObjSpace doesn't generally know if the answer should be True or False, so it puts a conditional jump and generates two successor blocks for the current basic block. There is some trickery involved so that the interpreter is fooled into thinking that ``is_true()`` first returns False (and the subsequent operations are recorded in the first successor block), and later the *same* call to ``is_true()`` also returns True (and the subsequent operations go this time to the other successor block). + +FunctionGraph + A container for one graph (corresponding to one function). + + :startblock: the first block. It is where the control goes when the function is called. The input arguments of the startblock are the function's arguments. If the function takes a ``*args`` argument, the ``args`` tuple is given as the last input argument of the startblock. + :returnblock: the (unique) block that performs a function return. It is empty, not actually containing any ``return`` operation; the return is implicit. The returned value is the unique input variable of the returnblock. + :exceptblock: the (unique) block that raises an exception out of the function. The two input variables are the exception class and the exception value, respectively. (No other block will actually link to the exceptblock if the function does not explicitely raise exceptions.) + + +Block + A basic block, containing a list of operations and ending in jumps to other basic blocks. All the values that are "live" during the execution of the block are stored in Variables. Each basic block uses its own distinct Variables. + + :inputargs: list of fresh, distinct Variables that represent all the values that can enter this block from any of the previous blocks. + :operations: list of SpaceOperations. + :exitswitch: see below + :exits: list of Links representing possible jumps from the end of this basic block to the beginning of other basic blocks. + + Each Block ends in one of the following ways: + + * unconditional jump: exitswitch is None, exits contains a single Link. + * conditional jump: exitswitch is one of the Variables that appear in the Block, and exits contains one or more Links (usually 2). Each Link's exitcase gives a concrete value. This is the equivalent of a "switch": the control follows the Link whose exitcase matches the run-time value of the exitswitch Variable. It is a run-time error if the Variable doesn't match any exitcase. (Currently only used with 2 Links whose exitcase are False and True, respectively.) + * exception catching: exitswitch is ``Constant(last_exception)``. The first Link has exitcase set to None and represents the non-exceptional path. The next Links have exitcase set to a subclass of Exception, and are taken when the *last* operation of the basic block raises a matching exception. (Thus the basic block must not be empty, and only the last operation is protected by the handler.) + * return or except: the returnblock and the exceptblock have operations set to an empty tuple, exitswitch to None, and exits empty. + + +Link + A link from one basic block to another. + + :prevblock: the Block that this Link is an exit of. + :target: the target Block to which this Link points to. + :args: a list of Variables and Constants, of the same size as the target Block's inputargs, which gives all the values passed into the next block. (Note that each Variable used in the prevblock may appear zero, one or more times in the ``args`` list.) + :exitcase: see above. + + Note that ``args`` uses Variables from the prevblock, which are matched to the target block's ``inputargs`` by position, as in a tuple assignment or function call would do. -Passing variables between basic blocks --------------------------------------- +SpaceOperation + A recorded (or otherwise generated) basic operation. -XXX + :opname: the name of the operation. Generally one from the list in ``pypy.interpreter.baseobjspace``. + :args: list of arguments. Each one is a Constant or a Variable seen previously in the basic block. + :result: a *new* Variable into which the result is to be stored. + Note that operations usually cannot implicitely raise exceptions at run-time; so for example, code generators can assume that a ``getitem`` operation on a list is safe and can be performed without bound checking. The exceptions to this rule are: (1) if the operation is the last in the block, which ends with ``exitswitch == Constant(last_exception)``, then the implicit exceptions must be checked for, generated, and caught appropriately; (2) calls to other functions, as per ``simple_call`` or ``call_args``, can always raise whatever the called function can raise --- and such exceptions must be passed through to the parent unless they are caught as above. -FlowExecutionContext --------------------- -The FlowExecutionContext is a modified ExecutionContext that drives the interpreter in a fashion that is quite different from the one needed for normal interpretation. XXX - - -Interface ---------- - -We make one instance of FlowExecutionContext per function to analyse. The instance has a cache of FrameStates to detect when the control is looping (``self.joinpoints``). XXX - - -Old stuff to remove -------------------- - -:: - - Hello again - - def f(i): - return g(i)+2 - def g(i): - return i+1 - - f(3) - tspace: - pyxcode.putln('def f(%s):' % sig) - res = frame.eval(executioncontext) - pyxcode.putln('return %s' % res) - - - Pyrex: def f(v1): - dis.dis(f) --> - 2 0 LOAD_GLOBAL 0 (g) - w_result = space.getitem(f.w_globals, w_varname) - - 3 LOAD_FAST 0 (i) - 6 CALL_FUNCTION 1 - space.call(w_function, w_arguments, w_kwds) - space.call(w_g, ("v1",), {}) - Pyrex: v2 = g(v1) - 9 LOAD_CONST 1 (2) - space.wrap(2) - 12 BINARY_ADD - space.add("v2", "constant 2") - Pyrex: v3 = v2 + 2 - 13 RETURN_VALUE - 14 LOAD_CONST 0 (None) - 17 RETURN_VALUE - Pyrex: return v3 - - - Result: - def f(v1): - v2 = g(v1) - v3 = v2 + 2 - return v3 - - - def h(i, j): - if i < 0: - i = j - return i+1 - - Pyrex: def h(v1, v2): - --> interpreter - 3 0 LOAD_FAST 0 (i) - 3 LOAD_CONST 1 (0) - 6 COMPARE_OP 0 (<) - "v3" = space.lt("v1", "constant 0") - Pyrex: v3 = v1 < 0 - 9 JUMP_IF_FALSE 10 (to 22) - space.is_true("v3") - Pyrex: if v3: cinline "goto Label1;" - 12 POP_TOP - - 4 13 LOAD_FAST 1 (j) - 16 STORE_FAST 0 (i) - 19 JUMP_FORWARD 1 (to 23) - >> 22 POP_TOP - - Pyrex: cinline "LabelBytecode23:" # just in case for later - 5 >> 23 LOAD_FAST 0 (i) - 26 LOAD_CONST 2 (1) - 29 BINARY_ADD - space.add("v1", "constant 2") - Pyrex: v4 = v1 + 2 - 30 RETURN_VALUE - 31 LOAD_CONST 0 (None) - 34 RETURN_VALUE - Pyrex: return v4 - - pyrex: cinline "Label1:" - 12 POP_TOP - - 4 13 LOAD_FAST 1 (j) - 16 STORE_FAST 0 (i) - (in the interpreter fastlocals now: i="v2" j="v2") - 19 JUMP_FORWARD 1 (to 23) - >> 22 POP_TOP - - (bytecode 23 already seen!) - Pyrex: v1 = v2 - Pyrex: cinline "goto LabelBytecode23;" - 5 >> 23 LOAD_FAST 0 (i) - - def h(i, j): - if i < 0: - i = j - return i+1 - - def h(v1, v2): - v3 = v1 < 0 - if v3: cinline "goto label1;" - - cinline "labelBytecode23:" - v4=v1+1 - return v4 - cinline "label1:" - v1=v2 - cinline "goto labelBytecode23;" - +Variable + A placeholder for a run-time value. There is mostly debugging stuff here. + + :name: it is good style to use the Variable object itself instead of its ``name`` attribute to reference a value, although the ``name`` is guaranteed unique. + + +Constant + A constant value used as argument to a SpaceOperation, or as value to pass across a Link to initialize an input Variable in the target Block. + + :value: the concrete value represented by this Constant. + :key: a hashable object representing the value. + + A Constant can occasionally store a mutable Python object. It represents a static, pre-initialized, read-only version of that object. The flow graph should not attempt to actually mutate such Constants. + + +How the FlowObjSpace works +-------------------------- + +The FlowObjSpace works by recording all operations issued by the interpreter into basic blocks. A basic block ends in one of two cases: when the interpreters calls ``is_true()``, or when a joinpoint is reached. + +* A joinpoint occurs when the next operation is about to be recorded into the current block, but there is already another block that records an operation for the same bytecode position. This means that the interpreter has closed a loop and is interpreting already-seen code again. In this situation, we interrupt the interpreter and we make a link from the end of the current block back to the previous block, thus closing the loop in the flow graph as well. (Note that this occurs only when an operation is about to be recorded, which allows some amount of constant-folding.) + +* If the interpreter calls ``is_true()``, the FlowObjSpace doesn't generally know if the answer should be True or False, so it puts a conditional jump and generates two successor blocks for the current basic block. There is some trickery involved so that the interpreter is fooled into thinking that ``is_true()`` first returns False (and the subsequent operations are recorded in the first successor block), and later the *same* call to ``is_true()`` also returns True (and the subsequent operations go this time to the other successor block). + +(This section to be extended...) From pedronis at codespeak.net Sun Apr 3 16:45:04 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 3 Apr 2005 16:45:04 +0200 (MEST) Subject: [pypy-svn] r10269 - pypy/dist/pypy Message-ID: <20050403144504.2FA3127C97@code1.codespeak.net> Author: pedronis Date: Sun Apr 3 16:45:04 2005 New Revision: 10269 Modified: pypy/dist/pypy/TODO Log: this was fixed in Washington by changing the way geninterp produced init code is structured. Modified: pypy/dist/pypy/TODO ============================================================================== --- pypy/dist/pypy/TODO (original) +++ pypy/dist/pypy/TODO Sun Apr 3 16:45:04 2005 @@ -7,10 +7,6 @@ * mark debugging variables to make our code more readable -* re-allow more than one instance of StdObjSpace - (probably requiring geninterp to generate less global - init-code) - * extend the testing mechanisms to specifically allow: - running plain CPython regrtests (including outputtests, unittests, doctests, ...) From arigo at codespeak.net Sun Apr 3 20:09:06 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 3 Apr 2005 20:09:06 +0200 (MEST) Subject: [pypy-svn] r10271 - pypy/dist/pypy/objspace/std Message-ID: <20050403180906.5A4F327C77@code1.codespeak.net> Author: arigo Date: Sun Apr 3 20:09:06 2005 New Revision: 10271 Modified: pypy/dist/pypy/objspace/std/listobject.py Log: An attempt at making W_ListObject safe against evil code that mutates the list while it is being operated on. Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Sun Apr 3 20:09:06 2005 @@ -73,23 +73,22 @@ return W_IntObject(space, result) def getitem__List_ANY(space, w_list, w_index): - items = w_list.ob_item idx = space.int_w(w_index) if idx < 0: idx += w_list.ob_size if idx < 0 or idx >= w_list.ob_size: raise OperationError(space.w_IndexError, space.wrap("list index out of range")) - w_item = items[idx] + w_item = w_list.ob_item[idx] return w_item def getitem__List_Slice(space, w_list, w_slice): - items = w_list.ob_item length = w_list.ob_size start, stop, step, slicelength = slicetype.indices4(space, w_slice, length) assert slicelength >= 0 w_res = W_ListObject(space, []) _list_resize(w_res, slicelength) + items = w_list.ob_item subitems = w_res.ob_item for i in range(slicelength): subitems[i] = items[start] @@ -98,10 +97,12 @@ return w_res def contains__List_ANY(space, w_list, w_obj): - items = w_list.ob_item - for i in range(w_list.ob_size): - if space.eq_w(items[i], w_obj): + # needs to be safe against eq_w() mutating the w_list behind our back + i = 0 + while i < w_list.ob_size: + if space.eq_w(w_list.ob_item[i], w_obj): return space.w_True + i += 1 return space.w_False def iter__List(space, w_list): @@ -131,10 +132,10 @@ def mul_list_times(space, w_list, times): w_res = W_ListObject(space, []) - src = w_list.ob_item size = w_list.ob_size newlen = size * times # XXX check overflow _list_resize(w_res, newlen) + src = w_list.ob_item items = w_res.ob_item p = 0 for _ in range(times): @@ -168,14 +169,15 @@ return w_list def eq__List_List(space, w_list1, w_list2): - items1 = w_list1.ob_item - items2 = w_list2.ob_item + # needs to be safe against eq_w() mutating the w_lists behind our back if w_list1.ob_size != w_list2.ob_size: return space.w_False - for i in range(w_list1.ob_size): - if not space.is_true(space.eq(items1[i], items2[i])): + i = 0 + while i < w_list1.ob_size and i < w_list2.ob_size: + if not space.eq_w(w_list1.ob_item[i], w_list2.ob_item[i]): return space.w_False - return space.w_True + i += 1 + return space.newbool(w_list1.ob_size == w_list2.ob_size) def _min(a, b): if a < b: @@ -183,24 +185,28 @@ return b def lt__List_List(space, w_list1, w_list2): - items1 = w_list1.ob_item - items2 = w_list2.ob_item - ncmp = _min(w_list1.ob_size, w_list2.ob_size) + # needs to be safe against eq_w() mutating the w_lists behind our back # Search for the first index where items are different - for p in range(ncmp): - if not space.is_true(space.eq(items1[p], items2[p])): - return space.lt(items1[p], items2[p]) + i = 0 + while i < w_list1.ob_size and i < w_list2.ob_size: + w_item1 = w_list1.ob_item[i] + w_item2 = w_list2.ob_item[i] + if not space.eq_w(w_item1, w_item2): + return space.lt(w_item1, w_item2) + i += 1 # No more items to compare -- compare sizes return space.newbool(w_list1.ob_size < w_list2.ob_size) def gt__List_List(space, w_list1, w_list2): - items1 = w_list1.ob_item - items2 = w_list2.ob_item - ncmp = _min(w_list1.ob_size, w_list2.ob_size) + # needs to be safe against eq_w() mutating the w_lists behind our back # Search for the first index where items are different - for p in range(ncmp): - if not space.is_true(space.eq(items1[p], items2[p])): - return space.gt(items1[p], items2[p]) + i = 0 + while i < w_list1.ob_size and i < w_list2.ob_size: + w_item1 = w_list1.ob_item[i] + w_item2 = w_list2.ob_item[i] + if not space.eq_w(w_item1, w_item2): + return space.gt(w_item1, w_item2) + i += 1 # No more items to compare -- compare sizes return space.newbool(w_list1.ob_size > w_list2.ob_size) @@ -237,14 +243,13 @@ return space.w_None def setitem__List_ANY_ANY(space, w_list, w_index, w_any): - items = w_list.ob_item idx = space.int_w(w_index) if idx < 0: idx += w_list.ob_size if idx < 0 or idx >= w_list.ob_size: raise OperationError(space.w_IndexError, space.wrap("list index out of range")) - items[idx] = w_any + w_list.ob_item[idx] = w_any return space.w_None def setitem__List_Slice_List(space, w_list, w_slice, w_list2): @@ -463,39 +468,38 @@ return w_res def list_remove__List_ANY(space, w_list, w_any): - eq = space.eq - items = w_list.ob_item - for i in range(w_list.ob_size): - cmp = eq(items[i], w_any) - if space.is_true(cmp): + # needs to be safe against eq_w() mutating the w_list behind our back + i = 0 + while i < w_list.ob_size: + if space.eq_w(w_list.ob_item[i], w_any): _del_slice(w_list, i, i+1) return space.w_None + i += 1 raise OperationError(space.w_ValueError, space.wrap("list.remove(x): x not in list")) def list_index__List_ANY_ANY_ANY(space, w_list, w_any, w_start, w_stop): - eq = space.eq - items = w_list.ob_item + # needs to be safe against eq_w() mutating the w_list behind our back size = w_list.ob_size w_start = slicetype.adapt_bound(space, w_start, space.wrap(size)) w_stop = slicetype.adapt_bound(space, w_stop, space.wrap(size)) - start = space.int_w(w_start) + i = space.int_w(w_start) stop = space.int_w(w_stop) - for i in range(start,stop): - cmp = eq(items[i], w_any) - if space.is_true(cmp): + while i < stop and i < w_list.ob_size: + if space.eq_w(w_list.ob_item[i], w_any): return space.wrap(i) + i += 1 raise OperationError(space.w_ValueError, space.wrap("list.index(x): x not in list")) def list_count__List_ANY(space, w_list, w_any): - eq = space.eq - items = w_list.ob_item - count = r_int(0) - for i in range(w_list.ob_size): - cmp = eq(items[i], w_any) - if space.is_true(cmp): + # needs to be safe against eq_w() mutating the w_list behind our back + count = 0 + i = 0 + while i < w_list.ob_size: + if space.eq_w(w_list.ob_item[i], w_any): count += 1 + i += 1 return space.wrap(count) # Reverse a slice of a list in place, from lo up to (exclusive) hi. From cfbolz at codespeak.net Sun Apr 3 20:23:50 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sun, 3 Apr 2005 20:23:50 +0200 (MEST) Subject: [pypy-svn] r10272 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050403182350.64FD027C88@code1.codespeak.net> Author: cfbolz Date: Sun Apr 3 20:23:50 2005 New Revision: 10272 Added: pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/typerepr.py Modified: pypy/dist/pypy/translator/llvm/genllvm.py pypy/dist/pypy/translator/llvm/llvmbc.py pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Log: Splitted representation.py into more manageable chunks. Added: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/classrepr.py Sun Apr 3 20:23:50 2005 @@ -0,0 +1,254 @@ +import autopath +import sets + +from types import FunctionType + +from pypy.objspace.flow.model import Constant +from pypy.annotation import model as annmodel +from pypy.annotation.classdef import ClassDef +from pypy.translator.llvm import llvmbc + +from pypy.translator.llvm.representation import debug, LLVMRepr +from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr +from pypy.translator.llvm.funcrepr import FunctionRepr, BoundMethodRepr +from pypy.translator.llvm.funcrepr import VirtualMethodRepr + +class ClassRepr(TypeRepr): + l_classes = {} + def get(obj, gen): + classdef = None + if obj.__class__ is Constant: + bind = gen.annotator.binding(obj) + if bind.__class__ is annmodel.SomePBC and \ + gen.annotator.bookkeeper.userclasses.has_key(bind.const): + classdef = gen.annotator.bookkeeper.userclasses[bind.const] + elif isinstance(obj, annmodel.SomeInstance): + classdef = obj.classdef + elif isinstance(obj, ClassDef): + classdef = obj + if classdef is None: + return None + if (classdef, gen) not in ClassRepr.l_classes: + ClassRepr.l_classes[(classdef, gen)] = ClassRepr(classdef, gen) + return ClassRepr.l_classes[(classdef, gen)] + get = staticmethod(get) + + def __init__(self, obj, gen): + if debug: + print "ClassRepr: %s, %s" % (obj, hex(id(self))) + self.classdef = obj + self.gen = gen + self.includefile = "" + self.name = gen.get_global_tmp("class.%s" % self.classdef.cls.__name__) + self.objectname = gen.get_global_tmp("class.%s.object" % + self.classdef.cls.__name__) + if debug: + print self.name + self.dependencies = sets.Set() + self.setup_done = False + self.attr_num = {} + + def setup(self): + if self.setup_done: + return + self.setup_done = True + if debug: + print "ClassRepr.setup()", id(self), hex(id(self)), self.setup_done + print len(ClassRepr.l_classes) + gen = self.gen + if self.classdef.basedef is not None: #get attributes from base classes + self.l_base = gen.get_repr(self.classdef.basedef) + self.dependencies.add(self.l_base) + attribs = self.l_base.attributes + else: + self.l_base = None + attribs = [] + meth = [] + if debug: + print "attributes", self.classdef.attrs + #get attributes of this class and decide whether they are methods + for key, attr in self.classdef.attrs.items(): + if debug: + print key, attr, attr.sources, attr.s_value, + if len(attr.sources) != 0: + func = self.classdef.cls.__dict__[attr.name] + meth.append((key, func)) + if debug: + print "--> method1" + elif isinstance(attr.s_value, annmodel.SomePBC) and \ + attr.s_value.knowntype is FunctionType: + func = self.classdef.cls.__dict__[attr.name] + meth.append((key, func)) + if debug: + print "--> method2" + else: + attribs.append(attr) + if debug: + print "--> value" + self.l_attrs_types = [gen.get_repr(attr.s_value) for attr in attribs] + self.dependencies = sets.Set(self.l_attrs_types) + attributes = ", ".join([at.llvmname() for at in self.l_attrs_types]) + self.definition = "%s = type {%%std.class*, %s}" % (self.name, + attributes) + self.attributes = attribs + self.attr_num = {} + for i, attr in enumerate(attribs): + self.attr_num[attr.name] = i + 1 + self.methods = dict(meth) + + def get_globals(self): + s = "\n%s = internal global %%std.class {%%std.class* null, uint %i}" + s = s % (self.objectname, abs(id(self))) + return self.definition + s + + def collect_init_code(self, lblock, l_func): + if self.l_base is None: + return + l_tmp = self.gen.get_local_tmp(None, l_func) + i = "%s = getelementptr %%std.class* %s, int 0, uint 0" % \ + (l_tmp.llvmname(), self.objectname) + lblock.instruction(i) + lblock.instruction("store %%std.class* %s, %%std.class** %s" % + (self.l_base.objectname, l_tmp.llvmname())) + + def llvmtype(self): + return "%std.class* " + + def typed_name(self): + #XXXX: Ouch. I get bitten by the fact that + # in LLVM typedef != class object + # This will work, as long as class objects are only passed to functions + # (as opposed to used in LLVM instructions) + return "%%std.class* %s" % self.objectname + + def op_simple_call(self, l_target, args, lblock, l_func): + lblock.malloc(l_target, self) + l_tmp = self.gen.get_local_tmp( + PointerTypeRepr("%std.class*", self.gen), l_func) + lblock.getelementptr(l_tmp, l_target, [0, 0]) + lblock.instruction("store %%std.class* %s, %s" % + (self.objectname, l_tmp.typed_name())) + init = None + for cls in self.classdef.getmro(): + if "__init__" in cls.attrs: + init = cls.attrs["__init__"].getvalue() + break + if init is not None: + l_init = self.gen.get_repr(init) + l_func.dependencies.add(l_init) + l_args = [self.gen.get_repr(arg) for arg in args[1:]] + self.dependencies.update(l_args) + # XXX + if isinstance(l_init, VirtualMethodRepr): + l_init = l_init.l_funcs[l_init.l_classes.index(self)] + lblock.call_void(l_init, [l_target] + l_args) + + def t_op_getattr(self, l_target, args, lblock, l_func): + if debug: + print "t_op_getattr of ClassRepr called", l_target, args, self.name + if not isinstance(args[1], Constant): + raise CompileError,"getattr called with non-constant: %s" % args[1] + if args[1].value in self.attr_num: + l_args0 = self.gen.get_repr(args[0]) + l_func.dependencies.add(l_args0) + l_pter = self.gen.get_local_tmp( + PointerTypeRepr(l_target.llvmtype(), self.gen), l_func) + lblock.getelementptr(l_pter, l_args0, + [0, self.attr_num[args[1].value]]) + lblock.load(l_target, l_pter) + return + else: + if debug: + print list(self.classdef.getmro()) + for cls in self.classdef.getmro(): + l_cls = self.gen.get_repr(cls) + self.dependencies.add(l_cls) + if args[1].value in l_cls.methods: + if debug: + print "class %s, %s matches" % (cls, l_cls) + l_args0 = self.gen.get_repr(args[0]) + l_func.dependencies.add(l_args0) + l_method = BoundMethodRepr(l_target.type, l_args0, l_cls, + self.gen) + l_func.dependencies.add(l_method) + l_method.setup() + l_target.type = l_method + return + raise CompileError, ("getattr called with unknown attribute %s" % \ + args[1].value) + + def t_op_setattr(self, l_target, args, lblock, l_func): + if not isinstance(args[1], Constant): + raise CompileError,"setattr called with non-constant: %s" % args[1] + if args[1].value in self.attr_num: + l_args0 = self.gen.get_repr(args[0]) + l_value = self.gen.get_repr(args[2]) + self.dependencies.update([l_args0, l_value]) + l_pter = self.gen.get_local_tmp( + PointerTypeRepr(l_value.llvmtype(), self.gen), l_func) + lblock.getelementptr(l_pter, l_args0, + [0, self.attr_num[args[1].value]]) + lblock.store(l_value, l_pter) + else: + raise CompileError, ("setattr called with unknown attribute %s" % \ + args[1].value) + + def iter_subclasses(self): + for cls, classdef in self.classdef.subdefs.iteritems(): + l_cls = self.gen.get_repr(classdef) + yield l_cls + for l_c in l_cls.iter_subclasses(): + yield l_c + +class ExceptionTypeRepr(TypeRepr): + def get(obj, gen): + try: + if isinstance(obj, Constant): + if issubclass(obj.value, Exception): + return ExceptionTypeRepr(obj.value, gen) + return None + elif issubclass(obj, Exception): + return ExceptionTypeRepr(obj, gen) + except TypeError: + pass + return None + get = staticmethod(get) + + def __init__(self, exception, gen): + if debug: + print "ExceptionTypeRepr: %s" % exception + self.gen = gen + self.exception = exception + self.name = "%std.exception" + self.objectname = gen.get_global_tmp("class.%s.object" % + self.exception.__name__) + s = "%s = internal global %%std.class {%%std.class* null, uint %i}" + self.definition = s % (self.objectname, abs(id(exception))) + self.dependencies = sets.Set() + + def setup(self): + if len(self.exception.__bases__) != 0: + self.l_base = self.gen.get_repr(self.exception.__bases__[0]) + self.dependencies.add(self.l_base) + else: + self.l_base = None + + def llvmname(self): + return "%std.exception* " + + def llvmtype(self): + return "%std.class* " + + def typed_name(self): + return "%%std.class* %s" % self.objectname + + def collect_init_code(self, lblock, l_func): + if self.l_base is None: + return + l_tmp = self.gen.get_local_tmp(None, l_func) + i = "%s = getelementptr %%std.class* %s, int 0, uint 0" % \ + (l_tmp.llvmname(), self.objectname) + lblock.instruction(i) + lblock.instruction("store %%std.class* %s, %%std.class** %s" % + (self.l_base.objectname, l_tmp.llvmname())) + Added: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Sun Apr 3 20:23:50 2005 @@ -0,0 +1,473 @@ +import autopath +import sets, StringIO + +from types import FunctionType, MethodType + +from pypy.objspace.flow.model import Variable, Constant, Block, Link +from pypy.objspace.flow.model import last_exception, last_exc_value +from pypy.objspace.flow.model import traverse, checkgraph +from pypy.annotation import model as annmodel +from pypy.translator.llvm import llvmbc +from pypy.translator.unsimplify import remove_double_links + +from pypy.translator.llvm.representation import debug, LLVMRepr +from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr + + +INTRINSIC_OPS = ["lt", "le", "eq", "ne", "gt", "ge", "is", "is_true", "len", + "neg", "pos", "invert", "add", "sub", "mul", "truediv", + "floordiv", "div", "mod", "pow", "lshift", "rshift", "and_", + "or", "xor", "inplace_add", "inplace_sub", "inplace_mul", + "inplace_truediv", "inplace_floordiv", "inplace_div", + "inplace_mod", "inplace_pow", "inplace_lshift", + "inplace_rshift", "inplace_and", "inplace_or", "inplace_xor", + "contains", "newlist", "newtuple", "alloc_and_set"] + +C_SIMPLE_TYPES = {annmodel.SomeChar: "char", + annmodel.SomeString: "char*", + annmodel.SomeBool: "unsigned char", + annmodel.SomeInteger: "int"} + + +class BuiltinFunctionRepr(LLVMRepr): + def get(obj, gen): + if isinstance(obj, Constant) and \ + isinstance(gen.annotator.binding(obj), annmodel.SomeBuiltin): + return BuiltinFunctionRepr(obj.value.__name__, gen) + elif isinstance(obj, annmodel.SomeBuiltin): + name = obj.analyser.__name__.replace("method_", "") + return BuiltinFunctionRepr(name, gen) + return None + get = staticmethod(get) + + def __init__(self, name, gen): + self.name = "%std." + name + self.gen = gen + + def llvmname(self): + return self.name + + def op_simple_call(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + if self.name == "%std.isinstance": + l_tmp = self.gen.get_local_tmp(PointerTypeRepr("%std.object", + self.gen), l_func) + l_func.dependencies.add(l_tmp) + lblock.cast(l_tmp, l_args[1]) + l_args[1] = l_tmp + lblock.call(l_target, l_args[0], l_args[1:]) + +class FunctionRepr(LLVMRepr): + l_functions = {} + def get(obj, gen): + name = None + if isinstance(obj, annmodel.SomePBC) and \ + len(obj.prebuiltinstances) == 1: + obj = obj.prebuiltinstances.keys()[0] + elif isinstance(obj, Constant): + obj = obj.value + if isinstance(obj, MethodType): + name = obj.im_class.__name__ + "." + obj.im_func.__name__ + obj = obj.im_func + if isinstance(obj, FunctionType): + if (obj, gen) in FunctionRepr.l_functions: + return FunctionRepr.l_functions[(obj, gen)] + if name is None: + name = obj.__name__ + l_func = FunctionRepr(gen.get_global_tmp(name), obj, gen) + FunctionRepr.l_functions[(obj, gen)] = l_func + return l_func + return None + get = staticmethod(get) + + def __init__(self, name, function, gen): + if debug: + print "FunctionRepr: %s" % name + self.gen = gen + self.func = function + self.translator = gen.translator + self.name = name + self.graph = self.translator.getflowgraph(self.func) + self.annotator = gen.translator.annotator + self.blocknum = {} + self.allblocks = [] + self.pyrex_source = "" + self.dependencies = sets.Set() + remove_double_links(self.translator, self.graph) + self.get_bbs() + self.se = False + + def setup(self): + if self.se: + return + self.se = True + self.l_args = [self.gen.get_repr(ar) + for ar in self.graph.startblock.inputargs] + self.dependencies.update(self.l_args) + self.retvalue = self.gen.get_repr(self.graph.returnblock.inputargs[0]) + self.dependencies.add(self.retvalue) + self.build_bbs() + + def get_returntype(): + return self.rettype.llvmname() + + def get_bbs(self): + def visit(node): + if isinstance(node, Block) and node not in self.blocknum: + self.allblocks.append(node) + self.blocknum[node] = len(self.blocknum) + traverse(visit, self.graph) + self.same_origin_block = [False] * len(self.allblocks) + + def build_bbs(self): + checkgraph(self.graph) + a = self.annotator + for number, pyblock in enumerate(self.allblocks): + pyblock = self.allblocks[number] + is_tryblock = isinstance(pyblock.exitswitch, Constant) and \ + pyblock.exitswitch.value == last_exception + if is_tryblock: + regularblock = "block%i" % self.blocknum[ + pyblock.exits[0].target] + exceptblock = "block%i.except" % self.blocknum[pyblock] + lblock = llvmbc.TryBasicBlock("block%i" % number, + regularblock, exceptblock) + l_excblock = llvmbc.BasicBlock("block%i.except" % number) + l_excp = self.gen.get_repr(last_exception) + l_uip = self.gen.get_local_tmp(PointerTypeRepr("uint", + self.gen), self) + l_ui = self.gen.get_local_tmp( + self.gen.get_repr(annmodel.SomeInteger(True, True)), self) + self.dependencies.update([l_excp, l_uip, l_ui]) + l_excblock.load(l_cl, l_excp) + l_excblock.getelementptr(l_uip, l_cl, [0, 1]) + l_excblock.load(l_ui, l_uip) + l_excblock.switch(l_ui, "%%block%i.unwind" % number, + [(str(abs(id(l_c))), + XXXXXXXXXXXXX) + for exc in pyblock.exits[1:]]) + else: + lblock = llvmbc.BasicBlock("block%i" % number) + if number == 0: + self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) + else: + self.llvm_func.basic_block(lblock) + #Create Phi nodes (but not for the first block) + incoming_links = [] + def visit(node): + if isinstance(node, Link) and node.target == pyblock: + incoming_links.append(node) + traverse(visit, self.graph) + if len(incoming_links) != 0: + for i, arg in enumerate(pyblock.inputargs): + l_arg = self.gen.get_repr(arg) + l_values = [self.gen.get_repr(l.args[i]) + for l in incoming_links] + for j in range(len(l_values)): + if l_values[j].llvmtype() != l_arg.llvmtype(): + try: + l_values[j] = \ + l_values[j].alt_types[l_arg.llvmtype()] + except KeyError: + pass + self.dependencies.add(l_arg) + self.dependencies.update(l_values) + lblock.phi(l_arg, l_values, + ["%%block%i" % self.blocknum[l.prevblock] + for l in incoming_links]) + #Handle SpaceOperations + for op in pyblock.operations: + l_target = self.gen.get_repr(op.result) + self.dependencies.add(l_target) + l_arg0 = self.gen.get_repr(op.args[0]) + self.dependencies.add(l_arg0) + l_op = getattr(l_arg0, "op_" + op.opname, None) + if l_op is not None: + l_op(l_target, op.args, lblock, self) + #XXX need to find more elegant solution for this special case + elif op.opname == "newtuple": + l_target.type.t_op_newtuple(l_target, op.args, + lblock, self) + elif op.opname in INTRINSIC_OPS: + l_args = [self.gen.get_repr(arg) for arg in op.args[1:]] + self.dependencies.update(l_args) + lblock.spaceop(l_target, op.opname, [l_arg0] + l_args) + else: + s = "SpaceOperation %s not supported. Target: %s " \ + "Args: %s " % (op.opname, l_target, op.args) + \ + "Dispatched on: %s" % l_arg0 + + raise CompileError, s + # XXX: If a variable is passed to another block and has a different + # type there, we have to make the cast in this block since the phi + # instructions in the next block cannot be preceded by any other + # instruction + for link in pyblock.exits: + for i, arg in enumerate(link.args): + localtype = self.annotator.binding(arg) + targettype = self.annotator.binding( + link.target.inputargs[i]) + l_targettype = self.gen.get_repr(targettype) + l_localtype = self.gen.get_repr(localtype) + l_local = self.gen.get_repr(arg) + self.dependencies.update([l_targettype, l_localtype, + l_local]) + if l_targettype.llvmname() != l_localtype.llvmname(): + l_tmp = self.gen.get_local_tmp(l_targettype, self) + lblock.cast(l_tmp, l_local) + l_local.alt_types = {l_targettype.llvmname(): l_tmp} + #Create branches + if pyblock.exitswitch is None: + if pyblock == self.graph.returnblock: + l_returnvalue = self.gen.get_repr(pyblock.inputargs[0]) + self.dependencies.add(l_returnvalue) + lblock.ret(l_returnvalue) + else: + lblock.uncond_branch( + "%%block%i" % self.blocknum[pyblock.exits[0].target]) + elif isinstance(pyblock.exitswitch, Constant) and \ + pyblock.exitswitch.value == last_exception: + lblock.uncond_branch( + "%%block%i" % self.blocknum[pyblock.exits[0].target]) + else: + assert isinstance(a.binding(pyblock.exitswitch), + annmodel.SomeBool) + l_switch = self.gen.get_repr(pyblock.exitswitch) + self.dependencies.add(l_switch) + lblock.cond_branch( + l_switch, + "%%block%i" % self.blocknum[pyblock.exits[1].target], + "%%block%i" % self.blocknum[pyblock.exits[0].target]) + + def llvmfuncdef(self): + s = "internal %s %s(" % (self.retvalue.llvmtype(), self.name) + return s + ", ".join([a.typed_name() for a in self.l_args]) + ")" + + def rettype(self): + return self.retvalue.llvmtype() + + def get_functions(self): + return str(self.llvm_func) + + def llvmtype(self): + assert self.llvmfuncdef().count(self.name) == 1 + return self.llvmfuncdef().replace(self.name + "(", "(") + "*" + + def op_simple_call(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + for i, (l_a1, l_a2) in enumerate(zip(l_args[1:], self.l_args)): + if l_a1.llvmtype() != l_a2.llvmtype(): + l_tmp = self.gen.get_local_tmp(l_a2.type, l_func) + lblock.cast(l_tmp, l_a1) + l_args[1 + i] = l_tmp + l_func.dependencies.update(l_args) + lblock.call(l_target, l_args[0], l_args[1:]) + +class EntryFunctionRepr(LLVMRepr): + def get(obj, gen): + return None + get = staticmethod(get) + + def __init__(self, name, function, gen): + self.gen = gen + self.function = function + self.name = name + self.dependencies = sets.Set() + self.branch_added = False + + def setup(self): + self.l_function = self.gen.get_repr(self.function) + self.dependencies.add(self.l_function) + lblock = llvmbc.BasicBlock("entry") + lblock.instruction("%tmp = load bool* %Initialized.0__") + lblock.instruction("br bool %tmp, label %real_entry, label %init") + self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) + self.init_block = llvmbc.BasicBlock("init") + self.init_block.instruction("store bool true, bool* %Initialized.0__") + real_entry = llvmbc.BasicBlock("real_entry") + l_ret = self.gen.get_local_tmp(self.l_function.retvalue.type, self) + self.l_function.op_simple_call( + l_ret, [self.function] + self.l_function.l_args, real_entry, self) + real_entry.ret(l_ret) + self.llvm_func.basic_block(real_entry) + self.llvm_func.basic_block(self.init_block) + + def cfuncdef(self): + a = self.l_function.translator.annotator + retv = self.l_function.graph.returnblock.inputargs[0] + rettype_c = C_SIMPLE_TYPES[a.binding(retv).__class__] + args = self.l_function.graph.startblock.inputargs + argtypes_c = [C_SIMPLE_TYPES[a.binding(v).__class__] for v in args] + fd = "%s %s(%s)" % (rettype_c, self.name[1:], + ", ".join(argtypes_c)) + return fd + + def llvmfuncdef(self): + s = "%s %s(" % (self.l_function.retvalue.llvmtype(), self.name) + s += ", ".join([a.typed_name() for a in self.l_function.l_args]) + ")" + return s + + def get_pyrex_source(self): + name = self.name[1:] + args = self.l_function.graph.startblock.inputargs + self.pyrex_source = ["cdef extern %s\n" % + (self.cfuncdef())] + self.pyrex_source += ["def wrap_%s(" % name] + t = [] + for i, a in enumerate(args): + t += ["%s" % a] + t = ", ".join(t) + self.pyrex_source += t + "):\n\treturn %s(%s)\n\n" % (name, t) + self.pyrex_source = "".join(self.pyrex_source) + return self.pyrex_source + + def rettype(self): + return self.l_function.retvalue.llvmtype() + + def get_functions(self): + if not self.branch_added: + self.init_block.uncond_branch("%real_entry") + return str(self.llvm_func) + + def get_globals(self): + return "%Initialized.0__ = internal global bool false" + + def llvmtype(self): + assert self.llvmfuncdef().count(self.name) == 1 + return self.llvmfuncdef().replace(self.name + "(", "(") + "*" + + def op_simple_call(self, l_target, args, lblock, l_func): + self.l_function.op_simple_call(l_target, [self.function] + args, + lblock, l_func) + +class VirtualMethodRepr(LLVMRepr): + # Really stupid implementation of virtual functions: + # Do a switch on the id of the class of the object and cast the object + # to the appropriate class + # Should be replaced by function pointers + def get(obj, gen): + if isinstance(obj, annmodel.SomePBC) and \ + len(obj.prebuiltinstances) > 1 and \ + isinstance(obj.prebuiltinstances.keys()[0], FunctionType): + return VirtualMethodRepr(obj.prebuiltinstances, gen) + return None + get = staticmethod(get) + + def __init__(self, prebuiltinstances, gen): + if debug: + print "VirtualMethodRepr: %s" % prebuiltinstances + self.gen = gen + classes = prebuiltinstances.values() + self.commonbase = reduce(lambda a, b: a.commonbase(b), classes) + self.funcs = prebuiltinstances.keys() + self.name = "%" + self.funcs[0].__name__ + ".virtual" + self.attribute = self.funcs[0].__name__ + self.dependencies = sets.Set() + + def setup(self): + self.l_commonbase = self.gen.get_repr(self.commonbase) + self.l_classes = [self.l_commonbase] + \ + list(self.l_commonbase.iter_subclasses()) + self.dependencies.update(self.l_classes) + self.l_funcs = [] + #find appropriate method for every class + for l_cls in self.l_classes: + for classdef in l_cls.classdef.getmro(): + if classdef.cls.__dict__.has_key(self.attribute): + self.l_funcs.append(self.gen.get_repr( + classdef.cls.__dict__[self.attribute])) + break + else: + raise CompileError, "Couldn't find method %s for %s" % \ + (self.attribute, l_cls.classdef.cls) + self.dependencies.update(self.l_funcs) + self.retvalue = self.l_funcs[0].retvalue + self.type_numbers = [id(l_c) for l_c in self.l_classes] + self.l_args = [self.gen.get_repr(ar) + for ar in self.l_funcs[0].graph.startblock.inputargs] + l_retvalue = self.retvalue + self.dependencies.update(self.l_args) + #create function + #XXX pretty messy + entryblock = llvmbc.BasicBlock("entry") + l_clp = self.gen.get_local_tmp(PointerTypeRepr("%std.class*", + self.gen), self) + l_cl = self.gen.get_local_tmp(PointerTypeRepr("%std.class", + self.gen), self) + l_uip = self.gen.get_local_tmp(PointerTypeRepr("uint", self.gen), + self) + l_ui = self.gen.get_local_tmp( + self.gen.get_repr(annmodel.SomeInteger(True, True)), self) + self.dependencies.update([l_clp, l_cl, l_uip, l_ui]) + entryblock.getelementptr(l_clp, self.l_args[0], [0, 0]) + entryblock.load(l_cl, l_clp) + entryblock.getelementptr(l_uip, l_cl, [0, 1]) + entryblock.load(l_ui, l_uip) + entryblock.switch(l_ui, "%" + self.l_commonbase.classdef.cls.__name__, + [(str(abs(id(l_c))), "%" + l_c.classdef.cls.__name__) + for l_c in self.l_classes]) + lfunc = llvmbc.Function(self.llvmfuncdef(), entryblock) + for i, l_cls in enumerate(self.l_classes): + lblock = llvmbc.BasicBlock(l_cls.classdef.cls.__name__) + lfunc.basic_block(lblock) + l_tmp = self.gen.get_local_tmp(l_cls, self) + lblock.cast(l_tmp, self.l_args[0]) + l_tmp_ret = self.gen.get_local_tmp(l_retvalue.type, self) + self.l_funcs[i].op_simple_call( + l_tmp_ret, [self.l_funcs[i], l_tmp] + + self.l_funcs[0].graph.startblock.inputargs[1:], lblock, self) + lblock.ret(l_tmp_ret) + self.llvm_func = lfunc + + def op_simple_call(self, l_target, args, lblock, l_func): + name = self.name[1:-8] + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + # call the method directly if no subclass of the class of args[1] has + # a special version of this method defined + for l_cls in l_args[1].type.iter_subclasses(): + if l_cls.classdef.cls.__dict__.has_key(name): + break + else: + for clsdef in l_args[1].type.classdef.getmro(): + if clsdef.cls.__dict__.has_key(name): + l_method = self.gen.get_repr(clsdef.cls.__dict__[name]) + args[0] = l_method + print l_method.llvmname(), l_method + l_method.op_simple_call(l_target, args, lblock, l_func) + return + if l_args[1].llvmtype() != self.l_args[0].llvmtype(): + l_tmp = self.gen.get_local_tmp(self.l_args[0].type, l_func) + l_func.dependencies.add(l_tmp) + lblock.cast(l_tmp, l_args[1]) + l_args[1] = l_tmp + lblock.call(l_target, l_args[0], l_args[1:]) + return + + def get_functions(self): + return str(self.llvm_func) + + def llvmfuncdef(self): + s = "internal %s %s(" % (self.l_funcs[0].retvalue.llvmtype(), + self.name) + return s + ", ".join([a.typed_name() for a in self.l_args]) + ")" + + def rettype(self): + return self.retvalue.llvmtype() + +class BoundMethodRepr(LLVMRepr): + def get(obj, gen): + return None + get = staticmethod(get) + def __init__(self, l_func, l_self, l_class, gen): + self.gen = gen + self.l_func = l_func + self.l_self = l_self + self.l_class = l_class + self.dependencies = sets.Set([l_self, l_class, l_func]) + + def t_op_simple_call(self, l_target, args, lblock, l_func): + self.l_func.op_simple_call(l_target, + [self.l_func, self.l_self] + args[1:], + lblock, l_func) Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Sun Apr 3 20:23:50 2005 @@ -18,8 +18,11 @@ from pypy.translator.llvm.test import llvmsnippet as test2 -from pypy.translator.llvm.representation import * +from pypy.translator.llvm import representation, funcrepr, typerepr, seqrepr +from pypy.translator.llvm import classrepr +from pypy.translator.llvm.representation import LLVMRepr, TmpVariableRepr +from pypy.translator.llvm.funcrepr import EntryFunctionRepr debug = True @@ -44,9 +47,10 @@ self.annotator = self.translator.annotator self.global_counts = {} self.local_counts = {} - self.repr_classes = [eval(s) - for s in dir(sys.modules.get(self.__module__)) - if "Repr" in s] + self.repr_classes = [] + for mod in [representation, funcrepr, typerepr, seqrepr, classrepr]: + self.repr_classes += [getattr(mod, s) + for s in dir(mod) if "Repr" in s] self.llvm_reprs = {} self.depth = 0 self.entryname = self.translator.functions[0].__name__ @@ -160,3 +164,8 @@ yield l_repr +t = Translator(test2.two_exceptions) +a = t.annotate([int]) +a.simplify() +## t.view() +f = llvmcompile(t) Modified: pypy/dist/pypy/translator/llvm/llvmbc.py ============================================================================== --- pypy/dist/pypy/translator/llvm/llvmbc.py (original) +++ pypy/dist/pypy/translator/llvm/llvmbc.py Sun Apr 3 20:23:50 2005 @@ -128,6 +128,9 @@ l_target.llvmtype()) self.instructions.append(s) + def unwind(self): + self.instructions.append("unwind") + def __str__(self): s = [self.label + ":\n"] for ins in self.instructions: @@ -144,6 +147,19 @@ self.instructions = [] self.finalized = False + def spaceop(self, l_target, opname, l_args): + if l_target.llvmtype() == "void": + s = "invoke void %%std.%s.exc(" % opname + else: + s = "%s = invoke %s %%std.%s.exc(" % (l_target.llvmname(), + l_target.llvmtype(), opname) + s += ", ".join([a.typed_name() for a in l_args]) + ")" + s += "\n\t\tto label %%%s.%i\n\t\texcept label %%%s" % \ + (self.label, len(self.llvmblocks), self.exceptblock) + self.instructions.append(s) + self.llvmblocks.append(self.instructions) + self.instructions = [] + def invoke(self, l_target, l_func, l_args): if l_target.llvmtype() == "void": s = "invoke void %s(" % l_func.llvmname() @@ -153,24 +169,27 @@ s = "%s = invoke %s %s(" % (l_target.llvmname(), l_target.llvmtype(), l_func.llvmname()) s += ", ".join([a.typed_name() for a in l_args]) + ")" - s += "\n\t\tto label %s.%i\n\t\texcept label %s" % \ + s += "\n\t\tto label %%%s.%i\n\t\texcept label %%%s" % \ (self.label, len(self.llvmblocks), self.exceptblock) self.instructions.append(s) self.llvmblocks.append(self.instructions) self.instructions = [] + call = invoke + def invoke_void(self, l_func, l_args): s = "call %s %s(" % (l_func.rettype(), l_func.llvmname()) s += ", ".join([a.typed_name() for a in l_args]) + ")" - s += "\n\t\tto label %s.%i\n\t\texcept label %s" % \ + s += "\n\t\tto label %%%s.%i\n\t\texcept label %%%s" % \ (self.label, len(self.llvmblocks), self.exceptblock) self.instructions.append(s) self.llvmblocks.append(self.instructions) self.instructions = [] + call_void = invoke_void + def __str__(self): if not self.finalized: - self.uncond_branch(self.regularblock) self.llvmblocks.append(self.instructions) self.instructions = [] self.finalized = True Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Sun Apr 3 20:23:50 2005 @@ -1,41 +1,16 @@ import autopath -import exceptions, sets, StringIO +import sets -from types import FunctionType, MethodType, ClassType -import new - -from pypy.objspace.flow.model import Variable, Constant, SpaceOperation -from pypy.objspace.flow.model import FunctionGraph, Block, Link -from pypy.objspace.flow.model import last_exception, last_exc_value -from pypy.objspace.flow.model import traverse, uniqueitems, checkgraph +from pypy.objspace.flow.model import Variable, Constant from pypy.annotation import model as annmodel -from pypy.annotation.classdef import ClassDef -from pypy.translator.llvm import llvmbc -from pypy.translator.unsimplify import remove_double_links - -INTRINSIC_OPS = ["lt", "le", "eq", "ne", "gt", "ge", "is", "is_true", "len", - "neg", "pos", "invert", "add", "sub", "mul", "truediv", - "floordiv", "div", "mod", "pow", "lshift", "rshift", "and_", - "or", "xor", "inplace_add", "inplace_sub", "inplace_mul", - "inplace_truediv", "inplace_floordiv", "inplace_div", - "inplace_mod", "inplace_pow", "inplace_lshift", - "inplace_rshift", "inplace_and", "inplace_or", "inplace_xor", - "contains", "newlist", "newtuple", "alloc_and_set"] - -C_SIMPLE_TYPES = {annmodel.SomeChar: "char", - annmodel.SomeString: "char*", - annmodel.SomeBool: "unsigned char", - annmodel.SomeInteger: "int"} - LLVM_SIMPLE_TYPES = {annmodel.SomeChar: "sbyte", annmodel.SomeBool: "bool"} - debug = False -class CompileError(exceptions.Exception): +class CompileError(Exception): pass @@ -71,7 +46,7 @@ def get_dependencies(self): try: return self.dependencies - except exceptions.AttributeError: + except AttributeError: return [] @@ -279,942 +254,3 @@ % repr(name)) -class TypeRepr(LLVMRepr): - def get(obj, gen): - if (isinstance(obj, annmodel.SomePBC) and \ - obj.prebuiltinstances.keys()[0] is None) or obj is type(None): - return TypeRepr("%std.void", "%std.void = type sbyte", "", gen) - get = staticmethod(get) - - def __init__(self, llvmname, definition, includefile, gen): - if debug: - print "TypeRepr: %s, %s" % (llvmname, definition) - self.name = llvmname - self.definition = definition - self.gen = gen - self.includefile = includefile - - def get_globals(self): - try: - return self.definition - except exceptions.AttributeError: - return "" - - def get_functions(self): - try: - if self.includefile != "": - f = file(autopath.this_dir + "/" + self.includefile, "r") - s = f.read() - f.close() - return s - except exceptions.AttributeError: - pass - return "" - - def llvmname(self): - return self.name + "*" - - def llvmname_wo_pointer(self): - return self.name - -class StringTypeRepr(TypeRepr): - def get(obj, gen): - if obj.__class__ is annmodel.SomeString or obj is str: - return StringTypeRepr(gen) - get = staticmethod(get) - - def __init__(self, gen): - if debug: - print "StringTypeRepr" - self.gen = gen - self.dependencies = sets.Set() - - def setup(self): - self.l_charlist = self.gen.get_repr( - annmodel.SomeList(None, annmodel.SomeChar())) - self.dependencies.add(self.l_charlist) - self.name = self.l_charlist.llvmname_wo_pointer() - - def t_op_getitem(self, l_target, args, lblock, l_func): - l_args = [self.gen.get_repr(arg) for arg in args] - l_func.dependencies.update(l_args) - lblock.spaceop(l_target, "getitem", l_args) - - def t_op_inplace_add(self, l_target, args, lblock, l_func): - l_args = [self.gen.get_repr(arg) for arg in args] - l_func.dependencies.update(l_args) - lblock.spaceop(l_target, "add", l_args) - -class ListTypeRepr(TypeRepr): - l_listtypes = {} - def get(obj, gen): - if obj.__class__ is annmodel.SomeList: - if (obj.s_item.__class__, gen) in ListTypeRepr.l_listtypes: - return ListTypeRepr.l_listtypes[(obj.s_item.__class__, gen)] - l_repr = ListTypeRepr(obj, gen) - ListTypeRepr.l_listtypes[(obj.s_item.__class__, gen)] = l_repr - return l_repr - return None - get = staticmethod(get) - - def __init__(self, obj, gen): - if debug: - print "ListTypeRepr: %s, %s" % (obj, obj.s_item) - self.gen = gen - self.l_itemtype = gen.get_repr(obj.s_item) - self.dependencies = sets.Set([self.l_itemtype]) - itemtype = self.l_itemtype.llvmname() - self.name = "%%std.list.%s" % itemtype.strip("%").replace("*", "") - self.definition = self.name + " = type {uint, %s*}" % itemtype - - def get_functions(self): - f = file(autopath.this_dir + "/list_template.ll", "r") - s = f.read() - f.close() - itemtype = self.l_itemtype.llvmname() - s = s.replace("%(item)s", self.l_itemtype.llvmname()) - s = s.replace("%(name)s", itemtype.strip("%").replace("*", "")) - if isinstance(self.l_itemtype, IntTypeRepr): - f1 = file(autopath.this_dir + "/int_list.ll", "r") - s += f1.read() - f1.close() - return s - - def t_op_getitem(self, l_target, args, lblock, l_func): - l_args = [self.gen.get_repr(arg) for arg in args] - l_func.dependencies.update(l_args) - lblock.spaceop(l_target, "getitem", l_args) - - def t_op_setitem(self, l_target, args, lblock, l_func): - l_args = [self.gen.get_repr(arg) for arg in args] - l_func.dependencies.update(l_args) - lblock.spaceop(l_target, "setitem", l_args) - - def t_op_delitem(self, l_target, args, lblock, l_func): - l_args = [self.gen.get_repr(arg) for arg in args] - l_func.dependencies.update(l_args) - lblock.spaceop(l_target, "delitem", l_args) - - def t_op_getattr(self, l_target, args, lblock, l_func): - if isinstance(args[1], Constant) and \ - args[1].value in ["append", "reverse", "pop"]: - l_args0 = self.gen.get_repr(args[0]) - l_func.dependencies.add(l_args0) - l_method = BoundMethodRepr(l_target.type, l_args0, self, self.gen) - l_method.setup() - l_target.type = l_method - else: - raise CompileError, "List method %s not supported." % args[1].value - -class TupleTypeRepr(TypeRepr): - def get(obj, gen): - if isinstance(obj, annmodel.SomeTuple): - return TupleTypeRepr(obj, gen) - return None - get = staticmethod(get) - - def __init__(self, obj, gen): - self.gen = gen - self.l_itemtypes = [gen.get_repr(l) for l in obj.items] - self.name = (("{" + ", ".join(["%s"] * len(self.l_itemtypes)) + "}") % - tuple([l.llvmname() for l in self.l_itemtypes])) - - def get_functions(self): - s = ("internal int %%std.len(%s %%t) {\n\tret int %i\n}\n" % - (self.llvmname(), len(self.l_itemtypes))) - return s - - def t_op_newtuple(self, l_target, args, lblock, l_func): - l_args = [self.gen.get_repr(arg) for arg in args] - l_func.dependencies.update(l_args) - lblock.malloc(l_target, self) - l_ptrs = [self.gen.get_local_tmp(\ - PointerTypeRepr(l.llvmname(),self.gen), l_func) - for l in self.l_itemtypes] - l_func.dependencies.update(l_ptrs) - for i, l in enumerate(self.l_itemtypes): - lblock.getelementptr(l_ptrs[i], l_target, [0, i]) - lblock.store(l_args[i], l_ptrs[i]) - - def t_op_getitem(self, l_target, args, lblock, l_func): - if not isinstance(args[1], Constant): - raise CompileError, "index for tuple's getitem has to be constant" - l_args = [self.gen.get_repr(arg) for arg in args] - l_func.dependencies.update(l_args) - l_tmp = self.gen.get_local_tmp(PointerTypeRepr(l_target.llvmtype(), - self.gen), l_func) - cast = getattr(l_args[1], "cast_to_unsigned", None) - if cast is not None: - l_unsigned = cast(l_args[1], lblock, l_func) - else: - raise CompileError, "Invalid arguments to getitem" - lblock.getelementptr(l_tmp, l_args[0], [0, l_unsigned]) - lblock.load(l_target, l_tmp) - -class IntTypeRepr(TypeRepr): - def get(obj, gen): - if obj.__class__ is annmodel.SomeInteger: - return IntTypeRepr(obj, gen) - return None - get = staticmethod(get) - - def __init__(self, annotation, gen): - if debug: - print "IntTypeRepr: %s" % annotation - self.annotation = annotation - if annotation.unsigned: - self.name = "uint" - else: - self.name = "int" - self.gen = gen - - def llvmname(self): - return self.name - - def cast_to_signed(self, l_val, lblock, l_function): - if not self.annotation.unsigned: - return l_val - ann = annmodel.SomeInteger() - l_type = self.gen.get_repr(ann) - l_tmp = self.gen.get_local_tmp(l_type, l_function) - l_function.dependencies.update([l_type, l_tmp]) - lblock.cast(l_tmp, l_val, l_type) - return l_tmp - - def cast_to_unsigned(self, l_val, lblock, l_function): - if self.annotation.unsigned: - return l_val - ann = annmodel.SomeInteger(True, True) - l_type = self.gen.get_repr(ann) - l_tmp = self.gen.get_local_tmp(l_type, l_function) - l_function.dependencies.update([l_type, l_tmp]) - lblock.cast(l_tmp, l_val, l_type) - return l_tmp - -class ClassObjectRepr(TypeRepr): - def get(obj, gen): - pass - get = staticmethod(get) - - -class SimpleTypeRepr(TypeRepr): - def get(obj, gen): - if obj.__class__ is annmodel.SomeInteger: - l_repr = SimpleTypeRepr("int", gen) - return l_repr - elif obj.__class__ is annmodel.SomeBool: - l_repr = SimpleTypeRepr("bool", gen) - return l_repr - elif obj.__class__ is annmodel.SomeChar: - l_repr = SimpleTypeRepr("sbyte", gen) - return l_repr - elif obj.__class__ is annmodel.SomePBC: - if obj.knowntype == object or obj.knowntype == ClassType: - return SimpleTypeRepr("%std.class", gen) - return None - get = staticmethod(get) - - def __init__(self, llvmname, gen): - if debug: - print "SimpleTypeRepr: %s" % llvmname - self.name = llvmname - self.gen = gen - self.definition = "" - self.includefile = "" - - def llvmname(self): - return self.name - -class PointerTypeRepr(TypeRepr): - def get(obj, gen): - return None - get = staticmethod(get) - - def __init__(self, type, gen): - self.type = type - - def llvmname(self): - return self.type + "*" - -class ImpossibleValueRepr(TypeRepr): - def get(obj, gen): - if obj.__class__ is annmodel.SomeImpossibleValue: - return ImpossibleValueRepr() - return None - get = staticmethod(get) - - def __init__(self): - self.definition = "" - self.dependencies = sets.Set() - self.includefile = "" - - def llvmname(self): - return "void" - - -class ClassRepr(TypeRepr): - l_classes = {} - def get(obj, gen): - classdef = None - if obj.__class__ is Constant: - bind = gen.annotator.binding(obj) - if bind.__class__ is annmodel.SomePBC and \ - gen.annotator.bookkeeper.userclasses.has_key(bind.const): - classdef = gen.annotator.bookkeeper.userclasses[bind.const] - elif isinstance(obj, annmodel.SomeInstance): - classdef = obj.classdef - elif isinstance(obj, ClassDef): - classdef = obj - if classdef is None: - return None - if (classdef, gen) not in ClassRepr.l_classes: - ClassRepr.l_classes[(classdef, gen)] = ClassRepr(classdef, gen) - return ClassRepr.l_classes[(classdef, gen)] - get = staticmethod(get) - - def __init__(self, obj, gen): - if debug: - print "ClassRepr: %s, %s" % (obj, hex(id(self))) - self.classdef = obj - self.gen = gen - self.includefile = "" - self.name = gen.get_global_tmp("class.%s" % self.classdef.cls.__name__) - self.objectname = gen.get_global_tmp("class.%s.object" % - self.classdef.cls.__name__) - if debug: - print self.name - self.dependencies = sets.Set() - self.setup_done = False - self.attr_num = {} - - def setup(self): - if self.setup_done: - return - self.setup_done = True - if debug: - print "ClassRepr.setup()", id(self), hex(id(self)), self.setup_done - print len(ClassRepr.l_classes) - gen = self.gen - if self.classdef.basedef is not None: #get attributes from base classes - self.l_base = gen.get_repr(self.classdef.basedef) - self.dependencies.add(self.l_base) - attribs = self.l_base.attributes - else: - self.l_base = None - attribs = [] - meth = [] - if debug: - print "attributes", self.classdef.attrs - #get attributes of this class and decide whether they are methods - for key, attr in self.classdef.attrs.items(): - if debug: - print key, attr, attr.sources, attr.s_value, - if len(attr.sources) != 0: - func = self.classdef.cls.__dict__[attr.name] - meth.append((key, func)) - if debug: - print "--> method1" - elif isinstance(attr.s_value, annmodel.SomePBC) and \ - attr.s_value.knowntype is FunctionType: - func = self.classdef.cls.__dict__[attr.name] - meth.append((key, func)) - if debug: - print "--> method2" - else: - attribs.append(attr) - if debug: - print "--> value" - self.l_attrs_types = [gen.get_repr(attr.s_value) for attr in attribs] - self.dependencies = sets.Set(self.l_attrs_types) - attributes = ", ".join([at.llvmname() for at in self.l_attrs_types]) - self.definition = "%s = type {%%std.class*, %s}" % (self.name, - attributes) - self.attributes = attribs - self.attr_num = {} - for i, attr in enumerate(attribs): - self.attr_num[attr.name] = i + 1 - self.methods = dict(meth) - - def get_globals(self): - s = "\n%s = internal global %%std.class {%%std.class* null, uint %i}" - s = s % (self.objectname, abs(id(self))) - return self.definition + s - - def collect_init_code(self, lblock, l_func): - if self.l_base is None: - return - l_tmp = self.gen.get_local_tmp(None, l_func) - i = "%s = getelementptr %%std.class* %s, int 0, uint 0" % \ - (l_tmp.llvmname(), self.objectname) - lblock.instruction(i) - lblock.instruction("store %%std.class* %s, %%std.class** %s" % - (self.l_base.objectname, l_tmp.llvmname())) - - def llvmtype(self): - return "%std.class* " - - def typed_name(self): - #XXXX: Ouch. I get bitten by the fact that - # in LLVM typedef != class object - # This will work, as long as class objects are only passed to functions - # (as opposed to used in LLVM instructions) - return "%%std.class* %s" % self.objectname - - def op_simple_call(self, l_target, args, lblock, l_func): - lblock.malloc(l_target, self) - l_tmp = self.gen.get_local_tmp( - PointerTypeRepr("%std.class*", self.gen), l_func) - lblock.getelementptr(l_tmp, l_target, [0, 0]) - lblock.instruction("store %%std.class* %s, %s" % - (self.objectname, l_tmp.typed_name())) - init = None - for cls in self.classdef.getmro(): - if "__init__" in cls.attrs: - init = cls.attrs["__init__"].getvalue() - break - if init is not None: - l_init = self.gen.get_repr(init) - l_func.dependencies.add(l_init) - l_args = [self.gen.get_repr(arg) for arg in args[1:]] - self.dependencies.update(l_args) - # XXX - if isinstance(l_init, VirtualMethodRepr): - l_init = l_init.l_funcs[l_init.l_classes.index(self)] - lblock.call_void(l_init, [l_target] + l_args) - - def t_op_getattr(self, l_target, args, lblock, l_func): - if debug: - print "t_op_getattr of ClassRepr called", l_target, args, self.name - if not isinstance(args[1], Constant): - raise CompileError,"getattr called with non-constant: %s" % args[1] - if args[1].value in self.attr_num: - l_args0 = self.gen.get_repr(args[0]) - l_func.dependencies.add(l_args0) - l_pter = self.gen.get_local_tmp( - PointerTypeRepr(l_target.llvmtype(), self.gen), l_func) - lblock.getelementptr(l_pter, l_args0, - [0, self.attr_num[args[1].value]]) - lblock.load(l_target, l_pter) - return - else: - if debug: - print list(self.classdef.getmro()) - for cls in self.classdef.getmro(): - l_cls = self.gen.get_repr(cls) - self.dependencies.add(l_cls) - if args[1].value in l_cls.methods: - if debug: - print "class %s, %s matches" % (cls, l_cls) - l_args0 = self.gen.get_repr(args[0]) - l_func.dependencies.add(l_args0) - l_method = BoundMethodRepr(l_target.type, l_args0, l_cls, - self.gen) - l_func.dependencies.add(l_method) - l_method.setup() - l_target.type = l_method - return - raise CompileError, ("getattr called with unknown attribute %s" % \ - args[1].value) - - def t_op_setattr(self, l_target, args, lblock, l_func): - if not isinstance(args[1], Constant): - raise CompileError,"setattr called with non-constant: %s" % args[1] - if args[1].value in self.attr_num: - l_args0 = self.gen.get_repr(args[0]) - l_value = self.gen.get_repr(args[2]) - self.dependencies.update([l_args0, l_value]) - l_pter = self.gen.get_local_tmp( - PointerTypeRepr(l_value.llvmtype(), self.gen), l_func) - lblock.getelementptr(l_pter, l_args0, - [0, self.attr_num[args[1].value]]) - lblock.store(l_value, l_pter) - else: - raise CompileError, ("setattr called with unknown attribute %s" % \ - args[1].value) - - def iter_subclasses(self): - for cls, classdef in self.classdef.subdefs.iteritems(): - l_cls = self.gen.get_repr(classdef) - yield l_cls - for l_c in l_cls.iter_subclasses(): - yield l_c - -class ExceptionTypeRepr(TypeRepr): - def get(obj, gen): - try: - if isinstance(obj, Constant): - if issubclass(obj.value, Exception): - return ExceptionTypeRepr(obj.value, gen) - return None - elif issubclass(obj, Exception): - return ExceptionTypeRepr(obj, gen) - except TypeError: - pass - return None - get = staticmethod(get) - - def __init__(self, exception, gen): - if debug: - print "ExceptionTypeRepr: %s" % exception - self.gen = gen - self.exception = exception - self.name = "%std.exception" - self.objectname = gen.get_global_tmp("class.%s.object" % - self.exception.__name__) - s = "%s = internal global %%std.class {%%std.class* null, uint %i}" - self.definition = s % (self.objectname, abs(id(exception))) - self.dependencies = sets.Set() - - def setup(self): - if len(self.exception.__bases__) != 0: - self.l_base = self.gen.get_repr(self.exception.__bases__[0]) - self.dependencies.add(self.l_base) - else: - self.l_base = None - - def llvmname(self): - return "%std.exception* " - - def llvmtype(self): - return "%std.class* " - - def typed_name(self): - return "%%std.class* %s" % self.objectname - - def collect_init_code(self, lblock, l_func): - if self.l_base is None: - return - l_tmp = self.gen.get_local_tmp(None, l_func) - i = "%s = getelementptr %%std.class* %s, int 0, uint 0" % \ - (l_tmp.llvmname(), self.objectname) - lblock.instruction(i) - lblock.instruction("store %%std.class* %s, %%std.class** %s" % - (self.l_base.objectname, l_tmp.llvmname())) - -class BuiltinFunctionRepr(LLVMRepr): - def get(obj, gen): - if isinstance(obj, Constant) and \ - isinstance(gen.annotator.binding(obj), annmodel.SomeBuiltin): - return BuiltinFunctionRepr(obj.value.__name__, gen) - elif isinstance(obj, annmodel.SomeBuiltin): - name = obj.analyser.__name__.replace("method_", "") - return BuiltinFunctionRepr(name, gen) - return None - get = staticmethod(get) - - def __init__(self, name, gen): - self.name = "%std." + name - self.gen = gen - - def llvmname(self): - return self.name - - def op_simple_call(self, l_target, args, lblock, l_func): - l_args = [self.gen.get_repr(arg) for arg in args] - l_func.dependencies.update(l_args) - if self.name == "%std.isinstance": - l_tmp = self.gen.get_local_tmp(PointerTypeRepr("%std.object", - self.gen), l_func) - l_func.dependencies.add(l_tmp) - lblock.cast(l_tmp, l_args[1]) - l_args[1] = l_tmp - lblock.call(l_target, l_args[0], l_args[1:]) - -class FunctionRepr(LLVMRepr): - l_functions = {} - def get(obj, gen): - name = None - if isinstance(obj, annmodel.SomePBC) and \ - len(obj.prebuiltinstances) == 1: - obj = obj.prebuiltinstances.keys()[0] - elif isinstance(obj, Constant): - obj = obj.value - if isinstance(obj, MethodType): - name = obj.im_class.__name__ + "." + obj.im_func.__name__ - obj = obj.im_func - if isinstance(obj, FunctionType): - if (obj, gen) in FunctionRepr.l_functions: - return FunctionRepr.l_functions[(obj, gen)] - if name is None: - name = obj.__name__ - l_func = FunctionRepr(gen.get_global_tmp(name), obj, gen) - FunctionRepr.l_functions[(obj, gen)] = l_func - return l_func - return None - get = staticmethod(get) - - def __init__(self, name, function, gen): - if debug: - print "FunctionRepr: %s" % name - self.gen = gen - self.func = function - self.translator = gen.translator - self.name = name - self.graph = self.translator.getflowgraph(self.func) - self.annotator = gen.translator.annotator - self.blocknum = {} - self.allblocks = [] - self.pyrex_source = "" - self.dependencies = sets.Set() - remove_double_links(self.translator, self.graph) - self.get_bbs() - self.se = False - - def setup(self): - if self.se: - return - self.se = True - self.l_args = [self.gen.get_repr(ar) - for ar in self.graph.startblock.inputargs] - self.dependencies.update(self.l_args) - self.retvalue = self.gen.get_repr(self.graph.returnblock.inputargs[0]) - self.dependencies.add(self.retvalue) - self.build_bbs() - - def get_returntype(): - return self.rettype.llvmname() - - def get_bbs(self): - def visit(node): - if isinstance(node, Block) and node not in self.blocknum: - self.allblocks.append(node) - self.blocknum[node] = len(self.blocknum) - traverse(visit, self.graph) - self.same_origin_block = [False] * len(self.allblocks) - - def build_bbs(self): - checkgraph(self.graph) - a = self.annotator - for number, pyblock in enumerate(self.allblocks): - pyblock = self.allblocks[number] - is_tryblock = isinstance(pyblock.exitswitch, Constant) and \ - pyblock.exitswitch == last_exception - if is_tryblock: - regularblock = "block%i" % self.blocknum[self.exits[0].target] - exceptblock = "block%i" % self.blocknum[self.exits[1].target] - pyblock = llvmbc.TryBasicBlock("block%i" % number, - regularblock, exceptblock) - else: - lblock = llvmbc.BasicBlock("block%i" % number) - if number == 0: - self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) - else: - self.llvm_func.basic_block(lblock) - #Create Phi nodes (but not for the first block) - incoming_links = [] - def visit(node): - if isinstance(node, Link) and node.target == pyblock: - incoming_links.append(node) - traverse(visit, self.graph) - if len(incoming_links) != 0: - for i, arg in enumerate(pyblock.inputargs): - l_arg = self.gen.get_repr(arg) - l_values = [self.gen.get_repr(l.args[i]) - for l in incoming_links] - for j in range(len(l_values)): - if l_values[j].llvmtype() != l_arg.llvmtype(): - try: - l_values[j] = \ - l_values[j].alt_types[l_arg.llvmtype()] - except KeyError: - pass - self.dependencies.add(l_arg) - self.dependencies.update(l_values) - lblock.phi(l_arg, l_values, - ["%%block%i" % self.blocknum[l.prevblock] - for l in incoming_links]) - #Handle SpaceOperations - for op in pyblock.operations: - l_target = self.gen.get_repr(op.result) - self.dependencies.add(l_target) - l_arg0 = self.gen.get_repr(op.args[0]) - self.dependencies.add(l_arg0) - l_op = getattr(l_arg0, "op_" + op.opname, None) - if l_op is not None: - l_op(l_target, op.args, lblock, self) - #XXX need to find more elegant solution for this special case - elif op.opname == "newtuple": - l_target.type.t_op_newtuple(l_target, op.args, - lblock, self) - elif op.opname in INTRINSIC_OPS: - l_args = [self.gen.get_repr(arg) for arg in op.args[1:]] - self.dependencies.update(l_args) - lblock.spaceop(l_target, op.opname, [l_arg0] + l_args) - else: - s = "SpaceOperation %s not supported. Target: %s " \ - "Args: %s " % (op.opname, l_target, op.args) + \ - "Dispatched on: %s" % l_arg0 - - raise CompileError, s - # XXX: If a variable is passed to another block and has a different - # type there, we have to make the cast in this block since the phi - # instructions in the next block cannot be preceded by any other - # instruction - for link in pyblock.exits: - for i, arg in enumerate(link.args): - localtype = self.annotator.binding(arg) - targettype = self.annotator.binding( - link.target.inputargs[i]) - l_targettype = self.gen.get_repr(targettype) - l_localtype = self.gen.get_repr(localtype) - l_local = self.gen.get_repr(arg) - self.dependencies.update([l_targettype, l_localtype, - l_local]) - if l_targettype.llvmname() != l_localtype.llvmname(): - l_tmp = self.gen.get_local_tmp(l_targettype, self) - lblock.cast(l_tmp, l_local) - l_local.alt_types = {l_targettype.llvmname(): l_tmp} - #Create branches - if pyblock.exitswitch is None: - if pyblock == self.graph.returnblock: - l_returnvalue = self.gen.get_repr(pyblock.inputargs[0]) - self.dependencies.add(l_returnvalue) - lblock.ret(l_returnvalue) - else: - lblock.uncond_branch( - "%%block%i" % self.blocknum[pyblock.exits[0].target]) - elif isinstance(pyblock.exitswitch, Constant) and \ - pyblock.exitswitch.value == last_exception: - lblock.uncond_branch( - "%%block%i" % self.blocknum[pyblock.exits[0].target]) - else: - assert isinstance(a.binding(pyblock.exitswitch), - annmodel.SomeBool) - l_switch = self.gen.get_repr(pyblock.exitswitch) - self.dependencies.add(l_switch) - lblock.cond_branch( - l_switch, - "%%block%i" % self.blocknum[pyblock.exits[1].target], - "%%block%i" % self.blocknum[pyblock.exits[0].target]) - - def llvmfuncdef(self): - s = "internal %s %s(" % (self.retvalue.llvmtype(), self.name) - return s + ", ".join([a.typed_name() for a in self.l_args]) + ")" - - def rettype(self): - return self.retvalue.llvmtype() - - def get_functions(self): - return str(self.llvm_func) - - def llvmtype(self): - assert self.llvmfuncdef().count(self.name) == 1 - return self.llvmfuncdef().replace(self.name + "(", "(") + "*" - - def op_simple_call(self, l_target, args, lblock, l_func): - l_args = [self.gen.get_repr(arg) for arg in args] - for i, (l_a1, l_a2) in enumerate(zip(l_args[1:], self.l_args)): - if l_a1.llvmtype() != l_a2.llvmtype(): - l_tmp = self.gen.get_local_tmp(l_a2.type, l_func) - lblock.cast(l_tmp, l_a1) - l_args[1 + i] = l_tmp - l_func.dependencies.update(l_args) - lblock.call(l_target, l_args[0], l_args[1:]) - -class EntryFunctionRepr(LLVMRepr): - def get(obj, gen): - return None - get = staticmethod(get) - - def __init__(self, name, function, gen): - self.gen = gen - self.function = function - self.name = name - self.dependencies = sets.Set() - self.branch_added = False - - def setup(self): - self.l_function = self.gen.get_repr(self.function) - self.dependencies.add(self.l_function) - lblock = llvmbc.BasicBlock("entry") - lblock.instruction("%tmp = load bool* %Initialized.0__") - lblock.instruction("br bool %tmp, label %real_entry, label %init") - self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) - self.init_block = llvmbc.BasicBlock("init") - self.init_block.instruction("store bool true, bool* %Initialized.0__") - real_entry = llvmbc.BasicBlock("real_entry") - l_ret = self.gen.get_local_tmp(self.l_function.retvalue.type, self) - self.l_function.op_simple_call( - l_ret, [self.function] + self.l_function.l_args, real_entry, self) - real_entry.ret(l_ret) - self.llvm_func.basic_block(real_entry) - self.llvm_func.basic_block(self.init_block) - - def cfuncdef(self): - a = self.l_function.translator.annotator - retv = self.l_function.graph.returnblock.inputargs[0] - rettype_c = C_SIMPLE_TYPES[a.binding(retv).__class__] - args = self.l_function.graph.startblock.inputargs - argtypes_c = [C_SIMPLE_TYPES[a.binding(v).__class__] for v in args] - fd = "%s %s(%s)" % (rettype_c, self.name[1:], - ", ".join(argtypes_c)) - return fd - - def llvmfuncdef(self): - s = "%s %s(" % (self.l_function.retvalue.llvmtype(), self.name) - s += ", ".join([a.typed_name() for a in self.l_function.l_args]) + ")" - return s - - def get_pyrex_source(self): - name = self.name[1:] - args = self.l_function.graph.startblock.inputargs - self.pyrex_source = ["cdef extern %s\n" % - (self.cfuncdef())] - self.pyrex_source += ["def wrap_%s(" % name] - t = [] - for i, a in enumerate(args): - t += ["%s" % a] - t = ", ".join(t) - self.pyrex_source += t + "):\n\treturn %s(%s)\n\n" % (name, t) - self.pyrex_source = "".join(self.pyrex_source) - return self.pyrex_source - - def rettype(self): - return self.l_function.retvalue.llvmtype() - - def get_functions(self): - if not self.branch_added: - self.init_block.uncond_branch("%real_entry") - return str(self.llvm_func) - - def get_globals(self): - return "%Initialized.0__ = internal global bool false" - - def llvmtype(self): - assert self.llvmfuncdef().count(self.name) == 1 - return self.llvmfuncdef().replace(self.name + "(", "(") + "*" - - def op_simple_call(self, l_target, args, lblock, l_func): - self.l_function.op_simple_call(l_target, [self.function] + args, - lblock, l_func) - -class VirtualMethodRepr(LLVMRepr): - # Really stupid implementation of virtual functions: - # Do a switch on the id of the class of the object and cast the object - # to the appropriate class - # Should be replaced by function pointers - def get(obj, gen): - if isinstance(obj, annmodel.SomePBC) and \ - len(obj.prebuiltinstances) > 1 and \ - isinstance(obj.prebuiltinstances.keys()[0], FunctionType): - return VirtualMethodRepr(obj.prebuiltinstances, gen) - return None - get = staticmethod(get) - - def __init__(self, prebuiltinstances, gen): - if debug: - print "VirtualMethodRepr: %s" % prebuiltinstances - self.gen = gen - classes = prebuiltinstances.values() - self.commonbase = reduce(lambda a, b: a.commonbase(b), classes) - self.funcs = prebuiltinstances.keys() - self.name = "%" + self.funcs[0].__name__ + ".virtual" - self.attribute = self.funcs[0].__name__ - self.dependencies = sets.Set() - - def setup(self): - self.l_commonbase = self.gen.get_repr(self.commonbase) - self.l_classes = [self.l_commonbase] + \ - list(self.l_commonbase.iter_subclasses()) - self.dependencies.update(self.l_classes) - self.l_funcs = [] - #find appropriate method for every class - for l_cls in self.l_classes: - for classdef in l_cls.classdef.getmro(): - if classdef.cls.__dict__.has_key(self.attribute): - self.l_funcs.append(self.gen.get_repr( - classdef.cls.__dict__[self.attribute])) - break - else: - raise CompileError, "Couldn't find method %s for %s" % \ - (self.attribute, l_cls.classdef.cls) - self.dependencies.update(self.l_funcs) - self.retvalue = self.l_funcs[0].retvalue - self.type_numbers = [id(l_c) for l_c in self.l_classes] - self.l_args = [self.gen.get_repr(ar) - for ar in self.l_funcs[0].graph.startblock.inputargs] - l_retvalue = self.retvalue - self.dependencies.update(self.l_args) - #create function - #XXX pretty messy - entryblock = llvmbc.BasicBlock("entry") - l_clp = self.gen.get_local_tmp(PointerTypeRepr("%std.class*", - self.gen), self) - l_cl = self.gen.get_local_tmp(PointerTypeRepr("%std.class", - self.gen), self) - l_uip = self.gen.get_local_tmp(PointerTypeRepr("uint", self.gen), - self) - l_ui = self.gen.get_local_tmp( - self.gen.get_repr(annmodel.SomeInteger(True, True)), self) - self.dependencies.update([l_clp, l_cl, l_uip, l_ui]) - entryblock.getelementptr(l_clp, self.l_args[0], [0, 0]) - entryblock.load(l_cl, l_clp) - entryblock.getelementptr(l_uip, l_cl, [0, 1]) - entryblock.load(l_ui, l_uip) - entryblock.switch(l_ui, "%" + self.l_commonbase.classdef.cls.__name__, - [(str(abs(id(l_c))), "%" + l_c.classdef.cls.__name__) - for l_c in self.l_classes]) - lfunc = llvmbc.Function(self.llvmfuncdef(), entryblock) - for i, l_cls in enumerate(self.l_classes): - lblock = llvmbc.BasicBlock(l_cls.classdef.cls.__name__) - lfunc.basic_block(lblock) - l_tmp = self.gen.get_local_tmp(l_cls, self) - lblock.cast(l_tmp, self.l_args[0]) - l_tmp_ret = self.gen.get_local_tmp(l_retvalue.type, self) - self.l_funcs[i].op_simple_call( - l_tmp_ret, [self.l_funcs[i], l_tmp] + - self.l_funcs[0].graph.startblock.inputargs[1:], lblock, self) - lblock.ret(l_tmp_ret) - self.llvm_func = lfunc - - def op_simple_call(self, l_target, args, lblock, l_func): - name = self.name[1:-8] - l_args = [self.gen.get_repr(arg) for arg in args] - l_func.dependencies.update(l_args) - # call the method directly if no subclass of the class of args[1] has - # a special version of this method defined - for l_cls in l_args[1].type.iter_subclasses(): - if l_cls.classdef.cls.__dict__.has_key(name): - break - else: - for clsdef in l_args[1].type.classdef.getmro(): - if clsdef.cls.__dict__.has_key(name): - l_method = self.gen.get_repr(clsdef.cls.__dict__[name]) - args[0] = l_method - print l_method.llvmname(), l_method - l_method.op_simple_call(l_target, args, lblock, l_func) - return - if l_args[1].llvmtype() != self.l_args[0].llvmtype(): - l_tmp = self.gen.get_local_tmp(self.l_args[0].type, l_func) - l_func.dependencies.add(l_tmp) - lblock.cast(l_tmp, l_args[1]) - l_args[1] = l_tmp - lblock.call(l_target, l_args[0], l_args[1:]) - return - - def get_functions(self): - return str(self.llvm_func) - - def llvmfuncdef(self): - s = "internal %s %s(" % (self.l_funcs[0].retvalue.llvmtype(), - self.name) - return s + ", ".join([a.typed_name() for a in self.l_args]) + ")" - - def rettype(self): - return self.retvalue.llvmtype() - -class BoundMethodRepr(LLVMRepr): - def get(obj, gen): - return None - get = staticmethod(get) - def __init__(self, l_func, l_self, l_class, gen): - self.gen = gen - self.l_func = l_func - self.l_self = l_self - self.l_class = l_class - self.dependencies = sets.Set([l_self, l_class, l_func]) - - def t_op_simple_call(self, l_target, args, lblock, l_func): - self.l_func.op_simple_call(l_target, - [self.l_func, self.l_self] + args[1:], - lblock, l_func) Added: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Sun Apr 3 20:23:50 2005 @@ -0,0 +1,117 @@ +import autopath +import sets + +from pypy.objspace.flow.model import Constant +from pypy.annotation import model as annmodel + +from pypy.translator.llvm.representation import debug, LLVMRepr +from pypy.translator.llvm.typerepr import TypeRepr, IntTypeRepr +from pypy.translator.llvm.typerepr import PointerTypeRepr +from pypy.translator.llvm.funcrepr import BoundMethodRepr + + +class ListTypeRepr(TypeRepr): + l_listtypes = {} + def get(obj, gen): + if obj.__class__ is annmodel.SomeList: + if (obj.s_item.__class__, gen) in ListTypeRepr.l_listtypes: + return ListTypeRepr.l_listtypes[(obj.s_item.__class__, gen)] + l_repr = ListTypeRepr(obj, gen) + ListTypeRepr.l_listtypes[(obj.s_item.__class__, gen)] = l_repr + return l_repr + return None + get = staticmethod(get) + + def __init__(self, obj, gen): + if debug: + print "ListTypeRepr: %s, %s" % (obj, obj.s_item) + self.gen = gen + self.l_itemtype = gen.get_repr(obj.s_item) + self.dependencies = sets.Set([self.l_itemtype]) + itemtype = self.l_itemtype.llvmname() + self.name = "%%std.list.%s" % itemtype.strip("%").replace("*", "") + self.definition = self.name + " = type {uint, %s*}" % itemtype + + def get_functions(self): + f = file(autopath.this_dir + "/list_template.ll", "r") + s = f.read() + f.close() + itemtype = self.l_itemtype.llvmname() + s = s.replace("%(item)s", self.l_itemtype.llvmname()) + s = s.replace("%(name)s", itemtype.strip("%").replace("*", "")) + if isinstance(self.l_itemtype, IntTypeRepr): + f1 = file(autopath.this_dir + "/int_list.ll", "r") + s += f1.read() + f1.close() + return s + + def t_op_getitem(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + lblock.spaceop(l_target, "getitem", l_args) + + def t_op_setitem(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + lblock.spaceop(l_target, "setitem", l_args) + + def t_op_delitem(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + lblock.spaceop(l_target, "delitem", l_args) + + def t_op_getattr(self, l_target, args, lblock, l_func): + if isinstance(args[1], Constant) and \ + args[1].value in ["append", "reverse", "pop"]: + l_args0 = self.gen.get_repr(args[0]) + l_func.dependencies.add(l_args0) + l_method = BoundMethodRepr(l_target.type, l_args0, self, self.gen) + l_method.setup() + l_target.type = l_method + else: + raise CompileError, "List method %s not supported." % args[1].value + +class TupleTypeRepr(TypeRepr): + def get(obj, gen): + if isinstance(obj, annmodel.SomeTuple): + return TupleTypeRepr(obj, gen) + return None + get = staticmethod(get) + + def __init__(self, obj, gen): + self.gen = gen + self.l_itemtypes = [gen.get_repr(l) for l in obj.items] + self.name = (("{" + ", ".join(["%s"] * len(self.l_itemtypes)) + "}") % + tuple([l.llvmname() for l in self.l_itemtypes])) + + def get_functions(self): + s = ("internal int %%std.len(%s %%t) {\n\tret int %i\n}\n" % + (self.llvmname(), len(self.l_itemtypes))) + return s + + def t_op_newtuple(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + lblock.malloc(l_target, self) + l_ptrs = [self.gen.get_local_tmp(\ + PointerTypeRepr(l.llvmname(),self.gen), l_func) + for l in self.l_itemtypes] + l_func.dependencies.update(l_ptrs) + for i, l in enumerate(self.l_itemtypes): + lblock.getelementptr(l_ptrs[i], l_target, [0, i]) + lblock.store(l_args[i], l_ptrs[i]) + + def t_op_getitem(self, l_target, args, lblock, l_func): + if not isinstance(args[1], Constant): + raise CompileError, "index for tuple's getitem has to be constant" + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + l_tmp = self.gen.get_local_tmp(PointerTypeRepr(l_target.llvmtype(), + self.gen), l_func) + cast = getattr(l_args[1], "cast_to_unsigned", None) + if cast is not None: + l_unsigned = cast(l_args[1], lblock, l_func) + else: + raise CompileError, "Invalid arguments to getitem" + lblock.getelementptr(l_tmp, l_args[0], [0, l_unsigned]) + lblock.load(l_target, l_tmp) Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Sun Apr 3 20:23:50 2005 @@ -272,6 +272,7 @@ def two_exceptions(n): lst = range(10) try: + lst[n] += 1 lst[n] except IndexError: return 2 Added: pypy/dist/pypy/translator/llvm/typerepr.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/typerepr.py Sun Apr 3 20:23:50 2005 @@ -0,0 +1,177 @@ +import autopath +import sets + +from types import ClassType + +from pypy.objspace.flow.model import Variable, Constant +from pypy.objspace.flow.model import last_exception, last_exc_value +from pypy.annotation import model as annmodel + +from pypy.translator.llvm.representation import debug, LLVMRepr +from pypy.translator.llvm.representation import LLVM_SIMPLE_TYPES + + + +class TypeRepr(LLVMRepr): + def get(obj, gen): + if (isinstance(obj, annmodel.SomePBC) and \ + obj.prebuiltinstances.keys()[0] is None) or obj is type(None): + return TypeRepr("%std.void", "%std.void = type sbyte", "", gen) + get = staticmethod(get) + + def __init__(self, llvmname, definition, includefile, gen): + if debug: + print "TypeRepr: %s, %s" % (llvmname, definition) + self.name = llvmname + self.definition = definition + self.gen = gen + self.includefile = includefile + + def get_globals(self): + try: + return self.definition + except AttributeError: + return "" + + def get_functions(self): + try: + if self.includefile != "": + f = file(autopath.this_dir + "/" + self.includefile, "r") + s = f.read() + f.close() + return s + except AttributeError: + pass + return "" + + def llvmname(self): + return self.name + "*" + + def llvmname_wo_pointer(self): + return self.name + +class StringTypeRepr(TypeRepr): + def get(obj, gen): + if obj.__class__ is annmodel.SomeString or obj is str: + return StringTypeRepr(gen) + get = staticmethod(get) + + def __init__(self, gen): + if debug: + print "StringTypeRepr" + self.gen = gen + self.dependencies = sets.Set() + + def setup(self): + self.l_charlist = self.gen.get_repr( + annmodel.SomeList(None, annmodel.SomeChar())) + self.dependencies.add(self.l_charlist) + self.name = self.l_charlist.llvmname_wo_pointer() + + def t_op_getitem(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + lblock.spaceop(l_target, "getitem", l_args) + + def t_op_inplace_add(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + lblock.spaceop(l_target, "add", l_args) + + +class IntTypeRepr(TypeRepr): + def get(obj, gen): + if obj.__class__ is annmodel.SomeInteger: + return IntTypeRepr(obj, gen) + return None + get = staticmethod(get) + + def __init__(self, annotation, gen): + if debug: + print "IntTypeRepr: %s" % annotation + self.annotation = annotation + if annotation.unsigned: + self.name = "uint" + else: + self.name = "int" + self.gen = gen + + def llvmname(self): + return self.name + + def cast_to_signed(self, l_val, lblock, l_function): + if not self.annotation.unsigned: + return l_val + ann = annmodel.SomeInteger() + l_type = self.gen.get_repr(ann) + l_tmp = self.gen.get_local_tmp(l_type, l_function) + l_function.dependencies.update([l_type, l_tmp]) + lblock.cast(l_tmp, l_val, l_type) + return l_tmp + + def cast_to_unsigned(self, l_val, lblock, l_function): + if self.annotation.unsigned: + return l_val + ann = annmodel.SomeInteger(True, True) + l_type = self.gen.get_repr(ann) + l_tmp = self.gen.get_local_tmp(l_type, l_function) + l_function.dependencies.update([l_type, l_tmp]) + lblock.cast(l_tmp, l_val, l_type) + return l_tmp + + +class SimpleTypeRepr(TypeRepr): + def get(obj, gen): + if obj.__class__ is annmodel.SomeInteger: + l_repr = SimpleTypeRepr("int", gen) + return l_repr + elif obj.__class__ is annmodel.SomeBool: + l_repr = SimpleTypeRepr("bool", gen) + return l_repr + elif obj.__class__ is annmodel.SomeChar: + l_repr = SimpleTypeRepr("sbyte", gen) + return l_repr + elif obj.__class__ is annmodel.SomePBC: + if obj.knowntype == object or obj.knowntype == ClassType: + return SimpleTypeRepr("%std.class", gen) + return None + get = staticmethod(get) + + def __init__(self, llvmname, gen): + if debug: + print "SimpleTypeRepr: %s" % llvmname + self.name = llvmname + self.gen = gen + self.definition = "" + self.includefile = "" + + def llvmname(self): + return self.name + +class PointerTypeRepr(TypeRepr): + def get(obj, gen): + return None + get = staticmethod(get) + + def __init__(self, type, gen): + self.type = type + + def llvmname(self): + return self.type + "*" + +class ImpossibleValueRepr(TypeRepr): + def get(obj, gen): + if obj.__class__ is annmodel.SomeImpossibleValue: + return ImpossibleValueRepr() + return None + get = staticmethod(get) + + def __init__(self): + self.definition = "" + self.dependencies = sets.Set() + self.includefile = "" + + def llvmname(self): + return "void" + + From tismer at codespeak.net Sun Apr 3 20:39:28 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 3 Apr 2005 20:39:28 +0200 (MEST) Subject: [pypy-svn] r10273 - pypy/dist/pypy/objspace/std Message-ID: <20050403183928.79A7527C89@code1.codespeak.net> Author: tismer Date: Sun Apr 3 20:39:28 2005 New Revision: 10273 Modified: pypy/dist/pypy/objspace/std/listobject.py Log: avoiding side effects during deletion of list slices Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Sun Apr 3 20:39:28 2005 @@ -439,11 +439,9 @@ ihigh = w_list.ob_size items = w_list.ob_item d = ihigh-ilow - # XXX this is done by CPython to hold the elements - # to be deleted. I have no idea how to express - # this here, but we need to be aware when we write - # a compiler. - # recycle = [items[i] for i in range(ilow, ihigh)] + # keep a reference to the objects to be removed, + # preventing side effects during destruction + recycle = [items[i] for i in range(ilow, ihigh)] for i in range(ilow, w_list.ob_size - d): items[i] = items[i+d] items[i+d] = None From tismer at codespeak.net Sun Apr 3 22:06:45 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 3 Apr 2005 22:06:45 +0200 (MEST) Subject: [pypy-svn] r10274 - pypy/dist/pypy/objspace/std Message-ID: <20050403200645.148BF27C84@code1.codespeak.net> Author: tismer Date: Sun Apr 3 22:06:44 2005 New Revision: 10274 Modified: pypy/dist/pypy/objspace/std/listobject.py Log: a _del_slice that seems to be solid against desctruction side-effects, not depending on the life time of local variables. The issue might come up, again, if we decide to change array size on changing w_list.w_size, of course. Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Sun Apr 3 22:06:44 2005 @@ -439,16 +439,21 @@ ihigh = w_list.ob_size items = w_list.ob_item d = ihigh-ilow - # keep a reference to the objects to be removed, # preventing side effects during destruction - recycle = [items[i] for i in range(ilow, ihigh)] - for i in range(ilow, w_list.ob_size - d): + # first, re-arrange the list so unused elements are at the end. + newsize = w_list.ob_size - d + for i in range(ilow, newsize): + hold = items[i] items[i] = items[i+d] - items[i+d] = None - w_list.ob_size -= d - # set the unused items to None to make sure the objects are freed - for i in range(w_list.ob_size, ilow+d): - items[i] = None + items[i+d] = hold + # now get rid of the objects at the end, always + # keeping the list consistent + while w_list.ob_size > newsize: + p = w_list.ob_size-1 + hold = w_list.ob_item[p] + w_list.ob_size = p + w_list.ob_item[p] = None + del hold # note that the default value will come back wrapped!!! def list_pop__List_ANY(space, w_list, w_idx=-1): From tismer at codespeak.net Sun Apr 3 22:27:38 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 3 Apr 2005 22:27:38 +0200 (MEST) Subject: [pypy-svn] r10275 - pypy/dist/pypy/objspace/std Message-ID: <20050403202738.B5B8F27C8A@code1.codespeak.net> Author: tismer Date: Sun Apr 3 22:27:38 2005 New Revision: 10275 Modified: pypy/dist/pypy/objspace/std/listobject.py Log: reverted the change. Keeping stuff in an extra list which gets deleted after the operation is finished is way stronger. By explicitly deleting recycle[:], we should be quite safe, regardless which strategy simplify() might adopt (I hope) :-) Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Sun Apr 3 22:27:38 2005 @@ -439,21 +439,16 @@ ihigh = w_list.ob_size items = w_list.ob_item d = ihigh-ilow + # keep a reference to the objects to be removed, # preventing side effects during destruction - # first, re-arrange the list so unused elements are at the end. - newsize = w_list.ob_size - d - for i in range(ilow, newsize): - hold = items[i] + recycle = [items[i] for i in range(ilow, ihigh)] + for i in range(ilow, w_list.ob_size - d): items[i] = items[i+d] - items[i+d] = hold - # now get rid of the objects at the end, always - # keeping the list consistent - while w_list.ob_size > newsize: - p = w_list.ob_size-1 - hold = w_list.ob_item[p] - w_list.ob_size = p - w_list.ob_item[p] = None - del hold + items[i+d] = None + w_list.ob_size -= d + # now we can destruct recycle safely, regardless of + # side-effects to the list + del recycle[:] # note that the default value will come back wrapped!!! def list_pop__List_ANY(space, w_list, w_idx=-1): From arigo at codespeak.net Sun Apr 3 23:04:31 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 3 Apr 2005 23:04:31 +0200 (MEST) Subject: [pypy-svn] r10276 - pypy/dist/pypy/translator/genc Message-ID: <20050403210431.2A0C027C90@code1.codespeak.net> Author: arigo Date: Sun Apr 3 23:04:30 2005 New Revision: 10276 Modified: pypy/dist/pypy/translator/genc/ctyper.py pypy/dist/pypy/translator/genc/g_int.h pypy/dist/pypy/translator/genc/t_int.py Log: Support the None type (for now, stored as an int, until we find a better way to represent it as no variable at all). Modified: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- pypy/dist/pypy/translator/genc/ctyper.py (original) +++ pypy/dist/pypy/translator/genc/ctyper.py Sun Apr 3 23:04:30 2005 @@ -5,15 +5,19 @@ from pypy.translator.typer import Specializer, TypeMatch from pypy.annotation.model import SomeInteger, SomePBC from pypy.translator.genc.t_pyobj import CType_PyObject -from pypy.translator.genc.t_int import CType_Int +from pypy.translator.genc.t_int import CType_Int, CType_None from pypy.translator.genc.t_func import CType_FuncPtr import types from pypy.interpreter.pycode import CO_VARARGS class GenCSpecializer(Specializer): - TInt = TypeMatch(SomeInteger(), CType_Int) - typematches = [TInt] # in more-specific-first, more-general-last order + TInt = TypeMatch(SomeInteger(), CType_Int) + TNone = TypeMatch(SomePBC({None: True}), CType_None) + + # in more-specific-first, more-general-last order + typematches = [TNone, TInt] + defaulttypecls = CType_PyObject specializationtable = [ Modified: pypy/dist/pypy/translator/genc/g_int.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_int.h (original) +++ pypy/dist/pypy/translator/genc/g_int.h Sun Apr 3 23:04:30 2005 @@ -7,6 +7,9 @@ #define OP_OBJ2INT(o,r,err) if ((r=PyInt_AsLong(o))==-1 && PyErr_Occurred()) \ FAIL(err) +#define OP_NONE2OBJ(n,r,err) r = Py_None; Py_INCREF(r); +#define OP_OBJ2NONE(o,n,err) assert(o == Py_None); n = 0; + #define OP_INT_IS_TRUE(x,r,err) r = (x != 0); #define OP_INT_ADD(x,y,r,err) r = x + y; Modified: pypy/dist/pypy/translator/genc/t_int.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_int.py (original) +++ pypy/dist/pypy/translator/genc/t_int.py Sun Apr 3 23:04:30 2005 @@ -11,3 +11,17 @@ def nameof(self, v, debug=None): return '%d' % v + + +class CType_None: + ctypetemplate = 'int %s' + convert_to_obj = 'none2obj' + convert_from_obj = 'obj2none' + error_return = '-1' + + def __init__(self, genc): + pass + + def nameof(self, v, debug=None): + assert v is None + return '0' From sanxiyn at codespeak.net Mon Apr 4 11:57:02 2005 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Mon, 4 Apr 2005 11:57:02 +0200 (MEST) Subject: [pypy-svn] r10279 - pypy/dist/goal Message-ID: <20050404095702.C78F327C9B@code1.codespeak.net> Author: sanxiyn Date: Mon Apr 4 11:57:02 2005 New Revision: 10279 Added: pypy/dist/goal/gadfly-demo.py Log: Gadfly (version 1.0.0) works with PyPy! Caution 1: Run it with --oldstyle. Otherwise it fails, because of pre-new-style check in gadfly.serialize.serialize(). Caution 2: It takes an hour to finish. Added: pypy/dist/goal/gadfly-demo.py ============================================================================== --- (empty file) +++ pypy/dist/goal/gadfly-demo.py Mon Apr 4 11:57:02 2005 @@ -0,0 +1,23 @@ +import os +os.mkdir('db') + +import gadfly +connection = gadfly.gadfly() +connection.startup('test', 'db') +cursor = connection.cursor() + +def print_and_execute(cursor, operation): + print operation + cursor.execute(operation) + +print_and_execute(cursor, "CREATE TABLE pypy(py varchar)") +print_and_execute(cursor, "INSERT INTO pypy(py) VALUES ('py')") +print_and_execute(cursor, "SELECT * FROM pypy") +for row in cursor.fetchall(): + print row + +connection.commit() +connection.close() + +import shutil +shutil.rmtree('db') From arigo at codespeak.net Mon Apr 4 14:19:39 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 4 Apr 2005 14:19:39 +0200 (MEST) Subject: [pypy-svn] r10280 - pypy/dist/pypy/module/builtin Message-ID: <20050404121939.DF56327BE1@code1.codespeak.net> Author: arigo Date: Mon Apr 4 14:19:39 2005 New Revision: 10280 Modified: pypy/dist/pypy/module/builtin/app_descriptor.py Log: Cleaned up the propertydoc hack. Now a general class docstring which behaves like, well, a docstring when put in a class, but also allows to capture and behave like an instance slot. Modified: pypy/dist/pypy/module/builtin/app_descriptor.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_descriptor.py (original) +++ pypy/dist/pypy/module/builtin/app_descriptor.py Mon Apr 4 14:19:39 2005 @@ -2,26 +2,95 @@ Plain Python definition of the builtin descriptors. """ -# Don't look! This is needed for the property class, which has a slot -# called __doc__ but also needs a __doc__ string for itself. -class propertydoc(object): +# Descriptor code, shamelessly stolen to Raymond Hettinger: +# http://users.rcn.com/python/download/Descriptor.htm + + +# XXX there is an interp-level pypy.interpreter.function.StaticMethod +# XXX because __new__ needs to be a StaticMethod early. +class staticmethod(object): + __slots__ = ['_f'] + + def __init__(self, f): + self._f = f + + def __get__(self, obj, objtype=None): + return self._f + + +class classmethod(object): + __slots__ = ['_f'] + + def __init__(self, f): + self._f = f + + def __get__(self, obj, klass=None): + if klass is None: + klass = type(obj) + def newfunc(*args, **kwargs): + return self._f(klass, *args, **kwargs) + return newfunc + + +# It's difficult to have a class that has both a docstring and a slot called +# '__doc__', but not impossible... +class docstring(object): + + def __init__(self, classdocstring): + self.classdocstring = classdocstring + self.slot = None + + def capture(cls, slotname): + self = cls.__dict__['__doc__'] + slot = cls.__dict__[slotname] + if not isinstance(self, docstring): + raise TypeError, "the class __doc__ must be a docstring instance" + self.slot = slot + delattr(cls, slotname) + capture = staticmethod(capture) + def __get__(self, p, cls=None): if p is None: - return PROPERTY_DOCSTRING # getting __doc__ on the class + return self.classdocstring # getting __doc__ on the class + elif self.slot is None: + raise AttributeError, "'%s' instance has no __doc__" % ( + p.__class__.__name__,) else: - return PROPERTY_DOCSLOT.__get__(p) # on an instance + return self.slot.__get__(p) # getting __doc__ on an instance + + def __set__(self, p, value): + if hasattr(self.slot, '__set__'): + return self.slot.__set__(p, value) + else: + raise AttributeError, "cannot write __doc__" + + def __delete__(self, p): + if hasattr(self.slot, '__delete__'): + return self.slot.__delete__(p) + else: + raise AttributeError, "cannot write __doc__" + -# Descriptor code, shamelessly stolen to Raymond Hettinger: -# http://users.rcn.com/python/download/Descriptor.htm class property(object): - __slots__ = ['fget', 'fset', 'fdel', 'doc'] # NB. 'doc' hacked away below - __doc__ = propertydoc() + __doc__ = docstring( + '''property(fget=None, fset=None, fdel=None, doc=None) -> property attribute + +fget is a function to be used for getting an attribute value, and likewise +fset is a function for setting, and fdel a function for deleting, an +attribute. Typical use is to define a managed attribute x: +class C(object): + def getx(self): return self.__x + def setx(self, value): self.__x = value + def delx(self): del self.__x + x = property(getx, setx, delx, "I am the 'x' property.")''') + + __slots__ = ['fget', 'fset', 'fdel', 'slot__doc__'] def __init__(self, fget=None, fset=None, fdel=None, doc=None): self.fget = fget self.fset = fset self.fdel = fdel - PROPERTY_DOCSLOT.__set__(self, doc) + self.__doc__ = doc def __get__(self, obj, objtype=None): if obj is None: @@ -40,45 +109,8 @@ raise AttributeError, "can't delete attribute" self.fdel(obj) -PROPERTY_DOCSTRING = '''property(fget=None, fset=None, fdel=None, doc=None) -> property attribute - -fget is a function to be used for getting an attribute value, and likewise -fset is a function for setting, and fdel a function for deleting, an -attribute. Typical use is to define a managed attribute x: -class C(object): - def getx(self): return self.__x - def setx(self, value): self.__x = value - def delx(self): del self.__x - x = property(getx, setx, delx, "I am the 'x' property.")''' - -PROPERTY_DOCSLOT = property.doc -del property.doc - - -# XXX there is an interp-level pypy.interpreter.function.StaticMethod -# XXX because __new__ needs to be a StaticMethod early. -class staticmethod(object): - __slots__ = ['_f'] - - def __init__(self, f): - self._f = f - - def __get__(self, obj, objtype=None): - return self._f - - -class classmethod(object): - __slots__ = ['_f'] - - def __init__(self, f): - self._f = f +docstring.capture(property, 'slot__doc__') - def __get__(self, obj, klass=None): - if klass is None: - klass = type(obj) - def newfunc(*args, **kwargs): - return self._f(klass, *args, **kwargs) - return newfunc # super is a modified version from Guido's tutorial # http://www.python.org/2.2.3/descrintro.html From mwh at codespeak.net Mon Apr 4 14:25:20 2005 From: mwh at codespeak.net (mwh at codespeak.net) Date: Mon, 4 Apr 2005 14:25:20 +0200 (MEST) Subject: [pypy-svn] r10281 - pypy/dist/pypy/module/builtin Message-ID: <20050404122520.D795E27BE1@code1.codespeak.net> Author: mwh Date: Mon Apr 4 14:25:20 2005 New Revision: 10281 Modified: pypy/dist/pypy/module/builtin/app_descriptor.py Log: Grammar! Modified: pypy/dist/pypy/module/builtin/app_descriptor.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_descriptor.py (original) +++ pypy/dist/pypy/module/builtin/app_descriptor.py Mon Apr 4 14:25:20 2005 @@ -2,7 +2,7 @@ Plain Python definition of the builtin descriptors. """ -# Descriptor code, shamelessly stolen to Raymond Hettinger: +# Descriptor code, shamelessly stolen from Raymond Hettinger: # http://users.rcn.com/python/download/Descriptor.htm From tismer at codespeak.net Mon Apr 4 15:14:06 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 4 Apr 2005 15:14:06 +0200 (MEST) Subject: [pypy-svn] r10282 - pypy/dist/pypy/objspace/std Message-ID: <20050404131406.B626527BB2@code1.codespeak.net> Author: tismer Date: Mon Apr 4 15:14:06 2005 New Revision: 10282 Modified: pypy/dist/pypy/objspace/std/listobject.py Log: tu(r)ned listrepr with applevelinterp, gives some 20+ % speedup on repr(somelist) Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Mon Apr 4 15:14:06 2005 @@ -305,8 +305,8 @@ items[start+i*step] = sequence2[i] return space.w_None -listrepr = gateway.appdef(""" - listrepr(currently_in_repr, l): +app = gateway.applevelinterp(""" + def listrepr(currently_in_repr, l): 'The app-level part of repr().' list_id = id(l) if list_id in currently_in_repr: @@ -320,7 +320,9 @@ except: pass """) - + +listrepr = app.interphook("listrepr") + def repr__List(space, w_list): if w_list.ob_size == 0: return space.wrap('[]') From tismer at codespeak.net Mon Apr 4 15:39:15 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 4 Apr 2005 15:39:15 +0200 (MEST) Subject: [pypy-svn] r10284 - in pypy/dist/pypy: interpreter objspace/std Message-ID: <20050404133915.196D827BC2@code1.codespeak.net> Author: tismer Date: Mon Apr 4 15:39:14 2005 New Revision: 10284 Modified: pypy/dist/pypy/interpreter/gateway.py pypy/dist/pypy/objspace/std/dictobject.py pypy/dist/pypy/objspace/std/sliceobject.py pypy/dist/pypy/objspace/std/typeobject.py Log: more occurances of appdef replaced by applevel (tested, works fine) Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Mon Apr 4 15:39:14 2005 @@ -536,10 +536,8 @@ def _freeze_(self): return True # hint for the annotator: applevel instances are constants -## XXX experimental code using geninterplevel - class applevelinterp(applevel): - """ same as applevel, but using translation to interp-level. + """ similar to applevel, but using translation to interp-level. """ NOT_RPYTHON_ATTRIBUTES = [] @@ -565,9 +563,6 @@ # comment this out to check against applevel without translation ##applevelinterp = applevel -## XXX there is a problem with the naming convention of app_xxx not allowed -## for interp2app! What shall we do? - def appdef(source, applevel=applevel): """ NOT_RPYTHON: build an app-level helper function, like for example: myfunc = appdef('''myfunc(x, y): Modified: pypy/dist/pypy/objspace/std/dictobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/dictobject.py (original) +++ pypy/dist/pypy/objspace/std/dictobject.py Mon Apr 4 15:39:14 2005 @@ -242,8 +242,8 @@ else: return w_default -dictstr = gateway.appdef(''' - dictstr(currently_in_repr, d): +app = gateway.applevelinterp(''' + def dictstr(currently_in_repr, d): # Now we only handle one implementation of dicts, this one. # The fix is to move this to dicttype.py, and do a # multimethod lookup mapping str to StdObjSpace.str @@ -264,6 +264,8 @@ pass ''') +dictstr = app.interphook("dictstr") + def str__Dict(space, w_dict): if w_dict.used == 0: return space.wrap('{}') Modified: pypy/dist/pypy/objspace/std/sliceobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/sliceobject.py (original) +++ pypy/dist/pypy/objspace/std/sliceobject.py Mon Apr 4 15:39:14 2005 @@ -24,10 +24,10 @@ registerimplementation(W_SliceObject) -repr__Slice = gateway.appdef(""" - repr__Slice(aslice): +repr__Slice = gateway.applevelinterp(""" + def repr__Slice(aslice): return 'slice(%r, %r, %r)' % (aslice.start, aslice.stop, aslice.step) -""") +""").interphook("repr__Slice") def eq__Slice_Slice(space, w_slice1, w_slice2): # We need this because CPython considers that slice1 == slice1 Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Mon Apr 4 15:39:14 2005 @@ -277,8 +277,8 @@ # ____________________________________________________________ -abstract_mro = gateway.appdef(""" - abstract_mro(klass): +abstract_mro = gateway.applevelinterp(""" + def abstract_mro(klass): # abstract/classic mro mro = [] def fill_mro(klass): @@ -289,7 +289,7 @@ fill_mro(base) fill_mro(klass) return mro -""") +""").interphook("abstract_mro") def get_mro(space, klass): if isinstance(klass, W_TypeObject): From arigo at codespeak.net Mon Apr 4 16:21:57 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 4 Apr 2005 16:21:57 +0200 (MEST) Subject: [pypy-svn] r10289 - pypy/dist/pypy/interpreter Message-ID: <20050404142157.6A9FB27BC2@code1.codespeak.net> Author: arigo Date: Mon Apr 4 16:21:57 2005 New Revision: 10289 Modified: pypy/dist/pypy/interpreter/function.py Log: MethodType(...) 3rd argument is optional. Modified: pypy/dist/pypy/interpreter/function.py ============================================================================== --- pypy/dist/pypy/interpreter/function.py (original) +++ pypy/dist/pypy/interpreter/function.py Mon Apr 4 16:21:57 2005 @@ -139,9 +139,9 @@ self.space = space self.w_function = w_function self.w_instance = w_instance # or None - self.w_class = w_class + self.w_class = w_class # possibly space.w_None - def descr_method__new__(space, w_subtype, w_function, w_instance, w_class): + def descr_method__new__(space, w_subtype, w_function, w_instance, w_class=None): method = space.allocate_instance(Method, w_subtype) if space.is_w( w_instance, space.w_None ): w_instance = None @@ -180,7 +180,9 @@ # only allow binding to a more specific class than before #if w_cls == space.w_None: # w_cls = space.type(w_obj) - if w_cls is not None and w_cls != space.w_None and not space.is_true(space.abstract_issubclass(w_cls, self.w_class)): + if (w_cls is not None and + not space_is_w(w_cls, space.w_None) and + not space.is_true(space.abstract_issubclass(w_cls, self.w_class))): return space.wrap(self) # subclass test failed return space.get(self.w_function, w_obj, w_cls) From tismer at codespeak.net Mon Apr 4 16:29:22 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 4 Apr 2005 16:29:22 +0200 (MEST) Subject: [pypy-svn] r10290 - pypy/dist/pypy/interpreter Message-ID: <20050404142922.0E1DE27BC2@code1.codespeak.net> Author: tismer Date: Mon Apr 4 16:29:21 2005 New Revision: 10290 Modified: pypy/dist/pypy/interpreter/function.py Log: typo Modified: pypy/dist/pypy/interpreter/function.py ============================================================================== --- pypy/dist/pypy/interpreter/function.py (original) +++ pypy/dist/pypy/interpreter/function.py Mon Apr 4 16:29:21 2005 @@ -181,7 +181,7 @@ #if w_cls == space.w_None: # w_cls = space.type(w_obj) if (w_cls is not None and - not space_is_w(w_cls, space.w_None) and + not space.is_w(w_cls, space.w_None) and not space.is_true(space.abstract_issubclass(w_cls, self.w_class))): return space.wrap(self) # subclass test failed return space.get(self.w_function, w_obj, w_cls) From cfbolz at codespeak.net Mon Apr 4 17:26:06 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Mon, 4 Apr 2005 17:26:06 +0200 (MEST) Subject: [pypy-svn] r10291 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050404152606.AC90827BC2@code1.codespeak.net> Author: cfbolz Date: Mon Apr 4 17:26:06 2005 New Revision: 10291 Modified: pypy/dist/pypy/translator/llvm/build_llvm_module.py pypy/dist/pypy/translator/llvm/class.ll pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/genllvm.py pypy/dist/pypy/translator/llvm/list.c pypy/dist/pypy/translator/llvm/list_template.ll pypy/dist/pypy/translator/llvm/llvmbc.py pypy/dist/pypy/translator/llvm/make_runtime.py pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: Added minimal exception support: All exceptions have to be caught, only builtin exceptions, raising doesn't work yet, only list.getitem raises IndexError. Modified: pypy/dist/pypy/translator/llvm/build_llvm_module.py ============================================================================== --- pypy/dist/pypy/translator/llvm/build_llvm_module.py (original) +++ pypy/dist/pypy/translator/llvm/build_llvm_module.py Mon Apr 4 17:26:06 2005 @@ -31,13 +31,13 @@ "opt %s -f %s.bc -o %s_optimized.bc" % (OPTIMIZATION_SWITCHES, llvmfile.purebasename, llvmfile.purebasename), - "llc %s_optimized.bc -f -o %s.s" % (llvmfile.purebasename, - llvmfile.purebasename), + "llc -enable-correct-eh-support %s_optimized.bc -f -o %s.s" % \ + (llvmfile.purebasename, llvmfile.purebasename), "as %s.s -o %s.o" % (llvmfile.purebasename, llvmfile.purebasename)] if not optimize: ops1 = ["llvm-as %s -f" % llvmfile, - "llc %s.bc -f -o %s.s" % (llvmfile.purebasename, - llvmfile.purebasename), + "llc -enable-correct-eh-support %s.bc -f -o %s.s" % \ + (llvmfile.purebasename, llvmfile.purebasename), "as %s.s -o %s.o" % (llvmfile.purebasename, llvmfile.purebasename)] ops2 = ["gcc -c -fPIC -I/usr/include/python2.3 %s.c" % pyxfile.purebasename, Modified: pypy/dist/pypy/translator/llvm/class.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/class.ll (original) +++ pypy/dist/pypy/translator/llvm/class.ll Mon Apr 4 17:26:06 2005 @@ -5,8 +5,8 @@ %std.list.sbyte = type {uint, sbyte*} %std.exception = type {%std.class*, %std.list.sbyte*} -%std.last_exception.type = internal global %std.class {%std.class* null, uint 0} -%std.last_exception.value = internal global %std.exception {%std.class* null, %std.list.sbyte* null} +%std.last_exception.type = internal global %std.class* null +%std.last_exception.value = internal global %std.exception* null implementation @@ -46,3 +46,8 @@ ret bool %result } + +internal sbyte %std.unwind() { +entry: + unwind +} \ No newline at end of file Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Mon Apr 4 17:26:06 2005 @@ -200,6 +200,14 @@ for l_c in l_cls.iter_subclasses(): yield l_c +def create_builtin_exceptions(gen, dependencies): + import exceptions + for exc in dir(exceptions): + print exc, "#############" + if "__" not in exc: + l_exc = gen.get_repr(getattr(exceptions, exc)) + dependencies.add(l_exc) + class ExceptionTypeRepr(TypeRepr): def get(obj, gen): try: Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Mon Apr 4 17:26:06 2005 @@ -133,27 +133,15 @@ exceptblock = "block%i.except" % self.blocknum[pyblock] lblock = llvmbc.TryBasicBlock("block%i" % number, regularblock, exceptblock) - l_excblock = llvmbc.BasicBlock("block%i.except" % number) - l_excp = self.gen.get_repr(last_exception) - l_uip = self.gen.get_local_tmp(PointerTypeRepr("uint", - self.gen), self) - l_ui = self.gen.get_local_tmp( - self.gen.get_repr(annmodel.SomeInteger(True, True)), self) - self.dependencies.update([l_excp, l_uip, l_ui]) - l_excblock.load(l_cl, l_excp) - l_excblock.getelementptr(l_uip, l_cl, [0, 1]) - l_excblock.load(l_ui, l_uip) - l_excblock.switch(l_ui, "%%block%i.unwind" % number, - [(str(abs(id(l_c))), - XXXXXXXXXXXXX) - for exc in pyblock.exits[1:]]) else: lblock = llvmbc.BasicBlock("block%i" % number) if number == 0: self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) else: self.llvm_func.basic_block(lblock) - #Create Phi nodes (but not for the first block) + if is_tryblock: + self.build_exc_blocks(number, pyblock) + #Create Phi nodes incoming_links = [] def visit(node): if isinstance(node, Link) and node.target == pyblock: @@ -177,7 +165,9 @@ ["%%block%i" % self.blocknum[l.prevblock] for l in incoming_links]) #Handle SpaceOperations - for op in pyblock.operations: + for opnumber, op in enumerate(pyblock.operations): + if opnumber == len(pyblock.operations) - 1 and is_tryblock: + lblock.last_op = True l_target = self.gen.get_repr(op.result) self.dependencies.add(l_target) l_arg0 = self.gen.get_repr(op.args[0]) @@ -228,8 +218,8 @@ "%%block%i" % self.blocknum[pyblock.exits[0].target]) elif isinstance(pyblock.exitswitch, Constant) and \ pyblock.exitswitch.value == last_exception: - lblock.uncond_branch( - "%%block%i" % self.blocknum[pyblock.exits[0].target]) + #The branch has already be created by the last space op + assert lblock.closed else: assert isinstance(a.binding(pyblock.exitswitch), annmodel.SomeBool) @@ -240,6 +230,30 @@ "%%block%i" % self.blocknum[pyblock.exits[1].target], "%%block%i" % self.blocknum[pyblock.exits[0].target]) + def build_exc_blocks(self, number, pyblock): + lexcblock = llvmbc.BasicBlock("block%i.except" % number) + self.llvm_func.basic_block(lexcblock) + l_excp = self.gen.get_repr(last_exception) + l_exc = self.gen.get_local_tmp(PointerTypeRepr("%std.class", self.gen), + self) + l_uip = self.gen.get_local_tmp(PointerTypeRepr("uint", self.gen), self) + l_ui = self.gen.get_local_tmp( + self.gen.get_repr(annmodel.SomeInteger(True, True)), self) + self.dependencies.update([l_excp, l_exc, l_uip, l_ui]) + lexcblock.load(l_exc, l_excp) + lexcblock.getelementptr(l_uip, l_exc, [0, 1]) + lexcblock.load(l_ui, l_uip) + exits = pyblock.exits[1:] + l_exitcases = [self.gen.get_repr(ex.exitcase) for ex in exits] + self.dependencies.update(l_exitcases) + sw = [(str(abs(id(ex.exitcase))), + "%%block%i" % self.blocknum[ex.target]) + for ex in exits] + lexcblock.switch(l_ui, "%%block%i.unwind" % number, sw) + lunwindblock = llvmbc.BasicBlock("block%i.unwind" % number) + lunwindblock.unwind() + self.llvm_func.basic_block(lunwindblock) + def llvmfuncdef(self): s = "internal %s %s(" % (self.retvalue.llvmtype(), self.name) return s + ", ".join([a.typed_name() for a in self.l_args]) + ")" @@ -265,10 +279,6 @@ lblock.call(l_target, l_args[0], l_args[1:]) class EntryFunctionRepr(LLVMRepr): - def get(obj, gen): - return None - get = staticmethod(get) - def __init__(self, name, function, gen): self.gen = gen self.function = function @@ -280,8 +290,11 @@ self.l_function = self.gen.get_repr(self.function) self.dependencies.add(self.l_function) lblock = llvmbc.BasicBlock("entry") + #XXX clean this up lblock.instruction("%tmp = load bool* %Initialized.0__") lblock.instruction("br bool %tmp, label %real_entry, label %init") + lblock.phi_done = True + lblock.closed = True self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) self.init_block = llvmbc.BasicBlock("init") self.init_block.instruction("store bool true, bool* %Initialized.0__") @@ -457,9 +470,6 @@ return self.retvalue.llvmtype() class BoundMethodRepr(LLVMRepr): - def get(obj, gen): - return None - get = staticmethod(get) def __init__(self, l_func, l_self, l_class, gen): self.gen = gen self.l_func = l_func Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Mon Apr 4 17:26:06 2005 @@ -3,12 +3,9 @@ """ import autopath -import os, sys, exceptions, sets, StringIO +import sets, StringIO -from pypy.objspace.flow.model import Variable, Constant, SpaceOperation -from pypy.objspace.flow.model import FunctionGraph, Block, Link -from pypy.objspace.flow.model import last_exception, last_exc_value -from pypy.objspace.flow.model import traverse, uniqueitems, checkgraph +from pypy.objspace.flow.model import Constant from pypy.annotation import model as annmodel from pypy.translator import transform from pypy.translator.translator import Translator @@ -22,6 +19,7 @@ from pypy.translator.llvm import classrepr from pypy.translator.llvm.representation import LLVMRepr, TmpVariableRepr +from pypy.translator.llvm.representation import CompileError from pypy.translator.llvm.funcrepr import EntryFunctionRepr debug = True @@ -51,12 +49,15 @@ for mod in [representation, funcrepr, typerepr, seqrepr, classrepr]: self.repr_classes += [getattr(mod, s) for s in dir(mod) if "Repr" in s] + self.repr_classes = [c for c in self.repr_classes if hasattr(c, "get")] self.llvm_reprs = {} self.depth = 0 self.entryname = self.translator.functions[0].__name__ self.l_entrypoint = EntryFunctionRepr("%__entry__" + self.entryname, self.translator.functions[0], self) + classrepr.create_builtin_exceptions(self, + self.l_entrypoint.dependencies) self.local_counts[self.l_entrypoint] = 0 self.l_entrypoint.setup() @@ -91,9 +92,10 @@ def get_repr(self, obj): self.depth += 1 + flag = False if debug: print " " * self.depth, - print "looking for object", obj, type(obj).__name__, obj.__class__, + print "looking for object", obj, type(obj).__name__, print id(obj), get_key(obj), if isinstance(obj, LLVMRepr): self.depth -= 1 @@ -104,6 +106,12 @@ print "->exists already:", self.llvm_reprs[get_key(obj)] return self.llvm_reprs[get_key(obj)] for cl in self.repr_classes: + #XXXXXX: Got + try: + obj.__class__ + except AttributeError: + obj.__class__ = None + flag = True g = cl.get(obj, self) if g is not None: self.llvm_reprs[get_key(obj)] = g @@ -113,7 +121,11 @@ print "calling setup of %s, repr of %s" % (g, obj) g.setup() self.depth -= 1 + if flag: + del obj.__class__ return g + if flag: + del obj.__class__ raise CompileError, "Can't get repr of %s, %s" % (obj, obj.__class__) def write(self, f): @@ -164,8 +176,3 @@ yield l_repr -t = Translator(test2.two_exceptions) -a = t.annotate([int]) -a.simplify() -## t.view() -f = llvmcompile(t) Modified: pypy/dist/pypy/translator/llvm/list.c ============================================================================== --- pypy/dist/pypy/translator/llvm/list.c (original) +++ pypy/dist/pypy/translator/llvm/list.c Mon Apr 4 17:26:06 2005 @@ -1,9 +1,21 @@ #include +signed char unwind(); + struct item { char* dummy; }; +struct class { + char dummy; +}; + + +struct class* LAST_EXCEPTION_TYPE = 0; +struct class INDEX_ERROR = {0}; + + + struct list { unsigned int length; struct item** data; @@ -21,6 +33,14 @@ return (int) l->length; } +int valid_index(int i, struct list* l) { + if (i < 0) + return 0; + if (i >= len(l)) + return 0; + return 1; +} + struct list* newlist() { struct list* nlist = malloc(sizeof(struct list)); nlist->length = 0; @@ -87,6 +107,16 @@ return l->data[index]; } +struct item* getitem_EXCEPTION(struct list* l, int index) { + if (index < 0) + index = l->length + index; + if (valid_index(index, l) == 0) { + LAST_EXCEPTION_TYPE = &INDEX_ERROR; + return unwind(); + } + return l->data[index]; +} + void setitem(struct list* l, int index, struct item* value) { if (index < 0) index = l->length + index; Modified: pypy/dist/pypy/translator/llvm/list_template.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/list_template.ll (original) +++ pypy/dist/pypy/translator/llvm/list_template.ll Mon Apr 4 17:26:06 2005 @@ -27,6 +27,23 @@ ret int %tmp.3 } +internal int %std.valid_index(int %i, %std.list.%(name)s* %l) { +entry: + %tmp.1 = setlt int %i, 0 + br bool %tmp.1, label %UnifiedReturnBlock, label %endif.0 + +endif.0: + %tmp.1.i = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.2.i = load uint* %tmp.1.i + %tmp.3.i = cast uint %tmp.2.i to int + %not.tmp.6 = setgt int %tmp.3.i, %i + %retval = cast bool %not.tmp.6 to int + ret int %retval + +UnifiedReturnBlock: + ret int 0 +} + internal %std.list.%(name)s* %std.newlist() { entry: %tmp.0 = malloc %std.list.%(name)s @@ -148,6 +165,39 @@ ret %(item)s %tmp.15 } +internal %(item)s %std.getitem.exc(%std.list.%(name)s* %l, int %index.1) { +entry: + %tmp.1 = setlt int %index.1, 0 + br bool %tmp.1, label %then.0, label %endif.0.i + +then.0: + %tmp.4 = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.5 = load uint* %tmp.4 + %tmp.5 = cast uint %tmp.5 to int + %tmp.9 = add int %tmp.5, %index.1 + %tmp.1.i5 = setlt int %tmp.9, 0 + br bool %tmp.1.i5, label %then.1, label %endif.0.i + +endif.0.i: + %index_addr.0.0 = phi int [ %tmp.9, %then.0 ], [ %index.1, %entry ] + %tmp.1.i.i = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.2.i.i = load uint* %tmp.1.i.i + %tmp.3.i.i = cast uint %tmp.2.i.i to int + %tmp.6.i = setgt int %tmp.3.i.i, %index_addr.0.0 + br bool %tmp.6.i, label %endif.1, label %then.1 + +then.1: + store %std.class* %glb.class.IndexError.object, %std.class** %std.last_exception.type + unwind +endif.1: + %tmp.19 = getelementptr %std.list.%(name)s* %l, int 0, uint 1 + %tmp.20 = load %(item)s** %tmp.19 + %tmp.22 = getelementptr %(item)s* %tmp.20, int %index_addr.0.0 + %tmp.23 = load %(item)s* %tmp.22 + ret %(item)s %tmp.23 +} + + internal void %std.setitem(%std.list.%(name)s* %l, int %index.1, %(item)s %value) { entry: %tmp.1 = setlt int %index.1, 0 Modified: pypy/dist/pypy/translator/llvm/llvmbc.py ============================================================================== --- pypy/dist/pypy/translator/llvm/llvmbc.py (original) +++ pypy/dist/pypy/translator/llvm/llvmbc.py Mon Apr 4 17:26:06 2005 @@ -8,6 +8,8 @@ from pypy.objspace.flow.model import Variable, Constant, SpaceOperation +class LLVMError(Exception): + pass class Function(object): def __init__(self, funcdef, startbb): @@ -28,63 +30,42 @@ def __init__(self, label): self.label = label self.instructions = [] - + self.closed = False + #True after the first non-phi instruction has been added + self.phi_done = False + def instruction(self, instr): #should not be used self.instructions.append(instr) - def select(self, l_arg, l_select, l_v1, l_v2): - s = "%s = select bool %s, %s, %s" - s = s % (l_arg.llvmname(), l_select.llvmname(), l_v1.typed_name(), - l_v2.typed_name()) - self.instructions.append(s) - - def phi(self, l_arg, l_values, blocks): - assert len(l_values) == len(blocks) - vars_string = [] - print "inserting phi node", l_arg, l_values, blocks - print l_arg.llvmname(), l_arg.llvmtype() - fd = "" + "%s = phi %s " % (l_arg.llvmname(), l_arg.llvmtype()) - fd += ", ".join(["[%s, %s]" % (v.llvmname(), b) - for v, b in zip(l_values, blocks)]) - self.instructions.append(fd) - - def spaceop(self, l_target, opname, l_args): - if l_target.llvmtype() == "void": - s = "call void %%std.%s(" % opname - else: - s = "%s = call %s %%std.%s(" % (l_target.llvmname(), - l_target.llvmtype(), opname) - self.instructions.append(s + - ", ".join([a.typed_name() for a in l_args]) + ")") - - def call(self, l_target, l_func, l_args): - if l_target.llvmtype() == "void": - s = "call void %s(" % l_func.llvmname() - elif l_target.llvmtype() == "%std.void": - s = "call %std.void %s(" % l_func.llvmname() - else: - s = "%s = call %s %s(" % (l_target.llvmname(), l_target.llvmtype(), - l_func.llvmname()) - self.instructions.append(s + - ", ".join([a.typed_name() for a in l_args]) + ")") - - def call_void(self, l_func, l_args): - s = "call %s %s(" % (l_func.rettype(), l_func.llvmname()) - self.instructions.append(s + - ", ".join([a.typed_name() for a in l_args]) + ")") - + #Terminator instuctions def ret(self, l_value): + self.phi_done = True + if self.closed: + raise LLVMError, "Can't add second terminator instruction." + self.closed = True self.instructions.append("ret %s" % l_value.typed_name()) def uncond_branch(self, block): + if self.closed: + raise LLVMError, "Can't add second terminator instruction." + self.closed = True + self.phi_done = True self.instructions.append("br label " + block) def cond_branch(self, l_switch, blocktrue, blockfalse): + if self.closed: + raise LLVMError, "Can't add second terminator instruction." + self.closed = True + self.phi_done = True s = "br %s, label %s, label %s" % (l_switch.typed_name(), blocktrue, blockfalse) self.instructions.append(s) def switch(self, l_switch, default, rest=None): + if self.closed: + raise LLVMError, "Can't add second terminator instruction." + self.closed = True + self.phi_done = True s = "switch %s, label %s " % (l_switch.typed_name(), default) if rest is not None: s += "[" + "\n\t".join(["%s %s, label %s" % (l_switch.llvmtype(), @@ -92,7 +73,27 @@ for c, l in rest]) + "]" self.instructions.append(s) + def unwind(self): + if self.closed: + raise LLVMError, "Can't add second terminator instruction." + self.closed = True + self.phi_done = True + self.instructions.append("unwind") + + #Memory access instructions + def load(self, l_target, l_pter): + self.phi_done = True + s = "%s = load %s %s" % (l_target.llvmname(), l_pter.llvmtype(), + l_pter.llvmname()) + self.instructions.append(s) + + def store(self, l_value, l_pter): + self.phi_done = True + s = "store %s, %s" % (l_value.typed_name(), l_pter.typed_name()) + self.instructions.append(s) + def malloc(self, l_target, l_type, num=1): + self.phi_done = True s = "%s = malloc %s" % (l_target.llvmname(), l_type.llvmname_wo_pointer()) if num > 1: @@ -100,6 +101,7 @@ self.instructions.append(s) def getelementptr(self, l_target, l_ptr, adresses): + self.phi_done = True s = "%s = getelementptr %s %s, " % (l_target.llvmname(), l_ptr.llvmtype(), l_ptr.llvmname()) adr = [] @@ -114,31 +116,138 @@ adr.append("int %i" % a) self.instructions.append(s + ", ".join(adr)) - def load(self, l_target, l_pter): - s = "%s = load %s %s" % (l_target.llvmname(), l_pter.llvmtype(), - l_pter.llvmname()) - self.instructions.append(s) + #Function calls + def spaceop(self, l_target, opname, l_args): + self.phi_done = True + if l_target.llvmtype() == "void": + s = "call void %%std.%s(" % opname + else: + s = "%s = call %s %%std.%s(" % (l_target.llvmname(), + l_target.llvmtype(), opname) + self.instructions.append(s + + ", ".join([a.typed_name() for a in l_args]) + ")") + + def call(self, l_target, l_func, l_args): + self.phi_done = True + if l_target.llvmtype() == "void": + s = "call void %s(" % l_func.llvmname() + elif l_target.llvmtype() == "%std.void": + s = "call %std.void %s(" % l_func.llvmname() + else: + s = "%s = call %s %s(" % (l_target.llvmname(), l_target.llvmtype(), + l_func.llvmname()) + self.instructions.append(s + + ", ".join([a.typed_name() for a in l_args]) + ")") - def store(self, l_value, l_pter): - s = "store %s, %s" % (l_value.typed_name(), l_pter.typed_name()) - self.instructions.append(s) + def call_void(self, l_func, l_args): + self.phi_done = True + s = "call %s %s(" % (l_func.rettype(), l_func.llvmname()) + self.instructions.append(s + + ", ".join([a.typed_name() for a in l_args]) + ")") + + #Other instructions + def select(self, l_arg, l_select, l_v1, l_v2): + self.phi_done = True + s = "%s = select bool %s, %s, %s" + s = s % (l_arg.llvmname(), l_select.llvmname(), l_v1.typed_name(), + l_v2.typed_name()) + self.instructions.append(s) + + def phi(self, l_arg, l_values, blocks): + assert len(l_values) == len(blocks) + if self.phi_done: + raise LLVMError, "Can't create phi node." + vars_string = [] + print "inserting phi node", l_arg, l_values, blocks + print l_arg.llvmname(), l_arg.llvmtype() + fd = "" + "%s = phi %s " % (l_arg.llvmname(), l_arg.llvmtype()) + fd += ", ".join(["[%s, %s]" % (v.llvmname(), b) + for v, b in zip(l_values, blocks)]) + self.instructions.append(fd) def cast(self, l_target, l_value): + self.phi_done = True s = "%s = cast %s to %s" % (l_target.llvmname(), l_value.typed_name(), l_target.llvmtype()) self.instructions.append(s) - def unwind(self): - self.instructions.append("unwind") - + #Non-instructions methods def __str__(self): s = [self.label + ":\n"] for ins in self.instructions: s += ["\t%s\n" % ins] + if not self.closed: + print "".join(s) + raise LLVMError, "Block lacks a terminator instruction." return "".join(s) - class TryBasicBlock(BasicBlock): + """A basic block for which the last operation is turned into an invoke. +Used for exception handling.""" + def __init__(self, label, regularblock, exceptblock): + BasicBlock.__init__(self, label) + self.exceptblock = exceptblock + self.regularblock = regularblock + self.pending_call = None + self.pending_args = None + #This is set to True before the last operation + #XXX Find a more elegant solution for this + self.last_op = False + + def spaceop(self, l_target, opname, l_args): + if not self.last_op: + return BasicBlock.spaceop(self, l_target, opname, l_args) + self.phi_done = True + if self.closed: + raise LLVMError, "Can't add second terminator instruction." + self.closed = True + if l_target.llvmtype() == "void": + s = "invoke void %%std.%s.exc(" % opname + else: + s = "%s = invoke %s %%std.%s.exc(" % (l_target.llvmname(), + l_target.llvmtype(), opname) + s += ", ".join([a.typed_name() for a in l_args]) + ")" + s += "\n\t\tto label %%%s\n\t\texcept label %%%s" % \ + (self.regularblock, self.exceptblock) + self.instructions.append(s) + + def call(self, l_target, l_func, l_args): + if not self.last_op: + return BasicBlock.call(self, l_target, l_func, l_args) + self.phi_done = True + if self.closed: + raise LLVMError, "Can't add second terminator instruction." + self.closed = True + if l_target.llvmtype() == "void": + s = "invoke void %s(" % l_func.llvmname() + elif l_target.llvmtype() == "%std.void": + s = "invoke %std.void %s(" % l_func.llvmname() + else: + s = "%s = invoke %s %s(" % (l_target.llvmname(), + l_target.llvmtype(), l_func.llvmname()) + s += ", ".join([a.typed_name() for a in l_args]) + ")" + s += "\n\t\tto label %%%s\n\t\texcept label %%%s" % \ + (self.regularblock, self.exceptblock) + self.instructions.append(s) + + def call_void(self, l_func, l_args): + if not self.last_op: + return BasicBlock.call_void(self, l_func, l_args) + self.phi_done = True + if self.closed: + raise LLVMError, "Can't add second terminator instruction." + self.closed = True + s = "invoke %s %s(" % (l_func.rettype(), l_func.llvmname()) + s += ", ".join([a.typed_name() for a in l_args]) + ")" + s += "\n\t\tto label %%%s\n\t\texcept label %%%s" % \ + (self.regularblock, self.exceptblock) + self.instructions.append(s) + +class TraceBasicBlock(BasicBlock): + """A basic block that will make it possible to create a sort of +'tracebacks' at some point in the future: Every call is turned into an invoke. +Then the corresponding exceptblock will have to append a string to a global +traceback object.""" def __init__(self, label, regularblock, exceptblock): self.label = label self.exceptblock = exceptblock @@ -178,7 +287,7 @@ call = invoke def invoke_void(self, l_func, l_args): - s = "call %s %s(" % (l_func.rettype(), l_func.llvmname()) + s = "invoke %s %s(" % (l_func.rettype(), l_func.llvmname()) s += ", ".join([a.typed_name() for a in l_args]) + ")" s += "\n\t\tto label %%%s.%i\n\t\texcept label %%%s" % \ (self.label, len(self.llvmblocks), self.exceptblock) @@ -190,8 +299,9 @@ def __str__(self): if not self.finalized: - self.llvmblocks.append(self.instructions) - self.instructions = [] + if len(self.instructions) != 0: + self.llvmblocks.append(self.instructions) + self.instructions = [] self.finalized = True s = [] for i, instrs in enumerate(self.llvmblocks): Modified: pypy/dist/pypy/translator/llvm/make_runtime.py ============================================================================== --- pypy/dist/pypy/translator/llvm/make_runtime.py (original) +++ pypy/dist/pypy/translator/llvm/make_runtime.py Mon Apr 4 17:26:06 2005 @@ -12,8 +12,8 @@ print cfile bytecode = udir.join("temp.bc") lastdir = path.local() - ops = ["llvm-gcc -O3 -c %s -o %s" % (cfile, bytecode), - "llvm-dis %s -f" % bytecode] + ops = ["llvm-gcc -enable-correct-eh-support-O3 -c %s -o %s" % \ + (cfile, bytecode), "llvm-dis %s -f" % bytecode] for op in ops: print op cmdexec(op) @@ -48,7 +48,9 @@ if f in line: line = line.replace(f, "std." + f) ret.append(line) - continue + break + else: + ret.append(line) else: ret.append(line) return "\n".join(ret) @@ -58,6 +60,15 @@ code = code.replace("_ALTERNATIVE%i" % i, "") return code +def create_exceptions(code): + code = code.replace("%LAST_EXCEPTION_TYPE", "%std.last_exception.type") + code = code.replace("%INDEX_ERROR", "%glb.class.IndexError.object") + return code + +def remove_exception(code): + code = code.replace("_EXCEPTION", ".exc") + return code + def remove_header(code): code = code.split("implementation") return code[1] @@ -71,12 +82,37 @@ ret.append(line) return "\n".join(ret) +def create_unwind(code): + ret = [] + remove = False + for line in code.split("\n"): + if "call" in line and "%unwind(" in line: + ret.append("\tunwind") + remove = True + elif "declare" in line and "unwind" in line: + pass + elif remove: + if not line.startswith("\t") and ":" in line: + remove = False + ret.append(line) + else: + ret.append(line) + return "\n".join(ret) + +def remove_structs(code): + code = code.replace("struct.class", "std.class") + return code + def cleanup_code(code): code = remove_comments(code) code = add_std(code) code = remove_header(code) code = internal_functions(code) code = remove_alternatives(code) + code = create_exceptions(code) + code = remove_exception(code) + code = remove_structs(code) + code = create_unwind(code) return code def make_list_template(): Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Mon Apr 4 17:26:06 2005 @@ -2,6 +2,7 @@ import sets from pypy.objspace.flow.model import Variable, Constant +from pypy.objspace.flow.model import last_exception, last_exc_value from pypy.annotation import model as annmodel LLVM_SIMPLE_TYPES = {annmodel.SomeChar: "sbyte", @@ -51,24 +52,27 @@ class SimpleRepr(LLVMRepr): - """Representation of values that are directly mapped to types in LLVM: -bool, char (string of length 1)""" + """Representation of values that only need simple representation: +bool, char (string of length 1), last_exception, last_exc_value""" def get(obj, gen): - if not isinstance(obj, Constant): - return None - type = gen.annotator.binding(obj) - if type.__class__ in LLVM_SIMPLE_TYPES: - llvmtype = LLVM_SIMPLE_TYPES[type.__class__] - l_repr = SimpleRepr(llvmtype, repr(obj.value), gen) - return l_repr + if isinstance(obj, Constant): + type_ = gen.annotator.binding(obj) + if type_.__class__ in LLVM_SIMPLE_TYPES: + llvmtype = LLVM_SIMPLE_TYPES[type_.__class__] + return SimpleRepr(llvmtype, repr(obj.value), gen) + if obj == last_exception: + return SimpleRepr("%std.class**", "%std.last_exception.type", gen) + if obj == last_exc_value: + return SimpleRepr("%std.exception**", "%std.last_exception.value", + gen) return None get = staticmethod(get) - def __init__(self, type, llvmname, gen): + def __init__(self, type_, llvmname, gen): if debug: print "SimpleRepr: %s, %s" % (type, llvmname) - self.type = type + self.type = type_ if llvmname in ("False", "True"): llvmname = llvmname.lower() self.name = llvmname @@ -84,13 +88,13 @@ class IntRepr(LLVMRepr): def get(obj, gen): if obj.__class__ is int: - type = gen.annotator.binding(Constant(obj)) - return IntRepr(type, obj, gen) + type_ = gen.annotator.binding(Constant(obj)) + return IntRepr(type_, obj, gen) if not isinstance(obj, Constant): return None - type = gen.annotator.binding(obj) - if type.__class__ == annmodel.SomeInteger: - return IntRepr(type, obj.value, gen) + type_ = gen.annotator.binding(obj) + if type_.__class__ == annmodel.SomeInteger: + return IntRepr(type_, obj.value, gen) get = staticmethod(get) def __init__(self, annotation, value, gen): @@ -129,8 +133,8 @@ if debug: print "VariableRepr: %s" % (var.name) self.var = var - type = gen.annotator.binding(var) - self.type = gen.get_repr(type) + type_ = gen.annotator.binding(var) + self.type = gen.get_repr(type_) self.dependencies = sets.Set([self.type]) def llvmname(self): @@ -146,11 +150,11 @@ % repr(name)) class TmpVariableRepr(LLVMRepr): - def __init__(self, name, type, gen): + def __init__(self, name, type_, gen): if debug: - print "TmpVariableRepr: %s %s" % (type, name) + print "TmpVariableRepr: %s %s" % (type_, name) self.name = name - self.type = type + self.type = type_ self.dependencies = sets.Set() def llvmname(self): @@ -178,8 +182,8 @@ class StringRepr(LLVMRepr): def get(obj, gen): if isinstance(obj, Constant): - type = gen.annotator.binding(obj) - if isinstance(type, annmodel.SomeString): + type_ = gen.annotator.binding(obj) + if isinstance(type_, annmodel.SomeString): return StringRepr(obj.value, gen) elif isinstance(obj, str): return StringRepr(obj, gen) @@ -217,8 +221,8 @@ class TupleRepr(LLVMRepr): def get(obj, gen): if isinstance(obj, Constant): - type = gen.annotator.binding(obj) - if isinstance(type, annmodel.SomeTuple): + type_ = gen.annotator.binding(obj) + if isinstance(type_, annmodel.SomeTuple): return TupleRepr(obj, gen) return None get = staticmethod(get) @@ -253,4 +257,3 @@ raise AttributeError, ("TupleRepr instance has no attribute %s" % repr(name)) - Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Mon Apr 4 17:26:06 2005 @@ -272,7 +272,6 @@ def two_exceptions(n): lst = range(10) try: - lst[n] += 1 lst[n] except IndexError: return 2 @@ -280,3 +279,11 @@ return 3 return 4 +def catch_base_exception(n): + lst = range(10) + try: + lst[n] + except LookupError: + return 2 + return 4 + Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Mon Apr 4 17:26:06 2005 @@ -17,7 +17,7 @@ a = t.annotate(annotate) a.simplify() gen = LLVMGenerator(t) - return gen.compile() + return gen.compile(True) def is_on_path(name): try: @@ -27,6 +27,7 @@ else: return True + class TestLLVMRepr(object): def setup_method(self,method): if not llvm_found: @@ -249,6 +250,21 @@ assert f(15) == 15 assert f(30) == 30 +class TestException(object): + def test_two_exception(self): + f = compile_function(llvmsnippet.two_exceptions, [int]) + for i in range(10): + assert f(i) == 4 + for i in range(10, 20): + assert f(i) == 2 + + def test_catch_base_exception(self): + f = compile_function(llvmsnippet.catch_base_exception, [int]) + for i in range(10): + assert f(i) == 4 + for i in range(10, 20): + assert f(i) == 2 + class TestSnippet(object): def setup_method(self, method): @@ -328,7 +344,7 @@ with_init = compile_function(test.with_init, [int]) assert with_init(42) == 42 - def DONOTtest_with_more_init(self): + def DONOT_test_with_more_init(self): with_more_init = compile_function(test.with_more_init, [int, bool]) assert with_more_init(42, True) == 42 assert with_more_init(42, False) == -42 From cfbolz at codespeak.net Mon Apr 4 17:32:03 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Mon, 4 Apr 2005 17:32:03 +0200 (MEST) Subject: [pypy-svn] r10292 - pypy/dist/pypy/translator/llvm Message-ID: <20050404153203.6066027BC2@code1.codespeak.net> Author: cfbolz Date: Mon Apr 4 17:32:03 2005 New Revision: 10292 Modified: pypy/dist/pypy/translator/llvm/classrepr.py Log: Removed debug print. Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Mon Apr 4 17:32:03 2005 @@ -203,7 +203,6 @@ def create_builtin_exceptions(gen, dependencies): import exceptions for exc in dir(exceptions): - print exc, "#############" if "__" not in exc: l_exc = gen.get_repr(getattr(exceptions, exc)) dependencies.add(l_exc) From pedronis at codespeak.net Mon Apr 4 17:37:07 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 4 Apr 2005 17:37:07 +0200 (MEST) Subject: [pypy-svn] r10294 - in pypy/dist: goal pypy/translator/tool Message-ID: <20050404153707.6F36827BC2@code1.codespeak.net> Author: pedronis Date: Mon Apr 4 17:37:07 2005 New Revision: 10294 Modified: pypy/dist/goal/translate_pypy.py pypy/dist/pypy/translator/tool/graphpage.py Log: added graph pages for only the class hierarchy and a localized call graph for functions (showing just a single function and its direct callers and callees, there are extra nodes that give access to the same for those) there's a threshold for translate_pypy.py for the number of functions in translator set with -huge=. Above the threshold we don't try to show the full call graph but only the localized one for the entry-point. Command are accesible at the translate_pypy prompt to ask for a graph: see help graphs: - for example classhier will show the class hierarchy graph, - try showg intobject.W_IntObject.__mm_mul after translate_pypy targetpypy1 analysis for an example of localized call graph. Modified: pypy/dist/goal/translate_pypy.py ============================================================================== --- pypy/dist/goal/translate_pypy.py (original) +++ pypy/dist/goal/translate_pypy.py Mon Apr 4 17:37:07 2005 @@ -21,6 +21,8 @@ -tcc Equivalent to the envvar PYPY_CC='tcc -shared -o "%s.so" "%s.c"' -- http://fabrice.bellard.free.fr/tcc/ -no-d Disable recording of debugging information + -huge=% Threshold in the number of functions after which only a local call + graph and not a full one is displayed """ import autopath, sys, threading, pdb, os @@ -43,7 +45,7 @@ # __________ Main __________ def analyse(target): - global t + global t, entry_point entry_point, inputtypes = target() @@ -152,6 +154,7 @@ if __name__ == '__main__': targetspec = 'targetpypy' + huge = 100 options = {'-text': False, '-no-c': False, @@ -172,6 +175,8 @@ except ValueError: if os.path.isfile(arg+'.py'): targetspec = arg + elif arg.startwith('-huge='): + huge = int(arg[6:]) else: assert arg in options, "unknown option %r" % (arg,) options[arg] = True @@ -206,7 +211,7 @@ print "don't know about", x def run_server(): - from pypy.translator.tool.graphpage import TranslatorPage + from pypy.translator.tool import graphpage from pypy.translator.tool.pygame.graphclient import get_layout from pypy.translator.tool.pygame.graphdisplay import GraphDisplay import pygame @@ -214,7 +219,12 @@ if not options['-no-mark-some-objects']: find_someobjects(t, quiet=True) - display = GraphDisplay(get_layout(TranslatorPage(t))) + if len(t.functions) <= huge: + page = graphpage.TranslatorPage(t) + else: + page = graphpage.LocalizedCallGraphPage(t, entry_point) + + display = GraphDisplay(get_layout(page)) async_quit = display.async_quit def show(page): display.async_cmd(layout=get_layout(page)) @@ -236,27 +246,103 @@ return self.show(page) - def do_show(self, arg): - if '.' in arg: - name = '' - obj = None - for comp in arg.split('.'): - name += comp - obj = getattr(obj, comp, None) - if obj is None: - try: - obj = __import__(name, {}, {}, ['*']) - except ImportError: - print "*** Not found: %s" % arg - return - name += '.' - if hasattr(obj, 'im_func'): - obj = obj.im_func - if obj in t.flowgraphs: - from pypy.translator.tool.graphpage import FlowGraphPage - self._show(FlowGraphPage(t, [obj])) + def _importobj(self, fullname): + obj = None + name = '' + for comp in fullname.split('.'): + name += comp + obj = getattr(obj, comp, None) + if obj is None: + try: + obj = __import__(name, {}, {}, ['*']) + except ImportError: + raise NameError + name += '.' + return obj + + TRYPREFIXES = ['','pypy.','pypy.objspace.','pypy.interpreter.', 'pypy.objspace.std.' ] + + def _getobj(self, name): + if '.' in name: + for pfx in self.TRYPREFIXES: + try: + return self._importobj(pfx+name) + except NameError: + pass + try: + return self._getval(name) + except (NameError, AttributeError, LookupError): + print "*** Not found:", name + return None + + def do_showg(self, arg): + """showg obj +show graph for obj, obj can be an expression or a dotted name +(in which case prefixing with some packages in pypy is tried (see help pypyprefixes)). +if obj is a function or method, the localized call graph is shown; +if obj is a class or ClassDef the class definition graph is shown""" + from pypy.annotation.classdef import ClassDef + from pypy.translator.tool import graphpage + obj = self._getobj(arg) + if obj is None: + return + if hasattr(obj, 'im_func'): + obj = obj.im_func + if obj in t.flowgraphs: + page = graphpage.LocalizedCallGraphPage(t, obj) + elif obj in getattr(t.annotator, 'getuserclasses', lambda: {})(): + page = graphpage.ClassDefPage(t, t.annotator.getuserclasses()[obj]) + elif isinstance(obj, ClassDef): + page = graphpage.ClassDefPage(t, obj) else: print "*** Nothing to do" + return + self._show(page) + + def do_flowg(self, arg): + """callg obj +show flow graph for function obj, obj can be an expression or a dotted name +(in which case prefixing with some packages in pypy is tried (see help pypyprefixes))""" + import types + from pypy.translator.tool import graphpage + obj = self._getobj(arg) + if obj is None: + return + if hasattr(obj, 'im_func'): + obj = obj.im_func + if not isinstance(obj, types.FunctionType): + print "*** Not a function" + return + self._show(graphpage.FlowGraphPage(t, [obj])) + + def do_callg(self, arg): + """callg obj +show localized call-graph for function obj, obj can be an expression or a dotted name +(in which case prefixing with some packages in pypy is tried (see help pypyprefixes))""" + import types + from pypy.translator.tool import graphpage + obj = self._getobj(arg) + if obj is None: + return + if hasattr(obj, 'im_func'): + obj = obj.im_func + if not isinstance(obj, types.FunctionType): + print "*** Not a function" + return + self._show(graphpage.LocalizedCallGraphPage(t, obj)) + + def do_classhier(self, arg): + """classhier +show class hierarchy graph""" + from pypy.translator.tool import graphpage + self._show(graphpage.ClassHierarchyPage(t)) + + def help_graphs(self): + print "graph commands are: showg, flowg, callg, classhier" + + def help_pypyprefixes(self): + print "these prefixes are tried for dotted names in graph commands:" + print self.TRYPREFIXES def debug(got_error): pdb_plus_show = PdbPlusShow() Modified: pypy/dist/pypy/translator/tool/graphpage.py ============================================================================== --- pypy/dist/pypy/translator/tool/graphpage.py (original) +++ pypy/dist/pypy/translator/tool/graphpage.py Mon Apr 4 17:37:07 2005 @@ -1,4 +1,4 @@ -import inspect +import inspect, types from pypy.objspace.flow.model import traverse, Block from pypy.translator.tool.make_dot import DotGen, make_dot, make_dot_graphs from pypy.interpreter.pycode import CO_VARARGS, CO_VARKEYWORDS @@ -208,7 +208,7 @@ if isinstance(obj, ClassDef): #data = '%s.%s' % (obj.cls.__module__, obj.cls.__name__) data = repr(obj.cls) - else: + elif isinstance(obj, types.FunctionType): func = obj try: source = inspect.getsource(func) @@ -217,6 +217,8 @@ data = '%s:%d\n%s' % (func.func_globals.get('__name__', '?'), func.func_code.co_firstlineno, source.split('\n')[0]) + else: + continue self.links[name] = data def get_blocked_functions(self, functions): @@ -300,6 +302,70 @@ self.compute_class_hieararchy(dotgen) +class LocalizedCallGraphPage(BaseTranslatorPage): + """A GraphPage showing a the call graph between functions + as well as the class hierarchy.""" + + def graph_name(self, func0): + return 'LCG_%s' % nameof(func0) + + def do_compute(self, dotgen, func0): + translator = self.translator + + functions = {} + + for f1, f2 in translator.callgraph.itervalues(): + if f1 is func0 or f2 is func0: + dotgen.emit_edge(nameof(f1), nameof(f2)) + functions[f1] = True + functions[f2] = True + + functions = functions.keys() + + # show the call graph + blocked_functions = self.get_blocked_functions(functions) + + highlight_functions = getattr(translator, 'highlight_functions', {}) # XXX + for func in functions: + name = func.func_name + class_ = getattr(func, 'class_', None) + if class_ is not None: + name = '%s.%s' % (class_.__name__, name) + data = self.labelof(func, name) + if func in blocked_functions: + kw = {'fillcolor': 'red'} + elif func in highlight_functions: + kw = {'fillcolor': '#ffcccc'} + else: + kw = {} + dotgen.emit_node(nameof(func), label=data, shape="box", **kw) + + if func is not func0: + lcg = 'LCG_%s' % nameof(func) + label = name+'...' + dotgen.emit_node(lcg, label=label) + dotgen.emit_edge(nameof(func), lcg) + self.links[label] = 'go to its localized call graph' + self.object_by_name[label] = func + + def followlink(self, name): + if name.endswith('...'): + obj = self.object_by_name[name] + return LocalizedCallGraphPage(self.translator, obj) + return BaseTranslatorPage.followlink(self, name) + +class ClassHierarchyPage(BaseTranslatorPage): + """A GraphPage showing the class hierarchy.""" + + def graph_name(self): + return 'class_hierarchy' + + def do_compute(self, dotgen): + translator = self.translator + + # show the class hierarchy + self.compute_class_hieararchy(dotgen) + def nameof(obj, cache={}): # NB. the purpose of the cache is not performance, but to ensure that # two objects that compare equal get the same name From pedronis at codespeak.net Mon Apr 4 17:57:41 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 4 Apr 2005 17:57:41 +0200 (MEST) Subject: [pypy-svn] r10295 - pypy/dist/pypy/translator/tool Message-ID: <20050404155741.A1B5B27BC5@code1.codespeak.net> Author: pedronis Date: Mon Apr 4 17:57:41 2005 New Revision: 10295 Modified: pypy/dist/pypy/translator/tool/graphpage.py Log: fix doc string Modified: pypy/dist/pypy/translator/tool/graphpage.py ============================================================================== --- pypy/dist/pypy/translator/tool/graphpage.py (original) +++ pypy/dist/pypy/translator/tool/graphpage.py Mon Apr 4 17:57:41 2005 @@ -303,8 +303,8 @@ class LocalizedCallGraphPage(BaseTranslatorPage): - """A GraphPage showing a the call graph between functions - as well as the class hierarchy.""" + """A GraphPage showing a the localized call graph for a function, + that means just including direct callers and callees""" def graph_name(self, func0): return 'LCG_%s' % nameof(func0) From pedronis at codespeak.net Mon Apr 4 18:53:02 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 4 Apr 2005 18:53:02 +0200 (MEST) Subject: [pypy-svn] r10299 - in pypy/dist: goal pypy/annotation pypy/interpreter pypy/translator Message-ID: <20050404165302.02DFA27BC1@code1.codespeak.net> Author: pedronis Date: Mon Apr 4 18:53:02 2005 New Revision: 10299 Added: pypy/dist/pypy/translator/ann_override.py (contents, props changed) Modified: pypy/dist/goal/translate_pypy.py pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/interpreter/pyframe.py pypy/dist/pypy/translator/translator.py Log: use override mechanism instead of a wrong annotation for sys.exc_info, targetpypy0 annotation terminates without needing to tweak the codebase for record_interpreter_traceback Modified: pypy/dist/goal/translate_pypy.py ============================================================================== --- pypy/dist/goal/translate_pypy.py (original) +++ pypy/dist/goal/translate_pypy.py Mon Apr 4 18:53:02 2005 @@ -27,6 +27,7 @@ import autopath, sys, threading, pdb, os from pypy.translator.translator import Translator +from pypy.translator.ann_override import pypy_overrides from pypy.annotation import model as annmodel from pypy.tool.cache import Cache from pypy.annotation.model import SomeObject @@ -53,7 +54,7 @@ if listen_port: run_async_server() if not options['-no-a']: - a = t.annotate(inputtypes) + a = t.annotate(inputtypes, overrides=pypy_overrides) a.simplify() t.frozen = True # cannot freeze if we don't have annotations if not options['-no-mark-some-objects']: @@ -175,7 +176,7 @@ except ValueError: if os.path.isfile(arg+'.py'): targetspec = arg - elif arg.startwith('-huge='): + elif arg.startswith('-huge='): huge = int(arg[6:]) else: assert arg in options, "unknown option %r" % (arg,) Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Mon Apr 4 18:53:02 2005 @@ -200,9 +200,6 @@ def math_floor(x): return SomeObject() -def exc_info(): # XXX - return SomeTuple((immutablevalue(None),)*3) - # collect all functions import __builtin__ BUILTIN_ANALYZERS = {} @@ -217,4 +214,3 @@ BUILTIN_ANALYZERS[sys.getrefcount] = count BUILTIN_ANALYZERS[math.fmod] = math_fmod BUILTIN_ANALYZERS[math.floor] = math_floor -BUILTIN_ANALYZERS[sys.exc_info] = exc_info # xxx Modified: pypy/dist/pypy/interpreter/pyframe.py ============================================================================== --- pypy/dist/pypy/interpreter/pyframe.py (original) +++ pypy/dist/pypy/interpreter/pyframe.py Mon Apr 4 18:53:02 2005 @@ -20,6 +20,11 @@ compiler_flags |= getattr(__future__, fname).compiler_flag +def cpython_tb(): + """NOT_RPYTHON""" + import sys + return sys.exc_info()[2] + class PyFrame(eval.Frame): """Represents a frame for a regular Python function that needs to be interpreted. @@ -93,15 +98,15 @@ # catch asynchronous exceptions and turn them # into OperationErrors except KeyboardInterrupt: - import sys; tb = sys.exc_info()[2] + tb = cpython_tb() raise OperationError, OperationError(self.space.w_KeyboardInterrupt, self.space.w_None), tb except MemoryError: - import sys; tb = sys.exc_info()[2] + tb = cpython_tb() raise OperationError, OperationError(self.space.w_MemoryError, self.space.w_None), tb except RuntimeError, e: - import sys; tb = sys.exc_info()[2] + tb = cpython_tb() raise OperationError, OperationError(self.space.w_RuntimeError, self.space.wrap("internal error: " + str(e))), tb Added: pypy/dist/pypy/translator/ann_override.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/ann_override.py Mon Apr 4 18:53:02 2005 @@ -0,0 +1,20 @@ +# overrides for annotation specific to PyPy codebase +from pypy.annotation.bookkeeper import getbookkeeper +from pypy.interpreter import error +from pypy.interpreter import pyframe + + +def ignore(*args): + bk = getbookkeeper() + return bk.immutablevalue(None) + +pypy_overrides = {} + +def install(tgt, override): + if hasattr(tgt, 'im_func'): + tgt = tgt.im_func + pypy_overrides[tgt] = override + +install(pyframe.cpython_tb, ignore) +install(error.OperationError.record_interpreter_traceback, ignore) + Modified: pypy/dist/pypy/translator/translator.py ============================================================================== --- pypy/dist/pypy/translator/translator.py (original) +++ pypy/dist/pypy/translator/translator.py Mon Apr 4 18:53:02 2005 @@ -128,14 +128,14 @@ graph = self.getflowgraph(func) simplify_graph(graph) - def annotate(self, input_args_types, func=None): + def annotate(self, input_args_types, func=None, overrides={}): """annotate(self, input_arg_types[, func]) -> Annotator Provides type information of arguments. Returns annotator. """ func = func or self.entrypoint if self.annotator is None: - self.annotator = RPythonAnnotator(self) + self.annotator = RPythonAnnotator(self, overrides=overrides) graph = self.getflowgraph(func) self.annotator.build_types(graph, input_args_types, func) return self.annotator From sanxiyn at codespeak.net Mon Apr 4 19:22:06 2005 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Mon, 4 Apr 2005 19:22:06 +0200 (MEST) Subject: [pypy-svn] r10301 - pypy/dist/pypy/tool Message-ID: <20050404172206.0C2BC27BC2@code1.codespeak.net> Author: sanxiyn Date: Mon Apr 4 19:22:05 2005 New Revision: 10301 Modified: pypy/dist/pypy/tool/autopath.py Log: Fix autopath to remove paths from sys.path only if they are subpackages. Especially, don't remove pypy/lib when running PyPy on PyPy. Modified: pypy/dist/pypy/tool/autopath.py ============================================================================== --- pypy/dist/pypy/tool/autopath.py (original) +++ pypy/dist/pypy/tool/autopath.py Mon Apr 4 19:22:05 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} From sanxiyn at codespeak.net Mon Apr 4 19:24:26 2005 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Mon, 4 Apr 2005 19:24:26 +0200 (MEST) Subject: [pypy-svn] r10302 - in pypy/dist/pypy: annotation/test documentation/revreport interpreter interpreter/test lib/test2 module/test objspace/flow/test objspace/std objspace/std/test objspace/test tool/test translator translator/genc translator/genc/test translator/java translator/java/test translator/llvm translator/llvm/test translator/test translator/tool translator/tool/pygame Message-ID: <20050404172426.295C127BC2@code1.codespeak.net> Author: sanxiyn Date: Mon Apr 4 19:24:25 2005 New Revision: 10302 Modified: pypy/dist/pypy/annotation/test/autopath.py pypy/dist/pypy/documentation/revreport/autopath.py pypy/dist/pypy/interpreter/autopath.py pypy/dist/pypy/interpreter/test/autopath.py pypy/dist/pypy/lib/test2/autopath.py pypy/dist/pypy/module/test/autopath.py pypy/dist/pypy/objspace/flow/test/autopath.py pypy/dist/pypy/objspace/std/autopath.py pypy/dist/pypy/objspace/std/test/autopath.py pypy/dist/pypy/objspace/test/autopath.py pypy/dist/pypy/tool/test/autopath.py pypy/dist/pypy/translator/autopath.py pypy/dist/pypy/translator/genc/autopath.py pypy/dist/pypy/translator/genc/test/autopath.py pypy/dist/pypy/translator/java/autopath.py pypy/dist/pypy/translator/java/test/autopath.py pypy/dist/pypy/translator/llvm/autopath.py pypy/dist/pypy/translator/llvm/test/autopath.py pypy/dist/pypy/translator/test/autopath.py pypy/dist/pypy/translator/tool/autopath.py pypy/dist/pypy/translator/tool/pygame/autopath.py Log: regenerate Modified: pypy/dist/pypy/annotation/test/autopath.py ============================================================================== --- pypy/dist/pypy/annotation/test/autopath.py (original) +++ pypy/dist/pypy/annotation/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/documentation/revreport/autopath.py ============================================================================== --- pypy/dist/pypy/documentation/revreport/autopath.py (original) +++ pypy/dist/pypy/documentation/revreport/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/interpreter/autopath.py ============================================================================== --- pypy/dist/pypy/interpreter/autopath.py (original) +++ pypy/dist/pypy/interpreter/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/interpreter/test/autopath.py ============================================================================== --- pypy/dist/pypy/interpreter/test/autopath.py (original) +++ pypy/dist/pypy/interpreter/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/lib/test2/autopath.py ============================================================================== --- pypy/dist/pypy/lib/test2/autopath.py (original) +++ pypy/dist/pypy/lib/test2/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/module/test/autopath.py ============================================================================== --- pypy/dist/pypy/module/test/autopath.py (original) +++ pypy/dist/pypy/module/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/objspace/flow/test/autopath.py ============================================================================== --- pypy/dist/pypy/objspace/flow/test/autopath.py (original) +++ pypy/dist/pypy/objspace/flow/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/objspace/std/autopath.py ============================================================================== --- pypy/dist/pypy/objspace/std/autopath.py (original) +++ pypy/dist/pypy/objspace/std/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/objspace/std/test/autopath.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/autopath.py (original) +++ pypy/dist/pypy/objspace/std/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/objspace/test/autopath.py ============================================================================== --- pypy/dist/pypy/objspace/test/autopath.py (original) +++ pypy/dist/pypy/objspace/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/tool/test/autopath.py ============================================================================== --- pypy/dist/pypy/tool/test/autopath.py (original) +++ pypy/dist/pypy/tool/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/autopath.py ============================================================================== --- pypy/dist/pypy/translator/autopath.py (original) +++ pypy/dist/pypy/translator/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/genc/autopath.py ============================================================================== --- pypy/dist/pypy/translator/genc/autopath.py (original) +++ pypy/dist/pypy/translator/genc/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/genc/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/genc/test/autopath.py (original) +++ pypy/dist/pypy/translator/genc/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/java/autopath.py ============================================================================== --- pypy/dist/pypy/translator/java/autopath.py (original) +++ pypy/dist/pypy/translator/java/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/java/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/java/test/autopath.py (original) +++ pypy/dist/pypy/translator/java/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/llvm/autopath.py ============================================================================== --- pypy/dist/pypy/translator/llvm/autopath.py (original) +++ pypy/dist/pypy/translator/llvm/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/llvm/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/autopath.py (original) +++ pypy/dist/pypy/translator/llvm/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/test/autopath.py (original) +++ pypy/dist/pypy/translator/test/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/tool/autopath.py ============================================================================== --- pypy/dist/pypy/translator/tool/autopath.py (original) +++ pypy/dist/pypy/translator/tool/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/tool/pygame/autopath.py ============================================================================== --- pypy/dist/pypy/translator/tool/pygame/autopath.py (original) +++ pypy/dist/pypy/translator/tool/pygame/autopath.py Mon Apr 4 19:24:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} From pedronis at codespeak.net Mon Apr 4 19:43:22 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 4 Apr 2005 19:43:22 +0200 (MEST) Subject: [pypy-svn] r10303 - pypy/dist/pypy/translator/llvm/test Message-ID: <20050404174322.3CF4E27BC2@code1.codespeak.net> Author: pedronis Date: Mon Apr 4 19:43:22 2005 New Revision: 10303 Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: skip logic missing for the new exc tests Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Mon Apr 4 19:43:22 2005 @@ -251,6 +251,10 @@ assert f(30) == 30 class TestException(object): + def setup_method(self, method): + if not llvm_found: + py.test.skip("llvm-as not found on path.") + def test_two_exception(self): f = compile_function(llvmsnippet.two_exceptions, [int]) for i in range(10): From pedronis at codespeak.net Mon Apr 4 19:59:15 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 4 Apr 2005 19:59:15 +0200 (MEST) Subject: [pypy-svn] r10305 - pypy/dist/pypy/module/parser/test Message-ID: <20050404175915.8AA3927BC2@code1.codespeak.net> Author: pedronis Date: Mon Apr 4 19:59:15 2005 New Revision: 10305 Modified: pypy/dist/pypy/module/parser/test/test_simple.py Log: disabled some print statements, changed check for PyPy, this test is not really run it seems because it's unittest? Modified: pypy/dist/pypy/module/parser/test/test_simple.py ============================================================================== --- pypy/dist/pypy/module/parser/test/test_simple.py (original) +++ pypy/dist/pypy/module/parser/test/test_simple.py Mon Apr 4 19:59:15 2005 @@ -3,16 +3,15 @@ import unittest, inspect, compiler import sys -# XXX - Is there a better way to detect that we are in PyPy? -print sys.version -if "pypy" in sys.version: +#print sys.version +if hasattr(sys, 'pypy_objspaceclass'): cpy_parser = None import parser else: import parser as cpy_parser del sys.modules['parser'] import pypy.module.parser.pyparser as parser - print dir(parser) + #print dir(parser) #assert hasattr(parser, 'PyTokenizer'), "not using Basil's common parser" from pypy.objspace.std import StdObjSpace space = StdObjSpace() From cfbolz at codespeak.net Tue Apr 5 02:58:46 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 5 Apr 2005 02:58:46 +0200 (MEST) Subject: [pypy-svn] r10310 - pypy/dist/pypy/translator/llvm Message-ID: <20050405005846.9C31A27BA7@code1.codespeak.net> Author: cfbolz Date: Tue Apr 5 02:58:46 2005 New Revision: 10310 Modified: pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/genllvm.py pypy/dist/pypy/translator/llvm/list.c pypy/dist/pypy/translator/llvm/list_template.ll pypy/dist/pypy/translator/llvm/llvmbc.py pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/typerepr.py Log: Changed the type representations to distinguish better between LLVM types and type objects. Also added further pieces of exception support. Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Tue Apr 5 02:58:46 2005 @@ -13,6 +13,8 @@ from pypy.translator.llvm.funcrepr import FunctionRepr, BoundMethodRepr from pypy.translator.llvm.funcrepr import VirtualMethodRepr +debug = True + class ClassRepr(TypeRepr): l_classes = {} def get(obj, gen): @@ -87,9 +89,12 @@ print "--> value" self.l_attrs_types = [gen.get_repr(attr.s_value) for attr in attribs] self.dependencies = sets.Set(self.l_attrs_types) - attributes = ", ".join([at.llvmname() for at in self.l_attrs_types]) - self.definition = "%s = type {%%std.class*, %s}" % (self.name, - attributes) + attributes = ", ".join([at.typename() for at in self.l_attrs_types]) + if attributes != "": + self.definition = "%s = type {%%std.class*, %s}" % (self.name, + attributes) + else: + self.definition = "%s = type {%%std.class*}" % self.name self.attributes = attribs self.attr_num = {} for i, attr in enumerate(attribs): @@ -112,14 +117,10 @@ (self.l_base.objectname, l_tmp.llvmname())) def llvmtype(self): - return "%std.class* " + return "%std.class*" - def typed_name(self): - #XXXX: Ouch. I get bitten by the fact that - # in LLVM typedef != class object - # This will work, as long as class objects are only passed to functions - # (as opposed to used in LLVM instructions) - return "%%std.class* %s" % self.objectname + def llvmname(self): + return self.objectname def op_simple_call(self, l_target, args, lblock, l_func): lblock.malloc(l_target, self) @@ -240,7 +241,7 @@ else: self.l_base = None - def llvmname(self): + def typename(self): return "%std.exception* " def llvmtype(self): Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Tue Apr 5 02:58:46 2005 @@ -10,18 +10,20 @@ from pypy.translator.llvm import llvmbc from pypy.translator.unsimplify import remove_double_links -from pypy.translator.llvm.representation import debug, LLVMRepr +from pypy.translator.llvm.representation import debug, LLVMRepr, CompileError from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr +debug = True -INTRINSIC_OPS = ["lt", "le", "eq", "ne", "gt", "ge", "is", "is_true", "len", +INTRINSIC_OPS = ["lt", "le", "eq", "ne", "gt", "ge", "is_", "is_true", "len", "neg", "pos", "invert", "add", "sub", "mul", "truediv", "floordiv", "div", "mod", "pow", "lshift", "rshift", "and_", "or", "xor", "inplace_add", "inplace_sub", "inplace_mul", "inplace_truediv", "inplace_floordiv", "inplace_div", "inplace_mod", "inplace_pow", "inplace_lshift", "inplace_rshift", "inplace_and", "inplace_or", "inplace_xor", - "contains", "newlist", "newtuple", "alloc_and_set"] + "contains", "newlist", "newtuple", "alloc_and_set", + "issubtype"] C_SIMPLE_TYPES = {annmodel.SomeChar: "char", annmodel.SomeString: "char*", @@ -124,6 +126,8 @@ checkgraph(self.graph) a = self.annotator for number, pyblock in enumerate(self.allblocks): + if debug: + print "#" * 20, self.graph.name, number, pyblock pyblock = self.allblocks[number] is_tryblock = isinstance(pyblock.exitswitch, Constant) and \ pyblock.exitswitch.value == last_exception @@ -147,12 +151,15 @@ if isinstance(node, Link) and node.target == pyblock: incoming_links.append(node) traverse(visit, self.graph) + print "***** phi nodes *****" if len(incoming_links) != 0: for i, arg in enumerate(pyblock.inputargs): + print "___", i, arg, "___", l_arg = self.gen.get_repr(arg) l_values = [self.gen.get_repr(l.args[i]) for l in incoming_links] for j in range(len(l_values)): + print j, l_values[j].llvmtype(), l_arg.llvmtype() if l_values[j].llvmtype() != l_arg.llvmtype(): try: l_values[j] = \ @@ -193,26 +200,56 @@ # type there, we have to make the cast in this block since the phi # instructions in the next block cannot be preceded by any other # instruction + print "******Casts:******" for link in pyblock.exits: + print "____________block:", link.target for i, arg in enumerate(link.args): - localtype = self.annotator.binding(arg) - targettype = self.annotator.binding( - link.target.inputargs[i]) - l_targettype = self.gen.get_repr(targettype) - l_localtype = self.gen.get_repr(localtype) + print arg, + l_target = self.gen.get_repr(link.target.inputargs[i]) l_local = self.gen.get_repr(arg) - self.dependencies.update([l_targettype, l_localtype, - l_local]) - if l_targettype.llvmname() != l_localtype.llvmname(): - l_tmp = self.gen.get_local_tmp(l_targettype, self) + self.dependencies.update([l_target, l_local]) + print "local", l_local.typed_name() + print "target", l_target.typed_name() + print "from ", l_local.llvmtype(), + print "to", l_target.llvmtype(), + if l_target.llvmtype() != l_local.llvmtype(): + print "change: ", + l_tmp = self.gen.get_local_tmp(l_target.type, self) lblock.cast(l_tmp, l_local) - l_local.alt_types = {l_targettype.llvmname(): l_tmp} + try: + print l_local.alt_types + l_local.alt_types[l_target.llvmtype()] = l_tmp + except (AttributeError, TypeError): + l_local.alt_types = {l_target.llvmtype(): l_tmp} + print l_local.alt_types + else: + print #Create branches if pyblock.exitswitch is None: if pyblock == self.graph.returnblock: l_returnvalue = self.gen.get_repr(pyblock.inputargs[0]) self.dependencies.add(l_returnvalue) lblock.ret(l_returnvalue) + elif pyblock == self.graph.exceptblock: + l_exc = self.gen.get_repr(pyblock.inputargs[0]) + l_val = self.gen.get_repr(pyblock.inputargs[1]) + l_last_exception = self.gen.get_repr(last_exception) + l_last_exc_value = self.gen.get_repr(last_exc_value) + self.dependencies.update([l_exc, l_val, l_last_exception, + l_last_exc_value]) + if "%std.class" != l_exc.llvmtype(): + l_tmp = self.gen.get_local_tmp( + PointerTypeRepr("%std.class", self.gen), self) + lblock.cast(l_tmp, l_exc) + l_exc = l_tmp + if "%std.exception" != l_val.llvmtype(): + l_tmp = self.gen.get_local_tmp( + PointerTypeRepr("%std.exception", self.gen), self) + lblock.cast(l_tmp, l_val) + l_val = l_tmp + lblock.store(l_exc, l_last_exception) + lblock.store(l_val, l_last_exc_value) + lblock.unwind() else: lblock.uncond_branch( "%%block%i" % self.blocknum[pyblock.exits[0].target]) Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Tue Apr 5 02:58:46 2005 @@ -22,7 +22,7 @@ from pypy.translator.llvm.representation import CompileError from pypy.translator.llvm.funcrepr import EntryFunctionRepr -debug = True +debug = False def llvmcompile(transl, optimize=False): @@ -175,4 +175,3 @@ yield l_dep1 yield l_repr - Modified: pypy/dist/pypy/translator/llvm/list.c ============================================================================== --- pypy/dist/pypy/translator/llvm/list.c (original) +++ pypy/dist/pypy/translator/llvm/list.c Tue Apr 5 02:58:46 2005 @@ -123,6 +123,17 @@ l->data[index] = value; } +void setitem_EXCEPTION(struct list* l, int index, struct item* value) { + if (index < 0) + index = l->length + index; + if (valid_index(index, l) == 0) { + LAST_EXCEPTION_TYPE = &INDEX_ERROR; + unwind(); + return; + } + l->data[index] = value; +} + struct list* add(struct list* a, struct list* b) { struct list* nlist = malloc(sizeof(struct list)); unsigned int newlength = a->length + b->length; @@ -177,6 +188,24 @@ return ret; } +struct item* pop_EXCEPTION(struct list* a, int index) { + if (index < 0) + index = a->length + index; + if (valid_index(index, a) == 0) { + LAST_EXCEPTION_TYPE = &INDEX_ERROR; + return unwind(); + } + struct item* ret = a->data[index]; + struct item** newdata = malloc(sizeof(struct item*) * (a->length - 1)); + copy(a->data, newdata, index); + copy(a->data + index + 1, newdata + index, a->length - 1 - index); + a->length -= 1; + free(a->data); + a->data = newdata; + return ret; +} + + struct item* pop_ALTERNATIVE1(struct list* a) { return pop(a, a->length - 1); } @@ -194,5 +223,4 @@ hi -= 1; } } - - + Modified: pypy/dist/pypy/translator/llvm/list_template.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/list_template.ll (original) +++ pypy/dist/pypy/translator/llvm/list_template.ll Tue Apr 5 02:58:46 2005 @@ -221,6 +221,38 @@ ret void } +internal void %std.setitem.exc(%std.list.%(name)s* %l, int %index.1, %(item)s %value) { +entry: + %tmp.1 = setlt int %index.1, 0 + br bool %tmp.1, label %then.0, label %endif.0.i + +then.0: + %tmp.4 = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.5 = load uint* %tmp.4 + %tmp.5 = cast uint %tmp.5 to int + %tmp.9 = add int %tmp.5, %index.1 + %tmp.1.i5 = setlt int %tmp.9, 0 + br bool %tmp.1.i5, label %then.1, label %endif.0.i + +endif.0.i: + %index_addr.0.0 = phi int [ %tmp.9, %then.0 ], [ %index.1, %entry ] + %tmp.1.i.i = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.2.i.i = load uint* %tmp.1.i.i + %tmp.3.i.i = cast uint %tmp.2.i.i to int + %tmp.6.i = setgt int %tmp.3.i.i, %index_addr.0.0 + br bool %tmp.6.i, label %endif.1, label %then.1 + +then.1: + store %std.class* %glb.class.IndexError.object, %std.class** %std.last_exception.type + unwind +endif.1: + %tmp.17 = getelementptr %std.list.%(name)s* %l, int 0, uint 1 + %tmp.18 = load %(item)s** %tmp.17 + %tmp.20 = getelementptr %(item)s* %tmp.18, int %index_addr.0.0 + store %(item)s %value, %(item)s* %tmp.20 + ret void +} + internal %std.list.%(name)s* %std.add(%std.list.%(name)s* %a, %std.list.%(name)s* %b) { entry: %tmp.0 = malloc %std.list.%(name)s @@ -461,6 +493,78 @@ ret %(item)s %tmp.15 } +internal %(item)s %std.pop.exc(%std.list.%(name)s* %a, int %index.1) { +entry: + %tmp.1 = setlt int %index.1, 0 + br bool %tmp.1, label %then.0, label %endif.0.i + +then.0: + %tmp.4 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.5 = load uint* %tmp.4 + %tmp.5 = cast uint %tmp.5 to int + %tmp.9 = add int %tmp.5, %index.1 + %tmp.1.i20 = setlt int %tmp.9, 0 + br bool %tmp.1.i20, label %then.1, label %endif.0.i + +endif.0.i: + %index_addr.0.0 = phi int [ %tmp.9, %then.0 ], [ %index.1, %entry ] + %tmp.1.i.i = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.2.i.i = load uint* %tmp.1.i.i + %tmp.3.i.i = cast uint %tmp.2.i.i to int + %tmp.6.i = setgt int %tmp.3.i.i, %index_addr.0.0 + br bool %tmp.6.i, label %endif.1, label %then.1 + +then.1: + store %std.class* %glb.class.IndexError.object, %std.class** %std.last_exception.type + unwind +endif.1: + %tmp.19 = getelementptr %std.list.%(name)s* %a, int 0, uint 1 + %tmp.20 = load %(item)s** %tmp.19 + %tmp.22 = getelementptr %(item)s* %tmp.20, int %index_addr.0.0 + %tmp.23 = load %(item)s* %tmp.22 + %tmp.27-off = add uint %tmp.2.i.i, 1073741823 + %tmp.24 = malloc %(item)s, uint %tmp.27-off + %tmp.36 = cast int %index_addr.0.0 to uint + %tmp.2.i526 = seteq int %index_addr.0.0, 0 + br bool %tmp.2.i526, label %copy.entry12, label %no_exit.i6 + +no_exit.i6: + %i.0.i4.0 = phi uint [ %tmp.14.i10, %no_exit.i6 ], [ 0, %endif.1 ] + %tmp.7.i7 = getelementptr %(item)s* %tmp.24, uint %i.0.i4.0 + %tmp.11.i8 = getelementptr %(item)s* %tmp.20, uint %i.0.i4.0 + %tmp.12.i9 = load %(item)s* %tmp.11.i8 + store %(item)s %tmp.12.i9, %(item)s* %tmp.7.i7 + %tmp.14.i10 = add uint %i.0.i4.0, 1 + %tmp.2.i5 = setlt uint %tmp.14.i10, %tmp.36 + br bool %tmp.2.i5, label %no_exit.i6, label %copy.entry12 + +copy.entry12: + %tmp.43.sum = add int %index_addr.0.0, 1 + %tmp.56 = add uint %tmp.2.i.i, 4294967295 + %tmp.57 = sub uint %tmp.56, %tmp.36 + %tmp.2.i31 = seteq uint %tmp.56, %tmp.36 + br bool %tmp.2.i31, label %copy.entry, label %no_exit.i + +no_exit.i: + %i.0.i.0 = phi uint [ %tmp.14.i, %no_exit.i ], [ 0, %copy.entry12 ] + %i.0.i.032 = cast uint %i.0.i.0 to int + %tmp.50.sum = add int %i.0.i.032, %index_addr.0.0 + %tmp.7.i = getelementptr %(item)s* %tmp.24, int %tmp.50.sum + %tmp.45.sum = add int %i.0.i.032, %tmp.43.sum + %tmp.11.i = getelementptr %(item)s* %tmp.20, int %tmp.45.sum + %tmp.12.i = load %(item)s* %tmp.11.i + store %(item)s %tmp.12.i, %(item)s* %tmp.7.i + %tmp.14.i = add uint %i.0.i.0, 1 + %tmp.2.i = setlt uint %tmp.14.i, %tmp.57 + br bool %tmp.2.i, label %no_exit.i, label %copy.entry + +copy.entry: + store uint %tmp.56, uint* %tmp.1.i.i + free %(item)s* %tmp.20 + store %(item)s* %tmp.24, %(item)s** %tmp.19 + ret %(item)s %tmp.23 +} + internal %(item)s %std.pop(%std.list.%(name)s* %a) { entry: %tmp.3 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 Modified: pypy/dist/pypy/translator/llvm/llvmbc.py ============================================================================== --- pypy/dist/pypy/translator/llvm/llvmbc.py (original) +++ pypy/dist/pypy/translator/llvm/llvmbc.py Tue Apr 5 02:58:46 2005 @@ -95,15 +95,15 @@ def malloc(self, l_target, l_type, num=1): self.phi_done = True s = "%s = malloc %s" % (l_target.llvmname(), - l_type.llvmname_wo_pointer()) + l_type.typename_wo_pointer()) if num > 1: s += ", uint %i" % num self.instructions.append(s) def getelementptr(self, l_target, l_ptr, adresses): self.phi_done = True - s = "%s = getelementptr %s %s, " % (l_target.llvmname(), - l_ptr.llvmtype(), l_ptr.llvmname()) + s = "%s = getelementptr %s, " % (l_target.llvmname(), + l_ptr.typed_name()) adr = [] for a in adresses: try: @@ -158,8 +158,6 @@ if self.phi_done: raise LLVMError, "Can't create phi node." vars_string = [] - print "inserting phi node", l_arg, l_values, blocks - print l_arg.llvmname(), l_arg.llvmtype() fd = "" + "%s = phi %s " % (l_arg.llvmname(), l_arg.llvmtype()) fd += ", ".join(["[%s, %s]" % (v.llvmname(), b) for v, b in zip(l_values, blocks)]) Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Tue Apr 5 02:58:46 2005 @@ -39,7 +39,7 @@ return self.name def llvmtype(self): - return self.type.llvmname() + return self.type.typename() def typed_name(self): return self.llvmtype() + " " + self.llvmname() @@ -160,9 +160,6 @@ def llvmname(self): return "%" + self.name - def llvmtype(self): - return self.type.llvmname() - class NoneRepr(LLVMRepr): def get(obj, gen): if isinstance(obj, Constant) and obj.value is None: @@ -205,7 +202,7 @@ def get_globals(self): d = {"len": len(self.s), "gv1": self.glvar1, "gv2": self.glvar2, - "type": self.type.llvmname_wo_pointer(), "string": self.s} + "type": self.type.typename_wo_pointer(), "string": self.s} s = """%(gv1)s = internal global [%(len)i x sbyte] c"%(string)s" %(gv2)s = internal global %(type)s {uint %(len)i,\ sbyte* getelementptr ([%(len)i x sbyte]* %(gv1)s, uint 0, uint 0)}""" @@ -256,4 +253,3 @@ else: raise AttributeError, ("TupleRepr instance has no attribute %s" % repr(name)) - Modified: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/seqrepr.py (original) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Tue Apr 5 02:58:46 2005 @@ -28,7 +28,7 @@ self.gen = gen self.l_itemtype = gen.get_repr(obj.s_item) self.dependencies = sets.Set([self.l_itemtype]) - itemtype = self.l_itemtype.llvmname() + itemtype = self.l_itemtype.typename() self.name = "%%std.list.%s" % itemtype.strip("%").replace("*", "") self.definition = self.name + " = type {uint, %s*}" % itemtype @@ -36,8 +36,8 @@ f = file(autopath.this_dir + "/list_template.ll", "r") s = f.read() f.close() - itemtype = self.l_itemtype.llvmname() - s = s.replace("%(item)s", self.l_itemtype.llvmname()) + itemtype = self.l_itemtype.typename() + s = s.replace("%(item)s", self.l_itemtype.typename()) s = s.replace("%(name)s", itemtype.strip("%").replace("*", "")) if isinstance(self.l_itemtype, IntTypeRepr): f1 = file(autopath.this_dir + "/int_list.ll", "r") @@ -82,11 +82,11 @@ self.gen = gen self.l_itemtypes = [gen.get_repr(l) for l in obj.items] self.name = (("{" + ", ".join(["%s"] * len(self.l_itemtypes)) + "}") % - tuple([l.llvmname() for l in self.l_itemtypes])) + tuple([l.typename() for l in self.l_itemtypes])) def get_functions(self): s = ("internal int %%std.len(%s %%t) {\n\tret int %i\n}\n" % - (self.llvmname(), len(self.l_itemtypes))) + (self.typename(), len(self.l_itemtypes))) return s def t_op_newtuple(self, l_target, args, lblock, l_func): @@ -94,7 +94,7 @@ l_func.dependencies.update(l_args) lblock.malloc(l_target, self) l_ptrs = [self.gen.get_local_tmp(\ - PointerTypeRepr(l.llvmname(),self.gen), l_func) + PointerTypeRepr(l.typename(),self.gen), l_func) for l in self.l_itemtypes] l_func.dependencies.update(l_ptrs) for i, l in enumerate(self.l_itemtypes): Modified: pypy/dist/pypy/translator/llvm/typerepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/typerepr.py (original) +++ pypy/dist/pypy/translator/llvm/typerepr.py Tue Apr 5 02:58:46 2005 @@ -7,7 +7,7 @@ from pypy.objspace.flow.model import last_exception, last_exc_value from pypy.annotation import model as annmodel -from pypy.translator.llvm.representation import debug, LLVMRepr +from pypy.translator.llvm.representation import debug, LLVMRepr, CompileError from pypy.translator.llvm.representation import LLVM_SIMPLE_TYPES @@ -19,10 +19,10 @@ return TypeRepr("%std.void", "%std.void = type sbyte", "", gen) get = staticmethod(get) - def __init__(self, llvmname, definition, includefile, gen): - if debug: - print "TypeRepr: %s, %s" % (llvmname, definition) - self.name = llvmname + def __init__(self, typename, definition, includefile, gen): + if debug: + print "TypeRepr: %s, %s" % (typename, definition) + self.name = typename self.definition = definition self.gen = gen self.includefile = includefile @@ -44,12 +44,19 @@ pass return "" - def llvmname(self): + def typename(self): return self.name + "*" - def llvmname_wo_pointer(self): + def typename_wo_pointer(self): return self.name + def llvmname(self): + raise CompileError, "This type is not an object." + + def llvmtype(self): + raise CompileError, "This type is not an object." + + class StringTypeRepr(TypeRepr): def get(obj, gen): if obj.__class__ is annmodel.SomeString or obj is str: @@ -66,7 +73,7 @@ self.l_charlist = self.gen.get_repr( annmodel.SomeList(None, annmodel.SomeChar())) self.dependencies.add(self.l_charlist) - self.name = self.l_charlist.llvmname_wo_pointer() + self.name = self.l_charlist.typename_wo_pointer() def t_op_getitem(self, l_target, args, lblock, l_func): l_args = [self.gen.get_repr(arg) for arg in args] @@ -96,7 +103,7 @@ self.name = "int" self.gen = gen - def llvmname(self): + def typename(self): return self.name def cast_to_signed(self, l_val, lblock, l_function): @@ -133,30 +140,31 @@ return l_repr elif obj.__class__ is annmodel.SomePBC: if obj.knowntype == object or obj.knowntype == ClassType: - return SimpleTypeRepr("%std.class", gen) + return SimpleTypeRepr("%std.class*", gen) + elif obj.__class__ is annmodel.SomeObject and \ + hasattr(obj, "is_type_of"): + return SimpleTypeRepr("%std.class*", gen) + elif obj.__class__ is annmodel.SomeObject: + return SimpleTypeRepr("%std.object*", gen) return None get = staticmethod(get) - def __init__(self, llvmname, gen): + def __init__(self, typename, gen): if debug: - print "SimpleTypeRepr: %s" % llvmname - self.name = llvmname + print "SimpleTypeRepr: %s" % typename + self.name = typename self.gen = gen self.definition = "" self.includefile = "" - def llvmname(self): + def typename(self): return self.name class PointerTypeRepr(TypeRepr): - def get(obj, gen): - return None - get = staticmethod(get) - - def __init__(self, type, gen): - self.type = type + def __init__(self, type_, gen): + self.type = type_ - def llvmname(self): + def typename(self): return self.type + "*" class ImpossibleValueRepr(TypeRepr): @@ -171,7 +179,6 @@ self.dependencies = sets.Set() self.includefile = "" - def llvmname(self): + def typename(self): return "void" - From sanxiyn at codespeak.net Tue Apr 5 07:01:16 2005 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 5 Apr 2005 07:01:16 +0200 (MEST) Subject: [pypy-svn] r10311 - in pypy/dist/pypy: module/sys2 tool Message-ID: <20050405050116.042CC27BAC@code1.codespeak.net> Author: sanxiyn Date: Tue Apr 5 07:01:16 2005 New Revision: 10311 Modified: pypy/dist/pypy/module/sys2/state.py pypy/dist/pypy/tool/hack.py pypy/dist/pypy/tool/uid.py Log: Restored metacircularity. (PyPy on PyPy) * pypy.tool.hack: don't do func_with_new_name inside PyPy * pypy.tool.uid: skip struct.calcsize('P') for now * pypy.module.sys2.state: unicodedata is required in pypy.objspace.std.unicodeobject (for unicode_to_decimal) See also my post to pypy-dev. Modified: pypy/dist/pypy/module/sys2/state.py ============================================================================== --- pypy/dist/pypy/module/sys2/state.py (original) +++ pypy/dist/pypy/module/sys2/state.py Tue Apr 5 07:01:16 2005 @@ -27,7 +27,7 @@ for fn in ['posix', 'nt', 'os2', 'mac', 'ce', 'riscos', 'math', '_codecs', 'array', 'select', '_random', '_sre', 'time', '_socket', 'errno', - 'binascii', + 'binascii', 'unicodedata', #'parser' ]: if fn not in builtin_modules: Modified: pypy/dist/pypy/tool/hack.py ============================================================================== --- pypy/dist/pypy/tool/hack.py (original) +++ pypy/dist/pypy/tool/hack.py Tue Apr 5 07:01:16 2005 @@ -1,9 +1,8 @@ import autopath - import new, sys -if sys.version_info >= (2, 3): - +if (sys.version_info >= (2, 3) and + not hasattr(sys, 'pypy_objspaceclass')): def func_with_new_name(func, newname): f = new.function(func.func_code, func.func_globals, newname, func.func_defaults, @@ -12,9 +11,7 @@ f.func_dict = {} f.func_dict.update(func.func_dict) return f - else: - def func_with_new_name(func, newname): return func Modified: pypy/dist/pypy/tool/uid.py ============================================================================== --- pypy/dist/pypy/tool/uid.py (original) +++ pypy/dist/pypy/tool/uid.py Tue Apr 5 07:01:16 2005 @@ -1,7 +1,10 @@ import struct -HUGEVAL = 256 ** struct.calcsize('P') +# This is temporary hack to run PyPy on PyPy +# until PyPy's struct module handle P format character. +#HUGEVAL = 256 ** struct.calcsize('P') +HUGEVAL = 0 def fixid(result): if result < 0: From pedronis at codespeak.net Tue Apr 5 14:10:45 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 5 Apr 2005 14:10:45 +0200 (CEST) Subject: [pypy-svn] r10317 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050405121045.2297B27B6E@code1.codespeak.net> Author: pedronis Date: Tue Apr 5 14:10:44 2005 New Revision: 10317 Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/translator/test/test_annrpython.py Log: somme support for deducing type info from type(.) is X pattern, with test Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Tue Apr 5 14:10:44 2005 @@ -139,7 +139,18 @@ raise Exception, 'type() called with more than one argument' if s_obj.is_constant(): return immutablevalue(type(s_obj.const)) - return SomeObject() + r = SomeObject() + # hack info + bk = getbookkeeper() + fn, block, i = bk.position_key + annotator = bk.annotator + op = block.operations[i] + assert op.opname == "simple_call" + assert len(op.args) == 2 + assert op.args[0] == Constant(type) + assert annotator.binding(op.args[1]) == s_obj + r.is_type_of = [op.args[1]] + return r def builtin_str(s_obj): return SomeString() Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Tue Apr 5 14:10:44 2005 @@ -595,6 +595,17 @@ assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc + def test_type_is(self): + class C(object): + pass + def f(x): + if type(x) is C: + return x + raise Exception + a = RPythonAnnotator() + s = a.build_types(f, [object]) + assert s.knowntype is C + def test_overrides(self): import sys excs = [] From pedronis at codespeak.net Tue Apr 5 15:46:13 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 5 Apr 2005 15:46:13 +0200 (CEST) Subject: [pypy-svn] r10318 - in pypy/dist/pypy: objspace/std translator Message-ID: <20050405134613.B889F27B3C@code1.codespeak.net> Author: pedronis Date: Tue Apr 5 15:46:13 2005 New Revision: 10318 Modified: pypy/dist/pypy/objspace/std/fake.py pypy/dist/pypy/translator/ann_override.py Log: annotation override for fake.wrap_exception Modified: pypy/dist/pypy/objspace/std/fake.py ============================================================================== --- pypy/dist/pypy/objspace/std/fake.py (original) +++ pypy/dist/pypy/objspace/std/fake.py Tue Apr 5 15:46:13 2005 @@ -17,6 +17,7 @@ # real-to-wrapped exceptions def wrap_exception(space): + """NOT_RPYTHON""" exc, value, tb = sys.exc_info() if exc is OperationError: raise exc, value, tb # just re-raise it Modified: pypy/dist/pypy/translator/ann_override.py ============================================================================== --- pypy/dist/pypy/translator/ann_override.py (original) +++ pypy/dist/pypy/translator/ann_override.py Tue Apr 5 15:46:13 2005 @@ -1,8 +1,13 @@ # overrides for annotation specific to PyPy codebase from pypy.annotation.bookkeeper import getbookkeeper +from pypy.annotation import model as annmodel + from pypy.interpreter import error from pypy.interpreter import pyframe +from pypy.objspace.std import fake +def hole(*args): + return annmodel.SomeImpossibleValue(benign=True) def ignore(*args): bk = getbookkeeper() @@ -17,4 +22,4 @@ install(pyframe.cpython_tb, ignore) install(error.OperationError.record_interpreter_traceback, ignore) - +install(fake.wrap_exception, hole) From pedronis at codespeak.net Tue Apr 5 16:15:02 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 5 Apr 2005 16:15:02 +0200 (CEST) Subject: [pypy-svn] r10320 - pypy/dist/pypy/annotation Message-ID: <20050405141502.351BA27B42@code1.codespeak.net> Author: pedronis Date: Tue Apr 5 16:15:01 2005 New Revision: 10320 Modified: pypy/dist/pypy/annotation/bookkeeper.py Log: whereami info for this assertion, which usually triggered by unhandled builtins Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Tue Apr 5 16:15:01 2005 @@ -224,7 +224,7 @@ # class information then pass func = func.im_func - assert isinstance(func, FunctionType), "expected function, got %r"%func + assert isinstance(func, FunctionType), "[%s] expected function, got %r" % (self.whereami(), func) # do we need to specialize this function in several versions? x = getattr(func, '_specialize_', False) #if not x: From pedronis at codespeak.net Tue Apr 5 16:53:07 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 5 Apr 2005 16:53:07 +0200 (CEST) Subject: [pypy-svn] r10326 - pypy/dist/pypy/objspace/std Message-ID: <20050405145307.27DD127B47@code1.codespeak.net> Author: pedronis Date: Tue Apr 5 16:53:07 2005 New Revision: 10326 Modified: pypy/dist/pypy/objspace/std/objspace.py Log: avoid unwrap being moved to W_Root Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Tue Apr 5 16:53:07 2005 @@ -4,7 +4,8 @@ from pypy.interpreter.typedef import get_unique_interplevel_subclass from pypy.interpreter.typedef import instantiate from pypy.tool.cache import Cache -from pypy.objspace.std.model import W_Object, W_ANY, MultiMethod, StdTypeModel +from pypy.objspace.std.model import W_Object, UnwrapError +from pypy.objspace.std.model import W_ANY, MultiMethod, StdTypeModel from pypy.objspace.std.multimethod import FailedToImplement from pypy.objspace.descroperation import DescrOperation from pypy.objspace.std import stdtypedef @@ -208,7 +209,10 @@ def unwrap(self, w_obj): if isinstance(w_obj, BaseWrappable): return w_obj - return w_obj.unwrap() + if isinstance(w_obj, W_Object): + return w_obj.unwrap() + raise UnwrapError, "cannot unwrap: %r" % w_obj + def newint(self, intval): return W_IntObject(self, intval) From sanxiyn at codespeak.net Tue Apr 5 19:28:04 2005 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 5 Apr 2005 19:28:04 +0200 (CEST) Subject: [pypy-svn] r10342 - pypy/dist/pypy/lib Message-ID: <20050405172804.B311927B5C@code1.codespeak.net> Author: sanxiyn Date: Tue Apr 5 19:28:04 2005 New Revision: 10342 Modified: pypy/dist/pypy/lib/README.regex Log: typo Modified: pypy/dist/pypy/lib/README.regex ============================================================================== --- pypy/dist/pypy/lib/README.regex (original) +++ pypy/dist/pypy/lib/README.regex Tue Apr 5 19:28:04 2005 @@ -1,7 +1,7 @@ Regular Expression related modules in PyPy History - Seo Sanghyeon, 2004-02-01 + Seo Sanghyeon, 2005-02-01 See also http://codespeak.net/pipermail/pypy-dev/2005q1/001794.html From sanxiyn at codespeak.net Tue Apr 5 19:30:55 2005 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 5 Apr 2005 19:30:55 +0200 (CEST) Subject: [pypy-svn] r10343 - pypy/dist/pypy/translator Message-ID: <20050405173055.6470827B5D@code1.codespeak.net> Author: sanxiyn Date: Tue Apr 5 19:30:55 2005 New Revision: 10343 Modified: pypy/dist/pypy/translator/transform.py Log: move comments around Modified: pypy/dist/pypy/translator/transform.py ============================================================================== --- pypy/dist/pypy/translator/transform.py (original) +++ pypy/dist/pypy/translator/transform.py Tue Apr 5 19:30:55 2005 @@ -11,21 +11,13 @@ from pypy.translator.annrpython import CannotSimplify from pypy.annotation import model as annmodel -# XXX: Lots of duplicated codes. Fix this! +def fully_annotated_blocks(self): + """Ignore blocked blocks.""" + for block, is_annotated in self.annotated.iteritems(): + if is_annotated: + yield block -# ---------------------------------------------------------------------- -# The 'call_args' operation is the strangest one. The meaning of its -# arguments is as follows: -# -# call_args(, , , , ...) -# -# The shape must be a constant object, which describes how the remaining -# arguments are regrouped. The class pypy.interpreter.argument.Arguments -# has a method 'fromshape(shape, list-of-args)' that reconstructs a complete -# Arguments instance from this information. Don't try to interpret the -# shape anywhere else, but for reference, it is a 3-tuple: -# (number-of-pos-arg, tuple-of-keyword-names, flag-presence-of-*-arg) -# ---------------------------------------------------------------------- +# XXX: Lots of duplicated codes. Fix this! # [a] * b # --> @@ -34,12 +26,6 @@ # --> # d = alloc_and_set(b, a) -def fully_annotated_blocks(self): - """Ignore blocked blocks.""" - for block, is_annotated in self.annotated.iteritems(): - if is_annotated: - yield block - def transform_allocate(self): """Transforms [a] * b to alloc_and_set(b, a) where b is int.""" for block in fully_annotated_blocks(self): @@ -90,6 +76,20 @@ # --> # e = simple_call(a, *b) +# ---------------------------------------------------------------------- +# The 'call_args' operation is the strangest one. The meaning of its +# arguments is as follows: +# +# call_args(, , , , ...) +# +# The shape must be a constant object, which describes how the remaining +# arguments are regrouped. The class pypy.interpreter.argument.Arguments +# has a method 'fromshape(shape, list-of-args)' that reconstructs a complete +# Arguments instance from this information. Don't try to interpret the +# shape anywhere else, but for reference, it is a 3-tuple: +# (number-of-pos-arg, tuple-of-keyword-names, flag-presence-of-*-arg) +# ---------------------------------------------------------------------- + ## REMOVED: now FlowObjSpace produces 'call_args' operations only ##def transform_simple_call(self): ## """Transforms call(a, (...), {}) to simple_call(a, ...)""" From tismer at codespeak.net Tue Apr 5 20:05:01 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 5 Apr 2005 20:05:01 +0200 (CEST) Subject: [pypy-svn] r10346 - pypy/dist/pypy/objspace/flow Message-ID: <20050405180501.6798427B5B@code1.codespeak.net> Author: tismer Date: Tue Apr 5 20:05:01 2005 New Revision: 10346 Modified: pypy/dist/pypy/objspace/flow/objspace.py Log: extended exception_match to unroll a right-hand tuple. Works fine so far. But Samuele seems to have a better idea, let's see :-) Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Tue Apr 5 20:05:01 2005 @@ -183,7 +183,14 @@ def exception_match(self, w_exc_type, w_check_class): self.executioncontext.recorder.crnt_block.exc_handler = True - return ObjSpace.exception_match(self, w_exc_type, w_check_class) + if not isinstance(self.unwrap(w_check_class), tuple): + # the simple case + return ObjSpace.exception_match(self, w_exc_type, w_check_class) + # checking a tuple of classes + for w_klass in self.unpacktuple(w_check_class): + if ObjSpace.exception_match(self, w_exc_type, w_klass): + return True + return False def getconstclass(space, w_cls): try: From hpk at codespeak.net Tue Apr 5 20:53:00 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 5 Apr 2005 20:53:00 +0200 (CEST) Subject: [pypy-svn] r10348 - pypy/dist/pypy/translator/test Message-ID: <20050405185300.2EE2D27B49@code1.codespeak.net> Author: hpk Date: Tue Apr 5 20:53:00 2005 New Revision: 10348 Modified: pypy/dist/pypy/translator/test/test_geninterp.py Log: move Test-class __init__ to setup_class() which is executed once per Testclass (it is not guaranteed that __init__() is invoked only once per class). Modified: pypy/dist/pypy/translator/test/test_geninterp.py ============================================================================== --- pypy/dist/pypy/translator/test/test_geninterp.py (original) +++ pypy/dist/pypy/translator/test/test_geninterp.py Tue Apr 5 20:53:00 2005 @@ -42,18 +42,18 @@ import copy_reg return copy_reg._reconstructor.func_code.co_name""" - def __init__(self): + def setup_class(cls): # simply compile snippets just once src = str(Source(snippet)) # truncate non-compilable stuff for now: p = src.index('Non compilable Functions') src = src[:p] + '\n' # put our ad into snippet - exec self.snippet_ad in snippet.__dict__ - src += self.snippet_ad + exec cls.snippet_ad in snippet.__dict__ + src += cls.snippet_ad # just in case of trouble, we produce a tempfile ini = translate_as_module(src, tmpname = str(udir.join("_geninterp_test.py"))) - self.w_glob = ini(self.space) + cls.w_glob = ini(cls.space) def build_interpfunc(self, func, *morefuncs): # we ignore morefuncs, since they live in snippets From sanxiyn at codespeak.net Tue Apr 5 20:53:05 2005 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 5 Apr 2005 20:53:05 +0200 (CEST) Subject: [pypy-svn] r10349 - in pypy/dist/pypy: objspace objspace/flow tool translator translator/genc Message-ID: <20050405185305.E149A27B55@code1.codespeak.net> Author: sanxiyn Date: Tue Apr 5 20:53:05 2005 New Revision: 10349 Modified: pypy/dist/pypy/objspace/flow/specialcase.py pypy/dist/pypy/objspace/trace.py pypy/dist/pypy/tool/traceop.py pypy/dist/pypy/translator/genc/t_pyobj.py pypy/dist/pypy/translator/geninterplevel.py pypy/dist/pypy/translator/transform.py Log: 2.2 compatibilities. Modified: pypy/dist/pypy/objspace/flow/specialcase.py ============================================================================== --- pypy/dist/pypy/objspace/flow/specialcase.py (original) +++ pypy/dist/pypy/objspace/flow/specialcase.py Tue Apr 5 20:53:05 2005 @@ -26,5 +26,5 @@ # space.specialcases[fn] = sc_normalize_exception if space.do_imports_immediately: space.specialcases[__import__] = sc_import - for opname in ['lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_']: + for opname in ['lt', 'le', 'eq', 'ne', 'gt', 'ge']: space.specialcases[getattr(operator, opname)] = sc_operator Modified: pypy/dist/pypy/objspace/trace.py ============================================================================== --- pypy/dist/pypy/objspace/trace.py (original) +++ pypy/dist/pypy/objspace/trace.py Tue Apr 5 20:53:05 2005 @@ -165,7 +165,8 @@ # Remove list for name in ["wrap", "unwrap"]: - operations.pop(name, None) + if name in operations: + del operations[name] return operations def create_trace_space(space = None, operations = None): Modified: pypy/dist/pypy/tool/traceop.py ============================================================================== --- pypy/dist/pypy/tool/traceop.py (original) +++ pypy/dist/pypy/tool/traceop.py Tue Apr 5 20:53:05 2005 @@ -1,6 +1,12 @@ +from __future__ import generators import autopath +def reversed(seq): + length = len(seq) + for index in range(length-1, -1, -1): + yield seq[index] + class Stack(list): push = list.append @@ -147,7 +153,7 @@ self.indent_state.pop() def get_last_frame(self): - for c, t, f in self.indent_state[::-1]: + for c, t, f in reversed(self.indent_state): if f is not None: return f Modified: pypy/dist/pypy/translator/genc/t_pyobj.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_pyobj.py (original) +++ pypy/dist/pypy/translator/genc/t_pyobj.py Tue Apr 5 20:53:05 2005 @@ -433,6 +433,8 @@ source = """if 1: import zlib, marshal exec marshal.loads(zlib.decompress(%r))""" % small + # Python 2.2 SyntaxError without newline: Bug #501622 + source += '\n' co = compile(source, self.genc.modname, 'exec') del source return marshal.dumps(co) Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Tue Apr 5 20:53:05 2005 @@ -568,7 +568,6 @@ def nameof_classobj(self, cls): printable_name = cls.__name__ - gaga = "ssertion" in printable_name if cls.__doc__ and cls.__doc__.lstrip().startswith('NOT_RPYTHON'): #raise Exception, "%r should never be reached" % (cls,) print "skipped class", printable_name @@ -591,11 +590,6 @@ # metaclass = 'space.w_classobj' basenames = [self.nameof(base) for base in cls.__bases__] - if gaga: - print cls - print cls.__module__ - print type(cls) - 1/0 def initclassobj(): content = cls.__dict__.items() content.sort() @@ -1480,7 +1474,6 @@ # and now use the members of the dict """ # create something like a module - if "_formatting" in sourcetext: tmpname="/tmp/look.py" if filename is None: code = py.code.Source(sourcetext).compile() else: Modified: pypy/dist/pypy/translator/transform.py ============================================================================== --- pypy/dist/pypy/translator/transform.py (original) +++ pypy/dist/pypy/translator/transform.py Tue Apr 5 20:53:05 2005 @@ -5,6 +5,8 @@ completed. """ +from __future__ import generators + import types from pypy.objspace.flow.model import SpaceOperation from pypy.objspace.flow.model import Variable, Constant, Block, Link From sanxiyn at codespeak.net Tue Apr 5 21:19:01 2005 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 5 Apr 2005 21:19:01 +0200 (CEST) Subject: [pypy-svn] r10350 - pypy/dist/pypy Message-ID: <20050405191901.8E01E27B3E@code1.codespeak.net> Author: sanxiyn Date: Tue Apr 5 21:19:01 2005 New Revision: 10350 Added: pypy/dist/pypy/README.22 Log: Document 2.2 compatibility Added: pypy/dist/pypy/README.22 ============================================================================== --- (empty file) +++ pypy/dist/pypy/README.22 Tue Apr 5 21:19:01 2005 @@ -0,0 +1,66 @@ +CPython version 2.2 compatibility of PyPy + +History + Seo Sanghyeon, 2005-04-06 (r10349) + +First, you should use CPython version 2.3 or greater to run PyPy. +Running PyPy on top of 2.2 is definitely NOT supported. + +That said, there are some supports in the code to run PyPy +on top of 2.2, most notably "from __future__ import generators". +This document lists some of known problems. + +* opcode.py +opcode module is new in 2.3, and is used in the interpreter core. +Just copying this file from 2.3 should work. Without this, PyPy +won't even start. + +* boolean +In 2.2, bool is a builtin_function_or_method, not a type. This breaks +anything boolean related in the annotator. + +* func_with_new_name +pypy.tool.hack has a code to rename already defined function, which +is disabled for 2.2. You lose descriptive names like binop_xxx_impl, +and some gateway tests checking function name will fail. + +* operator.is_ +In 2.2, operator module doesn't include "is_(a, b)", which should be +equivalent to "a is b". This causes some problem in the flow objspace. + +* issubclass +2.2 doesn't allow tuple as the second argument to issubclass. This +affects the annotator. + +* extended slice +2.2 can't do extended slice -- the optional third argument in slicing +syntax. This affects the trace objspace. + +* C module +Anything using new-in-2.3 features of borrowed C modules won't work. +For example, socket.settimeout. + +* C API +All genc tests will fail due to difference between Python C headers. + +* universal newline +Universal newline support is new in 2.3. This lets tests for builtin +module testing this feature to fail. + +* int long unification +In 2.2, int() will raise OverflowError if argument is too large to +convert to int. In 2.3, this silently returns long. Tests explicitly +testing this does fail. + +* generators +Files using generators have needed __future__ import at the top +of the file. This should cause no problem. + +* exec without newline +It is a SyntaxError to exec string without trailing newline in 2.2. +This is CPython bug #501622. All known instances of this is worked +around. + +* misc features +"string in string" doesn't work in 2.2. dict.pop and dict.fromkeys +is new in 2.3. These have caused problems in the past. From tismer at codespeak.net Tue Apr 5 22:02:50 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 5 Apr 2005 22:02:50 +0200 (CEST) Subject: [pypy-svn] r10351 - in pypy/dist/pypy: interpreter interpreter/test module/builtin module/sys2 objspace/std translator Message-ID: <20050405200250.B404527B4B@code1.codespeak.net> Author: tismer Date: Tue Apr 5 22:02:50 2005 New Revision: 10351 Modified: pypy/dist/pypy/interpreter/gateway.py pypy/dist/pypy/interpreter/pyframe.py pypy/dist/pypy/interpreter/pyopcode.py pypy/dist/pypy/interpreter/test/test_appinterp.py pypy/dist/pypy/module/builtin/app_complex.py pypy/dist/pypy/module/builtin/app_descriptor.py pypy/dist/pypy/module/builtin/app_functional.py pypy/dist/pypy/module/builtin/app_help.py pypy/dist/pypy/module/builtin/app_inspect.py pypy/dist/pypy/module/builtin/app_io.py pypy/dist/pypy/module/builtin/operation.py pypy/dist/pypy/module/sys2/app.py pypy/dist/pypy/objspace/std/dictobject.py pypy/dist/pypy/objspace/std/dicttype.py pypy/dist/pypy/objspace/std/floatobject.py pypy/dist/pypy/objspace/std/listobject.py pypy/dist/pypy/objspace/std/listtype.py pypy/dist/pypy/objspace/std/objecttype.py pypy/dist/pypy/objspace/std/sliceobject.py pypy/dist/pypy/objspace/std/slicetype.py pypy/dist/pypy/objspace/std/stringobject.py pypy/dist/pypy/objspace/std/tupleobject.py pypy/dist/pypy/objspace/std/typeobject.py pypy/dist/pypy/translator/geninterplevel.py Log: translated almost all possible code pieces to interp level. reversed the change to applevelinterp in the source files. applevel is now a function that figures out whether it can translate the code or not. All code snippets have been inspected for translatability and marked with NOT_RPYTHON if necessary. Some can be easily enabled, some are hard (using yield) Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Tue Apr 5 22:02:50 2005 @@ -479,7 +479,7 @@ # and now for something completely different ... # -class applevel: +class ApplevelClass: """A container for app-level source code that should be executed as a module in the object space; interphook() builds a static interp-level function that invokes the callable with the given @@ -496,7 +496,7 @@ self.code = compile(source, filename, 'exec') def getwdict(self, space): - return space.loadfromcache(self, applevel._builddict, + return space.loadfromcache(self, self.__class__._builddict, space._gatewaycache) def buildmodule(self, space, name='applevel'): @@ -536,7 +536,7 @@ def _freeze_(self): return True # hint for the annotator: applevel instances are constants -class applevelinterp(applevel): +class ApplevelInterpClass(ApplevelClass): """ similar to applevel, but using translation to interp-level. """ NOT_RPYTHON_ATTRIBUTES = [] @@ -548,10 +548,6 @@ self.modname = modname self.do_imports = do_imports - def getwdict(self, space): - return space.loadfromcache(self, applevelinterp._builddict, - space._gatewaycache) - def _builddict(self, space): "NOT_RPYTHON" from pypy.translator.geninterplevel import translate_as_module @@ -560,10 +556,20 @@ w_glob = initfunc(space) return w_glob +def applevel(source, filename = None, + modname = 'applevelinterp', do_imports=False): + # look at the first three lines + first = source.split("\n", 3)[:3] + klass = ApplevelInterpClass + for line in first: + if "NOT_RPYTHON" in line: + klass = ApplevelClass + return klass(source, filename, modname, do_imports) + # comment this out to check against applevel without translation -##applevelinterp = applevel +##ApplevelInterpClass = ApplevelClass -def appdef(source, applevel=applevel): +def appdef(source, applevel=ApplevelClass): """ NOT_RPYTHON: build an app-level helper function, like for example: myfunc = appdef('''myfunc(x, y): return x+y @@ -583,13 +589,12 @@ app2interp = appdef # backward compatibility -# the following two will probably get merged into one -class applevel_temp(applevel): +class applevel_temp(ApplevelClass): hidden_applevel = False def getwdict(self, space): return self._builddict(space) # no cache -class applevelinterp_temp(applevelinterp): +class applevelinterp_temp(ApplevelInterpClass): hidden_applevel = False def getwdict(self, space): return self._builddict(space) # no cache Modified: pypy/dist/pypy/interpreter/pyframe.py ============================================================================== --- pypy/dist/pypy/interpreter/pyframe.py (original) +++ pypy/dist/pypy/interpreter/pyframe.py Tue Apr 5 22:02:50 2005 @@ -419,7 +419,7 @@ import types, __builtin__ __builtin__._classobj = types.ClassType -app = gateway.applevelinterp(''' +app = gateway.applevel(''' def normalize_exception(etype, value, tb): """Normalize an (exc_type, exc_value) pair: exc_value will be an exception instance and exc_type its class. Modified: pypy/dist/pypy/interpreter/pyopcode.py ============================================================================== --- pypy/dist/pypy/interpreter/pyopcode.py (original) +++ pypy/dist/pypy/interpreter/pyopcode.py Tue Apr 5 22:02:50 2005 @@ -740,6 +740,7 @@ # class above. app = gateway.applevel(r''' + # NOT_RPYTHON (but should be, soon) import sys Modified: pypy/dist/pypy/interpreter/test/test_appinterp.py ============================================================================== --- pypy/dist/pypy/interpreter/test/test_appinterp.py (original) +++ pypy/dist/pypy/interpreter/test/test_appinterp.py Tue Apr 5 22:02:50 2005 @@ -1,6 +1,6 @@ import py -from pypy.interpreter.gateway import appdef, applevel, applevelinterp +from pypy.interpreter.gateway import appdef, ApplevelClass, ApplevelInterpClass def test_execwith_novars(space): val = space.appexec([], """ @@ -70,7 +70,7 @@ w_result = app(space) assert space.eq_w(w_result, space.wrap(42)) -def test_applevel_functions(space, applevel=applevel): +def test_applevel_functions(space, applevel=ApplevelClass): app = applevel(''' def f(x, y): return x-y @@ -82,9 +82,9 @@ assert space.eq_w(w_res, space.wrap(-9)) def test_applevelinterp_functions(space): - test_applevel_functions(space, applevel=applevelinterp) + test_applevel_functions(space, applevel=ApplevelInterpClass) -def test_applevel_class(space, applevel=applevel): +def test_applevel_class(space, applevel=ApplevelClass): app = applevel(''' class C: clsattr = 42 @@ -99,7 +99,7 @@ assert space.eq_w(w_clsattr, space.wrap(17)) def test_applevelinterp_class(space): - test_applevel_class(space, applevel=applevelinterp) + test_applevel_class(space, applevel=ApplevelInterpClass) def app_test_something_at_app_level(): x = 2 Modified: pypy/dist/pypy/module/builtin/app_complex.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_complex.py (original) +++ pypy/dist/pypy/module/builtin/app_complex.py Tue Apr 5 22:02:50 2005 @@ -1,3 +1,4 @@ +# NOT_RPYTHON yet """ Plain Python definition of the 'complex' type. """ Modified: pypy/dist/pypy/module/builtin/app_descriptor.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_descriptor.py (original) +++ pypy/dist/pypy/module/builtin/app_descriptor.py Tue Apr 5 22:02:50 2005 @@ -1,3 +1,5 @@ +# NOT_RPYTHON -- there is a problem with initialising a property's __doc__ +# XXX but it *should* work """ Plain Python definition of the builtin descriptors. """ @@ -27,10 +29,11 @@ def __get__(self, obj, klass=None): if klass is None: klass = type(obj) - def newfunc(*args, **kwargs): - return self._f(klass, *args, **kwargs) - return newfunc + return MethodType(self._f, klass) +def dummy(): pass +MethodType = type(dummy.__get__(42)) +del dummy # It's difficult to have a class that has both a docstring and a slot called # '__doc__', but not impossible... Modified: pypy/dist/pypy/module/builtin/app_functional.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_functional.py (original) +++ pypy/dist/pypy/module/builtin/app_functional.py Tue Apr 5 22:02:50 2005 @@ -1,3 +1,4 @@ +# NOT_RPYTHON because yield is used """ Plain Python definition of the builtin functions oriented towards functional programming. Modified: pypy/dist/pypy/module/builtin/app_help.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_help.py (original) +++ pypy/dist/pypy/module/builtin/app_help.py Tue Apr 5 22:02:50 2005 @@ -1,3 +1,5 @@ +# NOT_RPYTHON - because print is used +# XXX work on enabling print for flow space """ Plain Python definition of the builtin interactive help functions. """ Modified: pypy/dist/pypy/module/builtin/app_inspect.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_inspect.py (original) +++ pypy/dist/pypy/module/builtin/app_inspect.py Tue Apr 5 22:02:50 2005 @@ -102,33 +102,6 @@ return local_names import types - def _classdir(klass): - """Return a dict of the accessible attributes of class/type klass. - - This includes all attributes of klass and all of the - base classes recursively. - - The values of this dict have no meaning - only the keys have - meaning. - """ - Dict = {} - try: - Dict.update(klass.__dict__) - except AttributeError: pass - try: - # XXX - Use of .__mro__ would be suggested, if the existance - # of that attribute could be guarranted. - bases = klass.__bases__ - except AttributeError: pass - else: - try: - #Note that since we are only interested in the keys, - # the order we merge classes is unimportant - for base in bases: - Dict.update(_classdir(base)) - except TypeError: pass - return Dict - #End _classdir obj = args[0] @@ -169,3 +142,30 @@ result = Dict.keys() result.sort() return result + +def _classdir(klass): + """Return a dict of the accessible attributes of class/type klass. + + This includes all attributes of klass and all of the + base classes recursively. + + The values of this dict have no meaning - only the keys have + meaning. + """ + Dict = {} + try: + Dict.update(klass.__dict__) + except AttributeError: pass + try: + # XXX - Use of .__mro__ would be suggested, if the existance + # of that attribute could be guarranted. + bases = klass.__bases__ + except AttributeError: pass + else: + try: + #Note that since we are only interested in the keys, + # the order we merge classes is unimportant + for base in bases: + Dict.update(_classdir(base)) + except TypeError: pass + return Dict Modified: pypy/dist/pypy/module/builtin/app_io.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_io.py (original) +++ pypy/dist/pypy/module/builtin/app_io.py Tue Apr 5 22:02:50 2005 @@ -1,3 +1,4 @@ +# NOT_RPYTHON (but maybe soon) """ Plain Python definition of the builtin I/O-related functions. """ Modified: pypy/dist/pypy/module/builtin/operation.py ============================================================================== --- pypy/dist/pypy/module/builtin/operation.py (original) +++ pypy/dist/pypy/module/builtin/operation.py Tue Apr 5 22:02:50 2005 @@ -71,7 +71,8 @@ # ____________________________________________________________ -app = gateway.applevel(''' +iter_sentinel = gateway.applevel(''' + # NOT_RPYTHON -- uses yield # App-level implementation of the iter(callable,sentinel) operation. def iter_generator(callable_, sentinel): @@ -86,8 +87,7 @@ raise TypeError, 'iter(v, w): v must be callable' return iter_generator(callable_, sentinel) -''') -iter_sentinel = app.interphook("iter_sentinel") +''').interphook("iter_sentinel") def iter(space, w_collection_or_callable, w_sentinel=NoneNotWrapped): if w_sentinel is None: Modified: pypy/dist/pypy/module/sys2/app.py ============================================================================== --- pypy/dist/pypy/module/sys2/app.py (original) +++ pypy/dist/pypy/module/sys2/app.py Tue Apr 5 22:02:50 2005 @@ -1,3 +1,6 @@ +# NOT_RPYTHON -- flowing results in +# AttributeError: << 'FlowObjSpace' object has no attribute 'w_AttributeError' +# XXX investigate! """ The 'sys' module. """ Modified: pypy/dist/pypy/objspace/std/dictobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/dictobject.py (original) +++ pypy/dist/pypy/objspace/std/dictobject.py Tue Apr 5 22:02:50 2005 @@ -242,7 +242,7 @@ else: return w_default -app = gateway.applevelinterp(''' +app = gateway.applevel(''' def dictstr(currently_in_repr, d): # Now we only handle one implementation of dicts, this one. # The fix is to move this to dicttype.py, and do a Modified: pypy/dist/pypy/objspace/std/dicttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/dicttype.py (original) +++ pypy/dist/pypy/objspace/std/dicttype.py Tue Apr 5 22:02:50 2005 @@ -21,7 +21,7 @@ # default application-level implementations for some operations # gateway is imported in the stdtypedef module -app = gateway.applevelinterp(''' +app = gateway.applevel(''' def update(d, o): for k in o.keys(): Modified: pypy/dist/pypy/objspace/std/floatobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/floatobject.py (original) +++ pypy/dist/pypy/objspace/std/floatobject.py Tue Apr 5 22:02:50 2005 @@ -56,7 +56,7 @@ def float_w__Float(space, w_float): return w_float.floatval -app = gateway.applevelinterp(''' +app = gateway.applevel(''' def repr__Float(f): r = "%.17g"%f for c in r: Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Tue Apr 5 22:02:50 2005 @@ -305,7 +305,7 @@ items[start+i*step] = sequence2[i] return space.w_None -app = gateway.applevelinterp(""" +app = gateway.applevel(""" def listrepr(currently_in_repr, l): 'The app-level part of repr().' list_id = id(l) Modified: pypy/dist/pypy/objspace/std/listtype.py ============================================================================== --- pypy/dist/pypy/objspace/std/listtype.py (original) +++ pypy/dist/pypy/objspace/std/listtype.py Tue Apr 5 22:02:50 2005 @@ -15,15 +15,15 @@ list_reversed = MultiMethod('__reversed__', 1) # gateway is imported in the stdtypedef module -app = gateway.applevel(''' +list_reversed__ANY = gateway.applevel(''' + # NOT_RPYTHON -- uses yield def reversed(lst): for index in range(len(lst)-1, -1, -1): yield lst[index] -''') +''').interphook('reversed') -list_reversed__ANY = app.interphook('reversed') register_all(vars(), globals()) # ____________________________________________________________ Modified: pypy/dist/pypy/objspace/std/objecttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/objecttype.py (original) +++ pypy/dist/pypy/objspace/std/objecttype.py Tue Apr 5 22:02:50 2005 @@ -61,7 +61,7 @@ w_proto = space.wrap(proto) return reduce_1(space, w_obj, w_proto) -app = gateway.applevelinterp(r''' +app = gateway.applevel(r''' def reduce_1(obj, proto): import copy_reg return copy_reg._reduce_ex(obj, proto) Modified: pypy/dist/pypy/objspace/std/sliceobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/sliceobject.py (original) +++ pypy/dist/pypy/objspace/std/sliceobject.py Tue Apr 5 22:02:50 2005 @@ -24,7 +24,7 @@ registerimplementation(W_SliceObject) -repr__Slice = gateway.applevelinterp(""" +repr__Slice = gateway.applevel(""" def repr__Slice(aslice): return 'slice(%r, %r, %r)' % (aslice.start, aslice.stop, aslice.step) """).interphook("repr__Slice") Modified: pypy/dist/pypy/objspace/std/slicetype.py ============================================================================== --- pypy/dist/pypy/objspace/std/slicetype.py (original) +++ pypy/dist/pypy/objspace/std/slicetype.py Tue Apr 5 22:02:50 2005 @@ -7,7 +7,7 @@ # default application-level implementations for some operations # gateway is imported in the stdtypedef module -app = gateway.applevelinterp(""" +app = gateway.applevel(""" def indices(slice, length): # this is used internally, analogous to CPython's PySlice_GetIndicesEx Modified: pypy/dist/pypy/objspace/std/stringobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/stringobject.py (original) +++ pypy/dist/pypy/objspace/std/stringobject.py Tue Apr 5 22:02:50 2005 @@ -964,7 +964,7 @@ "of length %d found"%(len(w_str._value),))) return space.wrap(ord(u_str)) -app = gateway.applevelinterp(r''' +app = gateway.applevel(r''' import codecs def str_translate__String_ANY_ANY(s, table, deletechars=''): @@ -1010,7 +1010,7 @@ ''') # this one should do the import of _formatting: -app2 = gateway.applevelinterp(''' +app2 = gateway.applevel(''' def mod__String_ANY(format, values): import _formatting Modified: pypy/dist/pypy/objspace/std/tupleobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/tupleobject.py (original) +++ pypy/dist/pypy/objspace/std/tupleobject.py Tue Apr 5 22:02:50 2005 @@ -112,7 +112,7 @@ # No more items to compare -- compare sizes return space.newbool(len(items1) > len(items2)) -app = gateway.applevelinterp(""" +app = gateway.applevel(""" def repr__Tuple(t): if len(t) == 1: return "(" + repr(t[0]) + ",)" Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Tue Apr 5 22:02:50 2005 @@ -277,7 +277,7 @@ # ____________________________________________________________ -abstract_mro = gateway.applevelinterp(""" +abstract_mro = gateway.applevel(""" def abstract_mro(klass): # abstract/classic mro mro = [] Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Tue Apr 5 22:02:50 2005 @@ -50,8 +50,8 @@ self.initcode.append1( 'def %s(expr):\n' ' dic = space.newdict([])\n' - ' space.exec_("import types", dic, dic)\n' - ' return space.eval(expr, dic, dic)' % unique) + ' space.exec_("", dic, dic)\n' + ' return space.eval(expr, dic, dic)' % (unique, )) self.initcode.append1('%s = %s(%r)' % (name, unique, expr)) return name @@ -120,6 +120,11 @@ # catching all builtins in advance, to avoid problems # with modified builtins + + # add a dummy _issubtype() to builtins + def _issubtype(cls1, cls2): + raise TypeError, "this dummy should *not* be reached" + __builtin__._issubtype = _issubtype class bltinstub: def __init__(self, name): @@ -261,6 +266,12 @@ if goto <= blocknum[block]: yield 'continue' + def register_early(self, obj, name): + # this was needed for recursive lists. + # note that self.latercode led to too late initialization. + key = Constant(obj).key + self.rpynames[key] = name + def nameof(self, obj, debug=None, namehint=None): key = Constant(obj).key try: @@ -590,6 +601,7 @@ # metaclass = 'space.w_classobj' basenames = [self.nameof(base) for base in cls.__bases__] + def initclassobj(): content = cls.__dict__.items() content.sort() @@ -658,15 +670,15 @@ complex:'space.wrap(types.ComplexType)', unicode:'space.w_unicode', file: (eval_helper, 'file', 'file'), - type(None): (eval_helper, 'NoneType', 'types.NoneType'), - CodeType: (eval_helper, 'code', 'types.CodeType'), + type(None): (eval_helper, 'NoneType', 'type(None)'), + CodeType: (eval_helper, 'code', 'type((lambda:42).func_code)'), ModuleType: (eval_helper, 'ModuleType', 'types.ModuleType'), - xrange: (eval_helper, 'xrange', 'types.XRangeType'), + xrange: (eval_helper, 'xrange', 'xrange'), ##r_int: 'space.w_int', ##r_uint: 'space.w_int', - type(len): (eval_helper, 'FunctionType', 'types.FunctionType'), + type(len): (eval_helper, 'FunctionType', 'type(lambda:42)'), # type 'method_descriptor': # XXX small problem here: # XXX with space.eval, we get @@ -678,15 +690,17 @@ # type 'getset_descriptor': # XXX here we get , # while eval gives us - type(type.__dict__['__dict__']): (eval_helper, "getset_descriptor", '\ - ' "type(type.__dict__[\'__dict__\'])"), + type(type.__dict__['__dict__']): (eval_helper, "getset_descriptor", + "type(type.__dict__[\'__dict__\'])"), # type 'member_descriptor': # XXX this does not work in eval! # type(type.__dict__['__basicsize__']): "cannot eval type(type.__dict__['__basicsize__'])", # XXX there seems to be no working support for member descriptors ??? type(types.GeneratorType.gi_frame): - (eval_helper, "member_descriptor", 'type(types.GeneratorType.gi_frame)'), + (eval_helper, "member_descriptor", 'type(property.fdel)'), types.ClassType: 'space.w_classobj', + types.MethodType: (eval_helper, "instancemethod", + "type((lambda:42).__get__(42))"), } def nameof_type(self, cls): @@ -697,7 +711,8 @@ return ret assert cls.__module__ != '__builtin__', ( "built-in class %r not found in typename_mapping " - "while compiling %s" % (cls, self.currentfunc.__name__)) + "while compiling %s" % (cls, self.currentfunc and + self.currentfunc.__name__ or "*no function at all*")) return self.nameof_classobj(cls) def nameof_tuple(self, tup): @@ -709,14 +724,14 @@ def nameof_list(self, lis): name = self.uniquename('g%dlist' % len(lis)) - def initlist(): - for i in range(len(lis)): - item = self.nameof(lis[i]) - yield 'space.setitem(%s, %s, %s);' % ( - name, self.nameof(i), item) - self.initcode.append1('%s = space.newlist([space.w_None])' % (name,)) - self.initcode.append1('%s = space.mul(%s, %s)' % (name, name, self.nameof(len(lis)))) - self.later(initlist()) + # note that self.latercode led to too late initialization. + self.register_early(lis, name) + self.initcode.append('%s = space.newlist([space.w_None])' % (name,)) + self.initcode.append('%s = space.mul(%s, %s)' % (name, name, self.nameof(len(lis)))) + for i in range(len(lis)): + item = self.nameof(lis[i]) + self.initcode.append('space.setitem(%s, %s, %s);' % ( + name, self.nameof(i), item)) return name def nameof_dict(self, dic): @@ -724,12 +739,11 @@ assert '__builtins__' not in dic, 'Seems to be the globals of %s' % ( dic.get('__name__', '?'),) name = self.uniquename('g%ddict' % len(dic)) - def initdict(): - for k in dic: - yield ('space.setitem(%s, %s, %s)'%( - name, self.nameof(k), self.nameof(dic[k]))) - self.initcode.append1('%s = space.newdict([])' % (name,)) - self.later(initdict()) + self.register_early(dic, name) + self.initcode.append('%s = space.newdict([])' % (name,)) + for k in dic: + self.initcode.append('space.setitem(%s, %s, %s)'%( + name, self.nameof(k), self.nameof(dic[k]))) return name # strange prebuilt instances below, don't look too closely @@ -825,7 +839,7 @@ # make sure it is not rendered again key = Constant(doc).key self.rpynames[key] = "__doc__" - self.initcode.append1("__doc__ = space.wrap(globals()['__doc__'])") + self.initcode.append("__doc__ = space.wrap('__doc__')") # header """def initmodule(space):""" print >> f, self.RPY_INIT_HEADER % info @@ -1474,10 +1488,15 @@ # and now use the members of the dict """ # create something like a module + # the following code will be removed when app_descriptor works + ##print 80*"T", sourcetext + if "class property" in sourcetext: + # debugging app_descriptor.py + tmpname = "/tmp/look.py" if filename is None: code = py.code.Source(sourcetext).compile() else: - code = compile(sourcetext, filename, 'exec') + code = compile(sourcetext, filename, 'exec') dic = {'__name__': modname} exec code in dic del dic['__builtins__'] From tismer at codespeak.net Tue Apr 5 22:08:52 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 5 Apr 2005 22:08:52 +0200 (CEST) Subject: [pypy-svn] r10352 - pypy/dist/pypy/interpreter Message-ID: <20050405200852.EB02D27B4B@code1.codespeak.net> Author: tismer Date: Tue Apr 5 22:08:52 2005 New Revision: 10352 Modified: pypy/dist/pypy/interpreter/gateway.py Log: cosmetics Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Tue Apr 5 22:08:52 2005 @@ -566,7 +566,7 @@ klass = ApplevelClass return klass(source, filename, modname, do_imports) -# comment this out to check against applevel without translation +# uncomment this to check against applevel without translation ##ApplevelInterpClass = ApplevelClass def appdef(source, applevel=ApplevelClass): From cfbolz at codespeak.net Wed Apr 6 01:48:03 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Wed, 6 Apr 2005 01:48:03 +0200 (CEST) Subject: [pypy-svn] r10353 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050405234803.ECDB027B53@code1.codespeak.net> Author: cfbolz Date: Wed Apr 6 01:48:03 2005 New Revision: 10353 Modified: pypy/dist/pypy/translator/llvm/autopath.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/genllvm.py pypy/dist/pypy/translator/llvm/test/autopath.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: The Big Rewrite of the code generation mess in FuncRepr. Should be much cleaner now (and make the implementation of raising exceptions possible). Modified: pypy/dist/pypy/translator/llvm/autopath.py ============================================================================== --- pypy/dist/pypy/translator/llvm/autopath.py (original) +++ pypy/dist/pypy/translator/llvm/autopath.py Wed Apr 6 01:48:03 2005 @@ -46,10 +46,8 @@ while checkpaths: orig = checkpaths.pop() - fullorig = os.path.join(os.path.realpath(orig), '') - if fullorig.startswith(pypy_root): - if os.path.exists(os.path.join(fullorig, '__init__.py')): - sys.path.remove(orig) + if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Wed Apr 6 01:48:03 2005 @@ -99,6 +99,7 @@ remove_double_links(self.translator, self.graph) self.get_bbs() self.se = False + self.lblocks = [] def setup(self): if self.se: @@ -123,173 +124,23 @@ self.same_origin_block = [False] * len(self.allblocks) def build_bbs(self): - checkgraph(self.graph) - a = self.annotator for number, pyblock in enumerate(self.allblocks): - if debug: - print "#" * 20, self.graph.name, number, pyblock - pyblock = self.allblocks[number] is_tryblock = isinstance(pyblock.exitswitch, Constant) and \ pyblock.exitswitch.value == last_exception if is_tryblock: - regularblock = "block%i" % self.blocknum[ - pyblock.exits[0].target] - exceptblock = "block%i.except" % self.blocknum[pyblock] - lblock = llvmbc.TryBasicBlock("block%i" % number, - regularblock, exceptblock) + block = TryBlockRepr(self, pyblock, self.gen) + elif pyblock == self.graph.returnblock: + block = ReturnBlockRepr(self, pyblock, self.gen) + elif pyblock == self.graph.exceptblock: + block = ExceptBlockRepr(self, pyblock, self.gen) else: - lblock = llvmbc.BasicBlock("block%i" % number) - if number == 0: - self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) - else: - self.llvm_func.basic_block(lblock) - if is_tryblock: - self.build_exc_blocks(number, pyblock) - #Create Phi nodes - incoming_links = [] - def visit(node): - if isinstance(node, Link) and node.target == pyblock: - incoming_links.append(node) - traverse(visit, self.graph) - print "***** phi nodes *****" - if len(incoming_links) != 0: - for i, arg in enumerate(pyblock.inputargs): - print "___", i, arg, "___", - l_arg = self.gen.get_repr(arg) - l_values = [self.gen.get_repr(l.args[i]) - for l in incoming_links] - for j in range(len(l_values)): - print j, l_values[j].llvmtype(), l_arg.llvmtype() - if l_values[j].llvmtype() != l_arg.llvmtype(): - try: - l_values[j] = \ - l_values[j].alt_types[l_arg.llvmtype()] - except KeyError: - pass - self.dependencies.add(l_arg) - self.dependencies.update(l_values) - lblock.phi(l_arg, l_values, - ["%%block%i" % self.blocknum[l.prevblock] - for l in incoming_links]) - #Handle SpaceOperations - for opnumber, op in enumerate(pyblock.operations): - if opnumber == len(pyblock.operations) - 1 and is_tryblock: - lblock.last_op = True - l_target = self.gen.get_repr(op.result) - self.dependencies.add(l_target) - l_arg0 = self.gen.get_repr(op.args[0]) - self.dependencies.add(l_arg0) - l_op = getattr(l_arg0, "op_" + op.opname, None) - if l_op is not None: - l_op(l_target, op.args, lblock, self) - #XXX need to find more elegant solution for this special case - elif op.opname == "newtuple": - l_target.type.t_op_newtuple(l_target, op.args, - lblock, self) - elif op.opname in INTRINSIC_OPS: - l_args = [self.gen.get_repr(arg) for arg in op.args[1:]] - self.dependencies.update(l_args) - lblock.spaceop(l_target, op.opname, [l_arg0] + l_args) - else: - s = "SpaceOperation %s not supported. Target: %s " \ - "Args: %s " % (op.opname, l_target, op.args) + \ - "Dispatched on: %s" % l_arg0 - - raise CompileError, s - # XXX: If a variable is passed to another block and has a different - # type there, we have to make the cast in this block since the phi - # instructions in the next block cannot be preceded by any other - # instruction - print "******Casts:******" - for link in pyblock.exits: - print "____________block:", link.target - for i, arg in enumerate(link.args): - print arg, - l_target = self.gen.get_repr(link.target.inputargs[i]) - l_local = self.gen.get_repr(arg) - self.dependencies.update([l_target, l_local]) - print "local", l_local.typed_name() - print "target", l_target.typed_name() - print "from ", l_local.llvmtype(), - print "to", l_target.llvmtype(), - if l_target.llvmtype() != l_local.llvmtype(): - print "change: ", - l_tmp = self.gen.get_local_tmp(l_target.type, self) - lblock.cast(l_tmp, l_local) - try: - print l_local.alt_types - l_local.alt_types[l_target.llvmtype()] = l_tmp - except (AttributeError, TypeError): - l_local.alt_types = {l_target.llvmtype(): l_tmp} - print l_local.alt_types - else: - print - #Create branches - if pyblock.exitswitch is None: - if pyblock == self.graph.returnblock: - l_returnvalue = self.gen.get_repr(pyblock.inputargs[0]) - self.dependencies.add(l_returnvalue) - lblock.ret(l_returnvalue) - elif pyblock == self.graph.exceptblock: - l_exc = self.gen.get_repr(pyblock.inputargs[0]) - l_val = self.gen.get_repr(pyblock.inputargs[1]) - l_last_exception = self.gen.get_repr(last_exception) - l_last_exc_value = self.gen.get_repr(last_exc_value) - self.dependencies.update([l_exc, l_val, l_last_exception, - l_last_exc_value]) - if "%std.class" != l_exc.llvmtype(): - l_tmp = self.gen.get_local_tmp( - PointerTypeRepr("%std.class", self.gen), self) - lblock.cast(l_tmp, l_exc) - l_exc = l_tmp - if "%std.exception" != l_val.llvmtype(): - l_tmp = self.gen.get_local_tmp( - PointerTypeRepr("%std.exception", self.gen), self) - lblock.cast(l_tmp, l_val) - l_val = l_tmp - lblock.store(l_exc, l_last_exception) - lblock.store(l_val, l_last_exc_value) - lblock.unwind() - else: - lblock.uncond_branch( - "%%block%i" % self.blocknum[pyblock.exits[0].target]) - elif isinstance(pyblock.exitswitch, Constant) and \ - pyblock.exitswitch.value == last_exception: - #The branch has already be created by the last space op - assert lblock.closed - else: - assert isinstance(a.binding(pyblock.exitswitch), - annmodel.SomeBool) - l_switch = self.gen.get_repr(pyblock.exitswitch) - self.dependencies.add(l_switch) - lblock.cond_branch( - l_switch, - "%%block%i" % self.blocknum[pyblock.exits[1].target], - "%%block%i" % self.blocknum[pyblock.exits[0].target]) - - def build_exc_blocks(self, number, pyblock): - lexcblock = llvmbc.BasicBlock("block%i.except" % number) - self.llvm_func.basic_block(lexcblock) - l_excp = self.gen.get_repr(last_exception) - l_exc = self.gen.get_local_tmp(PointerTypeRepr("%std.class", self.gen), - self) - l_uip = self.gen.get_local_tmp(PointerTypeRepr("uint", self.gen), self) - l_ui = self.gen.get_local_tmp( - self.gen.get_repr(annmodel.SomeInteger(True, True)), self) - self.dependencies.update([l_excp, l_exc, l_uip, l_ui]) - lexcblock.load(l_exc, l_excp) - lexcblock.getelementptr(l_uip, l_exc, [0, 1]) - lexcblock.load(l_ui, l_uip) - exits = pyblock.exits[1:] - l_exitcases = [self.gen.get_repr(ex.exitcase) for ex in exits] - self.dependencies.update(l_exitcases) - sw = [(str(abs(id(ex.exitcase))), - "%%block%i" % self.blocknum[ex.target]) - for ex in exits] - lexcblock.switch(l_ui, "%%block%i.unwind" % number, sw) - lunwindblock = llvmbc.BasicBlock("block%i.unwind" % number) - lunwindblock.unwind() - self.llvm_func.basic_block(lunwindblock) + block = BlockRepr(self, pyblock, self.gen) + self.llvm_func = llvmbc.Function(self.llvmfuncdef(), self.lblocks[0]) + for bl in self.lblocks[1:]: + self.llvm_func.basic_block(bl) + + def add_block(self, lblock): + self.lblocks.append(lblock) def llvmfuncdef(self): s = "internal %s %s(" % (self.retvalue.llvmtype(), self.name) @@ -315,6 +166,222 @@ l_func.dependencies.update(l_args) lblock.call(l_target, l_args[0], l_args[1:]) +class BlockRepr(object): + def __init__(self, l_func, pyblock, gen): + print "BlockRepr" + self.l_func = l_func + self.pyblock = pyblock + self.gen = gen + self.l_args = [self.gen.get_repr(a) for a in pyblock.inputargs] + self.l_func.dependencies.update(self.l_args) + self.lblock = llvmbc.BasicBlock("block%i" % l_func.blocknum[pyblock]) + l_func.add_block(self.lblock) + self.build_bb() + + def build_bb(self): + self.create_phi_nodes() + self.create_space_ops() + self.create_terminator_instr() + + def create_phi_nodes(self): + pyblock = self.pyblock + l_incoming_links = [] + def visit(node): + if isinstance(node, Link) and node.target == pyblock: + l_incoming_links.append(LinkRepr.get_link(node, self.l_func, + self.gen)) + traverse(visit, self.l_func.graph) + if len(l_incoming_links) != 0: + for i, arg in enumerate(pyblock.inputargs): + l_arg = self.gen.get_repr(arg) + l_values = [l_l.l_args[i] for l_l in l_incoming_links] + self.l_func.dependencies.add(l_arg) + self.lblock.phi(l_arg, l_values, ["%" + l_l.blockname + for l_l in l_incoming_links]) + + def create_space_ops(self): + for opnumber, op in enumerate(self.pyblock.operations): + self.create_op(opnumber, op) + + def create_op(self, opnumber, op): + l_target = self.gen.get_repr(op.result) + l_arg0 = self.gen.get_repr(op.args[0]) + self.l_func.dependencies.update([l_arg0, l_target]) + l_op = getattr(l_arg0, "op_" + op.opname, None) + if l_op is not None: + l_op(l_target, op.args, self.lblock, self.l_func) + #XXX need to find more elegant solution for this special case + elif op.opname == "newtuple": + l_target.type.t_op_newtuple(l_target, op.args, + self.lblock, self.l_func) + elif op.opname in INTRINSIC_OPS: + l_args = [self.gen.get_repr(arg) for arg in op.args[1:]] + self.l_func.dependencies.update(l_args) + self.lblock.spaceop(l_target, op.opname, [l_arg0] + l_args) + else: + s = "SpaceOperation %s not supported. Target: %s " \ + "Args: %s " % (op.opname, l_target, op.args) + \ + "Dispatched on: %s" % l_arg0 + raise CompileError, s + + def create_terminator_instr(self): + print "create_terminator_instr" + pyblock = self.pyblock + l_func = self.l_func + l_link = LinkRepr.get_link(pyblock.exits[0], l_func, self.gen) + if self.pyblock.exitswitch is None: + self.lblock.uncond_branch("%" + l_link.blockname) + else: + l_switch = self.gen.get_repr(pyblock.exitswitch) + l_link = LinkRepr.get_link(pyblock.exits[0], l_func, self.gen) + l_link2 = LinkRepr.get_link(pyblock.exits[1], l_func, self.gen) + l_func.dependencies.add(l_switch) + self.lblock.cond_branch(l_switch, "%" + l_link2.blockname, + "%" + l_link.blockname) + #1 / 0 + + +class ReturnBlockRepr(BlockRepr): + def create_space_ops(self): + pass + + def create_terminator_instr(self): + l_returnvalue = self.gen.get_repr(self.pyblock.inputargs[0]) + self.l_func.dependencies.add(l_returnvalue) + self.lblock.ret(l_returnvalue) + + +class TryBlockRepr(BlockRepr): + def __init__(self, l_func, pyblock, gen): + print "TryBlockRepr" + self.l_func = l_func + self.pyblock = pyblock + self.gen = gen + self.l_args = [self.gen.get_repr(a) for a in pyblock.inputargs] + self.l_func.dependencies.update(self.l_args) + #XXXXXXXXXXX + regularblock = "DUMMY" + exceptblock = "block%i.except" % l_func.blocknum[pyblock] + self.lblock = llvmbc.TryBasicBlock("block%i" % \ + l_func.blocknum[pyblock], + regularblock, exceptblock) + l_func.add_block(self.lblock) + l_link = LinkRepr.get_link(pyblock.exits[0], l_func, gen) + self.lblock.regularblock = l_link.blockname + self.build_bb() + self.build_exc_block() + + def create_space_ops(self): + for opnumber, op in enumerate(self.pyblock.operations): + if opnumber == len(self.pyblock.operations) - 1: + self.lblock.last_op = True + self.create_op(opnumber, op) + + def create_terminator_instr(self): + #The branch has already be created by the last space op + assert self.lblock.closed + + def build_exc_block(self): + lexcblock = llvmbc.BasicBlock(self.lblock.label + ".except") + self.l_func.add_block(lexcblock) + l_excp = self.gen.get_repr(last_exception) + l_exc = self.gen.get_local_tmp(PointerTypeRepr("%std.class", self.gen), + self.l_func) + l_uip = self.gen.get_local_tmp(PointerTypeRepr("uint", self.gen), + self.l_func) + l_ui = self.gen.get_local_tmp( + self.gen.get_repr(annmodel.SomeInteger(True, True)), self.l_func) + self.l_func.dependencies.update([l_excp, l_exc, l_uip, l_ui]) + lexcblock.load(l_exc, l_excp) + lexcblock.getelementptr(l_uip, l_exc, [0, 1]) + lexcblock.load(l_ui, l_uip) + l_exits = [LinkRepr.get_link(l, self.l_func, self.gen) + for l in self.pyblock.exits[1:]] + l_exitcases = [self.gen.get_repr(ex.exitcase) + for ex in self.pyblock.exits[1:]] + self.l_func.dependencies.update(l_exitcases) + sw = [(str(abs(id(ex.exitcase))), "%" + l_l.blockname) + for ex, l_l in zip(self.pyblock.exits[1:], l_exits)] + lexcblock.switch(l_ui, "%" + self.lblock.label + ".unwind", sw) + lunwindblock = llvmbc.BasicBlock(self.lblock.label + ".unwind") + lunwindblock.unwind() + self.l_func.add_block(lunwindblock) + +class ExceptBlockRepr(BlockRepr): + def create_space_ops(self): + pass + + def create_terminator_instr(self): + l_exc = self.gen.get_repr(self.pyblock.inputargs[0]) + l_val = self.gen.get_repr(self.pyblock.inputargs[1]) + l_last_exception = self.gen.get_repr(last_exception) + l_last_exc_value = self.gen.get_repr(last_exc_value) + self.l_func.dependencies.update([l_exc, l_val, l_last_exception, + l_last_exc_value]) + if "%std.class" != l_exc.llvmtype(): + l_tmp = self.gen.get_local_tmp( + PointerTypeRepr("%std.class", self.gen), self.l_func) + self.lblock.cast(l_tmp, l_exc) + l_exc = l_tmp + if "%std.exception" != l_val.llvmtype(): + l_tmp = self.gen.get_local_tmp( + PointerTypeRepr("%std.exception", self.gen), self.l_func) + self.lblock.cast(l_tmp, l_val) + l_val = l_tmp + self.lblock.store(l_exc, l_last_exception) + self.lblock.store(l_val, l_last_exc_value) + self.lblock.unwind() + + +class LinkRepr(object): + l_links = {} + def get_link(link, l_func, gen): + if (link, gen) not in LinkRepr.l_links: + LinkRepr.l_links[(link, gen)] = LinkRepr(link, l_func, gen) + return LinkRepr.l_links[(link, gen)] + get_link = staticmethod(get_link) + + def __init__(self, link, l_func, gen): + self.link = link + self.l_func = l_func + self.gen = gen + self.l_args = [self.gen.get_repr(a) for a in self.link.args] + self.l_targetargs = [self.gen.get_repr(a) + for a in self.link.target.inputargs] + self.l_func.dependencies.update(self.l_args) + self.l_func.dependencies.update(self.l_targetargs) + assert len(self.l_args) == len(self.l_targetargs) + self.create_link_block() + + def create_link_block(self): + link = self.link + l_func = self.l_func + self.blockname = "bl%i_to_bl%i" % (l_func.blocknum[link.prevblock], + l_func.blocknum[link.target]) + self.lblock = llvmbc.BasicBlock(self.blockname) + if isinstance(link.prevblock.exitswitch, Constant) and \ + link.prevblock.exitswitch.value == last_exception and \ + len(self.l_args) == 2: + l_tmp1 = self.gen.get_local_tmp(PointerTypeRepr("%std.class", + self.gen), + self.l_func) + l_tmp2 = self.gen.get_local_tmp(PointerTypeRepr("%std.exception", + self.gen), + self.l_func) + self.l_func.dependencies.update([l_tmp1, l_tmp2]) + self.lblock.load(self.l_args[0], l_tmp1) + self.lblock.load(self.l_args[1], l_tmp2) + self.l_args[0] = l_tmp1 + self.l_args[1] = l_tmp2 + for i, (l_a, l_ta) in enumerate(zip(self.l_args, self.l_targetargs)): + if l_a.llvmtype() != l_ta.llvmtype(): + l_tmp = self.gen.get_local_tmp(l_ta.type, l_func) + self.lblock.cast(l_tmp, l_a) + self.l_args[i] = l_tmp + self.lblock.uncond_branch("%%block%i" % l_func.blocknum[link.target]) + self.l_func.add_block(self.lblock) + + class EntryFunctionRepr(LLVMRepr): def __init__(self, name, function, gen): self.gen = gen @@ -336,7 +403,8 @@ self.init_block = llvmbc.BasicBlock("init") self.init_block.instruction("store bool true, bool* %Initialized.0__") real_entry = llvmbc.BasicBlock("real_entry") - l_ret = self.gen.get_local_tmp(self.l_function.retvalue.type, self) + l_ret = self.gen.get_local_tmp(self.l_function.retvalue.type, + self) self.l_function.op_simple_call( l_ret, [self.function] + self.l_function.l_args, real_entry, self) real_entry.ret(l_ret) Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Wed Apr 6 01:48:03 2005 @@ -175,3 +175,4 @@ yield l_dep1 yield l_repr + Modified: pypy/dist/pypy/translator/llvm/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/autopath.py (original) +++ pypy/dist/pypy/translator/llvm/test/autopath.py Wed Apr 6 01:48:03 2005 @@ -46,10 +46,8 @@ while checkpaths: orig = checkpaths.pop() - fullorig = os.path.join(os.path.realpath(orig), '') - if fullorig.startswith(pypy_root): - if os.path.exists(os.path.join(fullorig, '__init__.py')): - sys.path.remove(orig) + if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Wed Apr 6 01:48:03 2005 @@ -269,6 +269,14 @@ #exception snippets: +def simple_exception(n): + lst = range(10) + try: + lst[n] + except IndexError: + return 2 + return 4 + def two_exceptions(n): lst = range(10) try: @@ -287,3 +295,18 @@ return 2 return 4 + +#doesn't work yet! +class MyException(Exception): + pass + +def raises(i): + if i: + raise MyException + return 1 + +def catches(i): + try: + return raises(i) + except MyException: + return 2 Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Wed Apr 6 01:48:03 2005 @@ -251,10 +251,17 @@ assert f(30) == 30 class TestException(object): - def setup_method(self, method): + def setup_method(self,method): if not llvm_found: - py.test.skip("llvm-as not found on path.") - + py.test.skip("llvm-as not found on path") + + def test_simple_exception(self): + f = compile_function(llvmsnippet.simple_exception, [int]) + for i in range(10): + assert f(i) == 4 + for i in range(10, 20): + assert f(i) == 2 + def test_two_exception(self): f = compile_function(llvmsnippet.two_exceptions, [int]) for i in range(10): From cfbolz at codespeak.net Wed Apr 6 01:53:24 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Wed, 6 Apr 2005 01:53:24 +0200 (CEST) Subject: [pypy-svn] r10354 - pypy/dist/pypy/translator/llvm Message-ID: <20050405235324.6C96C27B53@code1.codespeak.net> Author: cfbolz Date: Wed Apr 6 01:53:24 2005 New Revision: 10354 Modified: pypy/dist/pypy/translator/llvm/autopath.py Log: Ouch. Ouch. Ouch. Modified: pypy/dist/pypy/translator/llvm/autopath.py ============================================================================== --- pypy/dist/pypy/translator/llvm/autopath.py (original) +++ pypy/dist/pypy/translator/llvm/autopath.py Wed Apr 6 01:53:24 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} From hpk at codespeak.net Wed Apr 6 01:57:31 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 6 Apr 2005 01:57:31 +0200 (CEST) Subject: [pypy-svn] r10355 - pypy/extradoc/talk Message-ID: <20050405235731.38DC427B53@code1.codespeak.net> Author: hpk Date: Wed Apr 6 01:57:31 2005 New Revision: 10355 Added: pypy/extradoc/talk/2005-pycon-py.pdf (contents, props changed) Log: py.test/py lib talk at Pycon 2005 Added: pypy/extradoc/talk/2005-pycon-py.pdf ============================================================================== Binary file. No diff available. From cfbolz at codespeak.net Wed Apr 6 02:19:25 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Wed, 6 Apr 2005 02:19:25 +0200 (CEST) Subject: [pypy-svn] r10356 - pypy/dist/pypy/translator/llvm/test Message-ID: <20050406001925.6BF9027B5B@code1.codespeak.net> Author: cfbolz Date: Wed Apr 6 02:19:25 2005 New Revision: 10356 Modified: pypy/dist/pypy/translator/llvm/test/autopath.py Log: Even more ouch. Modified: pypy/dist/pypy/translator/llvm/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/autopath.py (original) +++ pypy/dist/pypy/translator/llvm/test/autopath.py Wed Apr 6 02:19:25 2005 @@ -46,8 +46,10 @@ while checkpaths: orig = checkpaths.pop() - if os.path.join(os.path.realpath(orig), '').startswith(pypy_root): - sys.path.remove(orig) + fullorig = os.path.join(os.path.realpath(orig), '') + if fullorig.startswith(pypy_root): + if os.path.exists(os.path.join(fullorig, '__init__.py')): + sys.path.remove(orig) sys.path.insert(0, head) munged = {} From pedronis at codespeak.net Wed Apr 6 12:51:11 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 6 Apr 2005 12:51:11 +0200 (CEST) Subject: [pypy-svn] r10357 - in pypy/dist/pypy/objspace/flow: . test Message-ID: <20050406105111.27DE827B4B@code1.codespeak.net> Author: pedronis Date: Wed Apr 6 12:51:10 2005 New Revision: 10357 Modified: pypy/dist/pypy/objspace/flow/specialcase.py pypy/dist/pypy/objspace/flow/test/test_objspace.py Log: 2.2 compatibility is not a good reason to break tests! Modified: pypy/dist/pypy/objspace/flow/specialcase.py ============================================================================== --- pypy/dist/pypy/objspace/flow/specialcase.py (original) +++ pypy/dist/pypy/objspace/flow/specialcase.py Wed Apr 6 12:51:10 2005 @@ -26,5 +26,8 @@ # space.specialcases[fn] = sc_normalize_exception if space.do_imports_immediately: space.specialcases[__import__] = sc_import - for opname in ['lt', 'le', 'eq', 'ne', 'gt', 'ge']: - space.specialcases[getattr(operator, opname)] = sc_operator + for opname in ['lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_']: + opfunc = getattr(operator, opname, None) + if opfunc is None: + continue + space.specialcases[opfunc] = sc_operator Modified: pypy/dist/pypy/objspace/flow/test/test_objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/test/test_objspace.py (original) +++ pypy/dist/pypy/objspace/flow/test/test_objspace.py Wed Apr 6 12:51:10 2005 @@ -3,9 +3,11 @@ from pypy.interpreter.argument import Arguments from pypy.translator.simplify import simplify_graph - objspacename = 'flow' +import operator +is_operator = getattr(operator, 'is_', operator.eq) # it's not there 2.2 + class TestFlowObjSpace: def codetest(self, func): import inspect @@ -330,6 +332,7 @@ self.show(x) #__________________________________________________________ + def specialcases(): import operator operator.lt(2,3) @@ -338,7 +341,7 @@ operator.ne(2,3) operator.gt(2,3) operator.ge(2,3) - operator.is_(2,3) + is_operator(2,3) operator.__lt__(2,3) operator.__le__(2,3) operator.__eq__(2,3) From pedronis at codespeak.net Wed Apr 6 12:54:04 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 6 Apr 2005 12:54:04 +0200 (CEST) Subject: [pypy-svn] r10358 - pypy/dist/pypy/objspace/flow Message-ID: <20050406105404.68B1C27B4B@code1.codespeak.net> Author: pedronis Date: Wed Apr 6 12:54:04 2005 New Revision: 10358 Modified: pypy/dist/pypy/objspace/flow/objspace.py Log: catch unwrap exceptions in flowspace exception match Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Wed Apr 6 12:54:04 2005 @@ -183,7 +183,11 @@ def exception_match(self, w_exc_type, w_check_class): self.executioncontext.recorder.crnt_block.exc_handler = True - if not isinstance(self.unwrap(w_check_class), tuple): + try: + check_class = self.unwrap(w_check_class) + except UnwrapException: + raise Exception, "non-constant except guard" + if not isinstance(check_class, tuple): # the simple case return ObjSpace.exception_match(self, w_exc_type, w_check_class) # checking a tuple of classes From pedronis at codespeak.net Wed Apr 6 13:16:14 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 6 Apr 2005 13:16:14 +0200 (CEST) Subject: [pypy-svn] r10359 - pypy/dist/pypy/tool Message-ID: <20050406111614.5123527B4A@code1.codespeak.net> Author: pedronis Date: Wed Apr 6 13:16:14 2005 New Revision: 10359 Modified: pypy/dist/pypy/tool/uid.py Log: safer this way Modified: pypy/dist/pypy/tool/uid.py ============================================================================== --- pypy/dist/pypy/tool/uid.py (original) +++ pypy/dist/pypy/tool/uid.py Wed Apr 6 13:16:14 2005 @@ -2,9 +2,10 @@ # This is temporary hack to run PyPy on PyPy # until PyPy's struct module handle P format character. - -#HUGEVAL = 256 ** struct.calcsize('P') -HUGEVAL = 0 +try: + HUGEVAL = 256 ** struct.calcsize('P') +except struct.error: + HUGEVAL = 0 def fixid(result): if result < 0: From pedronis at codespeak.net Wed Apr 6 13:58:04 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 6 Apr 2005 13:58:04 +0200 (CEST) Subject: [pypy-svn] r10360 - in pypy/dist/pypy/translator: . genc/test test Message-ID: <20050406115804.7E78227B48@code1.codespeak.net> Author: pedronis Date: Wed Apr 6 13:58:04 2005 New Revision: 10360 Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py pypy/dist/pypy/translator/geninterplevel.py pypy/dist/pypy/translator/test/snippet.py pypy/dist/pypy/translator/test/test_geninterp.py Log: testing for translation of exception catching. fix a related detail in geninterplevel.py Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py ============================================================================== --- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_ctrans.py Wed Apr 6 13:58:04 2005 @@ -216,6 +216,10 @@ assert fn(117, 114) == (-6, True) assert fn(117, 124) == (-3, True) + def test_do_try_raise_choose(self): + fn = self.build_cfunc(snippet.do_try_raise_choose) + result = fn() + assert result == [-1,0,1,2] class TestAnnotatedTestCase: @@ -331,6 +335,10 @@ assert fn(5) == 0 assert abs(fn(7) + 0.8584) < 1E-5 + def test_do_try_raise_choose(self): + fn = self.getcompiled(snippet.do_try_raise_choose) + result = fn() + assert result == [-1,0,1,2] class TestTypedTestCase(TestAnnotatedTestCase): Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Wed Apr 6 13:58:04 2005 @@ -590,7 +590,7 @@ if issubclass(cls, Exception): # if cls.__module__ == 'exceptions': # don't rely on this, py.magic redefines AssertionError - if getattr(__builtin__,cls.__name__) is cls: + if getattr(__builtin__,cls.__name__,None) is cls: # exception are defined on the space return 'space.w_%s' % cls.__name__ Modified: pypy/dist/pypy/translator/test/snippet.py ============================================================================== --- pypy/dist/pypy/translator/test/snippet.py (original) +++ pypy/dist/pypy/translator/test/snippet.py Wed Apr 6 13:58:04 2005 @@ -299,6 +299,39 @@ return callable_prebuilt_constant() +class E1(Exception): + pass + +class E2(Exception): + pass + +def raise_choose(n): + if n == 1: + raise E1 + elif n == 2: + raise E2 + elif n == -1: + raise Exception + return 0 + +def try_raise_choose(n): + try: + raise_choose(n) + except E1: + return 1 + except E2: + return 2 + except Exception: + return -1 + return 0 + +def do_try_raise_choose(): + r = [] + for n in [-1,0,1,2]: + r.append(try_raise_choose(n)) + return r + + # INHERITANCE / CLASS TESTS class C(object): pass @@ -1062,4 +1095,4 @@ return "confused" return istk.top(), sstk.top() - + Modified: pypy/dist/pypy/translator/test/test_geninterp.py ============================================================================== --- pypy/dist/pypy/translator/test/test_geninterp.py (original) +++ pypy/dist/pypy/translator/test/test_geninterp.py Wed Apr 6 13:58:04 2005 @@ -245,3 +245,8 @@ result = fn(l) assert l == [3, 'c', 8, 11, 'h', 9] assert result == ([3, 'c'], [9], [11, 'h']) + + def test_do_try_raise_choose(self): + fn = self.build_interpfunc(snippet.do_try_raise_choose) + result = fn() + assert result == [-1,0,1,2] From cfbolz at codespeak.net Wed Apr 6 14:00:33 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Wed, 6 Apr 2005 14:00:33 +0200 (CEST) Subject: [pypy-svn] r10361 - pypy/dist/pypy/translator/llvm Message-ID: <20050406120033.416DB27B4A@code1.codespeak.net> Author: cfbolz Date: Wed Apr 6 14:00:33 2005 New Revision: 10361 Modified: pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/genllvm.py Log: Fixed a LLVM code creation bug + cosmetics. Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Wed Apr 6 14:00:33 2005 @@ -194,6 +194,15 @@ raise CompileError, ("setattr called with unknown attribute %s" % \ args[1].value) + def t_op_type(self, l_target, args, lblock, l_func): + l_args0 = self.gen.get_repr(args[0]) + l_func.dependencies.add(l_args0) + l_tmp = self.gen.get_local_tmp( + PointerTypeRepr("%std.class*", self.gen), l_func) + lblock.getelementptr(l_tmp, l_args0, [0, 0]) + lblock.load(l_target, l_tmp) + + def iter_subclasses(self): for cls, classdef in self.classdef.subdefs.iteritems(): l_cls = self.gen.get_repr(classdef) Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Wed Apr 6 14:00:33 2005 @@ -13,7 +13,7 @@ from pypy.translator.llvm.representation import debug, LLVMRepr, CompileError from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr -debug = True +debug = False INTRINSIC_OPS = ["lt", "le", "eq", "ne", "gt", "ge", "is_", "is_true", "len", "neg", "pos", "invert", "add", "sub", "mul", "truediv", @@ -168,7 +168,8 @@ class BlockRepr(object): def __init__(self, l_func, pyblock, gen): - print "BlockRepr" + if debug: + print "BlockRepr" self.l_func = l_func self.pyblock = pyblock self.gen = gen @@ -225,7 +226,8 @@ raise CompileError, s def create_terminator_instr(self): - print "create_terminator_instr" + if debug: + print "create_terminator_instr" pyblock = self.pyblock l_func = self.l_func l_link = LinkRepr.get_link(pyblock.exits[0], l_func, self.gen) @@ -253,7 +255,8 @@ class TryBlockRepr(BlockRepr): def __init__(self, l_func, pyblock, gen): - print "TryBlockRepr" + if debug: + print "TryBlockRepr" self.l_func = l_func self.pyblock = pyblock self.gen = gen @@ -369,8 +372,8 @@ self.gen), self.l_func) self.l_func.dependencies.update([l_tmp1, l_tmp2]) - self.lblock.load(self.l_args[0], l_tmp1) - self.lblock.load(self.l_args[1], l_tmp2) + self.lblock.load(l_tmp1, self.l_args[0]) + self.lblock.load(l_tmp2, self.l_args[1]) self.l_args[0] = l_tmp1 self.l_args[1] = l_tmp2 for i, (l_a, l_ta) in enumerate(zip(self.l_args, self.l_targetargs)): @@ -552,7 +555,8 @@ if clsdef.cls.__dict__.has_key(name): l_method = self.gen.get_repr(clsdef.cls.__dict__[name]) args[0] = l_method - print l_method.llvmname(), l_method + if debug: + print l_method.llvmname(), l_method l_method.op_simple_call(l_target, args, lblock, l_func) return if l_args[1].llvmtype() != self.l_args[0].llvmtype(): Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Wed Apr 6 14:00:33 2005 @@ -175,4 +175,3 @@ yield l_dep1 yield l_repr - From tismer at codespeak.net Wed Apr 6 14:13:41 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 6 Apr 2005 14:13:41 +0200 (CEST) Subject: [pypy-svn] r10362 - pypy/dist/pypy/translator Message-ID: <20050406121341.2863B27B38@code1.codespeak.net> Author: tismer Date: Wed Apr 6 14:13:40 2005 New Revision: 10362 Modified: pypy/dist/pypy/translator/geninterplevel.py Log: support for property type plus small enhancements Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Wed Apr 6 14:13:40 2005 @@ -50,7 +50,10 @@ self.initcode.append1( 'def %s(expr):\n' ' dic = space.newdict([])\n' - ' space.exec_("", dic, dic)\n' + ' if "types." in expr:\n' + ' space.exec_("import types", dic, dic)\n' + ' else:\n' + ' space.exec_("", dic, dic)\n' ' return space.eval(expr, dic, dic)' % (unique, )) self.initcode.append1('%s = %s(%r)' % (name, unique, expr)) return name @@ -683,7 +686,7 @@ # XXX small problem here: # XXX with space.eval, we get # XXX but with wrap, we get - type(list.append): (eval_helper, "method_descriptor", "list.append"), + type(list.append): (eval_helper, "method_descriptor", "type(list.append)"), # type 'wrapper_descriptor': type(type(None).__repr__): (eval_helper, "wrapper_descriptor", "type(type(None).__repr__)"), @@ -701,6 +704,7 @@ types.ClassType: 'space.w_classobj', types.MethodType: (eval_helper, "instancemethod", "type((lambda:42).__get__(42))"), + property: (eval_helper, "property", 'property'), } def nameof_type(self, cls): From pedronis at codespeak.net Wed Apr 6 14:24:49 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 6 Apr 2005 14:24:49 +0200 (CEST) Subject: [pypy-svn] r10363 - pypy/dist/pypy/annotation Message-ID: <20050406122449.3980027B3B@code1.codespeak.net> Author: pedronis Date: Wed Apr 6 14:24:49 2005 New Revision: 10363 Modified: pypy/dist/pypy/annotation/classdef.py pypy/dist/pypy/annotation/unaryop.py Log: warning about methods that do not exist in the base class but will be demoted there, sometimes this is harmless but it can be the wrong unwanted thing too Modified: pypy/dist/pypy/annotation/classdef.py ============================================================================== --- pypy/dist/pypy/annotation/classdef.py (original) +++ pypy/dist/pypy/annotation/classdef.py Wed Apr 6 14:24:49 2005 @@ -180,12 +180,14 @@ return None return None - def matching(self, pbc): + def matching(self, pbc, name=None): d = {} uplookup = None upfunc = None + meth = False for func, value in pbc.prebuiltinstances.items(): if isclassdef(value): + meth = True if value is not self and value.issubclass(self): pass # subclasses methods are always candidates elif self.issubclass(value): # upward consider only the best match @@ -200,6 +202,10 @@ d[func] = value if uplookup is not None: d[upfunc] = uplookup + elif meth: + if name is None: + name = '???' + self.bookkeeper.warning("demoting method %s to base class %s" % (name,self)) if d: return SomePBC(d) else: Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Wed Apr 6 14:24:49 2005 @@ -195,7 +195,7 @@ # that can't possibly apply to an instance of ins.classdef. # XXX do it more nicely if isinstance(s_result, SomePBC): - s_result = ins.classdef.matching(s_result) + s_result = ins.classdef.matching(s_result, attr) return s_result return SomeObject() From pedronis at codespeak.net Wed Apr 6 15:26:33 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 6 Apr 2005 15:26:33 +0200 (CEST) Subject: [pypy-svn] r10366 - in pypy/dist/pypy/translator: . test Message-ID: <20050406132633.3665327B4B@code1.codespeak.net> Author: pedronis Date: Wed Apr 6 15:26:33 2005 New Revision: 10366 Modified: pypy/dist/pypy/translator/annrpython.py pypy/dist/pypy/translator/test/test_annrpython.py Log: annotate implicit exceptions properly Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Wed Apr 6 15:26:33 2005 @@ -372,7 +372,10 @@ if isinstance(link.exitcase, (types.ClassType, type)) \ and issubclass(link.exitcase, Exception): last_exception_object = annmodel.SomeObject() - last_exc_value_object = annmodel.SomeObject() + if link.exitcase is Exception: + last_exc_value_object = annmodel.SomeObject() + else: + last_exc_value_object = self.bookkeeper.valueoftype(link.exitcase) last_exc_value_vars = [] in_except_block = True last_exception_unknown = True Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Wed Apr 6 15:26:33 2005 @@ -606,6 +606,18 @@ s = a.build_types(f, [object]) assert s.knowntype is C + def test_implicit_exc(self): + def f(l): + try: + l[0] + except (KeyError, IndexError),e: + return e + return None + + a = RPythonAnnotator() + s = a.build_types(f, [list]) + assert s.knowntype is LookupError + def test_overrides(self): import sys excs = [] From cfbolz at codespeak.net Wed Apr 6 16:14:05 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Wed, 6 Apr 2005 16:14:05 +0200 (CEST) Subject: [pypy-svn] r10367 - pypy/dist/pypy/translator/llvm Message-ID: <20050406141405.E6E4827B4B@code1.codespeak.net> Author: cfbolz Date: Wed Apr 6 16:14:05 2005 New Revision: 10367 Modified: pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/llvmbc.py Log: Implemented the instantiation of builtin exceptions. Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Wed Apr 6 16:14:05 2005 @@ -269,3 +269,14 @@ lblock.instruction("store %%std.class* %s, %%std.class** %s" % (self.l_base.objectname, l_tmp.llvmname())) + def op_simple_call(self, l_target, args, lblock, l_func): + lblock.malloc(l_target) + l_args0 = self.gen.get_repr(args[0]) + l_cast = self.gen.get_local_tmp(PointerTypeRepr("%std.list.sbyte", + self.gen), l_func) + l_tmp = self.gen.get_local_tmp(PointerTypeRepr("%std.list.sbyte*", + self.gen), l_func) + l_func.dependencies.update([l_args0, l_cast, l_tmp]) + lblock.cast(l_cast, l_args0) + lblock.getelementptr(l_tmp, l_target, [0, 1]) + lblock.store(l_cast, l_tmp) Modified: pypy/dist/pypy/translator/llvm/llvmbc.py ============================================================================== --- pypy/dist/pypy/translator/llvm/llvmbc.py (original) +++ pypy/dist/pypy/translator/llvm/llvmbc.py Wed Apr 6 16:14:05 2005 @@ -92,10 +92,15 @@ s = "store %s, %s" % (l_value.typed_name(), l_pter.typed_name()) self.instructions.append(s) - def malloc(self, l_target, l_type, num=1): + def malloc(self, l_target, l_type=None, num=1): self.phi_done = True - s = "%s = malloc %s" % (l_target.llvmname(), - l_type.typename_wo_pointer()) + if l_type is None: + #XXX assuming that l_target.llvmtype() ends with an "*" here + s = "%s = malloc %s" % (l_target.llvmname(), + l_target.llvmtype()[:1]) + else: + s = "%s = malloc %s" % (l_target.llvmname(), + l_type.typename_wo_pointer()) if num > 1: s += ", uint %i" % num self.instructions.append(s) From pedronis at codespeak.net Wed Apr 6 17:13:08 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 6 Apr 2005 17:13:08 +0200 (CEST) Subject: [pypy-svn] r10368 - pypy/dist/pypy/objspace/std Message-ID: <20050406151308.17FAB27B4B@code1.codespeak.net> Author: pedronis Date: Wed Apr 6 17:13:07 2005 New Revision: 10368 Modified: pypy/dist/pypy/objspace/std/objspace.py Log: don't pollute *_w results with the logic for wrapped object returning mms Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Wed Apr 6 17:13:07 2005 @@ -40,12 +40,15 @@ # install all the MultiMethods into the space instance for name, mm in self.MM.__dict__.items(): if isinstance(mm, MultiMethod) and not hasattr(self, name): - exprargs, expr, miniglobals, fallback = ( - mm.install_not_sliced(self.model.typeorder, baked_perform_call=False)) - - func = stdtypedef.make_perform_trampoline('__mm_'+name, - exprargs, expr, miniglobals, - mm) + if name.endswith('_w'): # int_w, str_w...: these do not return a wrapped object + func = mm.install_not_sliced(self.model.typeorder, baked_perform_call=True) + else: + exprargs, expr, miniglobals, fallback = ( + mm.install_not_sliced(self.model.typeorder, baked_perform_call=False)) + + func = stdtypedef.make_perform_trampoline('__mm_'+name, + exprargs, expr, miniglobals, + mm) # e.g. add(space, w_x, w_y) boundmethod = func.__get__(self) # bind the 'space' argument From arigo at codespeak.net Wed Apr 6 18:54:52 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 18:54:52 +0200 (CEST) Subject: [pypy-svn] r10369 - in pypy/branch/pypy-normalize-exception: . documentation interpreter objspace/flow tool Message-ID: <20050406165452.9730C27B5D@code1.codespeak.net> Author: arigo Date: Wed Apr 6 18:54:52 2005 New Revision: 10369 Added: pypy/branch/pypy-normalize-exception/ - copied from r10364, pypy/dist/pypy/ Modified: pypy/branch/pypy-normalize-exception/TODO pypy/branch/pypy-normalize-exception/documentation/controlflow.txt pypy/branch/pypy-normalize-exception/interpreter/baseobjspace.py pypy/branch/pypy-normalize-exception/interpreter/error.py pypy/branch/pypy-normalize-exception/interpreter/gateway.py pypy/branch/pypy-normalize-exception/interpreter/pyframe.py pypy/branch/pypy-normalize-exception/interpreter/pyopcode.py pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py pypy/branch/pypy-normalize-exception/tool/pytestsupport.py Log: A branch to share some ideas being developed on IRC. Modified: pypy/branch/pypy-normalize-exception/TODO ============================================================================== --- pypy/dist/pypy/TODO (original) +++ pypy/branch/pypy-normalize-exception/TODO Wed Apr 6 18:54:52 2005 @@ -33,6 +33,8 @@ * review whatever you like +* sys.last_type/last_value are not normalized -- bug + StdObjSpace =========== Modified: pypy/branch/pypy-normalize-exception/documentation/controlflow.txt ============================================================================== --- pypy/dist/pypy/documentation/controlflow.txt (original) +++ pypy/branch/pypy-normalize-exception/documentation/controlflow.txt Wed Apr 6 18:54:52 2005 @@ -90,6 +90,9 @@ A Constant can occasionally store a mutable Python object. It represents a static, pre-initialized, read-only version of that object. The flow graph should not attempt to actually mutate such Constants. +XXX talk about implicit exceptions + + How the FlowObjSpace works -------------------------- Modified: pypy/branch/pypy-normalize-exception/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/baseobjspace.py Wed Apr 6 18:54:52 2005 @@ -214,10 +214,6 @@ check_list.extend(exclst) return False - def normalize_exception(self, w_type, w_value, w_tb): - from pypy.interpreter import pyframe - return pyframe.normalize_exception(self, w_type,w_value, w_tb) - def call(self, w_callable, w_args, w_kwds=None): args = Arguments.frompacked(self, w_args, w_kwds) return self.call_args(w_callable, args) @@ -266,6 +262,16 @@ except OperationError: return self.w_False + def abstract_isclass(self, w_obj): + if self.is_true(self.isinstance(w_obj, self.w_type)): + return self.w_True + try: + self.getattr(w_obj, self.wrap('__bases__')) + except OperationError: + return self.w_False + else: + return self.w_True + def eval(self, expression, w_globals, w_locals): "NOT_RPYTHON: For internal debugging." Modified: pypy/branch/pypy-normalize-exception/interpreter/error.py ============================================================================== --- pypy/dist/pypy/interpreter/error.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/error.py Wed Apr 6 18:54:52 2005 @@ -122,6 +122,74 @@ import debug debug.fire(self) + def normalize_exception(self, space): + """Normalize the OperationError. In other words, fix w_type and/or + w_value to make sure that the __class__ of w_value is exactly w_type. + """ + w_type = self.w_type + w_value = self.w_value + if space.full_exceptions: + while space.is_true(space.isinstance(w_type, space.w_tuple)): + w_type = space.getitem(w_type, space.wrap(0)) + + if space.is_true(space.abstract_isclass(w_type)): + if space.is_w(w_value, space.w_None): + # raise Type: we assume we have to instantiate Type + w_value = space.call_function(w_type) + w_type = space.getattr(w_value, space.wrap('__class__')) + else: + w_valuetype = space.getattr(w_value, space.wrap('__class__')) + if space.is_true(space.abstract_issubclass(w_valuetype, + w_type)): + # raise Type, Instance: let etype be the exact type of value + w_type = w_valuetype + else: + if space.full_exceptions and space.is_true( + space.isinstance(w_value, space.w_tuple)): + # raise Type, tuple: assume the tuple contains the + # constructor args + w_value = space.call(w_type, w_value) + else: + # raise Type, X: assume X is the constructor argument + w_value = space.call_function(w_type, w_value) + w_type = space.getattr(w_value, space.wrap('__class__')) + + elif space.full_exceptions and space.is_w(space.type(w_type), + space.w_str): + # XXX warn -- deprecated + if (space.is_w(w_value, space.w_None) or + space.is_w(space.type(w_value), space.w_str)): + pass # ok + else: + raise OperationError(space.w_TypeError, + space.wrap("string exceptions can only " + "have a string value")) + else: + + # raise X: we assume that X is an already-built instance + if not space.is_w(w_value, space.w_None): + raise OperationError(space.w_TypeError, + space.wrap("instance exception may not " + "have a separate value")) + w_value = w_type + w_type = space.getattr(w_value, space.wrap('__class__')) + if space.full_exceptions: + # for the sake of language consistency we should not allow + # things like 'raise 1', but it is probably fine (i.e. + # not ambiguous) to allow them in the explicit form 'raise int, 1' + try: + w_module = space.getattr(w_type, space.wrap('__module__')) + except OperationError: + pass + else: + if space.eq_w(w_module, space.wrap('__builtin__')): + raise OperationError(space.w_TypeError, + space.wrap("raising built-in objects can " + "be ambiguous, " + "use 'raise type, value' instead")) + self.w_type = w_type + self.w_value = w_value + # Utilities from pypy.tool.ansi_print import ansi_print Modified: pypy/branch/pypy-normalize-exception/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/gateway.py Wed Apr 6 18:54:52 2005 @@ -567,7 +567,7 @@ return klass(source, filename, modname, do_imports) # uncomment this to check against applevel without translation -##ApplevelInterpClass = ApplevelClass +ApplevelInterpClass = ApplevelClass def appdef(source, applevel=ApplevelClass): """ NOT_RPYTHON: build an app-level helper function, like for example: Modified: pypy/branch/pypy-normalize-exception/interpreter/pyframe.py ============================================================================== --- pypy/dist/pypy/interpreter/pyframe.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/pyframe.py Wed Apr 6 18:54:52 2005 @@ -395,73 +395,22 @@ # push the exception to the value stack for inspection by the # exception handler (the code after the except:) operationerr = unroller.args[0] - w_type = operationerr.w_type - w_value = operationerr.w_value - w_normalized = frame.space.normalize_exception(w_type, w_value, - frame.space.w_None) - w_type, w_value, w_tb = frame.space.unpacktuple(w_normalized, 3) - # save the normalized exception back into the OperationError - # -- in particular it makes sure that sys.exc_info() etc see - # normalized exception. - operationerr.w_type = w_type - operationerr.w_value = w_value + try: + operationerr.normalize_exception(frame.space) + except OperationError, operationerr: + # exception while normalizing the exception! + # you get an exception, just not the one you might expect... + operationerr.normalize_exception(frame.space) # the stack setup is slightly different than in CPython: # instead of the traceback, we store the unroller object, # wrapped. frame.valuestack.push(frame.space.wrap(unroller)) - frame.valuestack.push(w_value) - frame.valuestack.push(w_type) + frame.valuestack.push(operationerr.w_value) + frame.valuestack.push(operationerr.w_type) frame.next_instr = self.handlerposition # jump to the handler return True # stop unrolling return False -# make the following flowable: need _classobj -import types, __builtin__ -__builtin__._classobj = types.ClassType - -app = gateway.applevel(''' - def normalize_exception(etype, value, tb): - """Normalize an (exc_type, exc_value) pair: - exc_value will be an exception instance and exc_type its class. - """ - # mistakes here usually show up as infinite recursion, which is fun. - while isinstance(etype, tuple): - etype = etype[0] - ## if isinstance(etype, (type, _classobj)): - ## isinstance with tuple argument doesn't map to space.isinstance, yet - if isinstance(etype, type) or isinstance(etype, _classobj): - if not isinstance(value, etype): - if value is None: - # raise Type: we assume we have to instantiate Type - value = etype() - elif isinstance(value, tuple): - # raise Type, Tuple: assume Tuple contains the constructor args - value = etype(*value) - else: - # raise Type, X: assume X is the constructor argument - value = etype(value) - # raise Type, Instance: let etype be the exact type of value - etype = value.__class__ - elif type(etype) is str: - # XXX warn -- deprecated - if value is not None and type(value) is not str: - raise TypeError("string exceptions can only have a string value") - else: - # raise X: we assume that X is an already-built instance - if value is not None: - raise TypeError("instance exception may not have a separate value") - value = etype - etype = value.__class__ - # for the sake of language consistency we should not allow - # things like 'raise 1', but it is probably fine (i.e. - # not ambiguous) to allow them in the explicit form 'raise int, 1' - if not hasattr(value, '__dict__') and not hasattr(value, '__slots__'): - raise TypeError("raising built-in objects can be ambiguous, " - "use 'raise type, value' instead") - return etype, value, tb -''') -normalize_exception = app.interphook("normalize_exception") - class FinallyBlock(FrameBlock): """A try:finally: block. Stores the position of the exception handler.""" Modified: pypy/branch/pypy-normalize-exception/interpreter/pyopcode.py ============================================================================== --- pypy/dist/pypy/interpreter/pyopcode.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/pyopcode.py Wed Apr 6 18:54:52 2005 @@ -312,31 +312,31 @@ # we use the .app.py file to prepare the exception/value/traceback # but not to actually raise it, because we cannot use the 'raise' # statement to implement RAISE_VARARGS + space = f.space if nbargs == 0: - operror = f.space.getexecutioncontext().sys_exc_info() + operror = space.getexecutioncontext().sys_exc_info() if operror is None: - raise OperationError(f.space.w_TypeError, - f.space.wrap("raise: no active exception to re-raise")) + raise OperationError(space.w_TypeError, + space.wrap("raise: no active exception to re-raise")) # re-raise, no new traceback obj will be attached raise pyframe.SApplicationException(operror) - w_value = w_traceback = f.space.w_None + w_value = w_traceback = space.w_None if nbargs >= 3: w_traceback = f.valuestack.pop() if nbargs >= 2: w_value = f.valuestack.pop() if 1: w_type = f.valuestack.pop() - w_resulttuple = f.space.normalize_exception(w_type, w_value, - w_traceback) - w_type, w_value, w_traceback = f.space.unpacktuple(w_resulttuple, 3) - if w_traceback is not f.space.w_None: - tb = f.space.interpclass_w(w_traceback) - if not isinstance(tb,pytraceback.PyTraceback): - raise OperationError(f.space.w_TypeError, - f.space.wrap("raise: arg 3 must be a traceback or None")) - operror = OperationError(w_type,w_value,tb) + operror = OperationError(w_type, w_value) + operror.normalize_exception(space) + if space.is_w(w_traceback, space.w_None): + # common case + raise operror + else: + tb = space.interpclass_w(w_traceback) + if not isinstance(tb, pytraceback.PyTraceback): + raise OperationError(space.w_TypeError, + space.wrap("raise: arg 3 must be a traceback or None")) + operror.application_traceback = tb # re-raise, no new traceback obj will be attached raise pyframe.SApplicationException(operror) - else: - # common-case - raise OperationError(w_type, w_value) def LOAD_LOCALS(f): f.valuestack.push(f.w_locals) Modified: pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py Wed Apr 6 18:54:52 2005 @@ -45,6 +45,8 @@ self.w_None = Constant(None) self.w_False = Constant(False) self.w_True = Constant(True) + self.w_type = Constant(type) + self.w_tuple = Constant(tuple) for exc in [KeyError, ValueError, IndexError, StopIteration, AssertionError]: clsname = exc.__name__ @@ -206,61 +208,14 @@ return ecls return None - def normalize_exception(space, w_arg1, w_arg2, w_tb): - """Special-case for 'raise' statements. Case-by-case analysis: + def abstract_issubclass(self, w_obj, w_cls, failhard=False): + return self.issubtype(w_obj, w_cls) - * raise Class - - with a constant Class, it is easy to recognize. - But we don't normalize: the associated value is None. - - * raise Class(...) - - when the class is instantiated in-place, we can figure that out - - * raise Instance - - assumes that it's not a class, and raises an exception whose class - is variable and whose value is Instance. - - * raise Class, Arg - - assumes that Arg is the value you want for the exception, and - that Class is exactly the exception class. No check or normalization. - """ + def abstract_isinstance(self, w_obj, w_cls): + return self.isinstance(w_obj, w_cls) - # w_arg3 (the traceback) is ignored and replaced with None - # if it is a Variable, because pyopcode.py tries to unwrap it. - # It means that we ignore the 'tb' argument of 'raise' in most cases. - if not isinstance(w_tb, Constant): - w_tb = space.w_None - - if w_arg2 != space.w_None: - # raise Class, Arg: no normalization - return (w_arg1, w_arg2, w_tb) - - etype = space.getconstclass(w_arg1) - if etype is not None: - # raise Class - return (w_arg1, space.w_None, w_tb) - - # raise Class(..)? We need a hack to figure out of which class it is. - # Normally, Instance should have been created by the previous operation - # which should be a simple_call(, ...). - # Fetch the out of there. (This doesn't work while replaying) - # XXX this case is likely not triggered anymore, because the instance creation op - # is walled off in a different block by the surrounding it with exception - # handling logic that is always put in place for calls. - # We may want to make this more clever! - operations = space.executioncontext.recorder.crnt_block.operations - if operations: - spaceop = operations[-1] - if (spaceop.opname == 'simple_call' and - spaceop.result is w_arg1): - w_type = spaceop.args[0] - return (w_type, w_arg1, w_tb) - - # raise Instance. Fall-back. - w_type = space.do_operation('type', w_arg1) - return (w_type, w_arg1, w_tb) - # this function returns a real tuple that can be handled - # by FlowObjSpace.unpacktuple() + def abstract_isclass(self, w_obj): + return self.isinstance(w_obj, self.w_type) def build_flow(self, func, constargs={}): @@ -289,13 +244,13 @@ return ec.graph def unpacktuple(self, w_tuple, expected_length=None): - # special case to accept either Constant tuples - # or real tuples of Variables/Constants - if isinstance(w_tuple, tuple): - result = w_tuple - else: - unwrapped = self.unwrap(w_tuple) - result = tuple([Constant(x) for x in unwrapped]) +## # special case to accept either Constant tuples +## # or real tuples of Variables/Constants +## if isinstance(w_tuple, tuple): +## result = w_tuple +## else: + unwrapped = self.unwrap(w_tuple) + result = tuple([Constant(x) for x in unwrapped]) if expected_length is not None and len(result) != expected_length: raise ValueError, "got a tuple of length %d instead of %d" % ( len(result), expected_length) @@ -469,6 +424,12 @@ x_cell == c return x.other +def type_or_something_similar(x): + t = type(x) + if t is types.ClassType: # guess who's here? exception classes... + t = type + return t + def make_op(name, symbol, arity, specialnames): if hasattr(FlowObjSpace, name): return # Shouldn't do it @@ -482,6 +443,8 @@ # op = apply if name == 'issubtype': op = issubclass + elif name == 'type': + op = type_or_something_similar elif name == 'is_': op = lambda x, y: x is y elif name == 'getattr': Modified: pypy/branch/pypy-normalize-exception/tool/pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/pytestsupport.py (original) +++ pypy/branch/pypy-normalize-exception/tool/pytestsupport.py Wed Apr 6 18:54:52 2005 @@ -83,10 +83,10 @@ space.call_args(w_parent_init, __args__.prepend(w_self)) framestack = space.getexecutioncontext().framestack frame = framestack.top(0) - # Argh! we may see app-level helpers in the frame stack! - # that's very probably very bad... - if frame.code.co_name == 'normalize_exception': - frame = framestack.top(1) +## # Argh! we may see app-level helpers in the frame stack! +## # that's very probably very bad... +## if frame.code.co_name == 'normalize_exception': +## frame = framestack.top(1) # if the assertion provided a message, don't do magic args_w, kwargs_w = __args__.unpack() From arigo at codespeak.net Wed Apr 6 19:16:43 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 19:16:43 +0200 (CEST) Subject: [pypy-svn] r10370 - in pypy/branch/pypy-normalize-exception: interpreter objspace/flow Message-ID: <20050406171643.0148427B4D@code1.codespeak.net> Author: arigo Date: Wed Apr 6 19:16:43 2005 New Revision: 10370 Modified: pypy/branch/pypy-normalize-exception/interpreter/baseobjspace.py pypy/branch/pypy-normalize-exception/interpreter/error.py pypy/branch/pypy-normalize-exception/interpreter/pyframe.py pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py Log: Generates much smaller graphs on except:. Modified: pypy/branch/pypy-normalize-exception/interpreter/baseobjspace.py ============================================================================== --- pypy/branch/pypy-normalize-exception/interpreter/baseobjspace.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/baseobjspace.py Wed Apr 6 19:16:43 2005 @@ -272,6 +272,9 @@ else: return self.w_True + def abstract_getclass(self, w_obj): + return self.getattr(w_obj, self.wrap('__class__')) + def eval(self, expression, w_globals, w_locals): "NOT_RPYTHON: For internal debugging." Modified: pypy/branch/pypy-normalize-exception/interpreter/error.py ============================================================================== --- pypy/branch/pypy-normalize-exception/interpreter/error.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/error.py Wed Apr 6 19:16:43 2005 @@ -136,9 +136,9 @@ if space.is_w(w_value, space.w_None): # raise Type: we assume we have to instantiate Type w_value = space.call_function(w_type) - w_type = space.getattr(w_value, space.wrap('__class__')) + w_type = space.abstract_getclass(w_value) else: - w_valuetype = space.getattr(w_value, space.wrap('__class__')) + w_valuetype = space.abstract_getclass(w_value) if space.is_true(space.abstract_issubclass(w_valuetype, w_type)): # raise Type, Instance: let etype be the exact type of value @@ -152,18 +152,12 @@ else: # raise Type, X: assume X is the constructor argument w_value = space.call_function(w_type, w_value) - w_type = space.getattr(w_value, space.wrap('__class__')) + w_type = space.abstract_getclass(w_value) elif space.full_exceptions and space.is_w(space.type(w_type), space.w_str): # XXX warn -- deprecated - if (space.is_w(w_value, space.w_None) or - space.is_w(space.type(w_value), space.w_str)): - pass # ok - else: - raise OperationError(space.w_TypeError, - space.wrap("string exceptions can only " - "have a string value")) + pass else: # raise X: we assume that X is an already-built instance @@ -172,7 +166,7 @@ space.wrap("instance exception may not " "have a separate value")) w_value = w_type - w_type = space.getattr(w_value, space.wrap('__class__')) + w_type = space.abstract_getclass(w_value) if space.full_exceptions: # for the sake of language consistency we should not allow # things like 'raise 1', but it is probably fine (i.e. Modified: pypy/branch/pypy-normalize-exception/interpreter/pyframe.py ============================================================================== --- pypy/branch/pypy-normalize-exception/interpreter/pyframe.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/pyframe.py Wed Apr 6 19:16:43 2005 @@ -400,7 +400,8 @@ except OperationError, operationerr: # exception while normalizing the exception! # you get an exception, just not the one you might expect... - operationerr.normalize_exception(frame.space) + if frame.space.full_exceptions: + operationerr.normalize_exception(frame.space) # the stack setup is slightly different than in CPython: # instead of the traceback, we store the unroller object, # wrapped. Modified: pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py ============================================================================== --- pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py (original) +++ pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py Wed Apr 6 19:16:43 2005 @@ -217,6 +217,9 @@ def abstract_isclass(self, w_obj): return self.isinstance(w_obj, self.w_type) + def abstract_getclass(self, w_obj): + return self.type(w_obj) + def build_flow(self, func, constargs={}): """ From arigo at codespeak.net Wed Apr 6 20:12:46 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 20:12:46 +0200 (CEST) Subject: [pypy-svn] r10371 - pypy/branch/pypy-normalize-exception/interpreter Message-ID: <20050406181246.7FD8827B5B@code1.codespeak.net> Author: arigo Date: Wed Apr 6 20:12:46 2005 New Revision: 10371 Modified: pypy/branch/pypy-normalize-exception/interpreter/pyframe.py Log: This seems to make more sense... Modified: pypy/branch/pypy-normalize-exception/interpreter/pyframe.py ============================================================================== --- pypy/branch/pypy-normalize-exception/interpreter/pyframe.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/pyframe.py Wed Apr 6 20:12:46 2005 @@ -395,12 +395,12 @@ # push the exception to the value stack for inspection by the # exception handler (the code after the except:) operationerr = unroller.args[0] - try: - operationerr.normalize_exception(frame.space) - except OperationError, operationerr: - # exception while normalizing the exception! - # you get an exception, just not the one you might expect... - if frame.space.full_exceptions: + if frame.space.full_exceptions: + try: + operationerr.normalize_exception(frame.space) + except OperationError, operationerr: + # exception while normalizing the exception! + # you get an exception, just not the one you might expect... operationerr.normalize_exception(frame.space) # the stack setup is slightly different than in CPython: # instead of the traceback, we store the unroller object, From arigo at codespeak.net Wed Apr 6 20:31:15 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 20:31:15 +0200 (CEST) Subject: [pypy-svn] r10372 - pypy/branch/pypy-normalize-exception/tool Message-ID: <20050406183115.1DEAF27B5D@code1.codespeak.net> Author: arigo Date: Wed Apr 6 20:31:14 2005 New Revision: 10372 Modified: pypy/branch/pypy-normalize-exception/tool/pytestsupport.py Log: the interp-level 'raise' logic doesn't like our hacked AssertionError which pretends to live in the __builtin__ module... Modified: pypy/branch/pypy-normalize-exception/tool/pytestsupport.py ============================================================================== --- pypy/branch/pypy-normalize-exception/tool/pytestsupport.py (original) +++ pypy/branch/pypy-normalize-exception/tool/pytestsupport.py Wed Apr 6 20:31:14 2005 @@ -118,6 +118,7 @@ gateway.Arguments])) w_dict = space.newdict([]) space.setitem(w_dict, space.wrap('__init__'), w_init) + space.setitem(w_dict, space.wrap('__module__'), space.wrap('exceptions')) return space.call_function(w_metaclass, space.wrap('AssertionError'), space.newtuple([w_BuiltinAssertionError]), From arigo at codespeak.net Wed Apr 6 20:31:28 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 20:31:28 +0200 (CEST) Subject: [pypy-svn] r10373 - pypy/branch/pypy-normalize-exception/interpreter Message-ID: <20050406183128.952EB27B5D@code1.codespeak.net> Author: arigo Date: Wed Apr 6 20:31:28 2005 New Revision: 10373 Modified: pypy/branch/pypy-normalize-exception/interpreter/pyframe.py Log: Simplification. Modified: pypy/branch/pypy-normalize-exception/interpreter/pyframe.py ============================================================================== --- pypy/branch/pypy-normalize-exception/interpreter/pyframe.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/pyframe.py Wed Apr 6 20:31:28 2005 @@ -396,12 +396,7 @@ # exception handler (the code after the except:) operationerr = unroller.args[0] if frame.space.full_exceptions: - try: - operationerr.normalize_exception(frame.space) - except OperationError, operationerr: - # exception while normalizing the exception! - # you get an exception, just not the one you might expect... - operationerr.normalize_exception(frame.space) + operationerr.normalize_exception(frame.space) # the stack setup is slightly different than in CPython: # instead of the traceback, we store the unroller object, # wrapped. From arigo at codespeak.net Wed Apr 6 20:44:11 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 20:44:11 +0200 (CEST) Subject: [pypy-svn] r10374 - in pypy/branch/pypy-normalize-exception: interpreter tool Message-ID: <20050406184411.77CB227B5B@code1.codespeak.net> Author: arigo Date: Wed Apr 6 20:44:11 2005 New Revision: 10374 Modified: pypy/branch/pypy-normalize-exception/interpreter/error.py pypy/branch/pypy-normalize-exception/tool/pytestsupport.py Log: No, it wasn't a good idea to check for __module__ != '__builtin__' after all. Modified: pypy/branch/pypy-normalize-exception/interpreter/error.py ============================================================================== --- pypy/branch/pypy-normalize-exception/interpreter/error.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/error.py Wed Apr 6 20:44:11 2005 @@ -170,13 +170,14 @@ if space.full_exceptions: # for the sake of language consistency we should not allow # things like 'raise 1', but it is probably fine (i.e. - # not ambiguous) to allow them in the explicit form 'raise int, 1' + # not ambiguous) to allow them in the explicit form + # 'raise int, 1' try: - w_module = space.getattr(w_type, space.wrap('__module__')) + space.getattr(w_value, space.wrap('__dict__')) except OperationError: - pass - else: - if space.eq_w(w_module, space.wrap('__builtin__')): + try: + space.getattr(w_value, space.wrap('__slots__')) + except OperationError: raise OperationError(space.w_TypeError, space.wrap("raising built-in objects can " "be ambiguous, " Modified: pypy/branch/pypy-normalize-exception/tool/pytestsupport.py ============================================================================== --- pypy/branch/pypy-normalize-exception/tool/pytestsupport.py (original) +++ pypy/branch/pypy-normalize-exception/tool/pytestsupport.py Wed Apr 6 20:44:11 2005 @@ -118,7 +118,6 @@ gateway.Arguments])) w_dict = space.newdict([]) space.setitem(w_dict, space.wrap('__init__'), w_init) - space.setitem(w_dict, space.wrap('__module__'), space.wrap('exceptions')) return space.call_function(w_metaclass, space.wrap('AssertionError'), space.newtuple([w_BuiltinAssertionError]), From arigo at codespeak.net Wed Apr 6 22:49:22 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 22:49:22 +0200 (CEST) Subject: [pypy-svn] r10375 - pypy/branch/pypy-normalize-exception/objspace/flow/test Message-ID: <20050406204922.DACBD27B48@code1.codespeak.net> Author: arigo Date: Wed Apr 6 22:49:22 2005 New Revision: 10375 Modified: pypy/branch/pypy-normalize-exception/objspace/flow/test/test_objspace.py Log: Fixed or disabled tests -- 'raise' now produce quite a bit of code, can't really check the shape of the graph... Modified: pypy/branch/pypy-normalize-exception/objspace/flow/test/test_objspace.py ============================================================================== --- pypy/branch/pypy-normalize-exception/objspace/flow/test/test_objspace.py (original) +++ pypy/branch/pypy-normalize-exception/objspace/flow/test/test_objspace.py Wed Apr 6 22:49:22 2005 @@ -241,10 +241,14 @@ def test_raise1(self): x = self.codetest(self.raise1) self.show(x) - assert len(x.startblock.operations) == 0 - assert x.startblock.exits[0].args == [ - Constant(IndexError), - Constant(None)] # no normalization + simplify_graph(x) + ops = x.startblock.operations + assert len(ops) == 2 + assert ops[0].opname == 'simple_call' + assert ops[0].args == [Constant(IndexError)] + assert ops[1].opname == 'type' + assert ops[1].args == [ops[0].result] + assert x.startblock.exits[0].args == [ops[1].result, ops[0].result] assert x.startblock.exits[0].target is x.exceptblock #__________________________________________________________ @@ -254,11 +258,7 @@ def test_raise2(self): x = self.codetest(self.raise2) self.show(x) - assert len(x.startblock.operations) == 0 - assert x.startblock.exits[0].args == [ - Constant(IndexError), - x.startblock.inputargs[0]] - assert x.startblock.exits[0].target is x.exceptblock + # XXX can't check the shape of the graph, too complicated... #__________________________________________________________ def raise3(msg): @@ -267,16 +267,7 @@ def test_raise3(self): x = self.codetest(self.raise3) self.show(x) - simplify_graph(x) - assert len(x.startblock.operations) == 1 - assert x.startblock.operations[0].opname == 'simple_call' - assert list(x.startblock.operations[0].args) == [ - Constant(IndexError), - x.startblock.inputargs[0]] - assert x.startblock.exits[0].args == [ - Constant(IndexError), - x.startblock.operations[0].result] - assert x.startblock.exits[0].target is x.exceptblock + # XXX can't check the shape of the graph, too complicated... #__________________________________________________________ def raise4(stuff): From arigo at codespeak.net Wed Apr 6 22:52:45 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 22:52:45 +0200 (CEST) Subject: [pypy-svn] r10376 - pypy/branch/pypy-normalize-exception/translator Message-ID: <20050406205245.A6BA427B48@code1.codespeak.net> Author: arigo Date: Wed Apr 6 22:52:45 2005 New Revision: 10376 Modified: pypy/branch/pypy-normalize-exception/translator/geninterplevel.py Log: normalize_exception() now a method on the OperationError instance. Modified: pypy/branch/pypy-normalize-exception/translator/geninterplevel.py ============================================================================== --- pypy/branch/pypy-normalize-exception/translator/geninterplevel.py (original) +++ pypy/branch/pypy-normalize-exception/translator/geninterplevel.py Wed Apr 6 22:52:45 2005 @@ -1121,8 +1121,7 @@ # which goes to the last err%d_%d label written above. # Since we only have OperationError, we need to select: yield "except %s, e:" % (self.nameof(OperationError),) - yield " e.w_type, e.w_value, _ign = space.unpacktuple(" - yield " space.normalize_exception(e.w_type, e.w_value, space.w_None), 3)" + yield " e.normalize_exception(space)" q = "if" for link in block.exits[1:]: assert issubclass(link.exitcase, Exception) From arigo at codespeak.net Wed Apr 6 22:58:08 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 22:58:08 +0200 (CEST) Subject: [pypy-svn] r10377 - pypy/branch/pypy-normalize-exception/interpreter Message-ID: <20050406205808.3ED0C27B48@code1.codespeak.net> Author: arigo Date: Wed Apr 6 22:58:08 2005 New Revision: 10377 Modified: pypy/branch/pypy-normalize-exception/interpreter/pyopcode.py Log: Ignore the 3rd argument of 'raise' while flow-spacing. Modified: pypy/branch/pypy-normalize-exception/interpreter/pyopcode.py ============================================================================== --- pypy/branch/pypy-normalize-exception/interpreter/pyopcode.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/pyopcode.py Wed Apr 6 22:58:08 2005 @@ -326,7 +326,7 @@ if 1: w_type = f.valuestack.pop() operror = OperationError(w_type, w_value) operror.normalize_exception(space) - if space.is_w(w_traceback, space.w_None): + if not space.full_exceptions or space.is_w(w_traceback, space.w_None): # common case raise operror else: From arigo at codespeak.net Wed Apr 6 23:23:52 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 6 Apr 2005 23:23:52 +0200 (CEST) Subject: [pypy-svn] r10378 - pypy/branch/pypy-normalize-exception/annotation Message-ID: <20050406212352.3DF7527B49@code1.codespeak.net> Author: arigo Date: Wed Apr 6 23:23:52 2005 New Revision: 10378 Modified: pypy/branch/pypy-normalize-exception/annotation/binaryop.py pypy/branch/pypy-normalize-exception/annotation/builtin.py pypy/branch/pypy-normalize-exception/annotation/unaryop.py Log: Completed the issubtype() operation support. Merged the issubtype operation with the issubclass built-in. (Should do the same with type and type, btw) Modified: pypy/branch/pypy-normalize-exception/annotation/binaryop.py ============================================================================== --- pypy/branch/pypy-normalize-exception/annotation/binaryop.py (original) +++ pypy/branch/pypy-normalize-exception/annotation/binaryop.py Wed Apr 6 23:23:52 2005 @@ -24,7 +24,7 @@ 'getitem', 'setitem', 'inplace_add', 'inplace_sub', 'lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_', - 'union', 'issubtype', + 'union', 'lshift', ]) @@ -350,15 +350,3 @@ class __extend__(pairtype(SomePBC, SomeList )): def union((pbc, lst)): return pair(lst, pbc).union() - - -class __extend__(pairtype(SomeObject, SomePBC)): - def issubtype((obj, pbc)): - s = SomeBool() - if obj.is_constant() and pbc.is_constant(): - s.const = issubclass(obj.const, pbc.const) - if hasattr(obj,'is_type_of') and pbc.is_constant(): - bk = getbookkeeper() - s.knowntypedata = (obj.is_type_of, bk.valueoftype(pbc.const)) - return s - Modified: pypy/branch/pypy-normalize-exception/annotation/builtin.py ============================================================================== --- pypy/branch/pypy-normalize-exception/annotation/builtin.py (original) +++ pypy/branch/pypy-normalize-exception/annotation/builtin.py Wed Apr 6 23:23:52 2005 @@ -70,7 +70,7 @@ """ we're going to try to be less silly in the face of old-style classes""" return cls2 is object or issubclass(cls1, cls2) -def builtin_isinstance(s_obj, s_type): +def builtin_isinstance(s_obj, s_type, variable=None): s = SomeBool() if s_type.is_constant(): typ = s_type.const @@ -87,21 +87,25 @@ # XXX HACK HACK HACK # XXX HACK HACK HACK bk = getbookkeeper() - fn, block, i = bk.position_key - annotator = bk.annotator - op = block.operations[i] - assert op.opname == "simple_call" - assert len(op.args) == 3 - assert op.args[0] == Constant(isinstance) - assert annotator.binding(op.args[1]) == s_obj - s.knowntypedata = ([op.args[1]], bk.valueoftype(typ)) + if variable is None: + fn, block, i = bk.position_key + op = block.operations[i] + assert op.opname == "simple_call" + assert len(op.args) == 3 + assert op.args[0] == Constant(isinstance) + variable = op.args[1] + assert bk.annotator.binding(variable) == s_obj + s.knowntypedata = ([variable], bk.valueoftype(typ)) return s def builtin_issubclass(s_cls1, s_cls2): if s_cls1.is_constant() and s_cls2.is_constant(): return immutablevalue(issubclass(s_cls1.const, s_cls2.const)) - else: - return SomeBool() + if hasattr(s_cls1, 'is_type_of') and len(s_cls1.is_type_of) == 1: + var = s_cls1.is_type_of[0] + annotator = getbookkeeper().annotator + return builtin_isinstance(annotator.binding(var), s_cls2, var) + return SomeBool() def builtin_getattr(s_obj, s_attr, s_default=None): if not s_attr.is_constant() or not isinstance(s_attr.const, str): Modified: pypy/branch/pypy-normalize-exception/annotation/unaryop.py ============================================================================== --- pypy/branch/pypy-normalize-exception/annotation/unaryop.py (original) +++ pypy/branch/pypy-normalize-exception/annotation/unaryop.py Wed Apr 6 23:23:52 2005 @@ -14,6 +14,7 @@ from pypy.annotation.factory import BlockedInference, generalize, ListFactory from pypy.annotation.bookkeeper import getbookkeeper from pypy.annotation.classdef import isclassdef +from pypy.annotation.builtin import builtin_issubclass # convenience only! def immutablevalue(x): @@ -21,7 +22,7 @@ UNARY_OPERATIONS = set(['len', 'is_true', 'getattr', 'setattr', 'simple_call', 'call_args', - 'iter', 'next', 'invert', 'type']) + 'iter', 'next', 'invert', 'type', 'issubtype']) for opname in UNARY_OPERATIONS: missing_operation(SomeObject, opname) @@ -43,7 +44,10 @@ assert annotator.binding(op.args[0]) == obj r.is_type_of = [op.args[0]] return r - + + def issubtype(obj, s_cls): + return builtin_issubclass(obj, s_cls) + def len(obj): return SomeInteger(nonneg=True) From cfbolz at codespeak.net Thu Apr 7 00:37:20 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Thu, 7 Apr 2005 00:37:20 +0200 (CEST) Subject: [pypy-svn] r10385 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050406223720.04BD527B44@code1.codespeak.net> Author: cfbolz Date: Thu Apr 7 00:37:20 2005 New Revision: 10385 Modified: pypy/dist/pypy/translator/llvm/class.ll pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/llvmbc.py pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Log: Some various fixes: * Exceptions that occur in LLVM code are caught and turned into a RuntimeError (which avoids crashing the interpreter) * The code generator tries to avoid creating empty blocks. Modified: pypy/dist/pypy/translator/llvm/class.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/class.ll (original) +++ pypy/dist/pypy/translator/llvm/class.ll Thu Apr 7 00:37:20 2005 @@ -8,6 +8,8 @@ %std.last_exception.type = internal global %std.class* null %std.last_exception.value = internal global %std.exception* null +%pypy__uncaught_exception = global int 0 + implementation Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Thu Apr 7 00:37:20 2005 @@ -23,7 +23,7 @@ bind = gen.annotator.binding(obj) if bind.__class__ is annmodel.SomePBC and \ gen.annotator.bookkeeper.userclasses.has_key(bind.const): - classdef = gen.annotator.bookkeeper.userclasses[bind.const] + classdef = gen.annotator.bookkeeper.userclasses[bind.const] elif isinstance(obj, annmodel.SomeInstance): classdef = obj.classdef elif isinstance(obj, ClassDef): @@ -46,6 +46,8 @@ self.classdef.cls.__name__) if debug: print self.name + if ".Exception.object" in self.objectname: + 1/0 self.dependencies = sets.Set() self.setup_done = False self.attr_num = {} @@ -59,9 +61,18 @@ print len(ClassRepr.l_classes) gen = self.gen if self.classdef.basedef is not None: #get attributes from base classes - self.l_base = gen.get_repr(self.classdef.basedef) + #XXX if the base class is a builtin Exception we want the + #ExceptionTypeRepr, not the ClassRepr + if self.classdef.basedef.cls.__module__ == "exceptions": + self.l_base = gen.get_repr(self.classdef.basedef.cls) + #XXX we want something more complicated here: + #if the class has no __init__ function we need to insert the + #'args' attribute the builtin exceptions have + attribs = [] + else: + self.l_base = gen.get_repr(self.classdef.basedef) + attribs = self.l_base.attributes self.dependencies.add(self.l_base) - attribs = self.l_base.attributes else: self.l_base = None attribs = [] @@ -114,7 +125,7 @@ (l_tmp.llvmname(), self.objectname) lblock.instruction(i) lblock.instruction("store %%std.class* %s, %%std.class** %s" % - (self.l_base.objectname, l_tmp.llvmname())) + (self.l_base.llvmname(), l_tmp.llvmname())) def llvmtype(self): return "%std.class*" @@ -212,7 +223,7 @@ def create_builtin_exceptions(gen, dependencies): import exceptions - for exc in dir(exceptions): + for exc in ["IndexError"]: if "__" not in exc: l_exc = gen.get_repr(getattr(exceptions, exc)) dependencies.add(l_exc) @@ -256,6 +267,9 @@ def llvmtype(self): return "%std.class* " + def llvmname(self): + return self.objectname + def typed_name(self): return "%%std.class* %s" % self.objectname @@ -267,7 +281,7 @@ (l_tmp.llvmname(), self.objectname) lblock.instruction(i) lblock.instruction("store %%std.class* %s, %%std.class** %s" % - (self.l_base.objectname, l_tmp.llvmname())) + (self.l_base.llvmname(), l_tmp.llvmname())) def op_simple_call(self, l_target, args, lblock, l_func): lblock.malloc(l_target) Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Thu Apr 7 00:37:20 2005 @@ -197,7 +197,7 @@ l_arg = self.gen.get_repr(arg) l_values = [l_l.l_args[i] for l_l in l_incoming_links] self.l_func.dependencies.add(l_arg) - self.lblock.phi(l_arg, l_values, ["%" + l_l.blockname + self.lblock.phi(l_arg, l_values, ["%" + l_l.fromblock for l_l in l_incoming_links]) def create_space_ops(self): @@ -232,14 +232,14 @@ l_func = self.l_func l_link = LinkRepr.get_link(pyblock.exits[0], l_func, self.gen) if self.pyblock.exitswitch is None: - self.lblock.uncond_branch("%" + l_link.blockname) + self.lblock.uncond_branch("%" + l_link.toblock) else: l_switch = self.gen.get_repr(pyblock.exitswitch) l_link = LinkRepr.get_link(pyblock.exits[0], l_func, self.gen) l_link2 = LinkRepr.get_link(pyblock.exits[1], l_func, self.gen) l_func.dependencies.add(l_switch) - self.lblock.cond_branch(l_switch, "%" + l_link2.blockname, - "%" + l_link.blockname) + self.lblock.cond_branch(l_switch, "%" + l_link2.toblock, + "%" + l_link.toblock) #1 / 0 @@ -270,7 +270,7 @@ regularblock, exceptblock) l_func.add_block(self.lblock) l_link = LinkRepr.get_link(pyblock.exits[0], l_func, gen) - self.lblock.regularblock = l_link.blockname + self.lblock.regularblock = l_link.toblock self.build_bb() self.build_exc_block() @@ -303,7 +303,7 @@ l_exitcases = [self.gen.get_repr(ex.exitcase) for ex in self.pyblock.exits[1:]] self.l_func.dependencies.update(l_exitcases) - sw = [(str(abs(id(ex.exitcase))), "%" + l_l.blockname) + sw = [(str(abs(id(ex.exitcase))), "%" + l_l.toblock) for ex, l_l in zip(self.pyblock.exits[1:], l_exits)] lexcblock.switch(l_ui, "%" + self.lblock.label + ".unwind", sw) lunwindblock = llvmbc.BasicBlock(self.lblock.label + ".unwind") @@ -357,6 +357,7 @@ self.create_link_block() def create_link_block(self): + #a block is created in which the neccessary cast can be performed link = self.link l_func = self.l_func self.blockname = "bl%i_to_bl%i" % (l_func.blocknum[link.prevblock], @@ -382,7 +383,18 @@ self.lblock.cast(l_tmp, l_a) self.l_args[i] = l_tmp self.lblock.uncond_branch("%%block%i" % l_func.blocknum[link.target]) - self.l_func.add_block(self.lblock) + #try to remove unneded blocks to increase readability + if len(self.lblock.instructions) == 1: + prevblock = self.link.prevblock + self.fromblock = "block%i" % self.l_func.blocknum[prevblock] + is_tryblock = isinstance(prevblock.exitswitch, Constant) and \ + prevblock.exitswitch.value == last_exception + if is_tryblock and self.link.exitcase not in (None, True, False): + self.fromblock += ".except" + self.toblock = "block%i" % self.l_func.blocknum[self.link.target] + else: + self.fromblock = self.toblock = self.blockname + self.l_func.add_block(self.lblock) class EntryFunctionRepr(LLVMRepr): @@ -396,23 +408,39 @@ def setup(self): self.l_function = self.gen.get_repr(self.function) self.dependencies.add(self.l_function) - lblock = llvmbc.BasicBlock("entry") #XXX clean this up + #create entry block + lblock = llvmbc.BasicBlock("entry") lblock.instruction("%tmp = load bool* %Initialized.0__") lblock.instruction("br bool %tmp, label %real_entry, label %init") lblock.phi_done = True lblock.closed = True self.llvm_func = llvmbc.Function(self.llvmfuncdef(), lblock) + #create init block. The LLVM "module" is initialized there self.init_block = llvmbc.BasicBlock("init") self.init_block.instruction("store bool true, bool* %Initialized.0__") - real_entry = llvmbc.BasicBlock("real_entry") + self.llvm_func.basic_block(self.init_block) + #create the block that calls the "real" function + real_entry = llvmbc.TryBasicBlock("real_entry", "retblock", "exc") l_ret = self.gen.get_local_tmp(self.l_function.retvalue.type, self) + real_entry.last_op = True self.l_function.op_simple_call( l_ret, [self.function] + self.l_function.l_args, real_entry, self) - real_entry.ret(l_ret) self.llvm_func.basic_block(real_entry) - self.llvm_func.basic_block(self.init_block) + #create the block that catches remaining unwinds and sets + #pypy____uncaught_exception to 1 + self.exceptblock = llvmbc.BasicBlock("exc") + ins = """store int 1, int* %%pypy__uncaught_exception +\t%%dummy_ret = cast int 0 to %s +\tret %s %%dummy_ret""" % tuple([self.l_function.retvalue.llvmtype()] * 2) + self.exceptblock.instruction(ins) + self.exceptblock.closed = True + self.llvm_func.basic_block(self.exceptblock) + #create the return block + retblock = llvmbc.BasicBlock("retblock") + retblock.ret(l_ret) + self.llvm_func.basic_block(retblock) def cfuncdef(self): a = self.l_function.translator.annotator @@ -433,13 +461,23 @@ name = self.name[1:] args = self.l_function.graph.startblock.inputargs self.pyrex_source = ["cdef extern %s\n" % - (self.cfuncdef())] - self.pyrex_source += ["def wrap_%s(" % name] + (self.cfuncdef()), + "cdef extern int pypy__uncaught_exception\n"] + + self.pyrex_source.append("def wrap_%s(" % name) t = [] for i, a in enumerate(args): t += ["%s" % a] t = ", ".join(t) - self.pyrex_source += t + "):\n\treturn %s(%s)\n\n" % (name, t) + s = """ + result = %s(%s) + global pypy__uncaught_exception + if pypy__uncaught_exception != 0: + pypy__uncaught_exception = 0 + raise RuntimeError('An uncaught exception occured in the LLVM code.') + else: + return result""" % (name, t) + self.pyrex_source.append(t + "):\n" + s) self.pyrex_source = "".join(self.pyrex_source) return self.pyrex_source Modified: pypy/dist/pypy/translator/llvm/llvmbc.py ============================================================================== --- pypy/dist/pypy/translator/llvm/llvmbc.py (original) +++ pypy/dist/pypy/translator/llvm/llvmbc.py Thu Apr 7 00:37:20 2005 @@ -16,14 +16,19 @@ self.funcdef = funcdef self.startbb = startbb self.blocks = {} + self.blocklist = [] def basic_block(self, block): - assert block.label != self.startbb.label, "Block has same label as startblock!" + assert block.label != self.startbb.label, \ + "Block has same label as startblock!" + if block.label in self.blocks: + raise ValueError, "Can't add another block with the same name." self.blocks[block.label] = block + self.blocklist.append(block) def __str__(self): r = [self.funcdef, " {\n", str(self.startbb)] - r += [str(bb) for bb in self.blocks.values()] + ["}\n\n"] + r += [str(bb) for bb in self.blocklist] + ["}\n\n"] return "".join(r) class BasicBlock(object): @@ -97,7 +102,7 @@ if l_type is None: #XXX assuming that l_target.llvmtype() ends with an "*" here s = "%s = malloc %s" % (l_target.llvmname(), - l_target.llvmtype()[:1]) + l_target.llvmtype()[:-1]) else: s = "%s = malloc %s" % (l_target.llvmname(), l_type.typename_wo_pointer()) Modified: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/seqrepr.py (original) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Thu Apr 7 00:37:20 2005 @@ -92,7 +92,7 @@ def t_op_newtuple(self, l_target, args, lblock, l_func): l_args = [self.gen.get_repr(arg) for arg in args] l_func.dependencies.update(l_args) - lblock.malloc(l_target, self) + lblock.malloc(l_target) l_ptrs = [self.gen.get_local_tmp(\ PointerTypeRepr(l.typename(),self.gen), l_func) for l in self.l_itemtypes] Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Thu Apr 7 00:37:20 2005 @@ -298,15 +298,16 @@ #doesn't work yet! class MyException(Exception): - pass + def __init__(self, n): + self.n = n def raises(i): if i: - raise MyException + raise MyException, 10 return 1 def catches(i): try: return raises(i) - except MyException: - return 2 + except MyException, e: + return e.n From hpk at codespeak.net Thu Apr 7 01:06:26 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 7 Apr 2005 01:06:26 +0200 (CEST) Subject: [pypy-svn] r10387 - in pypy/branch/pycollect-dist-pypy: . pypy pypy/lib/test2 pypy/module/_sre_pypy pypy/tool pypy/translator/test Message-ID: <20050406230626.1F14627B47@code1.codespeak.net> Author: hpk Date: Thu Apr 7 01:06:25 2005 New Revision: 10387 Added: pypy/branch/pycollect-dist-pypy/ (props changed) - copied from r10386, pypy/dist/ Modified: pypy/branch/pycollect-dist-pypy/pypy/conftest.py pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py pypy/branch/pycollect-dist-pypy/pypy/lib/test2/support_tests.py pypy/branch/pycollect-dist-pypy/pypy/module/_sre_pypy/interpreter_code.py pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py pypy/branch/pycollect-dist-pypy/pypy/translator/test/test_pyrextrans.py Log: create a modified branch which interfaces with an ongoing py.test refactoring (called the py collect branch because it targets a redesign of the test collection process). There remain a few problems and one major issue (regarding 'from pypy.conftest import ...' to work as expected). This probably requires tackling import issues. funfunfun. Modified: pypy/branch/pycollect-dist-pypy/pypy/conftest.py ============================================================================== --- pypy/dist/pypy/conftest.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/conftest.py Thu Apr 7 01:06:25 2005 @@ -2,6 +2,7 @@ from pypy.interpreter.gateway import app2interp_temp from pypy.interpreter.error import OperationError from pypy.tool import pytestsupport +from inspect import isclass rootdir = py.magic.autopath().dirpath() @@ -10,7 +11,12 @@ # to py.test's standard options) # Option = py.test.Option -options = ('pypy options', [ + +#class Options: +# group = "pypy options" +# optionlist = + +option = py.test.addoptions("pypy options", Option('-o', '--objspace', action="store", default=None, type="string", dest="objspacename", help="object space to run tests on."), @@ -18,17 +24,17 @@ help="enable oldstyle classes as default metaclass (std objspace only)"), Option('--allpypy', action="store_true",dest="allpypy", default=False, help="run everything possible on top of PyPy."), -]) + ) def getobjspace(name=None, _spacecache={}): """ helper for instantiating and caching space's for testing. """ if name is None: - name = py.test.config.option.objspacename + name = option.objspacename if name is None: name = py.std.os.environ.get('OBJSPACE', 'std') else: - optionname = py.test.config.option.objspacename + optionname = option.objspacename if optionname is not None and optionname != name: return None try: @@ -38,7 +44,7 @@ module = __import__("pypy.objspace.%s" % name, None, None, ["Space"]) space = module.Space() _spacecache[name] = space - if name == 'std' and py.test.config.option.oldstyle: + if name == 'std' and option.oldstyle: space.enable_old_style_classes_as_default_metaclass() if name != 'flow': # not sensible for flow objspace case space.setitem(space.builtin.w_dict, space.wrap('AssertionError'), @@ -60,26 +66,34 @@ and at interp-level (because we need to stick a space at the class) ourselves. """ - def collect_function(self, extpy): - if extpy.check(func=1, basestarts='test_'): - if extpy.check(genfunc=1): - yield IntTestGenerator(extpy) - else: - yield IntTestFunction(extpy) + def funcnamefilter(self, name): + return name.startswith('test_') or name.startswith('app_test_') + def classnamefilter(self, name): + return name.startswith('Test') or name.startswith('AppTest') - def collect_app_function(self, extpy): - if extpy.check(func=1, basestarts='app_test_'): - assert not extpy.check(genfunc=1), ( - "generator app level functions? you must be joking") - yield AppTestFunction(extpy) - - def collect_class(self, extpy): - if extpy.check(class_=1, basestarts="Test"): - yield IntClassCollector(extpy) - - def collect_appclass(self, extpy): - if extpy.check(class_=1, basestarts="AppTest"): - yield AppClassCollector(extpy) + def setup(self): + # stick py.test raise in module globals + self.obj.raises = py.test.raises + super(Module, self).setup() + # if hasattr(mod, 'objspacename'): + # mod.space = getttestobjspace(mod.objspacename) + + def join(self, name): + obj = getattr(self.obj, name) + if isclass(obj): + if name.startswith('AppTest'): + return AppClassCollector(name, parent=self) + else: + return IntClassCollector(name, parent=self) + elif hasattr(obj, 'func_code'): + if name.startswith('app_test_'): + assert not obj.func_code.co_flags & 32, \ + "generator app level functions? you must be joking" + return AppTestFunction(name, parent=self) + elif obj.func_code.co_flags & 32: # generator function + return self.Generator(name, parent=self) + else: + return IntTestFunction(name, parent=self) def gettestobjspace(name=None): space = getobjspace(name) @@ -88,33 +102,21 @@ return space -class PyPyItem(py.test.Item): +class PyPyTestFunction(py.test.Function): # All PyPy test items catch and display OperationErrors specially. - def setup_module(self, mod): - # if hasattr(mod, 'objspacename'): - # mod.space = getttestobjspace(mod.objspacename) - # stick py.test raise in module globals - mod.raises = py.test.raises - super(PyPyItem, self).setup_module(mod) - - def setup_class(self, cls): - name = getattr(cls, 'objspacename', None) - if name is None: - m = __import__(cls.__module__, {}, {}, ["objspacename"]) - name = getattr(m, 'objspacename', None) - cls.space = gettestobjspace(name) - super(PyPyItem, self).setup_class(cls) - def execute_appex(self, space, target, *args): try: target(*args) except OperationError, e: if e.match(space, space.w_KeyboardInterrupt): raise KeyboardInterrupt - raise self.Failed(excinfo=pytestsupport.AppExceptionInfo(space, e)) + appexcinfo = pytestsupport.AppExceptionInfo(space, e) + if appexcinfo.traceback: + raise self.Failed(excinfo=pytestsupport.AppExceptionInfo(space, e)) + raise -class IntTestFunction(PyPyItem): +class IntTestFunction(PyPyTestFunction): def execute(self, target, *args): co = target.func_code if 'space' in co.co_varnames[:co.co_argcount]: @@ -124,29 +126,37 @@ else: target(*args) -class IntTestMethod(PyPyItem): - def execute(self, target, *args): - target(*args) - -class AppTestFunction(PyPyItem): +class AppTestFunction(PyPyTestFunction): def execute(self, target, *args): assert not args name = target.func_globals.get('objspacename', None) space = gettestobjspace(name) func = app2interp_temp(target) + print "executing", func self.execute_appex(space, func, space) - -class AppTestMethod(PyPyItem): +class AppTestMethod(PyPyTestFunction): def execute(self, target, *args): assert not args space = target.im_self.space func = app2interp_temp(target.im_func) self.execute_appex(space, func, space, space.w_None) -class AppClassCollector(py.test.collect.Class): - Item = AppTestMethod - class IntClassCollector(py.test.collect.Class): - Item = IntTestMethod - + Function = IntTestFunction + + def setup(self): + cls = self.obj + name = getattr(cls, 'objspacename', None) + if name is None: + m = __import__(cls.__module__, {}, {}, ["objspacename"]) + name = getattr(m, 'objspacename', None) + cls.space = gettestobjspace(name) + super(IntClassCollector, self).setup() + +class AppClassInstance(py.test.collect.Instance): + Function = AppTestMethod + +class AppClassCollector(IntClassCollector): + Instance = AppClassInstance + Modified: pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py ============================================================================== --- pypy/dist/pypy/lib/test2/conftest.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py Thu Apr 7 01:06:25 2005 @@ -2,7 +2,7 @@ import sys import py import pypy -from pypy.conftest import gettestobjspace +from pypy.conftest import gettestobjspace, option ModuleType = type(sys) @@ -25,7 +25,7 @@ conftest.__file__ = str(conftest.__file__) # keep out the py's importhook def Module(fspath): - if py.test.config.option.allpypy: + if option.allpypy: return conftest.Module(fspath) return UnittestModuleOnCPython(fspath) Modified: pypy/branch/pycollect-dist-pypy/pypy/lib/test2/support_tests.py ============================================================================== --- pypy/dist/pypy/lib/test2/support_tests.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/lib/test2/support_tests.py Thu Apr 7 01:06:25 2005 @@ -12,7 +12,7 @@ tmpdir = sys.pypy_getudir() except AttributeError: import py - tmpdir = str(py.test.config.tmpdir) + tmpdir = str(py.test.ensuretemp('support_tests_tempdir')) TESTFN = os.path.join(tmpdir, '@test') class Error(Exception): Modified: pypy/branch/pycollect-dist-pypy/pypy/module/_sre_pypy/interpreter_code.py ============================================================================== --- pypy/dist/pypy/module/_sre_pypy/interpreter_code.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/module/_sre_pypy/interpreter_code.py Thu Apr 7 01:06:25 2005 @@ -104,6 +104,7 @@ def _SRE_Pattern_match(space, w_wrapped, pattern, pos, endpos): wrapped = space.interpclass_w(w_wrapped).value + print pattern, pos, endpos match_obj = wrapped.match(pattern, pos, endpos) if match_obj is None: return space.w_None Modified: pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/pytestsupport.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py Thu Apr 7 01:06:25 2005 @@ -4,7 +4,10 @@ from py.__impl__.magic import exprinfo from pypy.interpreter import gateway from pypy.interpreter.error import OperationError +import pypy +optionpath = py.path.extpy(py.path.local(pypy.__file__).dirpath('conftest.py'), + 'option') # ____________________________________________________________ class AppFrame(py.code.Frame): @@ -99,7 +102,7 @@ source = str(source).strip() except py.error.ENOENT: source = None - if source and not py.test.config.option.nomagic: + if source and not optionpath.resolve().nomagic: msg = exprinfo.interpret(source, runner, should_fail=True) space.setattr(w_self, space.wrap('args'), space.newtuple([space.wrap(msg)])) Modified: pypy/branch/pycollect-dist-pypy/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/dist/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/translator/test/test_pyrextrans.py Thu Apr 7 01:06:25 2005 @@ -7,6 +7,11 @@ from pypy.translator.tool.buildpyxmodule import skip_missing_compiler from pypy.translator.translator import Translator +import pypy, py +optionpath = py.path.extpy(py.path.local(pypy.__file__).dirpath('conftest.py'), + 'option') +#from pypy.conftest import option + from pypy.translator.test import snippet # XXX this tries to make compiling faster for full-scale testing @@ -21,7 +26,7 @@ try: func = func.im_func except AttributeError: pass - dot = py.test.config.option.verbose >0 and 1 or 0 + dot = optionpath.resolve().verbose > 0 and 1 or 0 options = { 'simplify' : 1, 'dot' : dot, From pedronis at codespeak.net Thu Apr 7 01:28:27 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 7 Apr 2005 01:28:27 +0200 (CEST) Subject: [pypy-svn] r10388 - in pypy/branch/pypy-normalize-exception: annotation annotation/test interpreter objspace objspace/flow objspace/flow/test translator/test Message-ID: <20050406232827.02EF327B47@code1.codespeak.net> Author: pedronis Date: Thu Apr 7 01:28:27 2005 New Revision: 10388 Modified: pypy/branch/pypy-normalize-exception/annotation/binaryop.py pypy/branch/pypy-normalize-exception/annotation/bookkeeper.py pypy/branch/pypy-normalize-exception/annotation/builtin.py pypy/branch/pypy-normalize-exception/annotation/model.py pypy/branch/pypy-normalize-exception/annotation/test/test_model.py pypy/branch/pypy-normalize-exception/interpreter/gateway.py pypy/branch/pypy-normalize-exception/objspace/dummy.py pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py pypy/branch/pypy-normalize-exception/objspace/flow/test/test_objspace.py pypy/branch/pypy-normalize-exception/translator/test/test_annrpython.py Log: branch ready for merge tests pass geninterplevel reactivated Let the flow space generate TypeError code when necessary in raise code, with test case added support to distinguish SomeInstances that can be or cannot be None, is_ annotation is capable of using the info. Some tests for the model changes. Avoid that annotating an assert in tests tries to annotate py.test AssertionError code!! targetpypy1 works again targetpypy0 finishes annotatation without blocked blocks, in addition to the above changes necessary for this also tweaked dummy space a bit to survive trough the normalize_exception code analysis. Modified: pypy/branch/pypy-normalize-exception/annotation/binaryop.py ============================================================================== --- pypy/branch/pypy-normalize-exception/annotation/binaryop.py (original) +++ pypy/branch/pypy-normalize-exception/annotation/binaryop.py Thu Apr 7 01:28:27 2005 @@ -100,20 +100,26 @@ if obj2.is_constant(): if obj1.is_constant(): r.const = obj1.const is obj2.const + if obj2.const is None and not getattr(obj1, 'can_be_None', True): + r.const = False + elif obj1.is_constant(): + if obj1.const is None and not getattr(obj2, 'can_be_None', True): + r.const = False # XXX HACK HACK HACK # XXX HACK HACK HACK # XXX HACK HACK HACK bk = getbookkeeper() - if hasattr(obj1,'is_type_of') and obj2.is_constant(): - r.knowntypedata = (obj1.is_type_of, bk.valueoftype(obj2.const)) - return r - fn, block, i = bk.position_key - annotator = bk.annotator - op = block.operations[i] - assert op.opname == "is_" - assert len(op.args) == 2 - assert annotator.binding(op.args[0]) == obj1 - r.knowntypedata = ([op.args[0]], obj2) + if bk is not None: # for testing + if hasattr(obj1,'is_type_of') and obj2.is_constant(): + r.knowntypedata = (obj1.is_type_of, bk.valueoftype(obj2.const)) + return r + fn, block, i = bk.position_key + annotator = bk.annotator + op = block.operations[i] + assert op.opname == "is_" + assert len(op.args) == 2 + assert annotator.binding(op.args[0]) == obj1 + r.knowntypedata = ([op.args[0]], obj2) return r class __extend__(pairtype(SomeInteger, SomeInteger)): @@ -270,7 +276,7 @@ if basedef is None: # print warning? return SomeObject() - return SomeInstance(basedef) + return SomeInstance(basedef, can_be_None=ins1.can_be_None or ins2.can_be_None) class __extend__(pairtype(SomeIterator, SomeIterator)): @@ -329,7 +335,7 @@ class __extend__(pairtype(SomeInstance, SomePBC)): def union((ins, pbc)): if pbc.isNone(): - return ins + return SomeInstance(classdef=ins.classdef, can_be_None = True) classdef = ins.classdef.superdef_containing(pbc.knowntype) if classdef is None: # print warning? Modified: pypy/branch/pypy-normalize-exception/annotation/bookkeeper.py ============================================================================== --- pypy/branch/pypy-normalize-exception/annotation/bookkeeper.py (original) +++ pypy/branch/pypy-normalize-exception/annotation/bookkeeper.py Thu Apr 7 01:28:27 2005 @@ -321,7 +321,10 @@ def getbookkeeper(): """Get the current Bookkeeper. Only works during the analysis of an operation.""" - return getthreadlocals().bookkeeper + try: + return getthreadlocals().bookkeeper + except AttributeError: + return None def ishashable(x): try: Modified: pypy/branch/pypy-normalize-exception/annotation/builtin.py ============================================================================== --- pypy/branch/pypy-normalize-exception/annotation/builtin.py (original) +++ pypy/branch/pypy-normalize-exception/annotation/builtin.py Thu Apr 7 01:28:27 2005 @@ -226,6 +226,9 @@ BUILTIN_ANALYZERS[pypy.objspace.std.restricted_int.r_int] = builtin_int BUILTIN_ANALYZERS[pypy.objspace.std.restricted_int.r_uint] = restricted_uint BUILTIN_ANALYZERS[Exception.__init__.im_func] = exception_init +# this one is needed otherwise when annotating assert in a test we may try to annotate +# py.test AssertionError.__init__ . +BUILTIN_ANALYZERS[AssertionError.__init__.im_func] = exception_init BUILTIN_ANALYZERS[sys.getrefcount] = count BUILTIN_ANALYZERS[math.fmod] = math_fmod BUILTIN_ANALYZERS[math.floor] = math_floor Modified: pypy/branch/pypy-normalize-exception/annotation/model.py ============================================================================== --- pypy/branch/pypy-normalize-exception/annotation/model.py (original) +++ pypy/branch/pypy-normalize-exception/annotation/model.py Thu Apr 7 01:28:27 2005 @@ -166,9 +166,10 @@ class SomeInstance(SomeObject): "Stands for an instance of a (user-defined) class." - def __init__(self, classdef): + def __init__(self, classdef, can_be_None=False): self.classdef = classdef self.knowntype = classdef.cls + self.can_be_None = can_be_None def fmt_knowntype(self, kt): return None def fmt_classdef(self, cd): Modified: pypy/branch/pypy-normalize-exception/annotation/test/test_model.py ============================================================================== --- pypy/branch/pypy-normalize-exception/annotation/test/test_model.py (original) +++ pypy/branch/pypy-normalize-exception/annotation/test/test_model.py Thu Apr 7 01:28:27 2005 @@ -11,6 +11,29 @@ s6 = SomeImpossibleValue() slist = [s1,s2,s3,s4,s5,s6] + +class C(object): + pass + +class DummyClassDef: + def __init__(self, cls=C): + self.cls = cls + +si0 = SomeInstance(DummyClassDef(), True) +si1 = SomeInstance(DummyClassDef()) +sNone = SomePBC({None: True}) +sTrue = SomeBool() +sTrue.const = True +sFalse = SomeBool() +sFalse.const = False + +def test_is_None(): + assert pair(sNone, sNone).is_() == sTrue + assert pair(si1, sNone).is_() == sFalse + assert pair(si0, sNone).is_() != sTrue + assert pair(si0, sNone).is_() != sFalse + assert pair(si0, sNone).is_() == SomeBool() + def test_equality(): assert s1 != s2 != s3 != s4 != s5 != s6 assert s1 == SomeObject() Modified: pypy/branch/pypy-normalize-exception/interpreter/gateway.py ============================================================================== --- pypy/branch/pypy-normalize-exception/interpreter/gateway.py (original) +++ pypy/branch/pypy-normalize-exception/interpreter/gateway.py Thu Apr 7 01:28:27 2005 @@ -567,7 +567,7 @@ return klass(source, filename, modname, do_imports) # uncomment this to check against applevel without translation -ApplevelInterpClass = ApplevelClass +##ApplevelInterpClass = ApplevelClass def appdef(source, applevel=ApplevelClass): """ NOT_RPYTHON: build an app-level helper function, like for example: Modified: pypy/branch/pypy-normalize-exception/objspace/dummy.py ============================================================================== --- pypy/branch/pypy-normalize-exception/objspace/dummy.py (original) +++ pypy/branch/pypy-normalize-exception/objspace/dummy.py Thu Apr 7 01:28:27 2005 @@ -77,6 +77,9 @@ self.w_Ellpisis = W_Special(Ellipsis) self.w_False = self.wrap(0) self.w_True = self.wrap(1) + self.w_tuple = W_Special(tuple) + self.w_type = W_Special(type) + self.w_str = W_Special(str) for en in ObjSpace.ExceptionTable: setattr(self, 'w_'+en, self.wrap(en)) Modified: pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py ============================================================================== --- pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py (original) +++ pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py Thu Apr 7 01:28:27 2005 @@ -48,7 +48,7 @@ self.w_type = Constant(type) self.w_tuple = Constant(tuple) for exc in [KeyError, ValueError, IndexError, StopIteration, - AssertionError]: + AssertionError, TypeError]: clsname = exc.__name__ setattr(self, 'w_'+clsname, Constant(exc)) # the following exceptions are the ones that should not show up Modified: pypy/branch/pypy-normalize-exception/objspace/flow/test/test_objspace.py ============================================================================== --- pypy/branch/pypy-normalize-exception/objspace/flow/test/test_objspace.py (original) +++ pypy/branch/pypy-normalize-exception/objspace/flow/test/test_objspace.py Thu Apr 7 01:28:27 2005 @@ -278,6 +278,14 @@ self.show(x) #__________________________________________________________ + def raisez(z, tb): + raise z.__class__,z, tb + + def test_raisez(self): + x = self.codetest(self.raisez) + self.show(x) + + #__________________________________________________________ def raise_and_catch_1(exception_instance): try: raise exception_instance Modified: pypy/branch/pypy-normalize-exception/translator/test/test_annrpython.py ============================================================================== --- pypy/branch/pypy-normalize-exception/translator/test/test_annrpython.py (original) +++ pypy/branch/pypy-normalize-exception/translator/test/test_annrpython.py Thu Apr 7 01:28:27 2005 @@ -606,6 +606,13 @@ s = a.build_types(f, [object]) assert s.knowntype is C + def test_ann_assert(self): + def assert_(x): + assert x,"XXX" + a = RPythonAnnotator() + s = a.build_types(assert_, []) + assert s.const is None + def test_overrides(self): import sys excs = [] From pedronis at codespeak.net Thu Apr 7 02:02:07 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 7 Apr 2005 02:02:07 +0200 (CEST) Subject: [pypy-svn] r10390 - in pypy/dist/pypy: . annotation annotation/test documentation interpreter objspace objspace/flow objspace/flow/test objspace/std tool translator translator/test Message-ID: <20050407000207.B43D927B47@code1.codespeak.net> Author: pedronis Date: Thu Apr 7 02:02:07 2005 New Revision: 10390 Added: pypy/dist/pypy/TODO - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/TODO pypy/dist/pypy/annotation/binaryop.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/annotation/binaryop.py pypy/dist/pypy/annotation/bookkeeper.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/annotation/bookkeeper.py pypy/dist/pypy/annotation/builtin.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/annotation/builtin.py pypy/dist/pypy/annotation/model.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/annotation/model.py pypy/dist/pypy/annotation/test/test_model.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/annotation/test/test_model.py pypy/dist/pypy/annotation/unaryop.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/annotation/unaryop.py pypy/dist/pypy/documentation/controlflow.txt - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/documentation/controlflow.txt pypy/dist/pypy/interpreter/baseobjspace.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/interpreter/baseobjspace.py pypy/dist/pypy/interpreter/error.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/interpreter/error.py pypy/dist/pypy/interpreter/pyframe.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/interpreter/pyframe.py pypy/dist/pypy/interpreter/pyopcode.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/interpreter/pyopcode.py pypy/dist/pypy/objspace/dummy.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/objspace/dummy.py pypy/dist/pypy/objspace/flow/objspace.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/objspace/flow/objspace.py pypy/dist/pypy/objspace/flow/test/test_objspace.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/objspace/flow/test/test_objspace.py pypy/dist/pypy/objspace/std/objspace.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/objspace/std/objspace.py pypy/dist/pypy/tool/pytestsupport.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/tool/pytestsupport.py pypy/dist/pypy/translator/annrpython.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/translator/annrpython.py pypy/dist/pypy/translator/geninterplevel.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/translator/geninterplevel.py pypy/dist/pypy/translator/test/test_annrpython.py - copied unchanged from r10389, pypy/branch/pypy-normalize-exception/translator/test/test_annrpython.py Log: pypy-normalize-exception merge, copy in files From pedronis at codespeak.net Thu Apr 7 02:16:16 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 7 Apr 2005 02:16:16 +0200 (CEST) Subject: [pypy-svn] r10391 - pypy/branch/pypy-normalize-exception Message-ID: <20050407001616.ED77B27B47@code1.codespeak.net> Author: pedronis Date: Thu Apr 7 02:16:16 2005 New Revision: 10391 Removed: pypy/branch/pypy-normalize-exception/ Log: remove the closed and merged branch From cfbolz at codespeak.net Thu Apr 7 13:30:52 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Thu, 7 Apr 2005 13:30:52 +0200 (CEST) Subject: [pypy-svn] r10399 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050407113052.32AFE27B48@code1.codespeak.net> Author: cfbolz Date: Thu Apr 7 13:30:52 2005 New Revision: 10399 Modified: pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: Fixed implementation of constant tuples. Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Thu Apr 7 13:30:52 2005 @@ -215,41 +215,3 @@ raise AttributeError, ("VariableRepr instance has no attribute %s" % repr(name)) -class TupleRepr(LLVMRepr): - def get(obj, gen): - if isinstance(obj, Constant): - type_ = gen.annotator.binding(obj) - if isinstance(type_, annmodel.SomeTuple): - return TupleRepr(obj, gen) - return None - get = staticmethod(get) - - def __init__(self, obj, gen): - if debug: - print "TupleRepr", obj, obj.value - self.const = obj - self.tuple = obj.value - self.gen = gen - self.dependencies = sets.Set() - - def setup(self): - self.l_tuple = [self.gen.get_repr(l) for l in list(self.tuple)] - self.glvar = self.gen.get_global_tmp("TupleRepr") - self.dependencies.update(self.l_tuple) - self.type = self.gen.get_repr(self.gen.annotator.binding(self.const)) - - def get_globals(self): - s = "%s = internal global " % self.glvar + " " + self.llvmtype() - s += "{" + ", ".join([l.typed_name() for l in self.l_tuple]) + "}" - i = self.l_tuple[0] - return s - - def llvmname(self): - return self.glvar - - def __getattr__(self, name): - if name.startswith("op_"): - return getattr(self.type, "t_" + name, None) - else: - raise AttributeError, ("TupleRepr instance has no attribute %s" - % repr(name)) Modified: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/seqrepr.py (original) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Thu Apr 7 13:30:52 2005 @@ -3,6 +3,7 @@ from pypy.objspace.flow.model import Constant from pypy.annotation import model as annmodel +from pypy.translator import gensupp from pypy.translator.llvm.representation import debug, LLVMRepr from pypy.translator.llvm.typerepr import TypeRepr, IntTypeRepr @@ -71,6 +72,49 @@ else: raise CompileError, "List method %s not supported." % args[1].value + +class TupleRepr(LLVMRepr): + def get(obj, gen): + if isinstance(obj, Constant): + type_ = gen.annotator.binding(obj) + if isinstance(type_, annmodel.SomeTuple): + return TupleRepr(obj, gen) + return None + get = staticmethod(get) + + def __init__(self, obj, gen): + if debug: + print "TupleRepr", obj, obj.value + self.const = obj + self.tuple = obj.value + self.gen = gen + self.dependencies = sets.Set() + + def setup(self): + self.l_tuple = [self.gen.get_repr(l) for l in list(self.tuple)] + self.glvar = self.gen.get_global_tmp( + repr(self.tuple).replace(" ", "").translate(gensupp.C_IDENTIFIER)) + self.dependencies.update(self.l_tuple) + self.type = self.gen.get_repr(self.gen.annotator.binding(self.const)) + self.dependencies.add(self.type) + + def get_globals(self): + s = "%s = internal global " % self.glvar + " " + self.llvmtype()[:-1] + s += "{" + ", ".join([l.typed_name() for l in self.l_tuple]) + "}" + i = self.l_tuple[0] + return s + + def llvmname(self): + return self.glvar + + def __getattr__(self, name): + if name.startswith("op_"): + return getattr(self.type, "t_" + name, None) + else: + raise AttributeError, ("TupleRepr instance has no attribute %s" + % repr(name)) + + class TupleTypeRepr(TypeRepr): def get(obj, gen): if isinstance(obj, annmodel.SomeTuple): Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Thu Apr 7 13:30:52 2005 @@ -267,6 +267,9 @@ j, s1, s2, l = tuple_f2(i) return j +def constant_tuple(i): + return len((1, 2, "asdf")) + i + #exception snippets: def simple_exception(n): Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Thu Apr 7 13:30:52 2005 @@ -250,6 +250,11 @@ assert f(15) == 15 assert f(30) == 30 + def test_constant_tuple(self): + f = compile_function(llvmsnippet.constant_tuple, [int]) + for i in range(3, 7): + assert f(i) == i + 3 + class TestException(object): def setup_method(self,method): if not llvm_found: From pedronis at codespeak.net Thu Apr 7 15:45:45 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 7 Apr 2005 15:45:45 +0200 (CEST) Subject: [pypy-svn] r10400 - in pypy/dist/pypy/translator: . test Message-ID: <20050407134545.AD41E27B4D@code1.codespeak.net> Author: pedronis Date: Thu Apr 7 15:45:45 2005 New Revision: 10400 Modified: pypy/dist/pypy/translator/annrpython.py pypy/dist/pypy/translator/test/test_annrpython.py Log: re-instante the changes about implicit exceptions annotations from 10366, that were lost in the branching and merging Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Thu Apr 7 15:45:45 2005 @@ -372,7 +372,10 @@ if isinstance(link.exitcase, (types.ClassType, type)) \ and issubclass(link.exitcase, Exception): last_exception_object = annmodel.SomeObject() - last_exc_value_object = annmodel.SomeObject() + if link.exitcase is Exception: + last_exc_value_object = annmodel.SomeObject() + else: + last_exc_value_object = self.bookkeeper.valueoftype(link.exitcase) last_exc_value_vars = [] in_except_block = True last_exception_unknown = True Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Thu Apr 7 15:45:45 2005 @@ -613,6 +613,18 @@ s = a.build_types(assert_, []) assert s.const is None + def test_implicit_exc(self): + def f(l): + try: + l[0] + except (KeyError, IndexError),e: + return e + return None + + a = RPythonAnnotator() + s = a.build_types(f, [list]) + assert s.knowntype is LookupError + def test_overrides(self): import sys excs = [] From arigo at codespeak.net Thu Apr 7 16:12:36 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 7 Apr 2005 16:12:36 +0200 (CEST) Subject: [pypy-svn] r10401 - in pypy/dist/pypy: annotation objspace/flow translator Message-ID: <20050407141236.A945627B4D@code1.codespeak.net> Author: arigo Date: Thu Apr 7 16:12:36 2005 New Revision: 10401 Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/objspace/flow/flowcontext.py pypy/dist/pypy/objspace/flow/model.py pypy/dist/pypy/objspace/flow/objspace.py pypy/dist/pypy/translator/annrpython.py Log: I didn't understand the Constant flagging stuff so I removed it :-) The real problem appeared to be that 'is_type_of' wasn't properly propagated across links, when link.args contained several times the same Variable. With Samuele's recent addition, the flags are not needed any more to get the proper annotations in exception handlers. Just get the SomeXxx right and let them propagate automatically. Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Thu Apr 7 16:12:36 2005 @@ -70,7 +70,7 @@ """ we're going to try to be less silly in the face of old-style classes""" return cls2 is object or issubclass(cls1, cls2) -def builtin_isinstance(s_obj, s_type, variable=None): +def builtin_isinstance(s_obj, s_type, variables=None): s = SomeBool() if s_type.is_constant(): typ = s_type.const @@ -87,24 +87,25 @@ # XXX HACK HACK HACK # XXX HACK HACK HACK bk = getbookkeeper() - if variable is None: + if variables is None: fn, block, i = bk.position_key op = block.operations[i] assert op.opname == "simple_call" assert len(op.args) == 3 assert op.args[0] == Constant(isinstance) - variable = op.args[1] - assert bk.annotator.binding(variable) == s_obj - s.knowntypedata = ([variable], bk.valueoftype(typ)) + variables = [op.args[1]] + for variable in variables: + assert bk.annotator.binding(variable) == s_obj + s.knowntypedata = (variables, bk.valueoftype(typ)) return s def builtin_issubclass(s_cls1, s_cls2): if s_cls1.is_constant() and s_cls2.is_constant(): return immutablevalue(issubclass(s_cls1.const, s_cls2.const)) - if hasattr(s_cls1, 'is_type_of') and len(s_cls1.is_type_of) == 1: - var = s_cls1.is_type_of[0] + if hasattr(s_cls1, 'is_type_of'): + vars = s_cls1.is_type_of annotator = getbookkeeper().annotator - return builtin_isinstance(annotator.binding(var), s_cls2, var) + return builtin_isinstance(annotator.binding(vars[0]), s_cls2, vars) return SomeBool() def builtin_getattr(s_obj, s_attr, s_default=None): Modified: pypy/dist/pypy/objspace/flow/flowcontext.py ============================================================================== --- pypy/dist/pypy/objspace/flow/flowcontext.py (original) +++ pypy/dist/pypy/objspace/flow/flowcontext.py Thu Apr 7 16:12:36 2005 @@ -204,11 +204,11 @@ return self.recorder.guessbool(self, w_condition, **kwds) def guessexception(self, *classes): - outcome = self.guessbool(Constant(last_exception, last_exception=True), + outcome = self.guessbool(Constant(last_exception), cases = [None] + list(classes), replace_last_variable_except_in_first_case = [ - Constant(last_exception, last_exception=True), # exc. class - Constant(last_exc_value, last_exc_value=True)]) # exc. value + Constant(last_exception), # exc. class + Constant(last_exc_value)]) # exc. value if outcome is None: w_exc_cls, w_exc_value = None, None else: Modified: pypy/dist/pypy/objspace/flow/model.py ============================================================================== --- pypy/dist/pypy/objspace/flow/model.py (original) +++ pypy/dist/pypy/objspace/flow/model.py Thu Apr 7 16:12:36 2005 @@ -160,7 +160,7 @@ class Constant: - def __init__(self, value, **flags): + def __init__(self, value): self.value = value # a concrete value # try to be smart about constant mutable or immutable values key = type(self.value), self.value # to avoid confusing e.g. 0 and 0.0 @@ -169,10 +169,6 @@ except TypeError: key = id(self.value) self.key = key - if not flags: - self.flags = None - else: - self.flags = flags def __eq__(self, other): return self.__class__ is other.__class__ and self.key == other.key @@ -183,9 +179,6 @@ def __hash__(self): return hash(self.key) - def has_flag(self, flag_name): - return self.flags and flag_name in self.flags - def __repr__(self): # try to limit the size of the repr to make it more readable r = repr(self.value) @@ -194,12 +187,7 @@ r = '%s %s' % (type(self.value).__name__, self.value.__name__) elif len(r) > 60 or (len(r) > 30 and type(self.value) is not str): r = r[:20] + '...' + r[-8:] - if self.flags: - flags = ' '.join([':'+f for f in self.flags.keys()]) - flags = ' '+flags - else: - flags = '' - return '(%s%s)' % (r, flags) + return '(%s)' % (r,) class SpaceOperation: def __init__(self, opname, args, result): Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Thu Apr 7 16:12:36 2005 @@ -379,7 +379,7 @@ # one specified by 'outcome', and not a subclass of it, # unless 'outcome' is Exception. if outcome is not Exception: - w_exc_cls = Constant(outcome, last_exception=True) + w_exc_cls = Constant(outcome) raise OperationError(w_exc_cls, w_exc_value) # ______________________________________________________________________ Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Thu Apr 7 16:12:36 2005 @@ -378,31 +378,19 @@ last_exc_value_object = self.bookkeeper.valueoftype(link.exitcase) last_exc_value_vars = [] in_except_block = True - last_exception_unknown = True - last_exception_unused = True - + cells = [] - renaming = dict(zip(link.args,link.target.inputargs)) + renaming = {} + for a,v in zip(link.args,link.target.inputargs): + renaming.setdefault(a, []).append(v) for a,v in zip(link.args,link.target.inputargs): if a == Constant(last_exception): assert in_except_block - assert last_exception_unknown cells.append(last_exception_object) - last_exception_unused = False elif a == Constant(last_exc_value): assert in_except_block cells.append(last_exc_value_object) last_exc_value_vars.append(v) - elif isinstance(a, Constant) and a.has_flag('last_exception'): - assert in_except_block - assert last_exception_unused - if last_exception_unknown: - # this modeling should be good enough - # the exc type is not seen by user code - last_exception_object.const = a.value - cell = last_exception_object - cells.append(cell) - last_exception_unknown = False else: cell = self.binding(a) if link.exitcase is True and knownvars is not None and a in knownvars \ @@ -411,9 +399,8 @@ if hasattr(cell,'is_type_of'): renamed_is_type_of = [] for v in cell.is_type_of: - new_v = renaming.get(v,None) - if new_v is not None: - renamed_is_type_of.append(new_v) + new_vs = renaming.get(v,[]) + renamed_is_type_of += new_vs cell = annmodel.SomeObject() cell.is_type_of = renamed_is_type_of cells.append(cell) From arigo at codespeak.net Thu Apr 7 16:41:56 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 7 Apr 2005 16:41:56 +0200 (CEST) Subject: [pypy-svn] r10402 - in pypy/dist: goal pypy/translator Message-ID: <20050407144156.DD44427B4D@code1.codespeak.net> Author: arigo Date: Thu Apr 7 16:41:56 2005 New Revision: 10402 Modified: pypy/dist/goal/translate_pypy.py pypy/dist/pypy/translator/annrpython.py Log: A method a.specialize() on the annotator, defaulting to GenC-specific specialization. Must be called to modify the graph for GenC after the annotation was performed. Modified: pypy/dist/goal/translate_pypy.py ============================================================================== --- pypy/dist/goal/translate_pypy.py (original) +++ pypy/dist/goal/translate_pypy.py Thu Apr 7 16:41:56 2005 @@ -56,6 +56,7 @@ if not options['-no-a']: a = t.annotate(inputtypes, overrides=pypy_overrides) a.simplify() + a.specialize() t.frozen = True # cannot freeze if we don't have annotations if not options['-no-mark-some-objects']: options['-no-mark-some-objects'] = True # Do not do this again Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Thu Apr 7 16:41:56 2005 @@ -271,6 +271,12 @@ for graph in self.translator.flowgraphs.values(): simplify.eliminate_empty_blocks(graph) + def specialize(self, specializer=None): + if specializer is None: + from pypy.translator.genc import ctyper + specializer = ctyper.GenCSpecializer + specializer(self).specialize() + #___ flowing annotations in blocks _____________________ From pedronis at codespeak.net Thu Apr 7 16:53:00 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 7 Apr 2005 16:53:00 +0200 (CEST) Subject: [pypy-svn] r10403 - pypy/dist/pypy/annotation Message-ID: <20050407145300.E733327B4D@code1.codespeak.net> Author: pedronis Date: Thu Apr 7 16:53:00 2005 New Revision: 10403 Modified: pypy/dist/pypy/annotation/binaryop.py Log: rshift too Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Thu Apr 7 16:53:00 2005 @@ -25,7 +25,7 @@ 'inplace_add', 'inplace_sub', 'lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_', 'union', - 'lshift', + 'lshift', 'rshift' ]) for opname in BINARY_OPERATIONS: @@ -143,6 +143,8 @@ return SomeInteger(unsigned=True) return SomeInteger() + rshift = lshift + class __extend__(pairtype(SomeBool, SomeBool)): def union((boo1, boo2)): From arigo at codespeak.net Thu Apr 7 17:19:42 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 7 Apr 2005 17:19:42 +0200 (CEST) Subject: [pypy-svn] r10404 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050407151942.2D84827B4D@code1.codespeak.net> Author: arigo Date: Thu Apr 7 17:19:41 2005 New Revision: 10404 Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/bookkeeper.py pypy/dist/pypy/annotation/model.py pypy/dist/pypy/translator/test/snippet.py pypy/dist/pypy/translator/test/test_annrpython.py Log: SomeFloat(). Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Thu Apr 7 17:19:41 2005 @@ -7,7 +7,7 @@ from pypy.annotation.model import SomeString, SomeChar, SomeList, SomeDict from pypy.annotation.model import SomeTuple, SomeImpossibleValue from pypy.annotation.model import SomeInstance, SomeBuiltin, SomeIterator -from pypy.annotation.model import SomePBC, SomeSlice +from pypy.annotation.model import SomePBC, SomeSlice, SomeFloat from pypy.annotation.model import unionof, set, setunion, missing_operation from pypy.annotation.factory import generalize from pypy.annotation.bookkeeper import getbookkeeper @@ -174,6 +174,14 @@ return SomeString() +class __extend__(pairtype(SomeFloat, SomeFloat)): + + def union((flt1, flt2)): + return SomeFloat() + + add = sub = mul = div = mod = union + + class __extend__(pairtype(SomeList, SomeList)): def union((lst1, lst2)): Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Thu Apr 7 17:19:41 2005 @@ -88,6 +88,8 @@ result = SomeString() elif tp is tuple: result = SomeTuple(items = [self.immutablevalue(e) for e in x]) + elif tp is float: + result = SomeFloat() elif tp is list: items_s = [self.immutablevalue(e) for e in x] result = SomeList({}, unionof(*items_s)) Modified: pypy/dist/pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/dist/pypy/annotation/model.py Thu Apr 7 17:19:41 2005 @@ -94,7 +94,13 @@ del set_caused_by_merge -class SomeInteger(SomeObject): +class SomeFloat(SomeObject): + "Stands for a float or an integer." + knowntype = float # if we don't know if it's a float or an int, + # pretend it's a float. + + +class SomeInteger(SomeFloat): "Stands for an object which is known to be an integer." knowntype = int def __init__(self, nonneg=False, unsigned=False): Modified: pypy/dist/pypy/translator/test/snippet.py ============================================================================== --- pypy/dist/pypy/translator/test/snippet.py (original) +++ pypy/dist/pypy/translator/test/snippet.py Thu Apr 7 17:19:41 2005 @@ -601,6 +601,12 @@ bitmask += 1 return powerset +def harmonic(n): + result = 0.0 + for i in range(n, 0, -1): + result += 1.0 / n + return result + # --------------------(Currently) Non runnable Functions --------------------- def _somebug1(n=int): Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Thu Apr 7 17:19:41 2005 @@ -685,6 +685,11 @@ assert isinstance(s, annmodel.SomeList) assert s.s_item == s + def test_harmonic(self): + a = RPythonAnnotator() + s = a.build_types(snippet.harmonic, [int]) + assert s.knowntype == float + def g(n): return [0,1,2,n] From arigo at codespeak.net Thu Apr 7 17:24:43 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 7 Apr 2005 17:24:43 +0200 (CEST) Subject: [pypy-svn] r10405 - pypy/dist/pypy/annotation Message-ID: <20050407152443.1AA5727B4D@code1.codespeak.net> Author: arigo Date: Thu Apr 7 17:24:42 2005 New Revision: 10405 Modified: pypy/dist/pypy/annotation/builtin.py Log: Support for the float() built-in. Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Thu Apr 7 17:24:42 2005 @@ -42,6 +42,9 @@ def builtin_ord(s_chr): return SomeInteger(nonneg=True) +def builtin_float(s_obj): + return SomeFloat() + def builtin_id(o): return SomeInteger() From arigo at codespeak.net Thu Apr 7 17:28:21 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 7 Apr 2005 17:28:21 +0200 (CEST) Subject: [pypy-svn] r10406 - pypy/dist/pypy/annotation Message-ID: <20050407152821.61F6727B4D@code1.codespeak.net> Author: arigo Date: Thu Apr 7 17:28:21 2005 New Revision: 10406 Modified: pypy/dist/pypy/annotation/builtin.py Log: Damn. builtin_float() was already there. Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Thu Apr 7 17:28:21 2005 @@ -42,9 +42,6 @@ def builtin_ord(s_chr): return SomeInteger(nonneg=True) -def builtin_float(s_obj): - return SomeFloat() - def builtin_id(o): return SomeInteger() @@ -64,7 +61,7 @@ return SomeString() def builtin_float(s_obj): - return SomeObject() + return SomeFloat() def builtin_long(s_str): return SomeObject() From arigo at codespeak.net Thu Apr 7 17:30:48 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 7 Apr 2005 17:30:48 +0200 (CEST) Subject: [pypy-svn] r10407 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050407153048.668DB27B4D@code1.codespeak.net> Author: arigo Date: Thu Apr 7 17:30:48 2005 New Revision: 10407 Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/translator/test/test_annrpython.py Log: Always test before you check-in. Additionally, always write a test for new features. Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Thu Apr 7 17:30:48 2005 @@ -7,6 +7,7 @@ from pypy.tool.ansi_print import ansi_print from pypy.annotation.model import SomeInteger, SomeObject, SomeChar, SomeBool from pypy.annotation.model import SomeList, SomeString, SomeTuple, SomeSlice +from pypy.annotation.model import SomeFloat from pypy.annotation.bookkeeper import getbookkeeper from pypy.annotation.factory import ListFactory from pypy.objspace.flow.model import Constant Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Thu Apr 7 17:30:48 2005 @@ -690,6 +690,13 @@ s = a.build_types(snippet.harmonic, [int]) assert s.knowntype == float + def test_float(self): + def f(n): + return float(n) + a = RPythonAnnotator() + s = a.build_types(f, [int]) + assert s.knowntype == float + def g(n): return [0,1,2,n] From cfbolz at codespeak.net Thu Apr 7 18:05:40 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Thu, 7 Apr 2005 18:05:40 +0200 (CEST) Subject: [pypy-svn] r10408 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050407160540.7C9B727B4D@code1.codespeak.net> Author: cfbolz Date: Thu Apr 7 18:05:40 2005 New Revision: 10408 Modified: pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/operations.ll pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py pypy/dist/pypy/translator/llvm/typerepr.py Log: Some support for doubles/floats in genllvm. Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Thu Apr 7 18:05:40 2005 @@ -28,7 +28,8 @@ C_SIMPLE_TYPES = {annmodel.SomeChar: "char", annmodel.SomeString: "char*", annmodel.SomeBool: "unsigned char", - annmodel.SomeInteger: "int"} + annmodel.SomeInteger: "int", + annmodel.SomeFloat: "double"} class BuiltinFunctionRepr(LLVMRepr): Modified: pypy/dist/pypy/translator/llvm/operations.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/operations.ll (original) +++ pypy/dist/pypy/translator/llvm/operations.ll Thu Apr 7 18:05:40 2005 @@ -72,6 +72,109 @@ ret int %r } +;Basic operations for doubles +internal double %std.add(double %a, double %b) { + %r = add double %a, %b + ret double %r +} + +internal double %std.inplace_add(double %a, double %b) { + %r = add double %a, %b + ret double %r +} + +internal double %std.sub(double %a, double %b) { + %r = sub double %a, %b + ret double %r +} + +internal double %std.inplace_sub(double %a, double %b) { + %r = sub double %a, %b + ret double %r +} + +internal double %std.mul(double %a, double %b) { + %r = mul double %a, %b + ret double %r +} + +internal double %std.inplace_mul(double %a, double %b) { + %r = mul double %a, %b + ret double %r +} + +internal double %std.div(double %a, double %b) { + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_div(double %a, double %b) { + %r = div double %a, %b + ret double %r +} + +internal double %std.floordiv(double %a, double %b) { + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_floordiv(double %a, double %b) { + %r = div double %a, %b + ret double %r +} + +internal double %std.mod(double %a, double %b) { + %r = rem double %a, %b + ret double %r +} + +internal double %std.inplace_mod(double %a, double %b) { + %r = rem double %a, %b + ret double %r +} + +;Basic comparisons for doubles + +internal bool %std.is(double %a, double %b) { + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.is_true(double %a) { + %b = cast double %a to bool + ret bool %b +} + +internal bool %std.eq(double %a, double %b) { + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.neq(double %a, double %b) { + %r = seteq double %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal bool %std.lt(double %a, double %b) { + %r = setlt double %a, %b + ret bool %r +} + +internal bool %std.gt(double %a, double %b) { + %r = setgt double %a, %b + ret bool %r +} + +internal bool %std.le(double %a, double %b) { + %r = setle double %a, %b + ret bool %r +} + +internal bool %std.ge(double %a, double %b) { + %r = setge double %a, %b + ret bool %r +} ;Basic comparisons for ints Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Thu Apr 7 18:05:40 2005 @@ -6,7 +6,8 @@ from pypy.annotation import model as annmodel LLVM_SIMPLE_TYPES = {annmodel.SomeChar: "sbyte", - annmodel.SomeBool: "bool"} + annmodel.SomeBool: "bool", + annmodel.SomeFloat: "double"} debug = False Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Thu Apr 7 18:05:40 2005 @@ -42,6 +42,12 @@ return calling1(m - 1) return m +#float snippets + +def float_f1(x): + return x + 1.0 + + #array snippets def array_simple(): Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Thu Apr 7 18:05:40 2005 @@ -116,6 +116,16 @@ f = compile_function(llvmsnippet.calling1, [int]) assert f(10) == 1 +class TestFloat(object): + def setup_method(self, method): + if not llvm_found: + py.test.skip("llvm-as not found on path.") + + def test_float_f1(self): + f = compile_function(llvmsnippet.float_f1, [float]) + assert f(1.0) == 2.0 + + class TestLLVMArray(object): def setup_method(self, method): if not llvm_found: Modified: pypy/dist/pypy/translator/llvm/typerepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/typerepr.py (original) +++ pypy/dist/pypy/translator/llvm/typerepr.py Thu Apr 7 18:05:40 2005 @@ -126,12 +126,10 @@ lblock.cast(l_tmp, l_val, l_type) return l_tmp - class SimpleTypeRepr(TypeRepr): def get(obj, gen): - if obj.__class__ is annmodel.SomeInteger: - l_repr = SimpleTypeRepr("int", gen) - return l_repr + if obj.__class__ is annmodel.SomeFloat: + return SimpleTypeRepr("double", gen) elif obj.__class__ is annmodel.SomeBool: l_repr = SimpleTypeRepr("bool", gen) return l_repr From arigo at codespeak.net Thu Apr 7 18:09:43 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 7 Apr 2005 18:09:43 +0200 (CEST) Subject: [pypy-svn] r10409 - pypy/dist/pypy/annotation Message-ID: <20050407160943.D8DAC27B4D@code1.codespeak.net> Author: arigo Date: Thu Apr 7 18:09:43 2005 New Revision: 10409 Modified: pypy/dist/pypy/annotation/bookkeeper.py Log: Missing float support in the annotator's valueoftype(). Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Thu Apr 7 18:09:43 2005 @@ -166,6 +166,8 @@ return SomeInteger() elif t is str: return SomeString() + elif t is float: + return SomeFloat() elif t is list: return SomeList(factories={}) # can't do dict, tuple From arigo at codespeak.net Thu Apr 7 19:26:40 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 7 Apr 2005 19:26:40 +0200 (CEST) Subject: [pypy-svn] r10410 - pypy/dist/pypy/annotation Message-ID: <20050407172640.B833027B4D@code1.codespeak.net> Author: arigo Date: Thu Apr 7 19:26:40 2005 New Revision: 10410 Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/annotation/unaryop.py Log: Completed the support for the various operations in the annotator. There are a few obscure operations not supported, but well, they shouldn't appear in R-Python flow graphs, I suppose. Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Thu Apr 7 19:26:40 2005 @@ -20,12 +20,17 @@ # XXX unify this with ObjSpace.MethodTable BINARY_OPERATIONS = set(['add', 'sub', 'mul', 'div', 'mod', + 'truediv', 'floordiv', 'divmod', 'pow', 'and_', 'or_', 'xor', + 'lshift', 'rshift', 'getitem', 'setitem', - 'inplace_add', 'inplace_sub', - 'lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_', - 'union', - 'lshift', 'rshift' + 'inplace_add', 'inplace_sub', 'inplace_mul', + 'inplace_truediv', 'inplace_floordiv', 'inplace_div', + 'inplace_mod', 'inplace_pow', + 'inplace_lshift', 'inplace_rshift', + 'inplace_and', 'inplace_or', 'inplace_xor', + 'lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_', 'cmp', + 'union', 'coerce', ]) for opname in BINARY_OPERATIONS: @@ -50,11 +55,20 @@ else: return result - def inplace_add((obj1, obj2)): - return pair(obj1, obj2).add() # default - - def inplace_sub((obj1, obj2)): - return pair(obj1, obj2).sub() # default + # inplace_xxx ---> xxx by default + def inplace_add((obj1, obj2)): return pair(obj1, obj2).add() + def inplace_sub((obj1, obj2)): return pair(obj1, obj2).sub() + def inplace_mul((obj1, obj2)): return pair(obj1, obj2).mul() + def inplace_truediv((obj1, obj2)): return pair(obj1, obj2).truediv() + def inplace_floordiv((obj1, obj2)): return pair(obj1, obj2).floordiv() + def inplace_div((obj1, obj2)): return pair(obj1, obj2).div() + def inplace_mod((obj1, obj2)): return pair(obj1, obj2).mod() + def inplace_pow((obj1, obj2), obj3):return pair(obj1, obj2).pow(obj3) + def inplace_lshift((obj1, obj2)): return pair(obj1, obj2).lshift() + def inplace_rshift((obj1, obj2)): return pair(obj1, obj2).rshift() + def inplace_and((obj1, obj2)): return pair(obj1, obj2).and_() + def inplace_or((obj1, obj2)): return pair(obj1, obj2).or_() + def inplace_xor((obj1, obj2)): return pair(obj1, obj2).xor() def lt((obj1, obj2)): if obj1.is_constant() and obj2.is_constant(): @@ -92,6 +106,12 @@ else: return SomeBool() + def cmp((obj1, obj2)): + if obj1.is_constant() and obj2.is_constant(): + return immutablevalue(cmp(obj1.const, obj2.const)) + else: + return SomeInteger() + def is_((obj1, obj2)): # XXX assumption: for "X is Y" we for simplification # assume that X is possibly variable and Y constant @@ -122,6 +142,12 @@ r.knowntypedata = ([op.args[0]], obj2) return r + def divmod((obj1, obj2)): + return SomeTuple([pair(obj1, obj2).div(), pair(obj1, obj2).mod()]) + + def coerce((obj1, obj2)): + return pair(obj1, obj2).union() # reasonable enough + class __extend__(pairtype(SomeInteger, SomeInteger)): # unsignedness is considered a rare and contagious disease @@ -129,7 +155,10 @@ return SomeInteger(nonneg = int1.nonneg and int2.nonneg, unsigned = int1.unsigned or int2.unsigned) - add = mul = div = mod = or_ = xor = union + add = mul = div = floordiv = mod = or_ = xor = union + + def truediv((int1, int2)): + return SomeFloat() def sub((int1, int2)): return SomeInteger(unsigned = int1.unsigned or int2.unsigned) @@ -145,6 +174,9 @@ rshift = lshift + def pow((int1, int2), obj3): + return SomeInteger() + class __extend__(pairtype(SomeBool, SomeBool)): def union((boo1, boo2)): @@ -179,7 +211,10 @@ def union((flt1, flt2)): return SomeFloat() - add = sub = mul = div = mod = union + add = sub = mul = div = truediv = floordiv = mod = union + + def pow((flt1, flt2), obj3): + return SomeFloat() class __extend__(pairtype(SomeList, SomeList)): @@ -198,6 +233,9 @@ pair(lst1, SomeInteger()).setitem(s_iter.next()) return lst1 + def inplace_mul((lst1, obj2)): + return lst1 + class __extend__(pairtype(SomeTuple, SomeTuple)): Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Thu Apr 7 19:26:40 2005 @@ -32,7 +32,7 @@ return SomeObject() def builtin_int(s_obj): # we can consider 'int' as a function - return SomeInteger() + return s_obj.int() def restricted_uint(s_obj): # for r_uint return SomeInteger(nonneg=True, unsigned=True) @@ -41,19 +41,13 @@ return SomeChar() def builtin_ord(s_chr): - return SomeInteger(nonneg=True) + return s_chr.ord() def builtin_id(o): return SomeInteger() -def builtin_hex(o): - return SomeString() - -def builtin_oct(o): - return SomeString() - def builtin_abs(o): - return o.__class__() + return o.abs() def builtin_divmod(o1, o2): return SomeTuple([SomeObject(), SomeObject()]) # XXX @@ -62,10 +56,10 @@ return SomeString() def builtin_float(s_obj): - return SomeFloat() + return s_obj.float() -def builtin_long(s_str): - return SomeObject() +def builtin_long(s_obj): + return s_obj.long() def our_issubclass(cls1, cls2): """ we're going to try to be less silly in the face of old-style classes""" @@ -159,10 +153,16 @@ return r def builtin_str(s_obj): - return SomeString() + return s_obj.str() def builtin_repr(s_obj): - return SomeString() + return s_obj.repr() + +def builtin_hex(s_obj): + return s_obj.hex() + +def builtin_oct(s_obj): + return s_obj.oct() def builtin_list(s_iterable): factory = getbookkeeper().getfactory(ListFactory) @@ -206,7 +206,7 @@ s_self.setattr(immutablevalue('args'), SomeTuple(args)) def builtin_bool(s_obj): - return SomeBool() + return s_obj.is_true() def count(s_obj): return SomeInteger() Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Thu Apr 7 19:26:40 2005 @@ -8,21 +8,23 @@ from pypy.annotation.model import SomeObject, SomeInteger, SomeBool from pypy.annotation.model import SomeString, SomeChar, SomeList, SomeDict from pypy.annotation.model import SomeTuple, SomeImpossibleValue -from pypy.annotation.model import SomeInstance, SomeBuiltin +from pypy.annotation.model import SomeInstance, SomeBuiltin, SomeFloat from pypy.annotation.model import SomeIterator, SomePBC, new_or_old_class from pypy.annotation.model import unionof, set, setunion, missing_operation from pypy.annotation.factory import BlockedInference, generalize, ListFactory from pypy.annotation.bookkeeper import getbookkeeper from pypy.annotation.classdef import isclassdef -from pypy.annotation.builtin import builtin_issubclass +from pypy.annotation import builtin # convenience only! def immutablevalue(x): return getbookkeeper().immutablevalue(x) UNARY_OPERATIONS = set(['len', 'is_true', 'getattr', 'setattr', - 'simple_call', 'call_args', - 'iter', 'next', 'invert', 'type', 'issubtype']) + 'simple_call', 'call_args', 'str', 'repr', + 'iter', 'next', 'invert', 'type', 'issubtype', + 'pos', 'neg', 'nonzero', 'abs', 'hex', 'oct', + 'ord', 'int', 'float', 'long']) for opname in UNARY_OPERATIONS: missing_operation(SomeObject, opname) @@ -30,7 +32,7 @@ class __extend__(SomeObject): - def type(obj): + def type(obj): # XXX this should be unified with builtin_type if obj.is_constant(): r = immutablevalue(obj.knowntype) else: @@ -39,14 +41,14 @@ fn, block, i = bk.position_key annotator = bk.annotator op = block.operations[i] - assert op.opname == "type" + assert op.opname == "type" assert len(op.args) == 1 assert annotator.binding(op.args[0]) == obj r.is_type_of = [op.args[0]] return r def issubtype(obj, s_cls): - return builtin_issubclass(obj, s_cls) + return builtin.builtin_issubclass(obj, s_cls) def len(obj): return SomeInteger(nonneg=True) @@ -61,6 +63,23 @@ else: return SomeBool() + def nonzero(obj): + return obj.is_true() + + def str(obj): + return SomeString() + + repr = hex = oct = str + + def int(obj): + return SomeInteger() + + def float(obj): + return SomeFloat() + + def long(obj): + return SomeObject() # XXX + def find_method(obj, name): "Look for a special-case implementation for the named method." analyser = getattr(obj.__class__, 'method_' + name) @@ -103,11 +122,34 @@ return SomeInteger(unsigned=True) return SomeInteger() + def pos(self): + return self + + int = pos + + def neg(self): + return SomeInteger() + + def abs(self): + return SomeInteger(nonneg=True) + class __extend__(SomeBool): def is_true(self): return self + +class __extend__(SomeFloat): + + def pos(flt): + return flt + + def neg(flt): + return SomeFloat() + + abs = neg + + class __extend__(SomeTuple): def len(tup): @@ -173,6 +215,9 @@ def iter(str): return SomeIterator(SomeChar()) + def ord(str): + return SomeInteger(nonneg=True) + class __extend__(SomeChar): From arigo at codespeak.net Thu Apr 7 20:14:53 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 7 Apr 2005 20:14:53 +0200 (CEST) Subject: [pypy-svn] r10411 - pypy/dist/pypy/objspace/std Message-ID: <20050407181453.2282227B4D@code1.codespeak.net> Author: arigo Date: Thu Apr 7 20:14:52 2005 New Revision: 10411 Modified: pypy/dist/pypy/objspace/std/objspace.py Log: Reintroduce a lost check-in from pedronis: ""don't pollute *_w results with the logic for wrapped object returning mms"" Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Thu Apr 7 20:14:52 2005 @@ -40,12 +40,15 @@ # install all the MultiMethods into the space instance for name, mm in self.MM.__dict__.items(): if isinstance(mm, MultiMethod) and not hasattr(self, name): - exprargs, expr, miniglobals, fallback = ( - mm.install_not_sliced(self.model.typeorder, baked_perform_call=False)) - - func = stdtypedef.make_perform_trampoline('__mm_'+name, - exprargs, expr, miniglobals, - mm) + if name.endswith('_w'): # int_w, str_w...: these do not return a wrapped object + func = mm.install_not_sliced(self.model.typeorder, baked_perform_call=True) + else: + exprargs, expr, miniglobals, fallback = ( + mm.install_not_sliced(self.model.typeorder, baked_perform_call=False)) + + func = stdtypedef.make_perform_trampoline('__mm_'+name, + exprargs, expr, miniglobals, + mm) # e.g. add(space, w_x, w_y) boundmethod = func.__get__(self) # bind the 'space' argument From tismer at codespeak.net Thu Apr 7 20:43:31 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 7 Apr 2005 20:43:31 +0200 (CEST) Subject: [pypy-svn] r10414 - in pypy/dist/pypy: module/builtin translator Message-ID: <20050407184331.E00F927B4D@code1.codespeak.net> Author: tismer Date: Thu Apr 7 20:43:31 2005 New Revision: 10414 Modified: pypy/dist/pypy/module/builtin/app_descriptor.py pypy/dist/pypy/translator/geninterplevel.py Log: Samuele found the __doc__ bug with property which I could not find. Many thanks! I'm now checking a class' dict whether __doc__ is something special, and then just use that. Also added some heuristics for nicer formatting. Long strings default to render_doctring, now. Modified: pypy/dist/pypy/module/builtin/app_descriptor.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_descriptor.py (original) +++ pypy/dist/pypy/module/builtin/app_descriptor.py Thu Apr 7 20:43:31 2005 @@ -1,5 +1,3 @@ -# NOT_RPYTHON -- there is a problem with initialising a property's __doc__ -# XXX but it *should* work """ Plain Python definition of the builtin descriptors. """ Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Thu Apr 7 20:43:31 2005 @@ -416,9 +416,11 @@ if not namestr: namestr = "_emptystr_" name = self.uniquename('gs_' + namestr[:32]) - # self.initcode.append1('%s = space.newstring(%r)' % (name, value)) - # ick! very unhandy - self.initcode.append1('%s = space.wrap(%r)' % (name, value)) + if len(value) < 30 and "\n" not in value: + txt = '%s = space.wrap(%r)' % (name, value) + else: + txt = render_docstr(value, '%s = space.wrap(\n' % name, ')') + self.initcode.append(txt) return name def skipped_function(self, func): @@ -426,7 +428,7 @@ # that raises an exception when called. name = self.uniquename('gskippedfunc_' + func.__name__) self.globaldecl.append('# global decl %s' % (name, )) - self.initcode.append1('# build func %s' % name) + self.initcode.append('# build func %s' % name) return name def skipped_class(self, cls): @@ -640,8 +642,12 @@ if cls.__doc__ is not None: sdoc = self.nameof("__doc__") - docstr = render_docstr(cls, "_doc = space.wrap(", ")") - self.initcode.append1((docstr,)) # not splitted + docobj = cls.__dict__["__doc__"] + if type(docobj) in (str, unicode): + docstr = render_docstr(cls, "_doc = space.wrap(", ")") + self.initcode.append((docstr,)) # not splitted + else: + self.initcode.append("_doc = %s" % self.nameof(docobj) ) self.initcode.append("space.setitem(_dic, %s, _doc)" % ( self.nameof("__doc__"),)) self.initcode.append1('_bases = space.newtuple([%(bases)s])\n' @@ -1491,11 +1497,6 @@ # and now use the members of the dict """ # create something like a module - # the following code will be removed when app_descriptor works - ##print 80*"T", sourcetext - if "class property" in sourcetext: - # debugging app_descriptor.py - tmpname = "/tmp/look.py" if filename is None: code = py.code.Source(sourcetext).compile() else: From pedronis at codespeak.net Thu Apr 7 23:38:33 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 7 Apr 2005 23:38:33 +0200 (CEST) Subject: [pypy-svn] r10416 - pypy/dist/pypy/objspace/flow Message-ID: <20050407213833.71E7C27B5D@code1.codespeak.net> Author: pedronis Date: Thu Apr 7 23:38:33 2005 New Revision: 10416 Modified: pypy/dist/pypy/objspace/flow/objspace.py Log: a bit more careful, complete constant folding in the flowspace Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Thu Apr 7 23:38:33 2005 @@ -35,18 +35,19 @@ def initialize(self): import __builtin__ - self.concrete_mode = 0 + self.concrete_mode = 1 + self.w_None = Constant(None) self.builtin = Module(self, Constant('__builtin__'), Constant(__builtin__.__dict__)) def pick_builtin(w_globals): return self.builtin self.builtin.pick_builtin = pick_builtin self.sys = Module(self, Constant('sys'), Constant(sys.__dict__)) self.sys.recursionlimit = 100 - self.w_None = Constant(None) self.w_False = Constant(False) self.w_True = Constant(True) self.w_type = Constant(type) self.w_tuple = Constant(tuple) + self.concrete_mode = 0 for exc in [KeyError, ValueError, IndexError, StopIteration, AssertionError, TypeError]: clsname = exc.__name__ @@ -320,6 +321,19 @@ else: return w_item + def setitem(self, w_obj, w_key, w_val): + if self.concrete_mode: + try: + obj = self.unwrap_for_computation(w_obj) + key = self.unwrap_for_computation(w_key) + val = self.unwrap_for_computation(w_val) + operator.setitem(obj, key, val) + return self.w_None + except UnwrapException: + pass + return self.do_operation('setitem', w_obj, w_key, w_val) + + def call_args(self, w_callable, args): try: fn = self.unwrap(w_callable) @@ -387,6 +401,7 @@ implicit_exceptions = { 'getitem': [IndexError, KeyError], 'delitem': [IndexError, KeyError], + # no implicit exceptions for setitem 'getattr': [AttributeError], 'delattr': [AttributeError], 'iter' : [TypeError], @@ -437,23 +452,43 @@ if hasattr(FlowObjSpace, name): return # Shouldn't do it - if name == 'pow': - op = pow + import __builtin__ + + op = None + + if name.startswith('del') or name.startswith('set') or name.startswith('inplace_'): + # skip potential mutators + if debug: print "Skip", name + op = 0 + elif name in ['id', 'hash', 'iter']: + # skip potential runtime context dependecies + if debug: print "Skip", name + op = 0 + elif name in ['repr', 'str']: + rep = getattr(__builtin__, name) + def op(obj): + s = rep(obj) + if s.find("at 0x") > -1: + print >>sys.stderr, "Warning: captured address may be awkward" + return s + elif name == 'issubtype': + op = issubclass + elif name == 'type': + op = type_or_something_similar + elif name == 'is_': + op = lambda x, y: x is y + elif name == 'nonzero': + op = bool else: - op = getattr(operator, name, None) + op = getattr(__builtin__, name, None) + if not op: + op = getattr(operator, name, None) + if not op: - #if name == 'call': - # op = apply - if name == 'issubtype': - op = issubclass - elif name == 'type': - op = type_or_something_similar - elif name == 'is_': - op = lambda x, y: x is y - elif name == 'getattr': - op = getattr - else: + if op != 0: if debug: print >> sys.stderr, "XXX missing operator:", name + else: + if debug: print "Can constant-fold operation: %s" % name exceptions = implicit_exceptions.get(name) From pedronis at codespeak.net Fri Apr 8 01:00:01 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 8 Apr 2005 01:00:01 +0200 (CEST) Subject: [pypy-svn] r10417 - pypy/dist/pypy/objspace/flow Message-ID: <20050407230001.CAE1527B5B@code1.codespeak.net> Author: pedronis Date: Fri Apr 8 01:00:01 2005 New Revision: 10417 Modified: pypy/dist/pypy/objspace/flow/objspace.py Log: use a second flag skip instead of subtly distinguishing 0/None Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Fri Apr 8 01:00:01 2005 @@ -455,15 +455,16 @@ import __builtin__ op = None + skip = False if name.startswith('del') or name.startswith('set') or name.startswith('inplace_'): # skip potential mutators if debug: print "Skip", name - op = 0 + skip = True elif name in ['id', 'hash', 'iter']: # skip potential runtime context dependecies if debug: print "Skip", name - op = 0 + skip = True elif name in ['repr', 'str']: rep = getattr(__builtin__, name) def op(obj): @@ -485,7 +486,7 @@ op = getattr(operator, name, None) if not op: - if op != 0: + if not skip: if debug: print >> sys.stderr, "XXX missing operator:", name else: if debug: print "Can constant-fold operation: %s" % name From cfbolz at codespeak.net Fri Apr 8 04:05:05 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Fri, 8 Apr 2005 04:05:05 +0200 (CEST) Subject: [pypy-svn] r10424 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050408020505.8EE2727B5F@code1.codespeak.net> Author: cfbolz Date: Fri Apr 8 04:05:05 2005 New Revision: 10424 Modified: pypy/dist/pypy/translator/llvm/make_runtime.py pypy/dist/pypy/translator/llvm/operations.ll pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: Added a function to make_runtime that generates operators.ll with all possible combinations of types. Modified: pypy/dist/pypy/translator/llvm/make_runtime.py ============================================================================== --- pypy/dist/pypy/translator/llvm/make_runtime.py (original) +++ pypy/dist/pypy/translator/llvm/make_runtime.py Fri Apr 8 04:05:05 2005 @@ -134,7 +134,135 @@ f.write(code) f.close() +MAP_ARITHM_OPS = [("add", ("add", None, None)), + ("inplace_add", ("add", None, None)), + ("sub", ("sub", None, None)), + ("inplace_sub", ("sub", None, None)), + ("mul", ("mul", None, None)), + ("inplace_mul", ("mul", None, None)), + ("div", ("div", None, None)), + ("inplace_div", ("div", None, None)), + ("floordiv", ("div", "int", None)), + ("inplace_floordiv", ("div", "int", None)), + ("truediv", ("div", "double", "double")), + ("inplace_truediv", ("div", "double", "double")), + ("mod", ("rem", None, None)), + ("inplace_mod", ("rem", None, None)) + ] + +MAP_LOGICAL_OPS = [("and_", ("and", None, None)), + ("inplace_and", ("and", None, None)), + ("or_", ("or", None, None)), + ("inplace_or", ("or", None, None)), + ("xor", ("xor", None, None)), + ("inplace_xor", ("xor", None, None)) + ] + +MAP_COMPAR_OPS = [("is_", "seteq"), + ("eq", "seteq"), + ("lt", "setlt"), + ("le", "setle"), + ("ge", "setge"), + ("gt", "setgt")] + +types = ((0, "double"), (1, "uint"), (2, "int"), (3, "bool")) + +def make_binary_ops(): + code = ["implementation\n"] + def normalize_type(t1, t, var): + if t1 != t: + code.append("\t%%%s = cast %s %%%s to %s\n" % (var, t1, var, t)) + for type1 in types: + for type2 in types: + #Arithmetic operators + for op, (llvmop, calctype, rettype) in MAP_ARITHM_OPS: + if calctype is None: + calctype = min(type1, type2)[1] + if rettype is None: + rettype = min(type1, type2)[1] + if calctype == "bool": + calctype = rettype = "int" + code.append("internal %s %%std.%s(%s %%a, %s %%b) {\n" % + (rettype, op, type1[1], type2[1])) + normalize_type(type1[1], calctype, "a") + normalize_type(type2[1], calctype, "b") + code.append("\t%%r = %s %s %%a, %%b\n" % + (llvmop, calctype)) + normalize_type(calctype, rettype, "r") + code.append("\tret %s %%r\n}\n\n" % rettype) + calctype = min(type1, type2)[1] + #Comparison operators + for op, llvmop in MAP_COMPAR_OPS: + code.append("internal bool %%std.%s(%s %%a, %s %%b) {\n" % + (op, type1[1], type2[1])) + normalize_type(type1[1], calctype, "a") + normalize_type(type2[1], calctype, "b") + code.append("\t%%r = %s %s %%a, %%b\n" % + (llvmop, calctype)) + code.append("\tret bool %r\n}\n\n") + code.append("internal bool %%std.neq(%s %%a, %s %%b) {\n" % + (type1[1], type2[1])) + normalize_type(type1[1], calctype, "a") + normalize_type(type2[1], calctype, "b") + code.append("\t%%r = %s %s %%a, %%b\n" % + (llvmop, calctype)) + code.append("\t%r1 = xor bool %r, true\n\tret bool %r1\n}\n\n") + #Logical operators + for type1 in types[1:]: + for type2 in types[1:]: + for op, (llvmop, calctype, rettype) in MAP_LOGICAL_OPS: + if calctype is None: + calctype = min(type1, type2)[1] + if rettype is None: + rettype = min(type1, type2)[1] + code.append("internal %s %%std.%s(%s %%a, %s %%b) {\n" % + (rettype, op, type1[1], type2[1])) + normalize_type(type1[1], calctype, "a") + normalize_type(type2[1], calctype, "b") + code.append("\t%%r = %s %s %%a, %%b\n" % + (llvmop, calctype)) + normalize_type(calctype, rettype, "r") + code.append("\tret %s %%r\n}\n\n" % rettype) + #Shift + for type1 in types[1:-1]: + for type2 in types[1:-1]: + for op, llvmop in (("lshift", "shl"), ("rshift", "shr")): + code.append("internal %s %%std.%s(%s %%a, %s %%b) {\n" % + (type1[1], op, type1[1], type2[1])) + code.append("\t%%b = cast %s %%b to ubyte\n" % type2[1]) + code.append("\t%%r = %s %s %%a, ubyte %%b\n" % + (llvmop, type1[1])) + code.append("\tret %s %%r\n}\n\n" % type1[1]) + return code + +def make_unary_ops(): + code = [] + def normalize_type(t1, t, var): + if t1 != t: + code.append("\t%%%s = cast %s %%%s to %s\n" % (var, t1, var, t)) + for type1 in types: + #"casts" int, bool + for type2 in ("int", "bool"): + code.append("internal %s %%std.%s(%s %%a) {\n" % + (type2, type2, type1[1])) + code.append("\t%%r = cast %s %%a to %s\n" % (type1[1], type2)) + code.append("\tret %s %%r\n}\n\n" % type2) + #is_true + code.append("internal bool %%std.is_true(%s %%a) {\n" % type1[1]) + code.append("\t%%r = cast %s %%a to bool\n" % type1[1]) + code.append("\tret bool %r\n}\n\n") + return code + + +def make_operations(): + code = make_binary_ops() + code += make_unary_ops() + f = open(autopath.this_dir + "/operations.ll", "w") + f.write("".join(code)) + f.close() + if __name__ == '__main__': + make_operations() make_list_template() make_int_list() Modified: pypy/dist/pypy/translator/llvm/operations.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/operations.ll (original) +++ pypy/dist/pypy/translator/llvm/operations.ll Fri Apr 8 04:05:05 2005 @@ -1,226 +1,2183 @@ +implementation +internal double %std.add(double %a, double %b) { + %r = add double %a, %b + ret double %r +} + +internal double %std.inplace_add(double %a, double %b) { + %r = add double %a, %b + ret double %r +} + +internal double %std.sub(double %a, double %b) { + %r = sub double %a, %b + ret double %r +} + +internal double %std.inplace_sub(double %a, double %b) { + %r = sub double %a, %b + ret double %r +} + +internal double %std.mul(double %a, double %b) { + %r = mul double %a, %b + ret double %r +} + +internal double %std.inplace_mul(double %a, double %b) { + %r = mul double %a, %b + ret double %r +} + +internal double %std.div(double %a, double %b) { + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_div(double %a, double %b) { + %r = div double %a, %b + ret double %r +} + +internal double %std.floordiv(double %a, double %b) { + %a = cast double %a to int + %b = cast double %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.inplace_floordiv(double %a, double %b) { + %a = cast double %a to int + %b = cast double %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.truediv(double %a, double %b) { + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(double %a, double %b) { + %r = div double %a, %b + ret double %r +} + +internal double %std.mod(double %a, double %b) { + %r = rem double %a, %b + ret double %r +} + +internal double %std.inplace_mod(double %a, double %b) { + %r = rem double %a, %b + ret double %r +} + +internal bool %std.is_(double %a, double %b) { + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.eq(double %a, double %b) { + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.lt(double %a, double %b) { + %r = setlt double %a, %b + ret bool %r +} + +internal bool %std.le(double %a, double %b) { + %r = setle double %a, %b + ret bool %r +} + +internal bool %std.ge(double %a, double %b) { + %r = setge double %a, %b + ret bool %r +} + +internal bool %std.gt(double %a, double %b) { + %r = setgt double %a, %b + ret bool %r +} + +internal bool %std.neq(double %a, double %b) { + %r = setgt double %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal double %std.add(double %a, uint %b) { + %b = cast uint %b to double + %r = add double %a, %b + ret double %r +} + +internal double %std.inplace_add(double %a, uint %b) { + %b = cast uint %b to double + %r = add double %a, %b + ret double %r +} + +internal double %std.sub(double %a, uint %b) { + %b = cast uint %b to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.inplace_sub(double %a, uint %b) { + %b = cast uint %b to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.mul(double %a, uint %b) { + %b = cast uint %b to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.inplace_mul(double %a, uint %b) { + %b = cast uint %b to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.div(double %a, uint %b) { + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_div(double %a, uint %b) { + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.floordiv(double %a, uint %b) { + %a = cast double %a to int + %b = cast uint %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.inplace_floordiv(double %a, uint %b) { + %a = cast double %a to int + %b = cast uint %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.truediv(double %a, uint %b) { + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(double %a, uint %b) { + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.mod(double %a, uint %b) { + %b = cast uint %b to double + %r = rem double %a, %b + ret double %r +} + +internal double %std.inplace_mod(double %a, uint %b) { + %b = cast uint %b to double + %r = rem double %a, %b + ret double %r +} + +internal bool %std.is_(double %a, uint %b) { + %b = cast uint %b to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.eq(double %a, uint %b) { + %b = cast uint %b to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.lt(double %a, uint %b) { + %b = cast uint %b to double + %r = setlt double %a, %b + ret bool %r +} + +internal bool %std.le(double %a, uint %b) { + %b = cast uint %b to double + %r = setle double %a, %b + ret bool %r +} + +internal bool %std.ge(double %a, uint %b) { + %b = cast uint %b to double + %r = setge double %a, %b + ret bool %r +} + +internal bool %std.gt(double %a, uint %b) { + %b = cast uint %b to double + %r = setgt double %a, %b + ret bool %r +} + +internal bool %std.neq(double %a, uint %b) { + %b = cast uint %b to double + %r = setgt double %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal double %std.add(double %a, int %b) { + %b = cast int %b to double + %r = add double %a, %b + ret double %r +} + +internal double %std.inplace_add(double %a, int %b) { + %b = cast int %b to double + %r = add double %a, %b + ret double %r +} + +internal double %std.sub(double %a, int %b) { + %b = cast int %b to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.inplace_sub(double %a, int %b) { + %b = cast int %b to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.mul(double %a, int %b) { + %b = cast int %b to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.inplace_mul(double %a, int %b) { + %b = cast int %b to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.div(double %a, int %b) { + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_div(double %a, int %b) { + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.floordiv(double %a, int %b) { + %a = cast double %a to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.inplace_floordiv(double %a, int %b) { + %a = cast double %a to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.truediv(double %a, int %b) { + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(double %a, int %b) { + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.mod(double %a, int %b) { + %b = cast int %b to double + %r = rem double %a, %b + ret double %r +} + +internal double %std.inplace_mod(double %a, int %b) { + %b = cast int %b to double + %r = rem double %a, %b + ret double %r +} + +internal bool %std.is_(double %a, int %b) { + %b = cast int %b to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.eq(double %a, int %b) { + %b = cast int %b to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.lt(double %a, int %b) { + %b = cast int %b to double + %r = setlt double %a, %b + ret bool %r +} + +internal bool %std.le(double %a, int %b) { + %b = cast int %b to double + %r = setle double %a, %b + ret bool %r +} + +internal bool %std.ge(double %a, int %b) { + %b = cast int %b to double + %r = setge double %a, %b + ret bool %r +} + +internal bool %std.gt(double %a, int %b) { + %b = cast int %b to double + %r = setgt double %a, %b + ret bool %r +} + +internal bool %std.neq(double %a, int %b) { + %b = cast int %b to double + %r = setgt double %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal double %std.add(double %a, bool %b) { + %b = cast bool %b to double + %r = add double %a, %b + ret double %r +} + +internal double %std.inplace_add(double %a, bool %b) { + %b = cast bool %b to double + %r = add double %a, %b + ret double %r +} + +internal double %std.sub(double %a, bool %b) { + %b = cast bool %b to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.inplace_sub(double %a, bool %b) { + %b = cast bool %b to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.mul(double %a, bool %b) { + %b = cast bool %b to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.inplace_mul(double %a, bool %b) { + %b = cast bool %b to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.div(double %a, bool %b) { + %b = cast bool %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_div(double %a, bool %b) { + %b = cast bool %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.floordiv(double %a, bool %b) { + %a = cast double %a to int + %b = cast bool %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.inplace_floordiv(double %a, bool %b) { + %a = cast double %a to int + %b = cast bool %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.truediv(double %a, bool %b) { + %b = cast bool %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(double %a, bool %b) { + %b = cast bool %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.mod(double %a, bool %b) { + %b = cast bool %b to double + %r = rem double %a, %b + ret double %r +} + +internal double %std.inplace_mod(double %a, bool %b) { + %b = cast bool %b to double + %r = rem double %a, %b + ret double %r +} + +internal bool %std.is_(double %a, bool %b) { + %b = cast bool %b to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.eq(double %a, bool %b) { + %b = cast bool %b to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.lt(double %a, bool %b) { + %b = cast bool %b to double + %r = setlt double %a, %b + ret bool %r +} + +internal bool %std.le(double %a, bool %b) { + %b = cast bool %b to double + %r = setle double %a, %b + ret bool %r +} + +internal bool %std.ge(double %a, bool %b) { + %b = cast bool %b to double + %r = setge double %a, %b + ret bool %r +} + +internal bool %std.gt(double %a, bool %b) { + %b = cast bool %b to double + %r = setgt double %a, %b + ret bool %r +} + +internal bool %std.neq(double %a, bool %b) { + %b = cast bool %b to double + %r = setgt double %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal double %std.add(uint %a, double %b) { + %a = cast uint %a to double + %r = add double %a, %b + ret double %r +} + +internal double %std.inplace_add(uint %a, double %b) { + %a = cast uint %a to double + %r = add double %a, %b + ret double %r +} + +internal double %std.sub(uint %a, double %b) { + %a = cast uint %a to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.inplace_sub(uint %a, double %b) { + %a = cast uint %a to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.mul(uint %a, double %b) { + %a = cast uint %a to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.inplace_mul(uint %a, double %b) { + %a = cast uint %a to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.div(uint %a, double %b) { + %a = cast uint %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_div(uint %a, double %b) { + %a = cast uint %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.floordiv(uint %a, double %b) { + %a = cast uint %a to int + %b = cast double %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.inplace_floordiv(uint %a, double %b) { + %a = cast uint %a to int + %b = cast double %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.truediv(uint %a, double %b) { + %a = cast uint %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(uint %a, double %b) { + %a = cast uint %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.mod(uint %a, double %b) { + %a = cast uint %a to double + %r = rem double %a, %b + ret double %r +} + +internal double %std.inplace_mod(uint %a, double %b) { + %a = cast uint %a to double + %r = rem double %a, %b + ret double %r +} + +internal bool %std.is_(uint %a, double %b) { + %a = cast uint %a to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.eq(uint %a, double %b) { + %a = cast uint %a to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.lt(uint %a, double %b) { + %a = cast uint %a to double + %r = setlt double %a, %b + ret bool %r +} + +internal bool %std.le(uint %a, double %b) { + %a = cast uint %a to double + %r = setle double %a, %b + ret bool %r +} + +internal bool %std.ge(uint %a, double %b) { + %a = cast uint %a to double + %r = setge double %a, %b + ret bool %r +} + +internal bool %std.gt(uint %a, double %b) { + %a = cast uint %a to double + %r = setgt double %a, %b + ret bool %r +} + +internal bool %std.neq(uint %a, double %b) { + %a = cast uint %a to double + %r = setgt double %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal uint %std.add(uint %a, uint %b) { + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.inplace_add(uint %a, uint %b) { + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.sub(uint %a, uint %b) { + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.inplace_sub(uint %a, uint %b) { + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.mul(uint %a, uint %b) { + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mul(uint %a, uint %b) { + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.div(uint %a, uint %b) { + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.inplace_div(uint %a, uint %b) { + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.floordiv(uint %a, uint %b) { + %a = cast uint %a to int + %b = cast uint %b to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal uint %std.inplace_floordiv(uint %a, uint %b) { + %a = cast uint %a to int + %b = cast uint %b to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal double %std.truediv(uint %a, uint %b) { + %a = cast uint %a to double + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(uint %a, uint %b) { + %a = cast uint %a to double + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal uint %std.mod(uint %a, uint %b) { + %r = rem uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mod(uint %a, uint %b) { + %r = rem uint %a, %b + ret uint %r +} + +internal bool %std.is_(uint %a, uint %b) { + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.eq(uint %a, uint %b) { + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.lt(uint %a, uint %b) { + %r = setlt uint %a, %b + ret bool %r +} + +internal bool %std.le(uint %a, uint %b) { + %r = setle uint %a, %b + ret bool %r +} + +internal bool %std.ge(uint %a, uint %b) { + %r = setge uint %a, %b + ret bool %r +} + +internal bool %std.gt(uint %a, uint %b) { + %r = setgt uint %a, %b + ret bool %r +} + +internal bool %std.neq(uint %a, uint %b) { + %r = setgt uint %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal uint %std.add(uint %a, int %b) { + %b = cast int %b to uint + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.inplace_add(uint %a, int %b) { + %b = cast int %b to uint + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.sub(uint %a, int %b) { + %b = cast int %b to uint + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.inplace_sub(uint %a, int %b) { + %b = cast int %b to uint + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.mul(uint %a, int %b) { + %b = cast int %b to uint + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mul(uint %a, int %b) { + %b = cast int %b to uint + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.div(uint %a, int %b) { + %b = cast int %b to uint + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.inplace_div(uint %a, int %b) { + %b = cast int %b to uint + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.floordiv(uint %a, int %b) { + %a = cast uint %a to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal uint %std.inplace_floordiv(uint %a, int %b) { + %a = cast uint %a to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal double %std.truediv(uint %a, int %b) { + %a = cast uint %a to double + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(uint %a, int %b) { + %a = cast uint %a to double + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} + +internal uint %std.mod(uint %a, int %b) { + %b = cast int %b to uint + %r = rem uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mod(uint %a, int %b) { + %b = cast int %b to uint + %r = rem uint %a, %b + ret uint %r +} + +internal bool %std.is_(uint %a, int %b) { + %b = cast int %b to uint + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.eq(uint %a, int %b) { + %b = cast int %b to uint + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.lt(uint %a, int %b) { + %b = cast int %b to uint + %r = setlt uint %a, %b + ret bool %r +} + +internal bool %std.le(uint %a, int %b) { + %b = cast int %b to uint + %r = setle uint %a, %b + ret bool %r +} + +internal bool %std.ge(uint %a, int %b) { + %b = cast int %b to uint + %r = setge uint %a, %b + ret bool %r +} + +internal bool %std.gt(uint %a, int %b) { + %b = cast int %b to uint + %r = setgt uint %a, %b + ret bool %r +} + +internal bool %std.neq(uint %a, int %b) { + %b = cast int %b to uint + %r = setgt uint %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal uint %std.add(uint %a, bool %b) { + %b = cast bool %b to uint + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.inplace_add(uint %a, bool %b) { + %b = cast bool %b to uint + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.sub(uint %a, bool %b) { + %b = cast bool %b to uint + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.inplace_sub(uint %a, bool %b) { + %b = cast bool %b to uint + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.mul(uint %a, bool %b) { + %b = cast bool %b to uint + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mul(uint %a, bool %b) { + %b = cast bool %b to uint + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.div(uint %a, bool %b) { + %b = cast bool %b to uint + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.inplace_div(uint %a, bool %b) { + %b = cast bool %b to uint + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.floordiv(uint %a, bool %b) { + %a = cast uint %a to int + %b = cast bool %b to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal uint %std.inplace_floordiv(uint %a, bool %b) { + %a = cast uint %a to int + %b = cast bool %b to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal double %std.truediv(uint %a, bool %b) { + %a = cast uint %a to double + %b = cast bool %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(uint %a, bool %b) { + %a = cast uint %a to double + %b = cast bool %b to double + %r = div double %a, %b + ret double %r +} + +internal uint %std.mod(uint %a, bool %b) { + %b = cast bool %b to uint + %r = rem uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mod(uint %a, bool %b) { + %b = cast bool %b to uint + %r = rem uint %a, %b + ret uint %r +} + +internal bool %std.is_(uint %a, bool %b) { + %b = cast bool %b to uint + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.eq(uint %a, bool %b) { + %b = cast bool %b to uint + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.lt(uint %a, bool %b) { + %b = cast bool %b to uint + %r = setlt uint %a, %b + ret bool %r +} + +internal bool %std.le(uint %a, bool %b) { + %b = cast bool %b to uint + %r = setle uint %a, %b + ret bool %r +} + +internal bool %std.ge(uint %a, bool %b) { + %b = cast bool %b to uint + %r = setge uint %a, %b + ret bool %r +} + +internal bool %std.gt(uint %a, bool %b) { + %b = cast bool %b to uint + %r = setgt uint %a, %b + ret bool %r +} + +internal bool %std.neq(uint %a, bool %b) { + %b = cast bool %b to uint + %r = setgt uint %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal double %std.add(int %a, double %b) { + %a = cast int %a to double + %r = add double %a, %b + ret double %r +} + +internal double %std.inplace_add(int %a, double %b) { + %a = cast int %a to double + %r = add double %a, %b + ret double %r +} + +internal double %std.sub(int %a, double %b) { + %a = cast int %a to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.inplace_sub(int %a, double %b) { + %a = cast int %a to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.mul(int %a, double %b) { + %a = cast int %a to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.inplace_mul(int %a, double %b) { + %a = cast int %a to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.div(int %a, double %b) { + %a = cast int %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_div(int %a, double %b) { + %a = cast int %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.floordiv(int %a, double %b) { + %b = cast double %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.inplace_floordiv(int %a, double %b) { + %b = cast double %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.truediv(int %a, double %b) { + %a = cast int %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(int %a, double %b) { + %a = cast int %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.mod(int %a, double %b) { + %a = cast int %a to double + %r = rem double %a, %b + ret double %r +} + +internal double %std.inplace_mod(int %a, double %b) { + %a = cast int %a to double + %r = rem double %a, %b + ret double %r +} + +internal bool %std.is_(int %a, double %b) { + %a = cast int %a to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.eq(int %a, double %b) { + %a = cast int %a to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.lt(int %a, double %b) { + %a = cast int %a to double + %r = setlt double %a, %b + ret bool %r +} + +internal bool %std.le(int %a, double %b) { + %a = cast int %a to double + %r = setle double %a, %b + ret bool %r +} + +internal bool %std.ge(int %a, double %b) { + %a = cast int %a to double + %r = setge double %a, %b + ret bool %r +} + +internal bool %std.gt(int %a, double %b) { + %a = cast int %a to double + %r = setgt double %a, %b + ret bool %r +} + +internal bool %std.neq(int %a, double %b) { + %a = cast int %a to double + %r = setgt double %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal uint %std.add(int %a, uint %b) { + %a = cast int %a to uint + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.inplace_add(int %a, uint %b) { + %a = cast int %a to uint + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.sub(int %a, uint %b) { + %a = cast int %a to uint + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.inplace_sub(int %a, uint %b) { + %a = cast int %a to uint + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.mul(int %a, uint %b) { + %a = cast int %a to uint + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mul(int %a, uint %b) { + %a = cast int %a to uint + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.div(int %a, uint %b) { + %a = cast int %a to uint + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.inplace_div(int %a, uint %b) { + %a = cast int %a to uint + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.floordiv(int %a, uint %b) { + %b = cast uint %b to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal uint %std.inplace_floordiv(int %a, uint %b) { + %b = cast uint %b to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal double %std.truediv(int %a, uint %b) { + %a = cast int %a to double + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(int %a, uint %b) { + %a = cast int %a to double + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal uint %std.mod(int %a, uint %b) { + %a = cast int %a to uint + %r = rem uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mod(int %a, uint %b) { + %a = cast int %a to uint + %r = rem uint %a, %b + ret uint %r +} + +internal bool %std.is_(int %a, uint %b) { + %a = cast int %a to uint + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.eq(int %a, uint %b) { + %a = cast int %a to uint + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.lt(int %a, uint %b) { + %a = cast int %a to uint + %r = setlt uint %a, %b + ret bool %r +} + +internal bool %std.le(int %a, uint %b) { + %a = cast int %a to uint + %r = setle uint %a, %b + ret bool %r +} + +internal bool %std.ge(int %a, uint %b) { + %a = cast int %a to uint + %r = setge uint %a, %b + ret bool %r +} + +internal bool %std.gt(int %a, uint %b) { + %a = cast int %a to uint + %r = setgt uint %a, %b + ret bool %r +} + +internal bool %std.neq(int %a, uint %b) { + %a = cast int %a to uint + %r = setgt uint %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal int %std.add(int %a, int %b) { + %r = add int %a, %b + ret int %r +} + +internal int %std.inplace_add(int %a, int %b) { + %r = add int %a, %b + ret int %r +} + +internal int %std.sub(int %a, int %b) { + %r = sub int %a, %b + ret int %r +} + +internal int %std.inplace_sub(int %a, int %b) { + %r = sub int %a, %b + ret int %r +} + +internal int %std.mul(int %a, int %b) { + %r = mul int %a, %b + ret int %r +} + +internal int %std.inplace_mul(int %a, int %b) { + %r = mul int %a, %b + ret int %r +} + +internal int %std.div(int %a, int %b) { + %r = div int %a, %b + ret int %r +} + +internal int %std.inplace_div(int %a, int %b) { + %r = div int %a, %b + ret int %r +} + +internal int %std.floordiv(int %a, int %b) { + %r = div int %a, %b + ret int %r +} + +internal int %std.inplace_floordiv(int %a, int %b) { + %r = div int %a, %b + ret int %r +} + +internal double %std.truediv(int %a, int %b) { + %a = cast int %a to double + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(int %a, int %b) { + %a = cast int %a to double + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} + +internal int %std.mod(int %a, int %b) { + %r = rem int %a, %b + ret int %r +} + +internal int %std.inplace_mod(int %a, int %b) { + %r = rem int %a, %b + ret int %r +} + +internal bool %std.is_(int %a, int %b) { + %r = seteq int %a, %b + ret bool %r +} + +internal bool %std.eq(int %a, int %b) { + %r = seteq int %a, %b + ret bool %r +} + +internal bool %std.lt(int %a, int %b) { + %r = setlt int %a, %b + ret bool %r +} + +internal bool %std.le(int %a, int %b) { + %r = setle int %a, %b + ret bool %r +} + +internal bool %std.ge(int %a, int %b) { + %r = setge int %a, %b + ret bool %r +} + +internal bool %std.gt(int %a, int %b) { + %r = setgt int %a, %b + ret bool %r +} + +internal bool %std.neq(int %a, int %b) { + %r = setgt int %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal int %std.add(int %a, bool %b) { + %b = cast bool %b to int + %r = add int %a, %b + ret int %r +} + +internal int %std.inplace_add(int %a, bool %b) { + %b = cast bool %b to int + %r = add int %a, %b + ret int %r +} + +internal int %std.sub(int %a, bool %b) { + %b = cast bool %b to int + %r = sub int %a, %b + ret int %r +} + +internal int %std.inplace_sub(int %a, bool %b) { + %b = cast bool %b to int + %r = sub int %a, %b + ret int %r +} + +internal int %std.mul(int %a, bool %b) { + %b = cast bool %b to int + %r = mul int %a, %b + ret int %r +} + +internal int %std.inplace_mul(int %a, bool %b) { + %b = cast bool %b to int + %r = mul int %a, %b + ret int %r +} + +internal int %std.div(int %a, bool %b) { + %b = cast bool %b to int + %r = div int %a, %b + ret int %r +} + +internal int %std.inplace_div(int %a, bool %b) { + %b = cast bool %b to int + %r = div int %a, %b + ret int %r +} + +internal int %std.floordiv(int %a, bool %b) { + %b = cast bool %b to int + %r = div int %a, %b + ret int %r +} + +internal int %std.inplace_floordiv(int %a, bool %b) { + %b = cast bool %b to int + %r = div int %a, %b + ret int %r +} + +internal double %std.truediv(int %a, bool %b) { + %a = cast int %a to double + %b = cast bool %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(int %a, bool %b) { + %a = cast int %a to double + %b = cast bool %b to double + %r = div double %a, %b + ret double %r +} + +internal int %std.mod(int %a, bool %b) { + %b = cast bool %b to int + %r = rem int %a, %b + ret int %r +} + +internal int %std.inplace_mod(int %a, bool %b) { + %b = cast bool %b to int + %r = rem int %a, %b + ret int %r +} + +internal bool %std.is_(int %a, bool %b) { + %b = cast bool %b to int + %r = seteq int %a, %b + ret bool %r +} + +internal bool %std.eq(int %a, bool %b) { + %b = cast bool %b to int + %r = seteq int %a, %b + ret bool %r +} + +internal bool %std.lt(int %a, bool %b) { + %b = cast bool %b to int + %r = setlt int %a, %b + ret bool %r +} + +internal bool %std.le(int %a, bool %b) { + %b = cast bool %b to int + %r = setle int %a, %b + ret bool %r +} + +internal bool %std.ge(int %a, bool %b) { + %b = cast bool %b to int + %r = setge int %a, %b + ret bool %r +} + +internal bool %std.gt(int %a, bool %b) { + %b = cast bool %b to int + %r = setgt int %a, %b + ret bool %r +} + +internal bool %std.neq(int %a, bool %b) { + %b = cast bool %b to int + %r = setgt int %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal double %std.add(bool %a, double %b) { + %a = cast bool %a to double + %r = add double %a, %b + ret double %r +} + +internal double %std.inplace_add(bool %a, double %b) { + %a = cast bool %a to double + %r = add double %a, %b + ret double %r +} + +internal double %std.sub(bool %a, double %b) { + %a = cast bool %a to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.inplace_sub(bool %a, double %b) { + %a = cast bool %a to double + %r = sub double %a, %b + ret double %r +} + +internal double %std.mul(bool %a, double %b) { + %a = cast bool %a to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.inplace_mul(bool %a, double %b) { + %a = cast bool %a to double + %r = mul double %a, %b + ret double %r +} + +internal double %std.div(bool %a, double %b) { + %a = cast bool %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_div(bool %a, double %b) { + %a = cast bool %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.floordiv(bool %a, double %b) { + %a = cast bool %a to int + %b = cast double %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.inplace_floordiv(bool %a, double %b) { + %a = cast bool %a to int + %b = cast double %b to int + %r = div int %a, %b + %r = cast int %r to double + ret double %r +} + +internal double %std.truediv(bool %a, double %b) { + %a = cast bool %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(bool %a, double %b) { + %a = cast bool %a to double + %r = div double %a, %b + ret double %r +} + +internal double %std.mod(bool %a, double %b) { + %a = cast bool %a to double + %r = rem double %a, %b + ret double %r +} + +internal double %std.inplace_mod(bool %a, double %b) { + %a = cast bool %a to double + %r = rem double %a, %b + ret double %r +} + +internal bool %std.is_(bool %a, double %b) { + %a = cast bool %a to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.eq(bool %a, double %b) { + %a = cast bool %a to double + %r = seteq double %a, %b + ret bool %r +} + +internal bool %std.lt(bool %a, double %b) { + %a = cast bool %a to double + %r = setlt double %a, %b + ret bool %r +} + +internal bool %std.le(bool %a, double %b) { + %a = cast bool %a to double + %r = setle double %a, %b + ret bool %r +} + +internal bool %std.ge(bool %a, double %b) { + %a = cast bool %a to double + %r = setge double %a, %b + ret bool %r +} + +internal bool %std.gt(bool %a, double %b) { + %a = cast bool %a to double + %r = setgt double %a, %b + ret bool %r +} + +internal bool %std.neq(bool %a, double %b) { + %a = cast bool %a to double + %r = setgt double %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal uint %std.add(bool %a, uint %b) { + %a = cast bool %a to uint + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.inplace_add(bool %a, uint %b) { + %a = cast bool %a to uint + %r = add uint %a, %b + ret uint %r +} + +internal uint %std.sub(bool %a, uint %b) { + %a = cast bool %a to uint + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.inplace_sub(bool %a, uint %b) { + %a = cast bool %a to uint + %r = sub uint %a, %b + ret uint %r +} + +internal uint %std.mul(bool %a, uint %b) { + %a = cast bool %a to uint + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mul(bool %a, uint %b) { + %a = cast bool %a to uint + %r = mul uint %a, %b + ret uint %r +} + +internal uint %std.div(bool %a, uint %b) { + %a = cast bool %a to uint + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.inplace_div(bool %a, uint %b) { + %a = cast bool %a to uint + %r = div uint %a, %b + ret uint %r +} + +internal uint %std.floordiv(bool %a, uint %b) { + %a = cast bool %a to int + %b = cast uint %b to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal uint %std.inplace_floordiv(bool %a, uint %b) { + %a = cast bool %a to int + %b = cast uint %b to int + %r = div int %a, %b + %r = cast int %r to uint + ret uint %r +} + +internal double %std.truediv(bool %a, uint %b) { + %a = cast bool %a to double + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal double %std.inplace_truediv(bool %a, uint %b) { + %a = cast bool %a to double + %b = cast uint %b to double + %r = div double %a, %b + ret double %r +} + +internal uint %std.mod(bool %a, uint %b) { + %a = cast bool %a to uint + %r = rem uint %a, %b + ret uint %r +} + +internal uint %std.inplace_mod(bool %a, uint %b) { + %a = cast bool %a to uint + %r = rem uint %a, %b + ret uint %r +} + +internal bool %std.is_(bool %a, uint %b) { + %a = cast bool %a to uint + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.eq(bool %a, uint %b) { + %a = cast bool %a to uint + %r = seteq uint %a, %b + ret bool %r +} + +internal bool %std.lt(bool %a, uint %b) { + %a = cast bool %a to uint + %r = setlt uint %a, %b + ret bool %r +} + +internal bool %std.le(bool %a, uint %b) { + %a = cast bool %a to uint + %r = setle uint %a, %b + ret bool %r +} + +internal bool %std.ge(bool %a, uint %b) { + %a = cast bool %a to uint + %r = setge uint %a, %b + ret bool %r +} + +internal bool %std.gt(bool %a, uint %b) { + %a = cast bool %a to uint + %r = setgt uint %a, %b + ret bool %r +} + +internal bool %std.neq(bool %a, uint %b) { + %a = cast bool %a to uint + %r = setgt uint %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} + +internal int %std.add(bool %a, int %b) { + %a = cast bool %a to int + %r = add int %a, %b + ret int %r +} + +internal int %std.inplace_add(bool %a, int %b) { + %a = cast bool %a to int + %r = add int %a, %b + ret int %r +} + +internal int %std.sub(bool %a, int %b) { + %a = cast bool %a to int + %r = sub int %a, %b + ret int %r +} + +internal int %std.inplace_sub(bool %a, int %b) { + %a = cast bool %a to int + %r = sub int %a, %b + ret int %r +} + +internal int %std.mul(bool %a, int %b) { + %a = cast bool %a to int + %r = mul int %a, %b + ret int %r +} + +internal int %std.inplace_mul(bool %a, int %b) { + %a = cast bool %a to int + %r = mul int %a, %b + ret int %r +} + +internal int %std.div(bool %a, int %b) { + %a = cast bool %a to int + %r = div int %a, %b + ret int %r +} + +internal int %std.inplace_div(bool %a, int %b) { + %a = cast bool %a to int + %r = div int %a, %b + ret int %r +} + +internal int %std.floordiv(bool %a, int %b) { + %a = cast bool %a to int + %r = div int %a, %b + ret int %r +} + +internal int %std.inplace_floordiv(bool %a, int %b) { + %a = cast bool %a to int + %r = div int %a, %b + ret int %r +} + +internal double %std.truediv(bool %a, int %b) { + %a = cast bool %a to double + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} -implementation +internal double %std.inplace_truediv(bool %a, int %b) { + %a = cast bool %a to double + %b = cast int %b to double + %r = div double %a, %b + ret double %r +} + +internal int %std.mod(bool %a, int %b) { + %a = cast bool %a to int + %r = rem int %a, %b + ret int %r +} + +internal int %std.inplace_mod(bool %a, int %b) { + %a = cast bool %a to int + %r = rem int %a, %b + ret int %r +} + +internal bool %std.is_(bool %a, int %b) { + %a = cast bool %a to int + %r = seteq int %a, %b + ret bool %r +} -;implementation of space operations for simple types +internal bool %std.eq(bool %a, int %b) { + %a = cast bool %a to int + %r = seteq int %a, %b + ret bool %r +} +internal bool %std.lt(bool %a, int %b) { + %a = cast bool %a to int + %r = setlt int %a, %b + ret bool %r +} -declare void %llvm.memmove(sbyte*, sbyte*, uint, uint) -declare void %llvm.memcpy(sbyte*, sbyte*, uint, uint) -declare void %llvm.memset(sbyte*, ubyte, uint, uint) +internal bool %std.le(bool %a, int %b) { + %a = cast bool %a to int + %r = setle int %a, %b + ret bool %r +} +internal bool %std.ge(bool %a, int %b) { + %a = cast bool %a to int + %r = setge int %a, %b + ret bool %r +} +internal bool %std.gt(bool %a, int %b) { + %a = cast bool %a to int + %r = setgt int %a, %b + ret bool %r +} +internal bool %std.neq(bool %a, int %b) { + %a = cast bool %a to int + %r = setgt int %a, %b + %r1 = xor bool %r, true + ret bool %r1 +} -;Basic operations for ints -internal int %std.add(int %a, int %b) { +internal int %std.add(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int %r = add int %a, %b ret int %r } -internal int %std.inplace_add(int %a, int %b) { - %r = add int %a, %b +internal int %std.inplace_add(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int + %r = add int %a, %b ret int %r } -internal int %std.sub(int %a, int %b) { +internal int %std.sub(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int %r = sub int %a, %b ret int %r } -internal int %std.inplace_sub(int %a, int %b) { +internal int %std.inplace_sub(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int %r = sub int %a, %b ret int %r } -internal int %std.mul(int %a, int %b) { - %r = mul int %a, %b +internal int %std.mul(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int + %r = mul int %a, %b ret int %r } -internal int %std.inplace_mul(int %a, int %b) { +internal int %std.inplace_mul(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int %r = mul int %a, %b ret int %r } -internal int %std.div(int %a, int %b) { +internal int %std.div(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int %r = div int %a, %b ret int %r } -internal int %std.inplace_div(int %a, int %b) { +internal int %std.inplace_div(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int %r = div int %a, %b ret int %r } -internal int %std.floordiv(int %a, int %b) { +internal bool %std.floordiv(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int %r = div int %a, %b - ret int %r + %r = cast int %r to bool + ret bool %r } -internal int %std.inplace_floordiv(int %a, int %b) { +internal bool %std.inplace_floordiv(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int %r = div int %a, %b - ret int %r + %r = cast int %r to bool + ret bool %r } -internal int %std.mod(int %a, int %b) { - %r = rem int %a, %b - ret int %r +internal double %std.truediv(bool %a, bool %b) { + %a = cast bool %a to double + %b = cast bool %b to double + %r = div double %a, %b + ret double %r } -internal int %std.inplace_mod(int %a, int %b) { - %r = rem int %a, %b +internal double %std.inplace_truediv(bool %a, bool %b) { + %a = cast bool %a to double + %b = cast bool %b to double + %r = div double %a, %b + ret double %r +} + +internal int %std.mod(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int + %r = rem int %a, %b ret int %r } -;Basic operations for doubles -internal double %std.add(double %a, double %b) { - %r = add double %a, %b - ret double %r +internal int %std.inplace_mod(bool %a, bool %b) { + %a = cast bool %a to int + %b = cast bool %b to int + %r = rem int %a, %b + ret int %r } -internal double %std.inplace_add(double %a, double %b) { - %r = add double %a, %b - ret double %r +internal bool %std.is_(bool %a, bool %b) { + %r = seteq bool %a, %b + ret bool %r } -internal double %std.sub(double %a, double %b) { - %r = sub double %a, %b - ret double %r +internal bool %std.eq(bool %a, bool %b) { + %r = seteq bool %a, %b + ret bool %r } -internal double %std.inplace_sub(double %a, double %b) { - %r = sub double %a, %b - ret double %r +internal bool %std.lt(bool %a, bool %b) { + %r = setlt bool %a, %b + ret bool %r } -internal double %std.mul(double %a, double %b) { - %r = mul double %a, %b - ret double %r +internal bool %std.le(bool %a, bool %b) { + %r = setle bool %a, %b + ret bool %r } -internal double %std.inplace_mul(double %a, double %b) { - %r = mul double %a, %b - ret double %r +internal bool %std.ge(bool %a, bool %b) { + %r = setge bool %a, %b + ret bool %r } -internal double %std.div(double %a, double %b) { - %r = div double %a, %b - ret double %r +internal bool %std.gt(bool %a, bool %b) { + %r = setgt bool %a, %b + ret bool %r } -internal double %std.inplace_div(double %a, double %b) { - %r = div double %a, %b - ret double %r +internal bool %std.neq(bool %a, bool %b) { + %r = setgt bool %a, %b + %r1 = xor bool %r, true + ret bool %r1 } -internal double %std.floordiv(double %a, double %b) { - %r = div double %a, %b - ret double %r +internal uint %std.and_(uint %a, uint %b) { + %r = and uint %a, %b + ret uint %r } -internal double %std.inplace_floordiv(double %a, double %b) { - %r = div double %a, %b - ret double %r +internal uint %std.inplace_and(uint %a, uint %b) { + %r = and uint %a, %b + ret uint %r } -internal double %std.mod(double %a, double %b) { - %r = rem double %a, %b - ret double %r +internal uint %std.or_(uint %a, uint %b) { + %r = or uint %a, %b + ret uint %r } -internal double %std.inplace_mod(double %a, double %b) { - %r = rem double %a, %b - ret double %r +internal uint %std.inplace_or(uint %a, uint %b) { + %r = or uint %a, %b + ret uint %r } -;Basic comparisons for doubles +internal uint %std.xor(uint %a, uint %b) { + %r = xor uint %a, %b + ret uint %r +} -internal bool %std.is(double %a, double %b) { - %r = seteq double %a, %b - ret bool %r +internal uint %std.inplace_xor(uint %a, uint %b) { + %r = xor uint %a, %b + ret uint %r } -internal bool %std.is_true(double %a) { - %b = cast double %a to bool - ret bool %b +internal uint %std.and_(uint %a, int %b) { + %b = cast int %b to uint + %r = and uint %a, %b + ret uint %r } -internal bool %std.eq(double %a, double %b) { - %r = seteq double %a, %b - ret bool %r +internal uint %std.inplace_and(uint %a, int %b) { + %b = cast int %b to uint + %r = and uint %a, %b + ret uint %r } -internal bool %std.neq(double %a, double %b) { - %r = seteq double %a, %b - %r1 = xor bool %r, true - ret bool %r1 +internal uint %std.or_(uint %a, int %b) { + %b = cast int %b to uint + %r = or uint %a, %b + ret uint %r } -internal bool %std.lt(double %a, double %b) { - %r = setlt double %a, %b - ret bool %r +internal uint %std.inplace_or(uint %a, int %b) { + %b = cast int %b to uint + %r = or uint %a, %b + ret uint %r } -internal bool %std.gt(double %a, double %b) { - %r = setgt double %a, %b - ret bool %r +internal uint %std.xor(uint %a, int %b) { + %b = cast int %b to uint + %r = xor uint %a, %b + ret uint %r } -internal bool %std.le(double %a, double %b) { - %r = setle double %a, %b - ret bool %r +internal uint %std.inplace_xor(uint %a, int %b) { + %b = cast int %b to uint + %r = xor uint %a, %b + ret uint %r } -internal bool %std.ge(double %a, double %b) { - %r = setge double %a, %b - ret bool %r +internal uint %std.and_(uint %a, bool %b) { + %b = cast bool %b to uint + %r = and uint %a, %b + ret uint %r } -;Basic comparisons for ints +internal uint %std.inplace_and(uint %a, bool %b) { + %b = cast bool %b to uint + %r = and uint %a, %b + ret uint %r +} -internal bool %std.is(int %a, int %b) { - %r = seteq int %a, %b - ret bool %r +internal uint %std.or_(uint %a, bool %b) { + %b = cast bool %b to uint + %r = or uint %a, %b + ret uint %r } -internal bool %std.is_true(int %a) { - %b = cast int %a to bool - ret bool %b +internal uint %std.inplace_or(uint %a, bool %b) { + %b = cast bool %b to uint + %r = or uint %a, %b + ret uint %r } -internal bool %std.eq(int %a, int %b) { - %r = seteq int %a, %b - ret bool %r +internal uint %std.xor(uint %a, bool %b) { + %b = cast bool %b to uint + %r = xor uint %a, %b + ret uint %r } -internal bool %std.neq(int %a, int %b) { - %r = seteq int %a, %b - %r1 = xor bool %r, true - ret bool %r1 +internal uint %std.inplace_xor(uint %a, bool %b) { + %b = cast bool %b to uint + %r = xor uint %a, %b + ret uint %r } -internal bool %std.lt(int %a, int %b) { - %r = setlt int %a, %b - ret bool %r +internal uint %std.and_(int %a, uint %b) { + %a = cast int %a to uint + %r = and uint %a, %b + ret uint %r } -internal bool %std.gt(int %a, int %b) { - %r = setgt int %a, %b - ret bool %r +internal uint %std.inplace_and(int %a, uint %b) { + %a = cast int %a to uint + %r = and uint %a, %b + ret uint %r } -internal bool %std.le(int %a, int %b) { - %r = setle int %a, %b - ret bool %r +internal uint %std.or_(int %a, uint %b) { + %a = cast int %a to uint + %r = or uint %a, %b + ret uint %r } -internal bool %std.ge(int %a, int %b) { - %r = setge int %a, %b - ret bool %r +internal uint %std.inplace_or(int %a, uint %b) { + %a = cast int %a to uint + %r = or uint %a, %b + ret uint %r } +internal uint %std.xor(int %a, uint %b) { + %a = cast int %a to uint + %r = xor uint %a, %b + ret uint %r +} -;Logical operations for ints +internal uint %std.inplace_xor(int %a, uint %b) { + %a = cast int %a to uint + %r = xor uint %a, %b + ret uint %r +} internal int %std.and_(int %a, int %b) { %r = and int %a, %b @@ -232,7 +2189,7 @@ ret int %r } -internal int %std.or(int %a, int %b) { +internal int %std.or_(int %a, int %b) { %r = or int %a, %b ret int %r } @@ -252,31 +2209,249 @@ ret int %r } +internal int %std.and_(int %a, bool %b) { + %b = cast bool %b to int + %r = and int %a, %b + ret int %r +} + +internal int %std.inplace_and(int %a, bool %b) { + %b = cast bool %b to int + %r = and int %a, %b + ret int %r +} + +internal int %std.or_(int %a, bool %b) { + %b = cast bool %b to int + %r = or int %a, %b + ret int %r +} + +internal int %std.inplace_or(int %a, bool %b) { + %b = cast bool %b to int + %r = or int %a, %b + ret int %r +} + +internal int %std.xor(int %a, bool %b) { + %b = cast bool %b to int + %r = xor int %a, %b + ret int %r +} + +internal int %std.inplace_xor(int %a, bool %b) { + %b = cast bool %b to int + %r = xor int %a, %b + ret int %r +} + +internal uint %std.and_(bool %a, uint %b) { + %a = cast bool %a to uint + %r = and uint %a, %b + ret uint %r +} + +internal uint %std.inplace_and(bool %a, uint %b) { + %a = cast bool %a to uint + %r = and uint %a, %b + ret uint %r +} + +internal uint %std.or_(bool %a, uint %b) { + %a = cast bool %a to uint + %r = or uint %a, %b + ret uint %r +} + +internal uint %std.inplace_or(bool %a, uint %b) { + %a = cast bool %a to uint + %r = or uint %a, %b + ret uint %r +} + +internal uint %std.xor(bool %a, uint %b) { + %a = cast bool %a to uint + %r = xor uint %a, %b + ret uint %r +} + +internal uint %std.inplace_xor(bool %a, uint %b) { + %a = cast bool %a to uint + %r = xor uint %a, %b + ret uint %r +} + +internal int %std.and_(bool %a, int %b) { + %a = cast bool %a to int + %r = and int %a, %b + ret int %r +} + +internal int %std.inplace_and(bool %a, int %b) { + %a = cast bool %a to int + %r = and int %a, %b + ret int %r +} + +internal int %std.or_(bool %a, int %b) { + %a = cast bool %a to int + %r = or int %a, %b + ret int %r +} + +internal int %std.inplace_or(bool %a, int %b) { + %a = cast bool %a to int + %r = or int %a, %b + ret int %r +} + +internal int %std.xor(bool %a, int %b) { + %a = cast bool %a to int + %r = xor int %a, %b + ret int %r +} + +internal int %std.inplace_xor(bool %a, int %b) { + %a = cast bool %a to int + %r = xor int %a, %b + ret int %r +} + +internal bool %std.and_(bool %a, bool %b) { + %r = and bool %a, %b + ret bool %r +} + +internal bool %std.inplace_and(bool %a, bool %b) { + %r = and bool %a, %b + ret bool %r +} + +internal bool %std.or_(bool %a, bool %b) { + %r = or bool %a, %b + ret bool %r +} + +internal bool %std.inplace_or(bool %a, bool %b) { + %r = or bool %a, %b + ret bool %r +} + +internal bool %std.xor(bool %a, bool %b) { + %r = xor bool %a, %b + ret bool %r +} + +internal bool %std.inplace_xor(bool %a, bool %b) { + %r = xor bool %a, %b + ret bool %r +} + +internal uint %std.lshift(uint %a, uint %b) { + %b = cast uint %b to ubyte + %r = shl uint %a, ubyte %b + ret uint %r +} + +internal uint %std.rshift(uint %a, uint %b) { + %b = cast uint %b to ubyte + %r = shr uint %a, ubyte %b + ret uint %r +} + +internal uint %std.lshift(uint %a, int %b) { + %b = cast int %b to ubyte + %r = shl uint %a, ubyte %b + ret uint %r +} + +internal uint %std.rshift(uint %a, int %b) { + %b = cast int %b to ubyte + %r = shr uint %a, ubyte %b + ret uint %r +} + +internal int %std.lshift(int %a, uint %b) { + %b = cast uint %b to ubyte + %r = shl int %a, ubyte %b + ret int %r +} + +internal int %std.rshift(int %a, uint %b) { + %b = cast uint %b to ubyte + %r = shr int %a, ubyte %b + ret int %r +} + internal int %std.lshift(int %a, int %b) { - %shift = cast int %b to ubyte - %r = shl int %a, ubyte %shift + %b = cast int %b to ubyte + %r = shl int %a, ubyte %b ret int %r } internal int %std.rshift(int %a, int %b) { - %shift = cast int %b to ubyte - %r = shr int %a, ubyte %shift + %b = cast int %b to ubyte + %r = shr int %a, ubyte %b ret int %r } +internal int %std.int(double %a) { + %r = cast double %a to int + ret int %r +} -;bools -internal bool %std.is_true(bool %a) { - ret bool %a +internal bool %std.bool(double %a) { + %r = cast double %a to bool + ret bool %r +} + +internal bool %std.is_true(double %a) { + %r = cast double %a to bool + ret bool %r +} + +internal int %std.int(uint %a) { + %r = cast uint %a to int + ret int %r +} + +internal bool %std.bool(uint %a) { + %r = cast uint %a to bool + ret bool %r +} + +internal bool %std.is_true(uint %a) { + %r = cast uint %a to bool + ret bool %r +} + +internal int %std.int(int %a) { + %r = cast int %a to int + ret int %r +} + +internal bool %std.bool(int %a) { + %r = cast int %a to bool + ret bool %r } -internal bool %std.and(bool %a, bool %b) { - %r = and bool %a, %b +internal bool %std.is_true(int %a) { + %r = cast int %a to bool + ret bool %r +} + +internal int %std.int(bool %a) { + %r = cast bool %a to int + ret int %r +} + +internal bool %std.bool(bool %a) { + %r = cast bool %a to bool ret bool %r } -internal bool %std.or(bool %a, bool %b) { - %r = or bool %a, %b +internal bool %std.is_true(bool %a) { + %r = cast bool %a to bool ret bool %r } Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Fri Apr 8 04:05:05 2005 @@ -47,6 +47,8 @@ def float_f1(x): return x + 1.0 +def float_int_bool(x): + return x * (2 + True) #array snippets @@ -311,8 +313,10 @@ self.n = n def raises(i): - if i: - raise MyException, 10 + if i == 3: + raise MyException, 12 + if i == 4: + raise IndexError return 1 def catches(i): Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Fri Apr 8 04:05:05 2005 @@ -1,3 +1,4 @@ +from __future__ import division import autopath import py @@ -124,7 +125,10 @@ def test_float_f1(self): f = compile_function(llvmsnippet.float_f1, [float]) assert f(1.0) == 2.0 - + + def test_float_int_bool(self): + f = compile_function(llvmsnippet.float_int_bool, [float]) + assert f(3.0) == 9.0 class TestLLVMArray(object): def setup_method(self, method): From cfbolz at codespeak.net Fri Apr 8 04:58:52 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Fri, 8 Apr 2005 04:58:52 +0200 (CEST) Subject: [pypy-svn] r10425 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050408025852.B592627B5F@code1.codespeak.net> Author: cfbolz Date: Fri Apr 8 04:58:52 2005 New Revision: 10425 Modified: pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: Improved exception support: catching of the instance of the exception works now. Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Fri Apr 8 04:58:52 2005 @@ -262,7 +262,7 @@ self.l_base = None def typename(self): - return "%std.exception* " + return "%std.exception*" def llvmtype(self): return "%std.class* " @@ -284,13 +284,34 @@ (self.l_base.llvmname(), l_tmp.llvmname())) def op_simple_call(self, l_target, args, lblock, l_func): + print "$" * 80 + print l_target.typed_name(), lblock.malloc(l_target) l_args0 = self.gen.get_repr(args[0]) + print l_args0.typed_name() + l_tmp = self.gen.get_local_tmp(PointerTypeRepr("%std.class*", + self.gen), l_func) + l_func.dependencies.update([l_args0, l_tmp]) + lblock.getelementptr(l_tmp, l_target, [0, 0]) + lblock.store(l_args0, l_tmp) + if len(args) > 1: + l_args1 = self.gen.get_repr(args[1]) + else: + l_args1 = self.gen.get_repr(Constant(None)) + l_tmp1 = self.gen.get_local_tmp(PointerTypeRepr("%std.list.sbyte*", + self.gen), l_func) l_cast = self.gen.get_local_tmp(PointerTypeRepr("%std.list.sbyte", self.gen), l_func) - l_tmp = self.gen.get_local_tmp(PointerTypeRepr("%std.list.sbyte*", - self.gen), l_func) - l_func.dependencies.update([l_args0, l_cast, l_tmp]) - lblock.cast(l_cast, l_args0) - lblock.getelementptr(l_tmp, l_target, [0, 1]) - lblock.store(l_cast, l_tmp) + l_func.dependencies.update([l_args1, l_tmp1]) + lblock.getelementptr(l_tmp1, l_target, [0, 1]) + lblock.cast(l_cast, l_args1) + lblock.store(l_cast, l_tmp1) + + def t_op_type(self, l_target, args, lblock, l_func): + l_args0 = self.gen.get_repr(args[0]) + l_func.dependencies.add(l_args0) + l_tmp = self.gen.get_local_tmp( + PointerTypeRepr("%std.class*", self.gen), l_func) + lblock.getelementptr(l_tmp, l_args0, [0, 0]) + lblock.load(l_target, l_tmp) + Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Fri Apr 8 04:58:52 2005 @@ -23,7 +23,7 @@ "inplace_mod", "inplace_pow", "inplace_lshift", "inplace_rshift", "inplace_and", "inplace_or", "inplace_xor", "contains", "newlist", "newtuple", "alloc_and_set", - "issubtype"] + "issubtype", "type"] C_SIMPLE_TYPES = {annmodel.SomeChar: "char", annmodel.SomeString: "char*", @@ -304,12 +304,17 @@ l_exitcases = [self.gen.get_repr(ex.exitcase) for ex in self.pyblock.exits[1:]] self.l_func.dependencies.update(l_exitcases) - sw = [(str(abs(id(ex.exitcase))), "%" + l_l.toblock) - for ex, l_l in zip(self.pyblock.exits[1:], l_exits)] - lexcblock.switch(l_ui, "%" + self.lblock.label + ".unwind", sw) - lunwindblock = llvmbc.BasicBlock(self.lblock.label + ".unwind") - lunwindblock.unwind() - self.l_func.add_block(lunwindblock) + # XXX XXX XXX: For now we assume, that if there is only one exit + # and it's exitcase is Exception, this should match anything + if len(l_exits) == 1 and self.pyblock.exits[1].exitcase == Exception: + lexcblock.uncond_branch("%" + l_exits[0].toblock) + else: + sw = [(str(abs(id(ex.exitcase))), "%" + l_l.toblock) + for ex, l_l in zip(self.pyblock.exits[1:], l_exits)] + lexcblock.switch(l_ui, "%" + self.lblock.label + ".unwind", sw) + lunwindblock = llvmbc.BasicBlock(self.lblock.label + ".unwind") + lunwindblock.unwind() + self.l_func.add_block(lunwindblock) class ExceptBlockRepr(BlockRepr): def create_space_ops(self): Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Fri Apr 8 04:58:52 2005 @@ -306,8 +306,6 @@ return 2 return 4 - -#doesn't work yet! class MyException(Exception): def __init__(self, n): self.n = n @@ -317,6 +315,8 @@ raise MyException, 12 if i == 4: raise IndexError + if i > 5: + raise MyException(i) return 1 def catches(i): Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Fri Apr 8 04:58:52 2005 @@ -295,6 +295,16 @@ for i in range(10, 20): assert f(i) == 2 + def test_catch_instance(self): + f = compile_function(llvmsnippet.catches, [int]) + assert f(1) == 1 + assert f(2) == 1 + assert f(3) == 12 + py.test.raises(RuntimeError, "f(4)") + assert f(5) == 1 + assert f(6) == 6 + assert f(13) == 13 + class TestSnippet(object): def setup_method(self, method): From cfbolz at codespeak.net Fri Apr 8 05:04:59 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Fri, 8 Apr 2005 05:04:59 +0200 (CEST) Subject: [pypy-svn] r10426 - pypy/dist/pypy/translator/llvm Message-ID: <20050408030459.97B9727B5F@code1.codespeak.net> Author: cfbolz Date: Fri Apr 8 05:04:59 2005 New Revision: 10426 Modified: pypy/dist/pypy/translator/llvm/classrepr.py Log: Removed debug print statements. Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Fri Apr 8 05:04:59 2005 @@ -265,7 +265,7 @@ return "%std.exception*" def llvmtype(self): - return "%std.class* " + return "%std.class*" def llvmname(self): return self.objectname @@ -284,11 +284,8 @@ (self.l_base.llvmname(), l_tmp.llvmname())) def op_simple_call(self, l_target, args, lblock, l_func): - print "$" * 80 - print l_target.typed_name(), lblock.malloc(l_target) l_args0 = self.gen.get_repr(args[0]) - print l_args0.typed_name() l_tmp = self.gen.get_local_tmp(PointerTypeRepr("%std.class*", self.gen), l_func) l_func.dependencies.update([l_args0, l_tmp]) From arigo at codespeak.net Fri Apr 8 13:29:43 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 8 Apr 2005 13:29:43 +0200 (CEST) Subject: [pypy-svn] r10430 - in pypy/dist/pypy/translator: . genc tool Message-ID: <20050408112943.173C727B60@code1.codespeak.net> Author: arigo Date: Fri Apr 8 13:29:42 2005 New Revision: 10430 Added: pypy/dist/pypy/translator/genc/g_simple.h - copied unchanged from r10428, pypy/dist/pypy/translator/genc/g_int.h pypy/dist/pypy/translator/genc/t_simple.py - copied, changed from r10428, pypy/dist/pypy/translator/genc/t_int.py Removed: pypy/dist/pypy/translator/genc/g_int.h pypy/dist/pypy/translator/genc/parametric.py pypy/dist/pypy/translator/genc/t_int.py Modified: pypy/dist/pypy/translator/genc/ctyper.py pypy/dist/pypy/translator/genc/funcdef.py pypy/dist/pypy/translator/genc/g_include.h pypy/dist/pypy/translator/genc/genc.py pypy/dist/pypy/translator/genc/t_func.py pypy/dist/pypy/translator/genc/t_pyobj.py pypy/dist/pypy/translator/tool/graphpage.py pypy/dist/pypy/translator/translator.py pypy/dist/pypy/translator/typer.py pypy/dist/pypy/translator/unsimplify.py Log: A good clean-up of the CType_Xxx classes: it is no more creating parametrized subclasses on-the-fly. Instead, the CXxxType classes are instantiated and cached in the translator. Each instance stands for a specific concrete type in the code generator. For example, there is one CIntType instance in the translator, but generally several CFuncPtrType instances, one per function signature. Modified: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- pypy/dist/pypy/translator/genc/ctyper.py (original) +++ pypy/dist/pypy/translator/genc/ctyper.py Fri Apr 8 13:29:42 2005 @@ -2,36 +2,46 @@ GenC-specific type specializer """ -from pypy.translator.typer import Specializer, TypeMatch -from pypy.annotation.model import SomeInteger, SomePBC -from pypy.translator.genc.t_pyobj import CType_PyObject -from pypy.translator.genc.t_int import CType_Int, CType_None -from pypy.translator.genc.t_func import CType_FuncPtr +from __future__ import generators +from pypy.translator.typer import Specializer +from pypy.objspace.flow.model import Constant, Variable, SpaceOperation +from pypy.annotation.model import SomeInteger, SomePBC, SomeTuple +from pypy.translator.genc.t_pyobj import CPyObjectType +from pypy.translator.genc.t_simple import CIntType, CNoneType +from pypy.translator.genc.t_func import CFuncPtrType import types from pypy.interpreter.pycode import CO_VARARGS class GenCSpecializer(Specializer): - TInt = TypeMatch(SomeInteger(), CType_Int) - TNone = TypeMatch(SomePBC({None: True}), CType_None) - - # in more-specific-first, more-general-last order - typematches = [TNone, TInt] - - defaulttypecls = CType_PyObject - - specializationtable = [ - ## op specialized op arg types concrete return type - ('add', 'int_add', TInt, TInt, CType_Int), - ('inplace_add', 'int_add', TInt, TInt, CType_Int), - ('sub', 'int_sub', TInt, TInt, CType_Int), - ('inplace_sub', 'int_sub', TInt, TInt, CType_Int), - ('is_true', 'int_is_true', TInt, CType_Int), - ] - - def annotation2typecls(self, s_value): - besttype = Specializer.annotation2typecls(self, s_value) - if besttype is None: + def __init__(self, annotator): + # instantiate the common concrete types + t = annotator.translator + TInt = t.getconcretetype(CIntType) + TNone = t.getconcretetype(CNoneType) + TPyObject = t.getconcretetype(CPyObjectType) + + # initialization + Specializer.__init__( + self, annotator, + defaultconcretetype = TPyObject, + + # in more-specific-first, more-general-last order + typematches = [TNone, TInt], + + specializationtable = [ + ## op specialized op arg types concrete return type + ('add', 'int_add', TInt, TInt, TInt), + ('inplace_add', 'int_add', TInt, TInt, TInt), + ('sub', 'int_sub', TInt, TInt, TInt), + ('inplace_sub', 'int_sub', TInt, TInt, TInt), + ('is_true', 'int_is_true', TInt, TInt), + ], + ) + + def annotation2concretetype(self, s_value): + besttype = Specializer.annotation2concretetype(self, s_value) + if besttype == self.defaultconcretetype: if isinstance(s_value, SomePBC): # XXX! must be somehow unified with bookkeeper.pycall()! @@ -44,19 +54,59 @@ graph = self.annotator.translator.flowgraphs[s_value.const] args_ct = [self.setbesttype(a) for a in graph.getargs()] res_ct = self.setbesttype(graph.getreturnvar()) - key = tuple(args_ct + [res_ct]) - besttype = CType_FuncPtr[key] + besttype = self.annotator.translator.getconcretetype( + CFuncPtrType, tuple(args_ct), res_ct) + +## elif isinstance(s_value, SomeTuple): +## key = tuple([self.annotation2concretetype(s_item) +## for s_item in s_value.items]) +## besttype = CType_Tuple[key] return besttype - def getspecializedop(self, op, bindings): + def make_specialized_op(self, op, bindings): if op.opname == 'simple_call': s_callable = self.annotator.binding(op.args[0], True) if s_callable is not None: - ct = self.annotation2typecls(s_callable) - if ct is not None and issubclass(ct, CType_FuncPtr): - args_typecls = [ct] - args_typecls += ct.args_typecls - return 'direct_call', args_typecls, ct.return_typecls + ct = self.annotation2concretetype(s_callable) + if isinstance(ct, CFuncPtrType): + argtypes = [ct] + argtypes += ct.argtypes + self.make_typed_op(op, argtypes, ct.returntype, + newopname='direct_call') + return + +## if op.opname == 'getitem': +## s_obj = self.annotator.binding(op.args[0], True) +## if s_obj is not None: +## ct = self.annotation2typecls(s_obj) +## if issubclass(ct, CType_Tuple): +## if isinstance(op.args[1], Constant): +## index = op.args[1].value +## try: +## ct1 = ct.items_typecls[index] +## except IndexError: +## print "*** getitem: IndexError in tuple access" +## else: +## self.make_typed_op(op, [ct, CType_Int], ct1, +## newopname='tuple_getitem') +## return + +## if op.opname == 'newtuple': +## s_tuple = self.annotator.binding(op.result, True) +## if s_tuple is not None: +## ct = self.annotation2typecls(s_tuple) +## if issubclass(ct, CType_Tuple): +## op1 = SpaceOperation('tuple_new', [], op.result) +## self.make_typed_op(op1, [], ct) +## for i in range(len(ct.items_typecls)): +## op1 = SpaceOperation('tuple_inititem', +## [op.result, Constant(i), op.args[i]], +## Variable()) +## ct1 = ct.items_typecls[i] +## self.make_typed_op(op1, +## [ct, CType_Int, ct1], +## CType_None) +## return - return Specializer.getspecializedop(self, op, bindings) + Specializer.make_specialized_op(self, op, bindings) Modified: pypy/dist/pypy/translator/genc/funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc/funcdef.py (original) +++ pypy/dist/pypy/translator/genc/funcdef.py Fri Apr 8 13:29:42 2005 @@ -8,7 +8,6 @@ from types import FunctionType from pypy.translator.gensupp import c_string -from pypy.translator.genc.t_pyobj import ctypeof # Set this if you want call trace frames to be built USE_CALL_TRACE = False @@ -68,12 +67,12 @@ declare_fast_args.insert(0, 'TRACE_ARGS') declare_fast_args = ', '.join(declare_fast_args) or 'void' name_and_arguments = '%s(%s)' % (self.fast_name, declare_fast_args) - ctret = ctypeof(graph.getreturnvar()) + ctret = self.ctypeof(graph.getreturnvar()) fast_function_header = 'static ' + ( ctret.ctypetemplate % (name_and_arguments,)) - name_of_defaults = [self.genc.pyobjrepr.nameof(x, debug=('Default argument of', - self)) + name_of_defaults = [self.genc.nameofvalue(x, debug=( + 'Default argument of', self)) for x in (func.func_defaults or ())] # store misc. information @@ -91,10 +90,16 @@ self.genc.globaldecl.append(fast_function_header + '; /* forward */') + def ctypeof(self, var_or_const): + try: + return var_or_const.concretetype + except AttributeError: + return self.genc.pyobjtype + def get_globalobject(self): if self.globalobject_name is None: self.wrapper_name = 'py' + self.fast_name - self.globalobject_name = self.genc.pyobjrepr.uniquename('gfunc_' + + self.globalobject_name = self.genc.pyobjtype.uniquename('gfunc_' + self.base_name) return self.globalobject_name @@ -105,7 +110,8 @@ def decl(self, v): assert isinstance(v, Variable) - return ctypeof(v).ctypetemplate % (self.localscope.localname(v.name),) + ct = self.ctypeof(v) + return ct.ctypetemplate % (self.localscope.localname(v.name),) def expr(self, v): if isinstance(v, Variable): @@ -119,6 +125,8 @@ # ____________________________________________________________ def gen_wrapper(self, f): + # XXX this is a huge mess. Think about producing the wrapper by + # generating its content as a flow graph... func = self.func f_name = self.wrapper_name name_of_defaults = self.name_of_defaults @@ -151,13 +159,12 @@ conversions = [] call_fast_args = [] for a, numberedname in zip(graphargs, numberednames): - try: - convert_from_obj = a.type_cls.convert_from_obj - except AttributeError: + ct = self.ctypeof(a) + if ct == self.genc.pyobjtype: call_fast_args.append(numberedname) else: + convert_from_obj = ct.opname_conv_from_obj # simple conv only! convertedname = numberedname.replace('o', 'a') - ct = ctypeof(a) print >> f, '\t%s;' % (ct.ctypetemplate % (convertedname,)) conversions.append('\tOP_%s(%s, %s, type_error)' % ( convert_from_obj.upper(), numberedname, convertedname)) @@ -165,13 +172,13 @@ # XXX even though they are not PyObjects call_fast_args.append(convertedname) # return value conversion - try: - convert_to_obj = self.ctret.convert_to_obj - except AttributeError: + ct = self.ctret + if ct == self.genc.pyobjtype: putresultin = 'oret' footer = None else: - print >> f, '\t%s;' % (self.ctret.ctypetemplate % ('aret',)) + convert_to_obj = ct.opname_conv_to_obj # simple conv only for now! + print >> f, '\t%s;' % (ct.ctypetemplate % ('aret',)) putresultin = 'aret' footer = 'OP_%s(aret, oret, type_error)' % convert_to_obj.upper() print >> f @@ -254,7 +261,7 @@ # generate an incref for each input argument for a in self.graphargs: - cincref = getattr(ctypeof(a), 'cincref', None) + cincref = self.ctypeof(a).cincref if cincref: print >> f, '\t' + cincref % (self.expr(a),) @@ -297,15 +304,14 @@ if a1 in has_ref: del has_ref[a1] else: - ct1 = ctypeof(a1) - ct2 = ctypeof(a2) + ct1 = self.ctypeof(a1) + ct2 = self.ctypeof(a2) assert ct1 == ct2 - cincref = getattr(ct1, 'cincref', None) - if cincref: - line += '\t' + cincref % (self.expr(a2),) + if ct1.cincref: + line += '\t' + ct1.cincref % (self.expr(a2),) yield line for v in has_ref: - cdecref = getattr(ctypeof(v), 'cdecref', None) + cdecref = self.ctypeof(v).cdecref if cdecref: yield cdecref % (linklocalvars[v],) yield 'goto block%d;' % blocknum[link.target] @@ -370,7 +376,7 @@ for link in block.exits[1:]: assert issubclass(link.exitcase, Exception) yield 'if (PyErr_ExceptionMatches(%s)) {' % ( - self.genc.pyobjrepr.nameof(link.exitcase),) + self.genc.nameofvalue(link.exitcase),) yield '\tPyObject *exc_cls, *exc_value, *exc_tb;' yield '\tPyErr_Fetch(&exc_cls, &exc_value, &exc_tb);' yield '\tif (exc_value == NULL) {' @@ -386,7 +392,7 @@ err_reachable = True else: # block ending in a switch on a value - ct = ctypeof(block.exitswitch) + ct = self.ctypeof(block.exitswitch) for link in block.exits[:-1]: assert link.exitcase in (False, True) yield 'if (%s == %s) {' % (self.expr(block.exitswitch), @@ -405,12 +411,12 @@ while to_release: v = to_release.pop() if err_reachable: - if not hasattr(v, 'type_cls'): - yield 'ERR_DECREF(%s)' % self.expr(v) + if not hasattr(v, 'concretetype'): + cdecref = 'ERR_DECREF(%s)' else: - cdecref = getattr(ctypeof(v), 'cdecref', None) - if cdecref: - yield cdecref % (self.expr(v),) + cdecref = v.concretetype.cdecref + if cdecref: + yield cdecref % (self.expr(v),) yield 'err%d_%d:' % (blocknum[block], len(to_release)) err_reachable = True if err_reachable: Modified: pypy/dist/pypy/translator/genc/g_include.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_include.h (original) +++ pypy/dist/pypy/translator/genc/g_include.h Fri Apr 8 13:29:42 2005 @@ -11,7 +11,7 @@ #include "eval.h" #include "g_operation.h" -#include "g_int.h" +#include "g_simple.h" #include "g_trace.h" #include "g_support.h" #include "g_module.h" Deleted: /pypy/dist/pypy/translator/genc/g_int.h ============================================================================== --- /pypy/dist/pypy/translator/genc/g_int.h Fri Apr 8 13:29:42 2005 +++ (empty file) @@ -1,16 +0,0 @@ - -/************************************************************/ - /*** C header subsection: operations between ints ***/ - - -#define OP_INT2OBJ(i,r,err) if (!(r=PyInt_FromLong(i))) FAIL(err) -#define OP_OBJ2INT(o,r,err) if ((r=PyInt_AsLong(o))==-1 && PyErr_Occurred()) \ - FAIL(err) - -#define OP_NONE2OBJ(n,r,err) r = Py_None; Py_INCREF(r); -#define OP_OBJ2NONE(o,n,err) assert(o == Py_None); n = 0; - -#define OP_INT_IS_TRUE(x,r,err) r = (x != 0); - -#define OP_INT_ADD(x,y,r,err) r = x + y; -#define OP_INT_SUB(x,y,r,err) r = x - y; Modified: pypy/dist/pypy/translator/genc/genc.py ============================================================================== --- pypy/dist/pypy/translator/genc/genc.py (original) +++ pypy/dist/pypy/translator/genc/genc.py Fri Apr 8 13:29:42 2005 @@ -5,11 +5,11 @@ import autopath, os from pypy.objspace.flow.model import Variable, Constant +from pypy.interpreter.miscutils import getthreadlocals from pypy.translator.gensupp import uniquemodulename -from pypy.translator.gensupp import NameManager from pypy.translator.genc.funcdef import FunctionDef, USE_CALL_TRACE -from pypy.translator.genc.t_pyobj import CType_PyObject, ctypeof +from pypy.translator.genc.t_pyobj import CPyObjectType # ____________________________________________________________ @@ -27,42 +27,29 @@ self.translator = translator self.modname = (modname or uniquemodulename(translator.functions[0].__name__)) - self.namespace= NameManager() - # keywords cannot be reused. This is the C99 draft's list. - self.namespace.make_reserved_names(''' - auto enum restrict unsigned - break extern return void - case float short volatile - char for signed while - const goto sizeof _Bool - continue if static _Complex - default inline struct _Imaginary - do int switch - double long typedef - else register union - ''') self.globaldecl = [] self.pendingfunctions = [] self.funcdefs = {} self.allfuncdefs = [] - self.ctyperepresenters = {} - self.pyobjrepr = self.getrepresenter(CType_PyObject) - self.gen_source() + self.pyobjtype = translator.getconcretetype(CPyObjectType) + self.namespace = self.pyobjtype.namespace - def getrepresenter(self, type_cls): + assert not hasattr(getthreadlocals(), 'genc') + getthreadlocals().genc = self try: - return self.ctyperepresenters[type_cls] - except KeyError: - crepr = self.ctyperepresenters[type_cls] = type_cls(self) - return crepr + self.gen_source() + finally: + del getthreadlocals().genc def nameofconst(self, c, debug=None): - crepr = self.getrepresenter(ctypeof(c)) - return crepr.nameof(c.value, debug=debug) + try: + concretetype = c.concretetype + except AttributeError: + concretetype = self.pyobjtype + return concretetype.nameof(c.value, debug=debug) - def nameofvalue(self, value, type_cls): - crepr = self.getrepresenter(type_cls) - return crepr.nameof(value) + def nameofvalue(self, value, concretetype=None, debug=None): + return (concretetype or self.pyobjtype).nameof(value, debug=debug) def getfuncdef(self, func): if func not in self.funcdefs: @@ -86,7 +73,7 @@ info = { 'modname': self.modname, 'entrypointname': self.translator.functions[0].__name__, - 'entrypoint': self.pyobjrepr.nameof(self.translator.functions[0]), + 'entrypoint': self.pyobjtype.nameof(self.translator.functions[0]), } # header if USE_CALL_TRACE: @@ -97,10 +84,6 @@ while self.pendingfunctions: funcdef = self.pendingfunctions.pop() self.gen_cfunction(funcdef) - # collect more of the latercode after each function - for crepr in self.ctyperepresenters.values(): - if hasattr(crepr, 'collect_globals'): - crepr.collect_globals() self.gen_global_declarations() # after all the ff_xxx() functions we generate the pyff_xxx() wrappers @@ -110,7 +93,7 @@ # global object table print >> f, self.C_OBJECT_TABLE - for name in self.pyobjrepr.globalobjects: + for name in self.pyobjtype.globalobjects: if not name.startswith('gfunc_'): print >> f, '\t{&%s, "%s"},' % (name, name) print >> f, self.C_TABLE_END @@ -128,7 +111,7 @@ # frozen init bytecode print >> f, self.C_FROZEN_BEGIN - bytecode = self.pyobjrepr.getfrozenbytecode() + bytecode = self.pyobjtype.getfrozenbytecode(self) def char_repr(c): if c in '\\"': return '\\' + c if ' ' <= c < '\x7F': return c @@ -144,6 +127,11 @@ print >> f, self.C_FOOTER % info def gen_global_declarations(self): + # collect more of the latercode between the functions, + # and produce the corresponding global declarations + for ct in self.translator.concretetypes.values(): + if hasattr(ct, 'collect_globals'): + self.globaldecl += ct.collect_globals(self) g = self.globaldecl if g: f = self.f Deleted: /pypy/dist/pypy/translator/genc/parametric.py ============================================================================== --- /pypy/dist/pypy/translator/genc/parametric.py Fri Apr 8 13:29:42 2005 +++ (empty file) @@ -1,41 +0,0 @@ -import types - - -class parametrictype(type): - """The metaclass of parametric type classes.""" - - def __getitem__(cls, key): - if '_parametrizedinstances_' not in cls.__dict__: - cls._parametrizedinstances_ = {} - elif cls._parametrizedinstances_ is None: - raise TypeError, "'%s' is already specialized" % cls.__name__ - try: - return cls._parametrizedinstances_[key] - except KeyError: - keyrepr = recrepr(key) - if keyrepr.startswith('(') and keyrepr.endswith(')') and key != (): - keyrepr = keyrepr[1:-1] - newname = '%s[%s]' % (cls.__name__, keyrepr) - CType_Parametrized = type(cls)(newname, (cls,), { - '_parametrizedinstances_': None, - '__module__': cls.__module__, - }) - cls._parametrizedinstances_[key] = CType_Parametrized - for basecls in CType_Parametrized.__mro__: - raw = basecls.__dict__.get('__initsubclass__') - if isinstance(raw, types.FunctionType): - raw(CType_Parametrized, key) # call it as a class method - return CType_Parametrized - - -def recrepr(key): - if isinstance(key, tuple): - items = [recrepr(x) for x in key] - if len(items) == 1: - return '(%s,)' % (items[0],) - else: - return '(%s)' % (', '.join(items),) - try: - return key.__name__ - except AttributeError: - return repr(key) Modified: pypy/dist/pypy/translator/genc/t_func.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_func.py (original) +++ pypy/dist/pypy/translator/genc/t_func.py Fri Apr 8 13:29:42 2005 @@ -1,19 +1,29 @@ -from pypy.translator.genc.parametric import parametrictype +from pypy.translator.genc.t_simple import CType -class CType_FuncPtr: - __metaclass__ = parametrictype +class CFuncPtrType(CType): + error_return = 'NULL' - def __initsubclass__(cls, key): - cls.args_typecls = key[:-1] - cls.return_typecls = key[-1] - arglist = [tc.ctypetemplate % ('',) for tc in cls.args_typecls] + def __init__(self, translator, argtypes, returntype): + super(CFuncPtrType, self).__init__(translator) + self.argtypes = argtypes + self.returntype = returntype + # build a type declaration template matching the strange C syntax + # for function pointer types: + # (*) () + # which becomes funny when itself is a complex type; + # in that case, the whole rest of the line, i.e. the "(*..)(...)", + # is what should be inserted into the returntype's "%s". + arglist = [ct.ctypetemplate % ('',) for ct in argtypes] argtemplate = ', '.join(arglist or ['void']) header = '(*%s)(' + argtemplate + ')' - cls.ctypetemplate = cls.return_typecls.ctypetemplate % (header,) + self.ctypetemplate = returntype.ctypetemplate % (header,) - def __init__(self, genc): - self.genc = genc + def debugname(self): + # a nice textual name for debugging... + argnames = [ct.debugname() for ct in self.argtypes] + returnname = self.returntype.debugname() + return 'fn (%s) -> %s' % (', '.join(argnames), returnname) def nameof(self, func, debug=None): - return self.genc.getfuncdef(func).fast_name + return self.genc().getfuncdef(func).fast_name Deleted: /pypy/dist/pypy/translator/genc/t_int.py ============================================================================== --- /pypy/dist/pypy/translator/genc/t_int.py Fri Apr 8 13:29:42 2005 +++ (empty file) @@ -1,27 +0,0 @@ - - -class CType_Int: - ctypetemplate = 'int %s' - convert_to_obj = 'int2obj' - convert_from_obj = 'obj2int' - error_return = '-1' - - def __init__(self, genc): - pass - - def nameof(self, v, debug=None): - return '%d' % v - - -class CType_None: - ctypetemplate = 'int %s' - convert_to_obj = 'none2obj' - convert_from_obj = 'obj2none' - error_return = '-1' - - def __init__(self, genc): - pass - - def nameof(self, v, debug=None): - assert v is None - return '0' Modified: pypy/dist/pypy/translator/genc/t_pyobj.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_pyobj.py (original) +++ pypy/dist/pypy/translator/genc/t_pyobj.py Fri Apr 8 13:29:42 2005 @@ -1,13 +1,14 @@ from __future__ import generators import autopath, os, sys, __builtin__, marshal, zlib from pypy.objspace.flow.model import Variable, Constant -from pypy.translator.gensupp import builtin_base +from pypy.translator.gensupp import builtin_base, NameManager +from pypy.translator.genc.t_simple import CType from types import FunctionType, CodeType, InstanceType, ClassType from pypy.objspace.std.restricted_int import r_int, r_uint -class CType_PyObject: +class CPyObjectType(CType): """The PyObject* C type. This class contains all the nameof_xxx() methods that allow a wild variety of Python objects to be 'pickled' as Python source code that will @@ -16,9 +17,24 @@ ctypetemplate = 'PyObject *%s' cincref = 'Py_INCREF(%s);' cdecref = 'Py_DECREF(%s);' + error_return = 'NULL' - def __init__(self, genc): - self.genc = genc + def __init__(self, translator): + self.translator = translator + self.namespace= NameManager() + # keywords cannot be reused. This is the C99 draft's list. + self.namespace.make_reserved_names(''' + auto enum restrict unsigned + break extern return void + case float short volatile + char for signed while + const goto sizeof _Bool + continue if static _Complex + default inline struct _Imaginary + do int switch + double long typedef + else register union + ''') self.cnames = {Constant(None).key: 'Py_None', Constant(False).key: 'Py_False', Constant(True).key: 'Py_True', @@ -30,6 +46,7 @@ 'Py_True = True', ] + self.globaldecl = [] self.latercode = [] # list of generators generating extra lines # for later in initxxx() -- for recursive # objects @@ -66,9 +83,9 @@ return name def uniquename(self, basename): - name = self.genc.namespace.uniquename(basename) + name = self.namespace.uniquename(basename) self.globalobjects.append(name) - self.genc.globaldecl.append('static PyObject *%s;' % (name,)) + self.globaldecl.append('static PyObject *%s;' % (name,)) return name def initcode_python(self, name, pyexpr): @@ -136,7 +153,7 @@ def skipped_function(self, func): # debugging only! Generates a placeholder for missing functions # that raises an exception when called. - if self.genc.translator.frozen: + if self.translator.frozen: warning = 'NOT GENERATING' else: warning = 'skipped' @@ -152,10 +169,10 @@ def nameof_function(self, func, progress=['-\x08', '\\\x08', '|\x08', '/\x08']): - funcdef = self.genc.getfuncdef(func) + funcdef = self.genc().getfuncdef(func) if funcdef is None: return self.skipped_function(func) - if not self.genc.translator.frozen: + if not self.translator.frozen: p = progress.pop(0) sys.stderr.write(p) progress.append(p) @@ -183,7 +200,7 @@ return name def should_translate_attr(self, pbc, attr): - ann = self.genc.translator.annotator + ann = self.translator.annotator if ann is None: ignore = getattr(pbc.__class__, 'NOT_RPYTHON_ATTRIBUTES', []) if attr in ignore: @@ -288,12 +305,12 @@ continue # XXX some __NAMES__ are important... nicer solution sought #raise Exception, "unexpected name %r in class %s"%(key, cls) - if isinstance(value, staticmethod) and value.__get__(1) not in self.genc.translator.flowgraphs and self.genc.translator.frozen: + if isinstance(value, staticmethod) and value.__get__(1) not in self.translator.flowgraphs and self.translator.frozen: print value continue if isinstance(value, classmethod) and value.__get__(cls).__doc__.lstrip().startswith("NOT_RPYTHON"): continue - if isinstance(value, FunctionType) and value not in self.genc.translator.flowgraphs and self.genc.translator.frozen: + if isinstance(value, FunctionType) and value not in self.translator.flowgraphs and self.translator.frozen: print value continue @@ -408,26 +425,29 @@ def later(self, gen): self.latercode.append((gen, self.debugstack)) - def collect_globals(self): + def collect_globals(self, genc): while self.latercode: gen, self.debugstack = self.latercode.pop() #self.initcode.extend(gen) -- eats TypeError! bad CPython! for line in gen: self.initcode.append(line) self.debugstack = () - if self.genc.f2 is not None: + if genc.f2 is not None: for line in self.initcode: - print >> self.genc.f2, line + print >> genc.f2, line del self.initcode[:] - - def getfrozenbytecode(self): - if self.genc.f2 is not None: - self.genc.f2.seek(0) - self.initcode.insert(0, self.genc.f2.read()) + result = self.globaldecl + self.globaldecl = [] + return result + + def getfrozenbytecode(self, genc): + if genc.f2 is not None: + genc.f2.seek(0) + self.initcode.insert(0, genc.f2.read()) self.initcode.append('') source = '\n'.join(self.initcode) del self.initcode[:] - co = compile(source, self.genc.modname, 'exec') + co = compile(source, genc.modname, 'exec') del source small = zlib.compress(marshal.dumps(co)) source = """if 1: @@ -435,10 +455,6 @@ exec marshal.loads(zlib.decompress(%r))""" % small # Python 2.2 SyntaxError without newline: Bug #501622 source += '\n' - co = compile(source, self.genc.modname, 'exec') + co = compile(source, genc.modname, 'exec') del source return marshal.dumps(co) - - -def ctypeof(v): - return getattr(v, 'type_cls', CType_PyObject) Copied: pypy/dist/pypy/translator/genc/t_simple.py (from r10428, pypy/dist/pypy/translator/genc/t_int.py) ============================================================================== --- pypy/dist/pypy/translator/genc/t_int.py (original) +++ pypy/dist/pypy/translator/genc/t_simple.py Fri Apr 8 13:29:42 2005 @@ -1,26 +1,47 @@ +from pypy.annotation.model import SomeInteger, SomePBC +from pypy.objspace.flow.model import SpaceOperation +from pypy.interpreter.miscutils import getthreadlocals -class CType_Int: - ctypetemplate = 'int %s' - convert_to_obj = 'int2obj' - convert_from_obj = 'obj2int' - error_return = '-1' +class CType(object): + cincref = None + cdecref = None - def __init__(self, genc): - pass + def __init__(self, translator): + self.translator = translator - def nameof(self, v, debug=None): - return '%d' % v + def convert_to_obj(self, v1, v2): + return [SpaceOperation(self.opname_conv_to_obj, [v1], v2)] + + def convert_from_obj(self, v1, v2): + return [SpaceOperation(self.opname_conv_from_obj, [v1], v2)] + + def debugname(self): + return self.__class__.__name__ + + def genc(): + """A hack to get at the currently running GenC instance.""" + return getthreadlocals().genc + genc = staticmethod(genc) -class CType_None: - ctypetemplate = 'int %s' - convert_to_obj = 'none2obj' - convert_from_obj = 'obj2none' - error_return = '-1' +class CIntType(CType): + error_return = '-1' + ctypetemplate = 'int %s' + s_annotation = SomeInteger() + opname_conv_to_obj = 'int2obj' + opname_conv_from_obj = 'obj2int' + + def nameof(self, v, debug=None): + return '%d' % (v,) + - def __init__(self, genc): - pass +class CNoneType(CType): + error_return = '-1' + ctypetemplate = 'int %s' + s_annotation = SomePBC({None: True}) + opname_conv_to_obj = 'none2obj' + opname_conv_from_obj = 'obj2none' def nameof(self, v, debug=None): assert v is None Modified: pypy/dist/pypy/translator/tool/graphpage.py ============================================================================== --- pypy/dist/pypy/translator/tool/graphpage.py (original) +++ pypy/dist/pypy/translator/tool/graphpage.py Fri Apr 8 13:29:42 2005 @@ -127,9 +127,10 @@ def visit(node): if isinstance(node, Block): for var in node.getvariables(): - if hasattr(var, 'type_cls'): + if hasattr(var, 'concretetype'): + typename = var.concretetype.debugname() info = self.links.get(var.name, var.name) - info = '(%s) %s' % (var.type_cls.__name__, info) + info = '(%s) %s' % (typename, info) self.links[var.name] = info for graph in graphs: traverse(visit, graph) Modified: pypy/dist/pypy/translator/translator.py ============================================================================== --- pypy/dist/pypy/translator/translator.py (original) +++ pypy/dist/pypy/translator/translator.py Fri Apr 8 13:29:42 2005 @@ -63,6 +63,7 @@ self.functions = [] # the keys of self.flowgraphs, in creation order self.callgraph = {} # {opaque_tag: (caller, callee)} self.frozen = False # when frozen, no more flowgraphs can be generated + self.concretetypes = {} # see getconcretetype() if self.entrypoint: self.getflowgraph() @@ -265,6 +266,17 @@ ## # not actually start the analysis of the called function yet. ## return impossiblevalue + def getconcretetype(self, cls, *args): + # Return a (cached) 'concrete type' object attached to this translator. + # Concrete types are what is put in the 'concretetype' attribute of + # the Variables and Constants of the flow graphs by typer.py to guide + # the code generators. + try: + return self.concretetypes[cls, args] + except KeyError: + result = self.concretetypes[cls, args] = cls(self, *args) + return result + if __name__ == '__main__': from pypy.translator.test import snippet as test Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Fri Apr 8 13:29:42 2005 @@ -4,91 +4,89 @@ from pypy.translator.unsimplify import insert_empty_block -class TypeMatch: - def __init__(self, s_type, type_cls): - self.s_type = s_type - self.type_cls = type_cls - class TyperError(Exception): pass class Specializer: - specializationdict = {} - def __init__(self, annotator): - if not self.specializationdict: - # setup the class - d = self.specializationdict - for e in self.specializationtable: - opname1 = e[0] - opname2 = e[1] - spectypes = e[2:-1] - restypecls = e[-1] - info = opname2, spectypes, restypecls - d.setdefault(opname1, []).append(info) - d.setdefault(opname2, []).append(info) + def __init__(self, annotator, defaultconcretetype, typematches, + specializationtable): self.annotator = annotator + self.defaultconcretetype = defaultconcretetype + self.typematches = typematches + # turn the table into a dict for faster look-ups + d = {} + for e in specializationtable: + opname1 = e[0] + opname2 = e[1] + spectypes = e[2:-1] + restype = e[-1] + info = opname2, spectypes, restype + d.setdefault(opname1, []).append(info) + d.setdefault(opname2, []).append(info) + self.specializationdict = d def specialize(self): for block in self.annotator.annotated: if block.operations != (): self.specialize_block(block) - def settype(self, a, type_cls): - """Set the type_cls of a Variable or Constant.""" - if hasattr(a, 'type_cls') and a.type_cls != type_cls: + def settype(self, a, concretetype): + """Set the concretetype of a Variable or Constant.""" + if hasattr(a, 'concretetype') and a.concretetype != concretetype: raise TyperError, "inconsitent type for %r" % (a,) - a.type_cls = type_cls + a.concretetype = concretetype def setbesttype(self, a): - """Set the best type_cls for a Variable or Constant according to + """Set the best concretetype for a Variable or Constant according to the annotations.""" try: - return a.type_cls + return a.concretetype except AttributeError: - besttype = self.defaulttypecls s_value = self.annotator.binding(a, True) if s_value is not None: - besttype = self.annotation2typecls(s_value) or besttype + besttype = self.annotation2concretetype(s_value) + else: + besttype = self.defaultconcretetype self.settype(a, besttype) return besttype - def annotation2typecls(self, s_value): - for tmatch in self.typematches: - if tmatch.s_type.contains(s_value): - return tmatch.type_cls - return None + def annotation2concretetype(self, s_value): + for concretetype in self.typematches: + if concretetype.s_annotation.contains(s_value): + return concretetype + return self.defaultconcretetype - def convertvar(self, v, type_cls): + def convertvar(self, v, concretetype): """Get the operation(s) needed to convert 'v' to the given type.""" ops = [] if isinstance(v, Constant): try: # mark the concrete type of the Constant - self.settype(v, type_cls) + self.settype(v, concretetype) except TyperError: v = Constant(v.value) # need a copy of the Constant - self.settype(v, type_cls) + self.settype(v, concretetype) - elif v.type_cls is not type_cls: + elif v.concretetype != concretetype: # XXX do we need better conversion paths? # 1) convert to the generic type - if v.type_cls is not self.defaulttypecls: + if v.concretetype != self.defaultconcretetype: v2 = Variable() - v2.type_cls = self.defaulttypecls - op = SpaceOperation(v.type_cls.convert_to_obj, [v], v2) + v2.concretetype = self.defaultconcretetype + newops = list(v.concretetype.convert_to_obj(v, v2)) v = v2 - ops.append(op) + ops += newops # 2) convert back from the generic type - if type_cls is not self.defaulttypecls: + if concretetype != self.defaultconcretetype: v2 = Variable() - v2.type_cls = type_cls - op = SpaceOperation(type_cls.convert_from_obj, [v], v2) + v2.concretetype = concretetype + newops = list(concretetype.convert_from_obj(v, v2)) v = v2 - ops.append(op) + ops += newops return v, ops @@ -98,41 +96,46 @@ self.setbesttype(a) # specialize all the operations, as far as possible - newops = [] + self.newops = [] for op in block.operations: - indices = range(len(op.args)) args = list(op.args) bindings = [self.annotator.binding(a, True) for a in args] # replace constant annotations with real Constants - for i in indices: + for i in range(len(op.args)): if isinstance(args[i], Variable) and bindings[i] is not None: if bindings[i].is_constant(): args[i] = Constant(bindings[i].const) op = SpaceOperation(op.opname, args, op.result) - # look for a specialized version of the current operation - opname2, argtypes, restypecls = self.getspecializedop(op, bindings) - assert len(argtypes) == len(args) - - # type-convert the input arguments - for i in indices: - args[i], convops = self.convertvar(args[i], argtypes[i]) - newops += convops - - # store the result variable's type - self.settype(op.result, restypecls) - - # store the possibly modified SpaceOperation - if opname2 != op.opname or args != op.args: - op = SpaceOperation(opname2, args, op.result) - newops.append(op) - - block.operations[:] = newops + # make a specialized version of the current operation + # (which may become several operations) + self.make_specialized_op(op, bindings) + block.operations[:] = self.newops self.insert_link_conversions(block) + + def make_typed_op(self, op, argtypes, restype, newopname=None): + """Make a typed copy of the given SpaceOperation.""" + args = list(op.args) + assert len(argtypes) == len(args) + + # type-convert the input arguments + for i in range(len(args)): + args[i], convops = self.convertvar(args[i], argtypes[i]) + self.newops += convops + + # store the result variable's type + self.settype(op.result, restype) + + # store the possibly modified SpaceOperation + if newopname is not None or args != op.args: + op = SpaceOperation(newopname or op.opname, args, op.result) + self.newops.append(op) + + def insert_link_conversions(self, block): # insert the needed conversions on the links can_insert_here = block.exitswitch is None and len(block.exits) == 1 @@ -154,23 +157,20 @@ block.operations += convops link.args[i] = a1 - def getspecializedop(self, op, bindings): + + def make_specialized_op(self, op, bindings): specializations = self.specializationdict.get(op.opname, ()) - for opname2, spectypes, restypecls in specializations: + for opname2, spectypes, restype in specializations: assert len(spectypes) == len(op.args) == len(bindings) for i in range(len(spectypes)): if bindings[i] is None: break - if not spectypes[i].s_type.contains(bindings[i]): + if not spectypes[i].s_annotation.contains(bindings[i]): break else: # specialization found - # opname2 and restypecls are set above by the for loop - argtypes = [tmatch.type_cls for tmatch in spectypes] - break - else: - # specialization not found - opname2 = op.opname - argtypes = [self.defaulttypecls] * len(op.args) - restypecls = self.defaulttypecls - return opname2, argtypes, restypecls + self.make_typed_op(op, spectypes, restype, newopname=opname2) + return + # specialization not found + argtypes = [self.defaultconcretetype] * len(op.args) + self.make_typed_op(op, argtypes, self.defaultconcretetype) Modified: pypy/dist/pypy/translator/unsimplify.py ============================================================================== --- pypy/dist/pypy/translator/unsimplify.py (original) +++ pypy/dist/pypy/translator/unsimplify.py Fri Apr 8 13:29:42 2005 @@ -1,14 +1,14 @@ from pypy.objspace.flow.model import * def copyvar(translator, v): - """Make a copy of the Variable v, preserving annotations and type_cls.""" + """Make a copy of the Variable v, preserving annotations and concretetype.""" assert isinstance(v, Variable) newvar = Variable(v) annotator = translator.annotator if annotator is not None and v in annotator.bindings: annotator.bindings[newvar] = annotator.bindings[v] - if hasattr(v, 'type_cls'): - newvar.type_cls = v.type_cls + if hasattr(v, 'concretetype'): + newvar.concretetype = v.concretetype return newvar def insert_empty_block(translator, link): From pedronis at codespeak.net Fri Apr 8 19:22:15 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 8 Apr 2005 19:22:15 +0200 (CEST) Subject: [pypy-svn] r10445 - in pypy/dist/pypy: annotation objspace/std objspace/std/test tool tool/test translator translator/genc Message-ID: <20050408172215.9A61527B72@code1.codespeak.net> Author: pedronis Date: Fri Apr 8 19:22:15 2005 New Revision: 10445 Added: pypy/dist/pypy/tool/rarithmetic.py - copied unchanged from r10438, pypy/dist/pypy/objspace/std/restricted_int.py pypy/dist/pypy/tool/test/test_rarithmetic.py - copied, changed from r10438, pypy/dist/pypy/objspace/std/test/test_restricted_int.py Removed: pypy/dist/pypy/objspace/std/restricted_int.py pypy/dist/pypy/objspace/std/test/test_restricted_int.py Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/annotation/model.py pypy/dist/pypy/objspace/std/dictobject.py pypy/dist/pypy/objspace/std/intobject.py pypy/dist/pypy/objspace/std/listobject.py pypy/dist/pypy/objspace/std/stringobject.py pypy/dist/pypy/objspace/std/tupleobject.py pypy/dist/pypy/translator/genc/t_pyobj.py pypy/dist/pypy/translator/geninterplevel.py Log: start to follow our plan about integer arithmetic, moved restricted_int out of std, because it may be used elsewhere, to tool/rarithmetic.py Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Fri Apr 8 19:22:15 2005 @@ -11,7 +11,7 @@ from pypy.annotation.bookkeeper import getbookkeeper from pypy.annotation.factory import ListFactory from pypy.objspace.flow.model import Constant -import pypy.objspace.std.restricted_int +import pypy.tool.rarithmetic # convenience only! def immutablevalue(x): @@ -225,8 +225,8 @@ original = getattr(__builtin__, name[8:]) BUILTIN_ANALYZERS[original] = value -BUILTIN_ANALYZERS[pypy.objspace.std.restricted_int.r_int] = builtin_int -BUILTIN_ANALYZERS[pypy.objspace.std.restricted_int.r_uint] = restricted_uint +BUILTIN_ANALYZERS[pypy.tool.rarithmetic.r_int] = builtin_int +BUILTIN_ANALYZERS[pypy.tool.rarithmetic.r_uint] = restricted_uint BUILTIN_ANALYZERS[Exception.__init__.im_func] = exception_init # this one is needed otherwise when annotating assert in a test we may try to annotate # py.test AssertionError.__init__ . Modified: pypy/dist/pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/dist/pypy/annotation/model.py Fri Apr 8 19:22:15 2005 @@ -105,7 +105,7 @@ knowntype = int def __init__(self, nonneg=False, unsigned=False): self.nonneg = nonneg - self.unsigned = unsigned # pypy.objspace.std.restricted_int.r_uint + self.unsigned = unsigned # pypy.tool.rarithmetic.r_uint class SomeBool(SomeInteger): Modified: pypy/dist/pypy/objspace/std/dictobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/dictobject.py (original) +++ pypy/dist/pypy/objspace/std/dictobject.py Fri Apr 8 19:22:15 2005 @@ -8,7 +8,7 @@ from pypy.objspace.std.objspace import * from pypy.interpreter import gateway -from pypy.objspace.std.restricted_int import r_uint +from pypy.tool.rarithmetic import r_uint class Entry: def __init__(self): Modified: pypy/dist/pypy/objspace/std/intobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/intobject.py (original) +++ pypy/dist/pypy/objspace/std/intobject.py Fri Apr 8 19:22:15 2005 @@ -1,6 +1,6 @@ from pypy.objspace.std.objspace import * from pypy.objspace.std.noneobject import W_NoneObject -from pypy.objspace.std.restricted_int import r_int, LONG_BIT +from pypy.tool.rarithmetic import r_int, LONG_BIT """ The implementation of integers is a bit difficult, Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Fri Apr 8 19:22:15 2005 @@ -5,7 +5,7 @@ from pypy.objspace.std import slicetype from pypy.interpreter import gateway, baseobjspace -from pypy.objspace.std.restricted_int import r_int, r_uint +from pypy.tool.rarithmetic import r_int, r_uint from pypy.objspace.std.listsort import TimSort Deleted: /pypy/dist/pypy/objspace/std/restricted_int.py ============================================================================== --- /pypy/dist/pypy/objspace/std/restricted_int.py Fri Apr 8 19:22:15 2005 +++ (empty file) @@ -1,283 +0,0 @@ -""" -This file defines restricted integers. - -Purpose: -Have an integer implementation that emulates -restricted Python for CPython. - -r_int an integer type which has overflow checking. - It doesn not automatically extend to long -r_uint an unsigned integer which has not overflow - checking. It is always positive and always - truncated to the internal machine word size. - -We try to keep the number of such internal types -to a minimum. -""" - -class r_int(int): - """ fake integer implementation in order to make sure that - primitive integer operations do overflow """ - - def __add__(self, other): - x = int(self) - y = int(other) - return r_int(x + y) - __radd__ = __add__ - - def __sub__(self, other): - x = int(self) - y = int(other) - return r_int(x - y) - - def __rsub__(self, other): - y = int(self) - x = int(other) - return r_int(x - y) - - def __mul__(self, other): - x = int(self) - if not isinstance(other, (int, long)): - return x * other - y = int(other) - return r_int(x * y) - __rmul__ = __mul__ - - def __div__(self, other): - x = int(self) - y = int(other) - return r_int(x // y) - - __floordiv__ = __div__ - - def __rdiv__(self, other): - y = int(self) - x = int(other) - return r_int(x // y) - - __rfloordiv__ = __rdiv__ - - def __mod__(self, other): - x = int(self) - y = int(other) - return r_int(x % y) - - def __rmod__(self, other): - y = int(self) - x = int(other) - return r_int(x % y) - - def __divmod__(self, other): - x = int(self) - y = int(other) - res = divmod(x, y) - return (r_int(res[0]), r_int(res[1])) - - def __lshift__(self, n): - # ensure long shift, so we don't depend on - # shift truncation (2.3) vs. long(2.4) - x = long(self) - y = int(n) - return r_int(x << y) - - def __rlshift__(self, n): - y = long(self) - x = int(n) - return r_int(x << y) - - def __rshift__(self, n): - x = int(self) - y = int(n) - return r_int(x >> y) - - def __rrshift__(self, n): - y = int(self) - x = int(n) - return r_int(x >> y) - - def __or__(self, other): - x = int(self) - y = int(other) - return r_int(x | y) - __ror__ = __or__ - - def __and__(self, other): - x = int(self) - y = int(other) - return r_int(x & y) - __rand__ = __and__ - - def __xor__(self, other): - x = int(self) - y = int(other) - return r_int(x ^ y) - __rxor__ = __xor__ - - def __neg__(self): - x = int(self) - return r_int(-x) - - def __pos__(self): - return r_int(self) - - def __invert__(self): - x = int(self) - return r_int(~x) - - def __pow__(self, other, m=None): - x = int(self) - y = int(other) - res = pow(x, y, m) - return r_int(res) - - def __rpow__(self, other, m=None): - y = int(self) - x = int(other) - res = pow(x, y, m) - return r_int(res) - -# set up of machine internals -_bits = 0 -_itest = 1 -_Ltest = 1L -while _itest == _Ltest and type(_itest) is int: - _itest *= 2 - _Ltest *= 2 - _bits += 1 - -LONG_BIT = _bits+1 -LONG_MASK = _Ltest*2-1 -LONG_TEST = _Ltest - -def intmask(n): - if isinstance(n, int): - return n - n &= LONG_MASK - if n >= LONG_TEST: - n -= 2*LONG_TEST - return int(n) - -del _bits, _itest, _Ltest - -class r_uint(long): - """ fake unsigned integer implementation """ - - _mask = LONG_MASK - - def __new__(klass, val): - return long.__new__(klass, val & klass._mask) - - def __add__(self, other): - x = long(self) - y = long(other) - return r_uint(x + y) - __radd__ = __add__ - - def __sub__(self, other): - x = long(self) - y = long(other) - return r_uint(x - y) - - def __rsub__(self, other): - y = long(self) - x = long(other) - return r_uint(x - y) - - def __mul__(self, other): - x = long(self) - if not isinstance(other, (int, long)): - return x * other - y = long(other) - return r_uint(x * y) - __rmul__ = __mul__ - - def __div__(self, other): - x = long(self) - y = long(other) - return r_uint(x // y) - - __floordiv__ = __div__ - - def __rdiv__(self, other): - y = long(self) - x = long(other) - return r_uint(x // y) - - __rfloordiv__ = __rdiv__ - - def __mod__(self, other): - x = long(self) - y = long(other) - return r_uint(x % y) - - def __rmod__(self, other): - y = long(self) - x = long(other) - return r_uint(x % y) - - def __divmod__(self, other): - x = long(self) - y = long(other) - res = divmod(x, y) - return (r_uint(res[0]), r_uint(res[1])) - - def __lshift__(self, n): - x = long(self) - y = long(n) - return r_uint(x << y) - - def __rlshift__(self, n): - y = long(self) - x = long(n) - return r_uint(x << y) - - def __rshift__(self, n): - x = long(self) - y = long(n) - return r_uint(x >> y) - - def __rrshift__(self, n): - y = long(self) - x = long(n) - return r_uint(x >> y) - - def __or__(self, other): - x = long(self) - y = long(other) - return r_uint(x | y) - __ror__ = __or__ - - def __and__(self, other): - x = long(self) - y = long(other) - return r_uint(x & y) - __rand__ = __and__ - - def __xor__(self, other): - x = long(self) - y = long(other) - return r_uint(x ^ y) - __rxor__ = __xor__ - - def __neg__(self): - x = long(self) - return r_uint(-x) - - def __pos__(self): - return r_uint(self) - - def __invert__(self): - x = long(self) - return r_uint(~x) - - def __pow__(self, other, m=None): - x = long(self) - y = long(other) - res = pow(x, y, m) - return r_uint(res) - - def __rpow__(self, other, m=None): - y = long(self) - x = long(other) - res = pow(x, y, m) - return r_uint(res) Modified: pypy/dist/pypy/objspace/std/stringobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/stringobject.py (original) +++ pypy/dist/pypy/objspace/std/stringobject.py Fri Apr 8 19:22:15 2005 @@ -76,8 +76,8 @@ from pypy.objspace.std.objspace import * from pypy.interpreter import gateway +from pypy.tool.rarithmetic import intmask from pypy.objspace.std.intobject import W_IntObject -from pypy.objspace.std.restricted_int import intmask from pypy.objspace.std.sliceobject import W_SliceObject from pypy.objspace.std import slicetype from pypy.objspace.std.listobject import W_ListObject Deleted: /pypy/dist/pypy/objspace/std/test/test_restricted_int.py ============================================================================== --- /pypy/dist/pypy/objspace/std/test/test_restricted_int.py Fri Apr 8 19:22:15 2005 +++ (empty file) @@ -1,128 +0,0 @@ -import unittest -import autopath -from pypy.objspace.std.restricted_int import * -import sys - -maxint_mask = (sys.maxint*2 + 1) - -objspacename = 'std' - -class Test_r_int: - - def setup_method(self,method): - space = self.space - - def test__add__(self): - self.binary_test(lambda x, y: x + y) - def test__sub__(self): - self.binary_test(lambda x, y: x - y) - def test__mul__(self): - self.binary_test(lambda x, y: x * y) - x = 3; y = [2] - assert x*y == r_int(x)*y - assert y*x == y*r_int(x) - def test__div__(self): - self.binary_test(lambda x, y: x // y) - def test__mod__(self): - self.binary_test(lambda x, y: x % y) - def test__divmod__(self): - self.binary_test(divmod) - def test__lshift__(self): - self.binary_test(lambda x, y: x << y, (1, 2, 3)) - def test__rshift__(self): - self.binary_test(lambda x, y: x >> y, (1, 2, 3)) - def test__or__(self): - self.binary_test(lambda x, y: x | y) - def test__and__(self): - self.binary_test(lambda x, y: x & y) - def test__xor__(self): - self.binary_test(lambda x, y: x ^ y) - def test__neg__(self): - self.unary_test(lambda x: -x) - def test__pos__(self): - self.unary_test(lambda x: +x) - def test__invert__(self): - self.unary_test(lambda x: ~x) - def test__pow__(self): - self.binary_test(lambda x, y: x**y, (2, 3)) - self.binary_test(lambda x, y: pow(x, y, 42), (2, 3, 5, 1000)) - - def unary_test(self, f): - for arg in (-10, -1, 0, 3, 12345): - res = f(arg) - cmp = f(r_int(arg)) - assert res == cmp - - def binary_test(self, f, rargs = None): - if not rargs: - rargs = (-10, -1, 3, 55) - for larg in (-10, -1, 0, 3, 1234): - for rarg in rargs: - for types in ((int, r_int), (r_int, int), (r_int, r_int)): - res = f(larg, rarg) - left, right = types - cmp = f(left(larg), right(rarg)) - assert res == cmp - -class Test_r_uint: - - def setup_method(self,method): - space = self.space - - def test__add__(self): - self.binary_test(lambda x, y: x + y) - def test__sub__(self): - self.binary_test(lambda x, y: x - y) - def test__mul__(self): - self.binary_test(lambda x, y: x * y) - x = 3; y = [2] - assert x*y == r_uint(x)*y - assert y*x == y*r_uint(x) - def test__div__(self): - self.binary_test(lambda x, y: x // y) - def test__mod__(self): - self.binary_test(lambda x, y: x % y) - def test__divmod__(self): - self.binary_test(divmod) - def test__lshift__(self): - self.binary_test(lambda x, y: x << y, (1, 2, 3)) - def test__rshift__(self): - self.binary_test(lambda x, y: x >> y, (1, 2, 3)) - def test__or__(self): - self.binary_test(lambda x, y: x | y) - def test__and__(self): - self.binary_test(lambda x, y: x & y) - def test__xor__(self): - self.binary_test(lambda x, y: x ^ y) - def test__neg__(self): - self.unary_test(lambda x: -x) - def test__pos__(self): - self.unary_test(lambda x: +x) - def test__invert__(self): - self.unary_test(lambda x: ~x) - def test__pow__(self): - self.binary_test(lambda x, y: x**y, (2, 3)) - # pow is buggy, dowsn't allow our type - #self.binary_test(lambda x, y: pow(x, y, 42), (2, 3, 5, 1000)) - - def unary_test(self, f): - for arg in (0, 3, 12345): - res = f(arg) & maxint_mask - cmp = f(r_uint(arg)) - assert res == cmp - - def binary_test(self, f, rargs = None): - mask = maxint_mask - if not rargs: - rargs = (1, 3, 55) - for larg in (0, 1, 2, 3, 1234): - for rarg in rargs: - for types in ((int, r_uint), (r_uint, int), (r_uint, r_uint)): - res = f(larg, rarg) - left, right = types - cmp = f(left(larg), right(rarg)) - if type(res) is tuple: - res = res[0] & mask, res[1] & mask - else: - res = res & mask - assert res == cmp Modified: pypy/dist/pypy/objspace/std/tupleobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/tupleobject.py (original) +++ pypy/dist/pypy/objspace/std/tupleobject.py Fri Apr 8 19:22:15 2005 @@ -1,6 +1,6 @@ from pypy.objspace.std.objspace import * from pypy.objspace.std.intobject import W_IntObject -from pypy.objspace.std.restricted_int import intmask +from pypy.tool.rarithmetic import intmask from pypy.objspace.std.sliceobject import W_SliceObject from pypy.objspace.std import slicetype from pypy.interpreter import gateway Copied: pypy/dist/pypy/tool/test/test_rarithmetic.py (from r10438, pypy/dist/pypy/objspace/std/test/test_restricted_int.py) ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_restricted_int.py (original) +++ pypy/dist/pypy/tool/test/test_rarithmetic.py Fri Apr 8 19:22:15 2005 @@ -1,6 +1,6 @@ import unittest import autopath -from pypy.objspace.std.restricted_int import * +from pypy.tool.rarithmetic import * import sys maxint_mask = (sys.maxint*2 + 1) Modified: pypy/dist/pypy/translator/genc/t_pyobj.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_pyobj.py (original) +++ pypy/dist/pypy/translator/genc/t_pyobj.py Fri Apr 8 19:22:15 2005 @@ -5,7 +5,7 @@ from pypy.translator.genc.t_simple import CType from types import FunctionType, CodeType, InstanceType, ClassType -from pypy.objspace.std.restricted_int import r_int, r_uint +from pypy.tool.rarithmetic import r_int, r_uint class CPyObjectType(CType): Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Fri Apr 8 19:22:15 2005 @@ -28,7 +28,7 @@ from types import FunctionType, CodeType, ModuleType from pypy.interpreter.error import OperationError from pypy.interpreter.argument import Arguments -from pypy.objspace.std.restricted_int import r_int, r_uint +from pypy.tool.rarithmetic import r_int, r_uint from pypy.translator.translator import Translator from pypy.objspace.flow import FlowObjSpace From arigo at codespeak.net Fri Apr 8 19:53:33 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 8 Apr 2005 19:53:33 +0200 (CEST) Subject: [pypy-svn] r10452 - in pypy/dist/pypy/translator: . genc genc/test Message-ID: <20050408175333.4F29727B76@code1.codespeak.net> Author: arigo Date: Fri Apr 8 19:53:33 2005 New Revision: 10452 Added: pypy/dist/pypy/translator/genc/g_struct.h (contents, props changed) pypy/dist/pypy/translator/genc/t_tuple.py (contents, props changed) Modified: pypy/dist/pypy/translator/genc/ctyper.py pypy/dist/pypy/translator/genc/g_include.h pypy/dist/pypy/translator/genc/genc.py pypy/dist/pypy/translator/genc/t_pyobj.py pypy/dist/pypy/translator/genc/t_simple.py pypy/dist/pypy/translator/genc/test/test_ctrans.py pypy/dist/pypy/translator/typer.py Log: The C typer generates tuples as plain 'struct' variables. The typer in general seems to converge to a kind-of-elegant solution, even if the code is a bit verbose at places (e.g. at the end of t_tuple.py). This should become documentable at some point soon... Missing: cannot use tuples as return values -- ANSI C compilers don't accept 'struct' types as function return types; and gen_wrapper() in funcdef.py is becoming messy and needs more messiness to be able to wrap/unwrap tuples :-( Modified: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- pypy/dist/pypy/translator/genc/ctyper.py (original) +++ pypy/dist/pypy/translator/genc/ctyper.py Fri Apr 8 19:53:33 2005 @@ -9,6 +9,7 @@ from pypy.translator.genc.t_pyobj import CPyObjectType from pypy.translator.genc.t_simple import CIntType, CNoneType from pypy.translator.genc.t_func import CFuncPtrType +from pypy.translator.genc.t_tuple import CTupleType import types from pypy.interpreter.pycode import CO_VARARGS @@ -17,9 +18,9 @@ def __init__(self, annotator): # instantiate the common concrete types t = annotator.translator - TInt = t.getconcretetype(CIntType) - TNone = t.getconcretetype(CNoneType) - TPyObject = t.getconcretetype(CPyObjectType) + self.TInt = TInt = t.getconcretetype(CIntType) + self.TNone = TNone = t.getconcretetype(CNoneType) + self.TPyObject = TPyObject = t.getconcretetype(CPyObjectType) # initialization Specializer.__init__( @@ -57,14 +58,15 @@ besttype = self.annotator.translator.getconcretetype( CFuncPtrType, tuple(args_ct), res_ct) -## elif isinstance(s_value, SomeTuple): -## key = tuple([self.annotation2concretetype(s_item) -## for s_item in s_value.items]) -## besttype = CType_Tuple[key] + elif isinstance(s_value, SomeTuple): + items_ct = [self.annotation2concretetype(s_item) + for s_item in s_value.items] + besttype = self.annotator.translator.getconcretetype( + CTupleType, tuple(items_ct)) return besttype - def make_specialized_op(self, op, bindings): + def specialized_op(self, op, bindings): if op.opname == 'simple_call': s_callable = self.annotator.binding(op.args[0], True) if s_callable is not None: @@ -72,41 +74,44 @@ if isinstance(ct, CFuncPtrType): argtypes = [ct] argtypes += ct.argtypes - self.make_typed_op(op, argtypes, ct.returntype, - newopname='direct_call') + yield self.typed_op(op, argtypes, ct.returntype, + newopname='direct_call') return -## if op.opname == 'getitem': -## s_obj = self.annotator.binding(op.args[0], True) -## if s_obj is not None: -## ct = self.annotation2typecls(s_obj) -## if issubclass(ct, CType_Tuple): -## if isinstance(op.args[1], Constant): -## index = op.args[1].value -## try: -## ct1 = ct.items_typecls[index] -## except IndexError: -## print "*** getitem: IndexError in tuple access" -## else: -## self.make_typed_op(op, [ct, CType_Int], ct1, -## newopname='tuple_getitem') -## return - -## if op.opname == 'newtuple': -## s_tuple = self.annotator.binding(op.result, True) -## if s_tuple is not None: -## ct = self.annotation2typecls(s_tuple) -## if issubclass(ct, CType_Tuple): -## op1 = SpaceOperation('tuple_new', [], op.result) -## self.make_typed_op(op1, [], ct) -## for i in range(len(ct.items_typecls)): -## op1 = SpaceOperation('tuple_inititem', -## [op.result, Constant(i), op.args[i]], -## Variable()) -## ct1 = ct.items_typecls[i] -## self.make_typed_op(op1, -## [ct, CType_Int, ct1], -## CType_None) -## return + if op.opname == 'newtuple': + s_tuple = self.annotator.binding(op.result, True) + if s_tuple is not None: + ctup = self.annotation2concretetype(s_tuple) + if isinstance(ctup, CTupleType): + TInt = self.TInt + TNone = self.TNone + v2 = op.result + yield self.typed_op(SpaceOperation('tuple_new', [], v2), + [], ctup) + for i in range(len(ctup.itemtypes)): + vitem = op.args[i] + ct = ctup.itemtypes[i] + v0 = Variable() + yield self.typed_op(SpaceOperation('tuple_setitem', + [v2, Constant(i), vitem], v0), # args, ret + [ctup, TInt, ct ], TNone) # a_t, r_t + return + + if op.opname == 'getitem': + s_obj = self.annotator.binding(op.args[0], True) + if s_obj is not None: + ctup = self.annotation2concretetype(s_obj) + if isinstance(ctup, CTupleType): + if isinstance(op.args[1], Constant): + index = op.args[1].value + try: + ct = ctup.itemtypes[index] + except IndexError: + print "*** getitem: IndexError in tuple access" + else: + yield self.typed_op(op, [ctup, self.TInt], ct, + newopname='tuple_getitem') + return - Specializer.make_specialized_op(self, op, bindings) + # fall-back + yield Specializer.specialized_op(self, op, bindings) Modified: pypy/dist/pypy/translator/genc/g_include.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_include.h (original) +++ pypy/dist/pypy/translator/genc/g_include.h Fri Apr 8 19:53:33 2005 @@ -12,6 +12,7 @@ #include "g_operation.h" #include "g_simple.h" +#include "g_struct.h" #include "g_trace.h" #include "g_support.h" #include "g_module.h" Added: pypy/dist/pypy/translator/genc/g_struct.h ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/g_struct.h Fri Apr 8 19:53:33 2005 @@ -0,0 +1,12 @@ + +/************************************************************/ + /*** C header subsection: containers data structures ***/ + + +#define OP_TUPLE_NEW(r,err) /* r is a struct, can be left uninitialized */ +#define OP_TUPLE_GETITEM(s,i,r,err) r = s.f##i; +#define OP_TUPLE_SETITEM(s,i,o,r,err) s.f##i = o; r = 0; + +#define OP_PYTUPLE_GETITEM(t,i,r,err) if (!(r=PyTuple_GetItem(t,i))) FAIL(err) +#define OP_PYTUPLE_SETITEM(t,i,o,r,err) \ + if (PyTuple_SetItem(t,i,o)) FAIL(err) else r = 0; Modified: pypy/dist/pypy/translator/genc/genc.py ============================================================================== --- pypy/dist/pypy/translator/genc/genc.py (original) +++ pypy/dist/pypy/translator/genc/genc.py Fri Apr 8 19:53:33 2005 @@ -32,6 +32,7 @@ self.funcdefs = {} self.allfuncdefs = [] self.pyobjtype = translator.getconcretetype(CPyObjectType) + self.ctypes_alreadyseen = {} self.namespace = self.pyobjtype.namespace assert not hasattr(getthreadlocals(), 'genc') @@ -130,8 +131,10 @@ # collect more of the latercode between the functions, # and produce the corresponding global declarations for ct in self.translator.concretetypes.values(): - if hasattr(ct, 'collect_globals'): - self.globaldecl += ct.collect_globals(self) + if ct not in self.ctypes_alreadyseen: + self.globaldecl += list(ct.init_globals(self)) + self.ctypes_alreadyseen[ct] = True + self.globaldecl += list(ct.collect_globals(self)) g = self.globaldecl if g: f = self.f Modified: pypy/dist/pypy/translator/genc/t_pyobj.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_pyobj.py (original) +++ pypy/dist/pypy/translator/genc/t_pyobj.py Fri Apr 8 19:53:33 2005 @@ -20,7 +20,7 @@ error_return = 'NULL' def __init__(self, translator): - self.translator = translator + super(CPyObjectType, self).__init__(translator) self.namespace= NameManager() # keywords cannot be reused. This is the C99 draft's list. self.namespace.make_reserved_names(''' Modified: pypy/dist/pypy/translator/genc/t_simple.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_simple.py (original) +++ pypy/dist/pypy/translator/genc/t_simple.py Fri Apr 8 19:53:33 2005 @@ -10,10 +10,10 @@ def __init__(self, translator): self.translator = translator - def convert_to_obj(self, v1, v2): + def convert_to_obj(self, typer, v1, v2): return [SpaceOperation(self.opname_conv_to_obj, [v1], v2)] - def convert_from_obj(self, v1, v2): + def convert_from_obj(self, typer, v1, v2): return [SpaceOperation(self.opname_conv_from_obj, [v1], v2)] def debugname(self): @@ -24,6 +24,12 @@ return getthreadlocals().genc genc = staticmethod(genc) + def init_globals(self, genc): + return [] + + def collect_globals(self, genc): + return [] + class CIntType(CType): error_return = '-1' Added: pypy/dist/pypy/translator/genc/t_tuple.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/t_tuple.py Fri Apr 8 19:53:33 2005 @@ -0,0 +1,91 @@ +from __future__ import generators +from pypy.translator.genc.t_simple import CType +from pypy.objspace.flow.model import SpaceOperation, Constant, Variable + + +class CTupleType(CType): + #error_return = ? + + Counter = {} + + def __init__(self, translator, itemtypes): + super(CTupleType, self).__init__(translator) + self.itemtypes = itemtypes + self.structname = 'struct tuple%d_%d' % ( + len(itemtypes), + CTupleType.Counter.setdefault(len(itemtypes), 0)) + CTupleType.Counter[len(itemtypes)] += 1 + self.ctypetemplate = self.structname + ' %s' + self.cnames = {} + self.globaldecl = [] + + def debugname(self): + # a nice textual name for debugging... + itemnames = [ct.debugname() for ct in self.itemtypes] + return 'tuple (%s)' % (', '.join(itemnames),) + + def fieldnames(self): + return ['f%d' % i for i in range(len(self.itemtypes))] + + def init_globals(self, genc): + yield '%s {' % self.structname + for ct, name in zip(self.itemtypes, self.fieldnames()): + yield '\t' + ct.ctypetemplate % (name,) + ';' + yield '};' + + def collect_globals(self, genc): + result = self.globaldecl + self.globaldecl = [] + return result + + def nameof(self, tup, debug=None): + genc = self.genc() + try: + return self.cnames[tup] + except KeyError: + name = genc.namespace.uniquename('gtup') + self.globaldecl.append('%s %s = {' % (self.structname, name)) + lines = [] + for x, ct in zip(tup, self.itemtypes): + lines.append('\t' + genc.nameofvalue(x, ct)) + self.globaldecl.append(',\n'.join(lines)) + self.globaldecl.append('};') + self.cnames[tup] = name + return name + + def convert_to_obj(self, typer, v1, v2): + TPyObj = typer.TPyObject + TNone = typer.TNone + TInt = typer.TInt + pyobjitems_v = [] + for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): + # read the ith field out of the "struct" tuple + vitem = Variable() + yield typer.typed_op(SpaceOperation('tuple_getitem', + [v1, Constant(i)], vitem), # args, retval + [self, TInt ], ct ) # arg_t, ret_t + pyobjitems_v.append(vitem) + # create a new PyTupleObject with these values + # note that typed_op() will insert the conversion of vitem if needed + yield typer.typed_op(SpaceOperation('newtuple', + pyobjitems_v, v2), # args, retval + [TPyObj]*len(pyobjitems_v), TPyObj) # arg_t, ret_t + + def convert_from_obj(self, typer, v1, v2): + TPyObj = typer.TPyObject + TNone = typer.TNone + TInt = typer.TInt + yield typer.typed_op(SpaceOperation('tuple_new', [], v2), + [], self) + for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): + # read the ith field out of the PyTupleObject + vitem = Variable() + yield typer.typed_op(SpaceOperation('pytuple_getitem', + [v1, Constant(i)], vitem), # args, retval + [TPyObj, TInt ], TPyObj) # arg_t, ret_t + # store it into the "struct" tuple + # note that typed_op() will insert the conversion of vitem if needed + v0 = Variable() + yield typer.typed_op(SpaceOperation('tuple_setitem', + [v2, Constant(i), vitem], v0), # args, ret + [self, TInt, ct ], TNone) # a_t, r_t Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py ============================================================================== --- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_ctrans.py Fri Apr 8 19:53:33 2005 @@ -360,3 +360,9 @@ def test_int_overflow(self): fn = self.getcompiled(snippet.simple_func) raises(OverflowError, fn, sys.maxint+1) + + + def test_inheritance2(self): py.test.skip("missing: return tuple") + def test_call_unpack_56(self): py.test.skip("missing: return tuple") + def test_tuple_repr(self): py.test.skip("missing: return tuple") + def test_get_set_del_slice(self): py.test.skip("missing: return tuple") Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Fri Apr 8 19:53:33 2005 @@ -1,3 +1,4 @@ +from __future__ import generators import autopath from pypy.objspace.flow.model import SpaceOperation, Variable, Constant from pypy.objspace.flow.model import Block, Link, uniqueitems @@ -76,7 +77,7 @@ if v.concretetype != self.defaultconcretetype: v2 = Variable() v2.concretetype = self.defaultconcretetype - newops = list(v.concretetype.convert_to_obj(v, v2)) + newops = list(v.concretetype.convert_to_obj(self, v, v2)) v = v2 ops += newops @@ -84,7 +85,7 @@ if concretetype != self.defaultconcretetype: v2 = Variable() v2.concretetype = concretetype - newops = list(concretetype.convert_from_obj(v, v2)) + newops = list(concretetype.convert_from_obj(self, v, v2)) v = v2 ops += newops @@ -96,7 +97,7 @@ self.setbesttype(a) # specialize all the operations, as far as possible - self.newops = [] + newops = [] for op in block.operations: args = list(op.args) @@ -111,21 +112,22 @@ # make a specialized version of the current operation # (which may become several operations) - self.make_specialized_op(op, bindings) + flatten_ops(self.specialized_op(op, bindings), newops) - block.operations[:] = self.newops + block.operations[:] = newops self.insert_link_conversions(block) - def make_typed_op(self, op, argtypes, restype, newopname=None): + def typed_op(self, op, argtypes, restype, newopname=None): """Make a typed copy of the given SpaceOperation.""" + result = [] args = list(op.args) assert len(argtypes) == len(args) # type-convert the input arguments for i in range(len(args)): args[i], convops = self.convertvar(args[i], argtypes[i]) - self.newops += convops + result += convops # store the result variable's type self.settype(op.result, restype) @@ -133,7 +135,8 @@ # store the possibly modified SpaceOperation if newopname is not None or args != op.args: op = SpaceOperation(newopname or op.opname, args, op.result) - self.newops.append(op) + result.append(op) + return result def insert_link_conversions(self, block): @@ -154,11 +157,11 @@ # ...and do the conversions there. self.insert_link_conversions(newblock) break # done with this link - block.operations += convops + flatten_ops(convops, block.operations) link.args[i] = a1 - def make_specialized_op(self, op, bindings): + def specialized_op(self, op, bindings): specializations = self.specializationdict.get(op.opname, ()) for opname2, spectypes, restype in specializations: assert len(spectypes) == len(op.args) == len(bindings) @@ -169,8 +172,17 @@ break else: # specialization found - self.make_typed_op(op, spectypes, restype, newopname=opname2) + yield self.typed_op(op, spectypes, restype, newopname=opname2) return # specialization not found argtypes = [self.defaultconcretetype] * len(op.args) - self.make_typed_op(op, argtypes, self.defaultconcretetype) + yield self.typed_op(op, argtypes, self.defaultconcretetype) + + +def flatten_ops(op, newops): + # Flatten lists and generators and record all SpaceOperations found + if isinstance(op, SpaceOperation): + newops.append(op) + else: + for op1 in op: + flatten_ops(op1, newops) From pedronis at codespeak.net Fri Apr 8 20:24:58 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 8 Apr 2005 20:24:58 +0200 (CEST) Subject: [pypy-svn] r10463 - pypy/dist/pypy/tool/test Message-ID: <20050408182458.1547C27B75@code1.codespeak.net> Author: pedronis Date: Fri Apr 8 20:24:57 2005 New Revision: 10463 Modified: pypy/dist/pypy/tool/test/test_rarithmetic.py Log: some intmask tests Modified: pypy/dist/pypy/tool/test/test_rarithmetic.py ============================================================================== --- pypy/dist/pypy/tool/test/test_rarithmetic.py (original) +++ pypy/dist/pypy/tool/test/test_rarithmetic.py Fri Apr 8 20:24:57 2005 @@ -3,7 +3,17 @@ from pypy.tool.rarithmetic import * import sys + maxint_mask = (sys.maxint*2 + 1) +machbits = 0 +i = 1 +l = 1L +while i == l and type(i) is int: + i *= 2 + l *= 2 + machbits += 1 +print machbits + objspacename = 'std' @@ -126,3 +136,19 @@ else: res = res & mask assert res == cmp + +def test_intmask(): + assert intmask(1) == 1 + assert intmask(sys.maxint) == sys.maxint + minint = -sys.maxint-1 + assert intmask(minint) == minint + assert intmask(2*sys.maxint+1) == -1 + assert intmask(sys.maxint*2) == -2 + assert intmask(sys.maxint*2+2) == 0 + assert intmask(2*(sys.maxint*1+1)) == 0 + assert intmask(1 << (machbits-1)) == 1 << (machbits-1) + assert intmask(sys.maxint+1) == minint + assert intmask(minint-1) == sys.maxint + + + From pedronis at codespeak.net Fri Apr 8 20:46:23 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 8 Apr 2005 20:46:23 +0200 (CEST) Subject: [pypy-svn] r10464 - in pypy/dist/pypy/tool: . test Message-ID: <20050408184623.3E45127B75@code1.codespeak.net> Author: pedronis Date: Fri Apr 8 20:46:22 2005 New Revision: 10464 Modified: pypy/dist/pypy/tool/rarithmetic.py pypy/dist/pypy/tool/test/test_rarithmetic.py Log: ovfcheck with tests. Modified: pypy/dist/pypy/tool/rarithmetic.py ============================================================================== --- pypy/dist/pypy/tool/rarithmetic.py (original) +++ pypy/dist/pypy/tool/rarithmetic.py Fri Apr 8 20:46:22 2005 @@ -1,18 +1,23 @@ """ -This file defines restricted integers. +This file defines restricted arithmetic: + +classes and operations to express integer arithmetic, +such that before and after translation semantics are +consistent + +r_uint an unsigned integer which has not overflow + checking. It is always positive and always + truncated to the internal machine word size. +intmask mask a possibly long value when running on CPython + back to a signed int value +ovfcheck check on CPython whether the result of a signed + integer operation did overflow + +These are meant to be erased by translation, r_uint +in the process should mark unsigned values, ovfcheck should +mark where overflow checking is required. -Purpose: -Have an integer implementation that emulates -restricted Python for CPython. - -r_int an integer type which has overflow checking. - It doesn not automatically extend to long -r_uint an unsigned integer which has not overflow - checking. It is always positive and always - truncated to the internal machine word size. -We try to keep the number of such internal types -to a minimum. """ class r_int(int): @@ -159,6 +164,15 @@ del _bits, _itest, _Ltest +def ovfcheck(r): + # to be used as ovfcheck(x y) + # raise OverflowError if the operation did overflow + assert not isinstance(r, r_uint), "unexpected ovf check on unsigned" + if isinstance(r, long): + raise OverflowError, "signed integer expression did overflow" + return r + + class r_uint(long): """ fake unsigned integer implementation """ Modified: pypy/dist/pypy/tool/test/test_rarithmetic.py ============================================================================== --- pypy/dist/pypy/tool/test/test_rarithmetic.py (original) +++ pypy/dist/pypy/tool/test/test_rarithmetic.py Fri Apr 8 20:46:22 2005 @@ -12,7 +12,7 @@ i *= 2 l *= 2 machbits += 1 -print machbits +#print machbits objspacename = 'std' @@ -150,5 +150,65 @@ assert intmask(sys.maxint+1) == minint assert intmask(minint-1) == sys.maxint - +def test_ovfcheck(): + one = 1 + x = sys.maxint + minusx = -sys.maxint + n = -sys.maxint-1 + y = sys.maxint-1 + # sanity + raises(AssertionError, ovfcheck, r_uint(0)) + + + # not overflowing + try: + ovfcheck(y+one) + except OverflowError: + assert False + else: + pass + try: + ovfcheck(minusx-one) + except OverflowError: + assert False + else: + pass + try: + ovfcheck(x-x) + except OverflowError: + assert False + else: + pass + try: + ovfcheck(n-n) + except OverflowError: + assert False + else: + pass + + # overflowing + try: + ovfcheck(x+one) + except OverflowError: + pass + else: + assert False + try: + ovfcheck(x+x) + except OverflowError: + pass + else: + assert False + try: + ovfcheck(n-one) + except OverflowError: + pass + else: + assert False + try: + ovfcheck(n-y) + except OverflowError: + pass + else: + assert False From pedronis at codespeak.net Fri Apr 8 20:48:17 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 8 Apr 2005 20:48:17 +0200 (CEST) Subject: [pypy-svn] r10465 - pypy/dist/pypy/tool/test Message-ID: <20050408184817.E384527B75@code1.codespeak.net> Author: pedronis Date: Fri Apr 8 20:48:17 2005 New Revision: 10465 Modified: pypy/dist/pypy/tool/test/test_rarithmetic.py Log: remove excess blank line Modified: pypy/dist/pypy/tool/test/test_rarithmetic.py ============================================================================== --- pypy/dist/pypy/tool/test/test_rarithmetic.py (original) +++ pypy/dist/pypy/tool/test/test_rarithmetic.py Fri Apr 8 20:48:17 2005 @@ -160,7 +160,6 @@ # sanity raises(AssertionError, ovfcheck, r_uint(0)) - # not overflowing try: ovfcheck(y+one) From pedronis at codespeak.net Fri Apr 8 21:09:32 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 8 Apr 2005 21:09:32 +0200 (CEST) Subject: [pypy-svn] r10466 - in pypy/dist/pypy/tool: . test Message-ID: <20050408190932.3CD9E27B75@code1.codespeak.net> Author: pedronis Date: Fri Apr 8 21:09:32 2005 New Revision: 10466 Modified: pypy/dist/pypy/tool/rarithmetic.py pypy/dist/pypy/tool/test/test_rarithmetic.py Log: make int(r_uint()) intmask(r_uint()) do the right thing Modified: pypy/dist/pypy/tool/rarithmetic.py ============================================================================== --- pypy/dist/pypy/tool/rarithmetic.py (original) +++ pypy/dist/pypy/tool/rarithmetic.py Fri Apr 8 21:09:32 2005 @@ -157,6 +157,8 @@ def intmask(n): if isinstance(n, int): return n + if isinstance(n, r_uint): + n = long(n) n &= LONG_MASK if n >= LONG_TEST: n -= 2*LONG_TEST @@ -181,6 +183,12 @@ def __new__(klass, val): return long.__new__(klass, val & klass._mask) + def __int__(self): + if self < LONG_TEST: + return int(self) + else: + return intmask(self) + def __add__(self, other): x = long(self) y = long(other) Modified: pypy/dist/pypy/tool/test/test_rarithmetic.py ============================================================================== --- pypy/dist/pypy/tool/test/test_rarithmetic.py (original) +++ pypy/dist/pypy/tool/test/test_rarithmetic.py Fri Apr 8 21:09:32 2005 @@ -115,6 +115,9 @@ # pow is buggy, dowsn't allow our type #self.binary_test(lambda x, y: pow(x, y, 42), (2, 3, 5, 1000)) + def test_back_to_int(self): + assert int(r_uint(-1)) == -1 + def unary_test(self, f): for arg in (0, 3, 12345): res = f(arg) & maxint_mask @@ -149,6 +152,7 @@ assert intmask(1 << (machbits-1)) == 1 << (machbits-1) assert intmask(sys.maxint+1) == minint assert intmask(minint-1) == sys.maxint + assert intmask(r_uint(-1)) == -1 def test_ovfcheck(): From hpk at codespeak.net Sat Apr 9 12:46:43 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 9 Apr 2005 12:46:43 +0200 (CEST) Subject: [pypy-svn] r10483 - in pypy/branch/pycollect-dist-pypy/pypy: tool translator/test Message-ID: <20050409104643.226EE27B72@code1.codespeak.net> Author: hpk Date: Sat Apr 9 12:46:42 2005 New Revision: 10483 Modified: pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py pypy/branch/pycollect-dist-pypy/pypy/translator/test/test_pyrextrans.py Log: finally, use plain imports Modified: pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py Sat Apr 9 12:46:42 2005 @@ -6,8 +6,6 @@ from pypy.interpreter.error import OperationError import pypy -optionpath = py.path.extpy(py.path.local(pypy.__file__).dirpath('conftest.py'), - 'option') # ____________________________________________________________ class AppFrame(py.code.Frame): @@ -102,7 +100,8 @@ source = str(source).strip() except py.error.ENOENT: source = None - if source and not optionpath.resolve().nomagic: + from pypy import conftest + if source and not conftest.option.nomagic: msg = exprinfo.interpret(source, runner, should_fail=True) space.setattr(w_self, space.wrap('args'), space.newtuple([space.wrap(msg)])) Modified: pypy/branch/pycollect-dist-pypy/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/translator/test/test_pyrextrans.py Sat Apr 9 12:46:42 2005 @@ -7,9 +7,7 @@ from pypy.translator.tool.buildpyxmodule import skip_missing_compiler from pypy.translator.translator import Translator -import pypy, py -optionpath = py.path.extpy(py.path.local(pypy.__file__).dirpath('conftest.py'), - 'option') +from pypy import conftest #from pypy.conftest import option from pypy.translator.test import snippet @@ -26,7 +24,7 @@ try: func = func.im_func except AttributeError: pass - dot = optionpath.resolve().verbose > 0 and 1 or 0 + dot = conftest.option.verbose > 0 and 1 or 0 options = { 'simplify' : 1, 'dot' : dot, From arigo at codespeak.net Sat Apr 9 17:52:31 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 9 Apr 2005 17:52:31 +0200 (CEST) Subject: [pypy-svn] r10488 - in pypy/dist/pypy/translator: . test Message-ID: <20050409155231.AB5BA27B72@code1.codespeak.net> Author: arigo Date: Sat Apr 9 17:52:31 2005 New Revision: 10488 Modified: pypy/dist/pypy/translator/test/snippet.py pypy/dist/pypy/translator/test/test_annrpython.py pypy/dist/pypy/translator/translator.py Log: - Translator.viewcg() to view the call graph and the class hierarchy as translate_pypy does - a test for the Exception.__init__() special-case Modified: pypy/dist/pypy/translator/test/snippet.py ============================================================================== --- pypy/dist/pypy/translator/test/snippet.py (original) +++ pypy/dist/pypy/translator/test/snippet.py Sat Apr 9 17:52:31 2005 @@ -331,6 +331,25 @@ r.append(try_raise_choose(n)) return r +def raise_indexerror(): + raise IndexError(-12) + +def raise_systemerror(): + raise SystemError("hello") + +def Exception_init(n): + if n > 0: + try: + raise_indexerror() + except IndexError, e: + return (e.args[0], "duh") + else: + try: + raise_systemerror() + except SystemError, e: + return (42, e.args[0]) + return (0, "") + # INHERITANCE / CLASS TESTS class C(object): pass Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Sat Apr 9 17:52:31 2005 @@ -697,6 +697,16 @@ s = a.build_types(f, [int]) assert s.knowntype == float + def test_Exception_init(self): + a = RPythonAnnotator() + s = a.build_types(snippet.Exception_init, [int]) + a.translator.viewcg() + # result should be exactly: + assert s == annmodel.SomeTuple([ + annmodel.SomeInteger(), + annmodel.SomeString() + ]) + def g(n): return [0,1,2,n] Modified: pypy/dist/pypy/translator/translator.py ============================================================================== --- pypy/dist/pypy/translator/translator.py (original) +++ pypy/dist/pypy/translator/translator.py Sat Apr 9 17:52:31 2005 @@ -120,6 +120,12 @@ from pypy.translator.tool.graphpage import FlowGraphPage FlowGraphPage(self).display() + def viewcg(self): + """Shows the whole call graph and the class hierarchy, based on + the computed annotations.""" + from pypy.translator.tool.graphpage import TranslatorPage + TranslatorPage(self).display() + def simplify(self, func=None): """Simplifies the control flow graph (default: for all functions).""" if func is None: From arigo at codespeak.net Sat Apr 9 18:07:08 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 9 Apr 2005 18:07:08 +0200 (CEST) Subject: [pypy-svn] r10489 - pypy/dist/pypy/translator/test Message-ID: <20050409160708.289C827B72@code1.codespeak.net> Author: arigo Date: Sat Apr 9 18:07:07 2005 New Revision: 10489 Modified: pypy/dist/pypy/translator/test/test_annrpython.py Log: Oups, checked in a test with the viewcg() enabled. Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Sat Apr 9 18:07:07 2005 @@ -700,7 +700,7 @@ def test_Exception_init(self): a = RPythonAnnotator() s = a.build_types(snippet.Exception_init, [int]) - a.translator.viewcg() + #a.translator.viewcg() # result should be exactly: assert s == annmodel.SomeTuple([ annmodel.SomeInteger(), From arigo at codespeak.net Sat Apr 9 18:14:40 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 9 Apr 2005 18:14:40 +0200 (CEST) Subject: [pypy-svn] r10490 - pypy/dist/pypy/translator Message-ID: <20050409161440.B84CD27B72@code1.codespeak.net> Author: arigo Date: Sat Apr 9 18:14:40 2005 New Revision: 10490 Modified: pypy/dist/pypy/translator/geninterplevel.py Log: Don't modify the globals dict being translated in geninterp.py. Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Sat Apr 9 18:14:40 2005 @@ -746,12 +746,15 @@ def nameof_dict(self, dic): assert dic is not __builtins__ - assert '__builtins__' not in dic, 'Seems to be the globals of %s' % ( - dic.get('__name__', '?'),) + if dic is not self.entrypoint: + assert '__builtins__' not in dic, 'Seems to be the globals of %s' %( + dic.get('__name__', '?'),) name = self.uniquename('g%ddict' % len(dic)) self.register_early(dic, name) self.initcode.append('%s = space.newdict([])' % (name,)) for k in dic: + if k == '__builtins__': + continue self.initcode.append('space.setitem(%s, %s, %s)'%( name, self.nameof(k), self.nameof(dic[k]))) return name @@ -1359,7 +1362,7 @@ fpath = os.path.join(libdir, fname) dic = {"__name__": "exceptions"} execfile(fpath, dic) - del dic["__builtins__"] + #del dic["__builtins__"] def test_exceptions(): """ enumerate all exceptions """ return dic.keys() @@ -1503,7 +1506,7 @@ code = compile(sourcetext, filename, 'exec') dic = {'__name__': modname} exec code in dic - del dic['__builtins__'] + #del dic['__builtins__'] entrypoint = dic t = Translator(None, verbose=False, simplifying=True, builtins_can_raise_exceptions=True, From arigo at codespeak.net Sat Apr 9 19:10:01 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 9 Apr 2005 19:10:01 +0200 (CEST) Subject: [pypy-svn] r10492 - in pypy/dist/pypy: annotation interpreter objspace/flow objspace/std objspace/std/test translator/test Message-ID: <20050409171001.EC81327B72@code1.codespeak.net> Author: arigo Date: Sat Apr 9 19:10:01 2005 New Revision: 10492 Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/interpreter/argument.py pypy/dist/pypy/interpreter/generator.py pypy/dist/pypy/interpreter/pyframe.py pypy/dist/pypy/objspace/flow/flowcontext.py pypy/dist/pypy/objspace/flow/framestate.py pypy/dist/pypy/objspace/std/multimethod.py pypy/dist/pypy/objspace/std/stdtypedef.py pypy/dist/pypy/objspace/std/test/test_floatobject.py pypy/dist/pypy/objspace/std/test/test_intobject.py pypy/dist/pypy/translator/test/snippet.py pypy/dist/pypy/translator/test/test_annrpython.py Log: Dont' use the .args attribute of Exceptions to store meaningful information. Added custom constructors to the Exception subclasses as needed. This avoids annotation conflicts, like FailedToImplement.args which could be of length 0 or 2. It also makes code generally clearer. Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Sat Apr 9 19:10:01 2005 @@ -203,7 +203,7 @@ def exception_init(s_self, *args): - s_self.setattr(immutablevalue('args'), SomeTuple(args)) + pass # XXX check correctness of args, maybe def builtin_bool(s_obj): return s_obj.is_true() Modified: pypy/dist/pypy/interpreter/argument.py ============================================================================== --- pypy/dist/pypy/interpreter/argument.py (original) +++ pypy/dist/pypy/interpreter/argument.py Sat Apr 9 19:10:01 2005 @@ -266,12 +266,17 @@ pass class ArgErrCount(ArgErr): + + def __init__(self, signature, defaults_w, too_many): + self.signature = signature + self.defaults_w = defaults_w + self.too_many = too_many + def getmsg(self, args, fnname): - signature, defaults_w, too_many = self.args # from self.__init__() - argnames, varargname, kwargname = signature + argnames, varargname, kwargname = self.signature args_w, kwds_w = args.unpack() nargs = len(args_w) - if kwargname is not None or (kwds_w and defaults_w): + if kwargname is not None or (kwds_w and self.defaults_w): msg2 = "non-keyword " else: msg2 = "" @@ -283,10 +288,10 @@ msg2, nargs) else: - defcount = len(defaults_w) + defcount = len(self.defaults_w) if defcount == 0 and varargname is None: msg1 = "exactly" - elif too_many: + elif self.too_many: msg1 = "at most" else: msg1 = "at least" @@ -307,16 +312,23 @@ return msg class ArgErrMultipleValues(ArgErr): + + def __init__(self, argname): + self.argname = argname + def getmsg(self, args, fnname): - argname, = self.args # from self.__init__() msg = "%s() got multiple values for keyword argument '%s'" % ( fnname, - argname) + self.argname) return msg class ArgErrUnknownKwds(ArgErr): + + def __init__(self, kwds_w): + self.kwds_w = kwds_w + def getmsg(self, args, fnname): - kwds_w, = self.args # from self.__init__() + kwds_w = self.kwds_w if len(kwds_w) == 1: msg = "%s() got an unexpected keyword argument '%s'" % ( fnname, Modified: pypy/dist/pypy/interpreter/generator.py ============================================================================== --- pypy/dist/pypy/interpreter/generator.py (original) +++ pypy/dist/pypy/interpreter/generator.py Sat Apr 9 19:10:01 2005 @@ -70,9 +70,12 @@ class SYieldValue(ControlFlowException): """Signals a 'yield' statement. Argument is the wrapped object to return.""" + + def __init__(self, w_yieldvalue): + self.w_yieldvalue = w_yieldvalue + def action(self, frame, last_instr, executioncontext): - w_yieldvalue = self.args[0] - raise ExitFrame(w_yieldvalue) + raise ExitFrame(self.w_yieldvalue) class SGeneratorReturn(ControlFlowException): """Signals a 'return' statement inside a generator.""" Modified: pypy/dist/pypy/interpreter/pyframe.py ============================================================================== --- pypy/dist/pypy/interpreter/pyframe.py (original) +++ pypy/dist/pypy/interpreter/pyframe.py Sat Apr 9 19:10:01 2005 @@ -125,7 +125,7 @@ except ExitFrame, e: # leave that frame - w_exitvalue = e.args[0] + w_exitvalue = e.w_exitvalue executioncontext.return_trace(self, w_exitvalue) return w_exitvalue @@ -375,8 +375,7 @@ # and jump to the beginning of the loop, stored in the # exception's argument frame.blockstack.push(self) - jump_to = unroller.args[0] - frame.next_instr = jump_to + frame.next_instr = unroller.jump_to return True # stop unrolling self.cleanupstack(frame) if isinstance(unroller, SBreakLoop): @@ -394,7 +393,7 @@ if isinstance(unroller, SApplicationException): # push the exception to the value stack for inspection by the # exception handler (the code after the except:) - operationerr = unroller.args[0] + operationerr = unroller.operr if frame.space.full_exceptions: operationerr.normalize_exception(frame.space) # the stack setup is slightly different than in CPython: @@ -479,28 +478,22 @@ """Unroll the stack because of an application-level exception (i.e. an OperationException).""" - def action(self, frame, last_instr, executioncontext): - e = self.args[0] - frame.last_exception = e + def __init__(self, operr): + self.operr = operr + def action(self, frame, last_instr, executioncontext): + frame.last_exception = self.operr ControlFlowException.action(self, frame, last_instr, executioncontext) def emptystack(self, frame): # propagate the exception to the caller - if len(self.args) == 2: - operationerr, tb = self.args - raise operationerr.__class__, operationerr, tb - else: - operationerr = self.args[0] - raise operationerr + raise self.operr def state_unpack_variables(self, space): - e = self.args[0] - assert isinstance(e, OperationError) - return [e.w_type, e.w_value] + return [self.operr.w_type, self.operr.w_value] def state_pack_variables(self, space, w_type, w_value): - self.args = (OperationError(w_type, w_value),) + self.operr = OperationError(w_type, w_value) class SBreakLoop(ControlFlowException): """Signals a 'break' statement.""" @@ -509,28 +502,34 @@ """Signals a 'continue' statement. Argument is the bytecode position of the beginning of the loop.""" + def __init__(self, jump_to): + self.jump_to = jump_to + def state_unpack_variables(self, space): - jump_to = self.args[0] - return [space.wrap(jump_to)] + return [space.wrap(self.jump_to)] def state_pack_variables(self, space, w_jump_to): - self.args = (space.int_w(w_jump_to),) + self.jump_to = space.int_w(w_jump_to) class SReturnValue(ControlFlowException): """Signals a 'return' statement. Argument is the wrapped object to return.""" + + def __init__(self, w_returnvalue): + self.w_returnvalue = w_returnvalue + def emptystack(self, frame): - w_returnvalue = self.args[0] - raise ExitFrame(w_returnvalue) + raise ExitFrame(self.w_returnvalue) def state_unpack_variables(self, space): - w_returnvalue = self.args[0] - return [w_returnvalue] + return [self.w_returnvalue] def state_pack_variables(self, space, w_returnvalue): - self.args = (w_returnvalue,) + self.w_returnvalue = w_returnvalue class ExitFrame(Exception): """Signals the end of the frame execution. The argument is the returned or yielded value, already wrapped.""" + def __init__(self, w_exitvalue): + self.w_exitvalue = w_exitvalue class BytecodeCorruption(ValueError): """Detected bytecode corruption. Never caught; it's an error.""" Modified: pypy/dist/pypy/objspace/flow/flowcontext.py ============================================================================== --- pypy/dist/pypy/objspace/flow/flowcontext.py (original) +++ pypy/dist/pypy/objspace/flow/flowcontext.py Sat Apr 9 19:10:01 2005 @@ -11,7 +11,9 @@ pass class MergeBlock(Exception): - pass + def __init__(self, block, currentstate): + self.block = block + self.currentstate = currentstate class SpamBlock(Block): @@ -245,8 +247,7 @@ pass except MergeBlock, e: - block, currentstate = e.args - self.mergeblock(block, currentstate) + self.mergeblock(e.block, e.currentstate) else: assert w_result is not None Modified: pypy/dist/pypy/objspace/flow/framestate.py ============================================================================== --- pypy/dist/pypy/objspace/flow/framestate.py (original) +++ pypy/dist/pypy/objspace/flow/framestate.py Sat Apr 9 19:10:01 2005 @@ -1,5 +1,6 @@ from pypy.interpreter.pyframe import PyFrame, ControlFlowException from pypy.interpreter.error import OperationError +from pypy.interpreter.typedef import instantiate from pypy.objspace.flow.model import * class FrameState: @@ -192,6 +193,6 @@ unrollerclass, argcount = UNPICKLE_TAGS[item] arguments = lst[i+1: i+1+argcount] del lst[i+1: i+1+argcount] - unroller = unrollerclass() + unroller = instantiate(unrollerclass) unroller.state_pack_variables(space, *arguments) lst[i] = Constant(unroller) Modified: pypy/dist/pypy/objspace/std/multimethod.py ============================================================================== --- pypy/dist/pypy/objspace/std/multimethod.py (original) +++ pypy/dist/pypy/objspace/std/multimethod.py Sat Apr 9 19:10:01 2005 @@ -2,7 +2,9 @@ from pypy.tool.compile import compile2 class FailedToImplement(Exception): - pass + def __init__(self, w_type=None, w_value=None): + self.w_type = w_type + self.w_value = w_value def raiseFailedToImplement(): Modified: pypy/dist/pypy/objspace/std/stdtypedef.py ============================================================================== --- pypy/dist/pypy/objspace/std/stdtypedef.py (original) +++ pypy/dist/pypy/objspace/std/stdtypedef.py Sat Apr 9 19:10:01 2005 @@ -218,8 +218,8 @@ try: return %s except FailedToImplement, e: - if e.args: - raise OperationError(e.args[0], e.args[1]) + if e.w_type is not None: + raise OperationError(e.w_type, e.w_value) else: return space.w_NotImplemented """ % (prefix, wrapper_sig, renaming, expr) @@ -230,8 +230,8 @@ try: w_res = %s except FailedToImplement, e: - if e.args: - raise OperationError(e.args[0], e.args[1]) + if e.w_type is not None: + raise OperationError(e.w_type, e.w_value) else: raise OperationError(space.w_TypeError, typeerrormsg(space, %r, [%s])) @@ -292,78 +292,3 @@ for multimethod in typedef.local_multimethods: slicemultimethod(space, multimethod, typedef, result, local=True) return result - -##class MultimethodCode(eval.Code): -## """A code object that invokes a multimethod.""" - -## def __init__(self, multimethod, framecls, typeclass, bound_position=0): -## "NOT_RPYTHON: initialization-time only." -## eval.Code.__init__(self, multimethod.operatorsymbol) -## self.basemultimethod = multimethod -## self.typeclass = typeclass -## self.bound_position = bound_position -## self.framecls = framecls -## argnames = ['_%d'%(i+1) for i in range(multimethod.arity)] -## explicit_argnames = multimethod.extras.get('argnames', []) -## argnames[len(argnames)-len(explicit_argnames):] = explicit_argnames -## varargname = kwargname = None -## # XXX do something about __call__ and __init__ which still use -## # XXX packed arguments: w_args, w_kwds instead of *args_w, **kwds_w -## if multimethod.extras.get('varargs', False): -## varargname = 'args' -## if multimethod.extras.get('keywords', False): -## kwargname = 'keywords' -## self.sig = argnames, varargname, kwargname - -## def computeslice(self, space): -## "NOT_RPYTHON: initialization-time only." -## self.mm = self.basemultimethod.__get__(space, slice=( -## self.typeclass, self.bound_position)) -## return not self.mm.is_empty() - -## def signature(self): -## return self.sig - -## def getdefaults(self, space): -## return [space.wrap(x) -## for x in self.basemultimethod.extras.get('defaults', ())] - -## def create_frame(self, space, w_globals, closure=None): -## return self.framecls(space, self) - -##mmtemplate = """ -##class %(name)s(eval.Frame): - -## def setfastscope(self, scope_w): -## args = list(scope_w) -## args.insert(0, args.pop(self.code.bound_position)) -##%(self_args_assigning)s - -## def getfastscope(self): -## raise OperationError(self.space.w_TypeError, -## self.space.wrap("cannot get fastscope of a MmFrame")) -##""" - -##mmruntemplate = """ -## def run(self): -## "Call the multimethod, raising a TypeError if not implemented." -## w_result = self.code.mm(%(self_args)s) -## # we accept a real None from operations with no return value -## if w_result is None: -## w_result = self.space.w_None -## return w_result -##""" - -##specialmmruntemplate = """ - -## def run(self): -## "Call the multimethods, possibly returning a NotImplemented." -## try: -## return self.code.mm.perform_call(%(self_args)s) -## except FailedToImplement, e: -## if e.args: -## raise OperationError(e.args[0], e.args[1]) -## else: -## return self.space.w_NotImplemented - -##""" Modified: pypy/dist/pypy/objspace/std/test/test_floatobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_floatobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_floatobject.py Sat Apr 9 19:10:01 2005 @@ -12,7 +12,7 @@ res = func(*args, **kwds) raise Exception, "should have failed but returned '%s'!" %repr(res) except FailedToImplement, arg: - return arg[0] + return arg.w_type def test_pow_fff(self): x = 10.0 Modified: pypy/dist/pypy/objspace/std/test/test_intobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_intobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_intobject.py Sat Apr 9 19:10:01 2005 @@ -24,7 +24,7 @@ res = func(*args, **kwds) raise Exception, "should have failed but returned '%s'!" %repr(res) except FailedToImplement, arg: - return arg[0] + return arg.w_type def test_int_w(self): assert self.space.int_w(self.space.wrap(42)) == 42 Modified: pypy/dist/pypy/translator/test/snippet.py ============================================================================== --- pypy/dist/pypy/translator/test/snippet.py (original) +++ pypy/dist/pypy/translator/test/snippet.py Sat Apr 9 19:10:01 2005 @@ -331,25 +331,6 @@ r.append(try_raise_choose(n)) return r -def raise_indexerror(): - raise IndexError(-12) - -def raise_systemerror(): - raise SystemError("hello") - -def Exception_init(n): - if n > 0: - try: - raise_indexerror() - except IndexError, e: - return (e.args[0], "duh") - else: - try: - raise_systemerror() - except SystemError, e: - return (42, e.args[0]) - return (0, "") - # INHERITANCE / CLASS TESTS class C(object): pass Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Sat Apr 9 19:10:01 2005 @@ -697,15 +697,6 @@ s = a.build_types(f, [int]) assert s.knowntype == float - def test_Exception_init(self): - a = RPythonAnnotator() - s = a.build_types(snippet.Exception_init, [int]) - #a.translator.viewcg() - # result should be exactly: - assert s == annmodel.SomeTuple([ - annmodel.SomeInteger(), - annmodel.SomeString() - ]) def g(n): return [0,1,2,n] From pedronis at codespeak.net Sat Apr 9 20:59:15 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 9 Apr 2005 20:59:15 +0200 (CEST) Subject: [pypy-svn] r10493 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050409185915.C7A6A27B72@code1.codespeak.net> Author: pedronis Date: Sat Apr 9 20:59:15 2005 New Revision: 10493 Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/model.py pypy/dist/pypy/translator/test/test_annrpython.py Log: support for mixing strings and None, with can_be_None flagging. test. Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Sat Apr 9 20:59:15 2005 @@ -194,7 +194,7 @@ class __extend__(pairtype(SomeString, SomeString)): def union((str1, str2)): - return SomeString() + return SomeString(can_be_None=str1.can_be_None or str2.can_be_None) def add((str1, str2)): return SomeString() @@ -404,3 +404,15 @@ class __extend__(pairtype(SomePBC, SomeList )): def union((pbc, lst)): return pair(lst, pbc).union() + +# mixing strings and None + +class __extend__(pairtype(SomeString, SomePBC)): + def union((s, pbc)): + if pbc.isNone(): + return SomeString(can_be_None=True) + return SomeObject() + +class __extend__(pairtype(SomePBC, SomeString )): + def union((pbc, s)): + return pair(s, pbc).union() Modified: pypy/dist/pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/dist/pypy/annotation/model.py Sat Apr 9 20:59:15 2005 @@ -120,6 +120,8 @@ class SomeString(SomeObject): "Stands for an object which is known to be a string." knowntype = str + def __init__(self, can_be_None=False): + self.can_be_None = can_be_None class SomeChar(SomeString): Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Sat Apr 9 20:59:15 2005 @@ -613,6 +613,25 @@ s = a.build_types(assert_, []) assert s.const is None + def test_string_and_none(self): + def f(n): + if n: + return 'y' + else: + return 'n' + def g(n): + if n: + return 'y' + else: + return None + a = RPythonAnnotator() + s = a.build_types(f, [bool]) + assert s.knowntype == str + assert not s.can_be_None + s = a.build_types(g, [bool]) + assert s.knowntype == str + assert s.can_be_None + def test_implicit_exc(self): def f(l): try: From tismer at codespeak.net Sun Apr 10 11:52:42 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 10 Apr 2005 11:52:42 +0200 (CEST) Subject: [pypy-svn] r10503 - in pypy/dist/pypy: interpreter translator translator/test Message-ID: <20050410095242.A415727B6D@code1.codespeak.net> Author: tismer Date: Sun Apr 10 11:52:42 2005 New Revision: 10503 Modified: pypy/dist/pypy/interpreter/gateway.py pypy/dist/pypy/translator/geninterplevel.py pypy/dist/pypy/translator/test/test_geninterp.py Log: added caching of translated snippets. The cache file is currently pypy.interpreter._interplevel_cache.py . Name and position are arguable,but easy to change -- feel free! After a single run of test_all.py, the cache file is filled, and flow space is no longer needed. The speed boost for test_all is quite noticeable, appears to be 30-40 %. A side effect of caching is that tests *might* behave different, depending on the cache file being filled or not. To be safe, the cache can be cleared before testing. A simple double-click on the cache file makes it self-destruct. The cache does very simple heuristics: Every unseen source text gets its new entry. There is a simple version check against GI_VERSION in geninterplevel.py, which I think is sufficient. Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Sun Apr 10 11:52:42 2005 @@ -550,12 +550,73 @@ def _builddict(self, space): "NOT_RPYTHON" - from pypy.translator.geninterplevel import translate_as_module - initfunc = translate_as_module(self.source, self.filename, - self.modname, self.do_imports) + if not self._setup_done: + self._setup() + from pypy.translator.geninterplevel import translate_as_module, \ + render_docstr + initfunc = self.known_source.get(self.source) + if not initfunc: + initfunc, newsrc = translate_as_module( + self.source, self.filename, self.modname, self.do_imports) + f = file(self.cache_filename, "a") + print >> f + print >> f, "#"+72*"_" + print >> f + print >> f, render_docstr( + self.source, "source = ") + print >> f + print >> f, newsrc + print >> f, "known_source[source] = %s" % initfunc.__name__ w_glob = initfunc(space) return w_glob + _setup_done = False + + def _setup(cls): + import os + cls.cache_filename = os.path.join(os.path.dirname(__file__), + "_interplevel_cache.py") + try: + from pypy.interpreter._interplevel_cache import known_source, \ + GI_VERSION_RENDERED + except ImportError: + GI_VERSION_RENDERED = 0 + from pypy.translator.geninterplevel import GI_VERSION + if GI_VERSION != GI_VERSION_RENDERED: + file(cls.cache_filename, "w").write(""" +# This file acts as a cache for code snippets which have been +# compiled by compile_as_module(). +# It will get a new entry for every piece of code that has +# not been seen, yet. +# +# Caution! Only the code snippet is checked. If something +# is imported, changes are not detected. Also, changes +# to geninterplevel or gateway are also not checked. +# Exception: There is a version number which is in checked! +# +# If in doubt, remove this file from time to time. + +known_source = {} + +GI_VERSION_RENDERED = %r + +# self-destruct on double-click: +if __name__ == "__main__": + from pypy.interpreter import _interplevel_cache + import os + namestart = os.path.splitext(_interplevel_cache.__file__)[0] + for ending in ('.py', '.pyc', '.pyo'): + try: + os.unlink(namestart+ending) + except os.error: + pass + +""" % GI_VERSION) + known_source = {} + cls.known_source = known_source + cls._setup_done = True + _setup = classmethod(_setup) + def applevel(source, filename = None, modname = 'applevelinterp', do_imports=False): # look at the first three lines Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Sun Apr 10 11:52:42 2005 @@ -33,8 +33,6 @@ from pypy.translator.translator import Translator from pypy.objspace.flow import FlowObjSpace -from pypy.interpreter.gateway import app2interp, interp2app - from pypy.tool.sourcetools import render_docstr from pypy.translator.gensupp import ordered_blocks, UniqueList, builtin_base, \ @@ -42,6 +40,8 @@ import pypy # __path__ import py.path + +GI_VERSION = '1.0' # bump this for substantial changes # ____________________________________________________________ def eval_helper(self, typename, expr): @@ -1487,16 +1487,17 @@ def translate_as_module(sourcetext, filename=None, modname="app2interpexec", do_imports=False, tmpname=None): """ compile sourcetext as a module, translating to interp level. - The result is the init function that creates the wrapped module dict. + The result is the init function that creates the wrapped module dict, + together with the generated source text. This init function needs a space as argument. tmpname can be passed for debugging purposes. Example: - initfunc = translate_as_module(text) + initfunc, newsrc = translate_as_module(text) from pypy.objspace.std import Space space = Space() - dic = ini(space) + dic = initfunc(space) # and now use the members of the dict """ # create something like a module @@ -1519,7 +1520,7 @@ _file = file else: _file = memfile - tmpname = "nada" + tmpname = sourcetext out = _file(tmpname, 'w') gen.f = out gen.gen_source(tmpname, file=_file) @@ -1530,7 +1531,7 @@ exec code in dic # now we just need to return the init function, # which then needs to be called with the space to return the dict. - return dic['init%s' % modname] + return dic['init%s' % modname], newsrc #___________________________________________________________________ Modified: pypy/dist/pypy/translator/test/test_geninterp.py ============================================================================== --- pypy/dist/pypy/translator/test/test_geninterp.py (original) +++ pypy/dist/pypy/translator/test/test_geninterp.py Sun Apr 10 11:52:42 2005 @@ -52,7 +52,8 @@ exec cls.snippet_ad in snippet.__dict__ src += cls.snippet_ad # just in case of trouble, we produce a tempfile - ini = translate_as_module(src, tmpname = str(udir.join("_geninterp_test.py"))) + ini, newsrc = translate_as_module(src, tmpname = str( + udir.join("_geninterp_test.py"))) cls.w_glob = ini(cls.space) def build_interpfunc(self, func, *morefuncs): From tismer at codespeak.net Sun Apr 10 11:56:19 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 10 Apr 2005 11:56:19 +0200 (CEST) Subject: [pypy-svn] r10504 - pypy/dist/pypy/interpreter Message-ID: <20050410095619.8AAE627B6D@code1.codespeak.net> Author: tismer Date: Sun Apr 10 11:56:19 2005 New Revision: 10504 Modified: pypy/dist/pypy/interpreter/gateway.py Log: comment Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Sun Apr 10 11:56:19 2005 @@ -592,7 +592,7 @@ # Caution! Only the code snippet is checked. If something # is imported, changes are not detected. Also, changes # to geninterplevel or gateway are also not checked. -# Exception: There is a version number which is in checked! +# Exception: There is a checked version number in geninterplevel.py # # If in doubt, remove this file from time to time. From arigo at codespeak.net Sun Apr 10 13:10:03 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 10 Apr 2005 13:10:03 +0200 (CEST) Subject: [pypy-svn] r10505 - in pypy/dist/pypy/translator/genc: . test Message-ID: <20050410111003.E408C27B84@code1.codespeak.net> Author: arigo Date: Sun Apr 10 13:10:03 2005 New Revision: 10505 Modified: pypy/dist/pypy/translator/genc/funcdef.py pypy/dist/pypy/translator/genc/g_operation.h pypy/dist/pypy/translator/genc/g_support.h pypy/dist/pypy/translator/genc/genc.py pypy/dist/pypy/translator/genc/t_pyobj.py pypy/dist/pypy/translator/genc/t_tuple.py pypy/dist/pypy/translator/genc/test/test_ctrans.py Log: Major clean-up of gen_wrapper(). Now the wrapper pyfn_xxx() functions are constructed "manually" as a flow graph, which allows conversion operations to be inserted cleanly. The resulting flow graph is then turned into C source using the existing code. Modified: pypy/dist/pypy/translator/genc/funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc/funcdef.py (original) +++ pypy/dist/pypy/translator/genc/funcdef.py Sun Apr 10 13:10:03 2005 @@ -1,16 +1,23 @@ from __future__ import generators -from pypy.objspace.flow.model import Variable, Constant +from pypy.objspace.flow import FlowObjSpace +from pypy.objspace.flow.model import Variable, Constant, SpaceOperation from pypy.objspace.flow.model import traverse, uniqueitems, checkgraph -from pypy.objspace.flow.model import Block, Link +from pypy.objspace.flow.model import Block, Link, FunctionGraph from pypy.objspace.flow.model import last_exception, last_exc_value +from pypy.translator.simplify import simplify_graph from pypy.translator.unsimplify import remove_direct_loops +from pypy.translator.genc.t_simple import CIntType, CNoneType +from pypy.translator.genc.t_func import CFuncPtrType +from pypy.translator.genc.t_pyobj import CBorrowedPyObjectType from pypy.interpreter.pycode import CO_VARARGS +from pypy.tool.compile import compile2 from types import FunctionType from pypy.translator.gensupp import c_string # Set this if you want call trace frames to be built USE_CALL_TRACE = False +# XXX doesn't work any more because of the way gen_wrapper() works, sorry class FunctionDef: @@ -32,21 +39,25 @@ variable named gfn_xxx. """ - def __init__(self, func, genc): + def __init__(self, func, genc, graph=None, fast_name=None): self.func = func self.genc = genc # get the function name namespace = genc.namespace - self.fast_name = namespace.uniquename('fn_' + func.__name__) # fn_xxx - self.base_name = self.fast_name[3:] # xxx + if fast_name is None: + fast_name = namespace.uniquename('fn_' + func.__name__) # fn_xxx + self.fast_name = fast_name + self.base_name = fast_name[3:] # xxx self.wrapper_name = None # pyfn_xxx self.globalobject_name = None # gfunc_xxx self.localscope = namespace.localScope() # get the flow graph, and ensure that there is no direct loop in it # as we cannot generate valid code for this case. - self.graph = graph = genc.translator.getflowgraph(func) + if graph is None: + graph = genc.translator.getflowgraph(func) + self.graph = graph remove_direct_loops(genc.translator, graph) checkgraph(graph) graph_args = graph.getargs() @@ -71,17 +82,13 @@ fast_function_header = 'static ' + ( ctret.ctypetemplate % (name_and_arguments,)) - name_of_defaults = [self.genc.nameofvalue(x, debug=( - 'Default argument of', self)) - for x in (func.func_defaults or ())] - # store misc. information self.fast_function_header = fast_function_header self.graphargs = graph_args self.ctret = ctret self.vararg = bool(func.func_code.co_flags & CO_VARARGS) self.fast_args = fast_args - self.name_of_defaults = name_of_defaults + self.func_defaults = func.func_defaults or () error_return = getattr(ctret, 'error_return', 'NULL') self.return_error = 'FUNCTION_RETURN(%s)' % error_return @@ -124,7 +131,110 @@ # ____________________________________________________________ - def gen_wrapper(self, f): + def gen_wrapper(self): + # the wrapper is the function that takes the CPython signature + # + # PyObject *fn(PyObject *self, PyObject *args, PyObject *kwds) + # + # and decodes the arguments and calls the "real" C function. + # We generate the wrapper itself as a Python function which is + # turned into C. This makes gen_wrapper() more or less clean. + # + + TPyObject = self.genc.pyobjtype + TInt = self.genc.translator.getconcretetype(CIntType) + TNone = self.genc.translator.getconcretetype(CNoneType) + TBorrowed = self.genc.translator.getconcretetype(CBorrowedPyObjectType) + args_ct = [self.ctypeof(a) for a in self.graphargs] + res_ct = self.ctret + nb_positional_args = len(self.graphargs) - self.vararg + + # "def wrapper(self, args, kwds)" + vself = Variable('self') + vargs = Variable('args') + vkwds = Variable('kwds') + block = Block([vself, vargs, vkwds]) + vfname = Constant(self.base_name) + + # avoid incref/decref on the arguments: 'self' and 'kwds' can be NULL + vself.concretetype = TBorrowed + vargs.concretetype = TBorrowed + vkwds.concretetype = TBorrowed + + # "argument_i = decode_arg(fname, pos, name, vargs, vkwds)" or + # "argument_i = decode_arg_def(fname, pos, name, vargs, vkwds, default)" + varguments = [] + varnames = self.func.func_code.co_varnames + for i in range(nb_positional_args): + opargs = [vfname, Constant(i), + Constant(varnames[i]), vargs, vkwds] + opargs[1].concretetype = TInt + try: + default_value = self.func_defaults[i - nb_positional_args] + except IndexError: + opname = 'decode_arg' + else: + opname = 'decode_arg_def' + opargs.append(Constant(default_value)) + v = Variable('a%d' % i) + block.operations.append(SpaceOperation(opname, opargs, v)) + varguments.append(v) + + if self.vararg: + # "vararg = vargs[n:]" + vararg = Variable('vararg') + opargs = [vargs, Constant(nb_positional_args), Constant(None)] + block.operations.append(SpaceOperation('getslice', opargs, vararg)) + varguments.append(vararg) + else: + # "check_no_more_arg(fname, n, vargs)" + vnone = Variable() + vnone.concretetype = TNone + opargs = [vfname, Constant(nb_positional_args), vargs] + opargs[1].concretetype = TInt + block.operations.append(SpaceOperation('check_no_more_arg', + opargs, vnone)) + + if self.genc.translator.annotator is not None: + # "argument_i = type_conversion_operations(argument_i)" + from pypy.translator.genc.ctyper import GenCSpecializer + from pypy.translator.typer import flatten_ops + typer = GenCSpecializer(self.genc.translator.annotator) + + assert len(varguments) == len(self.graphargs) + for i in range(len(varguments)): + varguments[i].concretetype = TPyObject + varguments[i], convops = typer.convertvar(varguments[i], + args_ct[i]) + flatten_ops(convops, block.operations) + else: + typer = None + + # "result = direct_call(func, argument_0, argument_1, ..)" + opargs = [Constant(self.func)] + varguments + opargs[0].concretetype = self.genc.translator.getconcretetype( + CFuncPtrType, tuple(args_ct), res_ct) + vresult = Variable('result') + block.operations.append(SpaceOperation('direct_call', opargs, vresult)) + + if typer is not None: + # "result2 = type_conversion_operations(result)" + vresult.concretetype = res_ct + vresult, convops = typer.convertvar(vresult, TPyObject) + flatten_ops(convops, block.operations) + + # "return result" + wgraph = FunctionGraph(self.wrapper_name, block) + block.closeblock(Link([vresult], wgraph.returnblock)) + checkgraph(wgraph) + + # generate the C source of this wrapper function + wfuncdef = FunctionDef(dummy_wrapper, self.genc, + wgraph, self.wrapper_name) + self.genc.gen_cfunction(wfuncdef) + + + def DISABLED_OLD_gen_wrapper(self, f): # XXX this is a huge mess. Think about producing the wrapper by # generating its content as a flow graph... func = self.func @@ -495,3 +605,6 @@ self.kwds = kwds def compute(self): return self.fn(*self.args, **self.kwds) + +def dummy_wrapper(self, args, kwds): + pass Modified: pypy/dist/pypy/translator/genc/g_operation.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_operation.h (original) +++ pypy/dist/pypy/translator/genc/g_operation.h Sun Apr 10 13:10:03 2005 @@ -150,3 +150,12 @@ #define OP_NEWDICT0(r,err) if (!(r=PyDict_New())) FAIL(err) #define OP_NEWDICT(args,r,err) if (!(r=PyDict_Pack args)) FAIL(err) #define OP_NEWTUPLE(args,r,err) if (!(r=PyTuple_Pack args)) FAIL(err) + +/*** argument parsing ***/ + +#define OP_DECODE_ARG(fname, pos, name, vargs, vkwds, r, err) \ + if (!(r=decode_arg(fname, pos, name, vargs, vkwds, NULL))) FAIL(err) +#define OP_DECODE_ARG_DEF(fname, pos, name, vargs, vkwds, def, r, err) \ + if (!(r=decode_arg(fname, pos, name, vargs, vkwds, def))) FAIL(err) +#define OP_CHECK_NO_MORE_ARG(fname, n, vargs, r, err) \ + if (check_no_more_arg(fname, n, vargs) < 0) FAIL(err) Modified: pypy/dist/pypy/translator/genc/g_support.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_support.h (original) +++ pypy/dist/pypy/translator/genc/g_support.h Sun Apr 10 13:10:03 2005 @@ -289,3 +289,56 @@ Py_XDECREF(t); return result; } + +static PyObject* decode_arg(PyObject* fname, int position, PyObject* name, + PyObject* vargs, PyObject* vkwds, PyObject* def) +{ + PyObject* result; + int size = PyTuple_Size(vargs); + if (size < 0) + return NULL; + if (vkwds != NULL) { + result = PyDict_GetItem(vkwds, name); + if (result != NULL) { + if (position < size) { + PyErr_Format(PyExc_TypeError, + "%s() got duplicate value for " + "its '%s' argument", + PyString_AS_STRING(fname), + PyString_AS_STRING(name)); + return NULL; + } + Py_INCREF(result); + return result; + } + } + if (position < size) { + /* common case */ + result = PyTuple_GET_ITEM(vargs, position); + Py_INCREF(result); + return result; + } + if (def != NULL) { + Py_INCREF(def); + return def; + } + PyErr_Format(PyExc_TypeError, "%s() got only %d argument(s)", + PyString_AS_STRING(fname), + position-1); + return NULL; +} + +static int check_no_more_arg(PyObject* fname, int n, PyObject* vargs) +{ + int size = PyTuple_Size(vargs); + if (size < 0) + return -1; + if (size > n) { + PyErr_Format(PyExc_TypeError, + "%s() got %d argument(s), expected %d", + PyString_AS_STRING(fname), + size, n); + return -1; + } + return 0; +} Modified: pypy/dist/pypy/translator/genc/genc.py ============================================================================== --- pypy/dist/pypy/translator/genc/genc.py (original) +++ pypy/dist/pypy/translator/genc/genc.py Sun Apr 10 13:10:03 2005 @@ -90,7 +90,7 @@ # after all the ff_xxx() functions we generate the pyff_xxx() wrappers for funcdef in self.allfuncdefs: if funcdef.wrapper_name is not None: - funcdef.gen_wrapper(f) + funcdef.gen_wrapper() # global object table print >> f, self.C_OBJECT_TABLE @@ -160,7 +160,10 @@ # this is only to keep the RAM consumption under control funcdef.clear() if not self.translator.frozen: - del self.translator.flowgraphs[funcdef.func] + try: + del self.translator.flowgraphs[funcdef.func] + except KeyError: + pass Variable.instances.clear() # ____________________________________________________________ Modified: pypy/dist/pypy/translator/genc/t_pyobj.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_pyobj.py (original) +++ pypy/dist/pypy/translator/genc/t_pyobj.py Sun Apr 10 13:10:03 2005 @@ -458,3 +458,8 @@ co = compile(source, genc.modname, 'exec') del source return marshal.dumps(co) + + +class CBorrowedPyObjectType(CType): + ctypetemplate = 'PyObject *%s' + error_return = 'NULL' Modified: pypy/dist/pypy/translator/genc/t_tuple.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_tuple.py (original) +++ pypy/dist/pypy/translator/genc/t_tuple.py Sun Apr 10 13:10:03 2005 @@ -4,7 +4,6 @@ class CTupleType(CType): - #error_return = ? Counter = {} @@ -16,6 +15,7 @@ CTupleType.Counter.setdefault(len(itemtypes), 0)) CTupleType.Counter[len(itemtypes)] += 1 self.ctypetemplate = self.structname + ' %s' + self.error_return = self.structname.replace(' ', '_err_') self.cnames = {} self.globaldecl = [] @@ -32,6 +32,8 @@ for ct, name in zip(self.itemtypes, self.fieldnames()): yield '\t' + ct.ctypetemplate % (name,) + ';' yield '};' + yield '%s %s; /* uninitialized */' % (self.structname, + self.error_return) def collect_globals(self, genc): result = self.globaldecl Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py ============================================================================== --- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_ctrans.py Sun Apr 10 13:10:03 2005 @@ -362,7 +362,5 @@ raises(OverflowError, fn, sys.maxint+1) - def test_inheritance2(self): py.test.skip("missing: return tuple") - def test_call_unpack_56(self): py.test.skip("missing: return tuple") - def test_tuple_repr(self): py.test.skip("missing: return tuple") - def test_get_set_del_slice(self): py.test.skip("missing: return tuple") + def test_get_set_del_slice(self): + py.test.skip("missing incref/decref in tuples") From arigo at codespeak.net Sun Apr 10 14:49:14 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 10 Apr 2005 14:49:14 +0200 (CEST) Subject: [pypy-svn] r10507 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050410124914.4E8DE27B84@code1.codespeak.net> Author: arigo Date: Sun Apr 10 14:49:14 2005 New Revision: 10507 Modified: pypy/dist/pypy/annotation/bookkeeper.py pypy/dist/pypy/translator/test/test_annrpython.py Log: Support for prebuilt r_uint constants. Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Sun Apr 10 14:49:14 2005 @@ -12,6 +12,7 @@ from pypy.interpreter.pycode import CO_VARARGS from pypy.interpreter.pycode import cpython_code_signature from pypy.interpreter.argument import ArgErr +from pypy.tool.rarithmetic import r_uint import inspect, new @@ -84,6 +85,8 @@ result = SomeBool() elif tp is int: result = SomeInteger(nonneg = x>=0) + elif tp is r_uint: + result = SomeInteger(nonneg = True, unsigned = True) elif tp is str: result = SomeString() elif tp is tuple: @@ -164,6 +167,8 @@ return SomeBool() elif t is int: return SomeInteger() + elif t is r_uint: + return SomeInteger(nonneg = True, unsigned = True) elif t is str: return SomeString() elif t is float: Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Sun Apr 10 14:49:14 2005 @@ -6,6 +6,7 @@ from pypy.translator.annrpython import RPythonAnnotator, annmodel from pypy.translator.translator import Translator from pypy.objspace.flow.model import * +from pypy.tool.rarithmetic import r_uint from pypy.translator.test import snippet @@ -716,6 +717,13 @@ s = a.build_types(f, [int]) assert s.knowntype == float + def test_r_uint(self): + def f(n): + return n + constant_unsigned_five + a = RPythonAnnotator() + s = a.build_types(f, [r_uint]) + assert s == annmodel.SomeInteger(nonneg = True, unsigned = True) + def g(n): return [0,1,2,n] @@ -728,3 +736,5 @@ total += i i += 1 return total + +constant_unsigned_five = r_uint(5) From arigo at codespeak.net Sun Apr 10 15:24:05 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 10 Apr 2005 15:24:05 +0200 (CEST) Subject: [pypy-svn] r10510 - in pypy/dist/pypy/translator: . genc genc/test Message-ID: <20050410132405.9C89A27B84@code1.codespeak.net> Author: arigo Date: Sun Apr 10 15:24:05 2005 New Revision: 10510 Modified: pypy/dist/pypy/translator/genc/ctyper.py pypy/dist/pypy/translator/genc/funcdef.py pypy/dist/pypy/translator/genc/genc.py pypy/dist/pypy/translator/genc/t_func.py pypy/dist/pypy/translator/genc/t_pyobj.py pypy/dist/pypy/translator/genc/t_simple.py pypy/dist/pypy/translator/genc/t_tuple.py pypy/dist/pypy/translator/genc/test/test_ctrans.py pypy/dist/pypy/translator/translator.py Log: Fixed the handling of incref/decref with elements of tuples. Now all tests pass. Modified: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- pypy/dist/pypy/translator/genc/ctyper.py (original) +++ pypy/dist/pypy/translator/genc/ctyper.py Sun Apr 10 15:24:05 2005 @@ -95,6 +95,7 @@ yield self.typed_op(SpaceOperation('tuple_setitem', [v2, Constant(i), vitem], v0), # args, ret [ctup, TInt, ct ], TNone) # a_t, r_t + yield self.incref_op(vitem) return if op.opname == 'getitem': @@ -111,7 +112,19 @@ else: yield self.typed_op(op, [ctup, self.TInt], ct, newopname='tuple_getitem') + yield self.incref_op(op.result) return # fall-back yield Specializer.specialized_op(self, op, bindings) + + + def incref_op(self, v): + vnone = Variable() + vnone.concretetype = self.TNone + return SpaceOperation('incref', [v], vnone) + + def deref_op(self, v): + vnone = Variable() + vnone.concretetype = self.TNone + return SpaceOperation('decref', [v], vnone) Modified: pypy/dist/pypy/translator/genc/funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc/funcdef.py (original) +++ pypy/dist/pypy/translator/genc/funcdef.py Sun Apr 10 15:24:05 2005 @@ -371,9 +371,9 @@ # generate an incref for each input argument for a in self.graphargs: - cincref = self.ctypeof(a).cincref - if cincref: - print >> f, '\t' + cincref % (self.expr(a),) + line = self.ctypeof(a).cincref(self.expr(a)) + if line: + print >> f, '\t' + line # print the body for line in body: @@ -417,13 +417,14 @@ ct1 = self.ctypeof(a1) ct2 = self.ctypeof(a2) assert ct1 == ct2 - if ct1.cincref: - line += '\t' + ct1.cincref % (self.expr(a2),) + line2 = ct1.cincref(self.expr(a2)) + if line2: + line += '\t' + line2 yield line for v in has_ref: - cdecref = self.ctypeof(v).cdecref - if cdecref: - yield cdecref % (linklocalvars[v],) + line = self.ctypeof(v).cdecref(linklocalvars[v]) + if line: + yield line yield 'goto block%d;' % blocknum[link.target] # collect all blocks @@ -521,12 +522,9 @@ while to_release: v = to_release.pop() if err_reachable: - if not hasattr(v, 'concretetype'): - cdecref = 'ERR_DECREF(%s)' - else: - cdecref = v.concretetype.cdecref - if cdecref: - yield cdecref % (self.expr(v),) + line = self.ctypeof(v).cdecref(self.expr(v)) + if line: + yield line yield 'err%d_%d:' % (blocknum[block], len(to_release)) err_reachable = True if err_reachable: @@ -596,6 +594,14 @@ return '%s = %s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( r, args[0], ', '.join(args[1:]), err) + def OP_INCREF(self, args, r, err): + v, = args[0].args + return self.ctypeof(v).cincref(args[0].compute()) + + def OP_DECREF(self, args, r, err): + v, = args[0].args + return self.ctypeof(v).cdecref(args[0].compute()) + # ____________________________________________________________ class lazy: Modified: pypy/dist/pypy/translator/genc/genc.py ============================================================================== --- pypy/dist/pypy/translator/genc/genc.py (original) +++ pypy/dist/pypy/translator/genc/genc.py Sun Apr 10 15:24:05 2005 @@ -130,10 +130,11 @@ def gen_global_declarations(self): # collect more of the latercode between the functions, # and produce the corresponding global declarations - for ct in self.translator.concretetypes.values(): + for ct in self.translator.ctlist: if ct not in self.ctypes_alreadyseen: self.globaldecl += list(ct.init_globals(self)) self.ctypes_alreadyseen[ct] = True + for ct in self.translator.ctlist: self.globaldecl += list(ct.collect_globals(self)) g = self.globaldecl if g: Modified: pypy/dist/pypy/translator/genc/t_func.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_func.py (original) +++ pypy/dist/pypy/translator/genc/t_func.py Sun Apr 10 15:24:05 2005 @@ -23,7 +23,7 @@ # a nice textual name for debugging... argnames = [ct.debugname() for ct in self.argtypes] returnname = self.returntype.debugname() - return 'fn (%s) -> %s' % (', '.join(argnames), returnname) + return 'fn(%s) -> %s' % (', '.join(argnames), returnname) def nameof(self, func, debug=None): return self.genc().getfuncdef(func).fast_name Modified: pypy/dist/pypy/translator/genc/t_pyobj.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_pyobj.py (original) +++ pypy/dist/pypy/translator/genc/t_pyobj.py Sun Apr 10 15:24:05 2005 @@ -15,8 +15,6 @@ reconstruct them. """ ctypetemplate = 'PyObject *%s' - cincref = 'Py_INCREF(%s);' - cdecref = 'Py_DECREF(%s);' error_return = 'NULL' def __init__(self, translator): @@ -53,6 +51,12 @@ self.globalobjects = [] self.debugstack = () # linked list of nested nameof() + def cincref(self, expr): + return 'Py_INCREF(%s);' % expr + + def cdecref(self, expr): + return 'Py_DECREF(%s);' % expr + def nameof(self, obj, debug=None): key = Constant(obj).key try: Modified: pypy/dist/pypy/translator/genc/t_simple.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_simple.py (original) +++ pypy/dist/pypy/translator/genc/t_simple.py Sun Apr 10 15:24:05 2005 @@ -4,8 +4,6 @@ class CType(object): - cincref = None - cdecref = None def __init__(self, translator): self.translator = translator @@ -30,6 +28,12 @@ def collect_globals(self, genc): return [] + def cincref(self, expr): + return '' + + def cdecref(self, expr): + return '' + class CIntType(CType): error_return = '-1' Modified: pypy/dist/pypy/translator/genc/t_tuple.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_tuple.py (original) +++ pypy/dist/pypy/translator/genc/t_tuple.py Sun Apr 10 15:24:05 2005 @@ -22,7 +22,7 @@ def debugname(self): # a nice textual name for debugging... itemnames = [ct.debugname() for ct in self.itemtypes] - return 'tuple (%s)' % (', '.join(itemnames),) + return 'tuple(%s)' % (', '.join(itemnames),) def fieldnames(self): return ['f%d' % i for i in range(len(self.itemtypes))] @@ -32,14 +32,31 @@ for ct, name in zip(self.itemtypes, self.fieldnames()): yield '\t' + ct.ctypetemplate % (name,) + ';' yield '};' - yield '%s %s; /* uninitialized */' % (self.structname, - self.error_return) + self.globaldecl.append( + '%s %s; /* uninitialized */' % (self.structname, + self.error_return)) def collect_globals(self, genc): result = self.globaldecl self.globaldecl = [] return result + def cincref(self, expr): + result = [] + for i in range(len(self.itemtypes)): + line = self.itemtypes[i].cincref('%s.f%d' % (expr, i)) + if line: + result.append(line) + return ' '.join(result) + + def cdecref(self, expr): + result = [] + for i in range(len(self.itemtypes)): + line = self.itemtypes[i].cdecref('%s.f%d' % (expr, i)) + if line: + result.append(line) + return '\t'.join(result) + def nameof(self, tup, debug=None): genc = self.genc() try: @@ -66,6 +83,7 @@ yield typer.typed_op(SpaceOperation('tuple_getitem', [v1, Constant(i)], vitem), # args, retval [self, TInt ], ct ) # arg_t, ret_t + yield typer.incref_op(vitem) pyobjitems_v.append(vitem) # create a new PyTupleObject with these values # note that typed_op() will insert the conversion of vitem if needed @@ -85,9 +103,11 @@ yield typer.typed_op(SpaceOperation('pytuple_getitem', [v1, Constant(i)], vitem), # args, retval [TPyObj, TInt ], TPyObj) # arg_t, ret_t + yield typer.incref_op(vitem) # store it into the "struct" tuple # note that typed_op() will insert the conversion of vitem if needed v0 = Variable() yield typer.typed_op(SpaceOperation('tuple_setitem', [v2, Constant(i), vitem], v0), # args, ret [self, TInt, ct ], TNone) # a_t, r_t + yield typer.incref_op(vitem) Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py ============================================================================== --- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_ctrans.py Sun Apr 10 15:24:05 2005 @@ -360,7 +360,3 @@ def test_int_overflow(self): fn = self.getcompiled(snippet.simple_func) raises(OverflowError, fn, sys.maxint+1) - - - def test_get_set_del_slice(self): - py.test.skip("missing incref/decref in tuples") Modified: pypy/dist/pypy/translator/translator.py ============================================================================== --- pypy/dist/pypy/translator/translator.py (original) +++ pypy/dist/pypy/translator/translator.py Sun Apr 10 15:24:05 2005 @@ -64,6 +64,7 @@ self.callgraph = {} # {opaque_tag: (caller, callee)} self.frozen = False # when frozen, no more flowgraphs can be generated self.concretetypes = {} # see getconcretetype() + self.ctlist = [] # " if self.entrypoint: self.getflowgraph() @@ -281,6 +282,7 @@ return self.concretetypes[cls, args] except KeyError: result = self.concretetypes[cls, args] = cls(self, *args) + self.ctlist.append(result) return result From arigo at codespeak.net Sun Apr 10 16:39:23 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 10 Apr 2005 16:39:23 +0200 (CEST) Subject: [pypy-svn] r10514 - in pypy/dist/pypy: interpreter objspace/flow Message-ID: <20050410143923.BA90D27B84@code1.codespeak.net> Author: arigo Date: Sun Apr 10 16:39:23 2005 New Revision: 10514 Added: pypy/dist/pypy/objspace/flow/operation.py (contents, props changed) Modified: pypy/dist/pypy/interpreter/baseobjspace.py pypy/dist/pypy/objspace/flow/objspace.py Log: Provide a hopefully complete mapping between operation names and Python built-in functions that do the same thing. Modified: pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/dist/pypy/interpreter/baseobjspace.py Sun Apr 10 16:39:23 2005 @@ -329,8 +329,7 @@ ## Table describing the regular part of the interface of object spaces, ## namely all methods which only take w_ arguments and return a w_ result -## (if any). XXX Maybe we should say that these methods must be accessed -## as 'space.op.xxx()' instead of directly 'space.xxx()'. +## (if any). Note: keep in sync with pypy.objspace.flow.operation.Table. ObjSpace.MethodTable = [ # method name # symbol # number of arguments # special method name(s) Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Sun Apr 10 16:39:23 2005 @@ -6,6 +6,7 @@ from pypy.interpreter.error import OperationError from pypy.objspace.flow.model import * from pypy.objspace.flow import flowcontext +from pypy.objspace.flow.operation import FunctionByName debug = 0 @@ -442,12 +443,6 @@ x_cell == c return x.other -def type_or_something_similar(x): - t = type(x) - if t is types.ClassType: # guess who's here? exception classes... - t = type - return t - def make_op(name, symbol, arity, specialnames): if hasattr(FlowObjSpace, name): return # Shouldn't do it @@ -461,7 +456,7 @@ # skip potential mutators if debug: print "Skip", name skip = True - elif name in ['id', 'hash', 'iter']: + elif name in ['id', 'hash', 'iter', 'userdel']: # skip potential runtime context dependecies if debug: print "Skip", name skip = True @@ -472,18 +467,8 @@ if s.find("at 0x") > -1: print >>sys.stderr, "Warning: captured address may be awkward" return s - elif name == 'issubtype': - op = issubclass - elif name == 'type': - op = type_or_something_similar - elif name == 'is_': - op = lambda x, y: x is y - elif name == 'nonzero': - op = bool else: - op = getattr(__builtin__, name, None) - if not op: - op = getattr(operator, name, None) + op = FunctionByName[name] if not op: if not skip: Added: pypy/dist/pypy/objspace/flow/operation.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/objspace/flow/operation.py Sun Apr 10 16:39:23 2005 @@ -0,0 +1,163 @@ +""" +This module defines mappings between operation names and Python's +built-in functions (or type constructors) implementing them. +""" +from pypy.interpreter.baseobjspace import ObjSpace +import operator, types, __future__ +from pypy.tool.compile import compile2 + +FunctionByName = {} # dict {"operation_name": } +OperationName = {} # dict {: "operation_name"} + +# ____________________________________________________________ + +def new_style_type(x): + """Simulate a situation where every class is new-style""" + t = getattr(x, '__class__', type(x)) + if t is types.ClassType: # guess who's here? exception classes... + t = type + return t + +def inplace_add(x, y): + x += y + return x + +def inplace_sub(x, y): + x -= y + return x + +def inplace_mul(x, y): + x *= y + return x + +exec compile2(""" +def inplace_truediv(x, y): + x /= y + return x +""", flags=__future__.CO_FUTURE_DIVISION, dont_inherit=1) +# makes an INPLACE_TRUE_DIVIDE + +def inplace_floordiv(x, y): + x //= y + return x + +exec compile2(""" +def inplace_div(x, y): + x /= y + return x +""", flags=0, dont_inherit=1) # makes an INPLACE_DIVIDE + +def inplace_mod(x, y): + x %= y + return x + +def inplace_pow(x, y): + x **= y + return x + +def inplace_lshift(x, y): + x <<= y + return x + +def inplace_rshift(x, y): + x >>= y + return x + +def inplace_and(x, y): + x &= y + return x + +def inplace_or(x, y): + x |= y + return x + +def inplace_xor(x, y): + x ^= y + return x + +def next(x): + return x.next() + +def get(x, y, z=None): + return x.__get__(y, z) + +def set(x, y, z): + x.__set__(y, z) + +def delete(x, y): + x.__delete__(y) + +def userdel(x): + x.__del__() + +# ____________________________________________________________ + +# The following table can list several times the same operation name, +# if multiple built-in functions correspond to it. The first one should +# be picked, though, as the best built-in for the given operation name. +# Lines ('name', operator.name) are added automatically. +Table = [ + ('id', id), + ('type', new_style_type), + ('issubtype', issubclass), + ('repr', repr), + ('str', str), + ('len', len), + ('hash', hash), + ('getattr', getattr), + ('setattr', setattr), + ('delattr', delattr), + ('nonzero', bool), + ('nonzero', operator.truth), + ('abs' , abs), + ('hex', hex), + ('oct', oct), + ('round', round), + ('ord', ord), + ('divmod', divmod), + ('pow', pow), + ('int', int), + ('float', float), + ('long', long), + ('inplace_add', inplace_add), + ('inplace_sub', inplace_sub), + ('inplace_mul', inplace_mul), + ('inplace_truediv', inplace_truediv), + ('inplace_floordiv',inplace_floordiv), + ('inplace_div', inplace_div), + ('inplace_mod', inplace_mod), + ('inplace_pow', inplace_pow), + ('inplace_lshift', inplace_lshift), + ('inplace_rshift', inplace_rshift), + ('inplace_and', inplace_and), + ('inplace_or', inplace_or), + ('inplace_xor', inplace_xor), + ('cmp', cmp), + ('coerce', coerce), + ('iter', iter), + ('next', next), + ('get', get), + ('set', set), + ('delete', delete), + ('userdel', userdel), + ] + +def setup(): + if not hasattr(operator, 'is_'): # Python 2.2 + Table.append(('is_', lambda x, y: x is y)) + # insert all operators + for line in ObjSpace.MethodTable: + name = line[0] + if hasattr(operator, name): + Table.append((name, getattr(operator, name))) + # build the dictionaries + for name, func in Table: + if name not in FunctionByName: + FunctionByName[name] = func + assert func not in OperationName + OperationName[func] = name + # check that the result is complete + for line in ObjSpace.MethodTable: + name = line[0] + assert name in FunctionByName +setup() From arigo at codespeak.net Sun Apr 10 18:20:11 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 10 Apr 2005 18:20:11 +0200 (CEST) Subject: [pypy-svn] r10516 - pypy/dist/pypy/interpreter Message-ID: <20050410162011.9650427B71@code1.codespeak.net> Author: arigo Date: Sun Apr 10 18:20:11 2005 New Revision: 10516 Modified: pypy/dist/pypy/interpreter/gateway.py Log: Don't try to reload _interplevel_cache if there is only a .pyc file left because we thought we'd clean up the cache by getting rid of the .py file! Also, GI_VERSION can be temporary set to None in translator/geninterplevel.py to force a systematic cache clean-up. Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Sun Apr 10 18:20:11 2005 @@ -577,12 +577,14 @@ cls.cache_filename = os.path.join(os.path.dirname(__file__), "_interplevel_cache.py") try: + if not os.path.exists(cls.cache_filename): + raise ImportError # don't import if only a .pyc file left!!! from pypy.interpreter._interplevel_cache import known_source, \ GI_VERSION_RENDERED except ImportError: GI_VERSION_RENDERED = 0 from pypy.translator.geninterplevel import GI_VERSION - if GI_VERSION != GI_VERSION_RENDERED: + if GI_VERSION != GI_VERSION_RENDERED or GI_VERSION is None: file(cls.cache_filename, "w").write(""" # This file acts as a cache for code snippets which have been # compiled by compile_as_module(). From arigo at codespeak.net Sun Apr 10 18:25:38 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 10 Apr 2005 18:25:38 +0200 (CEST) Subject: [pypy-svn] r10517 - in pypy/dist/pypy: annotation objspace/flow objspace/flow/test Message-ID: <20050410162538.93C5627B71@code1.codespeak.net> Author: arigo Date: Sun Apr 10 18:25:38 2005 New Revision: 10517 Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/annotation/unaryop.py pypy/dist/pypy/objspace/flow/operation.py pypy/dist/pypy/objspace/flow/specialcase.py pypy/dist/pypy/objspace/flow/test/test_model.py pypy/dist/pypy/objspace/flow/test/test_objspace.py Log: The flow objspace will now replace all calls to built-in functions in the known list with the corresponding space operation. So for example the flow graphs can no longer contain either a 'len' operation or a 'simple_call' to the built-in len; they always use the 'len' operation variant. This makes annotation/builtin.py more reasonable. Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Sun Apr 10 18:25:38 2005 @@ -17,50 +17,29 @@ def immutablevalue(x): return getbookkeeper().immutablevalue(x) -def builtin_len(s_obj): - return s_obj.len() - def builtin_range(*args): factory = getbookkeeper().getfactory(ListFactory) factory.generalize(SomeInteger()) # XXX nonneg=... return factory.create() -def builtin_pow(s_base, s_exponent, *args): - if s_base.knowntype is s_exponent.knowntype is int: - return SomeInteger() - else: - return SomeObject() - -def builtin_int(s_obj): # we can consider 'int' as a function - return s_obj.int() +def builtin_int(s_obj): + return SomeInteger() def restricted_uint(s_obj): # for r_uint return SomeInteger(nonneg=True, unsigned=True) -def builtin_chr(s_int): - return SomeChar() - -def builtin_ord(s_chr): - return s_chr.ord() +def builtin_float(s_obj): + return SomeFloat() -def builtin_id(o): - return SomeInteger() - -def builtin_abs(o): - return o.abs() +def builtin_long(s_obj): + return SomeObject() -def builtin_divmod(o1, o2): - return SomeTuple([SomeObject(), SomeObject()]) # XXX +def builtin_chr(s_int): + return SomeChar() def builtin_unicode(s_obj): return SomeString() -def builtin_float(s_obj): - return s_obj.float() - -def builtin_long(s_obj): - return s_obj.long() - def our_issubclass(cls1, cls2): """ we're going to try to be less silly in the face of old-style classes""" return cls2 is object or issubclass(cls1, cls2) @@ -94,35 +73,12 @@ s.knowntypedata = (variables, bk.valueoftype(typ)) return s -def builtin_issubclass(s_cls1, s_cls2): - if s_cls1.is_constant() and s_cls2.is_constant(): - return immutablevalue(issubclass(s_cls1.const, s_cls2.const)) - if hasattr(s_cls1, 'is_type_of'): - vars = s_cls1.is_type_of - annotator = getbookkeeper().annotator - return builtin_isinstance(annotator.binding(vars[0]), s_cls2, vars) - return SomeBool() - -def builtin_getattr(s_obj, s_attr, s_default=None): - if not s_attr.is_constant() or not isinstance(s_attr.const, str): - ansi_print("UN-RPYTHONIC-WARNING " + - '[%s] getattr(%r, %r) is not RPythonic enough' % (getbookkeeper().whereami(), - s_obj, s_attr), - esc="31") # RED - return SomeObject() - return s_obj.getattr(s_attr) - def builtin_hasattr(s_obj, s_attr): if not s_attr.is_constant() or not isinstance(s_attr.const, str): - ansi_print("UN-RPYTHONIC-WARNING " + - '[%s] hasattr(%r, %r) is not RPythonic enough' % (getbookkeeper().whereami(), - s_obj, s_attr), - esc="31") # RED + getbookkeeper().warning('hasattr(%r, %r) is not RPythonic enough' % + (s_obj, s_attr)) return SomeBool() -def builtin_hash(s_obj): - return SomeInteger() - def builtin_callable(s_obj): return SomeBool() @@ -131,39 +87,6 @@ return s_iterable return SomeObject() -def builtin_iter(s_obj): - return s_obj.iter() - -def builtin_type(s_obj, *moreargs): - if moreargs: - raise Exception, 'type() called with more than one argument' - if s_obj.is_constant(): - return immutablevalue(type(s_obj.const)) - r = SomeObject() - # hack info - bk = getbookkeeper() - fn, block, i = bk.position_key - annotator = bk.annotator - op = block.operations[i] - assert op.opname == "simple_call" - assert len(op.args) == 2 - assert op.args[0] == Constant(type) - assert annotator.binding(op.args[1]) == s_obj - r.is_type_of = [op.args[1]] - return r - -def builtin_str(s_obj): - return s_obj.str() - -def builtin_repr(s_obj): - return s_obj.repr() - -def builtin_hex(s_obj): - return s_obj.hex() - -def builtin_oct(s_obj): - return s_obj.oct() - def builtin_list(s_iterable): factory = getbookkeeper().getfactory(ListFactory) s_iter = s_iterable.iter() @@ -179,7 +102,7 @@ return factory.create() def builtin_apply(*stuff): - print "XXX ignoring apply%r" % (stuff,) + getbookkeeper.warning("ignoring apply%r" % (stuff,)) return SomeObject() def builtin_compile(*stuff): @@ -205,9 +128,6 @@ def exception_init(s_self, *args): pass # XXX check correctness of args, maybe -def builtin_bool(s_obj): - return s_obj.is_true() - def count(s_obj): return SomeInteger() Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Sun Apr 10 18:25:38 2005 @@ -20,7 +20,7 @@ def immutablevalue(x): return getbookkeeper().immutablevalue(x) -UNARY_OPERATIONS = set(['len', 'is_true', 'getattr', 'setattr', +UNARY_OPERATIONS = set(['len', 'is_true', 'getattr', 'setattr', 'hash', 'simple_call', 'call_args', 'str', 'repr', 'iter', 'next', 'invert', 'type', 'issubtype', 'pos', 'neg', 'nonzero', 'abs', 'hex', 'oct', @@ -32,7 +32,9 @@ class __extend__(SomeObject): - def type(obj): # XXX this should be unified with builtin_type + def type(obj, *moreargs): + if moreargs: + raise Exception, 'type() called with more than one argument' if obj.is_constant(): r = immutablevalue(obj.knowntype) else: @@ -48,7 +50,14 @@ return r def issubtype(obj, s_cls): - return builtin.builtin_issubclass(obj, s_cls) + if obj.is_constant() and s_cls.is_constant(): + return immutablevalue(issubclass(obj.const, s_cls.const)) + if hasattr(obj, 'is_type_of'): + vars = obj.is_type_of + annotator = getbookkeeper().annotator + return builtin.builtin_isinstance(annotator.binding(vars[0]), + s_cls, vars) + return SomeBool() def len(obj): return SomeInteger(nonneg=True) @@ -66,6 +75,9 @@ def nonzero(obj): return obj.is_true() + def hash(obj): + return SomeInteger() + def str(obj): return SomeString() @@ -97,6 +109,9 @@ # if the SomeObject is itself a constant, allow reading its attrs if obj.is_constant() and hasattr(obj.const, attr): return immutablevalue(getattr(obj.const, attr)) + else: + getbookkeeper().warning('getattr(%r, %r) is not RPythonic enough' % + (obj, s_attr)) return SomeObject() def bindcallables(obj, classdef): Modified: pypy/dist/pypy/objspace/flow/operation.py ============================================================================== --- pypy/dist/pypy/objspace/flow/operation.py (original) +++ pypy/dist/pypy/objspace/flow/operation.py Sun Apr 10 18:25:38 2005 @@ -8,6 +8,7 @@ FunctionByName = {} # dict {"operation_name": } OperationName = {} # dict {: "operation_name"} +Arity = {} # dict {"operation name": number of arguments} # ____________________________________________________________ @@ -18,6 +19,15 @@ t = type return t +def do_int(x): + return x.__int__() + +def do_float(x): + return x.__float__() + +def do_long(x): + return x.__long__() + def inplace_add(x, y): x += y return x @@ -99,6 +109,7 @@ Table = [ ('id', id), ('type', new_style_type), + ('type', type), ('issubtype', issubclass), ('repr', repr), ('str', str), @@ -116,9 +127,9 @@ ('ord', ord), ('divmod', divmod), ('pow', pow), - ('int', int), - ('float', float), - ('long', long), + ('int', do_int), + ('float', do_float), + ('long', do_long), ('inplace_add', inplace_add), ('inplace_sub', inplace_sub), ('inplace_mul', inplace_mul), @@ -159,5 +170,6 @@ # check that the result is complete for line in ObjSpace.MethodTable: name = line[0] + Arity[name] = line[2] assert name in FunctionByName setup() Modified: pypy/dist/pypy/objspace/flow/specialcase.py ============================================================================== --- pypy/dist/pypy/objspace/flow/specialcase.py (original) +++ pypy/dist/pypy/objspace/flow/specialcase.py Sun Apr 10 18:25:38 2005 @@ -3,6 +3,7 @@ from pypy.interpreter.error import OperationError from pypy.objspace.flow.objspace import UnwrapException from pypy.objspace.flow.model import Constant +from pypy.objspace.flow.operation import OperationName, Arity def sc_import(space, fn, args): @@ -13,11 +14,26 @@ space.unwrap(w_frm))) def sc_operator(space, fn, args): - # XXX do this more cleanly args_w, kwds_w = args.unpack() - assert kwds_w == {} - opname = fn.__name__.replace('__', '') - return space.do_operation(opname, *args_w) + assert kwds_w == {}, "should not call %r with keyword arguments" % (fn,) + opname = OperationName[fn] + if len(args_w) != Arity[opname]: + if opname == 'pow' and len(args_w) == 2: + args_w = args_w + [Constant(None)] + elif opname == 'getattr' and len(args_w) == 3: + return space.do_operation('simple_call', Constant(getattr), *args_w) + else: + raise Exception, "should call %r with exactly %d arguments" % ( + fn, Arity[opname]) + if space.builtins_can_raise_exceptions: + # in this mode, avoid constant folding and raise an implicit Exception + w_result = space.do_operation(opname, *args_w) + space.handle_implicit_exceptions([Exception]) + return w_result + else: + # in normal mode, completely replace the call with the underlying + # operation and its limited implicit exceptions semantic + return getattr(space, opname)(*args_w) def setup(space): @@ -26,8 +42,7 @@ # space.specialcases[fn] = sc_normalize_exception if space.do_imports_immediately: space.specialcases[__import__] = sc_import - for opname in ['lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_']: - opfunc = getattr(operator, opname, None) - if opfunc is None: - continue - space.specialcases[opfunc] = sc_operator + # turn calls to built-in functions to the corresponding operation, + # if possible + for fn in OperationName: + space.specialcases[fn] = sc_operator Modified: pypy/dist/pypy/objspace/flow/test/test_model.py ============================================================================== --- pypy/dist/pypy/objspace/flow/test/test_model.py (original) +++ pypy/dist/pypy/objspace/flow/test/test_model.py Sun Apr 10 18:25:38 2005 @@ -77,7 +77,7 @@ def test_loop(self): graph = self.getflow(self.loop) - assert all_operations(graph) == {'simple_call': 1, + assert all_operations(graph) == {'abs': 1, 'is_true': 1, 'sub': 1} Modified: pypy/dist/pypy/objspace/flow/test/test_objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/test/test_objspace.py (original) +++ pypy/dist/pypy/objspace/flow/test/test_objspace.py Sun Apr 10 18:25:38 2005 @@ -332,21 +332,24 @@ #__________________________________________________________ - def specialcases(): + def specialcases(x): import operator - operator.lt(2,3) - operator.le(2,3) + operator.lt(x,3) + operator.le(x,3) + operator.eq(x,3) + operator.ne(x,3) + operator.gt(x,3) + operator.ge(x,3) + is_operator(x,3) + operator.__lt__(x,3) + operator.__le__(x,3) + operator.__eq__(x,3) + operator.__ne__(x,3) + operator.__gt__(x,3) + operator.__ge__(x,3) + # the following ones are constant-folded operator.eq(2,3) - operator.ne(2,3) - operator.gt(2,3) - operator.ge(2,3) - is_operator(2,3) - operator.__lt__(2,3) - operator.__le__(2,3) - operator.__eq__(2,3) - operator.__ne__(2,3) operator.__gt__(2,3) - operator.__ge__(2,3) def test_specialcases(self): x = self.codetest(self.specialcases) @@ -357,7 +360,6 @@ assert op.opname in ['lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_'] assert len(op.args) == 2 - assert op.args[0].value == 2 assert op.args[1].value == 3 #__________________________________________________________ From arigo at codespeak.net Sun Apr 10 18:28:00 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 10 Apr 2005 18:28:00 +0200 (CEST) Subject: [pypy-svn] r10518 - pypy/dist/pypy/translator Message-ID: <20050410162800.5F72A27B71@code1.codespeak.net> Author: arigo Date: Sun Apr 10 18:28:00 2005 New Revision: 10518 Modified: pypy/dist/pypy/translator/geninterplevel.py Log: Bump geninterplevel version number to regenerate the graphs. This was very delicate to get right, so if there are bugs left, they won't be hidden by some old _interplevel_cache. Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Sun Apr 10 18:28:00 2005 @@ -41,7 +41,7 @@ import pypy # __path__ import py.path -GI_VERSION = '1.0' # bump this for substantial changes +GI_VERSION = '1.0.1' # bump this for substantial changes # ____________________________________________________________ def eval_helper(self, typename, expr): From pedronis at codespeak.net Mon Apr 11 15:32:48 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 11 Apr 2005 15:32:48 +0200 (CEST) Subject: [pypy-svn] r10530 - in pypy/dist/pypy/translator: . java/test Message-ID: <20050411133248.9ABC227B76@code1.codespeak.net> Author: pedronis Date: Mon Apr 11 15:32:48 2005 New Revision: 10530 Added: pypy/dist/pypy/translator/java/test/for_now_dont_test_javatrans.py - copied unchanged from r10528, pypy/dist/pypy/translator/java/test/test_javatrans.py Removed: pypy/dist/pypy/translator/java/test/test_javatrans.py Modified: pypy/dist/pypy/translator/gencl.py Log: quick fix for gencl disable translator/java testing (put it to rest for now) Modified: pypy/dist/pypy/translator/gencl.py ============================================================================== --- pypy/dist/pypy/translator/gencl.py (original) +++ pypy/dist/pypy/translator/gencl.py Mon Apr 11 15:32:48 2005 @@ -150,7 +150,15 @@ s = self.str result, (seq, start, end) = self.result, self.args print "(setq", s(result), "(python-slice", s(seq), s(start), s(end), "))" - + def op_pow(self): + s = self.str + result, (x,y,z) = self.result, self.args + print "(setq", s(result) + table = { + (int, int, type(None)): (lambda args: args[:2], "(expt %s %s)"), + } + self.gen.emit_typecase(table, x, y, z) + print ")" class GenCL: def __init__(self, fun, input_arg_types=[]): @@ -314,6 +322,9 @@ argtypes = tuple(map(self.get_type, args)) if argtypes in table: trans = table[argtypes] + if isinstance(trans, tuple): # (manip-args, code-template) + manip, trans = trans + argreprs = manip(argreprs) print trans % argreprs else: print "(cond" Deleted: /pypy/dist/pypy/translator/java/test/test_javatrans.py ============================================================================== --- /pypy/dist/pypy/translator/java/test/test_javatrans.py Mon Apr 11 15:32:48 2005 +++ (empty file) @@ -1,70 +0,0 @@ -import autopath, os -import py -from py.process import cmdexec -from pypy.tool.udir import udir -from pypy.translator.java.genjava import GenJava -from pypy.translator.test import snippet -from pypy.translator.translator import Translator - - -def setup_module(mod): - try: - py.path.local.sysfind('javac') - except py.error.ENOENT: - py.test.skip("javac not found") - - -class TestNoTypeCGenTestCase: - - objspacename = 'flow' - - def build_jfunc(self, func): - try: func = func.im_func - except AttributeError: pass - t = Translator(func) - t.simplify() - name = func.func_name - self.jdir = udir.mkdir(name) - self.gen = GenJava(self.jdir, t) - - def check(self, inputargs, expectedresult): - self.gen.gen_test_class(inputargs, expectedresult) - cwd = os.getcwd() - try: - os.chdir(str(self.jdir)) - cmdexec('javac *.java') - assert cmdexec('java test').strip() == 'OK' - finally: - os.chdir(cwd) - - def test_simple_func(self): - self.build_jfunc(snippet.simple_func) - self.check([123], 124) - - def test_if_then_else(self): - self.build_jfunc(snippet.if_then_else) - self.check([2,3,4], 3) - self.check([0,3,4], 4) - self.check([-1,3,4], 3) - - def test_two_plus_two(self): - self.build_jfunc(snippet.two_plus_two) - self.check([], 4) - - def test_sieve_of_eratosthenes(self): - self.build_jfunc(snippet.sieve_of_eratosthenes) - self.check([], 1028) - - def test_string(self): - def tstring(name): - return len("hello " + name) - self.build_jfunc(tstring) - self.check(["world"], 11) - - def DONT_test_list_append(self): - def tlistappend(): - l = [] - l.append(5) - return l[0] - self.build_jfunc(tlistappend) - self.check([], 5) From pedronis at codespeak.net Mon Apr 11 15:34:29 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 11 Apr 2005 15:34:29 +0200 (CEST) Subject: [pypy-svn] r10531 - in pypy/dist/pypy: objspace/std tool Message-ID: <20050411133429.2EC3F27B76@code1.codespeak.net> Author: pedronis Date: Mon Apr 11 15:34:28 2005 New Revision: 10531 Modified: pypy/dist/pypy/objspace/std/intobject.py pypy/dist/pypy/objspace/std/listobject.py pypy/dist/pypy/objspace/std/listsort.py pypy/dist/pypy/tool/rarithmetic.py Log: introduce lshift_ovfcheck to cope with 2.3/2.4 << differences move code to use ovfcheck and lshift_ovfcheck Modified: pypy/dist/pypy/objspace/std/intobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/intobject.py (original) +++ pypy/dist/pypy/objspace/std/intobject.py Mon Apr 11 15:34:28 2005 @@ -1,20 +1,12 @@ from pypy.objspace.std.objspace import * from pypy.objspace.std.noneobject import W_NoneObject -from pypy.tool.rarithmetic import r_int, LONG_BIT +from pypy.tool.rarithmetic import ovfcheck, ovfcheck_lshift, LONG_BIT """ -The implementation of integers is a bit difficult, -since integers are currently undergoing the change to turn -themselves into longs under overflow circumstances. -The restricted Python does not overflow or throws -exceptions. -The definitions in this file are fine, given that -restricted Python integers behave that way. -But for testing, the resticted stuff must be run -by CPython which has different behavior. -For that reason, I defined an r_int extension class -for native integers, which tries to behave as in -RPython, just for test purposes. +In order to have the same behavior running +on CPython, and after RPython translation we use ovfcheck +from rarithmetic to explicitly check for overflows, +something CPython does not do anymore. """ class W_IntObject(W_Object): @@ -22,7 +14,7 @@ def __init__(w_self, space, intval): W_Object.__init__(w_self, space) - w_self.intval = r_int(intval) + w_self.intval = intval def __repr__(w_self): """ representation for debugging purposes """ @@ -134,7 +126,7 @@ x = w_int1.intval y = w_int2.intval try: - z = x + y + z = ovfcheck(x + y) except OverflowError: raise FailedToImplement(space.w_OverflowError, space.wrap("integer addition")) @@ -144,7 +136,7 @@ x = w_int1.intval y = w_int2.intval try: - z = x - y + z = ovfcheck(x - y) except OverflowError: raise FailedToImplement(space.w_OverflowError, space.wrap("integer substraction")) @@ -154,7 +146,7 @@ x = w_int1.intval y = w_int2.intval try: - z = x * y + z = ovfcheck(x * y) except OverflowError: raise FailedToImplement(space.w_OverflowError, space.wrap("integer multiplication")) @@ -164,7 +156,7 @@ x = w_int1.intval y = w_int2.intval try: - z = x // y + z = ovfcheck(x // y) except ZeroDivisionError: raise OperationError(space.w_ZeroDivisionError, space.wrap("integer division by zero")) @@ -177,8 +169,8 @@ x = w_int1.intval y = w_int2.intval try: - z = x // y - t = x % y + z = ovfcheck(x // y) + t = ovfcheck(x % y) except ZeroDivisionError: raise OperationError(space.w_ZeroDivisionError, space.wrap("integer division by zero")) @@ -192,7 +184,7 @@ x = w_int1.intval y = w_int2.intval try: - z = x % y + z = ovfcheck(x % y) except ZeroDivisionError: raise OperationError(space.w_ZeroDivisionError, space.wrap("integer modulo by zero")) @@ -205,7 +197,7 @@ x = w_int1.intval y = w_int2.intval try: - z = x // y + z = ovfcheck(x // y) except ZeroDivisionError: raise OperationError(space.w_ZeroDivisionError, space.wrap("integer divmod by zero")) @@ -249,11 +241,11 @@ try: while iw > 0: if iw & 1: - ix = ix*temp + ix = ovfcheck(ix*temp) iw >>= 1 #/* Shift exponent down by 1 bit */ if iw==0: break - temp *= temp #/* Square the value of temp */ + temp = ovfcheck(temp*temp) #/* Square the value of temp */ if iz: #/* If we did a multiplication, perform a modulo */ ix = ix % iz; @@ -288,7 +280,7 @@ def neg__Int(space, w_int1): a = w_int1.intval try: - x = -a + x = ovfcheck(-a) except OverflowError: raise FailedToImplement(space.w_OverflowError, space.wrap("integer negation")) @@ -334,7 +326,7 @@ ## XXX also note that Python 2.3 returns a long and never raises ## OverflowError. try: - c = a << b + c = ovfcheck_lshift(a, b) ## the test in C code is ## if (a != Py_ARITHMETIC_RIGHT_SHIFT(long, c, b)) { ## if (PyErr_Warn(PyExc_FutureWarning, Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Mon Apr 11 15:34:28 2005 @@ -5,7 +5,7 @@ from pypy.objspace.std import slicetype from pypy.interpreter import gateway, baseobjspace -from pypy.tool.rarithmetic import r_int, r_uint +from pypy.tool.rarithmetic import r_uint from pypy.objspace.std.listsort import TimSort Modified: pypy/dist/pypy/objspace/std/listsort.py ============================================================================== --- pypy/dist/pypy/objspace/std/listsort.py (original) +++ pypy/dist/pypy/objspace/std/listsort.py Mon Apr 11 15:34:28 2005 @@ -1,3 +1,5 @@ +from pypy.tool.rarithmetic import ovfcheck, ovfcheck_lshift + ## ------------------------------------------------------------------------ ## Lots of code for an adaptive, stable, natural mergesort. There are many @@ -133,7 +135,8 @@ if lower(a.list[p + ofs], key): lastofs = ofs try: - ofs = (ofs << 1) + 1 + ofs = ovfcheck_lshift(ofs, 1) + ofs = ovfcheck(ofs + 1) except OverflowError: ofs = maxofs else: # key <= a[hint + ofs] @@ -156,7 +159,8 @@ # key <= a[hint - ofs] lastofs = ofs try: - ofs = (ofs << 1) + 1 + ofs = ovfcheck_lshift(ofs, 1) + ofs = ovfcheck(ofs + 1) except OverflowError: ofs = maxofs if ofs > maxofs: Modified: pypy/dist/pypy/tool/rarithmetic.py ============================================================================== --- pypy/dist/pypy/tool/rarithmetic.py (original) +++ pypy/dist/pypy/tool/rarithmetic.py Mon Apr 11 15:34:28 2005 @@ -12,6 +12,9 @@ back to a signed int value ovfcheck check on CPython whether the result of a signed integer operation did overflow +ovfcheck_lshift + << with oveflow checking + catering to 2.3/2.4 differences about << These are meant to be erased by translation, r_uint in the process should mark unsigned values, ovfcheck should @@ -173,7 +176,9 @@ if isinstance(r, long): raise OverflowError, "signed integer expression did overflow" return r - + +def ovfcheck_lshift(a, b): + return ovfcheck(int(long(a) << b)) class r_uint(long): """ fake unsigned integer implementation """ From pedronis at codespeak.net Mon Apr 11 18:22:31 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 11 Apr 2005 18:22:31 +0200 (CEST) Subject: [pypy-svn] r10538 - in pypy/dist/pypy: annotation tool translator/test Message-ID: <20050411162231.926E127B5F@code1.codespeak.net> Author: pedronis Date: Mon Apr 11 18:22:31 2005 New Revision: 10538 Added: pypy/dist/pypy/tool/unionfind.py (contents, props changed) Modified: pypy/dist/pypy/annotation/bookkeeper.py pypy/dist/pypy/annotation/unaryop.py pypy/dist/pypy/translator/test/test_annrpython.py Log: first stab at keeping track of the maximal pbc sets for getattr accesses. using a union-find datastructure (maybe it's overkill). ignore, rep, access = bookeper.pbc_maximal_access_sets.find(const_obj) will find the set and info for const_obj, access is an instance of PBCAccessSet in bookkeeper.py Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Mon Apr 11 18:22:31 2005 @@ -13,9 +13,22 @@ from pypy.interpreter.pycode import cpython_code_signature from pypy.interpreter.argument import ArgErr from pypy.tool.rarithmetic import r_uint +from pypy.tool.unionfind import UnionFind import inspect, new +class PBCAccessSet: + def __init__(self, obj): + self.objects = { obj: True } + self.read_locations = {} + self.attrs = {} + + def update(self, other): + self.objects.update(other.objects) + self.read_locations.update(other.read_locations) + self.attrs.update(other.attrs) + + class Bookkeeper: """The log of choices that have been made while analysing the operations. It ensures that the same 'choice objects' will be returned if we ask @@ -33,6 +46,9 @@ self.pbccache = {} self.pbctypes = {} self.seen_mutable = {} + + self.pbc_maximal_access_sets = UnionFind(PBCAccessSet) + # import ordering hack global BUILTIN_ANALYZERS from pypy.annotation.builtin import BUILTIN_ANALYZERS @@ -184,6 +200,34 @@ o.knowntype = t return o + def pbc_getattr(self, pbc, s_attr): + assert s_attr.is_constant() + attr = s_attr.const + + access_sets = self.pbc_maximal_access_sets + objects = pbc.prebuiltinstances.keys() + + change, rep, access = access_sets.find(objects[0]) + for obj in objects: + change1, rep, access = access_sets.union(rep, obj) + change = change or change1 + + access.attrs[attr] = True + position = self.position_key + access.read_locations[position] = True + + actuals = [] + + for c in access.objects: + if hasattr(c, attr): + actuals.append(self.immutablevalue(getattr(c, attr))) + + if change: + for position in access.read_locations: + self.annotator.reflowfromposition(position) + + return unionof(*actuals) + def pycall(self, func, args): if func is None: # consider None as a NULL function pointer return SomeImpossibleValue() Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Mon Apr 11 18:22:31 2005 @@ -298,17 +298,19 @@ def getattr(pbc, s_attr): bookkeeper = getbookkeeper() - assert s_attr.is_constant() - attr = s_attr.const - actuals = [] - for c in pbc.prebuiltinstances: - if hasattr(c, attr): - # force the attribute to be considered on the class - ##classdef = bookkeeper.getclassdef(new_or_old_class(c)) - ##classdef.find_attribute(attr).getvalue() - # but only return the more precise result getattr(c, attr) - actuals.append(immutablevalue(getattr(c, attr))) - return unionof(*actuals) + return bookkeeper.pbc_getattr(pbc, s_attr) + +## assert s_attr.is_constant() +## attr = s_attr.const +## actuals = [] +## for c in pbc.prebuiltinstances: +## if hasattr(c, attr): +## # force the attribute to be considered on the class +## ##classdef = bookkeeper.getclassdef(new_or_old_class(c)) +## ##classdef.find_attribute(attr).getvalue() +## # but only return the more precise result getattr(c, attr) +## actuals.append(immutablevalue(getattr(c, attr))) +## return unionof(*actuals) def setattr(pbc, s_attr, s_value): getbookkeeper().warning("setattr not wanted on %r" % (pbc,)) Added: pypy/dist/pypy/tool/unionfind.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/tool/unionfind.py Mon Apr 11 18:22:31 2005 @@ -0,0 +1,60 @@ + +# union-find impl, a info object is attached to the roots + +class UnionFind(object): + + def __init__(self, info_factory): + self.link_to_parent = {} + self.weight = {} + self.info_factory = info_factory + self.root_info = {} + + def find(self, obj): # -> new_root, obj, info + if obj not in self.link_to_parent: + info = self.root_info[obj] = self.info_factory(obj) + self.weight[obj] = 1 + self.link_to_parent[obj] = obj + return True, obj, info + + to_root = [obj] + parent = self.link_to_parent[obj] + while parent is not to_root[-1]: + to_root.append(parent) + parent = self.link_to_parent[parent] + + for obj in to_root: + self.link_to_parent[obj] = parent + + return False, parent, self.root_info[parent] + + + def union(self, obj1, obj2): # -> not_noop, rep, info + + new1, rep1, info1 = self.find(obj1) + new2, rep2, info2 = self.find(obj2) + + if rep1 is rep2: + return new1 or new2, rep1, info1 + + w1 = self.weight[rep1] + w2 = self.weight[rep2] + + w = w1 + w2 + + if w1 < w2: + rep1, rep2, info1, info2, = rep2, rep1, info2, info1 + + info1.update(info2) + + self.link_to_parent[rep2] = rep1 + + del self.weight[rep2] + del self.root_info[rep2] + + self.weight[rep1] = w + self.root_info[rep1] = info1 + + return True, rep1, info1 + + + Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Mon Apr 11 18:22:31 2005 @@ -724,6 +724,51 @@ s = a.build_types(f, [r_uint]) assert s == annmodel.SomeInteger(nonneg = True, unsigned = True) + def test_pbc_getattr(self): + class C: + def __init__(self, v1, v2): + self.v2 = v2 + self.v1 = v1 + + def _freeze_(self): + return True + + c1 = C(1,'a') + c2 = C(2,'b') + c3 = C(3,'c') + + def f1(l, c): + l.append(c.v1) + def f2(l, c): + l.append(c.v2) + + def g(): + l1 = [] + l2 = [] + f1(l1, c1) + f1(l1, c2) + f2(l2, c2) + f2(l2, c3) + return l1,l2 + + a = RPythonAnnotator() + s = a.build_types(g,[]) + l1, l2 = s.items + assert l1.s_item.knowntype == int + assert l2.s_item.knowntype == str + + ign, rep1,acc1 = a.bookkeeper.pbc_maximal_access_sets.find(c1) + ign, rep2,acc2 = a.bookkeeper.pbc_maximal_access_sets.find(c2) + ing, rep3,acc3 = a.bookkeeper.pbc_maximal_access_sets.find(c3) + + assert rep1 is rep2 is rep3 + assert acc1 is acc2 is acc3 + + assert len(acc1.objects) == 3 + assert acc1.attrs == {'v1': True, 'v2': True} + + + def g(n): return [0,1,2,n] From cfbolz at codespeak.net Tue Apr 12 02:45:00 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 12 Apr 2005 02:45:00 +0200 (CEST) Subject: [pypy-svn] r10539 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050412004500.C2A9B27B5F@code1.codespeak.net> Author: cfbolz Date: Tue Apr 12 02:45:00 2005 New Revision: 10539 Added: pypy/dist/pypy/objspace/std/test/test_longobject.py Modified: pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/objspace/std/longtype.py Log: Started a real implementation of longs using a list of r_uints. Addition, substraction and multiplication are implemented. Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Tue Apr 12 02:45:00 2005 @@ -3,38 +3,82 @@ from pypy.objspace.std.intobject import W_IntObject from pypy.objspace.std.floatobject import W_FloatObject from pypy.objspace.std.noneobject import W_NoneObject +from pypy.tool.rarithmetic import intmask, r_uint, LONG_MASK +from pypy.tool.rarithmetic import LONG_BIT + +import math + +SHORT_BIT = LONG_BIT // 2 +SHORT_MASK = LONG_MASK >> SHORT_BIT class W_LongObject(W_Object): - """This is a non-reimplementation of longs. - It uses real CPython longs. - XXX we must really choose another representation (e.g. list of ints) - XXX and implement it in detail. - """ + """This is a reimplementation of longs using a list of r_uints.""" + #All functions that still rely on the underlying Python's longs are marked + #with YYYYYY from pypy.objspace.std.longtype import long_typedef as typedef - def __init__(w_self, space, longval=0L): + def __init__(w_self, space, digits=None, sign=0): W_Object.__init__(w_self, space) - assert isinstance(longval, long) - w_self.longval = longval + if isinstance(digits, long): #YYYYYY + digits, sign = args_from_long(digits) + if digits is None: + w_self.digits = [r_uint(0)] + w_self.sign = 0 + else: + w_self.digits = digits + w_self.sign = sign + assert len(w_self.digits) != 0 or w_self.sign == 0 + + def longval(self): #YYYYYY + l = 0 + for d in self.digits[::-1]: + l = l << LONG_BIT + l += long(d) + return l * self.sign + + def unwrap(w_self): #YYYYYY + return w_self.longval() + + def _normalize(self): + i = len(self.digits) - 1 + while i != 0 and self.digits[i] == 0: + self.digits.pop(-1) + i -= 1 + + def _getshort(self, index): + a = self.digits[index // 2] + if index % 2 == 0: + return a & SHORT_MASK + else: + return a >> SHORT_BIT + + def _setshort(self, index, short): + a = self.digits[index // 2] + if index % 2 == 0: + self.digits[index // 2] = ((a >> SHORT_BIT) << SHORT_BIT) + short + else: + self.digits[index // 2] = (a & SHORT_MASK) + (short << SHORT_BIT) - def unwrap(w_self): - return w_self.longval -registerimplementation(W_LongObject) +registerimplementation(W_LongObject) + # bool-to-long def delegate_Bool2Long(w_bool): - return W_LongObject(w_bool.space, long(w_bool.boolval)) + return W_LongObject(w_bool.space, [r_uint(w_bool.boolval)], + int(w_bool.boolval)) # int-to-long delegation def delegate_Int2Long(w_intobj): - return W_LongObject(w_intobj.space, long(w_intobj.intval)) + sign = cmp(w_intobj.intval, 0) + return W_LongObject(w_intobj.space, + *args_from_long(long(w_intobj.intval))) # long-to-float delegation -def delegate_Long2Float(w_longobj): +def delegate_Long2Float(w_longobj): #YYYYYY try: - return W_FloatObject(w_longobj.space, float(w_longobj.longval)) + return W_FloatObject(w_longobj.space, float(w_longobj.longval())) except OverflowError: raise OperationError(w_longobj.space.w_OverflowError, w_longobj.space.wrap("long int too large to convert to float")) @@ -46,56 +90,59 @@ def long__Long(space, w_long1): if space.is_true(space.is_(space.type(w_long1), space.w_long)): return w_long1 - a = w_long1.longval - return W_LongObject(space, a) + digits = w_long1.digits + sign = w_long1.sign + return W_LongObject(space, digits, sign) def long__Int(space, w_intobj): - return W_LongObject(space, long(w_intobj.intval)) + sign = cmp(w_intobj.intval, 0) + return W_LongObject(space, [r_uint(w_intobj.intval)], sign) -def int__Long(space, w_value): - if -sys.maxint-1 <= w_value.longval <= sys.maxint: - return space.newint(int(w_value.longval)) +def int__Long(space, w_value): #YYYYYY + longval = w_value.longval() + if -sys.maxint-1 <= longval <= sys.maxint: + return space.newint(int(longval)) else: return w_value # 9999999999999L.__int__() == 9999999999999L -def float__Long(space, w_longobj): +def float__Long(space, w_longobj): #YYYYYY try: - return space.newfloat(float(w_longobj.longval)) + return space.newfloat(float(w_longobj.longval())) except OverflowError: raise OperationError(space.w_OverflowError, space.wrap("long int too large to convert to float")) -def long__Float(space, w_floatobj): - # XXX cheating - return W_LongObject(space, long(w_floatobj.floatval)) - -def int_w__Long(space, w_value): - if -sys.maxint-1 <= w_value.longval <= sys.maxint: - return int(w_value.longval) +def long__Float(space, w_floatobj): #YYYYYY + return W_LongObject(space, *args_from_long(long(w_floatobj.floatval))) + +def int_w__Long(space, w_value): #YYYYYY + longval = w_value.longval() + if -sys.maxint-1 <= longval <= sys.maxint: + return int(longval) else: raise OperationError(space.w_OverflowError, space.wrap("long int too large to convert to int")) -def repr__Long(space, w_long): - return space.wrap(repr(w_long.longval)) +def repr__Long(space, w_long): #YYYYYY + return space.wrap(repr(w_long.longval())) -def str__Long(space, w_long): - return space.wrap(str(w_long.longval)) +def str__Long(space, w_long): #YYYYYY + return space.wrap(str(w_long.longval())) -def eq__Long_Long(space, w_long1, w_long2): - i = w_long1.longval - j = w_long2.longval +def eq__Long_Long(space, w_long1, w_long2): #YYYYYY + i = w_long1.longval() + j = w_long2.longval() return space.newbool( i == j ) -def lt__Long_Long(space, w_long1, w_long2): - i = w_long1.longval - j = w_long2.longval +def lt__Long_Long(space, w_long1, w_long2): #YYYYYY + i = w_long1.longval() + j = w_long2.longval() return space.newbool( i < j ) -def hash__Long(space,w_value): +def hash__Long(space,w_value): #YYYYYY ## %reimplement% # real Implementation should be taken from _Py_HashDouble in object.c - return space.wrap(hash(w_value.longval)) + return space.wrap(hash(w_value.longval())) # coerce def coerce__Long_Long(space, w_long1, w_long2): @@ -103,76 +150,95 @@ def add__Long_Long(space, w_long1, w_long2): - x = w_long1.longval - y = w_long2.longval - z = x + y - return W_LongObject(space, z) + if w_long1.sign < 0: + if w_long2.sign < 0: + result = _x_add(w_long1, w_long2, space) + if result.sign != 0: + result.sign = -result.sign + else: + result = _x_sub(w_long2, w_long1, space) + else: + if w_long2.sign < 0: + result = _x_sub(w_long1, w_long2, space) + else: + result = _x_add(w_long1, w_long2, space) + result._normalize() + return result def sub__Long_Long(space, w_long1, w_long2): - x = w_long1.longval - y = w_long2.longval - z = x - y - return W_LongObject(space, z) + if w_long1.sign < 0: + if w_long2.sign < 0: + result = _x_sub(w_long1, w_long2, space) + else: + result = _x_add(w_long1, w_long2, space) + result.sign = -result.sign + else: + if w_long2.sign < 0: + result = _x_add(w_long1, w_long2, space) + else: + result = _x_sub(w_long1, w_long2, space) + result._normalize() + return result def mul__Long_Long(space, w_long1, w_long2): - x = w_long1.longval - y = w_long2.longval - z = x * y - return W_LongObject(space, z) - -def div__Long_Long(space, w_long1, w_long2): - x = w_long1.longval - y = w_long2.longval + result = _x_mul(w_long1, w_long2, space) + result.sign = w_long1.sign * w_long2.sign + return result + +def div__Long_Long(space, w_long1, w_long2): #YYYYYY + x = w_long1.longval() + y = w_long2.longval() if not y: raise OperationError(space.w_ZeroDivisionError, space.wrap("long division")) z = x / y - return W_LongObject(space, z) + return W_LongObject(space, *args_from_long(z)) -truediv__Long_Long = div__Long_Long +truediv__Long_Long = div__Long_Long #YYYYYY def floordiv__Long_Long(space, w_long1, w_long2): - x = w_long1.longval - y = w_long2.longval + x = w_long1.longval() + y = w_long2.longval() if not y: raise OperationError(space.w_ZeroDivisionError, space.wrap("long division")) z = x // y - return W_LongObject(space, z) + return W_LongObject(space, *args_from_long(z)) -def mod__Long_Long(space, w_long1, w_long2): - x = w_long1.longval - y = w_long2.longval +def mod__Long_Long(space, w_long1, w_long2): #YYYYYY + x = w_long1.longval() + y = w_long2.longval() if not y: raise OperationError(space.w_ZeroDivisionError, space.wrap("long modulo")) z = x % y - return W_LongObject(space, z) + return W_LongObject(space, *args_from_long(z)) -def divmod__Long_Long(space, w_long1, w_long2): - x = w_long1.longval - y = w_long2.longval +def divmod__Long_Long(space, w_long1, w_long2): #YYYYYY + x = w_long1.longval() + y = w_long2.longval() if not y: raise OperationError(space.w_ZeroDivisionError, space.wrap("long modulo")) z1, z2 = divmod(x, y) - return space.newtuple([W_LongObject(space, z1), - W_LongObject(space, z2)]) - -def pow__Long_Long_None(space, w_long1, w_long2, w_none3): - x = w_long1.longval - y = w_long2.longval + w_result1 = W_LongObject(space, *args_from_long(z1)) + w_result2 = W_LongObject(space, *args_from_long(z2)) + return space.newtuple([w_result1, w_result2]) + +def pow__Long_Long_None(space, w_long1, w_long2, w_none3): #YYYYYY + x = w_long1.longval() + y = w_long2.longval() if y < 0: return space.pow(space.float(w_long1), space.float(w_long2), space.w_None) z = x ** y - return W_LongObject(space, z) + return W_LongObject(space, *args_from_long(z)) -def pow__Long_Long_Long(space, w_long1, w_long2, w_long3): - x = w_long1.longval - y = w_long2.longval - z = w_long3.longval +def pow__Long_Long_Long(space, w_long1, w_long2, w_long3): #YYYYYY + x = w_long1.longval() + y = w_long2.longval() + z = w_long3.longval() try: t = pow(x, y, z) except TypeError, e: @@ -181,26 +247,27 @@ except ValueError, e: raise OperationError(space.w_ValueError, space.wrap(e.args[0])) - return W_LongObject(space, t) + return W_LongObject(space, *args_from_long(t)) def neg__Long(space, w_long1): - return W_LongObject(space, -w_long1.longval) + return W_LongObject(space, w_long1.digits[:], -w_long1.sign) def pos__Long(space, w_long): return long__Long(space, w_long) def abs__Long(space, w_long): - return W_LongObject(space, abs(w_long.longval)) + return W_LongObject(space, w_long.digits[:], abs(w_long.sign)) def nonzero__Long(space, w_long): - return space.newbool(w_long.longval != 0L) - -def invert__Long(space, w_long): - return W_LongObject(space, ~w_long.longval) + return space.newbool(w_long.sign != 0) -def lshift__Long_Long(space, w_long1, w_long2): - a = w_long1.longval - b = w_long2.longval +def invert__Long(space, w_long): #YYYYYY + z = ~w_long.longval() + return W_LongObject(space, *args_from_long(z)) + +def lshift__Long_Long(space, w_long1, w_long2): #YYYYYY + a = w_long1.longval() + b = w_long2.longval() if b < 0: raise OperationError(space.w_ValueError, space.wrap("negative shift count")) @@ -209,41 +276,41 @@ except OverflowError: # b too big raise OperationError(space.w_OverflowError, space.wrap("shift count too large")) - return W_LongObject(space, res) + return W_LongObject(space, *args_from_long(res)) -def rshift__Long_Long(space, w_long1, w_long2): - a = w_long1.longval - b = w_long2.longval +def rshift__Long_Long(space, w_long1, w_long2): #YYYYYY + a = w_long1.longval() + b = w_long2.longval() if b < 0: raise OperationError(space.w_ValueError, space.wrap("negative shift count")) res = a >> b - return W_LongObject(space, res) + return W_LongObject(space, *args_from_long(res)) -def and__Long_Long(space, w_long1, w_long2): - a = w_long1.longval - b = w_long2.longval +def and__Long_Long(space, w_long1, w_long2): #YYYYYY + a = w_long1.longval() + b = w_long2.longval() res = a & b - return W_LongObject(space, res) + return W_LongObject(space, *args_from_long(res)) -def xor__Long_Long(space, w_long1, w_long2): - a = w_long1.longval - b = w_long2.longval +def xor__Long_Long(space, w_long1, w_long2): #YYYYYY + a = w_long1.longval() + b = w_long2.longval() res = a ^ b - return W_LongObject(space, res) + return W_LongObject(space, *args_from_long(res)) -def or__Long_Long(space, w_long1, w_long2): - a = w_long1.longval - b = w_long2.longval +def or__Long_Long(space, w_long1, w_long2): #YYYYYY + a = w_long1.longval() + b = w_long2.longval() res = a | b - return W_LongObject(space, res) + return W_LongObject(space, *args_from_long(res)) -def oct__Long(space, w_long1): - x = w_long1.longval +def oct__Long(space, w_long1): #YYYYYY + x = w_long1.longval() return space.wrap(oct(x)) -def hex__Long(space, w_long1): - x = w_long1.longval +def hex__Long(space, w_long1): #YYYYYY + x = w_long1.longval() return space.wrap(hex(x)) @@ -285,3 +352,121 @@ StdObjSpace.MM.pow.register(pow_ovr__Int_Int_None, W_IntObject, W_IntObject, W_NoneObject, order=1) StdObjSpace.MM.pow.register(pow_ovr__Int_Int_Long, W_IntObject, W_IntObject, W_LongObject, order=1) + + +#Helper Functions +def args_from_long(l): #YYYYYY + if l < 0: + sign = -1 + elif l == 0: + sign = 0 + else: + sign = 1 + l *= sign + digits = [] + i = 0 + while l: + digits.append(r_uint(l & LONG_MASK)) + l = l >> LONG_BIT + return digits, sign + + +#Add the absolute values of two longs +def _x_add(a, b, space): + size_a = len(a.digits) + size_b = len(b.digits) + if size_a < size_b: + a, b = b, a + size_a, size_b = size_b, size_a + z = W_LongObject(space, [r_uint(0)] * (len(a.digits) + 1), 1) + i = 0 + carry = r_uint(0) + while i < size_b: + ad = a.digits[i] + s = ad + b.digits[i] + res = s + carry + carry = r_uint(res < s) + r_uint(s < ad) + z.digits[i] = res + i += 1 + while i < size_a: + s = a.digits[i] + carry = s + carry + z.digits[i] = carry + carry = r_uint(s > carry) + i += 1 + z.digits[i] = carry + return z + + +#Substract the absolute values of two longs +def _x_sub(a, b, space): + size_a = len(a.digits) + size_b = len(b.digits) + sign = 1 + i = 0 + if size_a < size_b: + sign = -1 + a, b = b, a + size_a, size_b = size_b, size_a + elif size_a == size_b: + i = size_a - 1; + while i > 0 and a.digits[i] == b.digits[i]: + i -= 1 + if (i == -1): + return W_LongObject(space) + if a.digits[i] < b.digits[i]: + sign = -1 + a, b = b, a + size_a = size_b = i + 1 + z = W_LongObject(space, [r_uint(0)] * len(a.digits), 1) + i = 0 + borrow = r_uint(0) + while i < size_b: + ad = a.digits[i] + s = ad - b.digits[i] + res = s - borrow + z.digits[i] = res + borrow = r_uint(res > s) + r_uint(s > ad) + i += 1 + while i < size_a: + ad = a.digits[i] + res = ad - borrow + borrow = r_uint(res > ad) + z.digits[i] = res + i += 1 + assert borrow == 0 + z.sign = sign + return z + + +#Multiply the absolute values of two longs +def _x_mul(a, b, space): + size_a = len(a.digits) * 2 + size_b = len(b.digits) * 2 + z = W_LongObject(space, [0] * ((size_a + size_b) // 2), 1) + i = 0 + while i < size_a: + carry = r_uint(0) + f = a._getshort(i) + j = 0 + while j < size_b: + carry += z._getshort(i + j) + b._getshort(j) * f + z._setshort(i + j, carry & SHORT_MASK) + carry = carry >> SHORT_BIT + j += 1 + while carry != 0: + assert i + j < size_a + size_b + carry += z._getshort(i + j) + z._setshort(i + j, carry & SHORT_MASK) + carry = carry >> SHORT_BIT + j += 1 + i += 1 + z._normalize() + return z + +def _inplace_divrem1(pout, pin, n): + rem = r_uint(0, space) + assert n > 0 and n <= SHORT_MASK + size = len(pin.digits) * 2 - 1 + while size >= 0: + rem = (rem << SHORT_BIT) + pin._getshort(size) Modified: pypy/dist/pypy/objspace/std/longtype.py ============================================================================== --- pypy/dist/pypy/objspace/std/longtype.py (original) +++ pypy/dist/pypy/objspace/std/longtype.py Tue Apr 12 02:45:00 2005 @@ -5,11 +5,11 @@ from pypy.interpreter.gateway import NoneNotWrapped def descr__new__(space, w_longtype, w_value=0, w_base=NoneNotWrapped): - from pypy.objspace.std.longobject import W_LongObject + from pypy.objspace.std.longobject import W_LongObject, args_from_long if w_base is None: # check for easy cases if isinstance(w_value, W_LongObject): - value = w_value.longval + value = w_value.longval() elif space.is_true(space.isinstance(w_value, space.w_str)): try: # XXX value can be unwrapped long @@ -48,14 +48,14 @@ except ValueError, e: raise OperationError(space.w_ValueError, space.wrap(e.args[0])) - +#XXX w_obj = space.allocate_instance(W_LongObject, w_longtype) - w_obj.__init__(space, value) + w_obj.__init__(space, *args_from_long(value)) return w_obj def descr__getnewargs__(space, w_obj): from pypy.objspace.std.longobject import W_LongObject - return space.newtuple([W_LongObject(space, w_obj.longval)]) + return space.newtuple([W_LongObject(space, w_obj.digits, w_obj.sign)]) # ____________________________________________________________ Added: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Tue Apr 12 02:45:00 2005 @@ -0,0 +1,51 @@ +import autopath +import sys +from random import random, randint +from pypy.objspace.std import longobject as lobj +from pypy.objspace.std.objspace import FailedToImplement + +objspacename = 'std' + +class TestW_LongObject: + + def test_add(self): + x = 123456789123456789000000L + y = 123858582373821923936744221L + for i in [-1, 1]: + for j in [-1, 1]: + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x * i)) + f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(y * j)) + result = lobj.add__Long_Long(self.space, f1, f2) + assert result.longval() == x * i + y * j + + def test_sub(self): + x = 12378959520302182384345L + y = 88961284756491823819191823L + for i in [-1, 1]: + for j in [-1, 1]: + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x * i)) + f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(y * j)) + result = lobj.sub__Long_Long(self.space, f1, f2) + assert result.longval() == x * i - y * j + + def test_mul(self): + x = -1238585838347L + y = 585839391919233L + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x)) + f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(y)) + result = lobj.mul__Long_Long(self.space, f1, f2) + assert result.longval() == x * y + + + +class AppTestLong: + def test_add(self): + assert int(123L + 12443L) == 123 + 12443 + assert -20 + 2 + 3L + True == -14 + + def test_sub(self): + assert int(58543L - 12332L) == 58543 - 12332 + assert 237123838281233L * 12 == 237123838281233L * 12L + + def test_mul(self): + assert 363L * 2 ** 40 == 363L << 40 From arigo at codespeak.net Tue Apr 12 12:28:51 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 12 Apr 2005 12:28:51 +0200 (CEST) Subject: [pypy-svn] r10540 - pypy/dist/pypy/translator/genc Message-ID: <20050412102851.21B2027B84@code1.codespeak.net> Author: arigo Date: Tue Apr 12 12:28:50 2005 New Revision: 10540 Modified: pypy/dist/pypy/translator/genc/t_tuple.py Log: Minor detail. Modified: pypy/dist/pypy/translator/genc/t_tuple.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_tuple.py (original) +++ pypy/dist/pypy/translator/genc/t_tuple.py Tue Apr 12 12:28:50 2005 @@ -58,10 +58,10 @@ return '\t'.join(result) def nameof(self, tup, debug=None): - genc = self.genc() try: return self.cnames[tup] except KeyError: + genc = self.genc() name = genc.namespace.uniquename('gtup') self.globaldecl.append('%s %s = {' % (self.structname, name)) lines = [] From arigo at codespeak.net Tue Apr 12 13:13:50 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 12 Apr 2005 13:13:50 +0200 (CEST) Subject: [pypy-svn] r10541 - pypy/dist/pypy/translator/genc Message-ID: <20050412111350.DEA2227B84@code1.codespeak.net> Author: arigo Date: Tue Apr 12 13:13:50 2005 New Revision: 10541 Modified: pypy/dist/pypy/translator/genc/funcdef.py pypy/dist/pypy/translator/genc/g_simple.h pypy/dist/pypy/translator/genc/t_pyobj.py pypy/dist/pypy/translator/genc/t_simple.py pypy/dist/pypy/translator/genc/t_tuple.py Log: Do the conversions differently in genc: instead of operations, they are now C function that the various types can define as they want. There is only a general 'conv_to_obj' and 'conv_from_obj' pair of operations that calls the correct C function. This is prompted by my attempts at implementing lists: list conversion requires loops, and you can't loop using flow operations. Modified: pypy/dist/pypy/translator/genc/funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc/funcdef.py (original) +++ pypy/dist/pypy/translator/genc/funcdef.py Tue Apr 12 13:13:50 2005 @@ -440,15 +440,15 @@ yield 'block%d:' % blocknum[block] to_release = list(block.inputargs) for op in block.operations: - args = [lazy(self.expr, v) for v in op.args] - res = self.expr(op.result) err = 'err%d_%d' % (blocknum[block], len(to_release)) macro = 'OP_%s' % op.opname.upper() meth = getattr(self, macro, None) if meth: - yield meth(args, res, err) + yield meth(op, err) else: - lst = [arg.compute() for arg in args] + [res, err] + lst = [self.expr(v) for v in op.args] + lst.append(self.expr(op.result)) + lst.append(err) yield '%s(%s)' % (macro, ', '.join(lst)) to_release.append(op.result) @@ -535,16 +535,18 @@ # the C preprocessor cannot handle operations taking a variable number # of arguments, so here are Python methods that do it - def OP_NEWLIST(self, args, r, err): - args = [arg.compute() for arg in args] + def OP_NEWLIST(self, op, err): + args = [self.expr(v) for v in op.args] + r = self.expr(op.result) if len(args) == 0: return 'OP_NEWLIST0(%s, %s)' % (r, err) else: args.insert(0, '%d' % len(args)) return 'OP_NEWLIST((%s), %s, %s)' % (', '.join(args), r, err) - def OP_NEWDICT(self, args, r, err): - args = [arg.compute() for arg in args] + def OP_NEWDICT(self, op, err): + args = [self.expr(v) for v in op.args] + r = self.expr(op.result) if len(args) == 0: return 'OP_NEWDICT0(%s, %s)' % (r, err) else: @@ -552,65 +554,50 @@ args.insert(0, '%d' % (len(args)//2)) return 'OP_NEWDICT((%s), %s, %s)' % (', '.join(args), r, err) - def OP_NEWTUPLE(self, args, r, err): - args = [arg.compute() for arg in args] + def OP_NEWTUPLE(self, op, err): + args = [self.expr(v) for v in op.args] + r = self.expr(op.result) args.insert(0, '%d' % len(args)) return 'OP_NEWTUPLE((%s), %s, %s)' % (', '.join(args), r, err) -## def fast_simple_call(self, args, r, err): -## # try to generate a SIMPLE_CALL using a shortcut: -## # a direct call to the ff_xxx() function, using its C signature. -## if USE_CALL_TRACE: -## return None -## target = args[0].args[0] -## args = [arg.compute() for arg in args[1:]] -## if not isinstance(target, Constant): -## return None -## if not isinstance(target.value, FunctionType): -## return None -## funcdef = self.genc.getfuncdef(target.value) -## if funcdef is None: -## return None -## if len(funcdef.graphargs) != len(args) or funcdef.vararg: -## return None -## return 'if (!(%s=%s(%s))) FAIL(%s);' % ( -## r, funcdef.fast_name, ', '.join(args), err) - - def OP_SIMPLE_CALL(self, args, r, err): -## result = self.fast_simple_call(args, r, err) -## if result is not None: -## return result -## # fall-back - args = [arg.compute() for arg in args] + def OP_SIMPLE_CALL(self, op, err): + args = [self.expr(v) for v in op.args] + r = self.expr(op.result) args.append('NULL') return 'OP_SIMPLE_CALL((%s), %s, %s)' % (', '.join(args), r, err) - def OP_CALL_ARGS(self, args, r, err): - args = [arg.compute() for arg in args] + def OP_CALL_ARGS(self, op, err): + args = [self.expr(v) for v in op.args] + r = self.expr(op.result) return 'OP_CALL_ARGS((%s), %s, %s)' % (', '.join(args), r, err) - def OP_DIRECT_CALL(self, args, r, err): - args = [arg.compute() for arg in args] + def OP_DIRECT_CALL(self, op, err): + args = [self.expr(v) for v in op.args] + r = self.expr(op.result) return '%s = %s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( r, args[0], ', '.join(args[1:]), err) - def OP_INCREF(self, args, r, err): - v, = args[0].args - return self.ctypeof(v).cincref(args[0].compute()) - - def OP_DECREF(self, args, r, err): - v, = args[0].args - return self.ctypeof(v).cdecref(args[0].compute()) + def OP_INCREF(self, op, err): + v = op.args[0] + return self.ctypeof(v).cincref(self.expr(v)) + + def OP_DECREF(self, op, err): + v = op.args[0] + return self.ctypeof(v).cdecref(self.expr(v)) + + def OP_CONV_TO_OBJ(self, op, err): + v = op.args[0] + convfnname = self.ctypeof(v).fn_conv_to_obj() + return '%s = %s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( + self.expr(op.result), convfnname, self.expr(v), err) -# ____________________________________________________________ + def OP_CONV_FROM_OBJ(self, op, err): + v = op.args[0] + convfnname = self.ctypeof(op.result).fn_conv_from_obj() + return '%s = %s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( + self.expr(op.result), convfnname, self.expr(v), err) -class lazy: - def __init__(self, fn, *args, **kwds): - self.fn = fn - self.args = args - self.kwds = kwds - def compute(self): - return self.fn(*self.args, **self.kwds) +# ____________________________________________________________ def dummy_wrapper(self, args, kwds): pass Modified: pypy/dist/pypy/translator/genc/g_simple.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_simple.h (original) +++ pypy/dist/pypy/translator/genc/g_simple.h Tue Apr 12 13:13:50 2005 @@ -3,12 +3,27 @@ /*** C header subsection: operations between ints ***/ -#define OP_INT2OBJ(i,r,err) if (!(r=PyInt_FromLong(i))) FAIL(err) -#define OP_OBJ2INT(o,r,err) if ((r=PyInt_AsLong(o))==-1 && PyErr_Occurred()) \ - FAIL(err) +static PyObject* PyNone_FromInt(int x) +{ + Py_INCREF(Py_None); + return Py_None; +} + +static int PyNone_AsInt(PyObject* o) +{ + if (o != Py_None) { + PyErr_SetString(PyExc_TypeError, "None expected"); + return -1; + } + return 0; +} + +static PyObject* PyObject_SameObject(PyObject* obj) +{ + Py_INCREF(obj); + return obj; +} -#define OP_NONE2OBJ(n,r,err) r = Py_None; Py_INCREF(r); -#define OP_OBJ2NONE(o,n,err) assert(o == Py_None); n = 0; #define OP_INT_IS_TRUE(x,r,err) r = (x != 0); Modified: pypy/dist/pypy/translator/genc/t_pyobj.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_pyobj.py (original) +++ pypy/dist/pypy/translator/genc/t_pyobj.py Tue Apr 12 13:13:50 2005 @@ -463,6 +463,12 @@ del source return marshal.dumps(co) + def fn_conv_to_obj(self): + return "PyObject_SameObject" + + def fn_conv_from_obj(self): + return "PyObject_SameObject" + class CBorrowedPyObjectType(CType): ctypetemplate = 'PyObject *%s' Modified: pypy/dist/pypy/translator/genc/t_simple.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_simple.py (original) +++ pypy/dist/pypy/translator/genc/t_simple.py Tue Apr 12 13:13:50 2005 @@ -9,10 +9,10 @@ self.translator = translator def convert_to_obj(self, typer, v1, v2): - return [SpaceOperation(self.opname_conv_to_obj, [v1], v2)] + return [SpaceOperation("conv_to_obj", [v1], v2)] def convert_from_obj(self, typer, v1, v2): - return [SpaceOperation(self.opname_conv_from_obj, [v1], v2)] + return [SpaceOperation("conv_from_obj", [v1], v2)] def debugname(self): return self.__class__.__name__ @@ -39,20 +39,28 @@ error_return = '-1' ctypetemplate = 'int %s' s_annotation = SomeInteger() - opname_conv_to_obj = 'int2obj' - opname_conv_from_obj = 'obj2int' def nameof(self, v, debug=None): return '%d' % (v,) + def fn_conv_to_obj(self): + return 'PyInt_FromLong' + + def fn_conv_from_obj(self): + return 'PyInt_AsLong' + class CNoneType(CType): error_return = '-1' ctypetemplate = 'int %s' s_annotation = SomePBC({None: True}) - opname_conv_to_obj = 'none2obj' - opname_conv_from_obj = 'obj2none' def nameof(self, v, debug=None): assert v is None return '0' + + def fn_conv_to_obj(self): + return 'PyNone_FromInt' + + def fn_conv_from_obj(self): + return 'PyNone_AsInt' Modified: pypy/dist/pypy/translator/genc/t_tuple.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_tuple.py (original) +++ pypy/dist/pypy/translator/genc/t_tuple.py Tue Apr 12 13:13:50 2005 @@ -18,6 +18,8 @@ self.error_return = self.structname.replace(' ', '_err_') self.cnames = {} self.globaldecl = [] + self._conv_to_obj = None + self._conv_from_obj = None def debugname(self): # a nice textual name for debugging... @@ -72,42 +74,73 @@ self.cnames[tup] = name return name - def convert_to_obj(self, typer, v1, v2): - TPyObj = typer.TPyObject - TNone = typer.TNone - TInt = typer.TInt - pyobjitems_v = [] - for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): - # read the ith field out of the "struct" tuple - vitem = Variable() - yield typer.typed_op(SpaceOperation('tuple_getitem', - [v1, Constant(i)], vitem), # args, retval - [self, TInt ], ct ) # arg_t, ret_t - yield typer.incref_op(vitem) - pyobjitems_v.append(vitem) - # create a new PyTupleObject with these values - # note that typed_op() will insert the conversion of vitem if needed - yield typer.typed_op(SpaceOperation('newtuple', - pyobjitems_v, v2), # args, retval - [TPyObj]*len(pyobjitems_v), TPyObj) # arg_t, ret_t - - def convert_from_obj(self, typer, v1, v2): - TPyObj = typer.TPyObject - TNone = typer.TNone - TInt = typer.TInt - yield typer.typed_op(SpaceOperation('tuple_new', [], v2), - [], self) - for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): - # read the ith field out of the PyTupleObject - vitem = Variable() - yield typer.typed_op(SpaceOperation('pytuple_getitem', - [v1, Constant(i)], vitem), # args, retval - [TPyObj, TInt ], TPyObj) # arg_t, ret_t - yield typer.incref_op(vitem) - # store it into the "struct" tuple - # note that typed_op() will insert the conversion of vitem if needed - v0 = Variable() - yield typer.typed_op(SpaceOperation('tuple_setitem', - [v2, Constant(i), vitem], v0), # args, ret - [self, TInt, ct ], TNone) # a_t, r_t - yield typer.incref_op(vitem) + def fn_conv_to_obj(self): + if self._conv_to_obj is None: + # build a function that converts from our custom struct + # format to a full-blown PyTupleObject. + self._conv_to_obj = self.structname.replace(' ', '_to_obj_') + self.globaldecl += [ + "static PyObject* %s(%s tup)" % (self._conv_to_obj, + self.structname), + "{", + "\tPyObject* o;", + "\tPyObject* result = PyTuple_New(%d);" % len(self.itemtypes), + "\tif (result == NULL) goto err;", + ] + for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): + self.globaldecl += [ + "\to = %s(tup.f%d);" % (ct.fn_conv_to_obj(), i), + "\tif (o == NULL) goto err;", + "\tPyTuple_SET_ITEM(result, %d, o);" % i, + ] + self.globaldecl += [ + "\treturn result;", + " err:", + "\tPy_XDECREF(result);", + "\treturn NULL;", + "}", + ] + return self._conv_to_obj + + def fn_conv_from_obj(self): + if self._conv_from_obj is None: + # build a function that decodes a PyTupleObject and store it + # into our custom struct format. + self._conv_from_obj = self.structname.replace(' ', '_from_obj_') + self.globaldecl += [ + "static %s %s(PyObject* obj)" % (self.structname, + self._conv_from_obj), + "{", + "\t%s result;" % self.structname, + "\tif (PyTuple_Size(obj) != %d) { /* also if not a tuple */" % + len(self.itemtypes), + "\t\tPyErr_SetString(PyExc_TypeError,", + '\t\t\t"tuple of length %d expected");' % len(self.itemtypes), + "\t\tgoto err0;", + "\t}", + ] + for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): + self.globaldecl += [ + "\tresult.f%d = %s(PyTuple_GET_ITEM(obj, %d));" % ( + i, ct.fn_conv_from_obj(), i), + "\tif (PyErr_Occurred()) goto err%d;" % i, + ] + self.globaldecl += [ + "\treturn result;", + ] + # errors may occur in the middle of the construction of the struct, + # we must decref only the fields that have been successfully built + # so far... + errlabels = range(len(self.itemtypes)) or [0] + errlabels.reverse() + for i in errlabels: + self.globaldecl.append(" err%d:" % i) + if i > 0: + cdecref = self.itemtypes[i-1].cdecref('result.f%d' % (i-1)) + if cdecref: + self.globaldecl.append('\t' + cdecref) + self.globaldecl += [ + "\treturn %s;" % self.error_return, + "}", + ] + return self._conv_from_obj From arigo at codespeak.net Tue Apr 12 14:39:26 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 12 Apr 2005 14:39:26 +0200 (CEST) Subject: [pypy-svn] r10542 - pypy/dist/pypy/translator/genc Message-ID: <20050412123926.9F25A27B84@code1.codespeak.net> Author: arigo Date: Tue Apr 12 14:39:26 2005 New Revision: 10542 Modified: pypy/dist/pypy/translator/genc/t_tuple.py Log: Minor detail. Modified: pypy/dist/pypy/translator/genc/t_tuple.py ============================================================================== --- pypy/dist/pypy/translator/genc/t_tuple.py (original) +++ pypy/dist/pypy/translator/genc/t_tuple.py Tue Apr 12 14:39:26 2005 @@ -85,7 +85,7 @@ "{", "\tPyObject* o;", "\tPyObject* result = PyTuple_New(%d);" % len(self.itemtypes), - "\tif (result == NULL) goto err;", + "\tif (result == NULL) return NULL;", ] for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): self.globaldecl += [ @@ -96,7 +96,7 @@ self.globaldecl += [ "\treturn result;", " err:", - "\tPy_XDECREF(result);", + "\tPy_DECREF(result);", "\treturn NULL;", "}", ] From cfbolz at codespeak.net Tue Apr 12 15:04:08 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 12 Apr 2005 15:04:08 +0200 (CEST) Subject: [pypy-svn] r10545 - in pypy/dist/pypy/tool: . test Message-ID: <20050412130408.E5C6227B84@code1.codespeak.net> Author: cfbolz Date: Tue Apr 12 15:04:08 2005 New Revision: 10545 Modified: pypy/dist/pypy/tool/rarithmetic.py pypy/dist/pypy/tool/test/test_rarithmetic.py Log: Fixed implementation of r_uint.__int__ Modified: pypy/dist/pypy/tool/rarithmetic.py ============================================================================== --- pypy/dist/pypy/tool/rarithmetic.py (original) +++ pypy/dist/pypy/tool/rarithmetic.py Tue Apr 12 15:04:08 2005 @@ -190,7 +190,7 @@ def __int__(self): if self < LONG_TEST: - return int(self) + return long.__int__(self) else: return intmask(self) Modified: pypy/dist/pypy/tool/test/test_rarithmetic.py ============================================================================== --- pypy/dist/pypy/tool/test/test_rarithmetic.py (original) +++ pypy/dist/pypy/tool/test/test_rarithmetic.py Tue Apr 12 15:04:08 2005 @@ -117,6 +117,7 @@ def test_back_to_int(self): assert int(r_uint(-1)) == -1 + assert int(r_uint(1)) == 1 def unary_test(self, f): for arg in (0, 3, 12345): From cfbolz at codespeak.net Tue Apr 12 15:19:00 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 12 Apr 2005 15:19:00 +0200 (CEST) Subject: [pypy-svn] r10546 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050412131900.86ACE27B57@code1.codespeak.net> Author: cfbolz Date: Tue Apr 12 15:19:00 2005 New Revision: 10546 Modified: pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/objspace/std/test/test_longobject.py Log: Some more real implementations for long functions: pow__Long_Long_Long pow__Long_Long_None lt__Long_Long eq__Long_Long Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Tue Apr 12 15:19:00 2005 @@ -71,9 +71,14 @@ # int-to-long delegation def delegate_Int2Long(w_intobj): - sign = cmp(w_intobj.intval, 0) - return W_LongObject(w_intobj.space, - *args_from_long(long(w_intobj.intval))) + if w_intobj.intval < 0: + sign = -1 + elif w_intobj.intval > 0: + sign = 1 + else: + sign = 0 + digits = [r_uint(abs(w_intobj.intval))] + return W_LongObject(w_intobj.space, digits, sign) # long-to-float delegation def delegate_Long2Float(w_longobj): #YYYYYY @@ -95,13 +100,18 @@ return W_LongObject(space, digits, sign) def long__Int(space, w_intobj): - sign = cmp(w_intobj.intval, 0) - return W_LongObject(space, [r_uint(w_intobj.intval)], sign) + if w_intobj.intval < 0: + sign = -1 + elif w_intobj.intval > 0: + sign = 1 + else: + sign = 0 + return W_LongObject(space, [r_uint(abs(w_intobj.intval))], sign) -def int__Long(space, w_value): #YYYYYY - longval = w_value.longval() - if -sys.maxint-1 <= longval <= sys.maxint: - return space.newint(int(longval)) +def int__Long(space, w_value): + if (len(w_value.digits) == 1 and + w_value.digits[0] & (r_uint(1) << LONG_BIT) == 0): + return space.newint(int(w_value.digits[0]) * w_value.sign) else: return w_value # 9999999999999L.__int__() == 9999999999999L @@ -115,10 +125,10 @@ def long__Float(space, w_floatobj): #YYYYYY return W_LongObject(space, *args_from_long(long(w_floatobj.floatval))) -def int_w__Long(space, w_value): #YYYYYY - longval = w_value.longval() - if -sys.maxint-1 <= longval <= sys.maxint: - return int(longval) +def int_w__Long(space, w_value): + if (len(w_value.digits) == 1 and + w_value.digits[0] & (r_uint(1) << LONG_BIT) == 0): + return int(w_value.digits[0]) * w_value.sign else: raise OperationError(space.w_OverflowError, space.wrap("long int too large to convert to int")) @@ -129,15 +139,45 @@ def str__Long(space, w_long): #YYYYYY return space.wrap(str(w_long.longval())) -def eq__Long_Long(space, w_long1, w_long2): #YYYYYY - i = w_long1.longval() - j = w_long2.longval() - return space.newbool( i == j ) +def eq__Long_Long(space, w_long1, w_long2): + if (w_long1.sign != w_long2.sign or + len(w_long1.digits) != len(w_long2.digits)): + return space.newbool(False) + i = 0 + ld = len(w_long1.digits) + while i < ld: + if w_long1.digits[i] != w_long2.digits[i]: + return space.newbool(False) + i += 1 + return space.newbool(True) def lt__Long_Long(space, w_long1, w_long2): #YYYYYY - i = w_long1.longval() - j = w_long2.longval() - return space.newbool( i < j ) + if w_long1.sign > w_long2.sign: + return space.newbool(False) + if w_long1.sign < w_long2.sign: + return space.newbool(True) + ld1 = len(w_long1.digits) + ld2 = len(w_long2.digits) + if ld1 > ld2: + return space.newbool(False) + elif ld1 < ld2: + return space.newbool(True) + i = ld1 - 1 + while i >= 0: + d1 = w_long1.digits[i] + d2 = w_long2.digits[i] + if d1 < d2: + if w_long2.sign > 0: + return space.newbool(True) + else: + return space.newbool(False) + elif d1 > d2: + if w_long2.sign > 0: + return space.newbool(False) + else: + return space.newbool(True) + i -= 1 + return space.newbool(False) def hash__Long(space,w_value): #YYYYYY ## %reimplement% @@ -185,18 +225,16 @@ result.sign = w_long1.sign * w_long2.sign return result -def div__Long_Long(space, w_long1, w_long2): #YYYYYY +def truediv__Long_Long(space, w_long1, w_long2): #YYYYYY x = w_long1.longval() y = w_long2.longval() if not y: raise OperationError(space.w_ZeroDivisionError, space.wrap("long division")) z = x / y - return W_LongObject(space, *args_from_long(z)) + return space.newfloat(z) -truediv__Long_Long = div__Long_Long #YYYYYY - -def floordiv__Long_Long(space, w_long1, w_long2): +def floordiv__Long_Long(space, w_long1, w_long2): #YYYYYY x = w_long1.longval() y = w_long2.longval() if not y: @@ -205,6 +243,9 @@ z = x // y return W_LongObject(space, *args_from_long(z)) +div__Long_Long = floordiv__Long_Long #YYYYYY + + def mod__Long_Long(space, w_long1, w_long2): #YYYYYY x = w_long1.longval() y = w_long2.longval() @@ -225,29 +266,75 @@ w_result2 = W_LongObject(space, *args_from_long(z2)) return space.newtuple([w_result1, w_result2]) -def pow__Long_Long_None(space, w_long1, w_long2, w_none3): #YYYYYY - x = w_long1.longval() - y = w_long2.longval() - if y < 0: - return space.pow(space.float(w_long1), - space.float(w_long2), - space.w_None) - z = x ** y - return W_LongObject(space, *args_from_long(z)) +# helper for pow() #YYYYYY: still needs longval if second argument is negative +def _impl_long_long_pow(space, lv, lw, lz=None): + if lw.sign < 0: + if lz is not None: + raise OperationError(space.w_TypeError, + space.wrap("pow() 2nd argument " + "cannot be negative when 3rd argument specified")) + return space.pow(space.newfloat(float(lv.longval())), + space.newfloat(float(lw.longval())), + space.w_None) + if lz is not None: + if lz.sign == 0: + raise OperationError(space.w_ValueError, + space.wrap("pow() 3rd argument cannot be 0")) + result = W_LongObject(space, [r_uint(1)], 1) + if lw.sign == 0: + return result + if lz is not None: + temp = mod__Long_Long(space, lv, lz) + else: + temp = lv + i = 0 + #Treat the most significant digit specially to reduce multiplications + while i < len(lw.digits) - 1: + j = 0 + m = r_uint(1) + di = lw.digits[i] + while j < LONG_BIT: + if di & m: + result = mul__Long_Long(space, result, temp) + temp = mul__Long_Long(space, temp, temp) + if lz is not None: + result = mod__Long_Long(space, result, lz) + temp = mod__Long_Long(space, temp, lz) + m = m << 1 + j += 1 + i += 1 + m = r_uint(1) << (LONG_BIT - 1) + highest_set_bit = LONG_BIT + j = LONG_BIT - 1 + di = lw.digits[i] + while j >= 0: + if di & m: + highest_set_bit = j + break + m = m >> 1 + j -= 1 + assert highest_set_bit != LONG_BIT, "long not normalized" + j = 0 + m = r_uint(1) + while j <= highest_set_bit: + if di & m: + result = mul__Long_Long(space, result, temp) + temp = mul__Long_Long(space, temp, temp) + if lz is not None: + result = mod__Long_Long(space, result, lz) + temp = mod__Long_Long(space, temp, lz) + m = m << 1 + j += 1 + if lz: + result = mod__Long_Long(space, result, lz) + return result -def pow__Long_Long_Long(space, w_long1, w_long2, w_long3): #YYYYYY - x = w_long1.longval() - y = w_long2.longval() - z = w_long3.longval() - try: - t = pow(x, y, z) - except TypeError, e: - raise OperationError(space.w_TypeError, - space.wrap(e.args[0])) - except ValueError, e: - raise OperationError(space.w_ValueError, - space.wrap(e.args[0])) - return W_LongObject(space, *args_from_long(t)) + +def pow__Long_Long_Long(space, w_long1, w_long2, w_long3): + return _impl_long_long_pow(space, w_long1, w_long2, w_long3) + +def pow__Long_Long_None(space, w_long1, w_long2, w_long3): + return _impl_long_long_pow(space, w_long1, w_long2, None) def neg__Long(space, w_long1): return W_LongObject(space, w_long1.digits[:], -w_long1.sign) @@ -358,16 +445,18 @@ def args_from_long(l): #YYYYYY if l < 0: sign = -1 - elif l == 0: - sign = 0 - else: + elif l > 0: sign = 1 - l *= sign + else: + sign = 0 + l = abs(l) digits = [] i = 0 while l: digits.append(r_uint(l & LONG_MASK)) l = l >> LONG_BIT + if sign == 0: + digits = [0] return digits, sign Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_longobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Tue Apr 12 15:19:00 2005 @@ -36,12 +36,76 @@ result = lobj.mul__Long_Long(self.space, f1, f2) assert result.longval() == x * y + def test_eq(self): + x = 5858393919192332223L + y = 585839391919233111223311112332L + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x)) + f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(-x)) + f3 = lobj.W_LongObject(self.space, *lobj.args_from_long(y)) + assert self.space.is_true(lobj.eq__Long_Long(self.space, f1, f1)) + assert self.space.is_true(lobj.eq__Long_Long(self.space, f2, f2)) + assert self.space.is_true(lobj.eq__Long_Long(self.space, f3, f3)) + assert not self.space.is_true(lobj.eq__Long_Long(self.space, f1, f2)) + assert not self.space.is_true(lobj.eq__Long_Long(self.space, f1, f3)) + + def test_lt(self): + def gen_signs(l): + for s in l: + if s == 0: + yield s + else: + yield s + yield -s + val = [0, 0x111111111111, 0x111111111112, 0x111111111112FFFF] + for x in gen_signs(val): + for y in gen_signs(val): + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x)) + f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(y)) + assert (x < y) == self.space.is_true( + lobj.lt__Long_Long(self.space, f1, f2)) + + def test_int_conversion(self): + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(12332)) + f2 = lobj.delegate_Int2Long(self.space.newint(12332)) + assert f2.longval() == f1.longval() + assert lobj.int__Long(self.space, f2).intval == 12332 + assert lobj.int_w__Long(self.space, f2) == 12332 + assert lobj.long__Int(self.space, self.space.wrap(42)).longval() == 42 + assert lobj.long__Int(self.space, self.space.wrap(-42)).longval() == -42 + + def test_pow_lll(self): + x = 10L + y = 2L + z = 13L + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x)) + f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(y)) + f3 = lobj.W_LongObject(self.space, *lobj.args_from_long(z)) + v = lobj.pow__Long_Long_Long(self.space, f1, f2, f3) + assert v.longval() == pow(x, y, z) + f1, f2, f3 = [lobj.W_LongObject(self.space, *lobj.args_from_long(i)) + for i in (10L, -1L, 42L)] + self.space.raises_w(self.space.w_TypeError, + lobj.pow__Long_Long_Long, + self.space, f1, f2, f3) + f1, f2, f3 = [lobj.W_LongObject(self.space, *lobj.args_from_long(i)) + for i in (10L, 5L, 0L)] + self.space.raises_w(self.space.w_ValueError, + lobj.pow__Long_Long_Long, + self.space, f1, f2, f3) + + def test_pow_lln(self): + x = 10L + y = 2L + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x)) + f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(y)) + v = lobj.pow__Long_Long_None(self.space, f1, f2, self.space.w_None) + assert v.longval() == x ** y class AppTestLong: def test_add(self): assert int(123L + 12443L) == 123 + 12443 - assert -20 + 2 + 3L + True == -14 + assert -20 + 2 + 3L + True == -14L def test_sub(self): assert int(58543L - 12332L) == 58543 - 12332 @@ -49,3 +113,5 @@ def test_mul(self): assert 363L * 2 ** 40 == 363L << 40 + + From pedronis at codespeak.net Tue Apr 12 16:15:23 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 12 Apr 2005 16:15:23 +0200 (CEST) Subject: [pypy-svn] r10549 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050412141523.9EFC827B48@code1.codespeak.net> Author: pedronis Date: Tue Apr 12 16:15:23 2005 New Revision: 10549 Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/translator/test/test_annrpython.py Log: clarify isinstance(.,r_uint) with simple test warning for isinstance(.,long) but keep the old behavior special case ovfcheck and ovfcheck_lshift for annotation Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Tue Apr 12 16:15:23 2005 @@ -45,18 +45,27 @@ return cls2 is object or issubclass(cls1, cls2) def builtin_isinstance(s_obj, s_type, variables=None): - s = SomeBool() + r = SomeBool() if s_type.is_constant(): typ = s_type.const - # XXX bit of a hack: - if issubclass(typ, (int, long)): - typ = int - if s_obj.is_constant(): - s.const = isinstance(s_obj.const, typ) - elif our_issubclass(s_obj.knowntype, typ): - s.const = True - elif not our_issubclass(typ, s_obj.knowntype): - s.const = False + if typ == pypy.tool.rarithmetic.r_uint: + if s_obj.is_constant(): + r.const = isinstance(s_obj.const, typ) + else: + if s_obj.knowntype == int: + r.const = s_obj.unsigned + else: + if typ == long: + getbookkeeper().warning("isinstance(., long) is not RPython") + typ = int # XXX as we did before + assert not issubclass(typ, (int,long)) or typ == int, ( + "for integers only isinstance(.,int|r_uint) are supported") + if s_obj.is_constant(): + r.const = isinstance(s_obj.const, typ) + elif our_issubclass(s_obj.knowntype, typ): + r.const = True + elif not our_issubclass(typ, s_obj.knowntype): + r.const = False # XXX HACK HACK HACK # XXX HACK HACK HACK # XXX HACK HACK HACK @@ -70,8 +79,8 @@ variables = [op.args[1]] for variable in variables: assert bk.annotator.binding(variable) == s_obj - s.knowntypedata = (variables, bk.valueoftype(typ)) - return s + r.knowntypedata = (variables, bk.valueoftype(typ)) + return r def builtin_hasattr(s_obj, s_attr): if not s_attr.is_constant() or not isinstance(s_attr.const, str): @@ -137,6 +146,17 @@ def math_floor(x): return SomeObject() +def rarith_ovfcheck(s_obj): + if isinstance(s_obj, SomeInteger) and s_obj.unsigned: + getbookkeeper().warning("ovfcheck on unsigned") + return s_obj + +def rarith_ovfcheck_lshift(s_obj1, s_obj2): + if isinstance(s_obj, SomeInteger) and s_obj.unsigned: + getbookkeeper().warning("ovfcheck_lshift with unsigned") + return SomeInteger() + + # collect all functions import __builtin__ BUILTIN_ANALYZERS = {} @@ -145,8 +165,9 @@ original = getattr(__builtin__, name[8:]) BUILTIN_ANALYZERS[original] = value -BUILTIN_ANALYZERS[pypy.tool.rarithmetic.r_int] = builtin_int BUILTIN_ANALYZERS[pypy.tool.rarithmetic.r_uint] = restricted_uint +BUILTIN_ANALYZERS[pypy.tool.rarithmetic.ovfcheck] = rarith_ovfcheck +BUILTIN_ANALYZERS[pypy.tool.rarithmetic.ovfcheck_lshift] = rarith_ovfcheck_lshift BUILTIN_ANALYZERS[Exception.__init__.im_func] = exception_init # this one is needed otherwise when annotating assert in a test we may try to annotate # py.test AssertionError.__init__ . Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Tue Apr 12 16:15:23 2005 @@ -767,6 +767,16 @@ assert len(acc1.objects) == 3 assert acc1.attrs == {'v1': True, 'v2': True} + def test_isinstance_usigned(self): + from pypy.tool.rarithmetic import r_uint + def f(x): + return isinstance(x, r_uint) + def g(): + v = r_uint(1) + return f(v) + a = RPythonAnnotator() + s = a.build_types(g, []) + assert s.const == True From arigo at codespeak.net Tue Apr 12 16:26:42 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 12 Apr 2005 16:26:42 +0200 (CEST) Subject: [pypy-svn] r10551 - pypy/dist/pypy/translator/tool Message-ID: <20050412142642.B46AB27B56@code1.codespeak.net> Author: arigo Date: Tue Apr 12 16:26:42 2005 New Revision: 10551 Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py Log: Print the recorded error messages if importing a just-compiled module fails. Modified: pypy/dist/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/dist/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/dist/pypy/translator/tool/buildpyxmodule.py Tue Apr 12 16:26:42 2005 @@ -105,16 +105,16 @@ fdump = open("%s.errors" % modname, "w") fdump.write(data) fdump.close() + # XXX do we need to do some check on fout/ferr? + # XXX not a nice way to import a module + if debug: print "inserting path to sys.path", dirpath + sys.path.insert(0, '.') + if debug: print "import %(modname)s as testmodule" % locals() + exec "import %(modname)s as testmodule" % locals() + sys.path.pop(0) except: print data raise - # XXX do we need to do some check on fout/ferr? - # XXX not a nice way to import a module - if debug: print "inserting path to sys.path", dirpath - sys.path.insert(0, '.') - if debug: print "import %(modname)s as testmodule" % locals() - exec "import %(modname)s as testmodule" % locals() - sys.path.pop(0) finally: os.chdir(str(lastdir)) #if not debug: From arigo at codespeak.net Tue Apr 12 16:28:27 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 12 Apr 2005 16:28:27 +0200 (CEST) Subject: [pypy-svn] r10552 - pypy/dist/pypy/translator/genc Message-ID: <20050412142827.2379C27B56@code1.codespeak.net> Author: arigo Date: Tue Apr 12 16:28:26 2005 New Revision: 10552 Added: pypy/dist/pypy/translator/genc/basetype.py - copied, changed from r10541, pypy/dist/pypy/translator/genc/t_simple.py pypy/dist/pypy/translator/genc/func_template.h pypy/dist/pypy/translator/genc/functype.py - copied, changed from r10541, pypy/dist/pypy/translator/genc/t_func.py pypy/dist/pypy/translator/genc/int_include.h - copied, changed from r10541, pypy/dist/pypy/translator/genc/g_simple.h pypy/dist/pypy/translator/genc/inttype.py pypy/dist/pypy/translator/genc/none_include.h - copied, changed from r10541, pypy/dist/pypy/translator/genc/g_simple.h pypy/dist/pypy/translator/genc/nonetype.py pypy/dist/pypy/translator/genc/pyobj_include.h - copied, changed from r10541, pypy/dist/pypy/translator/genc/g_operation.h pypy/dist/pypy/translator/genc/pyobjtype.py - copied, changed from r10541, pypy/dist/pypy/translator/genc/t_pyobj.py pypy/dist/pypy/translator/genc/tuple_include.h - copied, changed from r10541, pypy/dist/pypy/translator/genc/g_struct.h pypy/dist/pypy/translator/genc/tupletype.py - copied, changed from r10542, pypy/dist/pypy/translator/genc/t_tuple.py Removed: pypy/dist/pypy/translator/genc/g_operation.h pypy/dist/pypy/translator/genc/g_simple.h pypy/dist/pypy/translator/genc/g_struct.h pypy/dist/pypy/translator/genc/t_func.py pypy/dist/pypy/translator/genc/t_pyobj.py pypy/dist/pypy/translator/genc/t_simple.py pypy/dist/pypy/translator/genc/t_tuple.py Modified: pypy/dist/pypy/translator/genc/ctyper.py pypy/dist/pypy/translator/genc/funcdef.py pypy/dist/pypy/translator/genc/g_include.h pypy/dist/pypy/translator/genc/g_support.h pypy/dist/pypy/translator/genc/genc.py Log: Yet another reorganisation. Looks a bit cleaner, with each type defined in a file xxxtype.py with a corresponding xxx_include.h (for generic operations) or xxx_template.h (with %s in it). Copied: pypy/dist/pypy/translator/genc/basetype.py (from r10541, pypy/dist/pypy/translator/genc/t_simple.py) ============================================================================== --- pypy/dist/pypy/translator/genc/t_simple.py (original) +++ pypy/dist/pypy/translator/genc/basetype.py Tue Apr 12 16:28:26 2005 @@ -1,4 +1,4 @@ -from pypy.annotation.model import SomeInteger, SomePBC +import os from pypy.objspace.flow.model import SpaceOperation from pypy.interpreter.miscutils import getthreadlocals @@ -8,12 +8,6 @@ def __init__(self, translator): self.translator = translator - def convert_to_obj(self, typer, v1, v2): - return [SpaceOperation("conv_to_obj", [v1], v2)] - - def convert_from_obj(self, typer, v1, v2): - return [SpaceOperation("conv_from_obj", [v1], v2)] - def debugname(self): return self.__class__.__name__ @@ -28,39 +22,10 @@ def collect_globals(self, genc): return [] - def cincref(self, expr): - return '' - - def cdecref(self, expr): - return '' - - -class CIntType(CType): - error_return = '-1' - ctypetemplate = 'int %s' - s_annotation = SomeInteger() - - def nameof(self, v, debug=None): - return '%d' % (v,) + # --- interface for ../typer.py --- - def fn_conv_to_obj(self): - return 'PyInt_FromLong' - - def fn_conv_from_obj(self): - return 'PyInt_AsLong' - - -class CNoneType(CType): - error_return = '-1' - ctypetemplate = 'int %s' - s_annotation = SomePBC({None: True}) - - def nameof(self, v, debug=None): - assert v is None - return '0' - - def fn_conv_to_obj(self): - return 'PyNone_FromInt' + def convert_to_obj(self, typer, v1, v2): + return [SpaceOperation("conv_to_obj", [v1], v2)] - def fn_conv_from_obj(self): - return 'PyNone_AsInt' + def convert_from_obj(self, typer, v1, v2): + return [SpaceOperation("conv_from_obj", [v1], v2)] Modified: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- pypy/dist/pypy/translator/genc/ctyper.py (original) +++ pypy/dist/pypy/translator/genc/ctyper.py Tue Apr 12 16:28:26 2005 @@ -6,10 +6,11 @@ from pypy.translator.typer import Specializer from pypy.objspace.flow.model import Constant, Variable, SpaceOperation from pypy.annotation.model import SomeInteger, SomePBC, SomeTuple -from pypy.translator.genc.t_pyobj import CPyObjectType -from pypy.translator.genc.t_simple import CIntType, CNoneType -from pypy.translator.genc.t_func import CFuncPtrType -from pypy.translator.genc.t_tuple import CTupleType +from pypy.translator.genc.pyobjtype import CPyObjectType +from pypy.translator.genc.inttype import CIntType +from pypy.translator.genc.nonetype import CNoneType +from pypy.translator.genc.functype import CFuncPtrType +from pypy.translator.genc.tupletype import CTupleType import types from pypy.interpreter.pycode import CO_VARARGS Added: pypy/dist/pypy/translator/genc/func_template.h ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/func_template.h Tue Apr 12 16:28:26 2005 @@ -0,0 +1,7 @@ + +/************************************************************/ + /*** C header template: function pointer %(typename)s ***/ + + +#define OP_INCREF_%(typename)s(x) /* nothing */ +#define OP_DECREF_%(typename)s(x) /* nothing */ Modified: pypy/dist/pypy/translator/genc/funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc/funcdef.py (original) +++ pypy/dist/pypy/translator/genc/funcdef.py Tue Apr 12 16:28:26 2005 @@ -6,9 +6,10 @@ from pypy.objspace.flow.model import last_exception, last_exc_value from pypy.translator.simplify import simplify_graph from pypy.translator.unsimplify import remove_direct_loops -from pypy.translator.genc.t_simple import CIntType, CNoneType -from pypy.translator.genc.t_func import CFuncPtrType -from pypy.translator.genc.t_pyobj import CBorrowedPyObjectType +from pypy.translator.genc.inttype import CIntType +from pypy.translator.genc.nonetype import CNoneType +from pypy.translator.genc.functype import CFuncPtrType +from pypy.translator.genc.pyobjtype import CBorrowedPyObjectType from pypy.interpreter.pycode import CO_VARARGS from pypy.tool.compile import compile2 from types import FunctionType @@ -77,10 +78,9 @@ if USE_CALL_TRACE: declare_fast_args.insert(0, 'TRACE_ARGS') declare_fast_args = ', '.join(declare_fast_args) or 'void' - name_and_arguments = '%s(%s)' % (self.fast_name, declare_fast_args) ctret = self.ctypeof(graph.getreturnvar()) - fast_function_header = 'static ' + ( - ctret.ctypetemplate % (name_and_arguments,)) + fast_function_header = 'static %s %s(%s)' % ( + ctret.typename, self.fast_name, declare_fast_args) # store misc. information self.fast_function_header = fast_function_header @@ -118,7 +118,7 @@ def decl(self, v): assert isinstance(v, Variable) ct = self.ctypeof(v) - return ct.ctypetemplate % (self.localscope.localname(v.name),) + return '%s %s' % (ct.typename, self.localscope.localname(v.name)) def expr(self, v): if isinstance(v, Variable): @@ -275,7 +275,7 @@ else: convert_from_obj = ct.opname_conv_from_obj # simple conv only! convertedname = numberedname.replace('o', 'a') - print >> f, '\t%s;' % (ct.ctypetemplate % (convertedname,)) + print >> f, '\t%s %s;' % (ct.typename, convertedname) conversions.append('\tOP_%s(%s, %s, type_error)' % ( convert_from_obj.upper(), numberedname, convertedname)) # XXX successfully converted objects may need to be decrefed @@ -288,7 +288,7 @@ footer = None else: convert_to_obj = ct.opname_conv_to_obj # simple conv only for now! - print >> f, '\t%s;' % (ct.ctypetemplate % ('aret',)) + print >> f, '\t%s aret;' % (ct.typename,) putresultin = 'aret' footer = 'OP_%s(aret, oret, type_error)' % convert_to_obj.upper() print >> f @@ -371,9 +371,7 @@ # generate an incref for each input argument for a in self.graphargs: - line = self.ctypeof(a).cincref(self.expr(a)) - if line: - print >> f, '\t' + line + print >> f, '\t' + self.cincref(a) # print the body for line in body: @@ -417,14 +415,10 @@ ct1 = self.ctypeof(a1) ct2 = self.ctypeof(a2) assert ct1 == ct2 - line2 = ct1.cincref(self.expr(a2)) - if line2: - line += '\t' + line2 + line += '\t' + self.cincref(a2) yield line for v in has_ref: - line = self.ctypeof(v).cdecref(linklocalvars[v]) - if line: - yield line + yield self.cdecref(v, linklocalvars[v]) yield 'goto block%d;' % blocknum[link.target] # collect all blocks @@ -522,9 +516,7 @@ while to_release: v = to_release.pop() if err_reachable: - line = self.ctypeof(v).cdecref(self.expr(v)) - if line: - yield line + yield self.cdecref(v) yield 'err%d_%d:' % (blocknum[block], len(to_release)) err_reachable = True if err_reachable: @@ -577,25 +569,29 @@ return '%s = %s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( r, args[0], ', '.join(args[1:]), err) - def OP_INCREF(self, op, err): - v = op.args[0] - return self.ctypeof(v).cincref(self.expr(v)) - - def OP_DECREF(self, op, err): - v = op.args[0] - return self.ctypeof(v).cdecref(self.expr(v)) - def OP_CONV_TO_OBJ(self, op, err): v = op.args[0] - convfnname = self.ctypeof(v).fn_conv_to_obj() - return '%s = %s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( - self.expr(op.result), convfnname, self.expr(v), err) + return '%s = CONV_TO_OBJ_%s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( + self.expr(op.result), self.ctypeof(v).typename, self.expr(v), err) def OP_CONV_FROM_OBJ(self, op, err): v = op.args[0] - convfnname = self.ctypeof(op.result).fn_conv_from_obj() - return '%s = %s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( - self.expr(op.result), convfnname, self.expr(v), err) + return '%s = CONV_FROM_OBJ_%s(%s); if (PyErr_Occurred()) FAIL(%s)' %( + self.expr(op.result), self.ctypeof(op.result).typename, + self.expr(v), err) + + def OP_INCREF(self, op, err): + return self.cincref(op.args[0]) + + def OP_DECREF(self, op, err): + return self.cdecref(op.args[0]) + + def cincref(self, v): + return 'OP_INCREF_%s(%s)' % (self.ctypeof(v).typename, self.expr(v)) + + def cdecref(self, v, expr=None): + return 'OP_DECREF_%s(%s)' % (self.ctypeof(v).typename, + expr or self.expr(v)) # ____________________________________________________________ Copied: pypy/dist/pypy/translator/genc/functype.py (from r10541, pypy/dist/pypy/translator/genc/t_func.py) ============================================================================== --- pypy/dist/pypy/translator/genc/t_func.py (original) +++ pypy/dist/pypy/translator/genc/functype.py Tue Apr 12 16:28:26 2005 @@ -1,23 +1,18 @@ -from pypy.translator.genc.t_simple import CType +from __future__ import generators +from pypy.translator.genc.basetype import CType class CFuncPtrType(CType): error_return = 'NULL' + Counter = 0 + def __init__(self, translator, argtypes, returntype): super(CFuncPtrType, self).__init__(translator) self.argtypes = argtypes self.returntype = returntype - # build a type declaration template matching the strange C syntax - # for function pointer types: - # (*) () - # which becomes funny when itself is a complex type; - # in that case, the whole rest of the line, i.e. the "(*..)(...)", - # is what should be inserted into the returntype's "%s". - arglist = [ct.ctypetemplate % ('',) for ct in argtypes] - argtemplate = ', '.join(arglist or ['void']) - header = '(*%s)(' + argtemplate + ')' - self.ctypetemplate = returntype.ctypetemplate % (header,) + self.typename = 'funcptr%d' % CFuncPtrType.Counter + CFuncPtrType.Counter += 1 def debugname(self): # a nice textual name for debugging... @@ -27,3 +22,16 @@ def nameof(self, func, debug=None): return self.genc().getfuncdef(func).fast_name + + def init_globals(self, genc): + # build a type declaration template matching the C syntax + # for function pointer types: + # (*) () + arglist = [ct.typename for ct in self.argtypes] + argtemplate = ', '.join(arglist or ['void']) + yield "typedef %s (*%s) (%s);" % (self.returntype.typename, + self.typename, + argtemplate) + yield genc.loadincludefile('func_template.h') % { + 'typename': self.typename, + } Modified: pypy/dist/pypy/translator/genc/g_include.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_include.h (original) +++ pypy/dist/pypy/translator/genc/g_include.h Tue Apr 12 16:28:26 2005 @@ -10,9 +10,11 @@ #include "marshal.h" #include "eval.h" -#include "g_operation.h" -#include "g_simple.h" -#include "g_struct.h" #include "g_trace.h" #include "g_support.h" #include "g_module.h" + +#include "int_include.h" +#include "none_include.h" +#include "pyobj_include.h" +#include "tuple_include.h" Deleted: /pypy/dist/pypy/translator/genc/g_operation.h ============================================================================== --- /pypy/dist/pypy/translator/genc/g_operation.h Tue Apr 12 16:28:26 2005 +++ (empty file) @@ -1,161 +0,0 @@ - -/************************************************************/ - /*** C header subsection: untyped operations ***/ - /*** as OP_XXX() macros calling the CPython API ***/ - - -#define op_bool(r,err,what) { \ - int _retval = what; \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyBool_FromLong(_retval); \ - } - -#define op_richcmp(x,y,r,err,dir) \ - if (!(r=PyObject_RichCompare(x,y,dir))) FAIL(err) -#define OP_LT(x,y,r,err) op_richcmp(x,y,r,err, Py_LT) -#define OP_LE(x,y,r,err) op_richcmp(x,y,r,err, Py_LE) -#define OP_EQ(x,y,r,err) op_richcmp(x,y,r,err, Py_EQ) -#define OP_NE(x,y,r,err) op_richcmp(x,y,r,err, Py_NE) -#define OP_GT(x,y,r,err) op_richcmp(x,y,r,err, Py_GT) -#define OP_GE(x,y,r,err) op_richcmp(x,y,r,err, Py_GE) - -#define OP_IS_(x,y,r,err) op_bool(r,err,(x == y)) - -#define OP_IS_TRUE(x,r,err) op_bool(r,err,PyObject_IsTrue(x)) - -#define OP_LEN(x,r,err) { \ - int _retval = PyObject_Size(x); \ - if (_retval < 0) { \ - FAIL(err) \ - } \ - r = PyInt_FromLong(_retval); \ - } -#define OP_NEG(x,r,err) if (!(r=PyNumber_Negative(x))) FAIL(err) -#define OP_POS(x,r,err) if (!(r=PyNumber_Positive(x))) FAIL(err) -#define OP_INVERT(x,r,err) if (!(r=PyNumber_Invert(x))) FAIL(err) - -#define OP_ADD(x,y,r,err) if (!(r=PyNumber_Add(x,y))) FAIL(err) -#define OP_SUB(x,y,r,err) if (!(r=PyNumber_Subtract(x,y))) FAIL(err) -#define OP_MUL(x,y,r,err) if (!(r=PyNumber_Multiply(x,y))) FAIL(err) -#define OP_TRUEDIV(x,y,r,err) if (!(r=PyNumber_TrueDivide(x,y))) FAIL(err) -#define OP_FLOORDIV(x,y,r,err) if (!(r=PyNumber_FloorDivide(x,y)))FAIL(err) -#define OP_DIV(x,y,r,err) if (!(r=PyNumber_Divide(x,y))) FAIL(err) -#define OP_MOD(x,y,r,err) if (!(r=PyNumber_Remainder(x,y))) FAIL(err) -#define OP_POW(x,y,z,r,err) if (!(r=PyNumber_Power(x,y,z))) FAIL(err) -#define OP_LSHIFT(x,y,r,err) if (!(r=PyNumber_Lshift(x,y))) FAIL(err) -#define OP_RSHIFT(x,y,r,err) if (!(r=PyNumber_Rshift(x,y))) FAIL(err) -#define OP_AND_(x,y,r,err) if (!(r=PyNumber_And(x,y))) FAIL(err) -#define OP_OR_(x,y,r,err) if (!(r=PyNumber_Or(x,y))) FAIL(err) -#define OP_XOR(x,y,r,err) if (!(r=PyNumber_Xor(x,y))) FAIL(err) - -#define OP_INPLACE_ADD(x,y,r,err) if (!(r=PyNumber_InPlaceAdd(x,y))) \ - FAIL(err) -#define OP_INPLACE_SUB(x,y,r,err) if (!(r=PyNumber_InPlaceSubtract(x,y))) \ - FAIL(err) -#define OP_INPLACE_MUL(x,y,r,err) if (!(r=PyNumber_InPlaceMultiply(x,y))) \ - FAIL(err) -#define OP_INPLACE_TRUEDIV(x,y,r,err) if (!(r=PyNumber_InPlaceTrueDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_FLOORDIV(x,y,r,err)if(!(r=PyNumber_InPlaceFloorDivide(x,y)))\ - FAIL(err) -#define OP_INPLACE_DIV(x,y,r,err) if (!(r=PyNumber_InPlaceDivide(x,y))) \ - FAIL(err) -#define OP_INPLACE_MOD(x,y,r,err) if (!(r=PyNumber_InPlaceRemainder(x,y))) \ - FAIL(err) -#define OP_INPLACE_POW(x,y,r,err) if (!(r=PyNumber_InPlacePower(x,y,Py_None))) \ - FAIL(err) -#define OP_INPLACE_LSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceLshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_RSHIFT(x,y,r,err) if (!(r=PyNumber_InPlaceRshift(x,y))) \ - FAIL(err) -#define OP_INPLACE_AND(x,y,r,err) if (!(r=PyNumber_InPlaceAnd(x,y))) \ - FAIL(err) -#define OP_INPLACE_OR(x,y,r,err) if (!(r=PyNumber_InPlaceOr(x,y))) \ - FAIL(err) -#define OP_INPLACE_XOR(x,y,r,err) if (!(r=PyNumber_InPlaceXor(x,y))) \ - FAIL(err) - -#define OP_GETITEM(x,y,r,err) if (!(r=PyObject_GetItem1(x,y))) FAIL(err) -#define OP_SETITEM(x,y,z,r,err) if ((PyObject_SetItem1(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELITEM(x,y,r,err) if ((PyObject_DelItem(x,y))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_CONTAINS(x,y,r,err) op_bool(r,err,(PySequence_Contains(x,y))) - -#define OP_GETATTR(x,y,r,err) if (!(r=PyObject_GetAttr(x,y))) FAIL(err) -#define OP_SETATTR(x,y,z,r,err) if ((PyObject_SetAttr(x,y,z))<0) FAIL(err) \ - r=Py_None; Py_INCREF(r); -#define OP_DELATTR(x,y,r,err) if ((PyObject_SetAttr(x,y,NULL))<0)FAIL(err) \ - r=Py_None; Py_INCREF(r); - -#define OP_NEWSLICE(x,y,z,r,err) if (!(r=PySlice_New(x,y,z))) FAIL(err) - -#define OP_GETSLICE(x,y,z,r,err) { \ - PyObject *__yo = y, *__zo = z; \ - int __y = 0, __z = INT_MAX; \ - if (__yo == Py_None) __yo = NULL; \ - if (__zo == Py_None) __zo = NULL; \ - if (!_PyEval_SliceIndex(__yo, &__y) || \ - !_PyEval_SliceIndex(__zo, &__z) || \ - !(r=PySequence_GetSlice(x, __y, __z))) FAIL(err) \ - } - -#define OP_ALLOC_AND_SET(x,y,r,err) { \ - /* XXX check for long/int overflow */ \ - int __i, __x = PyInt_AsLong(x); \ - if (PyErr_Occurred()) FAIL(err) \ - if (!(r = PyList_New(__x))) FAIL(err) \ - for (__i=0; __i<__x; __i++) { \ - Py_INCREF(y); \ - PyList_SET_ITEM(r, __i, y); \ - } \ - } - -#define OP_ITER(x,r,err) if (!(r=PyObject_GetIter(x))) FAIL(err) -#define OP_NEXT(x,r,err) if (!(r=PyIter_Next(x))) { \ - if (!PyErr_Occurred()) PyErr_SetNone(PyExc_StopIteration); \ - FAIL(err) \ - } - -#define OP_SIMPLE_CALL(args,r,err) if (!(r=PyObject_CallFunctionObjArgs args)) \ - FAIL(err) -#define OP_CALL_ARGS(args,r,err) if (!(r=CallWithShape args)) FAIL(err) - -/* Needs to act like getattr(x, '__class__', type(x)) */ -#define OP_TYPE(x,r,err) { \ - PyObject *o = x; \ - if (PyInstance_Check(o)) { \ - r = (PyObject*)(((PyInstanceObject*)o)->in_class); \ - } else { \ - r = (PyObject*)o->ob_type; \ - } \ - Py_INCREF(r); \ - } - -/* Needs to act like instance(x,y) */ -#define OP_ISSUBTYPE(x,y,r,err) \ - op_bool(r,err,PyClass_IsSubclass(x, y)) - - -/*** misc ***/ - -#define MOVE(x, y) y = x; - -/*** operations with a variable number of arguments ***/ - -#define OP_NEWLIST0(r,err) if (!(r=PyList_New(0))) FAIL(err) -#define OP_NEWLIST(args,r,err) if (!(r=PyList_Pack args)) FAIL(err) -#define OP_NEWDICT0(r,err) if (!(r=PyDict_New())) FAIL(err) -#define OP_NEWDICT(args,r,err) if (!(r=PyDict_Pack args)) FAIL(err) -#define OP_NEWTUPLE(args,r,err) if (!(r=PyTuple_Pack args)) FAIL(err) - -/*** argument parsing ***/ - -#define OP_DECODE_ARG(fname, pos, name, vargs, vkwds, r, err) \ - if (!(r=decode_arg(fname, pos, name, vargs, vkwds, NULL))) FAIL(err) -#define OP_DECODE_ARG_DEF(fname, pos, name, vargs, vkwds, def, r, err) \ - if (!(r=decode_arg(fname, pos, name, vargs, vkwds, def))) FAIL(err) -#define OP_CHECK_NO_MORE_ARG(fname, n, vargs, r, err) \ - if (check_no_more_arg(fname, n, vargs) < 0) FAIL(err) Deleted: /pypy/dist/pypy/translator/genc/g_simple.h ============================================================================== --- /pypy/dist/pypy/translator/genc/g_simple.h Tue Apr 12 16:28:26 2005 +++ (empty file) @@ -1,31 +0,0 @@ - -/************************************************************/ - /*** C header subsection: operations between ints ***/ - - -static PyObject* PyNone_FromInt(int x) -{ - Py_INCREF(Py_None); - return Py_None; -} - -static int PyNone_AsInt(PyObject* o) -{ - if (o != Py_None) { - PyErr_SetString(PyExc_TypeError, "None expected"); - return -1; - } - return 0; -} - -static PyObject* PyObject_SameObject(PyObject* obj) -{ - Py_INCREF(obj); - return obj; -} - - -#define OP_INT_IS_TRUE(x,r,err) r = (x != 0); - -#define OP_INT_ADD(x,y,r,err) r = x + y; -#define OP_INT_SUB(x,y,r,err) r = x - y; Deleted: /pypy/dist/pypy/translator/genc/g_struct.h ============================================================================== --- /pypy/dist/pypy/translator/genc/g_struct.h Tue Apr 12 16:28:26 2005 +++ (empty file) @@ -1,12 +0,0 @@ - -/************************************************************/ - /*** C header subsection: containers data structures ***/ - - -#define OP_TUPLE_NEW(r,err) /* r is a struct, can be left uninitialized */ -#define OP_TUPLE_GETITEM(s,i,r,err) r = s.f##i; -#define OP_TUPLE_SETITEM(s,i,o,r,err) s.f##i = o; r = 0; - -#define OP_PYTUPLE_GETITEM(t,i,r,err) if (!(r=PyTuple_GetItem(t,i))) FAIL(err) -#define OP_PYTUPLE_SETITEM(t,i,o,r,err) \ - if (PyTuple_SetItem(t,i,o)) FAIL(err) else r = 0; Modified: pypy/dist/pypy/translator/genc/g_support.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_support.h (original) +++ pypy/dist/pypy/translator/genc/g_support.h Tue Apr 12 16:28:26 2005 @@ -3,10 +3,14 @@ /*** C header subsection: support functions ***/ +/*** misc ***/ + #if !defined(MIN) #define MIN(a,b) (((a)<(b))?(a):(b)) #endif /* MIN */ +#define MOVE(x, y) y = x; + /* we need a subclass of 'builtin_function_or_method' which can be used as methods: builtin function objects that can be bound on instances */ Modified: pypy/dist/pypy/translator/genc/genc.py ============================================================================== --- pypy/dist/pypy/translator/genc/genc.py (original) +++ pypy/dist/pypy/translator/genc/genc.py Tue Apr 12 16:28:26 2005 @@ -9,7 +9,7 @@ from pypy.translator.gensupp import uniquemodulename from pypy.translator.genc.funcdef import FunctionDef, USE_CALL_TRACE -from pypy.translator.genc.t_pyobj import CPyObjectType +from pypy.translator.genc.pyobjtype import CPyObjectType # ____________________________________________________________ @@ -130,10 +130,12 @@ def gen_global_declarations(self): # collect more of the latercode between the functions, # and produce the corresponding global declarations + insert_first = [] for ct in self.translator.ctlist: if ct not in self.ctypes_alreadyseen: - self.globaldecl += list(ct.init_globals(self)) + insert_first += list(ct.init_globals(self)) self.ctypes_alreadyseen[ct] = True + self.globaldecl[:0] = insert_first for ct in self.translator.ctlist: self.globaldecl += list(ct.collect_globals(self)) g = self.globaldecl @@ -167,6 +169,14 @@ pass Variable.instances.clear() + def loadincludefile(basename): + filename = os.path.join(autopath.this_dir, basename) + f = open(filename, 'r') + content = f.read() + f.close() + return content + loadincludefile = staticmethod(loadincludefile) + # ____________________________________________________________ C_HEADER = '#include "g_include.h"\n' Copied: pypy/dist/pypy/translator/genc/int_include.h (from r10541, pypy/dist/pypy/translator/genc/g_simple.h) ============================================================================== --- pypy/dist/pypy/translator/genc/g_simple.h (original) +++ pypy/dist/pypy/translator/genc/int_include.h Tue Apr 12 16:28:26 2005 @@ -3,27 +3,10 @@ /*** C header subsection: operations between ints ***/ -static PyObject* PyNone_FromInt(int x) -{ - Py_INCREF(Py_None); - return Py_None; -} - -static int PyNone_AsInt(PyObject* o) -{ - if (o != Py_None) { - PyErr_SetString(PyExc_TypeError, "None expected"); - return -1; - } - return 0; -} - -static PyObject* PyObject_SameObject(PyObject* obj) -{ - Py_INCREF(obj); - return obj; -} - +#define OP_INCREF_int(x) /* nothing */ +#define OP_DECREF_int(x) /* nothing */ +#define CONV_TO_OBJ_int PyInt_FromLong +#define CONV_FROM_OBJ_int PyInt_AsLong #define OP_INT_IS_TRUE(x,r,err) r = (x != 0); Added: pypy/dist/pypy/translator/genc/inttype.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/inttype.py Tue Apr 12 16:28:26 2005 @@ -0,0 +1,12 @@ +from __future__ import generators +from pypy.annotation.model import SomeInteger +from pypy.translator.genc.basetype import CType + + +class CIntType(CType): + typename = 'int' + error_return = '-1' + s_annotation = SomeInteger() + + def nameof(self, v, debug=None): + return '%d' % (v,) Copied: pypy/dist/pypy/translator/genc/none_include.h (from r10541, pypy/dist/pypy/translator/genc/g_simple.h) ============================================================================== --- pypy/dist/pypy/translator/genc/g_simple.h (original) +++ pypy/dist/pypy/translator/genc/none_include.h Tue Apr 12 16:28:26 2005 @@ -1,15 +1,16 @@ /************************************************************/ - /*** C header subsection: operations between ints ***/ + /*** C header subsection: operations between Nones ***/ +typedef int none; + +#define OP_INCREF_none(x) /* nothing */ +#define OP_DECREF_none(x) /* nothing */ -static PyObject* PyNone_FromInt(int x) -{ - Py_INCREF(Py_None); - return Py_None; -} -static int PyNone_AsInt(PyObject* o) +#define CONV_TO_OBJ_none(x) ((void)Py_INCREF(Py_None), Py_None) + +static none CONV_FROM_OBJ_none(PyObject* o) { if (o != Py_None) { PyErr_SetString(PyExc_TypeError, "None expected"); @@ -17,15 +18,3 @@ } return 0; } - -static PyObject* PyObject_SameObject(PyObject* obj) -{ - Py_INCREF(obj); - return obj; -} - - -#define OP_INT_IS_TRUE(x,r,err) r = (x != 0); - -#define OP_INT_ADD(x,y,r,err) r = x + y; -#define OP_INT_SUB(x,y,r,err) r = x - y; Added: pypy/dist/pypy/translator/genc/nonetype.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/nonetype.py Tue Apr 12 16:28:26 2005 @@ -0,0 +1,13 @@ +from __future__ import generators +from pypy.annotation.model import SomePBC +from pypy.translator.genc.basetype import CType + + +class CNoneType(CType): + typename = 'none' + error_return = '-1' + s_annotation = SomePBC({None: True}) + + def nameof(self, v, debug=None): + assert v is None + return '0' Copied: pypy/dist/pypy/translator/genc/pyobj_include.h (from r10541, pypy/dist/pypy/translator/genc/g_operation.h) ============================================================================== --- pypy/dist/pypy/translator/genc/g_operation.h (original) +++ pypy/dist/pypy/translator/genc/pyobj_include.h Tue Apr 12 16:28:26 2005 @@ -139,10 +139,6 @@ op_bool(r,err,PyClass_IsSubclass(x, y)) -/*** misc ***/ - -#define MOVE(x, y) y = x; - /*** operations with a variable number of arguments ***/ #define OP_NEWLIST0(r,err) if (!(r=PyList_New(0))) FAIL(err) @@ -159,3 +155,13 @@ if (!(r=decode_arg(fname, pos, name, vargs, vkwds, def))) FAIL(err) #define OP_CHECK_NO_MORE_ARG(fname, n, vargs, r, err) \ if (check_no_more_arg(fname, n, vargs) < 0) FAIL(err) + +/*** conversions, reference counting ***/ + +#define OP_INCREF_pyobj(o) Py_INCREF(o); +#define OP_DECREF_pyobj(o) Py_DECREF(o); +#define CONV_TO_OBJ_pyobj(o) ((void)Py_INCREF(o), o) +#define CONV_FROM_OBJ_pyobj(o) ((void)Py_INCREF(o), o) + +#define OP_INCREF_borrowedpyobj(o) /* nothing */ +#define OP_DECREF_borrowedpyobj(o) /* nothing */ Copied: pypy/dist/pypy/translator/genc/pyobjtype.py (from r10541, pypy/dist/pypy/translator/genc/t_pyobj.py) ============================================================================== --- pypy/dist/pypy/translator/genc/t_pyobj.py (original) +++ pypy/dist/pypy/translator/genc/pyobjtype.py Tue Apr 12 16:28:26 2005 @@ -2,7 +2,7 @@ import autopath, os, sys, __builtin__, marshal, zlib from pypy.objspace.flow.model import Variable, Constant from pypy.translator.gensupp import builtin_base, NameManager -from pypy.translator.genc.t_simple import CType +from pypy.translator.genc.basetype import CType from types import FunctionType, CodeType, InstanceType, ClassType from pypy.tool.rarithmetic import r_int, r_uint @@ -14,7 +14,7 @@ of Python objects to be 'pickled' as Python source code that will reconstruct them. """ - ctypetemplate = 'PyObject *%s' + typename = 'pyobj' error_return = 'NULL' def __init__(self, translator): @@ -51,12 +51,6 @@ self.globalobjects = [] self.debugstack = () # linked list of nested nameof() - def cincref(self, expr): - return 'Py_INCREF(%s);' % expr - - def cdecref(self, expr): - return 'Py_DECREF(%s);' % expr - def nameof(self, obj, debug=None): key = Constant(obj).key try: @@ -429,6 +423,9 @@ def later(self, gen): self.latercode.append((gen, self.debugstack)) + def init_globals(self, genc): + yield 'typedef PyObject* pyobj;' + def collect_globals(self, genc): while self.latercode: gen, self.debugstack = self.latercode.pop() @@ -463,13 +460,10 @@ del source return marshal.dumps(co) - def fn_conv_to_obj(self): - return "PyObject_SameObject" - - def fn_conv_from_obj(self): - return "PyObject_SameObject" - class CBorrowedPyObjectType(CType): - ctypetemplate = 'PyObject *%s' + typename = 'borrowedpyobj' error_return = 'NULL' + + def init_globals(self, genc): + yield 'typedef PyObject* borrowedpyobj;' Deleted: /pypy/dist/pypy/translator/genc/t_func.py ============================================================================== --- /pypy/dist/pypy/translator/genc/t_func.py Tue Apr 12 16:28:26 2005 +++ (empty file) @@ -1,29 +0,0 @@ -from pypy.translator.genc.t_simple import CType - - -class CFuncPtrType(CType): - error_return = 'NULL' - - def __init__(self, translator, argtypes, returntype): - super(CFuncPtrType, self).__init__(translator) - self.argtypes = argtypes - self.returntype = returntype - # build a type declaration template matching the strange C syntax - # for function pointer types: - # (*) () - # which becomes funny when itself is a complex type; - # in that case, the whole rest of the line, i.e. the "(*..)(...)", - # is what should be inserted into the returntype's "%s". - arglist = [ct.ctypetemplate % ('',) for ct in argtypes] - argtemplate = ', '.join(arglist or ['void']) - header = '(*%s)(' + argtemplate + ')' - self.ctypetemplate = returntype.ctypetemplate % (header,) - - def debugname(self): - # a nice textual name for debugging... - argnames = [ct.debugname() for ct in self.argtypes] - returnname = self.returntype.debugname() - return 'fn(%s) -> %s' % (', '.join(argnames), returnname) - - def nameof(self, func, debug=None): - return self.genc().getfuncdef(func).fast_name Deleted: /pypy/dist/pypy/translator/genc/t_pyobj.py ============================================================================== --- /pypy/dist/pypy/translator/genc/t_pyobj.py Tue Apr 12 16:28:26 2005 +++ (empty file) @@ -1,475 +0,0 @@ -from __future__ import generators -import autopath, os, sys, __builtin__, marshal, zlib -from pypy.objspace.flow.model import Variable, Constant -from pypy.translator.gensupp import builtin_base, NameManager -from pypy.translator.genc.t_simple import CType -from types import FunctionType, CodeType, InstanceType, ClassType - -from pypy.tool.rarithmetic import r_int, r_uint - - -class CPyObjectType(CType): - """The PyObject* C type. - This class contains all the nameof_xxx() methods that allow a wild variety - of Python objects to be 'pickled' as Python source code that will - reconstruct them. - """ - ctypetemplate = 'PyObject *%s' - error_return = 'NULL' - - def __init__(self, translator): - super(CPyObjectType, self).__init__(translator) - self.namespace= NameManager() - # keywords cannot be reused. This is the C99 draft's list. - self.namespace.make_reserved_names(''' - auto enum restrict unsigned - break extern return void - case float short volatile - char for signed while - const goto sizeof _Bool - continue if static _Complex - default inline struct _Imaginary - do int switch - double long typedef - else register union - ''') - self.cnames = {Constant(None).key: 'Py_None', - Constant(False).key: 'Py_False', - Constant(True).key: 'Py_True', - } - self.initcode = [ # list of lines for the module's initxxx() - 'import new, types, sys', - 'Py_None = None', - 'Py_False = False', - 'Py_True = True', - ] - - self.globaldecl = [] - self.latercode = [] # list of generators generating extra lines - # for later in initxxx() -- for recursive - # objects - self.globalobjects = [] - self.debugstack = () # linked list of nested nameof() - - def cincref(self, expr): - return 'Py_INCREF(%s);' % expr - - def cdecref(self, expr): - return 'Py_DECREF(%s);' % expr - - def nameof(self, obj, debug=None): - key = Constant(obj).key - try: - return self.cnames[key] - except KeyError: - if debug: - stackentry = debug, obj - else: - stackentry = obj - self.debugstack = (self.debugstack, stackentry) - obj_builtin_base = builtin_base(obj) - if obj_builtin_base in (object, int, long) and type(obj) is not obj_builtin_base: - # assume it's a user defined thingy - name = self.nameof_instance(obj) - else: - for cls in type(obj).__mro__: - meth = getattr(self, - 'nameof_' + cls.__name__.replace(' ', ''), - None) - if meth: - break - else: - raise Exception, "nameof(%r)" % (obj,) - name = meth(obj) - self.debugstack, x = self.debugstack - assert x is stackentry - self.cnames[key] = name - return name - - def uniquename(self, basename): - name = self.namespace.uniquename(basename) - self.globalobjects.append(name) - self.globaldecl.append('static PyObject *%s;' % (name,)) - return name - - def initcode_python(self, name, pyexpr): - # generate init code that will evaluate the given Python expression - #self.initcode.append("print 'setting up', %r" % name) - self.initcode.append("%s = %s" % (name, pyexpr)) - - def nameof_object(self, value): - if type(value) is not object: - raise Exception, "nameof(%r)" % (value,) - name = self.uniquename('g_object') - self.initcode_python(name, "object()") - return name - - def nameof_module(self, value): - assert value is os or not hasattr(value, "__file__") or \ - not (value.__file__.endswith('.pyc') or - value.__file__.endswith('.py') or - value.__file__.endswith('.pyo')), \ - "%r is not a builtin module (probably :)"%value - name = self.uniquename('mod%s'%value.__name__) - self.initcode_python(name, "__import__(%r)" % (value.__name__,)) - return name - - - def nameof_int(self, value): - if value >= 0: - name = 'gint_%d' % value - else: - name = 'gint_minus%d' % abs(value) - name = self.uniquename(name) - self.initcode_python(name, repr(value)) - return name - - def nameof_long(self, value): - if value >= 0: - name = 'glong%d' % value - else: - name = 'glong_minus%d' % abs(value) - name = self.uniquename(name) - self.initcode_python(name, repr(value)) - return name - - def nameof_float(self, value): - name = 'gfloat_%s' % value - name = (name.replace('-', 'minus') - .replace('.', 'dot')) - name = self.uniquename(name) - self.initcode_python(name, repr(value)) - return name - - def nameof_str(self, value): - name = self.uniquename('gstr_' + value[:32]) -## if [c for c in value if c<' ' or c>'~' or c=='"' or c=='\\']: -## # non-printable string -## s = 'chr_%s' % name -## self.globaldecl.append('static char %s[] = { %s };' % ( -## s, ', '.join(['%d' % ord(c) for c in value]))) -## else: -## # printable string -## s = '"%s"' % value - self.initcode_python(name, repr(value)) - return name - - def skipped_function(self, func): - # debugging only! Generates a placeholder for missing functions - # that raises an exception when called. - if self.translator.frozen: - warning = 'NOT GENERATING' - else: - warning = 'skipped' - printable_name = '(%s:%d) %s' % ( - func.func_globals.get('__name__', '?'), - func.func_code.co_firstlineno, - func.__name__) - print warning, printable_name - name = self.uniquename('gskippedfunc_' + func.__name__) - self.initcode.append('def %s(*a,**k):' % name) - self.initcode.append(' raise NotImplementedError') - return name - - def nameof_function(self, func, progress=['-\x08', '\\\x08', - '|\x08', '/\x08']): - funcdef = self.genc().getfuncdef(func) - if funcdef is None: - return self.skipped_function(func) - if not self.translator.frozen: - p = progress.pop(0) - sys.stderr.write(p) - progress.append(p) - return funcdef.get_globalobject() - - def nameof_staticmethod(self, sm): - # XXX XXX XXXX - func = sm.__get__(42.5) - name = self.uniquename('gsm_' + func.__name__) - functionname = self.nameof(func) - self.initcode_python(name, 'staticmethod(%s)' % functionname) - return name - - def nameof_instancemethod(self, meth): - if meth.im_self is None: - # no error checking here - return self.nameof(meth.im_func) - else: - ob = self.nameof(meth.im_self) - func = self.nameof(meth.im_func) - typ = self.nameof(meth.im_class) - name = self.uniquename('gmeth_'+meth.im_func.__name__) - self.initcode_python(name, 'new.instancemethod(%s, %s, %s)' % ( - func, ob, typ)) - return name - - def should_translate_attr(self, pbc, attr): - ann = self.translator.annotator - if ann is None: - ignore = getattr(pbc.__class__, 'NOT_RPYTHON_ATTRIBUTES', []) - if attr in ignore: - return False - else: - return "probably" # True - classdef = ann.getuserclasses().get(pbc.__class__) - if classdef and classdef.about_attribute(attr) is not None: - return True - return False - - def nameof_instance(self, instance): - klass = instance.__class__ - name = self.uniquename('ginst_' + klass.__name__) - cls = self.nameof(klass) - if hasattr(klass, '__base__'): - base_class = builtin_base(instance) - base = self.nameof(base_class) - else: - base_class = None - base = cls - def initinstance(): - content = instance.__dict__.items() - content.sort() - for key, value in content: - if self.should_translate_attr(instance, key): - line = '%s.%s = %s' % (name, key, self.nameof(value)) - yield line - if hasattr(instance,'__reduce_ex__'): - import copy_reg - reduced = instance.__reduce_ex__() - assert reduced[0] is copy_reg._reconstructor,"not clever enough" - assert reduced[1][1] is base_class, "not clever enough for %r vs. %r" % (base_class, reduced) - state = reduced[1][2] - else: - state = None - self.initcode.append('if isinstance(%s, type):' % cls) - if state is not None: - self.initcode.append(' %s = %s.__new__(%s, %r)' % (name, base, cls, state)) - else: - self.initcode.append(' %s = %s.__new__(%s)' % (name, base, cls)) - self.initcode.append('else:') - self.initcode.append(' %s = new.instance(%s)' % (name, cls)) - self.later(initinstance()) - return name - - def nameof_builtin_function_or_method(self, func): - if func.__self__ is None: - # builtin function - # where does it come from? Python2.2 doesn't have func.__module__ - for modname, module in sys.modules.items(): - if hasattr(module, '__file__'): - if (module.__file__.endswith('.py') or - module.__file__.endswith('.pyc') or - module.__file__.endswith('.pyo')): - continue # skip non-builtin modules - if func is getattr(module, func.__name__, None): - break - else: - raise Exception, '%r not found in any built-in module' % (func,) - name = self.uniquename('gbltin_' + func.__name__) - if modname == '__builtin__': - self.initcode_python(name, func.__name__) - else: - modname = self.nameof(module) - self.initcode_python(name, '%s.%s' % (modname, func.__name__)) - else: - # builtin (bound) method - name = self.uniquename('gbltinmethod_' + func.__name__) - selfname = self.nameof(func.__self__) - self.initcode_python(name, '%s.%s' % (selfname, func.__name__)) - return name - - def nameof_classobj(self, cls): - if cls.__doc__ and cls.__doc__.lstrip().startswith('NOT_RPYTHON'): - raise Exception, "%r should never be reached" % (cls,) - - metaclass = "type" - if issubclass(cls, Exception): - if cls.__module__ == 'exceptions': - name = self.uniquename('gexc_' + cls.__name__) - self.initcode_python(name, cls.__name__) - return name - #else: - # # exceptions must be old-style classes (grr!) - # metaclass = "&PyClass_Type" - # For the moment, use old-style classes exactly when the - # pypy source uses old-style classes, to avoid strange problems. - if not isinstance(cls, type): - assert type(cls) is ClassType - metaclass = "types.ClassType" - - name = self.uniquename('gcls_' + cls.__name__) - basenames = [self.nameof(base) for base in cls.__bases__] - def initclassobj(): - content = cls.__dict__.items() - content.sort() - for key, value in content: - if key.startswith('__'): - if key in ['__module__', '__doc__', '__dict__', - '__weakref__', '__repr__', '__metaclass__']: - continue - # XXX some __NAMES__ are important... nicer solution sought - #raise Exception, "unexpected name %r in class %s"%(key, cls) - if isinstance(value, staticmethod) and value.__get__(1) not in self.translator.flowgraphs and self.translator.frozen: - print value - continue - if isinstance(value, classmethod) and value.__get__(cls).__doc__.lstrip().startswith("NOT_RPYTHON"): - continue - if isinstance(value, FunctionType) and value not in self.translator.flowgraphs and self.translator.frozen: - print value - continue - - yield '%s.%s = %s' % (name, key, self.nameof(value)) - - baseargs = ", ".join(basenames) - if baseargs: - baseargs = '(%s)' % baseargs - self.initcode.append('class %s%s:' % (name, baseargs)) - self.initcode.append(' __metaclass__ = %s' % metaclass) - self.later(initclassobj()) - return name - - nameof_class = nameof_classobj # for Python 2.2 - - typename_mapping = { - InstanceType: 'types.InstanceType', - type(None): 'type(None)', - CodeType: 'types.CodeType', - type(sys): 'type(new)', - - r_int: 'int', # XXX - r_uint: 'int', # XXX - - # XXX more hacks - # type 'builtin_function_or_method': - type(len): 'type(len)', - # type 'method_descriptor': - type(list.append): 'type(list.append)', - # type 'wrapper_descriptor': - type(type(None).__repr__): 'type(type(None).__repr__)', - # type 'getset_descriptor': - type(type.__dict__['__dict__']): "type(type.__dict__['__dict__'])", - # type 'member_descriptor': - type(type.__dict__['__basicsize__']): "type(type.__dict__['__basicsize__'])", - } - - def nameof_type(self, cls): - if cls.__module__ != '__builtin__': - return self.nameof_classobj(cls) # user-defined type - name = self.uniquename('gtype_%s' % cls.__name__) - if getattr(__builtin__, cls.__name__, None) is cls: - expr = cls.__name__ # type available from __builtin__ - else: - expr = self.typename_mapping[cls] - self.initcode_python(name, expr) - return name - - def nameof_tuple(self, tup): - name = self.uniquename('g%dtuple' % len(tup)) - args = [self.nameof(x) for x in tup] - args = ', '.join(args) - if args: - args += ',' - self.initcode_python(name, '(%s)' % args) - return name - - def nameof_list(self, lis): - name = self.uniquename('g%dlist' % len(lis)) - def initlist(): - for i in range(len(lis)): - item = self.nameof(lis[i]) - yield '%s.append(%s)' % (name, item) - self.initcode_python(name, '[]') - self.later(initlist()) - return name - - def nameof_dict(self, dic): - assert dic is not __builtins__ - assert '__builtins__' not in dic, 'Seems to be the globals of %s' % ( - dic.get('__name__', '?'),) - name = self.uniquename('g%ddict' % len(dic)) - def initdict(): - for k in dic: - if type(k) is str: - yield '%s[%r] = %s' % (name, k, self.nameof(dic[k])) - else: - yield '%s[%s] = %s' % (name, self.nameof(k), - self.nameof(dic[k])) - self.initcode_python(name, '{}') - self.later(initdict()) - return name - - # strange prebuilt instances below, don't look too closely - # XXX oh well. - def nameof_member_descriptor(self, md): - name = self.uniquename('gdescriptor_%s_%s' % ( - md.__objclass__.__name__, md.__name__)) - cls = self.nameof(md.__objclass__) - self.initcode_python(name, '%s.__dict__[%r]' % (cls, md.__name__)) - return name - nameof_getset_descriptor = nameof_member_descriptor - nameof_method_descriptor = nameof_member_descriptor - nameof_wrapper_descriptor = nameof_member_descriptor - - def nameof_file(self, fil): - if fil is sys.stdin: - name = self.uniquename("gsys_stdin") - self.initcode_python(name, "sys.stdin") - return name - if fil is sys.stdout: - name = self.uniquename("gsys_stdout") - self.initcode_python(name, "sys.stdout") - return name - if fil is sys.stderr: - name = self.uniquename("gsys_stderr") - self.initcode_python(name, "sys.stderr") - return name - raise Exception, 'Cannot translate an already-open file: %r' % (fil,) - - - def later(self, gen): - self.latercode.append((gen, self.debugstack)) - - def collect_globals(self, genc): - while self.latercode: - gen, self.debugstack = self.latercode.pop() - #self.initcode.extend(gen) -- eats TypeError! bad CPython! - for line in gen: - self.initcode.append(line) - self.debugstack = () - if genc.f2 is not None: - for line in self.initcode: - print >> genc.f2, line - del self.initcode[:] - result = self.globaldecl - self.globaldecl = [] - return result - - def getfrozenbytecode(self, genc): - if genc.f2 is not None: - genc.f2.seek(0) - self.initcode.insert(0, genc.f2.read()) - self.initcode.append('') - source = '\n'.join(self.initcode) - del self.initcode[:] - co = compile(source, genc.modname, 'exec') - del source - small = zlib.compress(marshal.dumps(co)) - source = """if 1: - import zlib, marshal - exec marshal.loads(zlib.decompress(%r))""" % small - # Python 2.2 SyntaxError without newline: Bug #501622 - source += '\n' - co = compile(source, genc.modname, 'exec') - del source - return marshal.dumps(co) - - def fn_conv_to_obj(self): - return "PyObject_SameObject" - - def fn_conv_from_obj(self): - return "PyObject_SameObject" - - -class CBorrowedPyObjectType(CType): - ctypetemplate = 'PyObject *%s' - error_return = 'NULL' Deleted: /pypy/dist/pypy/translator/genc/t_simple.py ============================================================================== --- /pypy/dist/pypy/translator/genc/t_simple.py Tue Apr 12 16:28:26 2005 +++ (empty file) @@ -1,66 +0,0 @@ -from pypy.annotation.model import SomeInteger, SomePBC -from pypy.objspace.flow.model import SpaceOperation -from pypy.interpreter.miscutils import getthreadlocals - - -class CType(object): - - def __init__(self, translator): - self.translator = translator - - def convert_to_obj(self, typer, v1, v2): - return [SpaceOperation("conv_to_obj", [v1], v2)] - - def convert_from_obj(self, typer, v1, v2): - return [SpaceOperation("conv_from_obj", [v1], v2)] - - def debugname(self): - return self.__class__.__name__ - - def genc(): - """A hack to get at the currently running GenC instance.""" - return getthreadlocals().genc - genc = staticmethod(genc) - - def init_globals(self, genc): - return [] - - def collect_globals(self, genc): - return [] - - def cincref(self, expr): - return '' - - def cdecref(self, expr): - return '' - - -class CIntType(CType): - error_return = '-1' - ctypetemplate = 'int %s' - s_annotation = SomeInteger() - - def nameof(self, v, debug=None): - return '%d' % (v,) - - def fn_conv_to_obj(self): - return 'PyInt_FromLong' - - def fn_conv_from_obj(self): - return 'PyInt_AsLong' - - -class CNoneType(CType): - error_return = '-1' - ctypetemplate = 'int %s' - s_annotation = SomePBC({None: True}) - - def nameof(self, v, debug=None): - assert v is None - return '0' - - def fn_conv_to_obj(self): - return 'PyNone_FromInt' - - def fn_conv_from_obj(self): - return 'PyNone_AsInt' Deleted: /pypy/dist/pypy/translator/genc/t_tuple.py ============================================================================== --- /pypy/dist/pypy/translator/genc/t_tuple.py Tue Apr 12 16:28:26 2005 +++ (empty file) @@ -1,146 +0,0 @@ -from __future__ import generators -from pypy.translator.genc.t_simple import CType -from pypy.objspace.flow.model import SpaceOperation, Constant, Variable - - -class CTupleType(CType): - - Counter = {} - - def __init__(self, translator, itemtypes): - super(CTupleType, self).__init__(translator) - self.itemtypes = itemtypes - self.structname = 'struct tuple%d_%d' % ( - len(itemtypes), - CTupleType.Counter.setdefault(len(itemtypes), 0)) - CTupleType.Counter[len(itemtypes)] += 1 - self.ctypetemplate = self.structname + ' %s' - self.error_return = self.structname.replace(' ', '_err_') - self.cnames = {} - self.globaldecl = [] - self._conv_to_obj = None - self._conv_from_obj = None - - def debugname(self): - # a nice textual name for debugging... - itemnames = [ct.debugname() for ct in self.itemtypes] - return 'tuple(%s)' % (', '.join(itemnames),) - - def fieldnames(self): - return ['f%d' % i for i in range(len(self.itemtypes))] - - def init_globals(self, genc): - yield '%s {' % self.structname - for ct, name in zip(self.itemtypes, self.fieldnames()): - yield '\t' + ct.ctypetemplate % (name,) + ';' - yield '};' - self.globaldecl.append( - '%s %s; /* uninitialized */' % (self.structname, - self.error_return)) - - def collect_globals(self, genc): - result = self.globaldecl - self.globaldecl = [] - return result - - def cincref(self, expr): - result = [] - for i in range(len(self.itemtypes)): - line = self.itemtypes[i].cincref('%s.f%d' % (expr, i)) - if line: - result.append(line) - return ' '.join(result) - - def cdecref(self, expr): - result = [] - for i in range(len(self.itemtypes)): - line = self.itemtypes[i].cdecref('%s.f%d' % (expr, i)) - if line: - result.append(line) - return '\t'.join(result) - - def nameof(self, tup, debug=None): - try: - return self.cnames[tup] - except KeyError: - genc = self.genc() - name = genc.namespace.uniquename('gtup') - self.globaldecl.append('%s %s = {' % (self.structname, name)) - lines = [] - for x, ct in zip(tup, self.itemtypes): - lines.append('\t' + genc.nameofvalue(x, ct)) - self.globaldecl.append(',\n'.join(lines)) - self.globaldecl.append('};') - self.cnames[tup] = name - return name - - def fn_conv_to_obj(self): - if self._conv_to_obj is None: - # build a function that converts from our custom struct - # format to a full-blown PyTupleObject. - self._conv_to_obj = self.structname.replace(' ', '_to_obj_') - self.globaldecl += [ - "static PyObject* %s(%s tup)" % (self._conv_to_obj, - self.structname), - "{", - "\tPyObject* o;", - "\tPyObject* result = PyTuple_New(%d);" % len(self.itemtypes), - "\tif (result == NULL) return NULL;", - ] - for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): - self.globaldecl += [ - "\to = %s(tup.f%d);" % (ct.fn_conv_to_obj(), i), - "\tif (o == NULL) goto err;", - "\tPyTuple_SET_ITEM(result, %d, o);" % i, - ] - self.globaldecl += [ - "\treturn result;", - " err:", - "\tPy_DECREF(result);", - "\treturn NULL;", - "}", - ] - return self._conv_to_obj - - def fn_conv_from_obj(self): - if self._conv_from_obj is None: - # build a function that decodes a PyTupleObject and store it - # into our custom struct format. - self._conv_from_obj = self.structname.replace(' ', '_from_obj_') - self.globaldecl += [ - "static %s %s(PyObject* obj)" % (self.structname, - self._conv_from_obj), - "{", - "\t%s result;" % self.structname, - "\tif (PyTuple_Size(obj) != %d) { /* also if not a tuple */" % - len(self.itemtypes), - "\t\tPyErr_SetString(PyExc_TypeError,", - '\t\t\t"tuple of length %d expected");' % len(self.itemtypes), - "\t\tgoto err0;", - "\t}", - ] - for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): - self.globaldecl += [ - "\tresult.f%d = %s(PyTuple_GET_ITEM(obj, %d));" % ( - i, ct.fn_conv_from_obj(), i), - "\tif (PyErr_Occurred()) goto err%d;" % i, - ] - self.globaldecl += [ - "\treturn result;", - ] - # errors may occur in the middle of the construction of the struct, - # we must decref only the fields that have been successfully built - # so far... - errlabels = range(len(self.itemtypes)) or [0] - errlabels.reverse() - for i in errlabels: - self.globaldecl.append(" err%d:" % i) - if i > 0: - cdecref = self.itemtypes[i-1].cdecref('result.f%d' % (i-1)) - if cdecref: - self.globaldecl.append('\t' + cdecref) - self.globaldecl += [ - "\treturn %s;" % self.error_return, - "}", - ] - return self._conv_from_obj Copied: pypy/dist/pypy/translator/genc/tuple_include.h (from r10541, pypy/dist/pypy/translator/genc/g_struct.h) ============================================================================== --- pypy/dist/pypy/translator/genc/g_struct.h (original) +++ pypy/dist/pypy/translator/genc/tuple_include.h Tue Apr 12 16:28:26 2005 @@ -1,12 +1,8 @@ /************************************************************/ - /*** C header subsection: containers data structures ***/ + /*** C header subsection: operations involving tuples ***/ #define OP_TUPLE_NEW(r,err) /* r is a struct, can be left uninitialized */ #define OP_TUPLE_GETITEM(s,i,r,err) r = s.f##i; #define OP_TUPLE_SETITEM(s,i,o,r,err) s.f##i = o; r = 0; - -#define OP_PYTUPLE_GETITEM(t,i,r,err) if (!(r=PyTuple_GetItem(t,i))) FAIL(err) -#define OP_PYTUPLE_SETITEM(t,i,o,r,err) \ - if (PyTuple_SetItem(t,i,o)) FAIL(err) else r = 0; Copied: pypy/dist/pypy/translator/genc/tupletype.py (from r10542, pypy/dist/pypy/translator/genc/t_tuple.py) ============================================================================== --- pypy/dist/pypy/translator/genc/t_tuple.py (original) +++ pypy/dist/pypy/translator/genc/tupletype.py Tue Apr 12 16:28:26 2005 @@ -1,5 +1,5 @@ from __future__ import generators -from pypy.translator.genc.t_simple import CType +from pypy.translator.genc.basetype import CType from pypy.objspace.flow.model import SpaceOperation, Constant, Variable @@ -10,62 +10,44 @@ def __init__(self, translator, itemtypes): super(CTupleType, self).__init__(translator) self.itemtypes = itemtypes - self.structname = 'struct tuple%d_%d' % ( + self.typename = 'tuple%d_%d' % ( len(itemtypes), CTupleType.Counter.setdefault(len(itemtypes), 0)) CTupleType.Counter[len(itemtypes)] += 1 - self.ctypetemplate = self.structname + ' %s' - self.error_return = self.structname.replace(' ', '_err_') + self.error_return = 'err_' + self.typename self.cnames = {} self.globaldecl = [] - self._conv_to_obj = None - self._conv_from_obj = None def debugname(self): # a nice textual name for debugging... itemnames = [ct.debugname() for ct in self.itemtypes] return 'tuple(%s)' % (', '.join(itemnames),) - def fieldnames(self): - return ['f%d' % i for i in range(len(self.itemtypes))] - def init_globals(self, genc): - yield '%s {' % self.structname - for ct, name in zip(self.itemtypes, self.fieldnames()): - yield '\t' + ct.ctypetemplate % (name,) + ';' - yield '};' + yield 'typedef struct {' + for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): + yield '\t%s f%d;' % (ct.typename, i) + yield '} %s;' % self.typename self.globaldecl.append( - '%s %s; /* uninitialized */' % (self.structname, + '%s %s; /* uninitialized */' % (self.typename, self.error_return)) + self.generate_xxxref('INC') + self.generate_xxxref('DEC') + self.generate_conv_to_obj() + self.generate_conv_from_obj() def collect_globals(self, genc): result = self.globaldecl self.globaldecl = [] return result - def cincref(self, expr): - result = [] - for i in range(len(self.itemtypes)): - line = self.itemtypes[i].cincref('%s.f%d' % (expr, i)) - if line: - result.append(line) - return ' '.join(result) - - def cdecref(self, expr): - result = [] - for i in range(len(self.itemtypes)): - line = self.itemtypes[i].cdecref('%s.f%d' % (expr, i)) - if line: - result.append(line) - return '\t'.join(result) - def nameof(self, tup, debug=None): try: return self.cnames[tup] except KeyError: genc = self.genc() name = genc.namespace.uniquename('gtup') - self.globaldecl.append('%s %s = {' % (self.structname, name)) + self.globaldecl.append('%s %s = {' % (self.typename, name)) lines = [] for x, ct in zip(tup, self.itemtypes): lines.append('\t' + genc.nameofvalue(x, ct)) @@ -74,73 +56,74 @@ self.cnames[tup] = name return name - def fn_conv_to_obj(self): - if self._conv_to_obj is None: - # build a function that converts from our custom struct - # format to a full-blown PyTupleObject. - self._conv_to_obj = self.structname.replace(' ', '_to_obj_') - self.globaldecl += [ - "static PyObject* %s(%s tup)" % (self._conv_to_obj, - self.structname), - "{", - "\tPyObject* o;", - "\tPyObject* result = PyTuple_New(%d);" % len(self.itemtypes), - "\tif (result == NULL) return NULL;", - ] - for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): - self.globaldecl += [ - "\to = %s(tup.f%d);" % (ct.fn_conv_to_obj(), i), - "\tif (o == NULL) goto err;", - "\tPyTuple_SET_ITEM(result, %d, o);" % i, - ] - self.globaldecl += [ - "\treturn result;", - " err:", - "\tPy_DECREF(result);", - "\treturn NULL;", - "}", - ] - return self._conv_to_obj - - def fn_conv_from_obj(self): - if self._conv_from_obj is None: - # build a function that decodes a PyTupleObject and store it - # into our custom struct format. - self._conv_from_obj = self.structname.replace(' ', '_from_obj_') - self.globaldecl += [ - "static %s %s(PyObject* obj)" % (self.structname, - self._conv_from_obj), - "{", - "\t%s result;" % self.structname, - "\tif (PyTuple_Size(obj) != %d) { /* also if not a tuple */" % - len(self.itemtypes), - "\t\tPyErr_SetString(PyExc_TypeError,", - '\t\t\t"tuple of length %d expected");' % len(self.itemtypes), - "\t\tgoto err0;", - "\t}", - ] - for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): - self.globaldecl += [ - "\tresult.f%d = %s(PyTuple_GET_ITEM(obj, %d));" % ( - i, ct.fn_conv_from_obj(), i), - "\tif (PyErr_Occurred()) goto err%d;" % i, - ] + def generate_xxxref(self, op): + self.globaldecl.append('#define OP_%sREF_%s(tup) \\' % (op, + self.typename)) + for i in range(len(self.itemtypes)): + self.globaldecl.append('\tOP_%sREF_%s(tup.f%d) \\' % ( + op, self.itemtypes[i].typename, i)) + self.globaldecl.append('\t/* end */') + + def generate_conv_to_obj(self): + # build a function that converts from our custom struct + # format to a full-blown PyTupleObject. + self.globaldecl += [ + "static PyObject* CONV_TO_OBJ_%s(%s tup)" % (self.typename, + self.typename), + "{", + "\tPyObject* o;", + "\tPyObject* result = PyTuple_New(%d);" % len(self.itemtypes), + "\tif (result == NULL) return NULL;", + ] + for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): self.globaldecl += [ - "\treturn result;", + "\to = CONV_TO_OBJ_%s(tup.f%d);" % (ct.typename, i), + "\tif (o == NULL) goto err;", + "\tPyTuple_SET_ITEM(result, %d, o);" % i, ] - # errors may occur in the middle of the construction of the struct, - # we must decref only the fields that have been successfully built - # so far... - errlabels = range(len(self.itemtypes)) or [0] - errlabels.reverse() - for i in errlabels: - self.globaldecl.append(" err%d:" % i) - if i > 0: - cdecref = self.itemtypes[i-1].cdecref('result.f%d' % (i-1)) - if cdecref: - self.globaldecl.append('\t' + cdecref) + self.globaldecl += [ + "\treturn result;", + " err:", + "\tPy_DECREF(result);", + "\treturn NULL;", + "}", + ] + + def generate_conv_from_obj(self): + # build a function that decodes a PyTupleObject and store it + # into our custom struct format. + self.globaldecl += [ + "static %s CONV_FROM_OBJ_%s(PyObject* obj)" % (self.typename, + self.typename), + "{", + "\t%s result;" % self.typename, + "\tif (PyTuple_Size(obj) != %d) { /* also if not a tuple */" % + len(self.itemtypes), + "\t\tPyErr_SetString(PyExc_TypeError,", + '\t\t\t"tuple of length %d expected");' % len(self.itemtypes), + "\t\tgoto err0;", + "\t}", + ] + for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): self.globaldecl += [ - "\treturn %s;" % self.error_return, - "}", + "\tresult.f%d = CONV_FROM_OBJ_%s(PyTuple_GET_ITEM(obj, %d));" % + (i, ct.typename, i), + "\tif (PyErr_Occurred()) goto err%d;" % i, ] - return self._conv_from_obj + self.globaldecl += [ + "\treturn result;", + ] + # errors may occur in the middle of the construction of the struct, + # we must decref only the fields that have been successfully built + # so far... + errlabels = range(len(self.itemtypes)) or [0] + errlabels.reverse() + for i in errlabels: + self.globaldecl.append(" err%d:" % i) + if i > 0: + self.globaldecl.append('\tOP_DECREF_%s(result.f%d)' % ( + self.itemtypes[i-1].typename, i-1)) + self.globaldecl += [ + "\treturn %s;" % self.error_return, + "}", + ] From cfbolz at codespeak.net Tue Apr 12 18:03:21 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 12 Apr 2005 18:03:21 +0200 (CEST) Subject: [pypy-svn] r10554 - pypy/dist/pypy/objspace/std Message-ID: <20050412160321.E8A4A27B97@code1.codespeak.net> Author: cfbolz Date: Tue Apr 12 18:03:21 2005 New Revision: 10554 Modified: pypy/dist/pypy/objspace/std/longobject.py Log: Now W_LongObject gets annotated properly. Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Tue Apr 12 18:03:21 2005 @@ -8,8 +8,8 @@ import math -SHORT_BIT = LONG_BIT // 2 -SHORT_MASK = LONG_MASK >> SHORT_BIT +SHORT_BIT = int(LONG_BIT // 2) +SHORT_MASK = int(LONG_MASK >> SHORT_BIT) class W_LongObject(W_Object): """This is a reimplementation of longs using a list of r_uints.""" @@ -17,16 +17,12 @@ #with YYYYYY from pypy.objspace.std.longtype import long_typedef as typedef - def __init__(w_self, space, digits=None, sign=0): + def __init__(w_self, space, digits, sign=0): W_Object.__init__(w_self, space) if isinstance(digits, long): #YYYYYY digits, sign = args_from_long(digits) - if digits is None: - w_self.digits = [r_uint(0)] - w_self.sign = 0 - else: - w_self.digits = digits - w_self.sign = sign + w_self.digits = digits + w_self.sign = sign assert len(w_self.digits) != 0 or w_self.sign == 0 def longval(self): #YYYYYY @@ -54,6 +50,7 @@ def _setshort(self, index, short): a = self.digits[index // 2] + assert isinstance(short, r_uint) if index % 2 == 0: self.digits[index // 2] = ((a >> SHORT_BIT) << SHORT_BIT) + short else: @@ -313,7 +310,7 @@ break m = m >> 1 j -= 1 - assert highest_set_bit != LONG_BIT, "long not normalized" +# assert highest_set_bit != LONG_BIT, "long not normalized" j = 0 m = r_uint(1) while j <= highest_set_bit: @@ -456,7 +453,7 @@ digits.append(r_uint(l & LONG_MASK)) l = l >> LONG_BIT if sign == 0: - digits = [0] + digits = [r_uint(0)] return digits, sign @@ -532,7 +529,7 @@ def _x_mul(a, b, space): size_a = len(a.digits) * 2 size_b = len(b.digits) * 2 - z = W_LongObject(space, [0] * ((size_a + size_b) // 2), 1) + z = W_LongObject(space, [r_uint(0)] * ((size_a + size_b) // 2), 1) i = 0 while i < size_a: carry = r_uint(0) @@ -540,13 +537,13 @@ j = 0 while j < size_b: carry += z._getshort(i + j) + b._getshort(j) * f - z._setshort(i + j, carry & SHORT_MASK) + z._setshort(i + j, r_uint(carry & SHORT_MASK)) carry = carry >> SHORT_BIT j += 1 while carry != 0: assert i + j < size_a + size_b carry += z._getshort(i + j) - z._setshort(i + j, carry & SHORT_MASK) + z._setshort(i + j, r_uint(carry & SHORT_MASK)) carry = carry >> SHORT_BIT j += 1 i += 1 From pedronis at codespeak.net Tue Apr 12 18:11:39 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 12 Apr 2005 18:11:39 +0200 (CEST) Subject: [pypy-svn] r10555 - pypy/dist/pypy/annotation Message-ID: <20050412161139.5522927B97@code1.codespeak.net> Author: pedronis Date: Tue Apr 12 18:11:39 2005 New Revision: 10555 Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/model.py pypy/dist/pypy/annotation/unaryop.py Log: fix/improve unsigned handling for some ops Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Tue Apr 12 18:11:39 2005 @@ -152,8 +152,10 @@ # unsignedness is considered a rare and contagious disease def union((int1, int2)): - return SomeInteger(nonneg = int1.nonneg and int2.nonneg, - unsigned = int1.unsigned or int2.unsigned) + unsigned = int1.unsigned or int2.unsigned + return SomeInteger(nonneg = unsigned or (int1.nonneg and int2.nonneg), + unsigned=unsigned) + add = mul = div = floordiv = mod = or_ = xor = union @@ -164,8 +166,9 @@ return SomeInteger(unsigned = int1.unsigned or int2.unsigned) def and_((int1, int2)): - return SomeInteger(nonneg = int1.nonneg or int1.nonneg, - unsigned = int1.unsigned or int2.unsigned) + unsigned = int1.unsigned or int2.unsigned + return SomeInteger(nonneg = unsigned or int1.nonneg or int1.nonneg, + unsigned = unsigned) def lshift((int1, int2)): if int1.unsigned: @@ -175,6 +178,8 @@ rshift = lshift def pow((int1, int2), obj3): + if int1.unsigned or int2.unsigned or getattr(obj3, 'unsigned', False): + return SomeInteger(unsigned=True) return SomeInteger() class __extend__(pairtype(SomeBool, SomeBool)): Modified: pypy/dist/pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/dist/pypy/annotation/model.py Tue Apr 12 18:11:39 2005 @@ -104,7 +104,7 @@ "Stands for an object which is known to be an integer." knowntype = int def __init__(self, nonneg=False, unsigned=False): - self.nonneg = nonneg + self.nonneg = unsigned or nonneg self.unsigned = unsigned # pypy.tool.rarithmetic.r_uint Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Tue Apr 12 18:11:39 2005 @@ -143,9 +143,13 @@ int = pos def neg(self): + if self.unsigned: + return SomeInteger(unsigned=True) return SomeInteger() def abs(self): + if self.unsigned: + return self return SomeInteger(nonneg=True) From cfbolz at codespeak.net Tue Apr 12 18:38:22 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 12 Apr 2005 18:38:22 +0200 (CEST) Subject: [pypy-svn] r10556 - pypy/dist/pypy/objspace/std Message-ID: <20050412163822.6EA6127B97@code1.codespeak.net> Author: cfbolz Date: Tue Apr 12 18:38:22 2005 New Revision: 10556 Modified: pypy/dist/pypy/objspace/std/longobject.py Log: Those aren't actually needed. Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Tue Apr 12 18:38:22 2005 @@ -310,7 +310,7 @@ break m = m >> 1 j -= 1 -# assert highest_set_bit != LONG_BIT, "long not normalized" + assert highest_set_bit != LONG_BIT, "long not normalized" j = 0 m = r_uint(1) while j <= highest_set_bit: @@ -537,13 +537,13 @@ j = 0 while j < size_b: carry += z._getshort(i + j) + b._getshort(j) * f - z._setshort(i + j, r_uint(carry & SHORT_MASK)) + z._setshort(i + j, carry & SHORT_MASK) carry = carry >> SHORT_BIT j += 1 while carry != 0: assert i + j < size_a + size_b carry += z._getshort(i + j) - z._setshort(i + j, r_uint(carry & SHORT_MASK)) + z._setshort(i + j, carry & SHORT_MASK) carry = carry >> SHORT_BIT j += 1 i += 1 From pedronis at codespeak.net Tue Apr 12 18:43:15 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 12 Apr 2005 18:43:15 +0200 (CEST) Subject: [pypy-svn] r10557 - pypy/dist/pypy/annotation Message-ID: <20050412164315.6E2EE27B97@code1.codespeak.net> Author: pedronis Date: Tue Apr 12 18:43:15 2005 New Revision: 10557 Modified: pypy/dist/pypy/annotation/bookkeeper.py Log: restablish the more general results invariant in the presence of argtypes specialisation Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Tue Apr 12 18:43:15 2005 @@ -46,6 +46,10 @@ self.pbccache = {} self.pbctypes = {} self.seen_mutable = {} + + # mapping position -> most general result, for call sites calling + # argtypes specialized functions + self.argtypes_spec_callsite_results = {} self.pbc_maximal_access_sets = UnionFind(PBCAccessSet) @@ -234,13 +238,13 @@ if isinstance(func, (type, ClassType)) and \ func.__module__ != '__builtin__': cls = func - x = getattr(cls, "_specialize_", False) - if x: - if x == "location": + specialize = getattr(cls, "_specialize_", False) + if specialize: + if specialize == "location": cls = self.specialize_by_key(cls, self.position_key) else: raise Exception, \ - "unsupported specialization type '%s'"%(x,) + "unsupported specialization type '%s'"%(specialize,) classdef = self.getclassdef(cls) s_instance = SomeInstance(classdef) @@ -279,19 +283,18 @@ func = func.im_func assert isinstance(func, FunctionType), "[%s] expected function, got %r" % (self.whereami(), func) # do we need to specialize this function in several versions? - x = getattr(func, '_specialize_', False) - #if not x: - # x = 'argtypes' - if x: - if x == 'argtypes': + specialize = getattr(func, '_specialize_', False) + + if specialize: + if specialize == 'argtypes': key = short_type_name(args) func = self.specialize_by_key(func, key, func.__name__+'__'+key) - elif x == "location": + elif specialize == "location": # fully specialize: create one version per call position func = self.specialize_by_key(func, self.position_key) else: - raise Exception, "unsupported specialization type '%s'"%(x,) + raise Exception, "unsupported specialization type '%s'"%(specialize,) elif func.func_code.co_flags & CO_VARARGS: # calls to *arg functions: create one version per number of args @@ -318,7 +321,20 @@ assert False, 'ABOUT TO IGNORE %r' % e # we should take care that we don't end up here anymore return SomeImpossibleValue() - return self.annotator.recursivecall(func, self.position_key, inputcells) + r = self.annotator.recursivecall(func, self.position_key, inputcells) + + # in the case of argtypes specialisation we may have been calling a + # different function for the site which could also be just partially analysed, + # we need to force unifying all past and present results for the site + # in order to guarantee the more general results invariant. + if specialize == 'argtypes': + prev_r = self.argtypes_spec_callsite_results.get(self.position_key) + if prev_r is not None: + r = unionof(prev_r, r) + self.argtypes_spec_callsite_results[self.position_key] = r + return r + + def whereami(self): return self.annotator.whereami(self.position_key) From arigo at codespeak.net Tue Apr 12 19:17:14 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 12 Apr 2005 19:17:14 +0200 (CEST) Subject: [pypy-svn] r10558 - in pypy/dist/pypy/translator: . genc Message-ID: <20050412171714.AE09A27B97@code1.codespeak.net> Author: arigo Date: Tue Apr 12 19:17:14 2005 New Revision: 10558 Added: pypy/dist/pypy/translator/genc/list_include.h (contents, props changed) pypy/dist/pypy/translator/genc/list_template.h (contents, props changed) pypy/dist/pypy/translator/genc/listtype.py (contents, props changed) Modified: pypy/dist/pypy/translator/genc/ctyper.py pypy/dist/pypy/translator/genc/functype.py pypy/dist/pypy/translator/genc/g_include.h pypy/dist/pypy/translator/genc/tupletype.py pypy/dist/pypy/translator/typer.py Log: - added a draft (disabled) list support. - moved the control of how to specialize operations to the type of their first argument. Modified: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- pypy/dist/pypy/translator/genc/ctyper.py (original) +++ pypy/dist/pypy/translator/genc/ctyper.py Tue Apr 12 19:17:14 2005 @@ -5,12 +5,13 @@ from __future__ import generators from pypy.translator.typer import Specializer from pypy.objspace.flow.model import Constant, Variable, SpaceOperation -from pypy.annotation.model import SomeInteger, SomePBC, SomeTuple +from pypy.annotation.model import SomeInteger, SomePBC, SomeTuple, SomeList from pypy.translator.genc.pyobjtype import CPyObjectType from pypy.translator.genc.inttype import CIntType from pypy.translator.genc.nonetype import CNoneType from pypy.translator.genc.functype import CFuncPtrType from pypy.translator.genc.tupletype import CTupleType +from pypy.translator.genc.listtype import CListType import types from pypy.interpreter.pycode import CO_VARARGS @@ -65,59 +66,34 @@ besttype = self.annotator.translator.getconcretetype( CTupleType, tuple(items_ct)) + # -- DISABLED while it's incomplete + #elif isinstance(s_value, SomeList): + # item_ct = self.annotation2concretetype(s_value.s_item) + # besttype = self.annotator.translator.getconcretetype( + # CListType, item_ct) + return besttype def specialized_op(self, op, bindings): - if op.opname == 'simple_call': - s_callable = self.annotator.binding(op.args[0], True) - if s_callable is not None: - ct = self.annotation2concretetype(s_callable) - if isinstance(ct, CFuncPtrType): - argtypes = [ct] - argtypes += ct.argtypes - yield self.typed_op(op, argtypes, ct.returntype, - newopname='direct_call') - return - - if op.opname == 'newtuple': - s_tuple = self.annotator.binding(op.result, True) - if s_tuple is not None: - ctup = self.annotation2concretetype(s_tuple) - if isinstance(ctup, CTupleType): - TInt = self.TInt - TNone = self.TNone - v2 = op.result - yield self.typed_op(SpaceOperation('tuple_new', [], v2), - [], ctup) - for i in range(len(ctup.itemtypes)): - vitem = op.args[i] - ct = ctup.itemtypes[i] - v0 = Variable() - yield self.typed_op(SpaceOperation('tuple_setitem', - [v2, Constant(i), vitem], v0), # args, ret - [ctup, TInt, ct ], TNone) # a_t, r_t - yield self.incref_op(vitem) - return - - if op.opname == 'getitem': - s_obj = self.annotator.binding(op.args[0], True) - if s_obj is not None: - ctup = self.annotation2concretetype(s_obj) - if isinstance(ctup, CTupleType): - if isinstance(op.args[1], Constant): - index = op.args[1].value - try: - ct = ctup.itemtypes[index] - except IndexError: - print "*** getitem: IndexError in tuple access" - else: - yield self.typed_op(op, [ctup, self.TInt], ct, - newopname='tuple_getitem') - yield self.incref_op(op.result) - return - + if op.opname in ('newtuple', 'newlist'): + # operations that are controlled by their return type + s_binding = self.annotator.binding(op.result, True) + elif bindings: + # operations are by default controlled by their 1st arg + s_binding = bindings[0] + else: + s_binding = None + + if s_binding is not None: + ct = self.annotation2concretetype(s_binding) + meth = getattr(ct, 'spec_' + op.opname, None) + if meth: + try: + return meth(self, op) + except NotImplementedError: + pass # fall-back - yield Specializer.specialized_op(self, op, bindings) + return Specializer.specialized_op(self, op, bindings) def incref_op(self, v): Modified: pypy/dist/pypy/translator/genc/functype.py ============================================================================== --- pypy/dist/pypy/translator/genc/functype.py (original) +++ pypy/dist/pypy/translator/genc/functype.py Tue Apr 12 19:17:14 2005 @@ -35,3 +35,9 @@ yield genc.loadincludefile('func_template.h') % { 'typename': self.typename, } + + def spec_simple_call(self, typer, op): + argtypes = [self] + argtypes += self.argtypes + yield typer.typed_op(op, argtypes, self.returntype, + newopname='direct_call') Modified: pypy/dist/pypy/translator/genc/g_include.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_include.h (original) +++ pypy/dist/pypy/translator/genc/g_include.h Tue Apr 12 19:17:14 2005 @@ -15,6 +15,7 @@ #include "g_module.h" #include "int_include.h" +#include "list_include.h" #include "none_include.h" #include "pyobj_include.h" #include "tuple_include.h" Added: pypy/dist/pypy/translator/genc/list_include.h ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/list_include.h Tue Apr 12 19:17:14 2005 @@ -0,0 +1,23 @@ + +/************************************************************/ + /*** C header subsection: generic operations on lists ***/ + + +#define OP_LIST_FASTGETITEM(s,i,r,err) r = s->items[i]; +#define OP_LIST_FASTSETITEM(s,i,o,r,err) s->items[i] = o; r = 0; +#define OP_LIST_SETCOUNT(s,n,r,err) s->count = n; r = 0; + +#define OP_LIST_GETITEM(s,i,r,err) \ + if (((unsigned) i) >= s->count) { \ + PyErr_SetString(PyExc_IndexError, "list index out of range"); \ + FAIL(err) \ + } \ + r = s->items[i]; + +#define OP_LIST_SETITEM(s,i,o,r,err) \ + if (((unsigned) i) >= s->count) { \ + PyErr_SetString(PyExc_IndexError, "list index out of range"); \ + FAIL(err) \ + } \ + s->items[i] = o; \ + r = 0; Added: pypy/dist/pypy/translator/genc/list_template.h ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/list_template.h Tue Apr 12 19:17:14 2005 @@ -0,0 +1,111 @@ + +/************************************************************/ + /*** C header template: list structure %(typename)s ***/ + +/* NB. list_N is the type "pointer to struct s_list_N" */ + +typedef struct s_%(typename)s { + int refcount; + int count; + %(itemtypename)s* items; +} *%(typename)s; + +static %(typename)s %(typename)s_allocate(int count) +{ + %(typename)s lst = (%(typename)s) + PyObject_Malloc(sizeof(struct s_%(typename)s)); + if (lst == NULL) + return (%(typename)s) PyErr_NoMemory(); + lst->refcount = 1; + lst->count = 0; /* NOTE! initialized to 0, increase only when + real items are put into the list */ + if (count == 0) { + lst->items = NULL; + } + else { + size_t size = count * sizeof(%(itemtypename)s); + /* XXX overflow checking? */ + lst->items = (%(itemtypename)s*) PyMem_Malloc(size); + if (lst->items == NULL) { + PyObject_Free(lst); + return (%(typename)s) PyErr_NoMemory(); + } + } + return lst; +} + +static int %(typename)s_resize(%(typename)s lst, int ncount) +{ + size_t nsize = ncount * sizeof(%(itemtypename)s); + /* XXX overflow checking? */ + char* p = PyMem_Realloc((char*) lst->items, nsize); + if (p == NULL) { + PyErr_NoMemory(); + return -1; + } + lst->count = ncount; + lst->items = (%(itemtypename)s*) p; + return 0; +} + +static void %(typename)s_dealloc(%(typename)s lst) +{ + int i; + for (i=lst->count; i--; ) { + OP_DECREF_%(itemtypename)s(lst->items[i]) + } + PyMem_Free((char*) lst->items); + PyObject_Free(lst); +} + +#define OP_INCREF_%(typename)s(lst) (lst)->refcount++; +#define OP_DECREF_%(typename)s(lst) if (!--(lst)->refcount) \ + %(typename)s_dealloc(lst); + +/* Cannot convert between representations, because lists are mutable! + Changes to the original object don't show up in the converted one and + vice-versa. */ + +#define CONV_TO_OBJ_%(typename)s cannot do this! +#define CONV_FROM_OBJ_%(typename)s cannot do this! + +/* static PyObject* CONV_TO_OBJ_%(typename)s(%(typename)s lst) */ +/* { */ +/* int i, n = lst->count; */ +/* PyObject* result = PyList_New(n); */ +/* if (result == NULL) return NULL; */ +/* for (i=0; iitems[i]); */ +/* if (o == NULL) { */ +/* Py_DECREF(result); */ +/* return NULL; */ +/* } */ +/* PyList_SET_ITEM(result, i, o); */ +/* } */ +/* return result; */ +/* } */ + +/* static %(typename)s CONV_FROM_OBJ_%(typename)s(PyObject *lst) */ +/* { */ +/* %(typename)s result; */ +/* int i, n; */ +/* n = PyList_Size(lst); */ +/* if (n < 0) */ +/* return NULL; */ +/* result = %(typename)s_allocate(n); */ +/* if (result == NULL) */ +/* return NULL; */ +/* for (i=0; iitems[i] = CONV_FROM_OBJ_%(itemtypename)s( */ +/* PyList_GET_ITEM(lst, i)); */ +/* if (PyErr_Occurred()) { */ +/* %(typename)s_dealloc(result); */ +/* return NULL; */ +/* } */ +/* result->count = i+1; */ +/* } */ +/* return result; */ +/* } */ + +#define OP_ALLOC_%(TYPENAME)s(n, r, err) \ + if (!(r=%(typename)s_allocate(n))) FAIL(err) Added: pypy/dist/pypy/translator/genc/listtype.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/listtype.py Tue Apr 12 19:17:14 2005 @@ -0,0 +1,88 @@ +from __future__ import generators +from pypy.translator.genc.basetype import CType +from pypy.objspace.flow.model import SpaceOperation, Constant, Variable + + +class CListType(CType): + error_return = 'NULL' + + Counter = 0 + + def __init__(self, translator, itemtype): + super(CListType, self).__init__(translator) + self.itemtype = itemtype + self.itemtypename = itemtype.typename + self.typename = 'list_%d' % CListType.Counter + CListType.Counter += 1 + self.cnames = {} + self.globaldecl = [] + + def debugname(self): + # a nice textual name for debugging... + return 'list(%s)' % (self.itemtype.debugname(),) + + def init_globals(self, genc): + yield genc.loadincludefile('list_template.h') % { + 'typename' : self.typename, + 'TYPENAME' : self.typename.upper(), + 'itemtypename': self.itemtypename, + } + + def collect_globals(self, genc): + result = self.globaldecl + self.globaldecl = [] + return result + + def nameof(self, lst, debug=None): + key = Constant(lst).key + try: + return self.cnames[key] + except KeyError: + genc = self.genc() + name = genc.namespace.uniquename('g%dlst' % len(lst)) + self.globaldecl.append('struct s_%s %s = {' % (self.typename, name)) + self.globaldecl.append('\t1, /* refcount */') + self.globaldecl.append('\t%d, /* count */' % len(lst)) + if len(lst) == 0: + self.globaldecl.append('\tNULL /* items */') + else: + self.globaldecl.append('\t{ /* items */') + ct = self.itemtype + trail = [','] * (len(lst)-1) + [''] + for x, comma in zip(lst, trail): + self.globaldecl.append('\t\t' + + genc.nameofvalue(x, ct) + + comma) + self.globaldecl.append('\t}') + self.globaldecl.append('}') + self.cnames[key] = name + return name + + # ____________________________________________________________ + + def spec_newlist(self, typer, op): + TInt = typer.TInt + TNone = typer.TNone + ct = self.itemtype + n = len(op.args) + v2 = op.result + yield typer.typed_op(SpaceOperation('alloc_'+self.typename, + [Constant(n)], v2), # args, ret + [TInt ], self) # args_t, ret_t + for i in range(len(op.args)): + vitem = op.args[i] + v0 = Variable() + yield typer.typed_op(SpaceOperation('list_fastsetitem', + [v2, Constant(i), vitem], v0), # args, ret + [self, TInt, ct ], TNone) # a_t,r_t + yield typer.incref_op(vitem) + v0 = Variable() + yield typer.typed_op(SpaceOperation('list_setcount', + [v2, Constant(n)], v0), # args, ret + [self, TInt, ], TNone) # a_t,r_t + + def spec_getitem(self, typer, op): + ct = self.itemtype + yield typer.typed_op(op, [self, typer.TInt], ct, + newopname='list_getitem') + yield typer.incref_op(op.result) Modified: pypy/dist/pypy/translator/genc/tupletype.py ============================================================================== --- pypy/dist/pypy/translator/genc/tupletype.py (original) +++ pypy/dist/pypy/translator/genc/tupletype.py Tue Apr 12 19:17:14 2005 @@ -35,6 +35,7 @@ self.generate_xxxref('DEC') self.generate_conv_to_obj() self.generate_conv_from_obj() + self.generate_new_tuple() def collect_globals(self, genc): result = self.globaldecl @@ -127,3 +128,35 @@ "\treturn %s;" % self.error_return, "}", ] + + def generate_new_tuple(self): + macroargs = ', '.join(['x%d' % i for i in range(len(self.itemtypes))] + + ['res', 'err']) + self.globaldecl += [ + "#define OP_NEW_%s(%s) \\" % (self.typename.upper(), macroargs), + ] + for i, ct in zip(range(len(self.itemtypes)), self.itemtypes): + self.globaldecl += [ + "\tres.f%d = x%d; OP_INCREF_%s(res.f%d) \\" % + (i, i, ct.typename, i), + ] + self.globaldecl.append('\t/* end */') + + # ____________________________________________________________ + + def spec_newtuple(self, typer, op): + yield typer.typed_op(op, self.itemtypes, self, + newopname = 'new_%s' % self.typename) + + def spec_getitem(self, typer, op): + if not isinstance(op.args[1], Constant): + raise NotImplementedError + index = op.args[1].value + try: + ct = self.itemtypes[index] + except IndexError: + print "*** getitem: IndexError in tuple access" + raise NotImplementedError + yield typer.typed_op(op, [self, typer.TInt], ct, + newopname='tuple_getitem') + yield typer.incref_op(op.result) Modified: pypy/dist/pypy/translator/typer.py ============================================================================== --- pypy/dist/pypy/translator/typer.py (original) +++ pypy/dist/pypy/translator/typer.py Tue Apr 12 19:17:14 2005 @@ -36,7 +36,8 @@ def settype(self, a, concretetype): """Set the concretetype of a Variable or Constant.""" if hasattr(a, 'concretetype') and a.concretetype != concretetype: - raise TyperError, "inconsitent type for %r" % (a,) + raise TyperError, "inconsitent type for %r: %r != %r" % ( + a, a.concretetype, concretetype) a.concretetype = concretetype def setbesttype(self, a): From arigo at codespeak.net Tue Apr 12 19:21:22 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 12 Apr 2005 19:21:22 +0200 (CEST) Subject: [pypy-svn] r10559 - pypy/dist/pypy/translator/genc Message-ID: <20050412172122.0657C27B97@code1.codespeak.net> Author: arigo Date: Tue Apr 12 19:21:21 2005 New Revision: 10559 Modified: pypy/dist/pypy/translator/genc/ctyper.py Log: Laziness bites! Modified: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- pypy/dist/pypy/translator/genc/ctyper.py (original) +++ pypy/dist/pypy/translator/genc/ctyper.py Tue Apr 12 19:21:21 2005 @@ -89,7 +89,7 @@ meth = getattr(ct, 'spec_' + op.opname, None) if meth: try: - return meth(self, op) + return list(meth(self, op)) except NotImplementedError: pass # fall-back From pedronis at codespeak.net Tue Apr 12 19:35:35 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 12 Apr 2005 19:35:35 +0200 (CEST) Subject: [pypy-svn] r10561 - pypy/dist/pypy/annotation Message-ID: <20050412173535.D870227B9C@code1.codespeak.net> Author: pedronis Date: Tue Apr 12 19:35:35 2005 New Revision: 10561 Modified: pypy/dist/pypy/annotation/bookkeeper.py Log: better safe than sorry Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Tue Apr 12 19:35:35 2005 @@ -286,6 +286,7 @@ specialize = getattr(func, '_specialize_', False) if specialize: + base_func = func if specialize == 'argtypes': key = short_type_name(args) func = self.specialize_by_key(func, key, @@ -328,10 +329,11 @@ # we need to force unifying all past and present results for the site # in order to guarantee the more general results invariant. if specialize == 'argtypes': - prev_r = self.argtypes_spec_callsite_results.get(self.position_key) + key = (base_func, self.position_key) + prev_r = self.argtypes_spec_callsite_results.get(key) if prev_r is not None: r = unionof(prev_r, r) - self.argtypes_spec_callsite_results[self.position_key] = r + self.argtypes_spec_callsite_results[key] = r return r From pedronis at codespeak.net Tue Apr 12 20:00:58 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 12 Apr 2005 20:00:58 +0200 (CEST) Subject: [pypy-svn] r10562 - pypy/dist/pypy/annotation Message-ID: <20050412180058.8C0C627B97@code1.codespeak.net> Author: pedronis Date: Tue Apr 12 20:00:58 2005 New Revision: 10562 Modified: pypy/dist/pypy/annotation/builtin.py Log: small fix Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Tue Apr 12 20:00:58 2005 @@ -111,7 +111,7 @@ return factory.create() def builtin_apply(*stuff): - getbookkeeper.warning("ignoring apply%r" % (stuff,)) + getbookkeeper().warning("ignoring apply%r" % (stuff,)) return SomeObject() def builtin_compile(*stuff): From pedronis at codespeak.net Tue Apr 12 20:28:50 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 12 Apr 2005 20:28:50 +0200 (CEST) Subject: [pypy-svn] r10563 - pypy/dist/pypy/annotation Message-ID: <20050412182850.44CFD27B97@code1.codespeak.net> Author: pedronis Date: Tue Apr 12 20:28:50 2005 New Revision: 10563 Modified: pypy/dist/pypy/annotation/builtin.py Log: fix Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Tue Apr 12 20:28:50 2005 @@ -152,7 +152,7 @@ return s_obj def rarith_ovfcheck_lshift(s_obj1, s_obj2): - if isinstance(s_obj, SomeInteger) and s_obj.unsigned: + if isinstance(s_obj1, SomeInteger) and s_obj1.unsigned: getbookkeeper().warning("ovfcheck_lshift with unsigned") return SomeInteger() From pedronis at codespeak.net Tue Apr 12 22:13:06 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 12 Apr 2005 22:13:06 +0200 (CEST) Subject: [pypy-svn] r10564 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050412201306.373C627B97@code1.codespeak.net> Author: pedronis Date: Tue Apr 12 22:13:05 2005 New Revision: 10564 Modified: pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/objspace/std/test/test_longobject.py Log: some more tests and some fixes for longobject conversions Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Tue Apr 12 22:13:05 2005 @@ -11,6 +11,10 @@ SHORT_BIT = int(LONG_BIT // 2) SHORT_MASK = int(LONG_MASK >> SHORT_BIT) +SIGN_BIT = LONG_BIT-1 +SIGN_MASK = r_uint(1) << SIGN_BIT +NONSIGN_MASK = ~SIGN_MASK + class W_LongObject(W_Object): """This is a reimplementation of longs using a list of r_uints.""" #All functions that still rely on the underlying Python's longs are marked @@ -106,11 +110,12 @@ return W_LongObject(space, [r_uint(abs(w_intobj.intval))], sign) def int__Long(space, w_value): - if (len(w_value.digits) == 1 and - w_value.digits[0] & (r_uint(1) << LONG_BIT) == 0): - return space.newint(int(w_value.digits[0]) * w_value.sign) - else: - return w_value # 9999999999999L.__int__() == 9999999999999L + if len(w_value.digits) == 1: + if w_value.digits[0] & SIGN_MASK == 0: + return space.newint(int(w_value.digits[0]) * w_value.sign) + elif w_value.sign == -1 and w_value.digits[0] & NONSIGN_MASK == 0: + return space.newint(intmask(w_value.digits[0])) + return w_value # 9999999999999L.__int__() == 9999999999999L def float__Long(space, w_longobj): #YYYYYY try: @@ -123,12 +128,13 @@ return W_LongObject(space, *args_from_long(long(w_floatobj.floatval))) def int_w__Long(space, w_value): - if (len(w_value.digits) == 1 and - w_value.digits[0] & (r_uint(1) << LONG_BIT) == 0): - return int(w_value.digits[0]) * w_value.sign - else: - raise OperationError(space.w_OverflowError, - space.wrap("long int too large to convert to int")) + if len(w_value.digits) == 1: + if w_value.digits[0] & SIGN_MASK == 0: + return int(w_value.digits[0]) * w_value.sign + elif w_value.sign == -1 and w_value.digits[0] & NONSIGN_MASK == 0: + return intmask(w_value.digits[0]) + raise OperationError(space.w_OverflowError, + space.wrap("long int too large to convert to int")) def repr__Long(space, w_long): #YYYYYY return space.wrap(repr(w_long.longval())) Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_longobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Tue Apr 12 22:13:05 2005 @@ -73,6 +73,28 @@ assert lobj.long__Int(self.space, self.space.wrap(42)).longval() == 42 assert lobj.long__Int(self.space, self.space.wrap(-42)).longval() == -42 + def test_conversions(self): + space = self.space + for v in (0,1,-1,sys.maxint,-sys.maxint-1): + assert lobj.W_LongObject(self.space, *lobj.args_from_long(v)).longval() == v + w_v = space.newint(v) + for w_lv in (lobj.long__Int(space, w_v), lobj.delegate_Int2Long(w_v)): + assert w_lv.longval() == v + assert lobj.int_w__Long(space, w_lv) == v + assert space.is_true(space.isinstance(lobj.int__Long(space, w_lv), space.w_int)) + assert space.eq_w(lobj.int__Long(space, w_lv), w_v) + + w_toobig_lv1 = lobj.W_LongObject(space, *lobj.args_from_long(sys.maxint+1)) + assert w_toobig_lv1.longval() == sys.maxint+1 + w_toobig_lv2 = lobj.W_LongObject(space, *lobj.args_from_long(sys.maxint+2)) + assert w_toobig_lv2.longval() == sys.maxint+2 + w_toobig_lv3 = lobj.W_LongObject(space, *lobj.args_from_long(-sys.maxint-2)) + assert w_toobig_lv3.longval() == -sys.maxint-2 + + for w_lv in (w_toobig_lv1, w_toobig_lv2, w_toobig_lv3): + space.raises_w(space.w_OverflowError, lobj.int_w__Long, space, w_lv) + assert space.is_true(space.isinstance(lobj.int__Long(space, w_lv), space.w_long)) + def test_pow_lll(self): x = 10L y = 2L From cfbolz at codespeak.net Wed Apr 13 01:02:22 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Wed, 13 Apr 2005 01:02:22 +0200 (CEST) Subject: [pypy-svn] r10567 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050412230222.4A00927B8A@code1.codespeak.net> Author: cfbolz Date: Wed Apr 13 01:02:22 2005 New Revision: 10567 Modified: pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/objspace/std/test/test_longobject.py Log: More bugfixes for the long implementation. Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Wed Apr 13 01:02:22 2005 @@ -44,6 +44,8 @@ while i != 0 and self.digits[i] == 0: self.digits.pop(-1) i -= 1 + if len(self.digits) == 1 and self.digits[0] == 0: + self.sign = 0 def _getshort(self, index): a = self.digits[index // 2] @@ -115,7 +117,8 @@ return space.newint(int(w_value.digits[0]) * w_value.sign) elif w_value.sign == -1 and w_value.digits[0] & NONSIGN_MASK == 0: return space.newint(intmask(w_value.digits[0])) - return w_value # 9999999999999L.__int__() == 9999999999999L + #subtypes of long are converted to long! + return long__Long(space, w_value) def float__Long(space, w_longobj): #YYYYYY try: @@ -134,7 +137,7 @@ elif w_value.sign == -1 and w_value.digits[0] & NONSIGN_MASK == 0: return intmask(w_value.digits[0]) raise OperationError(space.w_OverflowError, - space.wrap("long int too large to convert to int")) + space.wrap("long int too large to convert to int")) def repr__Long(space, w_long): #YYYYYY return space.wrap(repr(w_long.longval())) @@ -162,9 +165,15 @@ ld1 = len(w_long1.digits) ld2 = len(w_long2.digits) if ld1 > ld2: - return space.newbool(False) + if w_long2.sign > 0: + return space.newbool(False) + else: + return space.newbool(True) elif ld1 < ld2: - return space.newbool(True) + if w_long2.sign > 0: + return space.newbool(True) + else: + return space.newbool(False) i = ld1 - 1 while i >= 0: d1 = w_long1.digits[i] @@ -285,6 +294,8 @@ space.wrap("pow() 3rd argument cannot be 0")) result = W_LongObject(space, [r_uint(1)], 1) if lw.sign == 0: + if lz is not None: + result = mod__Long_Long(space, result, lz) return result if lz is not None: temp = mod__Long_Long(space, lv, lz) Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_longobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Wed Apr 13 01:02:22 2005 @@ -95,6 +95,7 @@ space.raises_w(space.w_OverflowError, lobj.int_w__Long, space, w_lv) assert space.is_true(space.isinstance(lobj.int__Long(space, w_lv), space.w_long)) + def test_pow_lll(self): x = 10L y = 2L @@ -123,6 +124,13 @@ v = lobj.pow__Long_Long_None(self.space, f1, f2, self.space.w_None) assert v.longval() == x ** y + def test_normalize(self): + f1 = lobj.W_LongObject(self.space, [lobj.r_uint(1), lobj.r_uint(0)], 1) + f1._normalize() + assert len(f1.digits) == 1 + f0 = lobj.W_LongObject(self.space, [lobj.r_uint(0)], 0) + assert self.space.is_true( + self.space.eq(lobj.sub__Long_Long(self.space, f1, f1), f0)) class AppTestLong: def test_add(self): @@ -136,4 +144,12 @@ def test_mul(self): assert 363L * 2 ** 40 == 363L << 40 - + def test_conversion(self): + class long2(long): + pass + x = long2(1L<<100) + y = int(x) + assert type(y) == long + + def test_pow(self): + assert pow(0L, 0L, 1L) == 0L From pedronis at codespeak.net Wed Apr 13 13:16:11 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 13 Apr 2005 13:16:11 +0200 (CEST) Subject: [pypy-svn] r10572 - in pypy/dist/pypy: interpreter objspace/std objspace/std/test Message-ID: <20050413111611.269BC27B5C@code1.codespeak.net> Author: pedronis Date: Wed Apr 13 13:16:10 2005 New Revision: 10572 Modified: pypy/dist/pypy/interpreter/baseobjspace.py pypy/dist/pypy/objspace/std/default.py pypy/dist/pypy/objspace/std/intobject.py pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/objspace/std/objspace.py pypy/dist/pypy/objspace/std/test/test_intobject.py pypy/dist/pypy/objspace/std/test/test_longobject.py pypy/dist/pypy/objspace/std/test/test_stdobjspace.py Log: implementation of uint_w with some tests Modified: pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/dist/pypy/interpreter/baseobjspace.py Wed Apr 13 13:16:10 2005 @@ -458,6 +458,7 @@ # str_w(w_str) -> str # int_w(w_ival or w_long_ival) -> ival # float_w(w_floatval) -> floatval +# uint_w(w_ival or w_long_ival) -> r_uint_val (unsigned int value) #interpclass_w(w_interpclass_inst or w_obj) -> interpclass_inst|w_obj # unwrap(w_x) -> x # is_true(w_x) -> True or False @@ -473,6 +474,7 @@ 'str_w', 'int_w', 'float_w', + 'uint_w', 'interpclass_w', 'unwrap', 'is_true', Modified: pypy/dist/pypy/objspace/std/default.py ============================================================================== --- pypy/dist/pypy/objspace/std/default.py (original) +++ pypy/dist/pypy/objspace/std/default.py Wed Apr 13 13:16:10 2005 @@ -233,5 +233,8 @@ raise OperationError(space.w_TypeError, typed_unwrap_error_msg(space, "float", w_obj)) +def uint_w__ANY(space,w_obj): + raise OperationError(space.w_TypeError, + typed_unwrap_error_msg(space, "integer", w_obj)) register_all(vars()) Modified: pypy/dist/pypy/objspace/std/intobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/intobject.py (original) +++ pypy/dist/pypy/objspace/std/intobject.py Wed Apr 13 13:16:10 2005 @@ -1,6 +1,6 @@ from pypy.objspace.std.objspace import * from pypy.objspace.std.noneobject import W_NoneObject -from pypy.tool.rarithmetic import ovfcheck, ovfcheck_lshift, LONG_BIT +from pypy.tool.rarithmetic import ovfcheck, ovfcheck_lshift, LONG_BIT, r_uint """ In order to have the same behavior running @@ -38,6 +38,14 @@ def int_w__Int(space, w_int1): return int(w_int1.intval) +def uint_w__Int(space, w_int1): + intval = w_int1.intval + if intval < 0: + raise OperationError(space.w_ValueError, + space.wrap("cannot convert negative integer to unsigned")) + else: + return r_uint(intval) + def repr__Int(space, w_int1): a = w_int1.intval res = str(a) Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Wed Apr 13 13:16:10 2005 @@ -137,7 +137,16 @@ elif w_value.sign == -1 and w_value.digits[0] & NONSIGN_MASK == 0: return intmask(w_value.digits[0]) raise OperationError(space.w_OverflowError, - space.wrap("long int too large to convert to int")) + space.wrap("long int too large to convert to int")) + +def uint_w__Long(space, w_value): + if w_value.sign == -1: + raise OperationError(space.w_ValueError, + space.wrap("cannot convert negative integer to unsigned")) + if len(w_value.digits) == 1: + return w_value.digits[0] + raise OperationError(space.w_OverflowError, + space.wrap("long int too large to convert to unsigned int")) def repr__Long(space, w_long): #YYYYYY return space.wrap(repr(w_long.longval())) Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Wed Apr 13 13:16:10 2005 @@ -300,6 +300,7 @@ int_w = MultiMethod('int_w', 1, []) # returns an unwrapped int str_w = MultiMethod('str_w', 1, []) # returns an unwrapped string float_w = MultiMethod('float_w', 1, []) # returns an unwrapped float + uint_w = MultiMethod('uint_w', 1, []) # returns an unwrapped unsigned int (r_uint) # add all regular multimethods here for _name, _symbol, _arity, _specialnames in ObjSpace.MethodTable: Modified: pypy/dist/pypy/objspace/std/test/test_intobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_intobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_intobject.py Wed Apr 13 13:16:10 2005 @@ -2,6 +2,7 @@ import autopath from pypy.objspace.std import intobject as iobj from pypy.objspace.std.objspace import FailedToImplement +from pypy.tool.rarithmetic import r_uint objspacename = 'std' @@ -29,6 +30,12 @@ def test_int_w(self): assert self.space.int_w(self.space.wrap(42)) == 42 + def test_uint_w(self): + space = self.space + assert space.uint_w(space.wrap(42)) == 42 + assert isinstance(space.uint_w(space.wrap(42)), r_uint) + space.raises_w(space.w_ValueError, space.uint_w, space.wrap(-1)) + def test_repr(self): x = 1 f1 = iobj.W_IntObject(self.space, x) Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_longobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Wed Apr 13 13:16:10 2005 @@ -3,6 +3,7 @@ from random import random, randint from pypy.objspace.std import longobject as lobj from pypy.objspace.std.objspace import FailedToImplement +from pypy.tool.rarithmetic import r_uint objspacename = 'std' @@ -73,6 +74,10 @@ assert lobj.long__Int(self.space, self.space.wrap(42)).longval() == 42 assert lobj.long__Int(self.space, self.space.wrap(-42)).longval() == -42 + u = lobj.uint_w__Long(self.space, f2) + assert u == 12332 + assert isinstance(u, r_uint) + def test_conversions(self): space = self.space for v in (0,1,-1,sys.maxint,-sys.maxint-1): @@ -84,6 +89,13 @@ assert space.is_true(space.isinstance(lobj.int__Long(space, w_lv), space.w_int)) assert space.eq_w(lobj.int__Long(space, w_lv), w_v) + if v>=0: + u = lobj.uint_w__Long(space, w_lv) + assert u == v + assert isinstance(u, r_uint) + else: + space.raises_w(space.w_ValueError, lobj.uint_w__Long, space, w_lv) + w_toobig_lv1 = lobj.W_LongObject(space, *lobj.args_from_long(sys.maxint+1)) assert w_toobig_lv1.longval() == sys.maxint+1 w_toobig_lv2 = lobj.W_LongObject(space, *lobj.args_from_long(sys.maxint+2)) @@ -95,6 +107,17 @@ space.raises_w(space.w_OverflowError, lobj.int_w__Long, space, w_lv) assert space.is_true(space.isinstance(lobj.int__Long(space, w_lv), space.w_long)) + w_lmaxuint = lobj.W_LongObject(space, *lobj.args_from_long(2*sys.maxint+1)) + w_toobig_lv4 = lobj.W_LongObject(space, *lobj.args_from_long(2*sys.maxint+2)) + + u = lobj.uint_w__Long(space, w_lmaxuint) + assert u == 2*sys.maxint+1 + assert isinstance(u, r_uint) + + space.raises_w(space.w_ValueError, lobj.uint_w__Long, space, w_toobig_lv3) + space.raises_w(space.w_OverflowError, lobj.uint_w__Long, space, w_toobig_lv4) + + def test_pow_lll(self): x = 10L Modified: pypy/dist/pypy/objspace/std/test/test_stdobjspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_stdobjspace.py (original) +++ pypy/dist/pypy/objspace/std/test/test_stdobjspace.py Wed Apr 13 13:16:10 2005 @@ -19,6 +19,11 @@ raises(OperationError,self.space.int_w,self.space.wrap(None)) raises(OperationError,self.space.int_w,self.space.wrap("")) + def test_uint_w_non_int(self): + raises(OperationError,self.space.uint_w,self.space.wrap(None)) + raises(OperationError,self.space.uint_w,self.space.wrap("")) + + def hopeful_test_exceptions(self): self.apptest("self.failUnless(issubclass(ArithmeticError, Exception))") self.apptest("self.failIf(issubclass(ArithmeticError, KeyError))") From pedronis at codespeak.net Wed Apr 13 14:34:52 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 13 Apr 2005 14:34:52 +0200 (CEST) Subject: [pypy-svn] r10575 - in pypy/dist/pypy: tool translator translator/test Message-ID: <20050413123452.D3A9927B5C@code1.codespeak.net> Author: pedronis Date: Wed Apr 13 14:34:52 2005 New Revision: 10575 Modified: pypy/dist/pypy/tool/unionfind.py pypy/dist/pypy/translator/annrpython.py pypy/dist/pypy/translator/test/test_annrpython.py Log: let's access the pbc maximal access sets through annotator.getpbcaccesssets expore for them a mapping [] interface for querying Modified: pypy/dist/pypy/tool/unionfind.py ============================================================================== --- pypy/dist/pypy/tool/unionfind.py (original) +++ pypy/dist/pypy/tool/unionfind.py Wed Apr 13 14:34:52 2005 @@ -9,6 +9,15 @@ self.info_factory = info_factory self.root_info = {} + # mapping-like [] access + def __getitem__(self, obj): + if obj not in self.link_to_parent: + raise KeyError, obj + + ignore, rep, access = self.find(obj) + + return access + def find(self, obj): # -> new_root, obj, info if obj not in self.link_to_parent: info = self.root_info[obj] = self.info_factory(obj) Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Wed Apr 13 14:34:52 2005 @@ -117,6 +117,10 @@ self.bindings[v] = s_value yield v + def getpbcaccesssets(self): + """Return mapping const obj -> PBCAccessSet""" + return self.bookkeeper.pbc_maximal_access_sets + #___ medium-level interface ____________________________ def addpendingblock(self, fn, block, cells, called_from=None): Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Wed Apr 13 14:34:52 2005 @@ -757,15 +757,20 @@ assert l1.s_item.knowntype == int assert l2.s_item.knowntype == str - ign, rep1,acc1 = a.bookkeeper.pbc_maximal_access_sets.find(c1) - ign, rep2,acc2 = a.bookkeeper.pbc_maximal_access_sets.find(c2) - ing, rep3,acc3 = a.bookkeeper.pbc_maximal_access_sets.find(c3) + access_sets = a.getpbcaccesssets() + + ign, rep1,acc1 = access_sets.find(c1) + ign, rep2,acc2 = access_sets.find(c2) + ing, rep3,acc3 = access_sets.find(c3) assert rep1 is rep2 is rep3 assert acc1 is acc2 is acc3 assert len(acc1.objects) == 3 assert acc1.attrs == {'v1': True, 'v2': True} + + assert access_sets[c1] is acc1 + raises(KeyError, "access_sets[object()]") def test_isinstance_usigned(self): from pypy.tool.rarithmetic import r_uint From pedronis at codespeak.net Wed Apr 13 15:06:49 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 13 Apr 2005 15:06:49 +0200 (CEST) Subject: [pypy-svn] r10576 - in pypy/dist/pypy/module: builtin test Message-ID: <20050413130649.3958E27B58@code1.codespeak.net> Author: pedronis Date: Wed Apr 13 15:06:49 2005 New Revision: 10576 Modified: pypy/dist/pypy/module/builtin/compiling.py pypy/dist/pypy/module/test/test_builtin.py Log: fix eval builtins access; eval("len([])") now works Modified: pypy/dist/pypy/module/builtin/compiling.py ============================================================================== --- pypy/dist/pypy/module/builtin/compiling.py (original) +++ pypy/dist/pypy/module/builtin/compiling.py Wed Apr 13 15:06:49 2005 @@ -58,10 +58,13 @@ raise OperationError(space.w_TypeError, w('eval() arg 1 must be a string or code object')) + try: + caller = space.getexecutioncontext().framestack.top() + except IndexError: + caller = None + if w_globals is None: - try: - caller = space.getexecutioncontext().framestack.top() - except IndexError: + if caller is None: w_globals = w_locals = space.newdict([]) else: w_globals = caller.w_globals @@ -69,4 +72,12 @@ elif w_locals is None: w_locals = w_globals + try: + space.getitem(w_globals, space.wrap('__builtins__')) + except OperationError, e: + if not e.match(space, space.w_KeyError): + raise + if caller is not None: + space.setitem(w_globals, space.wrap('__builtins__'), caller.builtin) + return space.interpclass_w(w_codeobj).exec_code(space, w_globals, w_locals) Modified: pypy/dist/pypy/module/test/test_builtin.py ============================================================================== --- pypy/dist/pypy/module/test/test_builtin.py (original) +++ pypy/dist/pypy/module/test/test_builtin.py Wed Apr 13 15:06:49 2005 @@ -320,6 +320,8 @@ def test_eval(self): assert eval("1+2") == 3 assert eval(" \t1+2\n") == 3 + assert eval("len([])") == 0 + assert eval("len([])", {}) == 0 def test_compile(self): co = compile('1+2', '?', 'eval') From arigo at codespeak.net Wed Apr 13 15:13:40 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 13 Apr 2005 15:13:40 +0200 (CEST) Subject: [pypy-svn] r10578 - pypy/dist/pypy/module/builtin Message-ID: <20050413131340.5BBB427B64@code1.codespeak.net> Author: arigo Date: Wed Apr 13 15:13:40 2005 New Revision: 10578 Modified: pypy/dist/pypy/module/builtin/compiling.py Log: Only PyFrame objects have a .builtin attribute. Try to get at the builtins from the frame's globals instead. Modified: pypy/dist/pypy/module/builtin/compiling.py ============================================================================== --- pypy/dist/pypy/module/builtin/compiling.py (original) +++ pypy/dist/pypy/module/builtin/compiling.py Wed Apr 13 15:13:40 2005 @@ -78,6 +78,7 @@ if not e.match(space, space.w_KeyError): raise if caller is not None: - space.setitem(w_globals, space.wrap('__builtins__'), caller.builtin) + w_builtin = space.builtin.pick_builtin(caller.w_globals) + space.setitem(w_globals, space.wrap('__builtins__'), w_builtin) return space.interpclass_w(w_codeobj).exec_code(space, w_globals, w_locals) From cfbolz at codespeak.net Wed Apr 13 15:25:20 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Wed, 13 Apr 2005 15:25:20 +0200 (CEST) Subject: [pypy-svn] r10579 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050413132520.0C05327B53@code1.codespeak.net> Author: cfbolz Date: Wed Apr 13 15:25:19 2005 New Revision: 10579 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: test_long.py working. Really can strain your patience, though. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 13 15:25:19 2005 @@ -45,6 +45,7 @@ 'test_htmllib.py', 'test_htmlparser.py', 'test_isinstance.py', +'test_long.py', #Works but takes several hours to finish 'test_operator.py', 'test_parser.py', 'test_pprint.py', From pedronis at codespeak.net Wed Apr 13 18:48:52 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 13 Apr 2005 18:48:52 +0200 (CEST) Subject: [pypy-svn] r10585 - pypy/dist/pypy/annotation Message-ID: <20050413164852.AE2FD27B4C@code1.codespeak.net> Author: pedronis Date: Wed Apr 13 18:48:52 2005 New Revision: 10585 Modified: pypy/dist/pypy/annotation/builtin.py Log: fix for isinstance(.,bool) Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Wed Apr 13 18:48:52 2005 @@ -58,7 +58,7 @@ if typ == long: getbookkeeper().warning("isinstance(., long) is not RPython") typ = int # XXX as we did before - assert not issubclass(typ, (int,long)) or typ == int, ( + assert not issubclass(typ, (int,long)) or typ in (bool, int), ( "for integers only isinstance(.,int|r_uint) are supported") if s_obj.is_constant(): r.const = isinstance(s_obj.const, typ) From pedronis at codespeak.net Wed Apr 13 19:33:59 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 13 Apr 2005 19:33:59 +0200 (CEST) Subject: [pypy-svn] r10586 - in pypy/dist: goal pypy/translator Message-ID: <20050413173359.F081527B4D@code1.codespeak.net> Author: pedronis Date: Wed Apr 13 19:33:59 2005 New Revision: 10586 Modified: pypy/dist/goal/buildcache2.py pypy/dist/pypy/translator/ann_override.py Log: now we have parser as a lazymodule too, need to force it also use a different strategy about hiding pypy_getudir from the annotator, otherwise we need to tweak directly into space._gatewaycache too Modified: pypy/dist/goal/buildcache2.py ============================================================================== --- pypy/dist/goal/buildcache2.py (original) +++ pypy/dist/goal/buildcache2.py Wed Apr 13 19:33:59 2005 @@ -12,8 +12,14 @@ print "*sys*" w_dic = space.sys.w_dict #print space.unwrap(space.call_method(w_dic,"keys")) - space.delitem(w_dic,space.wrap("pypy_getudir")) - print " * removed pypy_getudir" + + # others + w_modules = space.sys.get('modules') + def getmodule(name): + return space.getitem(w_modules, space.wrap(name)) + + getmodule('parser').getdict() + print "*parser*" for typedef in interptypes: w_typ = space.gettypeobject(typedef) Modified: pypy/dist/pypy/translator/ann_override.py ============================================================================== --- pypy/dist/pypy/translator/ann_override.py (original) +++ pypy/dist/pypy/translator/ann_override.py Wed Apr 13 19:33:59 2005 @@ -5,6 +5,7 @@ from pypy.interpreter import error from pypy.interpreter import pyframe from pypy.objspace.std import fake +from pypy.module.sys2 import state as sys_state def hole(*args): return annmodel.SomeImpossibleValue(benign=True) @@ -22,4 +23,5 @@ install(pyframe.cpython_tb, ignore) install(error.OperationError.record_interpreter_traceback, ignore) +install(sys_state.pypy_getudir, ignore) install(fake.wrap_exception, hole) From arigo at codespeak.net Wed Apr 13 19:39:17 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 13 Apr 2005 19:39:17 +0200 (CEST) Subject: [pypy-svn] r10587 - pypy/dist/pypy/interpreter Message-ID: <20050413173917.C5AA227B55@code1.codespeak.net> Author: arigo Date: Wed Apr 13 19:39:17 2005 New Revision: 10587 Modified: pypy/dist/pypy/interpreter/ (props changed) Log: Added _interplevel_cache.py in svn:ignore. From tismer at codespeak.net Wed Apr 13 19:51:23 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 13 Apr 2005 19:51:23 +0200 (CEST) Subject: [pypy-svn] r10588 - pypy/dist/pypy/translator/test Message-ID: <20050413175123.E702227B55@code1.codespeak.net> Author: tismer Date: Wed Apr 13 19:51:23 2005 New Revision: 10588 Added: pypy/dist/pypy/translator/test/rpystone.py (contents, props changed) Log: this is an adjusted version of pystone.py, to be valid for flow space. It can be run like pystone. Without an argument, it tries to be quick for PyPy. Added: pypy/dist/pypy/translator/test/rpystone.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/test/rpystone.py Wed Apr 13 19:51:23 2005 @@ -0,0 +1,282 @@ +#! /usr/bin/env python + +""" +"PYSTONE" Benchmark Program + +Version: Python/1.1 (corresponds to C/1.1 plus 2 Pystone fixes) + +Author: Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013. + + Translated from ADA to C by Rick Richardson. + Every method to preserve ADA-likeness has been used, + at the expense of C-ness. + + Translated from C to Python by Guido van Rossum. + +Version History: + + Version 1.1 corrects two bugs in version 1.0: + + First, it leaked memory: in Proc1(), NextRecord ends + up having a pointer to itself. I have corrected this + by zapping NextRecord.PtrComp at the end of Proc1(). + + Second, Proc3() used the operator != to compare a + record to None. This is rather inefficient and not + true to the intention of the original benchmark (where + a pointer comparison to None is intended; the != + operator attempts to find a method __cmp__ to do value + comparison of the record). Version 1.1 runs 5-10 + percent faster than version 1.0, so benchmark figures + of different versions can't be compared directly. + +""" + +LOOPS = 50000 + +# use a global instance instead of globals +class G:pass +g = G() + +import sys + +from time import clock + +__version__ = "1.1" + +[Ident1, Ident2, Ident3, Ident4, Ident5] = range(1, 6) + +class Record: + + def __init__(self, PtrComp = None, Discr = 0, EnumComp = 0, + IntComp = 0, StringComp = 0): + self.PtrComp = PtrComp + self.Discr = Discr + self.EnumComp = EnumComp + self.IntComp = IntComp + self.StringComp = StringComp + + def copy(self): + return Record(self.PtrComp, self.Discr, self.EnumComp, + self.IntComp, self.StringComp) + +TRUE = 1 +FALSE = 0 + +def main(loops=LOOPS): + benchtime, stones = pystones(loops) + #print "Pystone(%s) time for %d passes = %g" % \ + # (__version__, loops, benchtime) + sys.stdout.write("Pystone(%s) time for %d passes = %g\n" % \ + (__version__, loops, benchtime) ) + #print "This machine benchmarks at %g pystones/second" % stones + sys.stdout.write("This machine benchmarks at %g pystones/second\n" % stones) + + +def pystones(loops=LOOPS): + return Proc0(loops) + +g.IntGlob = 0 +g.BoolGlob = FALSE +g.Char1Glob = '\0' +g.Char2Glob = '\0' +g.Array1Glob = [0]*51 +g.Array2Glob = map(lambda x: x[:], [g.Array1Glob]*51) +g.PtrGlb = None +g.PtrGlbNext = None + +def Proc0(loops=LOOPS): + #global IntGlob + #global BoolGlob + #global Char1Glob + #global Char2Glob + #global Array1Glob + #global Array2Glob + #global PtrGlb + #global PtrGlbNext + + starttime = clock() + for i in range(loops): + pass + nulltime = clock() - starttime + + g.PtrGlbNext = Record() + g.PtrGlb = Record() + g.PtrGlb.PtrComp = g.PtrGlbNext + g.PtrGlb.Discr = Ident1 + g.PtrGlb.EnumComp = Ident3 + g.PtrGlb.IntComp = 40 + g.PtrGlb.StringComp = "DHRYSTONE PROGRAM, SOME STRING" + String1Loc = "DHRYSTONE PROGRAM, 1'ST STRING" + g.Array2Glob[8][7] = 10 + + EnumLoc = None # addition for flow space + starttime = clock() + + for i in range(loops): + Proc5() + Proc4() + IntLoc1 = 2 + IntLoc2 = 3 + String2Loc = "DHRYSTONE PROGRAM, 2'ND STRING" + EnumLoc = Ident2 + g.BoolGlob = not Func2(String1Loc, String2Loc) + while IntLoc1 < IntLoc2: + IntLoc3 = 5 * IntLoc1 - IntLoc2 + IntLoc3 = Proc7(IntLoc1, IntLoc2) + IntLoc1 = IntLoc1 + 1 + Proc8(g.Array1Glob, g.Array2Glob, IntLoc1, IntLoc3) + g.PtrGlb = Proc1(g.PtrGlb) + CharIndex = 'A' + while CharIndex <= g.Char2Glob: + if EnumLoc == Func1(CharIndex, 'C'): + EnumLoc = Proc6(Ident1) + CharIndex = chr(ord(CharIndex)+1) + IntLoc3 = IntLoc2 * IntLoc1 + IntLoc2 = IntLoc3 / IntLoc1 + IntLoc2 = 7 * (IntLoc3 - IntLoc2) - IntLoc1 + IntLoc1 = Proc2(IntLoc1) + + benchtime = clock() - starttime - nulltime + return benchtime, (loops / benchtime) + +def Proc1(PtrParIn): + PtrParIn.PtrComp = NextRecord = g.PtrGlb.copy() + PtrParIn.IntComp = 5 + NextRecord.IntComp = PtrParIn.IntComp + NextRecord.PtrComp = PtrParIn.PtrComp + NextRecord.PtrComp = Proc3(NextRecord.PtrComp) + if NextRecord.Discr == Ident1: + NextRecord.IntComp = 6 + NextRecord.EnumComp = Proc6(PtrParIn.EnumComp) + NextRecord.PtrComp = g.PtrGlb.PtrComp + NextRecord.IntComp = Proc7(NextRecord.IntComp, 10) + else: + PtrParIn = NextRecord.copy() + NextRecord.PtrComp = None + return PtrParIn + +def Proc2(IntParIO): + IntLoc = IntParIO + 10 + EnumLoc = None # addition for flow space + while 1: + if g.Char1Glob == 'A': + IntLoc = IntLoc - 1 + IntParIO = IntLoc - g.IntGlob + EnumLoc = Ident1 + if EnumLoc == Ident1: + break + return IntParIO + +def Proc3(PtrParOut): + #global IntGlob + + if g.PtrGlb is not None: + PtrParOut = g.PtrGlb.PtrComp + else: + g.IntGlob = 100 + g.PtrGlb.IntComp = Proc7(10, g.IntGlob) + return PtrParOut + +def Proc4(): + #global Char2Glob + + BoolLoc = g.Char1Glob == 'A' + BoolLoc = BoolLoc or g.BoolGlob + g.Char2Glob = 'B' + +def Proc5(): + #global Char1Glob + #global BoolGlob + + g.Char1Glob = 'A' + g.BoolGlob = FALSE + +def Proc6(EnumParIn): + EnumParOut = EnumParIn + if not Func3(EnumParIn): + EnumParOut = Ident4 + if EnumParIn == Ident1: + EnumParOut = Ident1 + elif EnumParIn == Ident2: + if g.IntGlob > 100: + EnumParOut = Ident1 + else: + EnumParOut = Ident4 + elif EnumParIn == Ident3: + EnumParOut = Ident2 + elif EnumParIn == Ident4: + pass + elif EnumParIn == Ident5: + EnumParOut = Ident3 + return EnumParOut + +def Proc7(IntParI1, IntParI2): + IntLoc = IntParI1 + 2 + IntParOut = IntParI2 + IntLoc + return IntParOut + +def Proc8(Array1Par, Array2Par, IntParI1, IntParI2): + #global IntGlob + + IntLoc = IntParI1 + 5 + Array1Par[IntLoc] = IntParI2 + Array1Par[IntLoc+1] = Array1Par[IntLoc] + Array1Par[IntLoc+30] = IntLoc + for IntIndex in range(IntLoc, IntLoc+2): + Array2Par[IntLoc][IntIndex] = IntLoc + Array2Par[IntLoc][IntLoc-1] = Array2Par[IntLoc][IntLoc-1] + 1 + Array2Par[IntLoc+20][IntLoc] = Array1Par[IntLoc] + g.IntGlob = 5 + +def Func1(CharPar1, CharPar2): + CharLoc1 = CharPar1 + CharLoc2 = CharLoc1 + if CharLoc2 != CharPar2: + return Ident1 + else: + return Ident2 + +def Func2(StrParI1, StrParI2): + IntLoc = 1 + while IntLoc <= 1: + if Func1(StrParI1[IntLoc], StrParI2[IntLoc+1]) == Ident1: + CharLoc = 'A' + IntLoc = IntLoc + 1 + if CharLoc >= 'W' and CharLoc <= 'Z': + IntLoc = 7 + if CharLoc == 'X': + return TRUE + else: + if StrParI1 > StrParI2: + IntLoc = IntLoc + 7 + return TRUE + else: + return FALSE + +def Func3(EnumParIn): + EnumLoc = EnumParIn + if EnumLoc == Ident3: return TRUE + return FALSE + +if __name__ == '__main__': + def error(msg): + #print >>sys.stderr, msg, + sys.stderr.write(msg+" ") + #print >>sys.stderr, "usage: %s [number_of_loops]" % sys.argv[0] + sys.stderr.write("usage: %s [number_of_loops]\n" % sys.argv[0]) + sys.exit(100) + nargs = len(sys.argv) - 1 + if nargs > 1: + error("%d arguments are too many;" % nargs) + elif nargs == 1: + try: loops = int(sys.argv[1]) + except ValueError: + error("Invalid argument %r;" % sys.argv[1]) + else: + if hasattr(sys, 'pypy_objspaceclass'): + loops = LOOPS / 2000 # XXX rough estimate, adjust + else: + loops = LOOPS + main(loops) + From tismer at codespeak.net Wed Apr 13 19:52:09 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 13 Apr 2005 19:52:09 +0200 (CEST) Subject: [pypy-svn] r10589 - pypy/dist/pypy/translator Message-ID: <20050413175209.C049427B55@code1.codespeak.net> Author: tismer Date: Wed Apr 13 19:52:09 2005 New Revision: 10589 Modified: pypy/dist/pypy/translator/geninterplevel.py Log: small additions for builtin module and system file support. Reason: we want rpystone to work after interpleveling. Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Wed Apr 13 19:52:09 2005 @@ -79,6 +79,17 @@ self.initcode.append1('%s = %s(%r)' % ( name, unique, hex(value)[2:-1] ) ) +def bltinmod_helper(self, mod): + name = self.uniquename("mod_%s" % mod.__name__) + unique = self.uniquenameofprebuilt("bltinmod_helper", bltinmod_helper) + self.initcode.append1( + 'def %s(name):\n' + ' dic = space.newdict([])\n' + ' space.exec_("import %%s" %% name, dic, dic)\n' + ' return space.eval("%%s" %% name, dic, dic)' % (unique, )) + self.initcode.append1('%s = %s(%r)' % (name, unique, mod.__name__)) + return name + class GenRpy: def __init__(self, translator, entrypoint=None, modname=None, moddict=None): self.translator = translator @@ -354,12 +365,11 @@ return name def nameof_module(self, value): - #assert value is os or not hasattr(value, "__file__") or \ - # not (value.__file__.endswith('.pyc') or - # value.__file__.endswith('.py') or - # value.__file__.endswith('.pyo')), \ - # "%r is not a builtin module (probably :)"%value - # assume that we get a faked module + if value is os or not hasattr(value, "__file__") or \ + not (value.__file__.endswith('.pyc') or + value.__file__.endswith('.py') or + value.__file__.endswith('.pyo')) : + return bltinmod_helper(self, value) name = self.uniquename('mod_%s' % value.__name__) self.initcode.append1('import %s as _tmp' % value.__name__) self.initcode.append1('%s = space.wrap(_tmp)' % (name)) @@ -775,11 +785,11 @@ def nameof_file(self, fil): if fil is sys.stdin: - return 'PySys_GetObject("stdin")' + return 'space.sys.get("stdin")' if fil is sys.stdout: - return 'PySys_GetObject("stdout")' + return 'space.sys.get("stdout")' if fil is sys.stderr: - return 'PySys_GetObject("stderr")' + return 'space.sys.get("stderr")' raise Exception, 'Cannot translate an already-open file: %r' % (fil,) def gen_source(self, fname, ftmpname=None, file=file): From pedronis at codespeak.net Wed Apr 13 20:02:01 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 13 Apr 2005 20:02:01 +0200 (CEST) Subject: [pypy-svn] r10590 - pypy/dist/pypy/annotation Message-ID: <20050413180201.BD57127B55@code1.codespeak.net> Author: pedronis Date: Wed Apr 13 20:02:01 2005 New Revision: 10590 Modified: pypy/dist/pypy/annotation/builtin.py Log: annotation for sys.getdefaultenconding Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Wed Apr 13 20:02:01 2005 @@ -140,6 +140,9 @@ def count(s_obj): return SomeInteger() +def conf(): + return SomeString() + def math_fmod(x, y): return SomeObject() @@ -172,6 +175,9 @@ # this one is needed otherwise when annotating assert in a test we may try to annotate # py.test AssertionError.__init__ . BUILTIN_ANALYZERS[AssertionError.__init__.im_func] = exception_init -BUILTIN_ANALYZERS[sys.getrefcount] = count BUILTIN_ANALYZERS[math.fmod] = math_fmod BUILTIN_ANALYZERS[math.floor] = math_floor + +BUILTIN_ANALYZERS[sys.getrefcount] = count +BUILTIN_ANALYZERS[sys.getdefaultencoding] = conf + From tismer at codespeak.net Wed Apr 13 20:07:17 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 13 Apr 2005 20:07:17 +0200 (CEST) Subject: [pypy-svn] r10591 - pypy/dist/pypy/translator Message-ID: <20050413180717.204E327B55@code1.codespeak.net> Author: tismer Date: Wed Apr 13 20:07:16 2005 New Revision: 10591 Modified: pypy/dist/pypy/translator/geninterplevel.py Log: optimized list initialization for single values. Reason: rpystone did masses of zero assignments. Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Wed Apr 13 20:07:16 2005 @@ -746,12 +746,17 @@ name = self.uniquename('g%dlist' % len(lis)) # note that self.latercode led to too late initialization. self.register_early(lis, name) - self.initcode.append('%s = space.newlist([space.w_None])' % (name,)) + if lis and min(lis) is max(lis) and min(lis) not in lis: + default = min(lis) + else: + default = None + self.initcode.append('%s = space.newlist([%s])' % (name, self.nameof(default))) self.initcode.append('%s = space.mul(%s, %s)' % (name, name, self.nameof(len(lis)))) for i in range(len(lis)): - item = self.nameof(lis[i]) - self.initcode.append('space.setitem(%s, %s, %s);' % ( - name, self.nameof(i), item)) + if lis[i] is not default: + item = self.nameof(lis[i]) + self.initcode.append('space.setitem(%s, %s, %s);' % ( + name, self.nameof(i), item)) return name def nameof_dict(self, dic): From tismer at codespeak.net Wed Apr 13 20:11:17 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 13 Apr 2005 20:11:17 +0200 (CEST) Subject: [pypy-svn] r10592 - pypy/dist/pypy/translator Message-ID: <20050413181117.16FC027B55@code1.codespeak.net> Author: tismer Date: Wed Apr 13 20:11:16 2005 New Revision: 10592 Modified: pypy/dist/pypy/translator/geninterplevel.py Log: try to always save at least one list entry assignment. If we are lucky, we get them all at once. Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Wed Apr 13 20:11:16 2005 @@ -746,8 +746,9 @@ name = self.uniquename('g%dlist' % len(lis)) # note that self.latercode led to too late initialization. self.register_early(lis, name) - if lis and min(lis) is max(lis) and min(lis) not in lis: - default = min(lis) + # try to save at least one assignment. + if lis and lis[0] not in lis: + default = lis[0] else: default = None self.initcode.append('%s = space.newlist([%s])' % (name, self.nameof(default))) From tismer at codespeak.net Wed Apr 13 20:24:08 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 13 Apr 2005 20:24:08 +0200 (CEST) Subject: [pypy-svn] r10593 - in pypy/dist/pypy/translator: . test Message-ID: <20050413182408.D698527B55@code1.codespeak.net> Author: tismer Date: Wed Apr 13 20:24:08 2005 New Revision: 10593 Modified: pypy/dist/pypy/translator/geninterplevel.py pypy/dist/pypy/translator/test/rpystone.py Log: bad typo Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Wed Apr 13 20:24:08 2005 @@ -747,7 +747,7 @@ # note that self.latercode led to too late initialization. self.register_early(lis, name) # try to save at least one assignment. - if lis and lis[0] not in lis: + if lis and lis[0] is not lis: default = lis[0] else: default = None Modified: pypy/dist/pypy/translator/test/rpystone.py ============================================================================== --- pypy/dist/pypy/translator/test/rpystone.py (original) +++ pypy/dist/pypy/translator/test/rpystone.py Wed Apr 13 20:24:08 2005 @@ -259,13 +259,15 @@ if EnumLoc == Ident3: return TRUE return FALSE -if __name__ == '__main__': - def error(msg): - #print >>sys.stderr, msg, - sys.stderr.write(msg+" ") - #print >>sys.stderr, "usage: %s [number_of_loops]" % sys.argv[0] - sys.stderr.write("usage: %s [number_of_loops]\n" % sys.argv[0]) - sys.exit(100) +def error(msg): + #print >>sys.stderr, msg, + sys.stderr.write(msg+" ") + #print >>sys.stderr, "usage: %s [number_of_loops]" % sys.argv[0] + sys.stderr.write("usage: %s [number_of_loops]\n" % sys.argv[0]) + sys.exit(100) + +def entrypoint(): + loops = LOOPS # initialize early, for slow space nargs = len(sys.argv) - 1 if nargs > 1: error("%d arguments are too many;" % nargs) @@ -276,7 +278,9 @@ else: if hasattr(sys, 'pypy_objspaceclass'): loops = LOOPS / 2000 # XXX rough estimate, adjust - else: - loops = LOOPS + #else: + # loops = LOOPS main(loops) +if __name__ == '__main__': + entrypoint() From pedronis at codespeak.net Wed Apr 13 21:57:22 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 13 Apr 2005 21:57:22 +0200 (CEST) Subject: [pypy-svn] r10594 - pypy/dist/pypy/objspace/flow Message-ID: <20050413195722.89D0927B5C@code1.codespeak.net> Author: pedronis Date: Wed Apr 13 21:57:22 2005 New Revision: 10594 Modified: pypy/dist/pypy/objspace/flow/objspace.py Log: geninterplevel wants int(.) to be considered able to raise exceptions too Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Wed Apr 13 21:57:22 2005 @@ -368,13 +368,13 @@ exceptions = [Exception] # *any* exception by default if isinstance(w_callable, Constant): c = w_callable.value - if isinstance(c, (types.BuiltinFunctionType, - types.BuiltinMethodType)): - if not self.builtins_can_raise_exceptions: + if not self.builtins_can_raise_exceptions: + if isinstance(c, (types.BuiltinFunctionType, + types.BuiltinMethodType)): + exceptions = None + elif (isinstance(c, (type, types.ClassType)) and + c.__module__ in ['__builtin__', 'exceptions']): exceptions = None - elif (isinstance(c, (type, types.ClassType)) and - c.__module__ in ['__builtin__', 'exceptions']): - exceptions = None self.handle_implicit_exceptions(exceptions) return w_res From pedronis at codespeak.net Wed Apr 13 21:58:29 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 13 Apr 2005 21:58:29 +0200 (CEST) Subject: [pypy-svn] r10595 - pypy/dist/pypy/translator Message-ID: <20050413195829.446FC27B5C@code1.codespeak.net> Author: pedronis Date: Wed Apr 13 21:58:29 2005 New Revision: 10595 Modified: pypy/dist/pypy/translator/annrpython.py Log: don't let propagated SomeImpossibleValue enter operations, see comment Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Wed Apr 13 21:58:29 2005 @@ -431,6 +431,17 @@ argcells = [self.binding(a) for a in op.args] consider_meth = getattr(self,'consider_op_'+op.opname, self.default_consider_op) + # because benign SomeImpossibleValues are meant to propagate without leaving + # dangling blocked blocks around, and because of the None case below, + # let's be careful about avoiding propagated SomeImpossibleValues + # to enter an op; the latter can result in violations of the + # more general results invariant: e.g. if SomeImpossibleValue enters is_ + # is_(SomeImpossibleValue, None) -> SomeBool + # is_(SomeInstance(not None), None) -> SomeBool(const=False) ... + # boom + for arg in argcells: + if isinstance(arg, annmodel.SomeImpossibleValue): + raise BlockedInference(info=op) resultcell = consider_meth(*argcells) if resultcell is None: resultcell = annmodel.SomeImpossibleValue() # no return value From tismer at codespeak.net Thu Apr 14 01:51:36 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 14 Apr 2005 01:51:36 +0200 (CEST) Subject: [pypy-svn] r10599 - pypy/dist/pypy/translator/test Message-ID: <20050413235136.7CDBE27B57@code1.codespeak.net> Author: tismer Date: Thu Apr 14 01:51:36 2005 New Revision: 10599 Modified: pypy/dist/pypy/translator/test/rpystone.py Log: disabled the startup code which would use sys.argv. There are quite large bugs in flow-space like this!!! the sys module is treated very very wrong, and we really need to heal this. Modified: pypy/dist/pypy/translator/test/rpystone.py ============================================================================== --- pypy/dist/pypy/translator/test/rpystone.py (original) +++ pypy/dist/pypy/translator/test/rpystone.py Thu Apr 14 01:51:36 2005 @@ -259,6 +259,13 @@ if EnumLoc == Ident3: return TRUE return FALSE +# XXX the following creates bad code +# sys.argv is seen as a constant. +# also, in entrypoint(), the try..except is +# removed, which is a bug. +# XXX repair this, write a test + +""" def error(msg): #print >>sys.stderr, msg, sys.stderr.write(msg+" ") @@ -281,6 +288,30 @@ #else: # loops = LOOPS main(loops) +""" if __name__ == '__main__': - entrypoint() + # the following should be replaced by + # entrypoint() + # for now, we use main in the test. + + def error(msg): + #print >>sys.stderr, msg, + sys.stderr.write(msg+" ") + #print >>sys.stderr, "usage: %s [number_of_loops]" % sys.argv[0] + sys.stderr.write("usage: %s [number_of_loops]\n" % sys.argv[0]) + sys.exit(100) + nargs = len(sys.argv) - 1 + if nargs > 1: + error("%d arguments are too many;" % nargs) + elif nargs == 1: + try: loops = int(sys.argv[1]) + except ValueError: + error("Invalid argument %r;" % sys.argv[1]) + else: + if hasattr(sys, 'pypy_objspaceclass'): + loops = LOOPS / 2000 # XXX rough estimate, adjust + else: + loops = LOOPS + main(loops) + From tismer at codespeak.net Thu Apr 14 01:53:41 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 14 Apr 2005 01:53:41 +0200 (CEST) Subject: [pypy-svn] r10600 - pypy/dist/pypy/translator/genc Message-ID: <20050413235341.D95CA27B5A@code1.codespeak.net> Author: tismer Date: Thu Apr 14 01:53:41 2005 New Revision: 10600 Modified: pypy/dist/pypy/translator/genc/pyobj_include.h Log: OP_ABS was missing, targetpypy1 was not compiling! How can this happen??? We must make sure that this cannot happen! And, after the addition, it fails with a NotImplementedError. Friends, this makes me NERVOUS, we have a deadline. Modified: pypy/dist/pypy/translator/genc/pyobj_include.h ============================================================================== --- pypy/dist/pypy/translator/genc/pyobj_include.h (original) +++ pypy/dist/pypy/translator/genc/pyobj_include.h Thu Apr 14 01:53:41 2005 @@ -35,6 +35,7 @@ #define OP_NEG(x,r,err) if (!(r=PyNumber_Negative(x))) FAIL(err) #define OP_POS(x,r,err) if (!(r=PyNumber_Positive(x))) FAIL(err) #define OP_INVERT(x,r,err) if (!(r=PyNumber_Invert(x))) FAIL(err) +#define OP_ABS(x,r,err) if (!(r=PyNumber_Absolute(x))) FAIL(err) #define OP_ADD(x,y,r,err) if (!(r=PyNumber_Add(x,y))) FAIL(err) #define OP_SUB(x,y,r,err) if (!(r=PyNumber_Subtract(x,y))) FAIL(err) From cfbolz at codespeak.net Thu Apr 14 03:48:23 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Thu, 14 Apr 2005 03:48:23 +0200 (CEST) Subject: [pypy-svn] r10601 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050414014823.4ABB227B5A@code1.codespeak.net> Author: cfbolz Date: Thu Apr 14 03:48:22 2005 New Revision: 10601 Modified: pypy/dist/pypy/translator/llvm/class.ll pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/genllvm.py pypy/dist/pypy/translator/llvm/list.c pypy/dist/pypy/translator/llvm/list_template.ll pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py pypy/dist/pypy/translator/llvm/typerepr.py Log: Implemeted pickling of global class instances, lists, tuples to code that creates them. Modified: pypy/dist/pypy/translator/llvm/class.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/class.ll (original) +++ pypy/dist/pypy/translator/llvm/class.ll Thu Apr 14 03:48:22 2005 @@ -52,4 +52,23 @@ internal sbyte %std.unwind() { entry: unwind -} \ No newline at end of file +} + +;simple builtin functions +internal sbyte %std.chr(int %a) { + %r = cast int %a to sbyte + ret sbyte %r +} + +internal int %std.ord(sbyte %c) { + %r = cast sbyte %c to int + ret int %r +} + +;XXXX +internal int %std.ord(%std.list.sbyte* %c) { + %c = call sbyte %std.getitem(%std.list.sbyte* %c, int 0) + %r = cast sbyte %c to int + ret int %r +} + Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Thu Apr 14 03:48:22 2005 @@ -9,6 +9,7 @@ from pypy.translator.llvm import llvmbc from pypy.translator.llvm.representation import debug, LLVMRepr +from pypy.translator.llvm.representation import TmpVariableRepr from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr from pypy.translator.llvm.funcrepr import FunctionRepr, BoundMethodRepr from pypy.translator.llvm.funcrepr import VirtualMethodRepr @@ -83,6 +84,9 @@ for key, attr in self.classdef.attrs.items(): if debug: print key, attr, attr.sources, attr.s_value, + if isinstance(attr.s_value, annmodel.SomeImpossibleValue): + print "--> removed" + continue if len(attr.sources) != 0: func = self.classdef.cls.__dict__[attr.name] meth.append((key, func)) @@ -139,7 +143,7 @@ PointerTypeRepr("%std.class*", self.gen), l_func) lblock.getelementptr(l_tmp, l_target, [0, 0]) lblock.instruction("store %%std.class* %s, %s" % - (self.objectname, l_tmp.typed_name())) + (self.objectname, l_tmp.typed_name())) init = None for cls in self.classdef.getmro(): if "__init__" in cls.attrs: @@ -193,9 +197,15 @@ if not isinstance(args[1], Constant): raise CompileError,"setattr called with non-constant: %s" % args[1] if args[1].value in self.attr_num: + l_type = self.l_attrs_types[self.attr_num[args[1].value] - 1] l_args0 = self.gen.get_repr(args[0]) l_value = self.gen.get_repr(args[2]) self.dependencies.update([l_args0, l_value]) + if l_value.llvmtype() != l_type.typename(): + l_cast = self.gen.get_local_tmp(l_type, l_func) + self.dependencies.add(l_cast) + lblock.cast(l_cast, l_value) + l_value = l_cast l_pter = self.gen.get_local_tmp( PointerTypeRepr(l_value.llvmtype(), self.gen), l_func) lblock.getelementptr(l_pter, l_args0, @@ -312,3 +322,47 @@ lblock.getelementptr(l_tmp, l_args0, [0, 0]) lblock.load(l_target, l_tmp) + +class InstanceRepr(LLVMRepr): + def get(obj, gen): + if isinstance(obj, Constant): + ann = gen.annotator.binding(obj) + print "InstanceRepr.get: ", obj, ann, ann.__class__ + if isinstance(ann, annmodel.SomeInstance): + return InstanceRepr(obj, ann.classdef, gen) + get = staticmethod(get) + + def __init__(self, obj, classdef, gen): + if debug: + print "InstanceRepr: ", obj, classdef + self.obj = obj + self.gen = gen + self.type = gen.get_repr(classdef) + self.dependencies = sets.Set([self.type]) + self.name = gen.get_global_tmp(obj.value.__class__.__name__ + ".inst") + + def setup(self): + self.l_attrib_values = [] + for attr in self.type.attributes: + s_a = self.gen.get_repr(getattr(self.obj.value, attr.name)) + self.l_attrib_values.append(s_a) + self.dependencies.update(self.l_attrib_values) + self.definition = self.name + " = internal global %s {%s" % \ + (self.llvmtype()[:-1], self.type.typed_name()) + if len(self.l_attrib_values) == 0: + self.definition += "}" + else: + attrs = ", ".join([at.typename() + " " + av.llvmname() + for at, av in zip(self.type.l_attrs_types, + self.l_attrib_values)]) + self.definition += ", " + attrs + "}" + + def get_globals(self): + return self.definition + + def __getattr__(self, name): + if name.startswith("op_"): + return getattr(self.type, "t_" + name, None) + else: + raise AttributeError, ("InstanceRepr instance has no attribute %s" + % repr(name)) Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Thu Apr 14 03:48:22 2005 @@ -7,6 +7,7 @@ from pypy.objspace.flow.model import last_exception, last_exc_value from pypy.objspace.flow.model import traverse, checkgraph from pypy.annotation import model as annmodel +from pypy.annotation.builtin import BUILTIN_ANALYZERS from pypy.translator.llvm import llvmbc from pypy.translator.unsimplify import remove_double_links @@ -23,7 +24,7 @@ "inplace_mod", "inplace_pow", "inplace_lshift", "inplace_rshift", "inplace_and", "inplace_or", "inplace_xor", "contains", "newlist", "newtuple", "alloc_and_set", - "issubtype", "type"] + "issubtype", "type", "ord"] C_SIMPLE_TYPES = {annmodel.SomeChar: "char", annmodel.SomeString: "char*", @@ -34,8 +35,11 @@ class BuiltinFunctionRepr(LLVMRepr): def get(obj, gen): - if isinstance(obj, Constant) and \ - isinstance(gen.annotator.binding(obj), annmodel.SomeBuiltin): + if isinstance(obj, Constant): + print "BuiltinFunctionRepr", obj.value + if (isinstance(obj, Constant) and + (obj in BUILTIN_ANALYZERS or + isinstance(gen.annotator.binding(obj), annmodel.SomeBuiltin))): return BuiltinFunctionRepr(obj.value.__name__, gen) elif isinstance(obj, annmodel.SomeBuiltin): name = obj.analyser.__name__.replace("method_", "") Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Thu Apr 14 03:48:22 2005 @@ -37,6 +37,8 @@ return obj.value if isinstance(obj, annmodel.SomeInstance): return obj.classdef.cls + if isinstance(obj, list): + return id(obj) return obj class LLVMGenerator(object): @@ -106,7 +108,6 @@ print "->exists already:", self.llvm_reprs[get_key(obj)] return self.llvm_reprs[get_key(obj)] for cl in self.repr_classes: - #XXXXXX: Got try: obj.__class__ except AttributeError: @@ -175,3 +176,9 @@ yield l_dep1 yield l_repr + +## from pypy.translator.test.rpystone import * +## t = Translator(Proc0) +## a = t.annotate([int]) +## t.view() +## f = llvmcompile(t) Modified: pypy/dist/pypy/translator/llvm/list.c ============================================================================== --- pypy/dist/pypy/translator/llvm/list.c (original) +++ pypy/dist/pypy/translator/llvm/list.c Thu Apr 14 03:48:22 2005 @@ -157,13 +157,14 @@ return nlist; } -void inplace_add(struct list* a, struct list* b) { +struct list* inplace_add(struct list* a, struct list* b) { struct item** newdata = malloc(sizeof(struct item*) * (a->length + b->length)); copy(a->data, newdata, a->length); copy(b->data, newdata + a->length, b->length); a->length += b->length; free(a->data); a->data = newdata; + return a; } void append(struct list* a, struct item* value) { @@ -223,4 +224,4 @@ hi -= 1; } } - + Modified: pypy/dist/pypy/translator/llvm/list_template.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/list_template.ll (original) +++ pypy/dist/pypy/translator/llvm/list_template.ll Thu Apr 14 03:48:22 2005 @@ -353,7 +353,7 @@ ret %std.list.%(name)s* %tmp.0 } -internal void %std.inplace_add(%std.list.%(name)s* %a, %std.list.%(name)s* %b) { +internal %std.list.%(name)s* %std.inplace_add(%std.list.%(name)s* %a, %std.list.%(name)s* %b) { entry: %tmp.2 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 %tmp.3 = load uint* %tmp.2 @@ -397,7 +397,7 @@ store uint %tmp.7, uint* %tmp.2 free %(item)s* %tmp.12 store %(item)s* %tmp.0, %(item)s** %tmp.11 - ret void + ret %std.list.%(name)s* %a } internal void %std.append(%std.list.%(name)s* %a, %(item)s %value) { Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Thu Apr 14 03:48:22 2005 @@ -190,7 +190,7 @@ def __init__(self, obj, gen): if debug: - print "StringRepr: %s" % obj + print "StringRepr: %s, %s length: %i" % (obj, repr(obj), len(obj)) self.s = obj self.gen = gen self.glvar1 = gen.get_global_tmp("StringRepr") @@ -203,7 +203,8 @@ def get_globals(self): d = {"len": len(self.s), "gv1": self.glvar1, "gv2": self.glvar2, - "type": self.type.typename_wo_pointer(), "string": self.s} + "type": self.type.typename_wo_pointer(), + "string": str(repr(self.s)[1:-1].replace("\\x", "\\"))} s = """%(gv1)s = internal global [%(len)i x sbyte] c"%(string)s" %(gv2)s = internal global %(type)s {uint %(len)i,\ sbyte* getelementptr ([%(len)i x sbyte]* %(gv1)s, uint 0, uint 0)}""" Modified: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/seqrepr.py (original) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Thu Apr 14 03:48:22 2005 @@ -11,6 +11,58 @@ from pypy.translator.llvm.funcrepr import BoundMethodRepr +debug = False + +class ListRepr(LLVMRepr): + def get(obj, gen): + if obj.__class__ == list: + return ListRepr(obj, gen) + return None + get = staticmethod(get) + + def __init__(self, l, gen): + self.list = l + self.gen = gen + self.type = self.gen.get_repr( + gen.annotator.bookkeeper.immutablevalue(l)) + self.dependencies = sets.Set([self.type]) + self.name = self.gen.get_global_tmp("std.list.inst") + self.definition = self.name + self.definition += " = internal global %s {uint %i, %s* null}" % \ + (self.type.typename()[:-1], len(self.list), + self.type.l_itemtype.typename()) + + def setup(self): + self.l_items = [self.gen.get_repr(item) for item in self.list] + self.dependencies.update(self.l_items) + + def get_globals(self): + return self.definition + + def collect_init_code(self, lblock, l_func): + l_itemtype = self.type.l_itemtype + gen = self.gen + l_tmp = self.gen.get_local_tmp(PointerTypeRepr( + "[%d x %s]" % (len(self.list), l_itemtype.typename()), gen), + l_func) + self.dependencies.add(l_tmp) + lblock.malloc(l_tmp) + for i, l_item in enumerate(self.l_items): + l_ptr = self.gen.get_local_tmp( + PointerTypeRepr(l_itemtype.typename(), gen), l_func) + self.dependencies.add(l_ptr) + lblock.getelementptr(l_ptr, l_tmp, [0, i]) + lblock.store(l_item, l_ptr) + l_from = self.gen.get_local_tmp( + PointerTypeRepr("%s" % l_itemtype.typename(), gen), l_func) + l_to = self.gen.get_local_tmp( + PointerTypeRepr("%s*" % l_itemtype.typename(), gen), l_func) + self.dependencies.update([l_from, l_to]) + lblock.getelementptr(l_from, l_tmp, [0, 0]) + lblock.getelementptr(l_to, self, [0, 1]) + lblock.store(l_from, l_to) + + class ListTypeRepr(TypeRepr): l_listtypes = {} def get(obj, gen): @@ -79,6 +131,8 @@ type_ = gen.annotator.binding(obj) if isinstance(type_, annmodel.SomeTuple): return TupleRepr(obj, gen) + elif obj.__class__ == tuple: + return TupleRepr(Constant(obj), gen) return None get = staticmethod(get) @@ -116,9 +170,17 @@ class TupleTypeRepr(TypeRepr): + l_tuple_types = {} def get(obj, gen): if isinstance(obj, annmodel.SomeTuple): - return TupleTypeRepr(obj, gen) + l_tt = TupleTypeRepr(obj, gen) + #XXXXXXXX: Ugly as hell but neccessary: It prevents that two + #different tuples with same "signature" get different TupleTypeRepr + #also slightly unsafe, but well... + if (l_tt.typename(), gen) in TupleTypeRepr.l_tuple_types: + return TupleTypeRepr.l_tuple_types[(l_tt.typename(), gen)] + TupleTypeRepr.l_tuple_types[(l_tt.typename(), gen)] = l_tt + return l_tt return None get = staticmethod(get) Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Thu Apr 14 03:48:22 2005 @@ -45,7 +45,7 @@ #float snippets def float_f1(x): - return x + 1.0 + return x + 1.2 def float_int_bool(x): return x * (2 + True) @@ -178,6 +178,22 @@ d.set_range() return d.a[i] +class GGG(object): + pass + +ggg = GGG() +ggg.a = 36 +ggg.b = (1, 2, 3) +ggg.c = [1, 2, 3] + +def global_instance(x): + previous = ggg.a + previous1 = ggg.c[-1] + ggg.c.append(x) + d = ggg.b[1] + ggg.a = x + return previous + d + previous1 + #simple inheritance snippets class AAA(object): def __init__(self): Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Thu Apr 14 03:48:22 2005 @@ -124,7 +124,7 @@ def test_float_f1(self): f = compile_function(llvmsnippet.float_f1, [float]) - assert f(1.0) == 2.0 + assert f(1.0) == 2.2 def test_float_int_bool(self): f = compile_function(llvmsnippet.float_int_bool, [float]) @@ -238,6 +238,12 @@ f = compile_function(llvmsnippet.merge_classes, [bool]) assert f(True) == 1 assert f(False) == 2 + + def test_global_instance(self): + f = compile_function(llvmsnippet.global_instance, [int]) + assert f(-1) == 41 + for i in range(20): + assert f(i) == 2 * i class TestString(object): def setup_method(self, method): Modified: pypy/dist/pypy/translator/llvm/typerepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/typerepr.py (original) +++ pypy/dist/pypy/translator/llvm/typerepr.py Thu Apr 14 03:48:22 2005 @@ -85,6 +85,11 @@ l_func.dependencies.update(l_args) lblock.spaceop(l_target, "add", l_args) + def t_op_inplace_mul(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + lblock.spaceop(l_target, "mul", l_args) + class IntTypeRepr(TypeRepr): def get(obj, gen): @@ -165,6 +170,8 @@ def typename(self): return self.type + "*" + +#This should only be used as the return value for "void" functions class ImpossibleValueRepr(TypeRepr): def get(obj, gen): if obj.__class__ is annmodel.SomeImpossibleValue: From hpk at codespeak.net Thu Apr 14 12:11:58 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 14 Apr 2005 12:11:58 +0200 (CEST) Subject: [pypy-svn] r10604 - pypy/dist/pypy/documentation Message-ID: <20050414101158.718BE27BA8@code1.codespeak.net> Author: hpk Date: Thu Apr 14 12:11:58 2005 New Revision: 10604 Removed: pypy/dist/pypy/documentation/trivialobjspace.txt Modified: pypy/dist/pypy/documentation/architecture.txt pypy/dist/pypy/documentation/coding-style.txt pypy/dist/pypy/documentation/howtopypy.txt pypy/dist/pypy/documentation/objspace.txt pypy/dist/pypy/documentation/testdesign.txt Log: remove all occurences of Trivial object space in the documentation. Start to mention "thunk" without really explaining it (Armin, do you feel like adding a nice paragraph to the architecture document?) Modified: pypy/dist/pypy/documentation/architecture.txt ============================================================================== --- pypy/dist/pypy/documentation/architecture.txt (original) +++ pypy/dist/pypy/documentation/architecture.txt Thu Apr 14 12:11:58 2005 @@ -118,14 +118,9 @@ if-statements (or rather, to be pedantic, to implement the conditional-branching bytecodes into which if-statements get compiled). -We currently have four working object spaces which can be plugged into +We currently have three working object spaces which can be plugged into the interpreter: -- The Trivial Object Space, which basically delegates almost all - operations to the underlying CPython interpreter. It was, and still - is, used to test our interpreter. Alhough it is not essential, it - remains useful for testing, and thus it is here to stay. - - The Standard Object Space, which is an almost complete implementation of the various Python objects. This is the main focus of this document, since the Standard Object Space, together with the @@ -136,9 +131,9 @@ transformation task through "abstract interpretation", which we will explain later in this document. -- the Trace Object Space, which wraps either the trivial or the standard - object space in order to trace the execution of bytecodes, frames and - object space operations. +- the Trace Object Space, which wraps e.g. the standard + object space in order to trace the execution of bytecodes, + frames and object space operations. The Standard Object Space ========================= @@ -332,8 +327,8 @@ Trace Object Space ================== -A recent addition is the Trace Object space, which wraps a standard or -trivial object space in order to trace all object space operations, +A recent addition is the Trace Object space, which wraps a standard +object space in order to trace all object space operations, frame creation, deletion and bytecode execution. The ease with which the Trace Object Space was implemented at the Amsterdam Sprint underlines the power of the Object Space abstraction. (Of course, the Modified: pypy/dist/pypy/documentation/coding-style.txt ============================================================================== --- pypy/dist/pypy/documentation/coding-style.txt (original) +++ pypy/dist/pypy/documentation/coding-style.txt Thu Apr 14 12:11:58 2005 @@ -38,7 +38,6 @@ - objectspace classes are always spelled "ObjSpace". e.g. - - TrivialObjSpace - StdObjSpace - FlowObjSpace Modified: pypy/dist/pypy/documentation/howtopypy.txt ============================================================================== --- pypy/dist/pypy/documentation/howtopypy.txt (original) +++ pypy/dist/pypy/documentation/howtopypy.txt Thu Apr 14 12:11:58 2005 @@ -322,10 +322,9 @@ ``xxxobject.py`` contain respectively the definition of the type and its (default) implementation. -* `dist-pypy/pypy/objspace`_ contains a few other object spaces: the trivial one - (but let's forget about it), the trace_ one, the flow_ one. The latter - is a relatively short piece of code that builds the control flow graphs - when the interpreter runs in it. +* `dist-pypy/pypy/objspace`_ contains a few other object the "thunk" one + the trace_ one, the flow_ one. The latter is a relatively short piece of + code that builds the control flow graphs when the interpreter runs in it. * `dist-pypy/pypy/translator`_ contains the code analysis and generation stuff. Start reading from translator.py_, from which it should be easy to follow Modified: pypy/dist/pypy/documentation/objspace.txt ============================================================================== --- pypy/dist/pypy/documentation/objspace.txt (original) +++ pypy/dist/pypy/documentation/objspace.txt Thu Apr 14 12:11:58 2005 @@ -15,9 +15,8 @@ In PyPy, the three parts are clearly separated and can be replaced independently. I will discuss below the reasons I think it is very useful to have, in particular, the object library be replaced. We call object space such an object library. The standard object space is the object space that works just like Python's, that is, the object space whose black boxes are real Python objects that work as expected. We will call wrapped objects the black boxes of an object space. -Here are four examples of object spaces: +Here are three examples of object spaces: -- TrivialObjectSpace_ - StandardObjectSpace_ - AbstractObjectSpace_ - AnnotateObjectSpace_ @@ -33,7 +32,6 @@ ------------ .. _ObjectSpaceInterface: objspaceinterface.html -.. _TrivialObjectSpace: trivialobjspace.html .. _StandardObjectSpace: stdobjspace.html .. _AbstractObjectSpace: abstractobjspace.html .. _AnnotateObjectSpace: annotateobjspace.html Modified: pypy/dist/pypy/documentation/testdesign.txt ============================================================================== --- pypy/dist/pypy/documentation/testdesign.txt (original) +++ pypy/dist/pypy/documentation/testdesign.txt Thu Apr 14 12:11:58 2005 @@ -15,8 +15,9 @@ Both types of tests need an objectspace they can run with (the interpreter dispatches operations on objects to an objectspace). If you run a test you -can usually give the '-o' switch to select an object space. E.g. '-o trivial' -will select the trivial object space. The default is the "Standard Object Space". +can usually give the '-o' switch to select an object space. E.g. '-o thunk' +will select the thunk object space. The default is the "Standard Object Space" +which aims to implement unmodified Python semantics. .. _`py.test`: http://codespeak.net/py/current/doc/test.html @@ -32,13 +33,4 @@ python test_all.py -which will run all tests against the Standard Object Space. If you want -to test against the TrivialObjectSpace then issue:: - - python test_all.py -o trivial - -For more switches invoke "python test_all.py -h". - -This used to be reversed -- the TrivialObjectSpace was the default, and -you had to specify the StandardObjectSpace. You may find some documentation -that has not been changed to reflect the new reality. +For switches to modify test execution invoke "python test_all.py -h". Deleted: /pypy/dist/pypy/documentation/trivialobjspace.txt ============================================================================== --- /pypy/dist/pypy/documentation/trivialobjspace.txt Thu Apr 14 12:11:58 2005 +++ (empty file) @@ -1,17 +0,0 @@ -================================= -PyPython Trivial Object Space -================================= - -The easiest way to implement an Object Space is to represent a Python object with itself. - -A PyPy interpreter using the Trivial Object Space is an interpreter with its own main loop (written in Python), but this main loop manipulates real Python objects and all operations are done directly on the Python objects. For example, "1" really means "1" and when the interpreter encounters the BINARY_ADD bytecode instructions the TrivialObjectSpace will just add two real Python objects together using Python's "+". The same for lists, dictionaries, classes... We just use Python's own. - -Of course you cannot do this if the goal is to write PyPy in such a way that it doesn't rely on a real underlying Python implementation like CPython. Still, it works, and it has its own uses, like testing our interpreter, or even interpreting a different kind of bytecode -- for example, it could probably be used to emulate generators in any Python version. (That would be quite slow, however.) - -(This is already done; it is funny to watch "dis.dis" disassembling itself painfully slowly :-) ) - -See StandardObjectSpace_ for the rest of the story. - -------------------------------------------------------------------- - -.. _StandardObjectSpace: stdobjspace.html From arigo at codespeak.net Thu Apr 14 12:18:08 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 14 Apr 2005 12:18:08 +0200 (CEST) Subject: [pypy-svn] r10605 - in pypy/dist/pypy: interpreter module/builtin objspace objspace/flow objspace/std translator Message-ID: <20050414101808.73B7027BAA@code1.codespeak.net> Author: arigo Date: Thu Apr 14 12:18:08 2005 New Revision: 10605 Modified: pypy/dist/pypy/interpreter/baseobjspace.py pypy/dist/pypy/module/builtin/operation.py pypy/dist/pypy/objspace/descroperation.py pypy/dist/pypy/objspace/flow/operation.py pypy/dist/pypy/objspace/std/floatobject.py pypy/dist/pypy/translator/simplify.py Log: Removed the 'round' space operation. Moved the corresponding logic into module/builtin/operation.py, using float_w() and doing interp-level float operations. Modified: pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/dist/pypy/interpreter/baseobjspace.py Thu Apr 14 12:18:08 2005 @@ -353,7 +353,6 @@ ('abs' , 'abs', 1, ['__abs__']), ('hex', 'hex', 1, ['__hex__']), ('oct', 'oct', 1, ['__oct__']), - ('round', 'round', 2, []), ('ord', 'ord', 1, []), ('invert', '~', 1, ['__invert__']), ('add', '+', 2, ['__add__', '__radd__']), @@ -480,6 +479,7 @@ 'is_true', 'newtuple', 'newlist', + 'newstring', 'newdict', 'newslice', 'call_args' Modified: pypy/dist/pypy/module/builtin/operation.py ============================================================================== --- pypy/dist/pypy/module/builtin/operation.py (original) +++ pypy/dist/pypy/module/builtin/operation.py Thu Apr 14 12:18:08 2005 @@ -3,6 +3,7 @@ """ from pypy.interpreter import gateway +from pypy.interpreter.baseobjspace import ObjSpace from pypy.interpreter.error import OperationError NoneNotWrapped = gateway.NoneNotWrapped @@ -43,9 +44,6 @@ def hex(space, w_val): return space.hex(w_val) -def round(space, w_val, w_n=0): - return space.round(w_val, w_n) - def id(space, w_object): return space.id(w_object) @@ -68,6 +66,45 @@ def _issubtype(space, w_cls1, w_cls2): return space.issubtype(w_cls1, w_cls2) +# ____________________________________________________________ + +def _floor(f): + return f - (f % 1.0) + +def _ceil(f): + if f - (f % 1.0) == f: + return f + return f + 1.0 - (f % 1.0) + +def round(space, number, ndigits=0): + """round(number[, ndigits]) -> floating point number + + Round a number to a given precision in decimal digits (default 0 digits). + This always returns a floating point number. Precision may be negative.""" + # Algortithm copied directly from CPython + f = 1.0 + if ndigits < 0: + i = -ndigits + else: + i = ndigits + while i > 0: + f = f*10.0 + i -= 1 + if ndigits < 0: + number /= f + else: + number *= f + if number >= 0.0: + number = _floor(number + 0.5) + else: + number = _ceil(number - 0.5) + if ndigits < 0: + number *= f + else: + number /= f + return space.wrap(number) +# +round.unwrap_spec = [ObjSpace, float, int] # ____________________________________________________________ Modified: pypy/dist/pypy/objspace/descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/descroperation.py (original) +++ pypy/dist/pypy/objspace/descroperation.py Thu Apr 14 12:18:08 2005 @@ -376,7 +376,7 @@ - # xxx round, ord + # xxx ord @@ -623,7 +623,7 @@ setattr(DescrOperation,_name,_impl_maker(_symbol,_specialnames)) elif _name not in ['is_', 'id','type','issubtype', # not really to be defined in DescrOperation - 'ord', 'round']: + 'ord']: raise Exception, "missing def for operation%s" % _name Modified: pypy/dist/pypy/objspace/flow/operation.py ============================================================================== --- pypy/dist/pypy/objspace/flow/operation.py (original) +++ pypy/dist/pypy/objspace/flow/operation.py Thu Apr 14 12:18:08 2005 @@ -123,7 +123,6 @@ ('abs' , abs), ('hex', hex), ('oct', oct), - ('round', round), ('ord', ord), ('divmod', divmod), ('pow', pow), Modified: pypy/dist/pypy/objspace/std/floatobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/floatobject.py (original) +++ pypy/dist/pypy/objspace/std/floatobject.py Thu Apr 14 12:18:08 2005 @@ -106,39 +106,6 @@ j = w_float2.floatval return space.newbool( i >= j ) -def _floor(f): - return f - (f % 1.0) - -def _ceil(f): - if f - (f % 1.0) == f: - return f - return f + 1.0 - (f % 1.0) - -def round__Float_Int(space, w_float, w_int): - x = w_float.floatval - ndigits = w_int.intval - - # Algortithm copied directly from CPython - f = 1.0; - i = abs(ndigits); - - while i > 0: - f = f*10.0 - i -= 1 - if ndigits < 0: - x /= f - else: - x *= f - if x >= 0.0: - x = _floor(x + 0.5) - else: - x = _ceil(x - 0.5) - if ndigits < 0: - x *= f - else: - x /= f - return W_FloatObject(space, x) - def hash__Float(space,w_value): ## %reimplement% # real Implementation should be taken from _Py_HashDouble in object.c Modified: pypy/dist/pypy/translator/simplify.py ============================================================================== --- pypy/dist/pypy/translator/simplify.py (original) +++ pypy/dist/pypy/translator/simplify.py Thu Apr 14 12:18:08 2005 @@ -117,7 +117,7 @@ for _op in ''' newtuple newlist newdict newslice is_true is_ id type issubtype repr str len hash getattr getitem - pos neg nonzero abs hex oct round ord invert add sub mul + pos neg nonzero abs hex oct ord invert add sub mul truediv floordiv div mod divmod pow lshift rshift and_ or_ xor int float long lt le eq ne gt ge cmp coerce contains iter get '''.split(): From arigo at codespeak.net Thu Apr 14 12:33:10 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 14 Apr 2005 12:33:10 +0200 (CEST) Subject: [pypy-svn] r10606 - pypy/dist/pypy/documentation Message-ID: <20050414103310.A4FB327BAA@code1.codespeak.net> Author: arigo Date: Thu Apr 14 12:33:10 2005 New Revision: 10606 Modified: pypy/dist/pypy/documentation/architecture.txt pypy/dist/pypy/documentation/howtopypy.txt Log: - mention the thunk object space in architecture.txt. - add a link to it in howtopypy.txt. - mention the status of our parser. Modified: pypy/dist/pypy/documentation/architecture.txt ============================================================================== --- pypy/dist/pypy/documentation/architecture.txt (original) +++ pypy/dist/pypy/documentation/architecture.txt Thu Apr 14 12:33:10 2005 @@ -82,8 +82,8 @@ ignorant of how to access, modify or construct objects and their structure and thus delegates such operations to a so called "Object Space". -XXX mention Parser and compiler (we have one available since the Berlin -sprint but it is not integrated) +XXX mention Parser and compiler (we have a parser module from the PyCon 2005 +sprint, but it's not used by the rest of the core) The Interpreter =============== @@ -118,7 +118,7 @@ if-statements (or rather, to be pedantic, to implement the conditional-branching bytecodes into which if-statements get compiled). -We currently have three working object spaces which can be plugged into +We currently have four working object spaces which can be plugged into the interpreter: - The Standard Object Space, which is an almost complete implementation @@ -133,7 +133,12 @@ - the Trace Object Space, which wraps e.g. the standard object space in order to trace the execution of bytecodes, - frames and object space operations. + frames and object space operations. + +- the Thunk Object Space, which wraps another object space (e.g. the standard + one) and adds two capabilities: lazily computed objects (computed only when + an operation is performed on them), and "become", which completely and + globally replaces an object with another. The Standard Object Space ========================= Modified: pypy/dist/pypy/documentation/howtopypy.txt ============================================================================== --- pypy/dist/pypy/documentation/howtopypy.txt (original) +++ pypy/dist/pypy/documentation/howtopypy.txt Thu Apr 14 12:33:10 2005 @@ -322,9 +322,9 @@ ``xxxobject.py`` contain respectively the definition of the type and its (default) implementation. -* `dist-pypy/pypy/objspace`_ contains a few other object the "thunk" one - the trace_ one, the flow_ one. The latter is a relatively short piece of - code that builds the control flow graphs when the interpreter runs in it. +* `dist-pypy/pypy/objspace`_ contains a few other object spaces: the thunk_ + one, the trace_ one, the flow_ one. The latter is a relatively short piece + of code that builds the control flow graphs when the interpreter runs in it. * `dist-pypy/pypy/translator`_ contains the code analysis and generation stuff. Start reading from translator.py_, from which it should be easy to follow @@ -366,6 +366,7 @@ .. _Standard object space: http://codespeak.net/pypy/index.cgi?doc/stdobjspace.html .. _objspace.py: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/objspace.py .. _dist-pypy/pypy/objspace: http://codespeak.net/svn/pypy/dist/pypy/objspace/ +.. _thunk: http://codespeak.net/svn/pypy/dist/pypy/objspace/thunk.py .. _trace: http://codespeak.net/svn/pypy/dist/pypy/objspace/trace.py .. _flow: http://codespeak.net/svn/pypy/dist/pypy/objspace/flow/ .. _dist-pypy/pypy/translator: http://codespeak.net/svn/pypy/dist/pypy/translator/ From odie at codespeak.net Thu Apr 14 12:35:54 2005 From: odie at codespeak.net (odie at codespeak.net) Date: Thu, 14 Apr 2005 12:35:54 +0200 (CEST) Subject: [pypy-svn] r10608 - pypy/dist/pypy/translator/genc Message-ID: <20050414103554.CE6E927B82@code1.codespeak.net> Author: odie Date: Thu Apr 14 12:35:54 2005 New Revision: 10608 Modified: pypy/dist/pypy/translator/genc/pyobj_include.h Log: Add implementation of OP_STR and OP_ORD. Modified: pypy/dist/pypy/translator/genc/pyobj_include.h ============================================================================== --- pypy/dist/pypy/translator/genc/pyobj_include.h (original) +++ pypy/dist/pypy/translator/genc/pyobj_include.h Thu Apr 14 12:35:54 2005 @@ -51,6 +51,20 @@ #define OP_OR_(x,y,r,err) if (!(r=PyNumber_Or(x,y))) FAIL(err) #define OP_XOR(x,y,r,err) if (!(r=PyNumber_Xor(x,y))) FAIL(err) +#define OP_STR(x,r,err) if (!(r=PyObject_Str(x))) FAIL(err) +#define OP_ORD(s,r,err) { \ + char *__c = PyString_AsString(s); \ + int __len; \ + if ( !__c && (__len = PyString_GET_SIZE(s)) != 1) { \ + PyErr_Format(PyExc_TypeError, \ + "ord() expected a character, but string of length %d found", \ + __len); \ + FAIL(err) \ + } \ + if (!__c || !(r = PyInt_FromLong((unsigned char)(__c[0])))) \ + FAIL(err) \ + } + #define OP_INPLACE_ADD(x,y,r,err) if (!(r=PyNumber_InPlaceAdd(x,y))) \ FAIL(err) #define OP_INPLACE_SUB(x,y,r,err) if (!(r=PyNumber_InPlaceSubtract(x,y))) \ From arigo at codespeak.net Thu Apr 14 12:42:20 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 14 Apr 2005 12:42:20 +0200 (CEST) Subject: [pypy-svn] r10609 - pypy/dist/pypy/translator/genc Message-ID: <20050414104220.263B227B82@code1.codespeak.net> Author: arigo Date: Thu Apr 14 12:42:19 2005 New Revision: 10609 Modified: pypy/dist/pypy/translator/genc/pyobj_include.h Log: Small fix in OP_ORD(). Moved OP_ORD and OP_STR out of the numerical operations part. Modified: pypy/dist/pypy/translator/genc/pyobj_include.h ============================================================================== --- pypy/dist/pypy/translator/genc/pyobj_include.h (original) +++ pypy/dist/pypy/translator/genc/pyobj_include.h Thu Apr 14 12:42:19 2005 @@ -51,20 +51,6 @@ #define OP_OR_(x,y,r,err) if (!(r=PyNumber_Or(x,y))) FAIL(err) #define OP_XOR(x,y,r,err) if (!(r=PyNumber_Xor(x,y))) FAIL(err) -#define OP_STR(x,r,err) if (!(r=PyObject_Str(x))) FAIL(err) -#define OP_ORD(s,r,err) { \ - char *__c = PyString_AsString(s); \ - int __len; \ - if ( !__c && (__len = PyString_GET_SIZE(s)) != 1) { \ - PyErr_Format(PyExc_TypeError, \ - "ord() expected a character, but string of length %d found", \ - __len); \ - FAIL(err) \ - } \ - if (!__c || !(r = PyInt_FromLong((unsigned char)(__c[0])))) \ - FAIL(err) \ - } - #define OP_INPLACE_ADD(x,y,r,err) if (!(r=PyNumber_InPlaceAdd(x,y))) \ FAIL(err) #define OP_INPLACE_SUB(x,y,r,err) if (!(r=PyNumber_InPlaceSubtract(x,y))) \ @@ -134,6 +120,21 @@ FAIL(err) \ } +#define OP_STR(x,r,err) if (!(r=PyObject_Str(x))) FAIL(err) +#define OP_ORD(s,r,err) { \ + char *__c = PyString_AsString(s); \ + int __len; \ + if ( !__c) FAIL(err) \ + if ((__len = PyString_GET_SIZE(s)) != 1) { \ + PyErr_Format(PyExc_TypeError, \ + "ord() expected a character, but string of length %d found", \ + __len); \ + FAIL(err) \ + } \ + if (!(r = PyInt_FromLong((unsigned char)(__c[0])))) \ + FAIL(err) \ + } + #define OP_SIMPLE_CALL(args,r,err) if (!(r=PyObject_CallFunctionObjArgs args)) \ FAIL(err) #define OP_CALL_ARGS(args,r,err) if (!(r=CallWithShape args)) FAIL(err) From hpk at codespeak.net Thu Apr 14 12:43:23 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 14 Apr 2005 12:43:23 +0200 (CEST) Subject: [pypy-svn] r10610 - in pypy/branch/pycollect-dist-pypy/pypy: . lib/test2 Message-ID: <20050414104323.A7C1227B82@code1.codespeak.net> Author: hpk Date: Thu Apr 14 12:43:23 2005 New Revision: 10610 Modified: pypy/branch/pycollect-dist-pypy/pypy/conftest.py pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py Log: adjust pypy's test glue code slightly to the new py.test naming Modified: pypy/branch/pycollect-dist-pypy/pypy/conftest.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/pypy/conftest.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/conftest.py Thu Apr 14 12:43:23 2005 @@ -10,14 +10,14 @@ # PyPy's command line extra options (these are added # to py.test's standard options) # -Option = py.test.Option +Option = py.test.Config.Option #class Options: # group = "pypy options" # optionlist = -option = py.test.addoptions("pypy options", - Option('-o', '--objspace', action="store", default=None, +option = py.test.Config.addoptions("pypy options", + Option('-O', '--objspace', action="store", default=None, type="string", dest="objspacename", help="object space to run tests on."), Option('--oldstyle', action="store_true",dest="oldstyle", default=False, Modified: pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py Thu Apr 14 12:43:23 2005 @@ -19,15 +19,12 @@ libtest = py.path.local(pypy.__file__).dirpath() libtest = libtest.dirpath('lib-python-2.3.4', 'test') -assert libtest.check(dir=1) -#conftest = make_cpy_module('234conftest', libtest.join('conftest.py')) -conftest = libtest.join('conftest.py').getpymodule() -conftest.__file__ = str(conftest.__file__) # keep out the py's importhook +conftest = libtest.join('conftest.py').pyimport() -def Module(fspath): +def Module(fspath, parent=None): if option.allpypy: - return conftest.Module(fspath) - return UnittestModuleOnCPython(fspath) + return conftest.Module(fspath, parent=parent) + return UnittestModuleOnCPython(fspath, parent=parent) class Directory(conftest.Directory): def __iter__(self): @@ -39,19 +36,19 @@ sys.modules['unittest'] = mod mod.raises = py.test.raises self.TestCase = mod.TestCase - - def __iter__(self): + + def run(self): self._prepare() try: iterable = self._cache except AttributeError: iterable = self._cache = list(self._iter()) - for x in iterable: - yield x + return list(iterable) def _iter(self): name = self.fspath.purebasename mod = make_cpy_module(name, self.fspath) + print mod tlist = conftest.app_list_testmethods(mod, self.TestCase, []) for (setup, teardown, methods) in tlist: for name, method in methods: From arigo at codespeak.net Thu Apr 14 14:08:01 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 14 Apr 2005 14:08:01 +0200 (CEST) Subject: [pypy-svn] r10614 - pypy/dist/pypy/translator/genc/test Message-ID: <20050414120801.D0F2227BA0@code1.codespeak.net> Author: arigo Date: Thu Apr 14 14:08:01 2005 New Revision: 10614 Added: pypy/dist/pypy/translator/genc/test/test_annotated.py - copied, changed from r10610, pypy/dist/pypy/translator/genc/test/test_ctrans.py pypy/dist/pypy/translator/genc/test/test_notype.py - copied, changed from r10610, pypy/dist/pypy/translator/genc/test/test_ctrans.py pypy/dist/pypy/translator/genc/test/test_typed.py - copied, changed from r10610, pypy/dist/pypy/translator/genc/test/test_ctrans.py Removed: pypy/dist/pypy/translator/genc/test/test_ctrans.py Log: Split test_ctrans.py into three files, cleaned up imports. Copied: pypy/dist/pypy/translator/genc/test/test_annotated.py (from r10610, pypy/dist/pypy/translator/genc/test/test_ctrans.py) ============================================================================== --- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_annotated.py Thu Apr 14 14:08:01 2005 @@ -1,10 +1,4 @@ import autopath -import py, sys -from pypy.tool.udir import udir -from pypy.translator.genc.genc import GenC -from pypy.translator.genc.ctyper import GenCSpecializer -from pypy.objspace.flow.model import * -from pypy.translator.tool.buildpyxmodule import make_module_from_c from pypy.translator.tool.buildpyxmodule import skip_missing_compiler from pypy.translator.translator import Translator @@ -14,213 +8,6 @@ from pypy.translator.tool import buildpyxmodule buildpyxmodule.enable_fast_compilation() -class TestNoTypeCGenTestCase: - objspacename = 'flow' - - def build_cfunc(self, func, *morefuncs): - try: func = func.im_func - except AttributeError: pass - t = Translator(func) - for fn in morefuncs: - t.getflowgraph(fn) - t.simplify() - return skip_missing_compiler(t.ccompile) - - def test_simple_func(self): - cfunc = self.build_cfunc(snippet.simple_func) - assert cfunc(1) == 2 - - def test_while_func(self): - while_func = self.build_cfunc(snippet.while_func) - assert while_func(10) == 55 - - def test_nested_whiles(self): - nested_whiles = self.build_cfunc(snippet.nested_whiles) - assert nested_whiles(111, 114) == ( - '...!...!...!...!...!') - - def test_poor_man_range(self): - poor_man_range = self.build_cfunc(snippet.poor_man_range) - assert poor_man_range(10) == range(10) - - def poor_man_rev_range(self): - poor_man_rev_range = self.build_cfunc(snippet.poor_man_rev_range) - assert poor_man_rev_range(10) == range(9,-1,-1) - - def test_simple_id(self): - #we just want to see, if renaming of parameter works correctly - #if the first branch is the end branch - simple_id = self.build_cfunc(snippet.simple_id) - assert simple_id(9) == 9 - - def test_branch_id(self): - branch_id = self.build_cfunc(snippet.branch_id) - assert branch_id(1, 2, 3) == 2 - assert branch_id(0, 2, 3) == 3 - - def test_int_id(self): - int_id = self.build_cfunc(snippet.int_id) - assert int_id(3) == 3 - - def dont_test_attrs(self): - attrs = self.build_cfunc(snippet.attrs) - assert attrs() == 9 - - def test_builtinusage(self): - fun = self.build_cfunc(snippet.builtinusage) - assert fun() == 4 - - def test_sieve(self): - sieve = self.build_cfunc(snippet.sieve_of_eratosthenes) - assert sieve() == 1028 - - def test_slice(self): - half = self.build_cfunc(snippet.half_of_n) - assert half(10) == 5 - - def test_poly_branch(self): - poly_branch = self.build_cfunc(snippet.poly_branch) - assert poly_branch(10) == [1,2,3]*2 - assert poly_branch(0) == ['a','b','c']*2 - - def test_and(self): - sand = self.build_cfunc(snippet.s_and) - assert sand(5, 6) == "yes" - assert sand(5, 0) == "no" - assert sand(0, 6) == "no" - assert sand(0, 0) == "no" - - def test_yast(self): - yast = self.build_cfunc(snippet.yast) - assert yast([1000,100,10,1]) == 1111 - assert yast(range(100)) == (99*100)/2 - - def test_with_init(self): - with_init = self.build_cfunc(snippet.with_init) - assert with_init(0) == 0 - assert with_init(-100) == -100 - - def test_with_more_init(self): - with_more_init = self.build_cfunc(snippet.with_more_init) - assert with_more_init(10, False) == -10 - assert with_more_init(20, True) == 20 - - def test_global_instance(self): - global_instance = self.build_cfunc(snippet.global_instance) - assert global_instance() == 42 - - def test_global_newstyle_instance(self): - global_newstyle_instance = self.build_cfunc(snippet.global_newstyle_instance) - assert global_newstyle_instance().a == 1 - - def test_global_recursive_list(self): - global_recursive_list = self.build_cfunc(snippet.global_recursive_list) - lst = global_recursive_list() - assert len(lst) == 1 - assert lst[0] is lst - -## def test_global_badinit(self): -## global_badinit = self.build_cfunc(snippet.global_badinit) -## self.assertEquals(global_badinit(), 1) - - def test_multiple_inheritance(self): - multiple_inheritance = self.build_cfunc(snippet.multiple_inheritance) - assert multiple_inheritance() == 1+2+3+4 - - def test_call_star_args(self): - call_star_args = self.build_cfunc(snippet.call_star_args) - assert call_star_args(42) == 52 - - def test_call_default_args(self): - call_default_args = self.build_cfunc(snippet.call_default_args) - assert call_default_args(42) == 111+42+3 - - def test_call_default_and_star_args(self): - call_default_and_star_args = self.build_cfunc( - snippet.call_default_and_star_args) - assert call_default_and_star_args(42) == ( - (111+42+3+0, -1000-2000-3000+2)) - - def test_call_with_star(self): - call_with_star = self.build_cfunc(snippet.call_with_star) - assert call_with_star(()) == -15L - assert call_with_star((4,)) == -13L - assert call_with_star((4,7)) == -9L - assert call_with_star([]) == -15L - assert call_with_star([4]) == -13L - assert call_with_star([4,7]) == -9L - raises(TypeError, call_with_star, (4,7,12)) - raises(TypeError, call_with_star, [4,7,12,63]) - raises(TypeError, call_with_star, 521) - - def test_call_with_keyword(self): - call_with_keyword = self.build_cfunc(snippet.call_with_keyword) - assert call_with_keyword(100) == 82 - - def test_call_very_complex(self): - call_very_complex = self.build_cfunc(snippet.call_very_complex, - snippet.default_args) - assert call_very_complex(5, (3,), {}) == -12 - assert call_very_complex(5, (), {'y': 3}) == -12 - raises(TypeError, call_very_complex, 5, (3,), {'y': 4}) - - def test_finallys(self): - finallys = self.build_cfunc(snippet.finallys) - assert finallys(['hello']) == 8 - assert finallys('X') == 8 - assert finallys([]) == 6 - assert finallys('XY') == 6 - - def test_finally2(self): - finally2 = self.build_cfunc(snippet.finally2) - lst = range(10) - finally2(lst, 5) - assert lst == [0,1,2,3,4, 6, 6,7,8, 'done'] - dic = {} - raises(KeyError, finally2, dic, "won't find this key") - assert dic == {-1: 'done'} - - def test_bare_raise(self): - bare_raise = self.build_cfunc(snippet.bare_raise) - assert bare_raise(range(0, 100, 10), False) == 50 - assert bare_raise(range(0, 100, 10), True) == 50 - raises(IndexError, bare_raise, range(0, 30, 10), False) - assert bare_raise(range(0, 30, 10), True) == None - - def test_get_set_del_slice(self): - fn = self.build_cfunc(snippet.get_set_del_slice) - l = list('abcdefghij') - result = fn(l) - assert l == [3, 'c', 8, 11, 'h', 9] - assert result == ([3, 'c'], [9], [11, 'h']) - - def test_global_const_w_init(self): - fn = self.build_cfunc(snippet.one_thing1) - assert fn().thingness == 1 - - def test_global_const_w_new(self): - fn = self.build_cfunc(snippet.one_thing2) - assert fn() == 4 - - def test_direct_loop(self): - # check that remove_direct_loops() does its job correctly - def direct_loop(n, m): - x = False - while 1: - o = n; n = m; m = o - n -= 10 - if n < 0: - return n, x - x = True - fn = self.build_cfunc(direct_loop) - assert fn(117, 114) == (-6, True) - assert fn(117, 124) == (-3, True) - - def test_do_try_raise_choose(self): - fn = self.build_cfunc(snippet.do_try_raise_choose) - result = fn() - assert result == [-1,0,1,2] - class TestAnnotatedTestCase: def getcompiled(self, func): @@ -339,24 +126,3 @@ fn = self.getcompiled(snippet.do_try_raise_choose) result = fn() assert result == [-1,0,1,2] - -class TestTypedTestCase(TestAnnotatedTestCase): - - def getcompiled(self, func): - t = Translator(func, simplifying=True) - # builds starting-types from func_defs - argstypelist = [] - if func.func_defaults: - for spec in func.func_defaults: - if isinstance(spec, tuple): - spec = spec[0] # use the first type only for the tests - argstypelist.append(spec) - a = t.annotate(argstypelist) - a.simplify() - GenCSpecializer(a).specialize() - t.checkgraphs() - return skip_missing_compiler(t.ccompile) - - def test_int_overflow(self): - fn = self.getcompiled(snippet.simple_func) - raises(OverflowError, fn, sys.maxint+1) Deleted: /pypy/dist/pypy/translator/genc/test/test_ctrans.py ============================================================================== --- /pypy/dist/pypy/translator/genc/test/test_ctrans.py Thu Apr 14 14:08:01 2005 +++ (empty file) @@ -1,362 +0,0 @@ -import autopath -import py, sys -from pypy.tool.udir import udir -from pypy.translator.genc.genc import GenC -from pypy.translator.genc.ctyper import GenCSpecializer -from pypy.objspace.flow.model import * -from pypy.translator.tool.buildpyxmodule import make_module_from_c -from pypy.translator.tool.buildpyxmodule import skip_missing_compiler -from pypy.translator.translator import Translator - -from pypy.translator.test import snippet - -# XXX this tries to make compiling faster for full-scale testing -from pypy.translator.tool import buildpyxmodule -buildpyxmodule.enable_fast_compilation() - -class TestNoTypeCGenTestCase: - objspacename = 'flow' - - def build_cfunc(self, func, *morefuncs): - try: func = func.im_func - except AttributeError: pass - t = Translator(func) - for fn in morefuncs: - t.getflowgraph(fn) - t.simplify() - return skip_missing_compiler(t.ccompile) - - def test_simple_func(self): - cfunc = self.build_cfunc(snippet.simple_func) - assert cfunc(1) == 2 - - def test_while_func(self): - while_func = self.build_cfunc(snippet.while_func) - assert while_func(10) == 55 - - def test_nested_whiles(self): - nested_whiles = self.build_cfunc(snippet.nested_whiles) - assert nested_whiles(111, 114) == ( - '...!...!...!...!...!') - - def test_poor_man_range(self): - poor_man_range = self.build_cfunc(snippet.poor_man_range) - assert poor_man_range(10) == range(10) - - def poor_man_rev_range(self): - poor_man_rev_range = self.build_cfunc(snippet.poor_man_rev_range) - assert poor_man_rev_range(10) == range(9,-1,-1) - - def test_simple_id(self): - #we just want to see, if renaming of parameter works correctly - #if the first branch is the end branch - simple_id = self.build_cfunc(snippet.simple_id) - assert simple_id(9) == 9 - - def test_branch_id(self): - branch_id = self.build_cfunc(snippet.branch_id) - assert branch_id(1, 2, 3) == 2 - assert branch_id(0, 2, 3) == 3 - - def test_int_id(self): - int_id = self.build_cfunc(snippet.int_id) - assert int_id(3) == 3 - - def dont_test_attrs(self): - attrs = self.build_cfunc(snippet.attrs) - assert attrs() == 9 - - def test_builtinusage(self): - fun = self.build_cfunc(snippet.builtinusage) - assert fun() == 4 - - def test_sieve(self): - sieve = self.build_cfunc(snippet.sieve_of_eratosthenes) - assert sieve() == 1028 - - def test_slice(self): - half = self.build_cfunc(snippet.half_of_n) - assert half(10) == 5 - - def test_poly_branch(self): - poly_branch = self.build_cfunc(snippet.poly_branch) - assert poly_branch(10) == [1,2,3]*2 - assert poly_branch(0) == ['a','b','c']*2 - - def test_and(self): - sand = self.build_cfunc(snippet.s_and) - assert sand(5, 6) == "yes" - assert sand(5, 0) == "no" - assert sand(0, 6) == "no" - assert sand(0, 0) == "no" - - def test_yast(self): - yast = self.build_cfunc(snippet.yast) - assert yast([1000,100,10,1]) == 1111 - assert yast(range(100)) == (99*100)/2 - - def test_with_init(self): - with_init = self.build_cfunc(snippet.with_init) - assert with_init(0) == 0 - assert with_init(-100) == -100 - - def test_with_more_init(self): - with_more_init = self.build_cfunc(snippet.with_more_init) - assert with_more_init(10, False) == -10 - assert with_more_init(20, True) == 20 - - def test_global_instance(self): - global_instance = self.build_cfunc(snippet.global_instance) - assert global_instance() == 42 - - def test_global_newstyle_instance(self): - global_newstyle_instance = self.build_cfunc(snippet.global_newstyle_instance) - assert global_newstyle_instance().a == 1 - - def test_global_recursive_list(self): - global_recursive_list = self.build_cfunc(snippet.global_recursive_list) - lst = global_recursive_list() - assert len(lst) == 1 - assert lst[0] is lst - -## def test_global_badinit(self): -## global_badinit = self.build_cfunc(snippet.global_badinit) -## self.assertEquals(global_badinit(), 1) - - def test_multiple_inheritance(self): - multiple_inheritance = self.build_cfunc(snippet.multiple_inheritance) - assert multiple_inheritance() == 1+2+3+4 - - def test_call_star_args(self): - call_star_args = self.build_cfunc(snippet.call_star_args) - assert call_star_args(42) == 52 - - def test_call_default_args(self): - call_default_args = self.build_cfunc(snippet.call_default_args) - assert call_default_args(42) == 111+42+3 - - def test_call_default_and_star_args(self): - call_default_and_star_args = self.build_cfunc( - snippet.call_default_and_star_args) - assert call_default_and_star_args(42) == ( - (111+42+3+0, -1000-2000-3000+2)) - - def test_call_with_star(self): - call_with_star = self.build_cfunc(snippet.call_with_star) - assert call_with_star(()) == -15L - assert call_with_star((4,)) == -13L - assert call_with_star((4,7)) == -9L - assert call_with_star([]) == -15L - assert call_with_star([4]) == -13L - assert call_with_star([4,7]) == -9L - raises(TypeError, call_with_star, (4,7,12)) - raises(TypeError, call_with_star, [4,7,12,63]) - raises(TypeError, call_with_star, 521) - - def test_call_with_keyword(self): - call_with_keyword = self.build_cfunc(snippet.call_with_keyword) - assert call_with_keyword(100) == 82 - - def test_call_very_complex(self): - call_very_complex = self.build_cfunc(snippet.call_very_complex, - snippet.default_args) - assert call_very_complex(5, (3,), {}) == -12 - assert call_very_complex(5, (), {'y': 3}) == -12 - raises(TypeError, call_very_complex, 5, (3,), {'y': 4}) - - def test_finallys(self): - finallys = self.build_cfunc(snippet.finallys) - assert finallys(['hello']) == 8 - assert finallys('X') == 8 - assert finallys([]) == 6 - assert finallys('XY') == 6 - - def test_finally2(self): - finally2 = self.build_cfunc(snippet.finally2) - lst = range(10) - finally2(lst, 5) - assert lst == [0,1,2,3,4, 6, 6,7,8, 'done'] - dic = {} - raises(KeyError, finally2, dic, "won't find this key") - assert dic == {-1: 'done'} - - def test_bare_raise(self): - bare_raise = self.build_cfunc(snippet.bare_raise) - assert bare_raise(range(0, 100, 10), False) == 50 - assert bare_raise(range(0, 100, 10), True) == 50 - raises(IndexError, bare_raise, range(0, 30, 10), False) - assert bare_raise(range(0, 30, 10), True) == None - - def test_get_set_del_slice(self): - fn = self.build_cfunc(snippet.get_set_del_slice) - l = list('abcdefghij') - result = fn(l) - assert l == [3, 'c', 8, 11, 'h', 9] - assert result == ([3, 'c'], [9], [11, 'h']) - - def test_global_const_w_init(self): - fn = self.build_cfunc(snippet.one_thing1) - assert fn().thingness == 1 - - def test_global_const_w_new(self): - fn = self.build_cfunc(snippet.one_thing2) - assert fn() == 4 - - def test_direct_loop(self): - # check that remove_direct_loops() does its job correctly - def direct_loop(n, m): - x = False - while 1: - o = n; n = m; m = o - n -= 10 - if n < 0: - return n, x - x = True - fn = self.build_cfunc(direct_loop) - assert fn(117, 114) == (-6, True) - assert fn(117, 124) == (-3, True) - - def test_do_try_raise_choose(self): - fn = self.build_cfunc(snippet.do_try_raise_choose) - result = fn() - assert result == [-1,0,1,2] - -class TestAnnotatedTestCase: - - def getcompiled(self, func): - t = Translator(func, simplifying=True) - # builds starting-types from func_defs - argstypelist = [] - if func.func_defaults: - for spec in func.func_defaults: - if isinstance(spec, tuple): - spec = spec[0] # use the first type only for the tests - argstypelist.append(spec) - a = t.annotate(argstypelist) - a.simplify() - return skip_missing_compiler(t.ccompile) - - def test_set_attr(self): - set_attr = self.getcompiled(snippet.set_attr) - assert set_attr() == 2 - - def test_inheritance2(self): - inheritance2 = self.getcompiled(snippet.inheritance2) - assert inheritance2() == ((-12, -12), (3, "world")) - - def test_factorial2(self): - factorial2 = self.getcompiled(snippet.factorial2) - assert factorial2(5) == 120 - - def test_factorial(self): - factorial = self.getcompiled(snippet.factorial) - assert factorial(5) == 120 - - def test_simple_method(self): - simple_method = self.getcompiled(snippet.simple_method) - assert simple_method(55) == 55 - - def test_sieve_of_eratosthenes(self): - sieve_of_eratosthenes = self.getcompiled(snippet.sieve_of_eratosthenes) - assert sieve_of_eratosthenes() == 1028 - - def test_nested_whiles(self): - nested_whiles = self.getcompiled(snippet.nested_whiles) - assert nested_whiles(5,3) == '!!!!!' - - def test_call_five(self): - call_five = self.getcompiled(snippet.call_five) - result = call_five() - assert result == [5] - # -- currently result isn't a real list, but a pseudo-array - # that can't be inspected from Python. - #self.assertEquals(result.__class__.__name__[:8], "list of ") - - def test_call_unpack_56(self): - call_unpack_56 = self.getcompiled(snippet.call_unpack_56) - result = call_unpack_56() - assert result == (2, 5, 6) - - def test_class_defaultattr(self): - class K: - n = "hello" - def class_defaultattr(): - k = K() - k.n += " world" - return k.n - fn = self.getcompiled(class_defaultattr) - assert fn() == "hello world" - - def test_tuple_repr(self): - def tuple_repr(x=int, y=object): - z = x, y - while x: - x = x-1 - return z - fn = self.getcompiled(tuple_repr) - assert fn(6,'a') == (6,'a') - - def test_classattribute(self): - fn = self.getcompiled(snippet.classattribute) - assert fn(1) == 123 - assert fn(2) == 456 - assert fn(3) == 789 - assert fn(4) == 789 - assert fn(5) == 101112 - - def test_get_set_del_slice(self): - fn = self.getcompiled(snippet.get_set_del_slice) - l = list('abcdefghij') - result = fn(l) - assert l == [3, 'c', 8, 11, 'h', 9] - assert result == ([3, 'c'], [9], [11, 'h']) - - def test_slice_long(self): - def slice_long(l=list, n=long): - return l[:n] - fn = self.getcompiled(slice_long) - l = list('abc') - result = fn(l, 2**32) - assert result == list('abc') - result = fn(l, 2**64) - assert result == list('abc') - - def test_type_conversion(self): - # obfuscated test case specially for typer.insert_link_conversions() - def type_conversion(n): - if n > 3: - while n > 0: - n = n-1 - if n == 5: - n += 3.1416 - return n - fn = self.getcompiled(type_conversion) - assert fn(3) == 3 - assert fn(5) == 0 - assert abs(fn(7) + 0.8584) < 1E-5 - - def test_do_try_raise_choose(self): - fn = self.getcompiled(snippet.do_try_raise_choose) - result = fn() - assert result == [-1,0,1,2] - -class TestTypedTestCase(TestAnnotatedTestCase): - - def getcompiled(self, func): - t = Translator(func, simplifying=True) - # builds starting-types from func_defs - argstypelist = [] - if func.func_defaults: - for spec in func.func_defaults: - if isinstance(spec, tuple): - spec = spec[0] # use the first type only for the tests - argstypelist.append(spec) - a = t.annotate(argstypelist) - a.simplify() - GenCSpecializer(a).specialize() - t.checkgraphs() - return skip_missing_compiler(t.ccompile) - - def test_int_overflow(self): - fn = self.getcompiled(snippet.simple_func) - raises(OverflowError, fn, sys.maxint+1) Copied: pypy/dist/pypy/translator/genc/test/test_notype.py (from r10610, pypy/dist/pypy/translator/genc/test/test_ctrans.py) ============================================================================== --- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_notype.py Thu Apr 14 14:08:01 2005 @@ -1,10 +1,4 @@ import autopath -import py, sys -from pypy.tool.udir import udir -from pypy.translator.genc.genc import GenC -from pypy.translator.genc.ctyper import GenCSpecializer -from pypy.objspace.flow.model import * -from pypy.translator.tool.buildpyxmodule import make_module_from_c from pypy.translator.tool.buildpyxmodule import skip_missing_compiler from pypy.translator.translator import Translator @@ -220,143 +214,3 @@ fn = self.build_cfunc(snippet.do_try_raise_choose) result = fn() assert result == [-1,0,1,2] - -class TestAnnotatedTestCase: - - def getcompiled(self, func): - t = Translator(func, simplifying=True) - # builds starting-types from func_defs - argstypelist = [] - if func.func_defaults: - for spec in func.func_defaults: - if isinstance(spec, tuple): - spec = spec[0] # use the first type only for the tests - argstypelist.append(spec) - a = t.annotate(argstypelist) - a.simplify() - return skip_missing_compiler(t.ccompile) - - def test_set_attr(self): - set_attr = self.getcompiled(snippet.set_attr) - assert set_attr() == 2 - - def test_inheritance2(self): - inheritance2 = self.getcompiled(snippet.inheritance2) - assert inheritance2() == ((-12, -12), (3, "world")) - - def test_factorial2(self): - factorial2 = self.getcompiled(snippet.factorial2) - assert factorial2(5) == 120 - - def test_factorial(self): - factorial = self.getcompiled(snippet.factorial) - assert factorial(5) == 120 - - def test_simple_method(self): - simple_method = self.getcompiled(snippet.simple_method) - assert simple_method(55) == 55 - - def test_sieve_of_eratosthenes(self): - sieve_of_eratosthenes = self.getcompiled(snippet.sieve_of_eratosthenes) - assert sieve_of_eratosthenes() == 1028 - - def test_nested_whiles(self): - nested_whiles = self.getcompiled(snippet.nested_whiles) - assert nested_whiles(5,3) == '!!!!!' - - def test_call_five(self): - call_five = self.getcompiled(snippet.call_five) - result = call_five() - assert result == [5] - # -- currently result isn't a real list, but a pseudo-array - # that can't be inspected from Python. - #self.assertEquals(result.__class__.__name__[:8], "list of ") - - def test_call_unpack_56(self): - call_unpack_56 = self.getcompiled(snippet.call_unpack_56) - result = call_unpack_56() - assert result == (2, 5, 6) - - def test_class_defaultattr(self): - class K: - n = "hello" - def class_defaultattr(): - k = K() - k.n += " world" - return k.n - fn = self.getcompiled(class_defaultattr) - assert fn() == "hello world" - - def test_tuple_repr(self): - def tuple_repr(x=int, y=object): - z = x, y - while x: - x = x-1 - return z - fn = self.getcompiled(tuple_repr) - assert fn(6,'a') == (6,'a') - - def test_classattribute(self): - fn = self.getcompiled(snippet.classattribute) - assert fn(1) == 123 - assert fn(2) == 456 - assert fn(3) == 789 - assert fn(4) == 789 - assert fn(5) == 101112 - - def test_get_set_del_slice(self): - fn = self.getcompiled(snippet.get_set_del_slice) - l = list('abcdefghij') - result = fn(l) - assert l == [3, 'c', 8, 11, 'h', 9] - assert result == ([3, 'c'], [9], [11, 'h']) - - def test_slice_long(self): - def slice_long(l=list, n=long): - return l[:n] - fn = self.getcompiled(slice_long) - l = list('abc') - result = fn(l, 2**32) - assert result == list('abc') - result = fn(l, 2**64) - assert result == list('abc') - - def test_type_conversion(self): - # obfuscated test case specially for typer.insert_link_conversions() - def type_conversion(n): - if n > 3: - while n > 0: - n = n-1 - if n == 5: - n += 3.1416 - return n - fn = self.getcompiled(type_conversion) - assert fn(3) == 3 - assert fn(5) == 0 - assert abs(fn(7) + 0.8584) < 1E-5 - - def test_do_try_raise_choose(self): - fn = self.getcompiled(snippet.do_try_raise_choose) - result = fn() - assert result == [-1,0,1,2] - -class TestTypedTestCase(TestAnnotatedTestCase): - - def getcompiled(self, func): - t = Translator(func, simplifying=True) - # builds starting-types from func_defs - argstypelist = [] - if func.func_defaults: - for spec in func.func_defaults: - if isinstance(spec, tuple): - spec = spec[0] # use the first type only for the tests - argstypelist.append(spec) - a = t.annotate(argstypelist) - a.simplify() - GenCSpecializer(a).specialize() - t.checkgraphs() - return skip_missing_compiler(t.ccompile) - - def test_int_overflow(self): - fn = self.getcompiled(snippet.simple_func) - raises(OverflowError, fn, sys.maxint+1) Copied: pypy/dist/pypy/translator/genc/test/test_typed.py (from r10610, pypy/dist/pypy/translator/genc/test/test_ctrans.py) ============================================================================== --- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original) +++ pypy/dist/pypy/translator/genc/test/test_typed.py Thu Apr 14 14:08:01 2005 @@ -1,346 +1,14 @@ import autopath -import py, sys -from pypy.tool.udir import udir -from pypy.translator.genc.genc import GenC +import sys from pypy.translator.genc.ctyper import GenCSpecializer -from pypy.objspace.flow.model import * -from pypy.translator.tool.buildpyxmodule import make_module_from_c -from pypy.translator.tool.buildpyxmodule import skip_missing_compiler from pypy.translator.translator import Translator - from pypy.translator.test import snippet +from pypy.translator.tool.buildpyxmodule import skip_missing_compiler -# XXX this tries to make compiling faster for full-scale testing -from pypy.translator.tool import buildpyxmodule -buildpyxmodule.enable_fast_compilation() - -class TestNoTypeCGenTestCase: - objspacename = 'flow' - - def build_cfunc(self, func, *morefuncs): - try: func = func.im_func - except AttributeError: pass - t = Translator(func) - for fn in morefuncs: - t.getflowgraph(fn) - t.simplify() - return skip_missing_compiler(t.ccompile) - - def test_simple_func(self): - cfunc = self.build_cfunc(snippet.simple_func) - assert cfunc(1) == 2 - - def test_while_func(self): - while_func = self.build_cfunc(snippet.while_func) - assert while_func(10) == 55 - - def test_nested_whiles(self): - nested_whiles = self.build_cfunc(snippet.nested_whiles) - assert nested_whiles(111, 114) == ( - '...!...!...!...!...!') - - def test_poor_man_range(self): - poor_man_range = self.build_cfunc(snippet.poor_man_range) - assert poor_man_range(10) == range(10) - - def poor_man_rev_range(self): - poor_man_rev_range = self.build_cfunc(snippet.poor_man_rev_range) - assert poor_man_rev_range(10) == range(9,-1,-1) - - def test_simple_id(self): - #we just want to see, if renaming of parameter works correctly - #if the first branch is the end branch - simple_id = self.build_cfunc(snippet.simple_id) - assert simple_id(9) == 9 - - def test_branch_id(self): - branch_id = self.build_cfunc(snippet.branch_id) - assert branch_id(1, 2, 3) == 2 - assert branch_id(0, 2, 3) == 3 - - def test_int_id(self): - int_id = self.build_cfunc(snippet.int_id) - assert int_id(3) == 3 - - def dont_test_attrs(self): - attrs = self.build_cfunc(snippet.attrs) - assert attrs() == 9 - - def test_builtinusage(self): - fun = self.build_cfunc(snippet.builtinusage) - assert fun() == 4 - - def test_sieve(self): - sieve = self.build_cfunc(snippet.sieve_of_eratosthenes) - assert sieve() == 1028 - - def test_slice(self): - half = self.build_cfunc(snippet.half_of_n) - assert half(10) == 5 - - def test_poly_branch(self): - poly_branch = self.build_cfunc(snippet.poly_branch) - assert poly_branch(10) == [1,2,3]*2 - assert poly_branch(0) == ['a','b','c']*2 - - def test_and(self): - sand = self.build_cfunc(snippet.s_and) - assert sand(5, 6) == "yes" - assert sand(5, 0) == "no" - assert sand(0, 6) == "no" - assert sand(0, 0) == "no" - - def test_yast(self): - yast = self.build_cfunc(snippet.yast) - assert yast([1000,100,10,1]) == 1111 - assert yast(range(100)) == (99*100)/2 - - def test_with_init(self): - with_init = self.build_cfunc(snippet.with_init) - assert with_init(0) == 0 - assert with_init(-100) == -100 - - def test_with_more_init(self): - with_more_init = self.build_cfunc(snippet.with_more_init) - assert with_more_init(10, False) == -10 - assert with_more_init(20, True) == 20 - - def test_global_instance(self): - global_instance = self.build_cfunc(snippet.global_instance) - assert global_instance() == 42 - - def test_global_newstyle_instance(self): - global_newstyle_instance = self.build_cfunc(snippet.global_newstyle_instance) - assert global_newstyle_instance().a == 1 - - def test_global_recursive_list(self): - global_recursive_list = self.build_cfunc(snippet.global_recursive_list) - lst = global_recursive_list() - assert len(lst) == 1 - assert lst[0] is lst - -## def test_global_badinit(self): -## global_badinit = self.build_cfunc(snippet.global_badinit) -## self.assertEquals(global_badinit(), 1) - - def test_multiple_inheritance(self): - multiple_inheritance = self.build_cfunc(snippet.multiple_inheritance) - assert multiple_inheritance() == 1+2+3+4 - - def test_call_star_args(self): - call_star_args = self.build_cfunc(snippet.call_star_args) - assert call_star_args(42) == 52 - - def test_call_default_args(self): - call_default_args = self.build_cfunc(snippet.call_default_args) - assert call_default_args(42) == 111+42+3 - - def test_call_default_and_star_args(self): - call_default_and_star_args = self.build_cfunc( - snippet.call_default_and_star_args) - assert call_default_and_star_args(42) == ( - (111+42+3+0, -1000-2000-3000+2)) - - def test_call_with_star(self): - call_with_star = self.build_cfunc(snippet.call_with_star) - assert call_with_star(()) == -15L - assert call_with_star((4,)) == -13L - assert call_with_star((4,7)) == -9L - assert call_with_star([]) == -15L - assert call_with_star([4]) == -13L - assert call_with_star([4,7]) == -9L - raises(TypeError, call_with_star, (4,7,12)) - raises(TypeError, call_with_star, [4,7,12,63]) - raises(TypeError, call_with_star, 521) - - def test_call_with_keyword(self): - call_with_keyword = self.build_cfunc(snippet.call_with_keyword) - assert call_with_keyword(100) == 82 - - def test_call_very_complex(self): - call_very_complex = self.build_cfunc(snippet.call_very_complex, - snippet.default_args) - assert call_very_complex(5, (3,), {}) == -12 - assert call_very_complex(5, (), {'y': 3}) == -12 - raises(TypeError, call_very_complex, 5, (3,), {'y': 4}) - - def test_finallys(self): - finallys = self.build_cfunc(snippet.finallys) - assert finallys(['hello']) == 8 - assert finallys('X') == 8 - assert finallys([]) == 6 - assert finallys('XY') == 6 - - def test_finally2(self): - finally2 = self.build_cfunc(snippet.finally2) - lst = range(10) - finally2(lst, 5) - assert lst == [0,1,2,3,4, 6, 6,7,8, 'done'] - dic = {} - raises(KeyError, finally2, dic, "won't find this key") - assert dic == {-1: 'done'} - - def test_bare_raise(self): - bare_raise = self.build_cfunc(snippet.bare_raise) - assert bare_raise(range(0, 100, 10), False) == 50 - assert bare_raise(range(0, 100, 10), True) == 50 - raises(IndexError, bare_raise, range(0, 30, 10), False) - assert bare_raise(range(0, 30, 10), True) == None - - def test_get_set_del_slice(self): - fn = self.build_cfunc(snippet.get_set_del_slice) - l = list('abcdefghij') - result = fn(l) - assert l == [3, 'c', 8, 11, 'h', 9] - assert result == ([3, 'c'], [9], [11, 'h']) - - def test_global_const_w_init(self): - fn = self.build_cfunc(snippet.one_thing1) - assert fn().thingness == 1 - - def test_global_const_w_new(self): - fn = self.build_cfunc(snippet.one_thing2) - assert fn() == 4 - - def test_direct_loop(self): - # check that remove_direct_loops() does its job correctly - def direct_loop(n, m): - x = False - while 1: - o = n; n = m; m = o - n -= 10 - if n < 0: - return n, x - x = True - fn = self.build_cfunc(direct_loop) - assert fn(117, 114) == (-6, True) - assert fn(117, 124) == (-3, True) - - def test_do_try_raise_choose(self): - fn = self.build_cfunc(snippet.do_try_raise_choose) - result = fn() - assert result == [-1,0,1,2] - -class TestAnnotatedTestCase: - - def getcompiled(self, func): - t = Translator(func, simplifying=True) - # builds starting-types from func_defs - argstypelist = [] - if func.func_defaults: - for spec in func.func_defaults: - if isinstance(spec, tuple): - spec = spec[0] # use the first type only for the tests - argstypelist.append(spec) - a = t.annotate(argstypelist) - a.simplify() - return skip_missing_compiler(t.ccompile) - - def test_set_attr(self): - set_attr = self.getcompiled(snippet.set_attr) - assert set_attr() == 2 - - def test_inheritance2(self): - inheritance2 = self.getcompiled(snippet.inheritance2) - assert inheritance2() == ((-12, -12), (3, "world")) - - def test_factorial2(self): - factorial2 = self.getcompiled(snippet.factorial2) - assert factorial2(5) == 120 - - def test_factorial(self): - factorial = self.getcompiled(snippet.factorial) - assert factorial(5) == 120 - - def test_simple_method(self): - simple_method = self.getcompiled(snippet.simple_method) - assert simple_method(55) == 55 - - def test_sieve_of_eratosthenes(self): - sieve_of_eratosthenes = self.getcompiled(snippet.sieve_of_eratosthenes) - assert sieve_of_eratosthenes() == 1028 - - def test_nested_whiles(self): - nested_whiles = self.getcompiled(snippet.nested_whiles) - assert nested_whiles(5,3) == '!!!!!' - - def test_call_five(self): - call_five = self.getcompiled(snippet.call_five) - result = call_five() - assert result == [5] - # -- currently result isn't a real list, but a pseudo-array - # that can't be inspected from Python. - #self.assertEquals(result.__class__.__name__[:8], "list of ") - - def test_call_unpack_56(self): - call_unpack_56 = self.getcompiled(snippet.call_unpack_56) - result = call_unpack_56() - assert result == (2, 5, 6) - - def test_class_defaultattr(self): - class K: - n = "hello" - def class_defaultattr(): - k = K() - k.n += " world" - return k.n - fn = self.getcompiled(class_defaultattr) - assert fn() == "hello world" - - def test_tuple_repr(self): - def tuple_repr(x=int, y=object): - z = x, y - while x: - x = x-1 - return z - fn = self.getcompiled(tuple_repr) - assert fn(6,'a') == (6,'a') - - def test_classattribute(self): - fn = self.getcompiled(snippet.classattribute) - assert fn(1) == 123 - assert fn(2) == 456 - assert fn(3) == 789 - assert fn(4) == 789 - assert fn(5) == 101112 - - def test_get_set_del_slice(self): - fn = self.getcompiled(snippet.get_set_del_slice) - l = list('abcdefghij') - result = fn(l) - assert l == [3, 'c', 8, 11, 'h', 9] - assert result == ([3, 'c'], [9], [11, 'h']) - - def test_slice_long(self): - def slice_long(l=list, n=long): - return l[:n] - fn = self.getcompiled(slice_long) - l = list('abc') - result = fn(l, 2**32) - assert result == list('abc') - result = fn(l, 2**64) - assert result == list('abc') - - def test_type_conversion(self): - # obfuscated test case specially for typer.insert_link_conversions() - def type_conversion(n): - if n > 3: - while n > 0: - n = n-1 - if n == 5: - n += 3.1416 - return n - fn = self.getcompiled(type_conversion) - assert fn(3) == 3 - assert fn(5) == 0 - assert abs(fn(7) + 0.8584) < 1E-5 +from pypy.translator.genc.test.test_annotated import TestAnnotatedTestCase as _TestAnnotatedTestCase - def test_do_try_raise_choose(self): - fn = self.getcompiled(snippet.do_try_raise_choose) - result = fn() - assert result == [-1,0,1,2] -class TestTypedTestCase(TestAnnotatedTestCase): +class TestTypedTestCase(_TestAnnotatedTestCase): def getcompiled(self, func): t = Translator(func, simplifying=True) From arigo at codespeak.net Thu Apr 14 15:09:09 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 14 Apr 2005 15:09:09 +0200 (CEST) Subject: [pypy-svn] r10616 - in pypy/dist/pypy/translator/genc: . test Message-ID: <20050414130909.7A6D327B9A@code1.codespeak.net> Author: arigo Date: Thu Apr 14 15:09:09 2005 New Revision: 10616 Added: pypy/dist/pypy/translator/genc/test/test_operation.py (contents, props changed) Modified: pypy/dist/pypy/translator/genc/pyobj_include.h Log: Added a test file covering most operations. Completed and fixed the operations in pyobj_include.h according to the failures. Modified: pypy/dist/pypy/translator/genc/pyobj_include.h ============================================================================== --- pypy/dist/pypy/translator/genc/pyobj_include.h (original) +++ pypy/dist/pypy/translator/genc/pyobj_include.h Thu Apr 14 15:09:09 2005 @@ -24,6 +24,7 @@ #define OP_IS_(x,y,r,err) op_bool(r,err,(x == y)) #define OP_IS_TRUE(x,r,err) op_bool(r,err,PyObject_IsTrue(x)) +#define OP_NONZERO(x,r,err) op_bool(r,err,PyObject_IsTrue(x)) #define OP_LEN(x,r,err) { \ int _retval = PyObject_Size(x); \ @@ -44,6 +45,7 @@ #define OP_FLOORDIV(x,y,r,err) if (!(r=PyNumber_FloorDivide(x,y)))FAIL(err) #define OP_DIV(x,y,r,err) if (!(r=PyNumber_Divide(x,y))) FAIL(err) #define OP_MOD(x,y,r,err) if (!(r=PyNumber_Remainder(x,y))) FAIL(err) +#define OP_DIVMOD(x,y,r,err) if (!(r=PyNumber_Divmod(x,y))) FAIL(err) #define OP_POW(x,y,z,r,err) if (!(r=PyNumber_Power(x,y,z))) FAIL(err) #define OP_LSHIFT(x,y,r,err) if (!(r=PyNumber_Lshift(x,y))) FAIL(err) #define OP_RSHIFT(x,y,r,err) if (!(r=PyNumber_Rshift(x,y))) FAIL(err) @@ -121,6 +123,7 @@ } #define OP_STR(x,r,err) if (!(r=PyObject_Str(x))) FAIL(err) +#define OP_REPR(x,r,err) if (!(r=PyObject_Repr(x))) FAIL(err) #define OP_ORD(s,r,err) { \ char *__c = PyString_AsString(s); \ int __len; \ @@ -134,6 +137,51 @@ if (!(r = PyInt_FromLong((unsigned char)(__c[0])))) \ FAIL(err) \ } +#define OP_ID(x,r,err) if (!(r=PyLong_FromVoidPtr(x))) FAIL(err) +#define OP_HASH(x,r,err) { \ + long __hash = PyObject_Hash(x); \ + if (__hash == -1 && PyErr_Occurred()) FAIL(err) \ + if (!(r = PyInt_FromLong(__hash))) FAIL(err) \ + } + +#define OP_HEX(x,r,err) { \ + PyNumberMethods *__nb; \ + if ((__nb = x->ob_type->tp_as_number) == NULL || \ + __nb->nb_hex == NULL) { \ + PyErr_SetString(PyExc_TypeError, \ + "hex() argument can't be converted to hex"); \ + FAIL(err) \ + } \ + if (!(r = (*__nb->nb_hex)(x))) FAIL(err) \ + } +#define OP_OCT(x,r,err) { \ + PyNumberMethods *__nb; \ + if ((__nb = x->ob_type->tp_as_number) == NULL || \ + __nb->nb_oct == NULL) { \ + PyErr_SetString(PyExc_TypeError, \ + "oct() argument can't be converted to oct"); \ + FAIL(err) \ + } \ + if (!(r = (*__nb->nb_oct)(x))) FAIL(err) \ + } + +#define OP_INT(x,r,err) { \ + long __val = PyInt_AsLong(x); \ + if (__val == -1 && PyErr_Occurred()) FAIL(err) \ + if (!(r = PyInt_FromLong(__val))) FAIL (err) \ + } +#define OP_FLOAT(x,r,err) { \ + double __val = PyFloat_AsDouble(x); \ + if (PyErr_Occurred()) FAIL(err) \ + if (!(r = PyFloat_FromDouble(__val))) FAIL (err) \ + } + +#define OP_CMP(x,y,r,err) { \ + int __val = PyObject_Compare(x, y); \ + if (PyErr_Occurred()) FAIL(err) \ + if (!(r = PyInt_FromLong(__val))) FAIL (err) \ + } + #define OP_SIMPLE_CALL(args,r,err) if (!(r=PyObject_CallFunctionObjArgs args)) \ FAIL(err) @@ -152,7 +200,7 @@ /* Needs to act like instance(x,y) */ #define OP_ISSUBTYPE(x,y,r,err) \ - op_bool(r,err,PyClass_IsSubclass(x, y)) + op_bool(r,err,PyObject_IsSubclass(x, y)) /*** operations with a variable number of arguments ***/ Added: pypy/dist/pypy/translator/genc/test/test_operation.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/test/test_operation.py Thu Apr 14 15:09:09 2005 @@ -0,0 +1,131 @@ +import autopath +from pypy.objspace.flow.model import * +from pypy.objspace.flow.operation import FunctionByName +from pypy.translator.tool.buildpyxmodule import skip_missing_compiler +from pypy.translator.translator import Translator + +# XXX this tries to make compiling faster for full-scale testing +from pypy.translator.tool import buildpyxmodule +buildpyxmodule.enable_fast_compilation() + + +TESTCASES = [ + ('is_', [], []), + ('id', False), + ('id', True), + ('type', 42), + ('issubtype', bool, int), + ('issubtype', int, int), + ('issubtype', int, bool), + ('repr', 'hi'), + ('repr', 42), + ('str', 'hi'), + ('str', 42), + ('len', [1,3,5,7]), + ('len', 'hello world'), + ('hash', 'hello world'), + ('pos', 42), + ('neg', 42), + ('nonzero', 42), + ('abs' , -42), + ('hex', 42), + ('oct', 42), + ('ord', '*'), + ('invert', 42), + ('add', 40, 2), + ('add', 'hello ', 'world'), + ('add', [1,3,5], [2,4]), + ('sub', 40, 2), + ('mul', 6, 7), + ('mul', [5], 4), + ('mul', 5, [4]), + ('truediv', 7, 2), + ('floordiv', 7, 2), + ('div', 7, 2), + ('mod', 7, 2), + ('divmod', 7, 2), + ('pow', 5, 2, 7), + ('lshift', 21, 1), + ('rshift', 21, 1), + ('and_', 21, 7), + ('or_', 21, 7), + ('xor', 21, 7), + ('int', 42.5), + ('float', 42), + ('inplace_add', 'hello ', 'world'), + ('inplace_sub', 32, 49), + ('inplace_mul', 41, 12), + ('inplace_truediv', 965, 22), + ('inplace_floordiv',847, 31), + ('inplace_div', 984, 12), + ('inplace_mod', 148, 20), + ('inplace_pow', 10, 6), + ('inplace_lshift', 9148, 3), + ('inplace_rshift', 1029, 2), + ('inplace_and', 18711, 98172), + ('inplace_or', 8722, 19837), + ('inplace_xor', 91487, 18320), + ('lt', 5, 7), + ('lt', 5, 5), + ('lt', 'hello', 'world'), + ('le', 5, 7), + ('le', 5, 5), + ('le', 'hello', 'world'), + ('eq', 5, 7), + ('eq', 5, 5), + ('eq', 'hello', 'world'), + ('ne', 5, 7), + ('ne', 5, 5), + ('ne', 'hello', 'world'), + ('gt', 5, 7), + ('gt', 5, 5), + ('gt', 'hello', 'world'), + ('ge', 5, 7), + ('ge', 5, 5), + ('ge', 'hello', 'world'), + ('cmp', 5, 7), + ('cmp', 5, 5), + ('cmp', 'hello', 'world'), + ('contains', [1,3,5,7], 4), + ('contains', [1,3,5,7], 5), + ] + +def operationtestfn(): + pass + + +class TestOperations: + objspacename = 'flow' + + def build_cfunc(self, graph): + t = Translator() + t.entrypoint = operationtestfn + t.functions.append(operationtestfn) + t.flowgraphs[operationtestfn] = graph + return skip_missing_compiler(t.ccompile) + + def test_operations(self): + expected = [] + resvars = [] + block = Block([]) + for testcase in TESTCASES: + opname = testcase[0] + args = testcase[1:] + op = SpaceOperation(opname, [Constant(x) for x in args], Variable()) + block.operations.append(op) + expected.append(FunctionByName[opname](*args)) + resvars.append(op.result) + op = SpaceOperation('newtuple', resvars, Variable()) + block.operations.append(op) + graph = FunctionGraph('operationtestfn', block) + block.closeblock(Link([op.result], graph.returnblock)) + + fn = self.build_cfunc(graph) + results = fn() + + assert len(results) == len(TESTCASES) + for testcase, expected, result in zip(TESTCASES, expected, results): + assert (type(expected) == type(result) and expected == result), ( + "%s(%s) computed %r instead of %r" % ( + testcase[0], ', '.join([repr(x) for x in testcase[1:]]), + result, expected)) From tismer at codespeak.net Thu Apr 14 15:45:17 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 14 Apr 2005 15:45:17 +0200 (CEST) Subject: [pypy-svn] r10617 - in pypy/dist/pypy: interpreter translator/genc Message-ID: <20050414134517.6803027B9A@code1.codespeak.net> Author: tismer Date: Thu Apr 14 15:45:17 2005 New Revision: 10617 Modified: pypy/dist/pypy/interpreter/gateway.py pypy/dist/pypy/translator/genc/pyobjtype.py Log: small fix to None docstrings in pyobjtype, blocked _setup in the applevelinterp class, still we see some weird objects in targetpypy1 when compiling with -no-a Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Thu Apr 14 15:45:17 2005 @@ -573,6 +573,7 @@ _setup_done = False def _setup(cls): + """NOT_RPYTHON""" import os cls.cache_filename = os.path.join(os.path.dirname(__file__), "_interplevel_cache.py") Modified: pypy/dist/pypy/translator/genc/pyobjtype.py ============================================================================== --- pypy/dist/pypy/translator/genc/pyobjtype.py (original) +++ pypy/dist/pypy/translator/genc/pyobjtype.py Thu Apr 14 15:45:17 2005 @@ -306,8 +306,10 @@ if isinstance(value, staticmethod) and value.__get__(1) not in self.translator.flowgraphs and self.translator.frozen: print value continue - if isinstance(value, classmethod) and value.__get__(cls).__doc__.lstrip().startswith("NOT_RPYTHON"): - continue + if isinstance(value, classmethod): + doc = value.__get__(cls).__doc__ + if doc and doc.lstrip().startswith("NOT_RPYTHON"): + continue if isinstance(value, FunctionType) and value not in self.translator.flowgraphs and self.translator.frozen: print value continue From pedronis at codespeak.net Thu Apr 14 15:51:05 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 14 Apr 2005 15:51:05 +0200 (CEST) Subject: [pypy-svn] r10618 - pypy/dist/pypy/annotation Message-ID: <20050414135105.BC92627B9A@code1.codespeak.net> Author: pedronis Date: Thu Apr 14 15:51:05 2005 New Revision: 10618 Modified: pypy/dist/pypy/annotation/builtin.py Log: annotatate xrange like range Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Thu Apr 14 15:51:05 2005 @@ -22,6 +22,8 @@ factory.generalize(SomeInteger()) # XXX nonneg=... return factory.create() +builtin_xrange = builtin_range # xxx for now allow it + def builtin_int(s_obj): return SomeInteger() From arigo at codespeak.net Thu Apr 14 16:24:22 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 14 Apr 2005 16:24:22 +0200 (CEST) Subject: [pypy-svn] r10619 - pypy/dist/pypy/translator/genc Message-ID: <20050414142422.D5FE227B9A@code1.codespeak.net> Author: arigo Date: Thu Apr 14 16:24:22 2005 New Revision: 10619 Modified: pypy/dist/pypy/translator/genc/funcdef.py Log: More useful debugging info. Modified: pypy/dist/pypy/translator/genc/funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc/funcdef.py (original) +++ pypy/dist/pypy/translator/genc/funcdef.py Thu Apr 14 16:24:22 2005 @@ -125,7 +125,7 @@ return self.localscope.localname(v.name) elif isinstance(v, Constant): return self.genc.nameofconst(v, - debug=('Constant in the graph of', self)) + debug=('Constant in the graph of', self.func)) else: raise TypeError, "expr(%r)" % (v,) From pedronis at codespeak.net Thu Apr 14 16:25:16 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 14 Apr 2005 16:25:16 +0200 (CEST) Subject: [pypy-svn] r10620 - pypy/dist/pypy/annotation Message-ID: <20050414142516.92EA827B9A@code1.codespeak.net> Author: pedronis Date: Thu Apr 14 16:25:16 2005 New Revision: 10620 Modified: pypy/dist/pypy/annotation/builtin.py Log: xxx annotation for unicodedata.decimal Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Thu Apr 14 16:25:16 2005 @@ -161,6 +161,8 @@ getbookkeeper().warning("ovfcheck_lshift with unsigned") return SomeInteger() +def unicodedata_decimal(s_uchr): + return SomeInteger() # collect all functions import __builtin__ @@ -182,4 +184,6 @@ BUILTIN_ANALYZERS[sys.getrefcount] = count BUILTIN_ANALYZERS[sys.getdefaultencoding] = conf +import unicodedata +BUILTIN_ANALYZERS[unicodedata.decimal] = unicodedata_decimal # xxx From pedronis at codespeak.net Thu Apr 14 17:00:34 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 14 Apr 2005 17:00:34 +0200 (CEST) Subject: [pypy-svn] r10621 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050414150034.0CBD427B9A@code1.codespeak.net> Author: pedronis Date: Thu Apr 14 17:00:33 2005 New Revision: 10621 Modified: pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/objspace/std/test/test_longobject.py Log: fixed bug releaved by annotator, with small test. Q: is sign=0 digits=[] an intended state to support, from the assert in __init__ it seems so, but I haven't reviewed all the code to check what really makes sense? Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Thu Apr 14 17:00:33 2005 @@ -40,6 +40,9 @@ return w_self.longval() def _normalize(self): + if len(self.digits) == 0: + self.sign = 0 + return i = len(self.digits) - 1 while i != 0 and self.digits[i] == 0: self.digits.pop(-1) @@ -525,7 +528,7 @@ while i > 0 and a.digits[i] == b.digits[i]: i -= 1 if (i == -1): - return W_LongObject(space) + return W_LongObject(space, []) if a.digits[i] < b.digits[i]: sign = -1 a, b = b, a Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_longobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Thu Apr 14 17:00:33 2005 @@ -29,6 +29,10 @@ result = lobj.sub__Long_Long(self.space, f1, f2) assert result.longval() == x * i - y * j + def test_subzz(self): + w_l0 = lobj.W_LongObject(self.space, []) + assert self.space.sub(w_l0, w_l0).longval() == 0 + def test_mul(self): x = -1238585838347L y = 585839391919233L From arigo at codespeak.net Thu Apr 14 17:24:04 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 14 Apr 2005 17:24:04 +0200 (CEST) Subject: [pypy-svn] r10623 - in pypy/dist/pypy: annotation tool translator/genc Message-ID: <20050414152404.2C9C927B9A@code1.codespeak.net> Author: arigo Date: Thu Apr 14 17:24:03 2005 New Revision: 10623 Added: pypy/dist/pypy/tool/tls.py Modified: pypy/dist/pypy/annotation/bookkeeper.py pypy/dist/pypy/translator/genc/basetype.py pypy/dist/pypy/translator/genc/genc.py Log: Don't mix the translator's and the annotator's thread-local data with the one of the application being translated. Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Thu Apr 14 17:24:03 2005 @@ -7,7 +7,7 @@ from pypy.tool.ansi_print import ansi_print from pypy.annotation.model import * from pypy.annotation.classdef import ClassDef -from pypy.interpreter.miscutils import getthreadlocals +from pypy.tool.tls import tlsobject from pypy.tool.hack import func_with_new_name from pypy.interpreter.pycode import CO_VARARGS from pypy.interpreter.pycode import cpython_code_signature @@ -29,6 +29,9 @@ self.attrs.update(other.attrs) +TLS = tlsobject() + + class Bookkeeper: """The log of choices that have been made while analysing the operations. It ensures that the same 'choice objects' will be returned if we ask @@ -61,11 +64,11 @@ """Start of an operation. The operation is uniquely identified by the given key.""" self.position_key = position_key - getthreadlocals().bookkeeper = self + TLS.bookkeeper = self def leave(self): """End of an operation.""" - del getthreadlocals().bookkeeper + del TLS.bookkeeper del self.position_key def getfactory(self, factorycls): @@ -393,7 +396,7 @@ """Get the current Bookkeeper. Only works during the analysis of an operation.""" try: - return getthreadlocals().bookkeeper + return TLS.bookkeeper except AttributeError: return None Added: pypy/dist/pypy/tool/tls.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/tool/tls.py Thu Apr 14 17:24:03 2005 @@ -0,0 +1,11 @@ +"""Thread-local storage.""" + +try: + from thread import _local as tlsobject +except ImportError: # Python < 2.4 + + # XXX needs a real object whose attributes are visible only in + # the thread that reads/writes them. + + class tlsobject(object): + pass Modified: pypy/dist/pypy/translator/genc/basetype.py ============================================================================== --- pypy/dist/pypy/translator/genc/basetype.py (original) +++ pypy/dist/pypy/translator/genc/basetype.py Thu Apr 14 17:24:03 2005 @@ -1,6 +1,5 @@ import os from pypy.objspace.flow.model import SpaceOperation -from pypy.interpreter.miscutils import getthreadlocals class CType(object): @@ -13,7 +12,8 @@ def genc(): """A hack to get at the currently running GenC instance.""" - return getthreadlocals().genc + from pypy.translator.genc.genc import TLS + return TLS.genc genc = staticmethod(genc) def init_globals(self, genc): Modified: pypy/dist/pypy/translator/genc/genc.py ============================================================================== --- pypy/dist/pypy/translator/genc/genc.py (original) +++ pypy/dist/pypy/translator/genc/genc.py Thu Apr 14 17:24:03 2005 @@ -5,7 +5,7 @@ import autopath, os from pypy.objspace.flow.model import Variable, Constant -from pypy.interpreter.miscutils import getthreadlocals +from pypy.tool.tls import tlsobject from pypy.translator.gensupp import uniquemodulename from pypy.translator.genc.funcdef import FunctionDef, USE_CALL_TRACE @@ -13,10 +13,8 @@ # ____________________________________________________________ -#def go_figure_out_this_name(source): -# # ahem -# return 'PyRun_String("%s", Py_eval_input, PyEval_GetGlobals(), NULL)' % ( -# source, ) +TLS = tlsobject() # to store the genc instance temporarily + class GenC: MODNAMES = {} @@ -35,12 +33,12 @@ self.ctypes_alreadyseen = {} self.namespace = self.pyobjtype.namespace - assert not hasattr(getthreadlocals(), 'genc') - getthreadlocals().genc = self + assert not hasattr(TLS, 'genc') + TLS.genc = self try: self.gen_source() finally: - del getthreadlocals().genc + del TLS.genc def nameofconst(self, c, debug=None): try: From pedronis at codespeak.net Thu Apr 14 18:36:56 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 14 Apr 2005 18:36:56 +0200 (CEST) Subject: [pypy-svn] r10626 - in pypy/dist/pypy: objspace/std translator translator/test Message-ID: <20050414163656.E5FED27B9A@code1.codespeak.net> Author: pedronis Date: Thu Apr 14 18:36:56 2005 New Revision: 10626 Modified: pypy/dist/pypy/objspace/std/objspace.py pypy/dist/pypy/translator/ann_override.py pypy/dist/pypy/translator/test/test_annrpython.py Log: special case instatiate, also a reminder that generators need to do something special for it also special cased and singled out the code for wrapping builtin exceptions in StdObjSpace.wrap -> wrap_exception_cls specialize by location allocate_instance and added assert isinstance(.,_) (with test for this kind of annotation setting), it should allow the various descr__new__ code to call the appropriate __init__ without trouble Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Thu Apr 14 18:36:56 2005 @@ -197,9 +197,8 @@ return w_result # anything below this line is implicitly XXX'ed if isinstance(x, type(Exception)) and issubclass(x, Exception): - if hasattr(self, 'w_' + x.__name__): - w_result = getattr(self, 'w_' + x.__name__) - assert isinstance(w_result, W_TypeObject) + w_result = self.wrap_exception_cls(x) + if w_result is not None: return w_result from fake import fake_type if isinstance(x, type): @@ -209,6 +208,13 @@ return ft(self, x) wrap._specialize_ = "argtypes" + def wrap_exception_cls(x): + """NOT_RPYTHON""" + if hasattr(self, 'w_' + x.__name__): + w_result = getattr(self, 'w_' + x.__name__) + return w_result + return None + def unwrap(self, w_obj): if isinstance(w_obj, BaseWrappable): return w_obj @@ -262,13 +268,16 @@ user-defined type, without actually __init__ializing the instance.""" w_type = self.gettypeobject(cls.typedef) if self.is_true(self.is_(w_type, w_subtype)): - return instantiate(cls) + instance = instantiate(cls) else: w_type.check_user_subclass(w_subtype) subcls = get_unique_interplevel_subclass(cls, w_subtype.hasdict, w_subtype.nslots != 0) instance = instantiate(subcls) instance.user_setup(self, w_subtype, w_subtype.nslots) - return instance + assert isinstance(instance, cls) + return instance + allocate_instance._specialize_ = "location" + def unpacktuple(self, w_tuple, expected_length=None): assert isinstance(w_tuple, W_TupleObject) Modified: pypy/dist/pypy/translator/ann_override.py ============================================================================== --- pypy/dist/pypy/translator/ann_override.py (original) +++ pypy/dist/pypy/translator/ann_override.py Thu Apr 14 18:36:56 2005 @@ -6,6 +6,8 @@ from pypy.interpreter import pyframe from pypy.objspace.std import fake from pypy.module.sys2 import state as sys_state +import pypy.interpreter.typedef as itypedef +from pypy.objspace.std.objspace import StdObjSpace def hole(*args): return annmodel.SomeImpossibleValue(benign=True) @@ -14,6 +16,15 @@ bk = getbookkeeper() return bk.immutablevalue(None) +def instantiate(cls): + clsdef = getbookkeeper().getclassdef(itypedef.W_Root) + return annmodel.SomeInstance(clsdef) + +def wrap_exception_cls(x): + import pypy.std.objspace.std.typeobject as typeobject + clsdef = getbookkeeper().getclassdef(typeobject.W_TypeObject) + return annmodel.SomeInstance(clsdef, can_be_None=True) + pypy_overrides = {} def install(tgt, override): @@ -25,3 +36,5 @@ install(error.OperationError.record_interpreter_traceback, ignore) install(sys_state.pypy_getudir, ignore) install(fake.wrap_exception, hole) +install(itypedef.instantiate, instantiate) +install(StdObjSpace.wrap_exception_cls, wrap_exception_cls) Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Thu Apr 14 18:36:56 2005 @@ -782,7 +782,30 @@ a = RPythonAnnotator() s = a.build_types(g, []) assert s.const == True - + + def test_alloc_like(self): + class C1(object): + pass + class C2(object): + pass + + def inst(cls): + return cls() + + def alloc(cls): + i = inst(cls) + assert isinstance(i, cls) + return i + alloc._specialize_ = "location" + + def f(): + c1 = alloc(C1) + c2 = alloc(C2) + return c1,c2 + a = RPythonAnnotator() + s = a.build_types(f, []) + assert s.items[0].knowntype == C1 + assert s.items[1].knowntype == C2 def g(n): From cfbolz at codespeak.net Thu Apr 14 19:03:26 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Thu, 14 Apr 2005 19:03:26 +0200 (CEST) Subject: [pypy-svn] r10631 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050414170326.D102C27B9F@code1.codespeak.net> Author: cfbolz Date: Thu Apr 14 19:03:26 2005 New Revision: 10631 Modified: pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/objspace/std/test/test_longobject.py Log: Represent 0L with digits = [r_uint(0)], sign = 0 Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Thu Apr 14 19:03:26 2005 @@ -27,7 +27,7 @@ digits, sign = args_from_long(digits) w_self.digits = digits w_self.sign = sign - assert len(w_self.digits) != 0 or w_self.sign == 0 + assert len(w_self.digits) def longval(self): #YYYYYY l = 0 @@ -42,6 +42,7 @@ def _normalize(self): if len(self.digits) == 0: self.sign = 0 + self.digits = [r_uint(0)] return i = len(self.digits) - 1 while i != 0 and self.digits[i] == 0: @@ -528,7 +529,7 @@ while i > 0 and a.digits[i] == b.digits[i]: i -= 1 if (i == -1): - return W_LongObject(space, []) + return W_LongObject(space, [r_uint(0)]) if a.digits[i] < b.digits[i]: sign = -1 a, b = b, a Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_longobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Thu Apr 14 19:03:26 2005 @@ -30,7 +30,7 @@ assert result.longval() == x * i - y * j def test_subzz(self): - w_l0 = lobj.W_LongObject(self.space, []) + w_l0 = lobj.W_LongObject(self.space, [r_uint(0)]) assert self.space.sub(w_l0, w_l0).longval() == 0 def test_mul(self): From pedronis at codespeak.net Thu Apr 14 19:13:57 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 14 Apr 2005 19:13:57 +0200 (CEST) Subject: [pypy-svn] r10633 - pypy/dist/pypy/objspace/std Message-ID: <20050414171357.1C26327B9C@code1.codespeak.net> Author: pedronis Date: Thu Apr 14 19:13:56 2005 New Revision: 10633 Modified: pypy/dist/pypy/objspace/std/objspace.py Log: oops (Thanks Holger) Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Thu Apr 14 19:13:56 2005 @@ -208,7 +208,7 @@ return ft(self, x) wrap._specialize_ = "argtypes" - def wrap_exception_cls(x): + def wrap_exception_cls(self, x): """NOT_RPYTHON""" if hasattr(self, 'w_' + x.__name__): w_result = getattr(self, 'w_' + x.__name__) From pedronis at codespeak.net Thu Apr 14 19:25:05 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 14 Apr 2005 19:25:05 +0200 (CEST) Subject: [pypy-svn] r10635 - in pypy/dist/pypy: interpreter module/sys2 Message-ID: <20050414172505.8B66227B99@code1.codespeak.net> Author: pedronis Date: Thu Apr 14 19:25:05 2005 New Revision: 10635 Modified: pypy/dist/pypy/interpreter/baseobjspace.py pypy/dist/pypy/module/sys2/state.py Log: at this stage of translation work disable the new parser to be loaded in Modified: pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/dist/pypy/interpreter/baseobjspace.py Thu Apr 14 19:25:05 2005 @@ -86,7 +86,7 @@ # make this the default _sre module #self.setbuiltinmodule("_sre", "_sre_pypy") - self.setbuiltinmodule('parser') + # XXX disabled: self.setbuiltinmodule('parser') # initialize with "bootstrap types" from objspace (e.g. w_None) for name, value in self.__dict__.items(): Modified: pypy/dist/pypy/module/sys2/state.py ============================================================================== --- pypy/dist/pypy/module/sys2/state.py (original) +++ pypy/dist/pypy/module/sys2/state.py Thu Apr 14 19:25:05 2005 @@ -28,7 +28,7 @@ 'math', '_codecs', 'array', 'select', '_random', '_sre', 'time', '_socket', 'errno', 'binascii', 'unicodedata', - #'parser' + 'parser' ]: if fn not in builtin_modules: try: From tismer at codespeak.net Thu Apr 14 19:26:50 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 14 Apr 2005 19:26:50 +0200 (CEST) Subject: [pypy-svn] r10636 - pypy/dist/pypy/module/parser Message-ID: <20050414172650.03B4027B99@code1.codespeak.net> Author: tismer Date: Thu Apr 14 19:26:50 2005 New Revision: 10636 Modified: pypy/dist/pypy/module/parser/pyparser.py Log: give childadefault, for the case that children was empty. Makes flow space happier, but pyparser is still not RPythonic. Leaving this alone for now. Modified: pypy/dist/pypy/module/parser/pyparser.py ============================================================================== --- pypy/dist/pypy/module/parser/pyparser.py (original) +++ pypy/dist/pypy/module/parser/pyparser.py Thu Apr 14 19:26:50 2005 @@ -140,6 +140,7 @@ classify = lambda sym, name : DFAParser.classify(pygrammar, sym, name) symbol_no, symbol_name, initial, states, first = dfa crnt_state = states[initial] + child = [''] # have a defined state, also for flow for child in children: ((child_symbol, child_text, child_line_no), grandchildren) = child ilabel = classify(child_symbol, child_text) From tismer at codespeak.net Thu Apr 14 20:19:18 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 14 Apr 2005 20:19:18 +0200 (CEST) Subject: [pypy-svn] r10638 - pypy/dist/pypy/translator/llvm Message-ID: <20050414181918.E2C3627B9A@code1.codespeak.net> Author: tismer Date: Thu Apr 14 20:19:18 2005 New Revision: 10638 Modified: pypy/dist/pypy/translator/llvm/classrepr.py (props changed) pypy/dist/pypy/translator/llvm/funcrepr.py (props changed) pypy/dist/pypy/translator/llvm/seqrepr.py (props changed) pypy/dist/pypy/translator/llvm/typerepr.py (props changed) Log: eolstyle - native From pedronis at codespeak.net Thu Apr 14 20:55:01 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 14 Apr 2005 20:55:01 +0200 (CEST) Subject: [pypy-svn] r10639 - in pypy/dist/pypy: interpreter module/sys2 translator Message-ID: <20050414185501.68DA527B9A@code1.codespeak.net> Author: pedronis Date: Thu Apr 14 20:55:00 2005 New Revision: 10639 Modified: pypy/dist/pypy/interpreter/module.py pypy/dist/pypy/module/sys2/__init__.py pypy/dist/pypy/translator/ann_override.py Log: fix wrap_exception_cls override use Module.__init__ directly in module __new__ (avoids subclasses __init__ that are NOT_RPYTHON and not indented to be called at runtime) sys2.__init__.Module.__init__ is NOT_RPYTHON Modified: pypy/dist/pypy/interpreter/module.py ============================================================================== --- pypy/dist/pypy/interpreter/module.py (original) +++ pypy/dist/pypy/interpreter/module.py Thu Apr 14 20:55:00 2005 @@ -22,7 +22,7 @@ def descr_module__new__(space, w_subtype, __args__): module = space.allocate_instance(Module, w_subtype) - module.__init__(space, space.wrap('?')) + Module.__init__(module, space, space.wrap('?')) return space.wrap(module) def descr_module__init__(self, w_name, w_doc=None): Modified: pypy/dist/pypy/module/sys2/__init__.py ============================================================================== --- pypy/dist/pypy/module/sys2/__init__.py (original) +++ pypy/dist/pypy/module/sys2/__init__.py Thu Apr 14 20:55:00 2005 @@ -3,7 +3,8 @@ class Module(LazyModule): """Sys Builtin Module. """ - def __init__(self, space, w_name): + def __init__(self, space, w_name): + """NOT_RPYTHON""" # because parent __init__ isn't super(Module, self).__init__(space, w_name) self.checkinterval = 100 self.recursionlimit = 100 Modified: pypy/dist/pypy/translator/ann_override.py ============================================================================== --- pypy/dist/pypy/translator/ann_override.py (original) +++ pypy/dist/pypy/translator/ann_override.py Thu Apr 14 20:55:00 2005 @@ -20,8 +20,8 @@ clsdef = getbookkeeper().getclassdef(itypedef.W_Root) return annmodel.SomeInstance(clsdef) -def wrap_exception_cls(x): - import pypy.std.objspace.std.typeobject as typeobject +def wrap_exception_cls(space, x): + import pypy.objspace.std.typeobject as typeobject clsdef = getbookkeeper().getclassdef(typeobject.W_TypeObject) return annmodel.SomeInstance(clsdef, can_be_None=True) From arigo at codespeak.net Thu Apr 14 21:01:58 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 14 Apr 2005 21:01:58 +0200 (CEST) Subject: [pypy-svn] r10641 - pypy/dist/pypy/translator/genc Message-ID: <20050414190158.2F15A27B9A@code1.codespeak.net> Author: arigo Date: Thu Apr 14 21:01:57 2005 New Revision: 10641 Added: pypy/dist/pypy/translator/genc/classtype.py (contents, props changed) pypy/dist/pypy/translator/genc/heapobject_include.h (contents, props changed) pypy/dist/pypy/translator/genc/heapobject_template.h (contents, props changed) pypy/dist/pypy/translator/genc/heapobjecttype.py (contents, props changed) pypy/dist/pypy/translator/genc/instancetype.py (contents, props changed) Modified: pypy/dist/pypy/translator/genc/basetype.py pypy/dist/pypy/translator/genc/ctyper.py pypy/dist/pypy/translator/genc/funcdef.py pypy/dist/pypy/translator/genc/g_include.h Log: Some preliminary support for user-defined instances. Disabled for now. Modified: pypy/dist/pypy/translator/genc/basetype.py ============================================================================== --- pypy/dist/pypy/translator/genc/basetype.py (original) +++ pypy/dist/pypy/translator/genc/basetype.py Thu Apr 14 21:01:57 2005 @@ -8,7 +8,7 @@ self.translator = translator def debugname(self): - return self.__class__.__name__ + return self.typename def genc(): """A hack to get at the currently running GenC instance.""" Added: pypy/dist/pypy/translator/genc/classtype.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/classtype.py Thu Apr 14 21:01:57 2005 @@ -0,0 +1,38 @@ +from __future__ import generators +from pypy.translator.genc.basetype import CType +from pypy.objspace.flow.model import SpaceOperation, Constant, Variable + + +class CClassPtrType(CType): + error_return = 'NULL' + + # For now, this is the singleton type "pointer to the class C" + # It's supposed to become "pointer to class C or any subclass of C" + + def __init__(self, translator, classdef, instancetype): + super(CClassPtrType, self).__init__(translator) + self.classdef = classdef + self.instancetype = instancetype + self.typename = 'Kls' + instancetype.typename + + def nameof(self, cls, debug=None): + assert cls is self.classdef.cls # for now + return '((%s)1)' % self.typename # no class data at all + + def init_globals(self, genc): + yield 'typedef void *%s;' % self.typename + yield '#define OP_INCREF_%s(x) /* nothing */' % self.typename + yield '#define OP_DECREF_%s(x) /* nothing */' % self.typename + + # ____________________________________________________________ + + def spec_simple_call(self, typer, op): + cinst = self.instancetype + yield typer.typed_op(SpaceOperation('new_%s' % (cinst.typename,), + [], op.result), # args, ret + [], cinst ) # args_t, ret_t + + cls = self.classdef.cls + init = getattr(cls, '__init__', None) + if init is not None and init != object.__init__: + raise Exception, "XXX not implemented" Modified: pypy/dist/pypy/translator/genc/ctyper.py ============================================================================== --- pypy/dist/pypy/translator/genc/ctyper.py (original) +++ pypy/dist/pypy/translator/genc/ctyper.py Thu Apr 14 21:01:57 2005 @@ -12,6 +12,8 @@ from pypy.translator.genc.functype import CFuncPtrType from pypy.translator.genc.tupletype import CTupleType from pypy.translator.genc.listtype import CListType +from pypy.translator.genc.classtype import CClassPtrType +from pypy.translator.genc.instancetype import CInstanceType import types from pypy.interpreter.pycode import CO_VARARGS @@ -60,6 +62,13 @@ besttype = self.annotator.translator.getconcretetype( CFuncPtrType, tuple(args_ct), res_ct) +## -- DISABLED while it's under development +## elif (s_value.is_constant() and +## isinstance(s_value.const, (type, types.ClassType))): +## classdef = self.annotator.getuserclasses()[s_value.const] +## besttype = self.annotator.translator.getconcretetype( +## CClassPtrType, classdef, self.getinstancetype(classdef)) + elif isinstance(s_value, SomeTuple): items_ct = [self.annotation2concretetype(s_item) for s_item in s_value.items] @@ -105,3 +114,15 @@ vnone = Variable() vnone.concretetype = self.TNone return SpaceOperation('decref', [v], vnone) + + # ____________________________________________________________ + + def getinstancetype(self, classdef): + attritems = classdef.attrs.items() + attritems.sort() + fieldnames = [name for name, attrdef in attritems] + fieldtypes = [self.annotation2concretetype(attrdef.getvalue()) + for name, attrdef in attritems] + return self.annotator.translator.getconcretetype( + CInstanceType, tuple(fieldnames), tuple(fieldtypes), + classdef.cls.__name__) Modified: pypy/dist/pypy/translator/genc/funcdef.py ============================================================================== --- pypy/dist/pypy/translator/genc/funcdef.py (original) +++ pypy/dist/pypy/translator/genc/funcdef.py Thu Apr 14 21:01:57 2005 @@ -569,6 +569,20 @@ return '%s = %s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( r, args[0], ', '.join(args[1:]), err) + def OP_INST_GETATTR(self, op, err): + return '%s = INST_ATTR_%s__%s(%s);' % ( + self.expr(op.result), + op.args[0].concretetype.typename, + op.args[1].value, + self.expr(op.args[0])) + + def OP_INST_SETATTR(self, op, err): + return 'INST_ATTR_%s__%s(%s) = %s;' % ( + op.args[0].concretetype.typename, + op.args[1].value, + self.expr(op.args[0]), + self.expr(op.args[2])) + def OP_CONV_TO_OBJ(self, op, err): v = op.args[0] return '%s = CONV_TO_OBJ_%s(%s); if (PyErr_Occurred()) FAIL(%s)' % ( Modified: pypy/dist/pypy/translator/genc/g_include.h ============================================================================== --- pypy/dist/pypy/translator/genc/g_include.h (original) +++ pypy/dist/pypy/translator/genc/g_include.h Thu Apr 14 21:01:57 2005 @@ -14,6 +14,7 @@ #include "g_support.h" #include "g_module.h" +#include "heapobject_include.h" #include "int_include.h" #include "list_include.h" #include "none_include.h" Added: pypy/dist/pypy/translator/genc/heapobject_include.h ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/heapobject_include.h Thu Apr 14 21:01:57 2005 @@ -0,0 +1,32 @@ + +/************************************************************/ + /*** C header subsection: the base (empty) heap object ***/ + + +typedef struct s_baseobject { + int refcount; +} *baseobject; + +#define OP_NEW_BASEOBJECT(r,err) if (!(r=allocate_baseobject())) FAIL(err) +#define INIT_HEAPOBJ_baseobject(obj) (obj).refcount = 1; +#define FINI_HEAPOBJ_baseobject(obj) ; +#define REFCNT_baseobject(obj) (obj).refcount + +#define OP_INCREF_baseobject(x) x->refcount++; +#define OP_DECREF_baseobject(x) if (!--x->refcount) dealloc_baseobject(x); + +static baseobject allocate_baseobject(void) +{ + baseobject result = (baseobject) + PyObject_Malloc(sizeof(struct s_baseobject)); + if (result == NULL) + PyErr_NoMemory(); + INIT_HEAPOBJ_baseobject(*result) + return result; +} + +static void dealloc_baseobject(baseobject obj) +{ + FINI_HEAPOBJ_baseobject(*obj) + PyObject_Free(obj); +} Added: pypy/dist/pypy/translator/genc/heapobject_template.h ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/heapobject_template.h Thu Apr 14 21:01:57 2005 @@ -0,0 +1,38 @@ + +/************************************************************/ + /*** C header template: heap object %(typename)s ***/ + +/* NB. %(typename)s is the type "pointer to struct s_%(typename)s" */ + +typedef struct s_%(typename)s { + %(basestructname)s base; + %(extensiontypename)s ext; +} *%(typename)s; + +#define OP_NEW_%(TYPENAME)s(r,err) if (!(r=allocate_%(typename)s())) FAIL(err) +#define INIT_HEAPOBJ_%(typename)s(obj) \ + INIT_HEAPOBJ_%(basetypename)s((obj).base) +#define FINI_HEAPOBJ_%(typename)s(obj) \ + FINI_HEAPOBJ_%(basetypename)s((obj).base) +#define REFCNT_%(typename)s(obj) \ + REFCNT_%(basetypename)s((obj).base) + +#define OP_INCREF_%(typename)s(x) REFCNT_%(typename)s(*x)++; +#define OP_DECREF_%(typename)s(x) if (!--REFCNT_%(typename)s(*x)) \ + dealloc_%(typename)s(x); + +static %(typename)s allocate_%(typename)s(void) +{ + %(typename)s result = (%(typename)s) + PyObject_Malloc(sizeof(struct s_%(typename)s)); + if (result == NULL) + PyErr_NoMemory(); + INIT_HEAPOBJ_%(typename)s(*result) + return result; +} + +static void dealloc_%(typename)s(%(typename)s obj) +{ + FINI_HEAPOBJ_%(typename)s(*obj) + PyObject_Free(obj); +} Added: pypy/dist/pypy/translator/genc/heapobjecttype.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/heapobjecttype.py Thu Apr 14 21:01:57 2005 @@ -0,0 +1,47 @@ +from __future__ import generators +from pypy.translator.genc.basetype import CType + + +class CHeapObjectType(CType): + """The type 'pointer to an object in the heap'. The object's layout must + be an extension of another existing object layout (there is an empty + base object, which in this version contains just a ref counter). + The extension is by adding a single field to the parent. This field can + be a tuple (i.e. a struct), so you can add a bunch of data at once in this + way. + """ + error_return = 'NULL' + + Counter = {} + + def __init__(self, translator, basetype, extensiontype, namehint): + super(CHeapObjectType, self).__init__(translator) + self.basetype = basetype + if basetype is None: + self.basetypename = 'baseobject' # from object_include.h + self.basestructname = 'struct s_baseobject' + else: + assert isinstance(basetype, CHeapObjectType) + self.basetypename = self.basetype.typename + self.basestructname = self.basetype.structname + self.extensiontype = extensiontype + + while namehint.find('__') >= 0: + namehint = namehint.replace('__', '_') + key = namehint.upper() + self.typename = 'P%d_%s' % ( + CHeapObjectType.Counter.setdefault(key, 0), namehint) + self.structname = 'struct s_' + self.typename + CHeapObjectType.Counter[key] += 1 + + def nameof(self, cls, debug=None): + XXX(Later) + + def init_globals(self, genc): + yield genc.loadincludefile('heapobject_template.h') % { + 'typename' : self.typename, + 'TYPENAME' : self.typename.upper(), + 'basetypename' : self.basetypename, + 'basestructname' : self.basestructname, + 'extensiontypename' : self.extensiontype.typename, + } Added: pypy/dist/pypy/translator/genc/instancetype.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/genc/instancetype.py Thu Apr 14 21:01:57 2005 @@ -0,0 +1,57 @@ +from __future__ import generators +from pypy.objspace.flow.model import Constant, SpaceOperation +from pypy.translator.genc.heapobjecttype import CHeapObjectType +from pypy.translator.genc.tupletype import CTupleType + + +class CInstanceType(CHeapObjectType): + """The type 'pointer to a class instance in the heap.""" + + def __init__(self, translator, fieldnames, fieldtypes, classname): + self.fieldnames = fieldnames + self.fieldtypes = fieldtypes + contenttype = translator.getconcretetype(CTupleType, fieldtypes) + super(CInstanceType, self).__init__(translator, None, contenttype, + classname) + self.fields = {} # XXX parent + for name, ct in zip(fieldnames, fieldtypes): + self.fields[name] = ct + + def init_globals(self, genc): + for line in super(CInstanceType, self).init_globals(genc): + yield line + for i, name in zip(range(len(self.fieldnames)), self.fieldnames): + yield '#define INST_ATTR_%s__%s(x) (x)->ext.f%d' % ( + self.typename, name, i) + + # ____________________________________________________________ + + def spec_getattr(self, typer, op): + if not isinstance(op.args[1], Constant): + raise NotImplementedError + attrname = op.args[1].value + try: + ct = self.fields[attrname] + except KeyError: + print "* warning, no field %s in %s" % (attrname, self.typename) + raise NotImplementedError + TPyObject = typer.TPyObject + yield typer.typed_op(op, [self, TPyObject], ct, # args_t, ret_t + newopname='inst_getattr') + yield typer.incref_op(op.result) + + def spec_setattr(self, typer, op): + if not isinstance(op.args[1], Constant): + raise NotImplementedError + attrname = op.args[1].value + try: + ct = self.fields[attrname] + except KeyError: + print "* warning, no field %s in %s" % (attrname, self.typename) + raise NotImplementedError + TNone = typer.TNone + TPyObject = typer.TPyObject + # XXX decref existing value first + yield typer.typed_op(op, [self, TPyObject, ct], TNone, # args_t, ret_t + newopname='inst_setattr') + yield typer.incref_op(op.args[2]) From arigo at codespeak.net Thu Apr 14 21:06:42 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 14 Apr 2005 21:06:42 +0200 (CEST) Subject: [pypy-svn] r10642 - pypy/dist/pypy/translator Message-ID: <20050414190642.667BB27B9A@code1.codespeak.net> Author: arigo Date: Thu Apr 14 21:06:42 2005 New Revision: 10642 Modified: pypy/dist/pypy/translator/gensupp.py Log: Adds an "l_" prefix to local variables, to avoid clashes with type names (which trigger a tcc bug). This is meant as a temporary fix , and just trying. It does solve the problem. Christian, please feel free to do it as you like. Modified: pypy/dist/pypy/translator/gensupp.py ============================================================================== --- pypy/dist/pypy/translator/gensupp.py (original) +++ pypy/dist/pypy/translator/gensupp.py Thu Apr 14 21:06:42 2005 @@ -151,6 +151,8 @@ basename = name[:scorepos] if wrapped: basename = "w_" + basename + else: + basename = "l_" + basename else: basename = name ret = self.uniquename(basename) From pedronis at codespeak.net Thu Apr 14 21:42:46 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 14 Apr 2005 21:42:46 +0200 (CEST) Subject: [pypy-svn] r10643 - in pypy/dist/pypy: objspace/std translator Message-ID: <20050414194246.BA43327B9A@code1.codespeak.net> Author: pedronis Date: Thu Apr 14 21:42:46 2005 New Revision: 10643 Modified: pypy/dist/pypy/objspace/std/fake.py pypy/dist/pypy/objspace/std/objspace.py pypy/dist/pypy/translator/ann_override.py Log: single out the logic for faked objects in space.wrap to fake.fake_object special case it for the annotator Modified: pypy/dist/pypy/objspace/std/fake.py ============================================================================== --- pypy/dist/pypy/objspace/std/fake.py (original) +++ pypy/dist/pypy/objspace/std/fake.py Thu Apr 14 21:42:46 2005 @@ -11,6 +11,15 @@ # types that we do not yet implement in the standard object space # (files being the biggy) + +def fake_object(space, x): + if isinstance(x, type): + ft = fake_type(x) + return space.gettypeobject(ft.typedef) + ft = fake_type(type(x)) + return ft(space, x) + + import sys _fake_type_cache = Cache() Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Thu Apr 14 21:42:46 2005 @@ -200,12 +200,9 @@ w_result = self.wrap_exception_cls(x) if w_result is not None: return w_result - from fake import fake_type - if isinstance(x, type): - ft = fake_type(x) - return self.gettypeobject(ft.typedef) - ft = fake_type(type(x)) - return ft(self, x) + from fake import fake_object + return fake_object(self, x) + wrap._specialize_ = "argtypes" def wrap_exception_cls(self, x): Modified: pypy/dist/pypy/translator/ann_override.py ============================================================================== --- pypy/dist/pypy/translator/ann_override.py (original) +++ pypy/dist/pypy/translator/ann_override.py Thu Apr 14 21:42:46 2005 @@ -25,6 +25,10 @@ clsdef = getbookkeeper().getclassdef(typeobject.W_TypeObject) return annmodel.SomeInstance(clsdef, can_be_None=True) +def fake_object(space, x): + clsdef = getbookkeeper().getclassdef(itypedef.W_Root) + return annmodel.SomeInstance(clsdef) + pypy_overrides = {} def install(tgt, override): @@ -36,5 +40,6 @@ install(error.OperationError.record_interpreter_traceback, ignore) install(sys_state.pypy_getudir, ignore) install(fake.wrap_exception, hole) +install(fake.fake_object, fake_object) install(itypedef.instantiate, instantiate) install(StdObjSpace.wrap_exception_cls, wrap_exception_cls) From pedronis at codespeak.net Fri Apr 15 01:00:39 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 01:00:39 +0200 (CEST) Subject: [pypy-svn] r10652 - in pypy/dist/pypy: annotation objspace/std Message-ID: <20050414230039.8938E27B97@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 01:00:39 2005 New Revision: 10652 Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/objspace/std/typeobject.py Log: workaround getitem(None,0) -> SomeObject issue annotations for os.path.* stuff and min,max Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Fri Apr 15 01:00:39 2005 @@ -3,11 +3,11 @@ """ import types -import sys, math +import sys, math, os from pypy.tool.ansi_print import ansi_print from pypy.annotation.model import SomeInteger, SomeObject, SomeChar, SomeBool from pypy.annotation.model import SomeList, SomeString, SomeTuple, SomeSlice -from pypy.annotation.model import SomeFloat +from pypy.annotation.model import SomeFloat, unionof from pypy.annotation.bookkeeper import getbookkeeper from pypy.annotation.factory import ListFactory from pypy.objspace.flow.model import Constant @@ -112,6 +112,15 @@ factory.generalize(s_tup) return factory.create() +def builtin_min(*s_values): + if len(s_values) == 1: # xxx do we support this? + s_iter = s_values[0].iter() + return s_iter.next() + else: + return unionof(*s_values) + +builtin_max = builtin_min + def builtin_apply(*stuff): getbookkeeper().warning("ignoring apply%r" % (stuff,)) return SomeObject() @@ -164,6 +173,12 @@ def unicodedata_decimal(s_uchr): return SomeInteger() +def test(*args): + return SomeBool() + +def pathpart(*args): + return SomeString() + # collect all functions import __builtin__ BUILTIN_ANALYZERS = {} @@ -187,3 +202,9 @@ import unicodedata BUILTIN_ANALYZERS[unicodedata.decimal] = unicodedata_decimal # xxx +# os.path stuff +BUILTIN_ANALYZERS[os.path.dirname] = pathpart +BUILTIN_ANALYZERS[os.path.normpath] = pathpart +BUILTIN_ANALYZERS[os.path.join] = pathpart +BUILTIN_ANALYZERS[os.path.exists] = test +BUILTIN_ANALYZERS[os.path.isdir] = test Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Fri Apr 15 01:00:39 2005 @@ -305,7 +305,7 @@ while orderlists: for candidatelist in orderlists: candidate = candidatelist[0] - if mro_blockinglist(candidate, orderlists) is None: + if mro_blockinglist(candidate, orderlists) is GOODCANDIDATE: break # good candidate else: return mro_error(orderlists) # no candidate found @@ -318,11 +318,13 @@ del orderlists[i] return order +GOODCANDIDATE = [] + def mro_blockinglist(candidate, orderlists): for lst in orderlists: if candidate in lst[1:]: return lst - return None # good candidate + return GOODCANDIDATE # good candidate def mro_error(orderlists): cycle = [] From tismer at codespeak.net Fri Apr 15 01:14:31 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 15 Apr 2005 01:14:31 +0200 (CEST) Subject: [pypy-svn] r10655 - pypy/dist/pypy/translator Message-ID: <20050414231431.245BD27B72@code1.codespeak.net> Author: tismer Date: Fri Apr 15 01:14:30 2005 New Revision: 10655 Modified: pypy/dist/pypy/translator/gensupp.py Log: Yes, I did change this checkin, although it was totally correct. So why, you may ask??? Baaasically (Hi Alex) the same change that arigo did, but I really had to add some commentary, which should be dropped, after we fulfilled our task of really documenting and supporting the maintainers of tcc, who were so very helpful for us. Please, try to digest that sentence. We need to keep track of actions which we want to propagate through the pypy environment. We are an open-sourced, EU-funded project. In this outstanding situation, we are oblieged not to just digest and valuate existing other OS projects, but we have to support them, I guess. Now, by putting tcc into a real-world situation, I think that we also added to its reasons why it should exist, of course. But if we do use it, and if we do find problems with it, then it should be a consequence to support it and to provide follow-ups and bug-reports. Was this spelled correctly, guys? cheers - chris Modified: pypy/dist/pypy/translator/gensupp.py ============================================================================== --- pypy/dist/pypy/translator/gensupp.py (original) +++ pypy/dist/pypy/translator/gensupp.py Fri Apr 15 01:14:30 2005 @@ -35,7 +35,7 @@ return [block for ofs, txt, block in allblocks] # a unique list, similar to a list. -# append1 appends an object only if it is not there,already. +# append1 appends an object only if it is not there, already. class UniqueList(list): def __init__(self, *args, **kwds): @@ -149,10 +149,14 @@ basename = ('v', 'w_') [wrapped] elif scorepos >= 0 and name[scorepos+1:].isdigit(): basename = name[:scorepos] - if wrapped: - basename = "w_" + basename - else: - basename = "l_" + basename + # for wrapped named things, prepend a w_ + # for other named things, prepend a l_. + # XXX The latter is needed because tcc has a nasty parser bug that + # produces errors if names co-incide with global typedefs, + # if the type prefix is itself a typedef reference! + # XXX report this bug to the tcc maintainer(s) + # YYY drop this comment afterwards, but keep the code, it's better. + basename = ("l_", "w_")[wrapped] + basename else: basename = name ret = self.uniquename(basename) From pedronis at codespeak.net Fri Apr 15 15:36:05 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 15:36:05 +0200 (CEST) Subject: [pypy-svn] r10667 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050415133605.56DDB27B82@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 15:36:05 2005 New Revision: 10667 Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/translator/test/test_annrpython.py Log: what we were doing with [assert] isinstance(.,list) was dangerous an losing info Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Fri Apr 15 15:36:05 2005 @@ -131,8 +131,10 @@ bk = getbookkeeper() if bk is not None: # for testing if hasattr(obj1,'is_type_of') and obj2.is_constant(): - r.knowntypedata = (obj1.is_type_of, bk.valueoftype(obj2.const)) - return r + if obj2.const != list: # in list case we are most likely bound to lose info + # we would also generate a factory-less list, not good either + r.knowntypedata = (obj1.is_type_of, bk.valueoftype(obj2.const)) + return r fn, block, i = bk.position_key annotator = bk.annotator op = block.operations[i] Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Fri Apr 15 15:36:05 2005 @@ -81,7 +81,9 @@ variables = [op.args[1]] for variable in variables: assert bk.annotator.binding(variable) == s_obj - r.knowntypedata = (variables, bk.valueoftype(typ)) + if typ != list: # in the list case we are most likely bound to lose info, + # we would also generate a factory-less list, not good either + r.knowntypedata = (variables, bk.valueoftype(typ)) return r def builtin_hasattr(s_obj, s_attr): Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Fri Apr 15 15:36:05 2005 @@ -807,6 +807,35 @@ assert s.items[0].knowntype == C1 assert s.items[1].knowntype == C2 + def test_assert_list_doesnt_lose_info(self): + class T(object): + pass + def g(l): + assert isinstance(l, list) + return l + def f(): + l = [T()] + return g(l) + a = RPythonAnnotator() + s = a.build_types(f, []) + assert s.knowntype == list + assert s.s_item.knowntype == T + + def test_assert_type_is_list_doesnt_lose_info(self): + class T(object): + pass + def g(l): + assert type(l) is list + return l + def f(): + l = [T()] + return g(l) + a = RPythonAnnotator() + s = a.build_types(f, []) + assert s.knowntype == list + assert s.s_item.knowntype == T + + def g(n): return [0,1,2,n] From pedronis at codespeak.net Fri Apr 15 15:44:32 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 15:44:32 +0200 (CEST) Subject: [pypy-svn] r10669 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050415134432.D528227B82@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 15:44:32 2005 New Revision: 10669 Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/translator/test/test_annrpython.py Log: annotation for bool(.) Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Fri Apr 15 15:44:32 2005 @@ -24,6 +24,12 @@ builtin_xrange = builtin_range # xxx for now allow it +def builtin_bool(s_obj): + r = SomeBool() + if s_obj.is_constant(): + r.const = bool(s_obj.const) + return r + def builtin_int(s_obj): return SomeInteger() Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Fri Apr 15 15:44:32 2005 @@ -710,6 +710,13 @@ s = a.build_types(snippet.harmonic, [int]) assert s.knowntype == float + def test_bool(self): + def f(a,b): + return bool(a) or bool(b) + a = RPythonAnnotator() + s = a.build_types(f, [int,list]) + assert s.knowntype == bool + def test_float(self): def f(n): return float(n) From pedronis at codespeak.net Fri Apr 15 16:19:03 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 16:19:03 +0200 (CEST) Subject: [pypy-svn] r10673 - in pypy/dist/pypy: annotation interpreter Message-ID: <20050415141903.D246E27B7A@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 16:19:03 2005 New Revision: 10673 Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/interpreter/argument.py Log: fix math.fmod, math.floor annotation! fix Arguments.has_keywords -> SomeBool Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Fri Apr 15 16:19:03 2005 @@ -163,10 +163,10 @@ return SomeString() def math_fmod(x, y): - return SomeObject() + return SomeFloat() def math_floor(x): - return SomeObject() + return SomeFloat() def rarith_ovfcheck(s_obj): if isinstance(s_obj, SomeInteger) and s_obj.unsigned: Modified: pypy/dist/pypy/interpreter/argument.py ============================================================================== --- pypy/dist/pypy/interpreter/argument.py (original) +++ pypy/dist/pypy/interpreter/argument.py Fri Apr 15 16:19:03 2005 @@ -89,8 +89,8 @@ return args def has_keywords(self): - return self.kwds_w or (self.w_starstararg is not None and - self.space.is_true(self.w_starstararg)) + return bool(self.kwds_w) or (self.w_starstararg is not None and + self.space.is_true(self.w_starstararg)) def fixedunpack(self, argcount): """The simplest argument parsing: get the 'argcount' arguments, From pedronis at codespeak.net Fri Apr 15 16:28:20 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 16:28:20 +0200 (CEST) Subject: [pypy-svn] r10674 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050415142820.177A427B7A@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 16:28:19 2005 New Revision: 10674 Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/translator/test/test_annrpython.py Log: for now support annotating str*int, int*str Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Fri Apr 15 16:28:19 2005 @@ -317,6 +317,13 @@ def getitem((str1, int2)): return SomeChar() + def mul((str1, int2)): # xxx do we want to support this + return SomeString() + +class __extend__(pairtype(SomeInteger, SomeString)): + + def mul((int1, str2)): # xxx do we want to support this + return SomeString() class __extend__(pairtype(SomeInteger, SomeList)): Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Fri Apr 15 16:28:19 2005 @@ -841,7 +841,13 @@ s = a.build_types(f, []) assert s.knowntype == list assert s.s_item.knowntype == T - + + def test_int_str_mul(self): + def f(x,a,b): + return a*x+x*b + a = RPythonAnnotator() + s = a.build_types(f, [str,int,int]) + assert s.knowntype == str def g(n): From pedronis at codespeak.net Fri Apr 15 16:51:16 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 16:51:16 +0200 (CEST) Subject: [pypy-svn] r10675 - pypy/dist/pypy/annotation Message-ID: <20050415145116.AA0A327B7A@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 16:51:16 2005 New Revision: 10675 Modified: pypy/dist/pypy/annotation/unaryop.py Log: for now annotate str.split Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Fri Apr 15 16:51:16 2005 @@ -225,7 +225,6 @@ return factory.create() - class __extend__(SomeString): def method_join(str, s_list): @@ -237,6 +236,11 @@ def ord(str): return SomeInteger(nonneg=True) + def method_split(str, patt): # XXX + factory = getbookkeeper().getfactory(ListFactory) + factory.generalize(SomeString()) + return factory.create() + class __extend__(SomeChar): From pedronis at codespeak.net Fri Apr 15 17:24:07 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 17:24:07 +0200 (CEST) Subject: [pypy-svn] r10678 - pypy/dist/pypy/annotation Message-ID: <20050415152407.6E5DB27B82@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 17:24:07 2005 New Revision: 10678 Modified: pypy/dist/pypy/annotation/builtin.py Log: special case intmask Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Fri Apr 15 17:24:07 2005 @@ -168,6 +168,9 @@ def math_floor(x): return SomeFloat() +def rarith_intmask(s_obj): + return SomeInteger() + def rarith_ovfcheck(s_obj): if isinstance(s_obj, SomeInteger) and s_obj.unsigned: getbookkeeper().warning("ovfcheck on unsigned") @@ -198,6 +201,8 @@ BUILTIN_ANALYZERS[pypy.tool.rarithmetic.r_uint] = restricted_uint BUILTIN_ANALYZERS[pypy.tool.rarithmetic.ovfcheck] = rarith_ovfcheck BUILTIN_ANALYZERS[pypy.tool.rarithmetic.ovfcheck_lshift] = rarith_ovfcheck_lshift +BUILTIN_ANALYZERS[pypy.tool.rarithmetic.intmask] = rarith_intmask + BUILTIN_ANALYZERS[Exception.__init__.im_func] = exception_init # this one is needed otherwise when annotating assert in a test we may try to annotate # py.test AssertionError.__init__ . From pedronis at codespeak.net Fri Apr 15 19:22:54 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 19:22:54 +0200 (CEST) Subject: [pypy-svn] r10696 - pypy/dist/pypy/annotation Message-ID: <20050415172254.58AF727B7A@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 19:22:54 2005 New Revision: 10696 Modified: pypy/dist/pypy/annotation/binaryop.py Log: string slicing Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Fri Apr 15 19:22:54 2005 @@ -312,6 +312,11 @@ return SomeList(lst.factories, lst.s_item) +class __extend__(pairtype(SomeString, SomeSlice)): + + def getitem((str1, slic)): + return SomeString() + class __extend__(pairtype(SomeString, SomeInteger)): def getitem((str1, int2)): From pedronis at codespeak.net Fri Apr 15 19:25:48 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 19:25:48 +0200 (CEST) Subject: [pypy-svn] r10698 - pypy/dist/pypy/objspace/std Message-ID: <20050415172548.DF04F27B7A@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 19:25:48 2005 New Revision: 10698 Modified: pypy/dist/pypy/objspace/std/objecttype.py pypy/dist/pypy/objspace/std/stringobject.py Log: for now use r_uint in place of fixid (we may need a r_huint for this) fix cases mixing strings and W_StringObjects in lists passed to W_ListObject constructor in stringobject Modified: pypy/dist/pypy/objspace/std/objecttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/objecttype.py (original) +++ pypy/dist/pypy/objspace/std/objecttype.py Fri Apr 15 19:25:48 2005 @@ -3,14 +3,14 @@ from pypy.objspace.std.stdtypedef import * from pypy.objspace.std.register_all import register_all from pypy.objspace.std.objspace import StdObjSpace -from pypy.tool.uid import fixid +from pypy.tool.rarithmetic import r_uint def descr__repr__(space, w_obj): w = space.wrap classname = space.str_w(space.getattr(space.type(w_obj), w("__name__"))) id = space.int_w(space.id(w_obj))# xxx ids could be long - id = fixid(id) + id = r_uint(id) # XXX what about sizeof(void*) > sizeof(long) !! return w("<%s object at 0x%x>" % (classname, id)) def descr__str__(space, w_obj): Modified: pypy/dist/pypy/objspace/std/stringobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/stringobject.py (original) +++ pypy/dist/pypy/objspace/std/stringobject.py Fri Apr 15 19:25:48 2005 @@ -283,12 +283,14 @@ inword = 1 pos = pos + 1 + res_w = [None] * len(res) for i in range(len(res)): - res[i] = W_StringObject(space, res[i]) - return W_ListObject(space, res) + res_w[i] = W_StringObject(space, res[i]) + + return W_ListObject(space, res_w) def str_split__String_String_ANY(space, w_self, w_by, w_maxsplit=-1): - res = [] + res_w = [] start = 0 value = w_self._value by = w_by._value @@ -308,18 +310,16 @@ #the find method, if next < 0: break - res.append(value[start:next]) + res_w.append(W_StringObject(space, value[start:next])) start = next + bylen #decrese the counter only then, when #we don't have default maxsplit if maxsplit > -1: splitcount = splitcount - 1 - res.append(value[start:]) + res_w.append(W_StringObject(space, value[start:])) - for i in range(len(res)): - res[i] = W_StringObject(w_self.space, res[i]) - return W_ListObject(w_self.space, res) + return W_ListObject(w_self.space, res_w) def str_join__String_ANY(space, w_self, w_list): list = space.unpackiterable(w_list) From arigo at codespeak.net Fri Apr 15 19:32:11 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 15 Apr 2005 19:32:11 +0200 (CEST) Subject: [pypy-svn] r10700 - in pypy/dist/pypy: annotation annotation/test translator translator/test Message-ID: <20050415173211.61BB627B7A@code1.codespeak.net> Author: arigo Date: Fri Apr 15 19:32:11 2005 New Revision: 10700 Added: pypy/dist/pypy/annotation/listdef.py (contents, props changed) Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/bookkeeper.py pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/annotation/factory.py pypy/dist/pypy/annotation/model.py pypy/dist/pypy/annotation/test/test_model.py pypy/dist/pypy/annotation/unaryop.py pypy/dist/pypy/translator/annrpython.py pypy/dist/pypy/translator/test/test_annrpython.py Log: Replaced ListFactory with ListDef, as discussed on IRC. The goal is to get rid of factory.py altogether. I guess I should write some doc somewhere else than in this check-in message... Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Fri Apr 15 19:32:11 2005 @@ -227,8 +227,8 @@ class __extend__(pairtype(SomeList, SomeList)): def union((lst1, lst2)): - return SomeList(setunion(lst1.factories, lst2.factories), - s_item = unionof(lst1.s_item, lst2.s_item)) + lst1.listdef.merge(lst2.listdef) + return lst1 add = union @@ -300,16 +300,16 @@ return lst1 def getitem((lst1, int2)): - return lst1.s_item + return lst1.listdef.read_item() def setitem((lst1, int2), s_value): - generalize(lst1.factories, s_value) + lst1.listdef.generalize(s_value) class __extend__(pairtype(SomeList, SomeSlice)): def getitem((lst, slic)): - return SomeList(lst.factories, lst.s_item) + return lst class __extend__(pairtype(SomeString, SomeSlice)): Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Fri Apr 15 19:32:11 2005 @@ -7,6 +7,7 @@ from pypy.tool.ansi_print import ansi_print from pypy.annotation.model import * from pypy.annotation.classdef import ClassDef +from pypy.annotation.listdef import ListDef, MOST_GENERAL_LISTDEF from pypy.tool.tls import tlsobject from pypy.tool.hack import func_with_new_name from pypy.interpreter.pycode import CO_VARARGS @@ -49,6 +50,7 @@ self.pbccache = {} self.pbctypes = {} self.seen_mutable = {} + self.listdefs = {} # map position_keys to ListDefs # mapping position -> most general result, for call sites calling # argtypes specialized functions @@ -99,6 +101,22 @@ self.userclasseslist.append(cdef) return self.userclasses[cls] + def getlistdef(self): + """Get the ListDef associated with the current position.""" + try: + listdef = self.listdefs[self.position_key] + except KeyError: + listdef = self.listdefs[self.position_key] = ListDef(self) + return listdef + + def newlist(self, *s_values): + """Make a SomeList associated with the current position, general + enough to contain the s_values as items.""" + listdef = self.getlistdef() + for s_value in s_values: + listdef.generalize(s_value) + return SomeList(listdef) + def immutablevalue(self, x): """The most precise SomeValue instance that contains the @@ -118,7 +136,7 @@ result = SomeFloat() elif tp is list: items_s = [self.immutablevalue(e) for e in x] - result = SomeList({}, unionof(*items_s)) + result = SomeList(ListDef(self, unionof(*items_s))) elif tp is dict: # exactly a dict keys_s = [self.immutablevalue(e) for e in x.keys()] values_s = [self.immutablevalue(e) for e in x.values()] @@ -197,7 +215,7 @@ elif t is float: return SomeFloat() elif t is list: - return SomeList(factories={}) + return SomeList(MOST_GENERAL_LISTDEF) # can't do dict, tuple elif t.__module__ != '__builtin__': classdef = self.getclassdef(t) Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Fri Apr 15 19:32:11 2005 @@ -9,7 +9,6 @@ from pypy.annotation.model import SomeList, SomeString, SomeTuple, SomeSlice from pypy.annotation.model import SomeFloat, unionof from pypy.annotation.bookkeeper import getbookkeeper -from pypy.annotation.factory import ListFactory from pypy.objspace.flow.model import Constant import pypy.tool.rarithmetic @@ -18,9 +17,7 @@ return getbookkeeper().immutablevalue(x) def builtin_range(*args): - factory = getbookkeeper().getfactory(ListFactory) - factory.generalize(SomeInteger()) # XXX nonneg=... - return factory.create() + return getbookkeeper().newlist(SomeInteger()) # XXX nonneg=... builtin_xrange = builtin_range # xxx for now allow it @@ -107,18 +104,14 @@ return SomeObject() def builtin_list(s_iterable): - factory = getbookkeeper().getfactory(ListFactory) s_iter = s_iterable.iter() - factory.generalize(s_iter.next()) - return factory.create() + return getbookkeeper().newlist(s_iter.next()) def builtin_zip(s_iterable1, s_iterable2): - factory = getbookkeeper().getfactory(ListFactory) s_iter1 = s_iterable1.iter() s_iter2 = s_iterable2.iter() s_tup = SomeTuple((s_iter1.next(),s_iter2.next())) - factory.generalize(s_tup) - return factory.create() + return getbookkeeper().newlist(s_tup) def builtin_min(*s_values): if len(s_values) == 1: # xxx do we support this? Modified: pypy/dist/pypy/annotation/factory.py ============================================================================== --- pypy/dist/pypy/annotation/factory.py (original) +++ pypy/dist/pypy/annotation/factory.py Fri Apr 15 19:32:11 2005 @@ -11,47 +11,23 @@ from pypy.annotation.bookkeeper import getbookkeeper -class BlockedInference(Exception): - """This exception signals the type inference engine that the situation - is currently blocked, and that it should try to progress elsewhere.""" - - def __init__(self, info=None): - try: - self.annotator = getbookkeeper().annotator - self.break_at = getbookkeeper().position_key - except AttributeError: - self.break_at = None - self.info = info - - def __repr__(self): - if self.info: - info = "[%s]" % self.info - else: - info = "" - if not self.break_at: - break_at = "?" - else: - break_at = self.annotator.whereami(self.break_at) - return "" %(break_at, info) - - __str__ = __repr__ -class ListFactory: - s_item = SomeImpossibleValue() +##class ListFactory: +## s_item = SomeImpossibleValue() - def __repr__(self): - return '%s(s_item=%r)' % (self.__class__.__name__, self.s_item) +## def __repr__(self): +## return '%s(s_item=%r)' % (self.__class__.__name__, self.s_item) - def create(self): - return SomeList(factories = {self: True}, s_item = self.s_item) +## def create(self): +## return SomeList(factories = {self: True}, s_item = self.s_item) - def generalize(self, s_new_item): - if not self.s_item.contains(s_new_item): - self.s_item = unionof(self.s_item, s_new_item) - return True - else: - return False +## def generalize(self, s_new_item): +## if not self.s_item.contains(s_new_item): +## self.s_item = unionof(self.s_item, s_new_item) +## return True +## else: +## return False class DictFactory: @@ -85,4 +61,4 @@ if modified: for factory in modified: factory.bookkeeper.annotator.reflowfromposition(factory.position_key) - raise BlockedInference # reflow now + ##raise BlockedInference # reflow now Added: pypy/dist/pypy/annotation/listdef.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/annotation/listdef.py Fri Apr 15 19:32:11 2005 @@ -0,0 +1,61 @@ +from pypy.annotation.model import SomeObject, SomeImpossibleValue, unionof + + +class ListItem: + + def __init__(self, bookkeeper, s_value): + self.s_value = s_value + self.bookkeeper = bookkeeper + self.itemof = {} # set of all ListDefs using this ListItem + self.read_locations = {} + + def merge(self, other): + if self is other: + return + self.itemof.update(other.itemof) + self.read_locations.update(other.read_locations) + for listdef in self.itemof: + listdef.listitem = self # which should patch all refs to 'other' + self.generalize(other.s_value) + + def generalize(self, s_other_value): + s_new_value = unionof(self.s_value, s_other_value) + if s_new_value == self.s_value: + return + self.s_value = s_new_value + # reflow from all reading points + for position_key in self.read_locations: + self.bookkeeper.annotator.reflowfromposition(position_key) + + +class ListDef: + """A list definition remembers how general the items in that particular + list have to be. Every list creation makes a new ListDef, and the union + of two lists merges the ListItems that each ListDef stores.""" + + def __init__(self, bookkeeper, s_item=SomeImpossibleValue()): + self.listitem = ListItem(bookkeeper, s_item) + self.listitem.itemof[self] = True + self.bookkeeper = bookkeeper + + def read_item(self, position_key=None): + if position_key is None: + if self.bookkeeper is None: # for tests + from pypy.annotation.bookkeeper import getbookkeeper + position_key = getbookkeeper().position_key + else: + position_key = self.bookkeeper.position_key + self.listitem.read_locations[position_key] = True + return self.listitem.s_value + + def same_as(self, other): + return self.listitem is other.listitem + + def merge(self, other): + self.listitem.merge(other.listitem) + + def generalize(self, s_value): + self.listitem.generalize(s_value) + + +MOST_GENERAL_LISTDEF = ListDef(None, SomeObject()) Modified: pypy/dist/pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/dist/pypy/annotation/model.py Fri Apr 15 19:32:11 2005 @@ -131,9 +131,12 @@ class SomeList(SomeObject): "Stands for a homogenous list of any length." knowntype = list - def __init__(self, factories, s_item=SomeObject()): - self.factories = factories - self.s_item = s_item # general enough for any element + def __init__(self, listdef): + assert hasattr(listdef, 'listitem') # XXX remove me + self.listdef = listdef + def __eq__(self, other): + return (self.__class__ is other.__class__ and + self.listdef.same_as(other.listdef)) class SomeSlice(SomeObject): Modified: pypy/dist/pypy/annotation/test/test_model.py ============================================================================== --- pypy/dist/pypy/annotation/test/test_model.py (original) +++ pypy/dist/pypy/annotation/test/test_model.py Fri Apr 15 19:32:11 2005 @@ -1,15 +1,19 @@ import autopath from pypy.annotation.model import * +from pypy.annotation.listdef import ListDef +listdef1 = ListDef(None, SomeTuple([SomeInteger(nonneg=True), SomeString()])) +listdef2 = ListDef(None, SomeTuple([SomeInteger(nonneg=False), SomeString()])) + s1 = SomeObject() s2 = SomeInteger(nonneg=True) s3 = SomeInteger(nonneg=False) -s4 = SomeList({}, SomeTuple([SomeInteger(nonneg=True), SomeString()])) -s5 = SomeList({}, SomeTuple([SomeInteger(nonneg=False), SomeString()])) +s4 = SomeList(listdef1) +s5 = SomeList(listdef2) s6 = SomeImpossibleValue() -slist = [s1,s2,s3,s4,s5,s6] +slist = [s1,s2,s3,s4,s6] # not s5 -- unionof(s4,s5) modifies s4 and s5 class C(object): @@ -39,27 +43,25 @@ assert s1 == SomeObject() assert s2 == SomeInteger(nonneg=True) assert s3 == SomeInteger(nonneg=False) - assert s4 == SomeList({}, SomeTuple([SomeInteger(nonneg=True), SomeString()])) - assert s5 == SomeList({}, SomeTuple([SomeInteger(nonneg=False), SomeString()])) + assert s4 == SomeList(listdef1) + assert s5 == SomeList(listdef2) assert s6 == SomeImpossibleValue() def test_contains(): assert ([(s,t) for s in slist for t in slist if s.contains(t)] == - [(s1,s1), (s1,s2), (s1,s3), (s1,s4), (s1,s5), (s1,s6), - (s2,s2), (s2,s6), - (s3,s2), (s3,s3), (s3,s6), - (s4,s4), (s4,s6), - (s5,s4), (s5,s5), (s5,s6), - (s6,s6)]) + [(s1,s1), (s1,s2), (s1,s3), (s1,s4), (s1,s6), + (s2,s2), (s2,s6), + (s3,s2), (s3,s3), (s3,s6), + (s4,s4), (s4,s6), + (s6,s6)]) def test_union(): assert ([unionof(s,t) for s in slist for t in slist] == - [s1, s1, s1, s1, s1, s1, - s1, s2, s3, s1, s1, s2, - s1, s3, s3, s1, s1, s3, - s1, s1, s1, s4, s5, s4, - s1, s1, s1, s5, s5, s5, - s1, s2, s3, s4, s5, s6]) + [s1, s1, s1, s1, s1, + s1, s2, s3, s1, s2, + s1, s3, s3, s1, s3, + s1, s1, s1, s4, s4, + s1, s2, s3, s4, s6]) def test_commonbase_simple(): class A0: @@ -78,7 +80,16 @@ assert commonbase(A1,A0) is A0 assert commonbase(A1,A1) is A1 assert commonbase(A2,B2) is object - assert commonbase(A2,B3) is A0 + assert commonbase(A2,B3) is A0 + +def test_list_union(): + listdef1 = ListDef(None, SomeInteger(nonneg=True)) + listdef2 = ListDef(None, SomeInteger(nonneg=False)) + s1 = SomeList(listdef1) + s2 = SomeList(listdef2) + assert s1 != s2 + s3 = unionof(s1, s2) + assert s1 == s2 == s3 if __name__ == '__main__': for name, value in globals().items(): Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Fri Apr 15 19:32:11 2005 @@ -11,7 +11,7 @@ from pypy.annotation.model import SomeInstance, SomeBuiltin, SomeFloat from pypy.annotation.model import SomeIterator, SomePBC, new_or_old_class from pypy.annotation.model import unionof, set, setunion, missing_operation -from pypy.annotation.factory import BlockedInference, generalize, ListFactory +from pypy.annotation.factory import generalize from pypy.annotation.bookkeeper import getbookkeeper from pypy.annotation.classdef import isclassdef from pypy.annotation import builtin @@ -194,10 +194,10 @@ pair(lst, SomeInteger()).setitem(s_value) def method_pop(lst, s_index=None): - return lst.s_item + return lst.listdef.read_item() def iter(lst): - return SomeIterator(lst.s_item) + return SomeIterator(lst.listdef.read_item()) class __extend__(SomeDict): def iter(dct): @@ -210,19 +210,13 @@ generalize(dct1.factories, dct2.s_key, dct2.s_value) def method_keys(dct): - factory = getbookkeeper().getfactory(ListFactory) - factory.generalize(dct.s_key) - return factory.create() + return getbookkeeper().newlist(dct.s_key) def method_values(dct): - factory = getbookkeeper().getfactory(ListFactory) - factory.generalize(dct.s_value) - return factory.create() + return getbookkeeper().newlist(dct.s_value) def method_items(dct): - factory = getbookkeeper().getfactory(ListFactory) - factory.generalize(SomeTuple((dct.s_key, dct.s_value))) - return factory.create() + return getbookkeeper().newlist(SomeTuple((dct.s_key, dct.s_value))) class __extend__(SomeString): @@ -237,9 +231,7 @@ return SomeInteger(nonneg=True) def method_split(str, patt): # XXX - factory = getbookkeeper().getfactory(ListFactory) - factory.generalize(SomeString()) - return factory.create() + return getbookkeeper().newlist(SomeString()) class __extend__(SomeChar): Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Fri Apr 15 19:32:11 2005 @@ -4,7 +4,7 @@ from pypy.tool.ansi_print import ansi_print from pypy.annotation import model as annmodel from pypy.annotation.model import pair -from pypy.annotation.factory import ListFactory, DictFactory, BlockedInference +from pypy.annotation.factory import DictFactory from pypy.annotation.bookkeeper import Bookkeeper from pypy.objspace.flow.model import Variable, Constant, undefined_value from pypy.objspace.flow.model import SpaceOperation, FunctionGraph @@ -441,12 +441,12 @@ # boom for arg in argcells: if isinstance(arg, annmodel.SomeImpossibleValue): - raise BlockedInference(info=op) + raise BlockedInference(self, info=op) resultcell = consider_meth(*argcells) if resultcell is None: resultcell = annmodel.SomeImpossibleValue() # no return value elif resultcell == annmodel.SomeImpossibleValue(): - raise BlockedInference(info=op) # the operation cannot succeed + raise BlockedInference(self, info=op) # the operation cannot succeed assert isinstance(resultcell, annmodel.SomeObject) assert isinstance(op.result, Variable) self.setbinding(op.result, resultcell) # bind resultcell to op.result @@ -479,10 +479,7 @@ return annmodel.SomeTuple(items = args) def consider_op_newlist(self, *args): - factory = self.bookkeeper.getfactory(ListFactory) - for a in args: - factory.generalize(a) - return factory.create() + return self.bookkeeper.newlist(*args) def consider_op_newdict(self, *args): assert not args, "XXX only supports newdict([])" @@ -495,3 +492,29 @@ class CannotSimplify(Exception): pass + + +class BlockedInference(Exception): + """This exception signals the type inference engine that the situation + is currently blocked, and that it should try to progress elsewhere.""" + + def __init__(self, annotator, info=None): + self.annotator = annotator + try: + self.break_at = annotator.bookkeeper.position_key + except AttributeError: + self.break_at = None + self.info = info + + def __repr__(self): + if self.info: + info = "[%s]" % self.info + else: + info = "" + if not self.break_at: + break_at = "?" + else: + break_at = self.annotator.whereami(self.break_at) + return "" %(break_at, info) + + __str__ = __repr__ Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Fri Apr 15 19:32:11 2005 @@ -5,11 +5,20 @@ from pypy.translator.annrpython import RPythonAnnotator, annmodel from pypy.translator.translator import Translator +from pypy.annotation.listdef import ListDef from pypy.objspace.flow.model import * from pypy.tool.rarithmetic import r_uint from pypy.translator.test import snippet +def listitem(s_list): + assert isinstance(s_list, annmodel.SomeList) + return s_list.listdef.listitem.s_value + +def somelist(s_type=annmodel.SomeObject()): + return annmodel.SomeList(ListDef(None, s_type)) + + class TestAnnonateTestCase: objspacename = 'flow' @@ -119,8 +128,7 @@ a = RPythonAnnotator() end_cell = a.build_types(snippet.poor_man_rev_range, [int]) # result should be a list of integers - assert end_cell.knowntype == list - assert end_cell.s_item.knowntype == int + assert listitem(end_cell).knowntype == int def test_factorial(self): a = RPythonAnnotator() @@ -174,8 +182,7 @@ a = RPythonAnnotator() s = a.build_types(snippet.poor_man_range, [int]) # result should be a list of integers - assert s.knowntype == list - assert s.s_item.knowntype == int + assert listitem(s).knowntype == int def test_methodcall1(self): a = RPythonAnnotator() @@ -247,15 +254,13 @@ a = RPythonAnnotator() s = a.build_types(snippet.call_five, []) # returns should be a list of constants (= 5) - assert isinstance(s, annmodel.SomeList) - assert s.s_item == a.bookkeeper.immutablevalue(5) + assert listitem(s) == a.bookkeeper.immutablevalue(5) def test_call_five_six(self): a = RPythonAnnotator() s = a.build_types(snippet.call_five_six, []) # returns should be a list of positive integers - assert isinstance(s, annmodel.SomeList) - assert s.s_item == annmodel.SomeInteger(nonneg=True) + assert listitem(s) == annmodel.SomeInteger(nonneg=True) def test_constant_result(self): a = RPythonAnnotator() @@ -370,11 +375,11 @@ # the annotator (it doesn't check that they operate property, though) for example, methname, s_example in [ ('', 'join', annmodel.SomeString()), - ([], 'append', annmodel.SomeList({})), - ([], 'extend', annmodel.SomeList({})), - ([], 'reverse', annmodel.SomeList({})), - ([], 'insert', annmodel.SomeList({})), - ([], 'pop', annmodel.SomeList({})), + ([], 'append', somelist()), + ([], 'extend', somelist()), + ([], 'reverse', somelist()), + ([], 'insert', somelist()), + ([], 'pop', somelist()), ]: constmeth = getattr(example, methname) s_constmeth = iv(constmeth) @@ -411,13 +416,13 @@ def test_simple_zip(self): a = RPythonAnnotator() - x = annmodel.SomeList({}, annmodel.SomeInteger()) - y = annmodel.SomeList({}, annmodel.SomeString()) + x = somelist(annmodel.SomeInteger()) + y = somelist(annmodel.SomeString()) s = a.build_types(snippet.simple_zip, [x,y]) assert s.knowntype == list - assert s.s_item.knowntype == tuple - assert s.s_item.items[0].knowntype == int - assert s.s_item.items[1].knowntype == str + assert listitem(s).knowntype == tuple + assert listitem(s).items[0].knowntype == int + assert listitem(s).items[1].knowntype == str def test_dict_copy(self): a = RPythonAnnotator() @@ -443,33 +448,28 @@ def test_dict_keys(self): a = RPythonAnnotator() s = a.build_types(snippet.dict_keys, []) - assert isinstance(s, annmodel.SomeList) - assert isinstance(s.s_item, annmodel.SomeString) + assert isinstance(listitem(s), annmodel.SomeString) def test_dict_keys2(self): a = RPythonAnnotator() s = a.build_types(snippet.dict_keys2, []) - assert isinstance(s, annmodel.SomeList) - assert not isinstance(s.s_item, annmodel.SomeString) + assert not isinstance(listitem(s), annmodel.SomeString) def test_dict_values(self): a = RPythonAnnotator() s = a.build_types(snippet.dict_values, []) - assert isinstance(s, annmodel.SomeList) - assert isinstance(s.s_item, annmodel.SomeString) + assert isinstance(listitem(s), annmodel.SomeString) def test_dict_values2(self): a = RPythonAnnotator() s = a.build_types(snippet.dict_values2, []) - assert isinstance(s, annmodel.SomeList) - assert not isinstance(s.s_item, annmodel.SomeString) + assert not isinstance(listitem(s), annmodel.SomeString) def test_dict_items(self): a = RPythonAnnotator() s = a.build_types(snippet.dict_items, []) - assert isinstance(s, annmodel.SomeList) - assert isinstance(s.s_item, annmodel.SomeTuple) - s_key, s_value = s.s_item.items + assert isinstance(listitem(s), annmodel.SomeTuple) + s_key, s_value = listitem(s).items assert isinstance(s_key, annmodel.SomeString) assert isinstance(s_value, annmodel.SomeInteger) @@ -549,10 +549,10 @@ assert s.knowntype == snippet.B Even_def = a.getuserclasses()[snippet.Even] Odd_def = a.getuserclasses()[snippet.Odd] - assert Even_def.attrs['x'].s_value.s_item.knowntype == snippet.Odd - assert Even_def.attrs['y'].s_value.s_item.knowntype == snippet.Even - assert Odd_def.attrs['x'].s_value.s_item.knowntype == snippet.Even - assert Odd_def.attrs['y'].s_value.s_item.knowntype == snippet.Odd + assert listitem(Even_def.attrs['x'].s_value).knowntype == snippet.Odd + assert listitem(Even_def.attrs['y'].s_value).knowntype == snippet.Even + assert listitem(Odd_def.attrs['x'].s_value).knowntype == snippet.Even + assert listitem(Odd_def.attrs['y'].s_value).knowntype == snippet.Odd def test_flow_rev_numbers(self): a = RPythonAnnotator() @@ -702,8 +702,7 @@ return lst a = RPythonAnnotator() s = a.build_types(f, [int]) - assert isinstance(s, annmodel.SomeList) - assert s.s_item == s + assert listitem(s) == s def test_harmonic(self): a = RPythonAnnotator() @@ -761,8 +760,8 @@ a = RPythonAnnotator() s = a.build_types(g,[]) l1, l2 = s.items - assert l1.s_item.knowntype == int - assert l2.s_item.knowntype == str + assert listitem(l1).knowntype == int + assert listitem(l2).knowntype == str access_sets = a.getpbcaccesssets() @@ -825,8 +824,7 @@ return g(l) a = RPythonAnnotator() s = a.build_types(f, []) - assert s.knowntype == list - assert s.s_item.knowntype == T + assert listitem(s).knowntype == T def test_assert_type_is_list_doesnt_lose_info(self): class T(object): @@ -839,8 +837,7 @@ return g(l) a = RPythonAnnotator() s = a.build_types(f, []) - assert s.knowntype == list - assert s.s_item.knowntype == T + assert listitem(s).knowntype == T def test_int_str_mul(self): def f(x,a,b): From arigo at codespeak.net Fri Apr 15 19:54:30 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 15 Apr 2005 19:54:30 +0200 (CEST) Subject: [pypy-svn] r10704 - in pypy/dist/pypy: annotation translator translator/test Message-ID: <20050415175430.0655827B7A@code1.codespeak.net> Author: arigo Date: Fri Apr 15 19:54:29 2005 New Revision: 10704 Added: pypy/dist/pypy/annotation/dictdef.py (contents, props changed) Removed: pypy/dist/pypy/annotation/factory.py Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/bookkeeper.py pypy/dist/pypy/annotation/listdef.py pypy/dist/pypy/annotation/model.py pypy/dist/pypy/annotation/unaryop.py pypy/dist/pypy/translator/annrpython.py pypy/dist/pypy/translator/test/test_annrpython.py Log: DictDef, in the same style as ListDef. Now factory.py is gone. Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Fri Apr 15 19:54:29 2005 @@ -9,7 +9,6 @@ from pypy.annotation.model import SomeInstance, SomeBuiltin, SomeIterator from pypy.annotation.model import SomePBC, SomeSlice, SomeFloat from pypy.annotation.model import unionof, set, setunion, missing_operation -from pypy.annotation.factory import generalize from pypy.annotation.bookkeeper import getbookkeeper from pypy.annotation.classdef import isclassdef from pypy.objspace.flow.model import Constant @@ -260,18 +259,18 @@ class __extend__(pairtype(SomeDict, SomeDict)): def union((dic1, dic2)): - return SomeDict(setunion(dic1.factories, dic2.factories), - unionof(dic1.s_key, dic2.s_key), - unionof(dic1.s_value, dic2.s_value)) + dic1.dictdef.merge(dic2.dictdef) + return dic1 class __extend__(pairtype(SomeDict, SomeObject)): def getitem((dic1, obj2)): - return dic1.s_value + return dic1.dictdef.read_value() def setitem((dic1, obj2), s_value): - generalize(dic1.factories, obj2, s_value) + dic1.dictdef.generalize_key(obj2) + dic1.dictdef.generalize_value(s_value) class __extend__(pairtype(SomeSlice, SomeSlice)): Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Fri Apr 15 19:54:29 2005 @@ -8,6 +8,7 @@ from pypy.annotation.model import * from pypy.annotation.classdef import ClassDef from pypy.annotation.listdef import ListDef, MOST_GENERAL_LISTDEF +from pypy.annotation.dictdef import DictDef, MOST_GENERAL_DICTDEF from pypy.tool.tls import tlsobject from pypy.tool.hack import func_with_new_name from pypy.interpreter.pycode import CO_VARARGS @@ -43,7 +44,6 @@ def __init__(self, annotator): self.annotator = annotator - self.creationpoints = {} # map position-in-a-block to its Factory self.userclasses = {} # map classes to ClassDefs self.userclasseslist = []# userclasses.keys() in creation order self.cachespecializations = {} @@ -51,6 +51,7 @@ self.pbctypes = {} self.seen_mutable = {} self.listdefs = {} # map position_keys to ListDefs + self.dictdefs = {} # map position_keys to DictDefs # mapping position -> most general result, for call sites calling # argtypes specialized functions @@ -73,19 +74,6 @@ del TLS.bookkeeper del self.position_key - def getfactory(self, factorycls): - """Get the Factory associated with the current position, - or build it if it doesn't exist yet.""" - try: - factory = self.creationpoints[self.position_key] - except KeyError: - factory = factorycls() - factory.bookkeeper = self - factory.position_key = self.position_key - self.creationpoints[self.position_key] = factory - assert isinstance(factory, factorycls) - return factory - def getclassdef(self, cls): """Get the ClassDef associated with the given user cls.""" if cls is object: @@ -117,6 +105,23 @@ listdef.generalize(s_value) return SomeList(listdef) + def getdictdef(self): + """Get the DictDef associated with the current position.""" + try: + dictdef = self.dictdefs[self.position_key] + except KeyError: + dictdef = self.dictdefs[self.position_key] = DictDef(self) + return dictdef + + def newdict(self, *items_s): + """Make a SomeDict associated with the current position, general + enough to contain the given (s_key, s_value) as items.""" + dictdef = self.getdictdef() + for s_key, s_value in items_s: + dictdef.generalize_key(s_key) + dictdef.generalize_value(s_value) + return SomeDict(dictdef) + def immutablevalue(self, x): """The most precise SomeValue instance that contains the @@ -140,7 +145,8 @@ elif tp is dict: # exactly a dict keys_s = [self.immutablevalue(e) for e in x.keys()] values_s = [self.immutablevalue(e) for e in x.values()] - result = SomeDict({}, unionof(*keys_s), unionof(*values_s)) + result = SomeDict(DictDef(self, unionof(*keys_s), + unionof(*values_s))) elif ishashable(x) and x in BUILTIN_ANALYZERS: result = SomeBuiltin(BUILTIN_ANALYZERS[x]) elif callable(x) or isinstance(x, staticmethod): # XXX @@ -216,6 +222,8 @@ return SomeFloat() elif t is list: return SomeList(MOST_GENERAL_LISTDEF) + elif t is dict: + return SomeDict(MOST_GENERAL_DICTDEF) # can't do dict, tuple elif t.__module__ != '__builtin__': classdef = self.getclassdef(t) Added: pypy/dist/pypy/annotation/dictdef.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/annotation/dictdef.py Fri Apr 15 19:54:29 2005 @@ -0,0 +1,65 @@ +from pypy.annotation.model import SomeObject, SomeImpossibleValue, unionof +from pypy.annotation.listdef import ListItem + + +class DictKey(ListItem): + def patch(self): + for dictdef in self.itemof: + dictdef.dictkey = self + +class DictValue(ListItem): + def patch(self): + for dictdef in self.itemof: + dictdef.dictvalue = self + + +class DictDef: + """A dict definition remembers how general the keys and values in that + particular dict have to be. Every dict creation makes a new DictDef, + and the union of two dicts merges the DictKeys and DictValues that each + DictDef stores.""" + + def __init__(self, bookkeeper, s_key = SomeImpossibleValue(), + s_value = SomeImpossibleValue()): + self.dictkey = DictKey(bookkeeper, s_key) + self.dictkey.itemof[self] = True + self.dictvalue = DictValue(bookkeeper, s_value) + self.dictvalue.itemof[self] = True + self.bookkeeper = bookkeeper + + def read_key(self, position_key=None): + if position_key is None: + if self.bookkeeper is None: # for tests + from pypy.annotation.bookkeeper import getbookkeeper + position_key = getbookkeeper().position_key + else: + position_key = self.bookkeeper.position_key + self.dictkey.read_locations[position_key] = True + return self.dictkey.s_value + + def read_value(self, position_key=None): + if position_key is None: + if self.bookkeeper is None: # for tests + from pypy.annotation.bookkeeper import getbookkeeper + position_key = getbookkeeper().position_key + else: + position_key = self.bookkeeper.position_key + self.dictvalue.read_locations[position_key] = True + return self.dictvalue.s_value + + def same_as(self, other): + return (self.dictkey is other.dictkey and + self.dictvalue is other.dictvalue) + + def merge(self, other): + self.dictkey.merge(other.dictkey) + self.dictvalue.merge(other.dictvalue) + + def generalize_key(self, s_key): + self.dictkey.generalize(s_key) + + def generalize_value(self, s_value): + self.dictvalue.generalize(s_value) + + +MOST_GENERAL_DICTDEF = DictDef(None, SomeObject(), SomeObject()) Deleted: /pypy/dist/pypy/annotation/factory.py ============================================================================== --- /pypy/dist/pypy/annotation/factory.py Fri Apr 15 19:54:29 2005 +++ (empty file) @@ -1,64 +0,0 @@ -""" -Mutable Objects Factories. - -A factory is associated to an SpaceOperation in the source that creates a -built-in mutable object: currently 'newlist' and 'newdict'. -The factory remembers how general an object it has to create here. -""" - -from pypy.annotation.model import SomeList, SomeDict -from pypy.annotation.model import SomeImpossibleValue, unionof -from pypy.annotation.bookkeeper import getbookkeeper - - - - -##class ListFactory: -## s_item = SomeImpossibleValue() - -## def __repr__(self): -## return '%s(s_item=%r)' % (self.__class__.__name__, self.s_item) - -## def create(self): -## return SomeList(factories = {self: True}, s_item = self.s_item) - -## def generalize(self, s_new_item): -## if not self.s_item.contains(s_new_item): -## self.s_item = unionof(self.s_item, s_new_item) -## return True -## else: -## return False - - -class DictFactory: - s_key = SomeImpossibleValue() - s_value = SomeImpossibleValue() - - def __repr__(self): - return '%s(s_key=%r, s_value=%r)' % (self.__class__.__name__, - self.s_key, self.s_value) - - def create(self): - return SomeDict(factories = {self: True}, - s_key = self.s_key, - s_value = self.s_value) - - def generalize(self, s_new_key, s_new_value): - if (self.s_key.contains(s_new_key) and - self.s_value.contains(s_new_value)): - return False - self.s_key = unionof(self.s_key, s_new_key) - self.s_value = unionof(self.s_value, s_new_value) - return True - - -def generalize(factories, *args): - """Signals all the factories in the given set to generalize themselves. - The args must match the signature of the generalize() method of the - particular factories (which should all be of the same class). - """ - modified = [factory for factory in factories if factory.generalize(*args)] - if modified: - for factory in modified: - factory.bookkeeper.annotator.reflowfromposition(factory.position_key) - ##raise BlockedInference # reflow now Modified: pypy/dist/pypy/annotation/listdef.py ============================================================================== --- pypy/dist/pypy/annotation/listdef.py (original) +++ pypy/dist/pypy/annotation/listdef.py Fri Apr 15 19:54:29 2005 @@ -10,22 +10,23 @@ self.read_locations = {} def merge(self, other): - if self is other: - return - self.itemof.update(other.itemof) - self.read_locations.update(other.read_locations) + if self is not other: + self.itemof.update(other.itemof) + self.read_locations.update(other.read_locations) + self.patch() # which should patch all refs to 'other' + self.generalize(other.s_value) + + def patch(self): for listdef in self.itemof: - listdef.listitem = self # which should patch all refs to 'other' - self.generalize(other.s_value) + listdef.listitem = self def generalize(self, s_other_value): s_new_value = unionof(self.s_value, s_other_value) - if s_new_value == self.s_value: - return - self.s_value = s_new_value - # reflow from all reading points - for position_key in self.read_locations: - self.bookkeeper.annotator.reflowfromposition(position_key) + if s_new_value != self.s_value: + self.s_value = s_new_value + # reflow from all reading points + for position_key in self.read_locations: + self.bookkeeper.annotator.reflowfromposition(position_key) class ListDef: Modified: pypy/dist/pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/dist/pypy/annotation/model.py Fri Apr 15 19:54:29 2005 @@ -132,7 +132,6 @@ "Stands for a homogenous list of any length." knowntype = list def __init__(self, listdef): - assert hasattr(listdef, 'listitem') # XXX remove me self.listdef = listdef def __eq__(self, other): return (self.__class__ is other.__class__ and @@ -162,10 +161,11 @@ class SomeDict(SomeObject): "Stands for a dict." knowntype = dict - def __init__(self, factories, s_key, s_value): - self.factories = factories - self.s_key = s_key - self.s_value = s_value + def __init__(self, dictdef): + self.dictdef = dictdef + def __eq__(self, other): + return (self.__class__ is other.__class__ and + self.dictdef.same_as(other.dictdef)) class SomeIterator(SomeObject): Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Fri Apr 15 19:54:29 2005 @@ -11,7 +11,6 @@ from pypy.annotation.model import SomeInstance, SomeBuiltin, SomeFloat from pypy.annotation.model import SomeIterator, SomePBC, new_or_old_class from pypy.annotation.model import unionof, set, setunion, missing_operation -from pypy.annotation.factory import generalize from pypy.annotation.bookkeeper import getbookkeeper from pypy.annotation.classdef import isclassdef from pypy.annotation import builtin @@ -201,22 +200,24 @@ class __extend__(SomeDict): def iter(dct): - return SomeIterator(dct.s_key) + return SomeIterator(dct.dictdef.read_key()) def method_copy(dct): - return SomeDict(dct.factories, dct.s_key, dct.s_value) + return dct def method_update(dct1, dct2): - generalize(dct1.factories, dct2.s_key, dct2.s_value) + dct1.dictdef.generalize_key(dct2.dictdef.read_key()) + dct1.dictdef.generalize_value(dct2.dictdef.read_value()) def method_keys(dct): - return getbookkeeper().newlist(dct.s_key) + return getbookkeeper().newlist(dct.dictdef.read_key()) def method_values(dct): - return getbookkeeper().newlist(dct.s_value) + return getbookkeeper().newlist(dct.dictdef.read_value()) def method_items(dct): - return getbookkeeper().newlist(SomeTuple((dct.s_key, dct.s_value))) + return getbookkeeper().newlist(SomeTuple((dct.dictdef.read_key(), + dct.dictdef.read_value()))) class __extend__(SomeString): Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Fri Apr 15 19:54:29 2005 @@ -4,7 +4,6 @@ from pypy.tool.ansi_print import ansi_print from pypy.annotation import model as annmodel from pypy.annotation.model import pair -from pypy.annotation.factory import DictFactory from pypy.annotation.bookkeeper import Bookkeeper from pypy.objspace.flow.model import Variable, Constant, undefined_value from pypy.objspace.flow.model import SpaceOperation, FunctionGraph @@ -482,9 +481,11 @@ return self.bookkeeper.newlist(*args) def consider_op_newdict(self, *args): - assert not args, "XXX only supports newdict([])" - factory = self.bookkeeper.getfactory(DictFactory) - return factory.create() + assert len(args) % 2 == 0 + items_s = [] + for i in range(0, len(args), 2): + items_s.append((args[i], args[i+1])) + return self.bookkeeper.newdict(*items_s) def consider_op_newslice(self, start, stop, step): return annmodel.SomeSlice(start, stop, step) Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Fri Apr 15 19:54:29 2005 @@ -6,6 +6,7 @@ from pypy.translator.annrpython import RPythonAnnotator, annmodel from pypy.translator.translator import Translator from pypy.annotation.listdef import ListDef +from pypy.annotation.dictdef import DictDef from pypy.objspace.flow.model import * from pypy.tool.rarithmetic import r_uint @@ -18,6 +19,17 @@ def somelist(s_type=annmodel.SomeObject()): return annmodel.SomeList(ListDef(None, s_type)) +def dictkey(s_dict): + assert isinstance(s_dict, annmodel.SomeDict) + return s_dict.dictdef.dictkey.s_value + +def dictvalue(s_dict): + assert isinstance(s_dict, annmodel.SomeDict) + return s_dict.dictdef.dictvalue.s_value + +def somedict(s_key=annmodel.SomeObject(), s_value=annmodel.SomeObject()): + return annmodel.SomeDict(DictDef(None, s_key, s_value)) + class TestAnnonateTestCase: objspacename = 'flow' @@ -410,7 +422,7 @@ def test_simple_iter_dict(self): a = RPythonAnnotator() - t = annmodel.SomeDict({}, annmodel.SomeInteger(), annmodel.SomeInteger()) + t = somedict(annmodel.SomeInteger(), annmodel.SomeInteger()) s = a.build_types(snippet.simple_iter, [t]) assert isinstance(s, annmodel.SomeIterator) @@ -426,24 +438,21 @@ def test_dict_copy(self): a = RPythonAnnotator() - t = annmodel.SomeDict({}, annmodel.SomeInteger(), annmodel.SomeInteger()) + t = somedict(annmodel.SomeInteger(), annmodel.SomeInteger()) s = a.build_types(snippet.dict_copy, [t]) - assert isinstance(s, annmodel.SomeDict) - assert isinstance(s.s_key, annmodel.SomeInteger) - assert isinstance(s.s_value, annmodel.SomeInteger) + assert isinstance(dictkey(s), annmodel.SomeInteger) + assert isinstance(dictvalue(s), annmodel.SomeInteger) def test_dict_update(self): a = RPythonAnnotator() s = a.build_types(snippet.dict_update, [int]) - assert isinstance(s, annmodel.SomeDict) - assert isinstance(s.s_key, annmodel.SomeInteger) - assert isinstance(s.s_value, annmodel.SomeInteger) + assert isinstance(dictkey(s), annmodel.SomeInteger) + assert isinstance(dictvalue(s), annmodel.SomeInteger) a = RPythonAnnotator() s = a.build_types(snippet.dict_update, [str]) - assert isinstance(s, annmodel.SomeDict) - assert not isinstance(s.s_key, annmodel.SomeString) - assert not isinstance(s.s_value, annmodel.SomeString) + assert not isinstance(dictkey(s), annmodel.SomeString) + assert not isinstance(dictvalue(s), annmodel.SomeString) def test_dict_keys(self): a = RPythonAnnotator() From arigo at codespeak.net Fri Apr 15 20:26:00 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 15 Apr 2005 20:26:00 +0200 (CEST) Subject: [pypy-svn] r10707 - in pypy/dist/pypy: annotation annotation/test translator Message-ID: <20050415182600.5865D27B7A@code1.codespeak.net> Author: arigo Date: Fri Apr 15 20:26:00 2005 New Revision: 10707 Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/annotation/dictdef.py pypy/dist/pypy/annotation/listdef.py pypy/dist/pypy/annotation/test/test_model.py pypy/dist/pypy/translator/annrpython.py Log: Removed a hack about isinstance(_,list). This required a bit of clean-up to ensure that a call to contains(SomeList(MOST_GENERAL_LISTDEF), s_lst) doesn't actually generalize the items of s_lst to SomeObject(). It's still a bit fragile, because union() -- as used by contains() -- wasn't really meant to have side-effects in the first place. Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Fri Apr 15 20:26:00 2005 @@ -130,10 +130,8 @@ bk = getbookkeeper() if bk is not None: # for testing if hasattr(obj1,'is_type_of') and obj2.is_constant(): - if obj2.const != list: # in list case we are most likely bound to lose info - # we would also generate a factory-less list, not good either - r.knowntypedata = (obj1.is_type_of, bk.valueoftype(obj2.const)) - return r + r.knowntypedata = (obj1.is_type_of, bk.valueoftype(obj2.const)) + return r fn, block, i = bk.position_key annotator = bk.annotator op = block.operations[i] @@ -226,8 +224,7 @@ class __extend__(pairtype(SomeList, SomeList)): def union((lst1, lst2)): - lst1.listdef.merge(lst2.listdef) - return lst1 + return SomeList(lst1.listdef.union(lst2.listdef)) add = union @@ -259,8 +256,7 @@ class __extend__(pairtype(SomeDict, SomeDict)): def union((dic1, dic2)): - dic1.dictdef.merge(dic2.dictdef) - return dic1 + return SomeDict(dic1.dictdef.union(dic2.dictdef)) class __extend__(pairtype(SomeDict, SomeObject)): Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Fri Apr 15 20:26:00 2005 @@ -84,9 +84,7 @@ variables = [op.args[1]] for variable in variables: assert bk.annotator.binding(variable) == s_obj - if typ != list: # in the list case we are most likely bound to lose info, - # we would also generate a factory-less list, not good either - r.knowntypedata = (variables, bk.valueoftype(typ)) + r.knowntypedata = (variables, bk.valueoftype(typ)) return r def builtin_hasattr(s_obj, s_attr): Modified: pypy/dist/pypy/annotation/dictdef.py ============================================================================== --- pypy/dist/pypy/annotation/dictdef.py (original) +++ pypy/dist/pypy/annotation/dictdef.py Fri Apr 15 20:26:00 2005 @@ -51,9 +51,14 @@ return (self.dictkey is other.dictkey and self.dictvalue is other.dictvalue) - def merge(self, other): - self.dictkey.merge(other.dictkey) - self.dictvalue.merge(other.dictvalue) + def union(self, other): + if (self.same_as(MOST_GENERAL_DICTDEF) or + other.same_as(MOST_GENERAL_DICTDEF)): + return MOST_GENERAL_DICTDEF # without merging + else: + self.dictkey.merge(other.dictkey) + self.dictvalue.merge(other.dictvalue) + return self def generalize_key(self, s_key): self.dictkey.generalize(s_key) Modified: pypy/dist/pypy/annotation/listdef.py ============================================================================== --- pypy/dist/pypy/annotation/listdef.py (original) +++ pypy/dist/pypy/annotation/listdef.py Fri Apr 15 20:26:00 2005 @@ -52,8 +52,13 @@ def same_as(self, other): return self.listitem is other.listitem - def merge(self, other): - self.listitem.merge(other.listitem) + def union(self, other): + if (self.same_as(MOST_GENERAL_LISTDEF) or + other.same_as(MOST_GENERAL_LISTDEF)): + return MOST_GENERAL_LISTDEF # without merging + else: + self.listitem.merge(other.listitem) + return self def generalize(self, s_value): self.listitem.generalize(s_value) Modified: pypy/dist/pypy/annotation/test/test_model.py ============================================================================== --- pypy/dist/pypy/annotation/test/test_model.py (original) +++ pypy/dist/pypy/annotation/test/test_model.py Fri Apr 15 20:26:00 2005 @@ -1,7 +1,7 @@ import autopath from pypy.annotation.model import * -from pypy.annotation.listdef import ListDef +from pypy.annotation.listdef import ListDef, MOST_GENERAL_LISTDEF listdef1 = ListDef(None, SomeTuple([SomeInteger(nonneg=True), SomeString()])) @@ -91,6 +91,16 @@ s3 = unionof(s1, s2) assert s1 == s2 == s3 +def test_list_contains(): + listdef1 = ListDef(None, SomeInteger(nonneg=True)) + s1 = SomeList(listdef1) + s2 = SomeList(MOST_GENERAL_LISTDEF) + assert s1 != s2 + assert s2.contains(s1) + assert s1 != s2 + assert not s1.contains(s2) + assert s1 != s2 + if __name__ == '__main__': for name, value in globals().items(): if name.startswith('test_'): Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Fri Apr 15 20:26:00 2005 @@ -204,7 +204,7 @@ self.binding_caused_by[arg] = called_from - #___ interface for annotator.factory _______ + #___ interface for annotator.bookkeeper _______ def recursivecall(self, func, position_key, inputcells): override = self.overrides.get(func, None) From arigo at codespeak.net Fri Apr 15 20:28:49 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 15 Apr 2005 20:28:49 +0200 (CEST) Subject: [pypy-svn] r10708 - pypy/dist/pypy/translator/test Message-ID: <20050415182849.BFFEB27B7A@code1.codespeak.net> Author: arigo Date: Fri Apr 15 20:28:49 2005 New Revision: 10708 Modified: pypy/dist/pypy/translator/test/test_annrpython.py Log: Yay! Now circular (i.e. recursive) lists can be properly annotated. Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Fri Apr 15 20:28:49 2005 @@ -703,7 +703,7 @@ s = a.build_types(f, []) assert s.knowntype == C - def DONT_YET_test_circular_list_type(self): + def test_circular_list_type(self): def f(n): lst = [] for i in range(n): From pedronis at codespeak.net Fri Apr 15 20:47:38 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 20:47:38 +0200 (CEST) Subject: [pypy-svn] r10709 - in pypy/dist/pypy: objspace/std translator/test Message-ID: <20050415184738.0C01027B47@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 20:47:37 2005 New Revision: 10709 Modified: pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/translator/test/test_annrpython.py Log: guarantee that newfloat arg is float tests for list() annotation Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Fri Apr 15 20:47:37 2005 @@ -257,7 +257,7 @@ raise OperationError(space.w_ZeroDivisionError, space.wrap("long division")) z = x / y - return space.newfloat(z) + return space.newfloat(float(z)) def floordiv__Long_Long(space, w_long1, w_long2): #YYYYYY x = w_long1.longval() Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Fri Apr 15 20:47:37 2005 @@ -855,6 +855,26 @@ s = a.build_types(f, [str,int,int]) assert s.knowntype == str + def test_list_tuple(self): + def g0(x): + return list(x) + def g1(x): + return list(x) + def f(n): + l1 = g0(()) + l2 = g1((1,)) + if n: + t = (1,) + else: + t = (2,) + l3 = g1(t) + return l1, l2, l3 + a = RPythonAnnotator() + s = a.build_types(f, [bool]) + assert listitem(s.items[0]) == annmodel.SomeImpossibleValue() + assert listitem(s.items[1]).knowntype == int + assert listitem(s.items[2]).knowntype == int + def g(n): return [0,1,2,n] From pedronis at codespeak.net Fri Apr 15 21:27:48 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 15 Apr 2005 21:27:48 +0200 (CEST) Subject: [pypy-svn] r10711 - pypy/dist/pypy/objspace/std Message-ID: <20050415192748.6489D27B75@code1.codespeak.net> Author: pedronis Date: Fri Apr 15 21:27:48 2005 New Revision: 10711 Modified: pypy/dist/pypy/objspace/std/stringobject.py Log: reworked to depend less on string methods Modified: pypy/dist/pypy/objspace/std/stringobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/stringobject.py (original) +++ pypy/dist/pypy/objspace/std/stringobject.py Fri Apr 15 21:27:48 2005 @@ -147,6 +147,20 @@ return space.w_False return space.w_True +def _upper(ch): + if _islower(ch): + o = ord(ch) - 32 + return chr(o) + else: + return ch + +def _lower(ch): + if _isupper(ch): + o = ord(ch) + 32 + return chr(o) + else: + return ch + def str_isspace__String(space, w_self): return _is_generic(w_self, _isspace) @@ -171,9 +185,9 @@ for pos in range(0, len(input)): ch = input[pos] - if ch.isalpha(): - if (prev_letter.isalpha() and ch.isupper()) or \ - (not prev_letter.isalpha() and ch.islower()): + if _isalpha(ch): + if (_isalpha(prev_letter) and _isupper(ch)) or \ + (not _isalpha(prev_letter) and _islower(ch)): return space.w_False prev_letter = ch @@ -184,11 +198,7 @@ res = [' '] * len(self) for i in range(len(self)): ch = self[i] - if _islower(ch): - o = ord(ch) - 32 - res[i] = chr(o) - else: - res[i] = ch + res[i] = _upper(ch) return space.wrap("".join(res)) @@ -197,11 +207,7 @@ res = [' '] * len(self) for i in range(len(self)): ch = self[i] - if _isupper(ch): - o = ord(ch) + 32 - res[i] = chr(o) - else: - res[i] = ch + res[i] = _lower(ch) return space.wrap("".join(res)) @@ -250,10 +256,10 @@ for pos in range(0, len(input)): ch = input[pos] - if not prev_letter.isalpha(): - buffer[pos] = ch.upper() + if not _isalpha(prev_letter): + buffer[pos] = _upper(ch) else: - buffer[pos] = ch.lower() + buffer[pos] = _lower(ch) prev_letter = buffer[pos] @@ -267,7 +273,7 @@ pos = 0 for ch in value: - if ch.isspace(): + if _isspace(ch): if inword: inword = 0 else: @@ -566,11 +572,11 @@ if left: #print "while %d < %d and -%s- in -%s-:"%(lpos, rpos, u_self[lpos],w_chars) - while lpos < rpos and u_self[lpos].isspace(): + while lpos < rpos and _isspace(u_self[lpos]): lpos += 1 if right: - while rpos > lpos and u_self[rpos - 1].isspace(): + while rpos > lpos and _isspace(u_self[rpos - 1]): rpos -= 1 return space.wrap(u_self[lpos:rpos]) From arigo at codespeak.net Fri Apr 15 22:05:22 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 15 Apr 2005 22:05:22 +0200 (CEST) Subject: [pypy-svn] r10713 - pypy/dist/pypy/annotation Message-ID: <20050415200522.5C6E027B75@code1.codespeak.net> Author: arigo Date: Fri Apr 15 22:05:22 2005 New Revision: 10713 Modified: pypy/dist/pypy/annotation/dictdef.py pypy/dist/pypy/annotation/listdef.py Log: ListDef and DictDef need a __repr__ to show meaningful information in the Pygame viewer. Modified: pypy/dist/pypy/annotation/dictdef.py ============================================================================== --- pypy/dist/pypy/annotation/dictdef.py (original) +++ pypy/dist/pypy/annotation/dictdef.py Fri Apr 15 22:05:22 2005 @@ -66,5 +66,8 @@ def generalize_value(self, s_value): self.dictvalue.generalize(s_value) + def __repr__(self): + return '<%r: %r>' % (self.dictkey.s_value, self.dictvalue.s_value) + MOST_GENERAL_DICTDEF = DictDef(None, SomeObject(), SomeObject()) Modified: pypy/dist/pypy/annotation/listdef.py ============================================================================== --- pypy/dist/pypy/annotation/listdef.py (original) +++ pypy/dist/pypy/annotation/listdef.py Fri Apr 15 22:05:22 2005 @@ -63,5 +63,8 @@ def generalize(self, s_value): self.listitem.generalize(s_value) + def __repr__(self): + return '<%r>' % (self.listitem.s_value,) + MOST_GENERAL_LISTDEF = ListDef(None, SomeObject()) From hpk at codespeak.net Fri Apr 15 23:43:14 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 15 Apr 2005 23:43:14 +0200 (CEST) Subject: [pypy-svn] r10716 - pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test Message-ID: <20050415214314.4705927B7A@code1.codespeak.net> Author: hpk Date: Fri Apr 15 23:43:14 2005 New Revision: 10716 Modified: pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test/conftest.py Log: * there now is a full explicit list of all tests together with their test types and "enabled" information * collectonly mostly works for unittest-modules with a test_main() Modified: pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test/conftest.py (original) +++ pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test/conftest.py Fri Apr 15 23:43:14 2005 @@ -1,72 +1,26 @@ import py import sys -from pypy.interpreter.gateway import app2interp_temp +from pypy.interpreter.gateway import ApplevelClass from pypy.interpreter.error import OperationError from pypy.tool import pytestsupport -from pypy.conftest import gettestobjspace, options from pypy.interpreter.module import Module as PyPyModule from pypy.interpreter.main import run_string, run_file +# the following adds command line options as a side effect! +from pypy.conftest import gettestobjspace, option from test.regrtest import reportdiff -# -# PyPy's command line extra options (these are added -# to py.test's standard options) -# -#Option = py.test.Option -#options = ('pypy options', [ -# Option('-o', '--objspace', action="store", default=None, -# type="string", dest="objspacename", -# help="object space to run tests on."), -##]) - # # Interfacing/Integrating with py.test's collection process # -mydir = py.magic.autopath().dirpath() - -working_unittests = ( -'test_base64.py', -'test_binop.py', -'test_bisect.py', -'test_builtin.py', -'test_call.py', -'test_cmath.py', -'test_codeop.py', # Commented out due to strange iteraction with py.test -'test_commands.py', -'test_compare.py', -'test_compile.py', -'test_datetime.py', # it takes loong time -'test_dis.py', -'test_hash.py', -'test_heapq.py', -'test_hexoct.py', -'test_htmllib.py', -'test_htmlparser.py', -'test_isinstance.py', -'test_operator.py', -'test_parser.py', -'test_pprint.py', -'test_profilehooks.py', -'test_sgmllib.py', -'test_string.py', -'test_sys.py', -'test_textwrap.py', -'test_trace.py', -'test_urlparse.py', -) - -working_outputtests = ( - 'test_cgi.py', -) - -# sanity check for when the above lists become long -assert len(dict.fromkeys(working_unittests)) == len(working_unittests), ( - "duplicate entry in working_unittests") -assert len(dict.fromkeys(working_outputtests)) == len(working_outputtests), ( - "duplicate entry in working_outputtests") +# XXX no nice way to implement a --listpassing py.test option?! +#option = py.test.addoptions("compliance testing options", +# py.test.Option('-L', '--listpassing', action="store", default=None, +# type="string", dest="listpassing", +# help="display only the list of expected-to-pass tests.") +mydir = py.magic.autopath().dirpath() def make_module(space, dottedname, filepath): #print "making module", dottedname, "from", filepath @@ -81,87 +35,76 @@ space.setitem(w_modules, w_dottedname, w_mod) return w_mod -class Directory(py.test.collect.Directory): - def __iter__(self): - all_tests = [] - for test in self.fspath.listdir('test_*.py'): - if test.basename not in working_outputtests and \ - test.basename not in working_unittests: - continue - all_tests.append(test) - all_tests.sort() - for test in all_tests: - yield Module(test) +def callex(space, func, *args, **kwargs): + try: + return func(*args, **kwargs) + except OperationError, e: + if e.match(space, space.w_KeyboardInterrupt): + raise KeyboardInterrupt + raise + +class RegrDirectory(py.test.collect.Directory): + def run(self): + l = [] + for (name, (enabled, typ)) in testmap.items(): + if enabled: + l.append(name) + return l + + def join(self, name): + if name not in testmap: + raise NameError(name) + enabled, typ = testmap[name] + return typ(name, parent=self) + +Directory = RegrDirectory w_testlist = None +def hack_test_support(space): + global w_testlist + w_testlist = space.newlist([]) + space.appexec([w_testlist], """ + (testlist): + def hack_run_unittest(*classes): + testlist.extend(list(classes)) + from test import test_support # humpf + test_support.run_unittest = hack_run_unittest + """) + def getmyspace(): space = gettestobjspace('std') # we once and for all want to patch run_unittest # to get us the list of intended unittest-TestClasses # from each regression test - global w_testlist if w_testlist is None: - w_testlist = space.newlist([]) - space.appexec([w_testlist], """ - (testlist): - def hack_run_unittest(*classes): - testlist.extend(list(classes)) - from test import test_support # humpf - test_support.run_unittest = hack_run_unittest - """) + callex(space, hack_test_support, space) return space - -def app_list_testmethods(mod, testcaseclass, classlist): - """ return [(instance.setUp, instance.tearDown, - [instance.testmethod1, ...]), - ...] - """ - #print "entering list_testmethods" - if callable(getattr(mod, 'test_main', None)): - classlist[:] = [] - mod.test_main() - assert classlist, ("found %s.test_main() but it returned no " - "test classes" % mod.__name__) - else: - # we try to find out fitting tests ourselves - raise Exception, mod.__dict__.items() - for clsname, cls in mod.__dict__.items(): - if hasattr(cls, '__bases__') and \ - issubclass(cls, testcaseclass): - classlist.append(cls) - l = [] - for cls in classlist: + +app = ApplevelClass(''' + #NOT_RPYTHON + + def list_testmethods(cls): + """ return [(instance.setUp, instance.tearDown, + [instance.testmethod1, ...]), ...] + """ clsname = cls.__name__ instance = cls() #print "checking", instance methods = [] for methodname in dir(cls): - if methodname.startswith('test_'): + if methodname.startswith('test'): name = clsname + '.' + methodname methods.append((name, getattr(instance, methodname))) - l.append((instance.setUp, instance.tearDown, methods)) - return l -list_testmethods = app2interp_temp(app_list_testmethods) - -def Module(fspath): - output = fspath.dirpath('output', fspath.purebasename) - if output.check(file=1): - # ok this is an output test - return OutputTestItem(fspath, output) - content = fspath.read() - # XXX not exactly clean: - if content.find('unittest') != -1: - # we can try to run ... - return AppUnittestModule(fspath) - -class OutputTestItem(py.test.Item): - def __init__(self, fspath, output): - self.fspath = fspath - self.outputpath = output - self.extpy = py.path.extpy(fspath) + return instance.setUp, instance.tearDown, methods +''') + +list_testmethods = app.interphook('list_testmethods') +class OutputTestModule(py.test.Item): def run(self, driver): + outputpath = self.fspath.dirpath('output', self.fspath.purebasename) + assert outputpath.check(), "expected outputfile at %s" %(outputpath,) space = getmyspace() try: oldsysout = sys.stdout @@ -177,57 +120,93 @@ else: # we want to compare outputs result = capturesysout.getvalue() - expected = self.outputpath.read(mode='r') + expected = outputpath.read(mode='r') if result != expected: reportdiff(expected, result) assert 0, "expected and real output of running test differ" + +class UnknownTestModule(py.test.collect.Module): + def run(self): + py.test.skip("missing test type for: %s" %(self.fspath.basename)) -class AppUnittestModule(py.test.collect.Module): - def __init__(self, fspath): - super(AppUnittestModule, self).__init__(fspath) - +class UTModuleMainTest(py.test.collect.Module): def _prepare(self): if hasattr(self, 'space'): return self.space = space = getmyspace() - w_mod = make_module(space, 'unittest', mydir.join('pypy_unittest.py')) - self.w_TestCase = space.getattr(w_mod, space.wrap('TestCase')) - - def __iter__(self): + def f(): + w_mod = make_module(space, 'unittest', mydir.join('pypy_unittest.py')) + self.w_TestCase = space.getattr(w_mod, space.wrap('TestCase')) + self._testcases = self.get_testcases() + callex(space, f) + + def run(self): self._prepare() - try: - iterable = self._cache - except AttributeError: - iterable = self._cache = list(self._iterapplevel()) - for x in iterable: - yield x + return [x[0] for x in self._testcases] - def _iterapplevel(self): + def get_testcases(self): name = self.fspath.purebasename space = self.space w_mod = make_module(space, name, self.fspath) - w_tlist = list_testmethods(space, w_mod, self.w_TestCase, w_testlist) - tlist_w = space.unpackiterable(w_tlist) - for item_w in tlist_w: - w_setup, w_teardown, w_methods = space.unpacktuple(item_w) + + # hack out testcases + space.appexec([w_mod, w_testlist], """ + (mod, classlist): + classlist[:] = [] + mod.test_main() + """) + res = [] + #print w_testlist + for w_class in space.unpackiterable(w_testlist): + w_name = space.getattr(w_class, space.wrap('__name__')) + res.append((space.str_w(w_name), w_class )) + res.sort() + return res + + def join(self, name): + for x,w_cls in self._testcases: + if x == name: + return UTAppTestCase(name, parent=self, w_cls=w_cls) + + +class UTAppTestCase(py.test.collect.Class): + def __init__(self, name, parent, w_cls): + super(UTAppTestCase, self).__init__(name, parent) + self.w_cls = w_cls + + def _prepare(self): + if not hasattr(self, 'space'): + self.space = space = self.parent.space + w_item = list_testmethods(space, self.w_cls) + w_setup, w_teardown, w_methods = space.unpackiterable(w_item) methoditems_w = space.unpackiterable(w_methods) + self.methods_w = methods_w = [] for w_methoditem in methoditems_w: w_name, w_method = space.unpacktuple(w_methoditem) - yield AppTestCaseMethod(self.fspath, space, w_name, w_method, - w_setup, w_teardown) + name = space.str_w(w_name) + methods_w.append((name, w_method, w_setup, w_teardown)) + methods_w.sort() + + def run(self): + callex(self.parent.space, self._prepare,) + return [x[0] for x in self.methods_w] + + def join(self, name): + for x in self.methods_w: + if x[0] == name: + args = x[1:] + return AppTestCaseMethod(name, self, *args) class AppTestCaseMethod(py.test.Item): - def __init__(self, fspath, space, w_name, w_method, w_setup, w_teardown): - self.space = space - self.name = name = space.str_w(w_name) - self.modulepath = fspath - extpy = py.path.extpy(fspath, name) - super(AppTestCaseMethod, self).__init__(extpy) + def __init__(self, name, parent, w_method, w_setup, w_teardown): + super(AppTestCaseMethod, self).__init__(name, parent) + self.space = parent.space self.w_method = w_method self.w_setup = w_setup self.w_teardown = w_teardown def run(self, driver): + py.test.skip("not yet") space = self.space try: filename = str(self.modulepath) @@ -245,8 +224,273 @@ finally: self.space.call_function(self.w_teardown) except OperationError, e: - raise self.Failed( - excinfo=pytestsupport.AppExceptionInfo(self.space, e)) + ilevel_excinfo = py.code.ExceptionInfo() + excinfo=pytestsupport.AppExceptionInfo(self.space, e) + if excinfo.traceback: + raise self.Failed(excinfo=excinfo) + raise self.Failed(excinfo=ilevel_excinfo) def execute(self): self.space.call_function(self.w_method) + +testmap = { + 'test_urllibnet.py' : (False, UTModuleMainTest), + 'test_email_codecs.py' : (False, UnknownTestModule), + 'test_linuxaudiodev.py' : (False, OutputTestModule), + 'test_parser.py' : (True, UTModuleMainTest), + 'test_dummy_threading.py': (False, UTModuleMainTest), + 'test_xpickle.py' : (False, UTModuleMainTest), + 'test_random.py' : (False, UTModuleMainTest), + 'test_ucn.py' : (False, UTModuleMainTest), + 'test_cookie.py' : (False, OutputTestModule), + 'test_xreadline.py' : (False, OutputTestModule), + 'test_thread.py' : (False, OutputTestModule), + 'test_sys.py' : (True, UTModuleMainTest), + 'test_tokenize.py' : (False, OutputTestModule), + 'test_xmllib.py' : (False, UTModuleMainTest), + 'test___future__.py' : (False, UnknownTestModule), + 'test_tempfile.py' : (False, UTModuleMainTest), + 'test_bisect.py' : (True, UTModuleMainTest), + 'test_tarfile.py' : (False, UTModuleMainTest), + 'test_strftime.py' : (False, UnknownTestModule), + 'test_resource.py' : (False, OutputTestModule), + 'test_pickletools.py' : (False, UnknownTestModule), + 'test_inspect.py' : (False, UnknownTestModule), + 'test_gdbm.py' : (False, UnknownTestModule), + 'test_regex.py' : (False, OutputTestModule), + 'test_multifile.py' : (False, UTModuleMainTest), + 'test_dis.py' : (True, UTModuleMainTest), + 'test_pty.py' : (False, OutputTestModule), + 'test_strop.py' : (False, UTModuleMainTest), + 'test_future3.py' : (False, UTModuleMainTest), + 'test_glob.py' : (False, UTModuleMainTest), + 'test_binascii.py' : (False, UTModuleMainTest), + 'test_codecs.py' : (False, UTModuleMainTest), + 'test_socketserver.py' : (False, UTModuleMainTest), + 'test_zipimport.py' : (False, UTModuleMainTest), + 'test_pwd.py' : (False, UTModuleMainTest), + 'test_popen2.py' : (False, OutputTestModule), + 'test_future1.py' : (False, UnknownTestModule), + 'test_funcattrs.py' : (False, UnknownTestModule), + 'test_codeccallbacks.py' : (False, UTModuleMainTest), + 'test_whichdb.py' : (False, UTModuleMainTest), + 'test_grammar.py' : (False, OutputTestModule), + 'test_htmlparser.py' : (True, UTModuleMainTest), + 'test_getopt.py' : (False, UnknownTestModule), + 'test_dbm.py' : (False, UnknownTestModule), + 'test_global.py' : (False, OutputTestModule), + 'test_calendar.py' : (False, UTModuleMainTest), + 'test_sha.py' : (False, UTModuleMainTest), + 'test_curses.py' : (False, UnknownTestModule), + 'test_cmath.py' : (True, UnknownTestModule), + 'test_pkg.py' : (False, OutputTestModule), + 'test_binop.py' : (True, UTModuleMainTest), + 'test_optparse.py' : (False, UTModuleMainTest), + 'test_threading.py' : (False, UnknownTestModule), + 'test_unicodedata.py' : (False, UTModuleMainTest), + 'test_xmlrpc.py' : (False, UTModuleMainTest), + 'test_dummy_thread.py' : (False, UTModuleMainTest), + 'test_unicode.py' : (False, UTModuleMainTest), + 'test_class.py' : (False, OutputTestModule), + 'test_anydbm.py' : (False, UTModuleMainTest), + 'test_itertools.py' : (False, UTModuleMainTest), + 'test_stringprep.py' : (False, UnknownTestModule), + 'test_frozen.py' : (False, OutputTestModule), + 'test_httplib.py' : (False, OutputTestModule), + 'test_imageop.py' : (False, UnknownTestModule), + 'test_audioop.py' : (False, UnknownTestModule), + 'test_zlib.py' : (False, UTModuleMainTest), + 'test_ntpath.py' : (False, UnknownTestModule), + 'test_heapq.py' : (True, UTModuleMainTest), + 'test_posix.py' : (False, UTModuleMainTest), + 'test_mhlib.py' : (False, UTModuleMainTest), + 'test_operations.py' : (False, OutputTestModule), + 'test_profilehooks.py' : (True, UTModuleMainTest), + 'test_pkgimport.py' : (False, UTModuleMainTest), + 'test_complex.py' : (False, UTModuleMainTest), + 'test_builtin.py' : (True, UTModuleMainTest), + 'test_posixpath.py' : (False, UTModuleMainTest), + 'test_mimetypes.py' : (False, UTModuleMainTest), + 'test_sundry.py' : (False, UnknownTestModule), + 'test_cl.py' : (False, UnknownTestModule), + 'test_exceptions.py' : (False, OutputTestModule), + 'test_compare.py' : (True, OutputTestModule), + 'test_socket.py' : (False, UTModuleMainTest), + 'test_dircache.py' : (False, UTModuleMainTest), + 'test_pyclbr.py' : (False, UTModuleMainTest), + 'test_coercion.py' : (False, OutputTestModule), + 'test_trace.py' : (True, UTModuleMainTest), + 'test_logging.py' : (False, UTModuleMainTest), + 'test_extcall.py' : (False, OutputTestModule), + 'test_userlist.py' : (False, UTModuleMainTest), + 'test_longexp.py' : (False, OutputTestModule), + 'test_cgi.py' : (False, OutputTestModule), + 'test_wave.py' : (False, UnknownTestModule), + 'test_normalization.py' : (False, UTModuleMainTest), + 'test_mpz.py' : (False, UnknownTestModule), + 'test_dumbdbm.py' : (False, UTModuleMainTest), + 'test_gl.py' : (False, UnknownTestModule), + 'test_capi.py' : (False, UnknownTestModule), + 'test_strptime.py' : (False, UTModuleMainTest), + 'test_md5.py' : (False, OutputTestModule), + 'test_pow.py' : (False, UTModuleMainTest), + 'test_rgbimg.py' : (False, OutputTestModule), + 'test_dl.py' : (False, UnknownTestModule), + 'test_slice.py' : (False, UnknownTestModule), + 'test_pep247.py' : (False, UnknownTestModule), + 'test_scope.py' : (False, OutputTestModule), + 'test_fcntl.py' : (False, UnknownTestModule), + 'test_ioctl.py' : (False, UTModuleMainTest), + 'test_doctest.py' : (False, UnknownTestModule), + 'test_asynchat.py' : (False, OutputTestModule), + 'test_scriptpackages.py' : (False, UTModuleMainTest), + 'test_unary.py' : (False, UTModuleMainTest), + 'test_poll.py' : (False, OutputTestModule), + 'test_opcodes.py' : (False, OutputTestModule), + 'test_gzip.py' : (False, UnknownTestModule), + 'test_fileinput.py' : (False, UnknownTestModule), + 'test_macfs.py' : (False, UTModuleMainTest), + 'test_ossaudiodev.py' : (False, OutputTestModule), + 'test_array.py' : (False, UTModuleMainTest), + 'test_binhex.py' : (False, UTModuleMainTest), + 'test_bastion.py' : (False, UnknownTestModule), + 'test_descrtut.py' : (False, UTModuleMainTest), + 'test_bz2.py' : (False, UTModuleMainTest), + 'test_pep263.py' : (False, UnknownTestModule), + 'test_bsddb3.py' : (False, UTModuleMainTest), + 'test_MimeWriter.py' : (False, OutputTestModule), + 'test_urllib.py' : (False, UTModuleMainTest), + 'test_cpickle.py' : (False, UTModuleMainTest), + 'test_urlparse.py' : (True, UTModuleMainTest), + 'test_mmap.py' : (False, OutputTestModule), + 'test_symtable.py' : (False, UnknownTestModule), + 'test_traceback.py' : (False, UTModuleMainTest), + 'test_quopri.py' : (False, UTModuleMainTest), + 'test_contains.py' : (False, UnknownTestModule), + 'test_pickle.py' : (False, UTModuleMainTest), + 'test___all__.py' : (False, UTModuleMainTest), + 'test_re.py' : (False, UTModuleMainTest), + 'test_compile.py' : (True, UTModuleMainTest), + 'test_augassign.py' : (False, OutputTestModule), + 'test_largefile.py' : (False, UnknownTestModule), + 'test_mailbox.py' : (False, UTModuleMainTest), + 'test_unicode_file.py' : (False, OutputTestModule), + 'test_plistlib.py' : (False, UTModuleMainTest), + 'test_mimetools.py' : (False, UTModuleMainTest), + 'test_shelve.py' : (False, UTModuleMainTest), + 'test_rfc822.py' : (False, UTModuleMainTest), + 'test_pprint.py' : (True, UTModuleMainTest), + 'test_rotor.py' : (False, OutputTestModule), + 'test_getargs.py' : (False, UnknownTestModule), + 'test_mutants.py' : (False, UnknownTestModule), + 'test_doctest2.py' : (False, UTModuleMainTest), + 'test_softspace.py' : (False, UnknownTestModule), + 'test_copy_reg.py' : (False, UTModuleMainTest), + 'test_cd.py' : (False, UnknownTestModule), + 'test_struct.py' : (False, UnknownTestModule), + 'test_sort.py' : (False, UnknownTestModule), + 'test_imgfile.py' : (False, UnknownTestModule), + 'test_descr.py' : (False, UTModuleMainTest), + 'test_long_future.py' : (False, UnknownTestModule), + 'test_file.py' : (False, UnknownTestModule), + 'test_richcmp.py' : (False, UTModuleMainTest), + 'test_call.py' : (True, UTModuleMainTest), + 'test_nis.py' : (False, OutputTestModule), + 'test_timeout.py' : (False, UTModuleMainTest), + 'test_support.py' : (False, UnknownTestModule), + 'test_csv.py' : (False, UTModuleMainTest), + 'test_future2.py' : (False, UnknownTestModule), + 'test_aepack.py' : (False, UTModuleMainTest), + 'test_pyexpat.py' : (False, OutputTestModule), + 'test_import.py' : (False, UnknownTestModule), + 'test_openpty.py' : (False, OutputTestModule), + 'test_structseq.py' : (False, UnknownTestModule), + 'test_os.py' : (False, UTModuleMainTest), + 'test_repr.py' : (False, UTModuleMainTest), + 'test_generators.py' : (False, UTModuleMainTest), + 'test_future.py' : (False, OutputTestModule), + 'test_atexit.py' : (False, UnknownTestModule), + 'test_zipfile.py' : (False, UnknownTestModule), + 'test_urllib2.py' : (False, UnknownTestModule), + 'test_minidom.py' : (False, UnknownTestModule), + 'test_winreg.py' : (False, OutputTestModule), + 'test_iter.py' : (False, UTModuleMainTest), + 'test_fnmatch.py' : (False, UTModuleMainTest), + 'test_datetime.py' : (True, UTModuleMainTest), + 'test_string.py' : (True, UTModuleMainTest), + 'test_sets.py' : (False, UTModuleMainTest), + 'test_textwrap.py' : (True, UTModuleMainTest), + 'test_select.py' : (False, UnknownTestModule), + 'test_filecmp.py' : (False, UTModuleMainTest), + 'test_base64.py' : (True, UTModuleMainTest), + 'test_long.py' : (False, UnknownTestModule), + 'test_hexoct.py' : (True, UTModuleMainTest), + 'test_threaded_import.py': (False, UTModuleMainTest), + 'test_uu.py' : (False, UTModuleMainTest), + 'test_gc.py' : (False, UnknownTestModule), + 'test_StringIO.py' : (False, UTModuleMainTest), + 'test_module.py' : (False, UnknownTestModule), + 'test_profile.py' : (False, UTModuleMainTest), + 'test_winsound.py' : (False, UTModuleMainTest), + 'test_signal.py' : (False, OutputTestModule), + 'test_popen.py' : (False, OutputTestModule), + 'test_hotshot.py' : (False, UTModuleMainTest), + 'test_marshal.py' : (False, UnknownTestModule), + 'test_time.py' : (False, UTModuleMainTest), + 'test_sunaudiodev.py' : (False, UnknownTestModule), + 'test_operator.py' : (True, UTModuleMainTest), + 'test_univnewlines.py' : (False, UTModuleMainTest), + 'test_codeop.py' : (True, UTModuleMainTest), + 'test_sax.py' : (False, UnknownTestModule), + 'test_email.py' : (False, UTModuleMainTest), + 'test_timing.py' : (False, UnknownTestModule), + 'test_macpath.py' : (False, UTModuleMainTest), + 'test_hmac.py' : (False, UTModuleMainTest), + 'test_new.py' : (False, OutputTestModule), + 'test_imp.py' : (False, UTModuleMainTest), + 'test_gettext.py' : (False, UTModuleMainTest), + 'test_fork1.py' : (False, UnknownTestModule), + 'test_str.py' : (False, UTModuleMainTest), + 'test_netrc.py' : (False, UTModuleMainTest), + 'test_importhooks.py' : (False, UTModuleMainTest), + 'test_bufio.py' : (False, UnknownTestModule), + 'test_syntax.py' : (False, UTModuleMainTest), + 'test_grp.py' : (False, UTModuleMainTest), + 'test_imaplib.py' : (False, UnknownTestModule), + 'test_charmapcodec.py' : (False, UTModuleMainTest), + 'test_userdict.py' : (False, UTModuleMainTest), + 'test_robotparser.py' : (False, UTModuleMainTest), + 'test_commands.py' : (True, UTModuleMainTest), + 'test_eof.py' : (False, UTModuleMainTest), + 'test_weakref.py' : (False, UTModuleMainTest), + 'test_fpformat.py' : (False, UTModuleMainTest), + 'test_locale.py' : (False, UnknownTestModule), + 'test_htmllib.py' : (True, UTModuleMainTest), + 'test_types.py' : (False, OutputTestModule), + 'test_bsddb185.py' : (False, UTModuleMainTest), + 'test_math.py' : (False, OutputTestModule), + 'test_hash.py' : (True, UTModuleMainTest), + 'test_al.py' : (False, UnknownTestModule), + 'test_errno.py' : (False, UnknownTestModule), + 'test_queue.py' : (False, UnknownTestModule), + 'test_shutil.py' : (False, UTModuleMainTest), + 'test_bsddb.py' : (False, UTModuleMainTest), + 'test_sgmllib.py' : (True, UTModuleMainTest), + 'test_pep277.py' : (False, UTModuleMainTest), + 'test_macostools.py' : (False, UTModuleMainTest), + 'test_warnings.py' : (False, UTModuleMainTest), + 'test_copy.py' : (False, UTModuleMainTest), + 'test_getargs2.py' : (False, UTModuleMainTest), + 'test_bool.py' : (False, UTModuleMainTest), + 'test_unpack.py' : (False, UnknownTestModule), + 'test_enumerate.py' : (False, UTModuleMainTest), + 'test_socket_ssl.py' : (False, UTModuleMainTest), + 'test_userstring.py' : (False, UTModuleMainTest), + 'test_threadedtempfile.py': (False, UTModuleMainTest), + 'test_shlex.py' : (False, UTModuleMainTest), + 'test_crypt.py' : (False, UnknownTestModule), + 'test_format.py' : (False, UnknownTestModule), + 'test_isinstance.py' : (True, UTModuleMainTest), + 'test_cfgparser.py' : (False, UTModuleMainTest), + 'test_difflib.py' : (False, UnknownTestModule), +} From pedronis at codespeak.net Sat Apr 16 00:35:35 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 16 Apr 2005 00:35:35 +0200 (CEST) Subject: [pypy-svn] r10718 - pypy/dist/pypy/objspace/std Message-ID: <20050415223535.6E59927B7A@code1.codespeak.net> Author: pedronis Date: Sat Apr 16 00:35:35 2005 New Revision: 10718 Modified: pypy/dist/pypy/objspace/std/intobject.py Log: don't mix None and int Modified: pypy/dist/pypy/objspace/std/intobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/intobject.py (original) +++ pypy/dist/pypy/objspace/std/intobject.py Sat Apr 16 00:35:35 2005 @@ -228,9 +228,9 @@ truediv__Int_Int = _truediv # helper for pow() -def _impl_int_int_pow(space, iv, iw, iz=None): +def _impl_int_int_pow(space, iv, iw, iz=0): if iw < 0: - if iz is not None: + if iz != 0: raise OperationError(space.w_TypeError, space.wrap("pow() 2nd argument " "cannot be negative when 3rd argument specified")) @@ -240,10 +240,6 @@ ## bounce it, since it always returns float raise FailedToImplement(space.w_ValueError, space.wrap("integer exponentiation")) - if iz is not None: - if iz == 0: - raise OperationError(space.w_ValueError, - space.wrap("pow() 3rd argument cannot be 0")) temp = iv ix = 1 try: @@ -278,6 +274,9 @@ x = w_int1.intval y = w_int2.intval z = w_int3.intval + if z == 0: + raise OperationError(space.w_ValueError, + space.wrap("pow() 3rd argument cannot be 0")) return _impl_int_int_pow(space, x, y, z) def pow__Int_Int_None(space, w_int1, w_int2, w_int3): From pedronis at codespeak.net Sat Apr 16 00:51:09 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 16 Apr 2005 00:51:09 +0200 (CEST) Subject: [pypy-svn] r10719 - pypy/dist/pypy/annotation Message-ID: <20050415225109.F087727B72@code1.codespeak.net> Author: pedronis Date: Sat Apr 16 00:51:09 2005 New Revision: 10719 Modified: pypy/dist/pypy/annotation/unaryop.py Log: annotation for id (int for now) Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Sat Apr 16 00:51:09 2005 @@ -23,7 +23,7 @@ 'simple_call', 'call_args', 'str', 'repr', 'iter', 'next', 'invert', 'type', 'issubtype', 'pos', 'neg', 'nonzero', 'abs', 'hex', 'oct', - 'ord', 'int', 'float', 'long']) + 'ord', 'int', 'float', 'long', 'id']) for opname in UNARY_OPERATIONS: missing_operation(SomeObject, opname) @@ -82,6 +82,9 @@ repr = hex = oct = str + def id(obj): # xxx + return SomeInteger() + def int(obj): return SomeInteger() From cfbolz at codespeak.net Sat Apr 16 02:17:09 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sat, 16 Apr 2005 02:17:09 +0200 (CEST) Subject: [pypy-svn] r10720 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050416001709.079D727B75@code1.codespeak.net> Author: cfbolz Date: Sat Apr 16 02:17:08 2005 New Revision: 10720 Removed: pypy/dist/pypy/translator/llvm/string.ll Modified: pypy/dist/pypy/translator/llvm/class.ll pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/genllvm.py pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: Added support for functions with default args. Various fixes and some tests. Removed unused string.ll file. Modified: pypy/dist/pypy/translator/llvm/class.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/class.ll (original) +++ pypy/dist/pypy/translator/llvm/class.ll Sat Apr 16 02:17:08 2005 @@ -64,11 +64,3 @@ %r = cast sbyte %c to int ret int %r } - -;XXXX -internal int %std.ord(%std.list.sbyte* %c) { - %c = call sbyte %std.getitem(%std.list.sbyte* %c, int 0) - %r = cast sbyte %c to int - ret int %r -} - Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Sat Apr 16 02:17:08 2005 @@ -152,12 +152,14 @@ if init is not None: l_init = self.gen.get_repr(init) l_func.dependencies.add(l_init) - l_args = [self.gen.get_repr(arg) for arg in args[1:]] - self.dependencies.update(l_args) - # XXX + l_tmp = self.gen.get_local_tmp(PointerTypeRepr("sbyte", self.gen), + l_func) + self.dependencies.add(l_tmp) + #XXX VirtualMethodRepr should recognize __init__ methods if isinstance(l_init, VirtualMethodRepr): l_init = l_init.l_funcs[l_init.l_classes.index(self)] - lblock.call_void(l_init, [l_target] + l_args) + l_init.op_simple_call(l_tmp, [l_init, l_target] + args[1:], + lblock, l_func) def t_op_getattr(self, l_target, args, lblock, l_func): if debug: Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Sat Apr 16 02:17:08 2005 @@ -115,6 +115,7 @@ self.dependencies.update(self.l_args) self.retvalue = self.gen.get_repr(self.graph.returnblock.inputargs[0]) self.dependencies.add(self.retvalue) + self.l_default_args = None self.build_bbs() def get_returntype(): @@ -163,6 +164,15 @@ def op_simple_call(self, l_target, args, lblock, l_func): l_args = [self.gen.get_repr(arg) for arg in args] + if len(l_args) - 1 < len(self.l_args): + assert self.func.func_defaults is not None + if self.l_default_args is None: + self.l_default_args = [self.gen.get_repr(Constant(de)) + for de in self.func.func_defaults] + self.dependencies.update(self.l_default_args) + offset = len(self.l_args) - len(self.l_default_args) + for i in range(len(l_args) - 1, len(self.l_args)): + l_args.append(self.l_default_args[i - offset]) for i, (l_a1, l_a2) in enumerate(zip(l_args[1:], self.l_args)): if l_a1.llvmtype() != l_a2.llvmtype(): l_tmp = self.gen.get_local_tmp(l_a2.type, l_func) Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Sat Apr 16 02:17:08 2005 @@ -30,10 +30,18 @@ return gen.compile(optimize) def get_key(obj): + #XXX Get rid of this: + #LLVMGenerator should only cache gen_repr requestes, + #the Repr classes should be responsible for deciding which queries + #should result in the same representation if isinstance(obj, Constant): #To avoid getting "bool true" as representation for int 1 if obj.value is True or obj.value is False: return obj + try: + hash(obj.value) + except TypeError: + return id(obj.value) return obj.value if isinstance(obj, annmodel.SomeInstance): return obj.classdef.cls @@ -176,9 +184,3 @@ yield l_dep1 yield l_repr - -## from pypy.translator.test.rpystone import * -## t = Translator(Proc0) -## a = t.annotate([int]) -## t.view() -## f = llvmcompile(t) Modified: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/seqrepr.py (original) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Sat Apr 16 02:17:08 2005 @@ -15,6 +15,8 @@ class ListRepr(LLVMRepr): def get(obj, gen): + if isinstance(obj, Constant): + obj = obj.value if obj.__class__ == list: return ListRepr(obj, gen) return None @@ -61,7 +63,15 @@ lblock.getelementptr(l_from, l_tmp, [0, 0]) lblock.getelementptr(l_to, self, [0, 1]) lblock.store(l_from, l_to) - + + def __getattr__(self, name): + if name.startswith("op_"): + return getattr(self.type, "t_" + name, None) + else: + raise AttributeError, ("ListRepr instance has no attribute %s" + % repr(name)) + + class ListTypeRepr(TypeRepr): l_listtypes = {} Deleted: /pypy/dist/pypy/translator/llvm/string.ll ============================================================================== --- /pypy/dist/pypy/translator/llvm/string.ll Sat Apr 16 02:17:08 2005 +++ (empty file) @@ -1,49 +0,0 @@ -internal uint %std.len(%std.string* %a) { - %p = getelementptr %std.string* %a, int 0, uint 0 - %length1 = load uint* %p - ret uint %length1 -} - -internal %std.string* %std.make(uint %len, sbyte* %s) { - %ret = malloc %std.string, uint 1 - %lenp = getelementptr %std.string* %ret, int 0, uint 0 - %lsp = getelementptr %std.string* %ret, int 0, uint 1 - store uint %len, uint* %lenp - store sbyte* %s, sbyte** %lsp - ret %std.string* %ret -} - - -internal %std.string* %std.add(%std.string* %a, %std.string* %b) { - %lena = call uint %std.len(%std.string* %a) - %lenb = call uint %std.len(%std.string* %b) - %totlen = add uint %lena, %lenb - %nmem1 = malloc sbyte, uint %totlen - %oldsp1 = getelementptr %std.string* %a, int 0, uint 1 - %oldsp2 = getelementptr %std.string* %b, int 0, uint 1 - %olds1 = load sbyte** %oldsp1 - %olds2 = load sbyte** %oldsp2 - %nposp = getelementptr sbyte* %nmem1, uint %lena - call void %llvm.memcpy(sbyte* %nmem1, sbyte* %olds1, uint %lena, uint 0) - call void %llvm.memcpy(sbyte* %nposp, sbyte* %olds2, uint %lenb, uint 0) - %ret = call %std.string* %std.make(uint %totlen, sbyte* %nmem1) - ret %std.string* %ret -} - - -internal sbyte %std.getitem(%std.string* %s, int %p) { - %sp1 = getelementptr %std.string* %s, int 0, uint 1 - %s1 = load sbyte** %sp1 - %len = call uint %std.len(%std.string* %s) - %ilen = cast uint %len to int - %negpos = add int %ilen, %p - %is_negative = setlt int %p, 0 - %usedpos = select bool %is_negative, int %negpos, int %p - %negusedpos = setlt int %usedpos, 0 - %posbig = setgt int %usedpos, %ilen - %wrongindex = or bool %negusedpos, %posbig - %charp = getelementptr sbyte* %s1, int %usedpos - %value = load sbyte* %charp - %ret = select bool %wrongindex, sbyte 33, sbyte %value - ret sbyte %value -} Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Sat Apr 16 02:17:08 2005 @@ -42,6 +42,23 @@ return calling1(m - 1) return m +def default_arguments(i1, i2=2, s1="asdf"): + return i1 + i2 + len(s1) + +def call_default_arguments(i, j): + if j == 0: + return default_arguments(i) + elif j == 1: + return default_arguments(i, 42) + return default_arguments(i, j, "qwertyuiop") + +def list_default_argument(i1, l1=[0]): + l1.append(i1) + return len(l1) + l1[-2] + +def call_list_default_argument(i1): + return list_default_argument(i1) + #float snippets def float_f1(x): @@ -126,6 +143,13 @@ a = [0, 1, 2, 3] return a.pop() + len(a) + a[i] +glob_array = [[i] * 5 for i in range(5)] + +def access_global_array(x, y, z): + result = glob_array[x][y] + glob_array[x][y] = z + return result + #class snippets @@ -266,6 +290,17 @@ a = CLB() return a.a +class CLC(object): + def __init__(self, a): + self.a = a + +def attribute_instance(x): + if x: + a = CLC(CLA()) + else: + a = CLC(CLB()) + return a.a.a + #string snippets def string_f1(i): Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Sat Apr 16 02:17:08 2005 @@ -117,6 +117,16 @@ f = compile_function(llvmsnippet.calling1, [int]) assert f(10) == 1 + def test_call_default_arguments(self): + f = compile_function(llvmsnippet.call_default_arguments, [int, int]) + for i in range(3): + assert f(i + 3, i) == llvmsnippet.call_default_arguments(i + 3, i) + + def test_call_list_default_argument(self): + f = compile_function(llvmsnippet.call_list_default_argument, [int]) + for i in range(20): + assert f(i) == llvmsnippet.call_list_default_argument(i) + class TestFloat(object): def setup_method(self, method): if not llvm_found: @@ -190,12 +200,22 @@ for i in range(10): assert f(i) == i - def test_array_pop(i): + def test_array_pop(self): f = compile_function(llvmsnippet.array_pop, [int]) assert f(0) == 5 assert f(1) == 6 assert f(2) == 7 + def test_access_global_array(self): + f = compile_function(llvmsnippet.access_global_array, [int, int, int]) + for i in range(5): + for j in range(5): + assert f(i, j, i + j) == i + for i in range(5): + for j in range(5): + assert f(i, j, 0) == i + j + + class TestClass(object): def setup_method(self, method): if not llvm_found: @@ -239,6 +259,11 @@ assert f(True) == 1 assert f(False) == 2 + def test_attribute_instance(self): + f = compile_function(llvmsnippet.attribute_instance, [bool]) + assert f(True) == 1 + assert f(False) == 2 + def test_global_instance(self): f = compile_function(llvmsnippet.global_instance, [int]) assert f(-1) == 41 @@ -378,6 +403,11 @@ set_attr = compile_function(test.set_attr, []) assert set_attr() == 2 + def test_try_raise_choose(self): + try_raise_choose = compile_function(test.try_raise_choose, [int]) + for i in [-1, 0, 1, 2]: + assert try_raise_choose(i) == i + def test_merge_setattr(self): merge_setattr = compile_function(test.merge_setattr, [bool]) assert merge_setattr(1) == 1 From hpk at codespeak.net Sat Apr 16 13:25:49 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 16 Apr 2005 13:25:49 +0200 (CEST) Subject: [pypy-svn] r10726 - py/branch/py-collect/code py/branch/py-collect/code/testing pypy/branch/pycollect-dist-pypy/pypy/tool pypy/branch/pycollect-dist-pypy/pypy/tool/test Message-ID: <20050416112549.D3B8827B66@code1.codespeak.net> Author: hpk Date: Sat Apr 16 13:25:49 2005 New Revision: 10726 Modified: py/branch/py-collect/code/excinfo.py py/branch/py-collect/code/testing/test_excinfo.py pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py pypy/branch/pycollect-dist-pypy/pypy/tool/test/test_pytestsupport.py Log: add some introspection methods to both py and pypy's ExceptionInfo objects. Modified: py/branch/py-collect/code/excinfo.py ============================================================================== --- py/branch/py-collect/code/excinfo.py (original) +++ py/branch/py-collect/code/excinfo.py Sat Apr 16 13:25:49 2005 @@ -32,6 +32,9 @@ text = text[:-1] return text + def errisinstance(self, exc): + return isinstance(self.value, exc) + def __str__(self): return self.exception_text Modified: py/branch/py-collect/code/testing/test_excinfo.py ============================================================================== --- py/branch/py-collect/code/testing/test_excinfo.py (original) +++ py/branch/py-collect/code/testing/test_excinfo.py Sat Apr 16 13:25:49 2005 @@ -112,3 +112,6 @@ excinfo = py.test.raises(ValueError, h) assert excinfo.exception_text.startswith('ValueError') +def test_excinfo_errisinstance(): + excinfo = py.test.raises(ValueError, h) + assert excinfo.errisinstance(ValueError) Modified: pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/tool/pytestsupport.py Sat Apr 16 13:25:49 2005 @@ -44,6 +44,21 @@ self.operr = operr self.traceback = AppTraceback(self.operr.application_traceback) + def exconly(self): + return '(application-level) ' + self.operr.errorstr(self.space) + + def errisinstance(self, exc): + clsname = exc.__name__ + try: + w_exc = getattr(self.space, 'w_' + clsname) + except KeyboardInterrupt: + raise + except: + pass + else: + return self.operr.match(self.space, w_exc) + return False + def __str__(self): return '(application-level) ' + self.operr.errorstr(self.space) Modified: pypy/branch/pycollect-dist-pypy/pypy/tool/test/test_pytestsupport.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/pypy/tool/test/test_pytestsupport.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/tool/test/test_pytestsupport.py Sat Apr 16 13:25:49 2005 @@ -5,7 +5,7 @@ from pypy.interpreter.argument import Arguments from pypy.interpreter.pycode import PyCode from pypy.interpreter.pyframe import PyFrame -from pypy.tool.pytestsupport import AppFrame, build_pytest_assertion +from pypy.tool.pytestsupport import AppFrame, build_pytest_assertion, AppExceptionInfo def somefunc(x): @@ -53,4 +53,18 @@ assert e.msg == "Failed" +def test_appexecinfo(space): + try: + space.appexec([], "(): raise ValueError") + except OperationError, e: + appex = AppExceptionInfo(space, e) + else: + py.test.fail("did not raise!") + assert appex.exconly().find('ValueError') != -1 + assert appex.errisinstance(ValueError) + assert not appex.errisinstance(RuntimeError) + class A: + pass + assert not appex.errisinstance(A) + From hpk at codespeak.net Sat Apr 16 15:17:39 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 16 Apr 2005 15:17:39 +0200 (CEST) Subject: [pypy-svn] r10730 - pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test Message-ID: <20050416131739.7950A27B5E@code1.codespeak.net> Author: hpk Date: Sat Apr 16 15:17:39 2005 New Revision: 10730 Modified: pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test/conftest.py Log: - OutputTestModules now return OutputTestItems - try to preserve KeyboardInterrupts Modified: pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test/conftest.py (original) +++ pypy/branch/pycollect-dist-pypy/lib-python-2.3.4/test/conftest.py Sat Apr 16 15:17:39 2005 @@ -101,10 +101,32 @@ list_testmethods = app.interphook('list_testmethods') -class OutputTestModule(py.test.Item): - def run(self, driver): - outputpath = self.fspath.dirpath('output', self.fspath.purebasename) - assert outputpath.check(), "expected outputfile at %s" %(outputpath,) +class OpErrorModule(py.test.collect.Module): + # wraps some methods around a py.test Module in order + # to get clean KeyboardInterrupt behaviour (pypy often + # throws wrapped ones) + def tryiter(self, stopitems=()): + try: + for x in super(OpErrorModule, self).tryiter(stopitems): + yield x + except OperationError, e: + space = getattr(self, 'space', None) + if space and e.match(space, space.w_KeyboardInterrupt): + raise Keyboardinterrupt + raise + +class OutputTestModule(OpErrorModule): + def run(self): + return [self.fspath.purebasename] + def join(self, name): + if name == self.fspath.purebasename: + return OutputTestItem(name, parent=self) + +class OutputTestItem(py.test.Item): + def run(self): + outputpath = self.fspath.dirpath('output', self.name) + if not outputpath.check(): + py.test.fail("expected outputfile at %s" %(outputpath,)) space = getmyspace() try: oldsysout = sys.stdout @@ -123,13 +145,14 @@ expected = outputpath.read(mode='r') if result != expected: reportdiff(expected, result) - assert 0, "expected and real output of running test differ" + py.test.fail("output check failed: %s" % (self.fspath.basename,)) + class UnknownTestModule(py.test.collect.Module): def run(self): py.test.skip("missing test type for: %s" %(self.fspath.basename)) -class UTModuleMainTest(py.test.collect.Module): +class UTModuleMainTest(OpErrorModule): def _prepare(self): if hasattr(self, 'space'): return @@ -205,11 +228,10 @@ self.w_setup = w_setup self.w_teardown = w_teardown - def run(self, driver): - py.test.skip("not yet") + def run(self): space = self.space try: - filename = str(self.modulepath) + filename = str(self.fspath) w_argv = space.sys.get('argv') space.setitem(w_argv, space.newslice(None, None, None), space.newlist([space.wrap(filename)])) @@ -234,263 +256,263 @@ self.space.call_function(self.w_method) testmap = { - 'test_urllibnet.py' : (False, UTModuleMainTest), - 'test_email_codecs.py' : (False, UnknownTestModule), - 'test_linuxaudiodev.py' : (False, OutputTestModule), - 'test_parser.py' : (True, UTModuleMainTest), - 'test_dummy_threading.py': (False, UTModuleMainTest), - 'test_xpickle.py' : (False, UTModuleMainTest), - 'test_random.py' : (False, UTModuleMainTest), - 'test_ucn.py' : (False, UTModuleMainTest), - 'test_cookie.py' : (False, OutputTestModule), - 'test_xreadline.py' : (False, OutputTestModule), - 'test_thread.py' : (False, OutputTestModule), - 'test_sys.py' : (True, UTModuleMainTest), - 'test_tokenize.py' : (False, OutputTestModule), - 'test_xmllib.py' : (False, UTModuleMainTest), + 'test_MimeWriter.py' : (False, OutputTestModule), + 'test_StringIO.py' : (False, UTModuleMainTest), + 'test___all__.py' : (False, UTModuleMainTest), 'test___future__.py' : (False, UnknownTestModule), - 'test_tempfile.py' : (False, UTModuleMainTest), + 'test_aepack.py' : (False, UTModuleMainTest), + 'test_al.py' : (False, UnknownTestModule), + 'test_anydbm.py' : (False, UTModuleMainTest), + 'test_array.py' : (False, UTModuleMainTest), + 'test_asynchat.py' : (False, OutputTestModule), + 'test_atexit.py' : (False, UnknownTestModule), + 'test_audioop.py' : (False, UnknownTestModule), + 'test_augassign.py' : (False, OutputTestModule), + 'test_base64.py' : (True, UTModuleMainTest), + 'test_bastion.py' : (False, UnknownTestModule), + 'test_binascii.py' : (False, UTModuleMainTest), + 'test_binhex.py' : (False, UTModuleMainTest), + 'test_binop.py' : (True, UTModuleMainTest), 'test_bisect.py' : (True, UTModuleMainTest), - 'test_tarfile.py' : (False, UTModuleMainTest), - 'test_strftime.py' : (False, UnknownTestModule), - 'test_resource.py' : (False, OutputTestModule), - 'test_pickletools.py' : (False, UnknownTestModule), - 'test_inspect.py' : (False, UnknownTestModule), - 'test_gdbm.py' : (False, UnknownTestModule), - 'test_regex.py' : (False, OutputTestModule), - 'test_multifile.py' : (False, UTModuleMainTest), + 'test_bool.py' : (False, UTModuleMainTest), + 'test_bsddb.py' : (False, UTModuleMainTest), + 'test_bsddb185.py' : (False, UTModuleMainTest), + 'test_bsddb3.py' : (False, UTModuleMainTest), + 'test_bufio.py' : (False, UnknownTestModule), + 'test_builtin.py' : (True, UTModuleMainTest), + 'test_bz2.py' : (False, UTModuleMainTest), + 'test_calendar.py' : (False, UTModuleMainTest), + 'test_call.py' : (True, UTModuleMainTest), + 'test_capi.py' : (False, UnknownTestModule), + 'test_cd.py' : (False, UnknownTestModule), + 'test_cfgparser.py' : (False, UTModuleMainTest), + 'test_cgi.py' : (False, OutputTestModule), + 'test_charmapcodec.py' : (False, UTModuleMainTest), + 'test_cl.py' : (False, UnknownTestModule), + 'test_class.py' : (False, OutputTestModule), + 'test_cmath.py' : (True, UnknownTestModule), + 'test_codeccallbacks.py' : (False, UTModuleMainTest), + 'test_codecs.py' : (False, UTModuleMainTest), + 'test_codeop.py' : (True, UTModuleMainTest), + 'test_coercion.py' : (False, OutputTestModule), + 'test_commands.py' : (True, UTModuleMainTest), + 'test_compare.py' : (True, OutputTestModule), + 'test_compile.py' : (True, UTModuleMainTest), + 'test_complex.py' : (False, UTModuleMainTest), + 'test_contains.py' : (False, UnknownTestModule), + 'test_cookie.py' : (False, OutputTestModule), + 'test_copy.py' : (False, UTModuleMainTest), + 'test_copy_reg.py' : (False, UTModuleMainTest), + 'test_cpickle.py' : (False, UTModuleMainTest), + 'test_crypt.py' : (False, UnknownTestModule), + 'test_csv.py' : (False, UTModuleMainTest), + 'test_curses.py' : (False, UnknownTestModule), + 'test_datetime.py' : (True, UTModuleMainTest), + 'test_dbm.py' : (False, UnknownTestModule), + 'test_descr.py' : (False, UTModuleMainTest), + 'test_descrtut.py' : (False, UTModuleMainTest), + 'test_difflib.py' : (False, UnknownTestModule), + 'test_dircache.py' : (False, UTModuleMainTest), 'test_dis.py' : (True, UTModuleMainTest), - 'test_pty.py' : (False, OutputTestModule), - 'test_strop.py' : (False, UTModuleMainTest), + 'test_dl.py' : (False, UnknownTestModule), + 'test_doctest.py' : (False, UnknownTestModule), + 'test_doctest2.py' : (False, UTModuleMainTest), + 'test_dumbdbm.py' : (False, UTModuleMainTest), + 'test_dummy_thread.py' : (False, UTModuleMainTest), + 'test_dummy_threading.py': (False, UTModuleMainTest), + 'test_email.py' : (False, UTModuleMainTest), + 'test_email_codecs.py' : (False, UnknownTestModule), + 'test_enumerate.py' : (False, UTModuleMainTest), + 'test_eof.py' : (False, UTModuleMainTest), + 'test_errno.py' : (False, UnknownTestModule), + 'test_exceptions.py' : (False, OutputTestModule), + 'test_extcall.py' : (False, OutputTestModule), + 'test_fcntl.py' : (False, UnknownTestModule), + 'test_file.py' : (False, UnknownTestModule), + 'test_filecmp.py' : (False, UTModuleMainTest), + 'test_fileinput.py' : (False, UnknownTestModule), + 'test_fnmatch.py' : (False, UTModuleMainTest), + 'test_fork1.py' : (False, UnknownTestModule), + 'test_format.py' : (False, UnknownTestModule), + 'test_fpformat.py' : (False, UTModuleMainTest), + 'test_frozen.py' : (False, OutputTestModule), + 'test_funcattrs.py' : (False, UnknownTestModule), + 'test_future.py' : (False, OutputTestModule), + 'test_future1.py' : (False, UnknownTestModule), + 'test_future2.py' : (False, UnknownTestModule), 'test_future3.py' : (False, UTModuleMainTest), + 'test_gc.py' : (False, UnknownTestModule), + 'test_gdbm.py' : (False, UnknownTestModule), + 'test_generators.py' : (False, UTModuleMainTest), + 'test_getargs.py' : (False, UnknownTestModule), + 'test_getargs2.py' : (False, UTModuleMainTest), + 'test_getopt.py' : (False, UnknownTestModule), + 'test_gettext.py' : (False, UTModuleMainTest), + 'test_gl.py' : (False, UnknownTestModule), 'test_glob.py' : (False, UTModuleMainTest), - 'test_binascii.py' : (False, UTModuleMainTest), - 'test_codecs.py' : (False, UTModuleMainTest), - 'test_socketserver.py' : (False, UTModuleMainTest), - 'test_zipimport.py' : (False, UTModuleMainTest), - 'test_pwd.py' : (False, UTModuleMainTest), - 'test_popen2.py' : (False, OutputTestModule), - 'test_future1.py' : (False, UnknownTestModule), - 'test_funcattrs.py' : (False, UnknownTestModule), - 'test_codeccallbacks.py' : (False, UTModuleMainTest), - 'test_whichdb.py' : (False, UTModuleMainTest), + 'test_global.py' : (False, OutputTestModule), 'test_grammar.py' : (False, OutputTestModule), + 'test_grp.py' : (False, UTModuleMainTest), + 'test_gzip.py' : (False, UnknownTestModule), + 'test_hash.py' : (True, UTModuleMainTest), + 'test_heapq.py' : (True, UTModuleMainTest), + 'test_hexoct.py' : (True, UTModuleMainTest), + 'test_hmac.py' : (False, UTModuleMainTest), + 'test_hotshot.py' : (False, UTModuleMainTest), + 'test_htmllib.py' : (True, UTModuleMainTest), 'test_htmlparser.py' : (True, UTModuleMainTest), - 'test_getopt.py' : (False, UnknownTestModule), - 'test_dbm.py' : (False, UnknownTestModule), - 'test_global.py' : (False, OutputTestModule), - 'test_calendar.py' : (False, UTModuleMainTest), - 'test_sha.py' : (False, UTModuleMainTest), - 'test_curses.py' : (False, UnknownTestModule), - 'test_cmath.py' : (True, UnknownTestModule), - 'test_pkg.py' : (False, OutputTestModule), - 'test_binop.py' : (True, UTModuleMainTest), - 'test_optparse.py' : (False, UTModuleMainTest), - 'test_threading.py' : (False, UnknownTestModule), - 'test_unicodedata.py' : (False, UTModuleMainTest), - 'test_xmlrpc.py' : (False, UTModuleMainTest), - 'test_dummy_thread.py' : (False, UTModuleMainTest), - 'test_unicode.py' : (False, UTModuleMainTest), - 'test_class.py' : (False, OutputTestModule), - 'test_anydbm.py' : (False, UTModuleMainTest), - 'test_itertools.py' : (False, UTModuleMainTest), - 'test_stringprep.py' : (False, UnknownTestModule), - 'test_frozen.py' : (False, OutputTestModule), 'test_httplib.py' : (False, OutputTestModule), 'test_imageop.py' : (False, UnknownTestModule), - 'test_audioop.py' : (False, UnknownTestModule), - 'test_zlib.py' : (False, UTModuleMainTest), - 'test_ntpath.py' : (False, UnknownTestModule), - 'test_heapq.py' : (True, UTModuleMainTest), - 'test_posix.py' : (False, UTModuleMainTest), - 'test_mhlib.py' : (False, UTModuleMainTest), - 'test_operations.py' : (False, OutputTestModule), - 'test_profilehooks.py' : (True, UTModuleMainTest), - 'test_pkgimport.py' : (False, UTModuleMainTest), - 'test_complex.py' : (False, UTModuleMainTest), - 'test_builtin.py' : (True, UTModuleMainTest), - 'test_posixpath.py' : (False, UTModuleMainTest), - 'test_mimetypes.py' : (False, UTModuleMainTest), - 'test_sundry.py' : (False, UnknownTestModule), - 'test_cl.py' : (False, UnknownTestModule), - 'test_exceptions.py' : (False, OutputTestModule), - 'test_compare.py' : (True, OutputTestModule), - 'test_socket.py' : (False, UTModuleMainTest), - 'test_dircache.py' : (False, UTModuleMainTest), - 'test_pyclbr.py' : (False, UTModuleMainTest), - 'test_coercion.py' : (False, OutputTestModule), - 'test_trace.py' : (True, UTModuleMainTest), + 'test_imaplib.py' : (False, UnknownTestModule), + 'test_imgfile.py' : (False, UnknownTestModule), + 'test_imp.py' : (False, UTModuleMainTest), + 'test_import.py' : (False, UnknownTestModule), + 'test_importhooks.py' : (False, UTModuleMainTest), + 'test_inspect.py' : (False, UnknownTestModule), + 'test_ioctl.py' : (False, UTModuleMainTest), + 'test_isinstance.py' : (True, UTModuleMainTest), + 'test_iter.py' : (False, UTModuleMainTest), + 'test_itertools.py' : (False, UTModuleMainTest), + 'test_largefile.py' : (False, UnknownTestModule), + 'test_linuxaudiodev.py' : (False, OutputTestModule), + 'test_locale.py' : (False, UnknownTestModule), 'test_logging.py' : (False, UTModuleMainTest), - 'test_extcall.py' : (False, OutputTestModule), - 'test_userlist.py' : (False, UTModuleMainTest), + 'test_long.py' : (False, UnknownTestModule), + 'test_long_future.py' : (False, UnknownTestModule), 'test_longexp.py' : (False, OutputTestModule), - 'test_cgi.py' : (False, OutputTestModule), - 'test_wave.py' : (False, UnknownTestModule), - 'test_normalization.py' : (False, UTModuleMainTest), - 'test_mpz.py' : (False, UnknownTestModule), - 'test_dumbdbm.py' : (False, UTModuleMainTest), - 'test_gl.py' : (False, UnknownTestModule), - 'test_capi.py' : (False, UnknownTestModule), - 'test_strptime.py' : (False, UTModuleMainTest), + 'test_macfs.py' : (False, UTModuleMainTest), + 'test_macostools.py' : (False, UTModuleMainTest), + 'test_macpath.py' : (False, UTModuleMainTest), + 'test_mailbox.py' : (False, UTModuleMainTest), + 'test_marshal.py' : (False, UnknownTestModule), + 'test_math.py' : (False, OutputTestModule), 'test_md5.py' : (False, OutputTestModule), - 'test_pow.py' : (False, UTModuleMainTest), - 'test_rgbimg.py' : (False, OutputTestModule), - 'test_dl.py' : (False, UnknownTestModule), - 'test_slice.py' : (False, UnknownTestModule), - 'test_pep247.py' : (False, UnknownTestModule), - 'test_scope.py' : (False, OutputTestModule), - 'test_fcntl.py' : (False, UnknownTestModule), - 'test_ioctl.py' : (False, UTModuleMainTest), - 'test_doctest.py' : (False, UnknownTestModule), - 'test_asynchat.py' : (False, OutputTestModule), - 'test_scriptpackages.py' : (False, UTModuleMainTest), - 'test_unary.py' : (False, UTModuleMainTest), - 'test_poll.py' : (False, OutputTestModule), + 'test_mhlib.py' : (False, UTModuleMainTest), + 'test_mimetools.py' : (False, UTModuleMainTest), + 'test_mimetypes.py' : (False, UTModuleMainTest), + 'test_minidom.py' : (False, UnknownTestModule), + 'test_mmap.py' : (False, OutputTestModule), + 'test_module.py' : (False, UnknownTestModule), + 'test_mpz.py' : (False, UnknownTestModule), + 'test_multifile.py' : (False, UTModuleMainTest), + 'test_mutants.py' : (False, UnknownTestModule), + 'test_netrc.py' : (False, UTModuleMainTest), + 'test_new.py' : (False, OutputTestModule), + 'test_nis.py' : (False, OutputTestModule), + 'test_normalization.py' : (False, UTModuleMainTest), + 'test_ntpath.py' : (False, UnknownTestModule), 'test_opcodes.py' : (False, OutputTestModule), - 'test_gzip.py' : (False, UnknownTestModule), - 'test_fileinput.py' : (False, UnknownTestModule), - 'test_macfs.py' : (False, UTModuleMainTest), + 'test_openpty.py' : (False, OutputTestModule), + 'test_operations.py' : (False, OutputTestModule), + 'test_operator.py' : (True, UTModuleMainTest), + 'test_optparse.py' : (False, UTModuleMainTest), + 'test_os.py' : (False, UTModuleMainTest), 'test_ossaudiodev.py' : (False, OutputTestModule), - 'test_array.py' : (False, UTModuleMainTest), - 'test_binhex.py' : (False, UTModuleMainTest), - 'test_bastion.py' : (False, UnknownTestModule), - 'test_descrtut.py' : (False, UTModuleMainTest), - 'test_bz2.py' : (False, UTModuleMainTest), + 'test_parser.py' : (True, UTModuleMainTest), + 'test_pep247.py' : (False, UnknownTestModule), 'test_pep263.py' : (False, UnknownTestModule), - 'test_bsddb3.py' : (False, UTModuleMainTest), - 'test_MimeWriter.py' : (False, OutputTestModule), - 'test_urllib.py' : (False, UTModuleMainTest), - 'test_cpickle.py' : (False, UTModuleMainTest), - 'test_urlparse.py' : (True, UTModuleMainTest), - 'test_mmap.py' : (False, OutputTestModule), - 'test_symtable.py' : (False, UnknownTestModule), - 'test_traceback.py' : (False, UTModuleMainTest), - 'test_quopri.py' : (False, UTModuleMainTest), - 'test_contains.py' : (False, UnknownTestModule), + 'test_pep277.py' : (False, UTModuleMainTest), 'test_pickle.py' : (False, UTModuleMainTest), - 'test___all__.py' : (False, UTModuleMainTest), - 'test_re.py' : (False, UTModuleMainTest), - 'test_compile.py' : (True, UTModuleMainTest), - 'test_augassign.py' : (False, OutputTestModule), - 'test_largefile.py' : (False, UnknownTestModule), - 'test_mailbox.py' : (False, UTModuleMainTest), - 'test_unicode_file.py' : (False, OutputTestModule), + 'test_pickletools.py' : (False, UnknownTestModule), + 'test_pkg.py' : (False, OutputTestModule), + 'test_pkgimport.py' : (False, UTModuleMainTest), 'test_plistlib.py' : (False, UTModuleMainTest), - 'test_mimetools.py' : (False, UTModuleMainTest), - 'test_shelve.py' : (False, UTModuleMainTest), - 'test_rfc822.py' : (False, UTModuleMainTest), + 'test_poll.py' : (False, OutputTestModule), + 'test_popen.py' : (False, OutputTestModule), + 'test_popen2.py' : (False, OutputTestModule), + 'test_posix.py' : (False, UTModuleMainTest), + 'test_posixpath.py' : (False, UTModuleMainTest), + 'test_pow.py' : (False, UTModuleMainTest), 'test_pprint.py' : (True, UTModuleMainTest), + 'test_profile.py' : (False, UTModuleMainTest), + 'test_profilehooks.py' : (True, UTModuleMainTest), + 'test_pty.py' : (False, OutputTestModule), + 'test_pwd.py' : (False, UTModuleMainTest), + 'test_pyclbr.py' : (False, UTModuleMainTest), + 'test_pyexpat.py' : (False, OutputTestModule), + 'test_queue.py' : (False, UnknownTestModule), + 'test_quopri.py' : (False, UTModuleMainTest), + 'test_random.py' : (False, UTModuleMainTest), + 'test_re.py' : (False, UTModuleMainTest), + 'test_regex.py' : (False, OutputTestModule), + 'test_repr.py' : (False, UTModuleMainTest), + 'test_resource.py' : (False, OutputTestModule), + 'test_rfc822.py' : (False, UTModuleMainTest), + 'test_rgbimg.py' : (False, OutputTestModule), + 'test_richcmp.py' : (False, UTModuleMainTest), + 'test_robotparser.py' : (False, UTModuleMainTest), 'test_rotor.py' : (False, OutputTestModule), - 'test_getargs.py' : (False, UnknownTestModule), - 'test_mutants.py' : (False, UnknownTestModule), - 'test_doctest2.py' : (False, UTModuleMainTest), + 'test_sax.py' : (False, UnknownTestModule), + 'test_scope.py' : (False, OutputTestModule), + 'test_scriptpackages.py' : (False, UTModuleMainTest), + 'test_select.py' : (False, UnknownTestModule), + 'test_sets.py' : (False, UTModuleMainTest), + 'test_sgmllib.py' : (True, UTModuleMainTest), + 'test_sha.py' : (False, UTModuleMainTest), + 'test_shelve.py' : (False, UTModuleMainTest), + 'test_shlex.py' : (False, UTModuleMainTest), + 'test_shutil.py' : (False, UTModuleMainTest), + 'test_signal.py' : (False, OutputTestModule), + 'test_slice.py' : (False, UnknownTestModule), + 'test_socket.py' : (False, UTModuleMainTest), + 'test_socket_ssl.py' : (False, UTModuleMainTest), + 'test_socketserver.py' : (False, UTModuleMainTest), 'test_softspace.py' : (False, UnknownTestModule), - 'test_copy_reg.py' : (False, UTModuleMainTest), - 'test_cd.py' : (False, UnknownTestModule), - 'test_struct.py' : (False, UnknownTestModule), 'test_sort.py' : (False, UnknownTestModule), - 'test_imgfile.py' : (False, UnknownTestModule), - 'test_descr.py' : (False, UTModuleMainTest), - 'test_long_future.py' : (False, UnknownTestModule), - 'test_file.py' : (False, UnknownTestModule), - 'test_richcmp.py' : (False, UTModuleMainTest), - 'test_call.py' : (True, UTModuleMainTest), - 'test_nis.py' : (False, OutputTestModule), - 'test_timeout.py' : (False, UTModuleMainTest), - 'test_support.py' : (False, UnknownTestModule), - 'test_csv.py' : (False, UTModuleMainTest), - 'test_future2.py' : (False, UnknownTestModule), - 'test_aepack.py' : (False, UTModuleMainTest), - 'test_pyexpat.py' : (False, OutputTestModule), - 'test_import.py' : (False, UnknownTestModule), - 'test_openpty.py' : (False, OutputTestModule), - 'test_structseq.py' : (False, UnknownTestModule), - 'test_os.py' : (False, UTModuleMainTest), - 'test_repr.py' : (False, UTModuleMainTest), - 'test_generators.py' : (False, UTModuleMainTest), - 'test_future.py' : (False, OutputTestModule), - 'test_atexit.py' : (False, UnknownTestModule), - 'test_zipfile.py' : (False, UnknownTestModule), - 'test_urllib2.py' : (False, UnknownTestModule), - 'test_minidom.py' : (False, UnknownTestModule), - 'test_winreg.py' : (False, OutputTestModule), - 'test_iter.py' : (False, UTModuleMainTest), - 'test_fnmatch.py' : (False, UTModuleMainTest), - 'test_datetime.py' : (True, UTModuleMainTest), + 'test_str.py' : (False, UTModuleMainTest), + 'test_strftime.py' : (False, UnknownTestModule), 'test_string.py' : (True, UTModuleMainTest), - 'test_sets.py' : (False, UTModuleMainTest), + 'test_stringprep.py' : (False, UnknownTestModule), + 'test_strop.py' : (False, UTModuleMainTest), + 'test_strptime.py' : (False, UTModuleMainTest), + 'test_struct.py' : (False, UnknownTestModule), + 'test_structseq.py' : (False, UnknownTestModule), + 'test_sunaudiodev.py' : (False, UnknownTestModule), + 'test_sundry.py' : (False, UnknownTestModule), + 'test_support.py' : (False, UnknownTestModule), + 'test_symtable.py' : (False, UnknownTestModule), + 'test_syntax.py' : (False, UTModuleMainTest), + 'test_sys.py' : (True, UTModuleMainTest), + 'test_tarfile.py' : (False, UTModuleMainTest), + 'test_tempfile.py' : (False, UTModuleMainTest), 'test_textwrap.py' : (True, UTModuleMainTest), - 'test_select.py' : (False, UnknownTestModule), - 'test_filecmp.py' : (False, UTModuleMainTest), - 'test_base64.py' : (True, UTModuleMainTest), - 'test_long.py' : (False, UnknownTestModule), - 'test_hexoct.py' : (True, UTModuleMainTest), + 'test_thread.py' : (False, OutputTestModule), 'test_threaded_import.py': (False, UTModuleMainTest), - 'test_uu.py' : (False, UTModuleMainTest), - 'test_gc.py' : (False, UnknownTestModule), - 'test_StringIO.py' : (False, UTModuleMainTest), - 'test_module.py' : (False, UnknownTestModule), - 'test_profile.py' : (False, UTModuleMainTest), - 'test_winsound.py' : (False, UTModuleMainTest), - 'test_signal.py' : (False, OutputTestModule), - 'test_popen.py' : (False, OutputTestModule), - 'test_hotshot.py' : (False, UTModuleMainTest), - 'test_marshal.py' : (False, UnknownTestModule), + 'test_threadedtempfile.py': (False, UTModuleMainTest), + 'test_threading.py' : (False, UnknownTestModule), 'test_time.py' : (False, UTModuleMainTest), - 'test_sunaudiodev.py' : (False, UnknownTestModule), - 'test_operator.py' : (True, UTModuleMainTest), - 'test_univnewlines.py' : (False, UTModuleMainTest), - 'test_codeop.py' : (True, UTModuleMainTest), - 'test_sax.py' : (False, UnknownTestModule), - 'test_email.py' : (False, UTModuleMainTest), + 'test_timeout.py' : (False, UTModuleMainTest), 'test_timing.py' : (False, UnknownTestModule), - 'test_macpath.py' : (False, UTModuleMainTest), - 'test_hmac.py' : (False, UTModuleMainTest), - 'test_new.py' : (False, OutputTestModule), - 'test_imp.py' : (False, UTModuleMainTest), - 'test_gettext.py' : (False, UTModuleMainTest), - 'test_fork1.py' : (False, UnknownTestModule), - 'test_str.py' : (False, UTModuleMainTest), - 'test_netrc.py' : (False, UTModuleMainTest), - 'test_importhooks.py' : (False, UTModuleMainTest), - 'test_bufio.py' : (False, UnknownTestModule), - 'test_syntax.py' : (False, UTModuleMainTest), - 'test_grp.py' : (False, UTModuleMainTest), - 'test_imaplib.py' : (False, UnknownTestModule), - 'test_charmapcodec.py' : (False, UTModuleMainTest), - 'test_userdict.py' : (False, UTModuleMainTest), - 'test_robotparser.py' : (False, UTModuleMainTest), - 'test_commands.py' : (True, UTModuleMainTest), - 'test_eof.py' : (False, UTModuleMainTest), - 'test_weakref.py' : (False, UTModuleMainTest), - 'test_fpformat.py' : (False, UTModuleMainTest), - 'test_locale.py' : (False, UnknownTestModule), - 'test_htmllib.py' : (True, UTModuleMainTest), + 'test_tokenize.py' : (False, OutputTestModule), + 'test_trace.py' : (True, UTModuleMainTest), + 'test_traceback.py' : (False, UTModuleMainTest), 'test_types.py' : (False, OutputTestModule), - 'test_bsddb185.py' : (False, UTModuleMainTest), - 'test_math.py' : (False, OutputTestModule), - 'test_hash.py' : (True, UTModuleMainTest), - 'test_al.py' : (False, UnknownTestModule), - 'test_errno.py' : (False, UnknownTestModule), - 'test_queue.py' : (False, UnknownTestModule), - 'test_shutil.py' : (False, UTModuleMainTest), - 'test_bsddb.py' : (False, UTModuleMainTest), - 'test_sgmllib.py' : (True, UTModuleMainTest), - 'test_pep277.py' : (False, UTModuleMainTest), - 'test_macostools.py' : (False, UTModuleMainTest), - 'test_warnings.py' : (False, UTModuleMainTest), - 'test_copy.py' : (False, UTModuleMainTest), - 'test_getargs2.py' : (False, UTModuleMainTest), - 'test_bool.py' : (False, UTModuleMainTest), + 'test_ucn.py' : (False, UTModuleMainTest), + 'test_unary.py' : (False, UTModuleMainTest), + 'test_unicode.py' : (False, UTModuleMainTest), + 'test_unicode_file.py' : (False, OutputTestModule), + 'test_unicodedata.py' : (False, UTModuleMainTest), + 'test_univnewlines.py' : (False, UTModuleMainTest), 'test_unpack.py' : (False, UnknownTestModule), - 'test_enumerate.py' : (False, UTModuleMainTest), - 'test_socket_ssl.py' : (False, UTModuleMainTest), + 'test_urllib.py' : (False, UTModuleMainTest), + 'test_urllib2.py' : (False, UnknownTestModule), + 'test_urllibnet.py' : (False, UTModuleMainTest), + 'test_urlparse.py' : (True, UTModuleMainTest), + 'test_userdict.py' : (False, UTModuleMainTest), + 'test_userlist.py' : (False, UTModuleMainTest), 'test_userstring.py' : (False, UTModuleMainTest), - 'test_threadedtempfile.py': (False, UTModuleMainTest), - 'test_shlex.py' : (False, UTModuleMainTest), - 'test_crypt.py' : (False, UnknownTestModule), - 'test_format.py' : (False, UnknownTestModule), - 'test_isinstance.py' : (True, UTModuleMainTest), - 'test_cfgparser.py' : (False, UTModuleMainTest), - 'test_difflib.py' : (False, UnknownTestModule), + 'test_uu.py' : (False, UTModuleMainTest), + 'test_warnings.py' : (False, UTModuleMainTest), + 'test_wave.py' : (False, UnknownTestModule), + 'test_weakref.py' : (False, UTModuleMainTest), + 'test_whichdb.py' : (False, UTModuleMainTest), + 'test_winreg.py' : (False, OutputTestModule), + 'test_winsound.py' : (False, UTModuleMainTest), + 'test_xmllib.py' : (False, UTModuleMainTest), + 'test_xmlrpc.py' : (False, UTModuleMainTest), + 'test_xpickle.py' : (False, UTModuleMainTest), + 'test_xreadline.py' : (False, OutputTestModule), + 'test_zipfile.py' : (False, UnknownTestModule), + 'test_zipimport.py' : (False, UTModuleMainTest), + 'test_zlib.py' : (False, UTModuleMainTest), } From hpk at codespeak.net Sat Apr 16 18:28:25 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 16 Apr 2005 18:28:25 +0200 (CEST) Subject: [pypy-svn] r10733 - pypy/branch/pycollect-dist-pypy/pypy Message-ID: <20050416162825.5A57527B5E@code1.codespeak.net> Author: hpk Date: Sat Apr 16 18:28:25 2005 New Revision: 10733 Modified: pypy/branch/pycollect-dist-pypy/pypy/conftest.py Log: introduce a hack to be able to keyboard-interrupt space initializiation Modified: pypy/branch/pycollect-dist-pypy/pypy/conftest.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/pypy/conftest.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/conftest.py Sat Apr 16 18:28:25 2005 @@ -42,7 +42,22 @@ except KeyError: #py.magic.invoke(compile=True) module = __import__("pypy.objspace.%s" % name, None, None, ["Space"]) - space = module.Space() + try: + space = module.Space() + except KeyboardInterrupt: + raise + except OperationError, e: + # we cannot easily convert w_KeyboardInterrupt to + # KeyboardInterrupt so we have to jump through hoops + try: + if e.w_type.name == 'KeyboardInterrupt': + raise KeyboardInterrupt + except AttributeError: + pass + if option.verbose: + import traceback + traceback.print_exc() + py.test.fail("fatal: cannot initialize objspace: %r" %(module.Space,)) _spacecache[name] = space if name == 'std' and option.oldstyle: space.enable_old_style_classes_as_default_metaclass() From hpk at codespeak.net Sat Apr 16 19:15:49 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 16 Apr 2005 19:15:49 +0200 (CEST) Subject: [pypy-svn] r10738 - pypy/dist/pypy/documentation Message-ID: <20050416171549.54DAF27B5E@code1.codespeak.net> Author: hpk Date: Sat Apr 16 19:15:49 2005 New Revision: 10738 Added: pypy/dist/pypy/documentation/rest_test.py - copied, changed from r10736, py/dist/py/documentation/rest_test.py Modified: pypy/dist/pypy/documentation/howtopypy.txt Log: added a documentation check facility, including a hack to test local references. fixed ref errors. Modified: pypy/dist/pypy/documentation/howtopypy.txt ============================================================================== --- pypy/dist/pypy/documentation/howtopypy.txt (original) +++ pypy/dist/pypy/documentation/howtopypy.txt Sat Apr 16 19:15:49 2005 @@ -62,7 +62,7 @@ .. _`documentation start page`: http://codespeak.net/pypy/index.cgi?doc/index.html .. _`coding-style document`: http://codespeak.net/pypy/index.cgi?doc/coding-style.html -.. _`py.test`: /py/current/doc/test.html +.. _`py.test`: http://codespeak.net/py/current/doc/test.html PyPy Documentation @@ -160,8 +160,8 @@ + ObjectSpaceInterface_ .. _this: http://docutils.sourceforge.net/docs/rst/quickref.html -.. _ObjectSpace: objspace/objspace.html -.. _ObjectSpaceInterface: objspace/objspaceinterface.html +.. _ObjectSpace: objspace.html +.. _ObjectSpaceInterface: objspaceinterface.html .. _`detailed version`: Copied: pypy/dist/pypy/documentation/rest_test.py (from r10736, py/dist/py/documentation/rest_test.py) ============================================================================== --- py/dist/py/documentation/rest_test.py (original) +++ pypy/dist/pypy/documentation/rest_test.py Sat Apr 16 19:15:49 2005 @@ -1,10 +1,12 @@ from __future__ import generators import py +import pypy pydir = py.magic.autopath(vars(py)).dirpath() rest = pydir.join('bin', 'py.rest').getpymodule() -docdir = py.path.svnwc(pydir.join('documentation')) + +docdir = py.path.svnwc(pypy.__file__).dirpath('documentation') def restcheck(path): try: @@ -12,8 +14,36 @@ except ImportError: py.test.skip("docutils not importable") rest.process(path) + check_htmllinks(path) #assert not out def test_rest_files(): for x in docdir.listdir('*.txt'): yield restcheck, x + +def check_htmllinks(path): + ddir = docdir.localpath + + for lineno, line in py.builtin.enumerate(path.readlines()): + line = line.strip() + if line.startswith('.. _'): + l = line.split(':', 1) + if len(l) != 2: + continue + tryfn = l[1].strip() + if tryfn.startswith('http:'): + # XXX try retrieve? + pass + elif tryfn.endswith('.html'): + # assume it should be a file + fn = ddir.join(tryfn) + fn = fn.new(ext='.txt') + if not fn.check(file=1): + py.test.fail("reference error %r in %s:%d" %( + tryfn, path.basename, lineno+1)) + else: + # yes, what else? + pass + + + From hpk at codespeak.net Sat Apr 16 19:36:40 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 16 Apr 2005 19:36:40 +0200 (CEST) Subject: [pypy-svn] r10739 - pypy/dist/pypy/documentation Message-ID: <20050416173640.4756A27B5E@code1.codespeak.net> Author: hpk Date: Sat Apr 16 19:36:40 2005 New Revision: 10739 Modified: pypy/dist/pypy/documentation/howtopypy.txt pypy/dist/pypy/documentation/howtosvn.txt pypy/dist/pypy/documentation/newrepolayout.txt pypy/dist/pypy/documentation/rest_test.py Log: optionally rest_test.py even checks remote links now. fixed wrong URLs all around Modified: pypy/dist/pypy/documentation/howtopypy.txt ============================================================================== --- pypy/dist/pypy/documentation/howtopypy.txt (original) +++ pypy/dist/pypy/documentation/howtopypy.txt Sat Apr 16 19:36:40 2005 @@ -314,7 +314,7 @@ in pyopcode.py_, frame and code objects in eval.py_ and pyframe.py_, function objects and argument passing in function.py_ and argument.py_, the object space interface definition in baseobjspace.py_, modules in - module.py_ and extmodule.py_. Core types supporting the interpreter are + module.py_ and lazymodule.py_. Core types supporting the interpreter are defined in typedef.py_. * `dist-pypy/pypy/objspace/std`_ contains the `Standard object space`_. The main file @@ -360,7 +360,7 @@ .. _argument.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/argument.py .. _baseobjspace.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/baseobjspace.py .. _module.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/module.py -.. _extmodule.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/extmodule.py +.. _lazymodule.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/lazymodule.py .. _typedef.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/typedef.py .. _dist-pypy/pypy/objspace/std: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/ .. _Standard object space: http://codespeak.net/pypy/index.cgi?doc/stdobjspace.html Modified: pypy/dist/pypy/documentation/howtosvn.txt ============================================================================== --- pypy/dist/pypy/documentation/howtosvn.txt (original) +++ pypy/dist/pypy/documentation/howtosvn.txt Sat Apr 16 19:36:40 2005 @@ -49,7 +49,7 @@ deb http://fs.cs.fhm.edu/mirror/backports.org/debian stable subversion -Note that you can always go look at the files online_ with your browser, located at: http://codespeak.net/svn/pypy/trunk +Note that you can always go look at the files online_ with your browser, located at: http://codespeak.net/svn/pypy/dist But, you'll want to check out your own local copies to work on. Check out and Check in @@ -96,7 +96,7 @@ Transmitting file data . Committed revision 631. -Check online on the check-in archives_ and you'll see your revision. Feel free to add a documentation file on any major changes you've made! See the readme_ on documentation for more info. +Check online on the check-in archives_ and you'll see your revision. Feel free to add a documentation file on any major changes you've made! Some other useful subversion tricks: -------------------------------------- @@ -165,8 +165,7 @@ .. _guide: http://svnbook.red-bean.com/book.html#svn-ch-1 .. _archives: http://codespeak.net/pipermail/pypy-svn/ -.. _online: http://codespeak.net/svn/pypy/trunk/ -.. _coding-style: http://codespeak.net/pypy/doc/coding-style.html -.. _readme: http://codespeak.net/pypy/doc/readme.html +.. _online: http://codespeak.net/svn/pypy/dist/ +.. _coding-style: coding-style.html .. _HowToInstallServer: http://codespeak.net/moin/pypy/moin.cgi/HowToInstallServer .. _backports: http://www.backports.org Modified: pypy/dist/pypy/documentation/newrepolayout.txt ============================================================================== --- pypy/dist/pypy/documentation/newrepolayout.txt (original) +++ pypy/dist/pypy/documentation/newrepolayout.txt Sat Apr 16 19:36:40 2005 @@ -12,13 +12,12 @@ - `extradoc`_: talks, papers, newsletters and EU-related information that are useful for not-only-developers -- `eu-tracking`_: eu-tracking details that involve internal +- `eu-tracking`: eu-tracking details that involve internal budget/cost/audit preparations and documentations (not available to anonymous checkouts) .. _`extradoc`: http://codespeak.net/svn/pypy/extradoc .. _`dist`: http://codespeak.net/svn/pypy/dist -.. _`eu-tracking`: http://codespeak.net/svn/pypy/eu-tracking More detailed layout (work in progress) --------------------------------------- Modified: pypy/dist/pypy/documentation/rest_test.py ============================================================================== --- pypy/dist/pypy/documentation/rest_test.py (original) +++ pypy/dist/pypy/documentation/rest_test.py Sat Apr 16 19:36:40 2005 @@ -8,6 +8,8 @@ docdir = py.path.svnwc(pypy.__file__).dirpath('documentation') +checkremote = False + def restcheck(path): try: import docutils @@ -32,8 +34,14 @@ continue tryfn = l[1].strip() if tryfn.startswith('http:'): - # XXX try retrieve? - pass + if not checkremote: + continue + try: + print "trying remote", tryfn + py.std.urllib2.urlopen(tryfn) + except py.std.urllib2.HTTPError: + py.test.fail("remote reference error %r in %s:%d" %( + tryfn, path.basename, lineno+1)) elif tryfn.endswith('.html'): # assume it should be a file fn = ddir.join(tryfn) From hpk at codespeak.net Sat Apr 16 21:15:55 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 16 Apr 2005 21:15:55 +0200 (CEST) Subject: [pypy-svn] r10744 - pypy/branch/pycollect-dist-pypy/pypy/lib/test2 Message-ID: <20050416191555.738FD27B5E@code1.codespeak.net> Author: hpk Date: Sat Apr 16 21:15:55 2005 New Revision: 10744 Modified: pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py Log: "fix" aehem Modified: pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py ============================================================================== --- pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py (original) +++ pypy/branch/pycollect-dist-pypy/pypy/lib/test2/conftest.py Sat Apr 16 21:15:55 2005 @@ -27,8 +27,8 @@ return UnittestModuleOnCPython(fspath, parent=parent) class Directory(conftest.Directory): - def __iter__(self): - return iter([]) + def run(self): + return [] class UnittestModuleOnCPython(py.test.collect.Module): def _prepare(self): From hpk at codespeak.net Sat Apr 16 22:02:01 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 16 Apr 2005 22:02:01 +0200 (CEST) Subject: [pypy-svn] r10747 - in pypy/dist: lib-python-2.3.4/test pypy pypy/lib/test2 pypy/tool pypy/tool/test pypy/translator/test Message-ID: <20050416200201.DCD7527B5E@code1.codespeak.net> Author: hpk Date: Sat Apr 16 22:02:01 2005 New Revision: 10747 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py pypy/dist/pypy/conftest.py pypy/dist/pypy/lib/test2/conftest.py pypy/dist/pypy/lib/test2/support_tests.py pypy/dist/pypy/tool/pytestsupport.py pypy/dist/pypy/tool/test/test_pytestsupport.py pypy/dist/pypy/translator/test/test_pyrextrans.py Log: - merge the test-rework branch back with lots of improvements (mostly under the hood) - the only directly visible differences are that PyPy's custom py.test options are all uppercase now. - lib-python-2.3.4/test/conftest.py now holds an explicit list of test types for each of the contained test_*.py files. This sanitizes the whole collection/running process because we don'T have to guess from an imported module what kind of test it might be like. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Sat Apr 16 22:02:01 2005 @@ -1,73 +1,26 @@ import py import sys -from pypy.interpreter.gateway import app2interp_temp +from pypy.interpreter.gateway import ApplevelClass from pypy.interpreter.error import OperationError from pypy.tool import pytestsupport -from pypy.conftest import gettestobjspace, options from pypy.interpreter.module import Module as PyPyModule from pypy.interpreter.main import run_string, run_file +# the following adds command line options as a side effect! +from pypy.conftest import gettestobjspace, option from test.regrtest import reportdiff -# -# PyPy's command line extra options (these are added -# to py.test's standard options) -# -#Option = py.test.Option -#options = ('pypy options', [ -# Option('-o', '--objspace', action="store", default=None, -# type="string", dest="objspacename", -# help="object space to run tests on."), -##]) - # # Interfacing/Integrating with py.test's collection process # -mydir = py.magic.autopath().dirpath() - -working_unittests = ( -'test_base64.py', -'test_binop.py', -'test_bisect.py', -'test_builtin.py', -'test_call.py', -'test_cmath.py', -'test_codeop.py', # Commented out due to strange iteraction with py.test -'test_commands.py', -'test_compare.py', -'test_compile.py', -'test_datetime.py', # it takes loong time -'test_dis.py', -'test_hash.py', -'test_heapq.py', -'test_hexoct.py', -'test_htmllib.py', -'test_htmlparser.py', -'test_isinstance.py', -'test_long.py', #Works but takes several hours to finish -'test_operator.py', -'test_parser.py', -'test_pprint.py', -'test_profilehooks.py', -'test_sgmllib.py', -'test_string.py', -'test_sys.py', -'test_textwrap.py', -'test_trace.py', -'test_urlparse.py', -) - -working_outputtests = ( - 'test_cgi.py', -) - -# sanity check for when the above lists become long -assert len(dict.fromkeys(working_unittests)) == len(working_unittests), ( - "duplicate entry in working_unittests") -assert len(dict.fromkeys(working_outputtests)) == len(working_outputtests), ( - "duplicate entry in working_outputtests") +# XXX no nice way to implement a --listpassing py.test option?! +#option = py.test.addoptions("compliance testing options", +# py.test.Option('-L', '--listpassing', action="store", default=None, +# type="string", dest="listpassing", +# help="display only the list of expected-to-pass tests.") +mydir = py.magic.autopath().dirpath() def make_module(space, dottedname, filepath): #print "making module", dottedname, "from", filepath @@ -82,87 +35,98 @@ space.setitem(w_modules, w_dottedname, w_mod) return w_mod -class Directory(py.test.collect.Directory): - def __iter__(self): - all_tests = [] - for test in self.fspath.listdir('test_*.py'): - if test.basename not in working_outputtests and \ - test.basename not in working_unittests: - continue - all_tests.append(test) - all_tests.sort() - for test in all_tests: - yield Module(test) +def callex(space, func, *args, **kwargs): + try: + return func(*args, **kwargs) + except OperationError, e: + if e.match(space, space.w_KeyboardInterrupt): + raise KeyboardInterrupt + raise + +class RegrDirectory(py.test.collect.Directory): + def run(self): + l = [] + for (name, (enabled, typ)) in testmap.items(): + if enabled: + l.append(name) + return l + + def join(self, name): + if name not in testmap: + raise NameError(name) + enabled, typ = testmap[name] + return typ(name, parent=self) + +Directory = RegrDirectory w_testlist = None +def hack_test_support(space): + global w_testlist + w_testlist = space.newlist([]) + space.appexec([w_testlist], """ + (testlist): + def hack_run_unittest(*classes): + testlist.extend(list(classes)) + from test import test_support # humpf + test_support.run_unittest = hack_run_unittest + """) + def getmyspace(): space = gettestobjspace('std') # we once and for all want to patch run_unittest # to get us the list of intended unittest-TestClasses # from each regression test - global w_testlist if w_testlist is None: - w_testlist = space.newlist([]) - space.appexec([w_testlist], """ - (testlist): - def hack_run_unittest(*classes): - testlist.extend(list(classes)) - from test import test_support # humpf - test_support.run_unittest = hack_run_unittest - """) + callex(space, hack_test_support, space) return space - -def app_list_testmethods(mod, testcaseclass, classlist): - """ return [(instance.setUp, instance.tearDown, - [instance.testmethod1, ...]), - ...] - """ - #print "entering list_testmethods" - if callable(getattr(mod, 'test_main', None)): - classlist[:] = [] - mod.test_main() - assert classlist, ("found %s.test_main() but it returned no " - "test classes" % mod.__name__) - else: - # we try to find out fitting tests ourselves - raise Exception, mod.__dict__.items() - for clsname, cls in mod.__dict__.items(): - if hasattr(cls, '__bases__') and \ - issubclass(cls, testcaseclass): - classlist.append(cls) - l = [] - for cls in classlist: + +app = ApplevelClass(''' + #NOT_RPYTHON + + def list_testmethods(cls): + """ return [(instance.setUp, instance.tearDown, + [instance.testmethod1, ...]), ...] + """ clsname = cls.__name__ instance = cls() #print "checking", instance methods = [] for methodname in dir(cls): - if methodname.startswith('test_'): + if methodname.startswith('test'): name = clsname + '.' + methodname methods.append((name, getattr(instance, methodname))) - l.append((instance.setUp, instance.tearDown, methods)) - return l -list_testmethods = app2interp_temp(app_list_testmethods) - -def Module(fspath): - output = fspath.dirpath('output', fspath.purebasename) - if output.check(file=1): - # ok this is an output test - return OutputTestItem(fspath, output) - content = fspath.read() - # XXX not exactly clean: - if content.find('unittest') != -1: - # we can try to run ... - return AppUnittestModule(fspath) - -class OutputTestItem(py.test.Item): - def __init__(self, fspath, output): - self.fspath = fspath - self.outputpath = output - self.extpy = py.path.extpy(fspath) + return instance.setUp, instance.tearDown, methods +''') - def run(self, driver): +list_testmethods = app.interphook('list_testmethods') + +class OpErrorModule(py.test.collect.Module): + # wraps some methods around a py.test Module in order + # to get clean KeyboardInterrupt behaviour (pypy often + # throws wrapped ones) + def tryiter(self, stopitems=()): + try: + for x in super(OpErrorModule, self).tryiter(stopitems): + yield x + except OperationError, e: + space = getattr(self, 'space', None) + if space and e.match(space, space.w_KeyboardInterrupt): + raise Keyboardinterrupt + raise + +class OutputTestModule(OpErrorModule): + def run(self): + return [self.fspath.purebasename] + def join(self, name): + if name == self.fspath.purebasename: + return OutputTestItem(name, parent=self) + +class OutputTestItem(py.test.Item): + def run(self): + outputpath = self.fspath.dirpath('output', self.name) + if not outputpath.check(): + py.test.fail("expected outputfile at %s" %(outputpath,)) space = getmyspace() try: oldsysout = sys.stdout @@ -178,60 +142,96 @@ else: # we want to compare outputs result = capturesysout.getvalue() - expected = self.outputpath.read(mode='r') + expected = outputpath.read(mode='r') if result != expected: reportdiff(expected, result) - assert 0, "expected and real output of running test differ" + py.test.fail("output check failed: %s" % (self.fspath.basename,)) + + +class UnknownTestModule(py.test.collect.Module): + def run(self): + py.test.skip("missing test type for: %s" %(self.fspath.basename)) -class AppUnittestModule(py.test.collect.Module): - def __init__(self, fspath): - super(AppUnittestModule, self).__init__(fspath) - +class UTModuleMainTest(OpErrorModule): def _prepare(self): if hasattr(self, 'space'): return self.space = space = getmyspace() - w_mod = make_module(space, 'unittest', mydir.join('pypy_unittest.py')) - self.w_TestCase = space.getattr(w_mod, space.wrap('TestCase')) - - def __iter__(self): + def f(): + w_mod = make_module(space, 'unittest', mydir.join('pypy_unittest.py')) + self.w_TestCase = space.getattr(w_mod, space.wrap('TestCase')) + self._testcases = self.get_testcases() + callex(space, f) + + def run(self): self._prepare() - try: - iterable = self._cache - except AttributeError: - iterable = self._cache = list(self._iterapplevel()) - for x in iterable: - yield x + return [x[0] for x in self._testcases] - def _iterapplevel(self): + def get_testcases(self): name = self.fspath.purebasename space = self.space w_mod = make_module(space, name, self.fspath) - w_tlist = list_testmethods(space, w_mod, self.w_TestCase, w_testlist) - tlist_w = space.unpackiterable(w_tlist) - for item_w in tlist_w: - w_setup, w_teardown, w_methods = space.unpacktuple(item_w) + + # hack out testcases + space.appexec([w_mod, w_testlist], """ + (mod, classlist): + classlist[:] = [] + mod.test_main() + """) + res = [] + #print w_testlist + for w_class in space.unpackiterable(w_testlist): + w_name = space.getattr(w_class, space.wrap('__name__')) + res.append((space.str_w(w_name), w_class )) + res.sort() + return res + + def join(self, name): + for x,w_cls in self._testcases: + if x == name: + return UTAppTestCase(name, parent=self, w_cls=w_cls) + + +class UTAppTestCase(py.test.collect.Class): + def __init__(self, name, parent, w_cls): + super(UTAppTestCase, self).__init__(name, parent) + self.w_cls = w_cls + + def _prepare(self): + if not hasattr(self, 'space'): + self.space = space = self.parent.space + w_item = list_testmethods(space, self.w_cls) + w_setup, w_teardown, w_methods = space.unpackiterable(w_item) methoditems_w = space.unpackiterable(w_methods) + self.methods_w = methods_w = [] for w_methoditem in methoditems_w: w_name, w_method = space.unpacktuple(w_methoditem) - yield AppTestCaseMethod(self.fspath, space, w_name, w_method, - w_setup, w_teardown) + name = space.str_w(w_name) + methods_w.append((name, w_method, w_setup, w_teardown)) + methods_w.sort() + + def run(self): + callex(self.parent.space, self._prepare,) + return [x[0] for x in self.methods_w] + + def join(self, name): + for x in self.methods_w: + if x[0] == name: + args = x[1:] + return AppTestCaseMethod(name, self, *args) class AppTestCaseMethod(py.test.Item): - def __init__(self, fspath, space, w_name, w_method, w_setup, w_teardown): - self.space = space - self.name = name = space.str_w(w_name) - self.modulepath = fspath - extpy = py.path.extpy(fspath, name) - super(AppTestCaseMethod, self).__init__(extpy) + def __init__(self, name, parent, w_method, w_setup, w_teardown): + super(AppTestCaseMethod, self).__init__(name, parent) + self.space = parent.space self.w_method = w_method self.w_setup = w_setup self.w_teardown = w_teardown - def run(self, driver): + def run(self): space = self.space try: - filename = str(self.modulepath) + filename = str(self.fspath) w_argv = space.sys.get('argv') space.setitem(w_argv, space.newslice(None, None, None), space.newlist([space.wrap(filename)])) @@ -246,8 +246,273 @@ finally: self.space.call_function(self.w_teardown) except OperationError, e: - raise self.Failed( - excinfo=pytestsupport.AppExceptionInfo(self.space, e)) + ilevel_excinfo = py.code.ExceptionInfo() + excinfo=pytestsupport.AppExceptionInfo(self.space, e) + if excinfo.traceback: + raise self.Failed(excinfo=excinfo) + raise self.Failed(excinfo=ilevel_excinfo) def execute(self): self.space.call_function(self.w_method) + +testmap = { + 'test_MimeWriter.py' : (False, OutputTestModule), + 'test_StringIO.py' : (False, UTModuleMainTest), + 'test___all__.py' : (False, UTModuleMainTest), + 'test___future__.py' : (False, UnknownTestModule), + 'test_aepack.py' : (False, UTModuleMainTest), + 'test_al.py' : (False, UnknownTestModule), + 'test_anydbm.py' : (False, UTModuleMainTest), + 'test_array.py' : (False, UTModuleMainTest), + 'test_asynchat.py' : (False, OutputTestModule), + 'test_atexit.py' : (False, UnknownTestModule), + 'test_audioop.py' : (False, UnknownTestModule), + 'test_augassign.py' : (False, OutputTestModule), + 'test_base64.py' : (True, UTModuleMainTest), + 'test_bastion.py' : (False, UnknownTestModule), + 'test_binascii.py' : (False, UTModuleMainTest), + 'test_binhex.py' : (False, UTModuleMainTest), + 'test_binop.py' : (True, UTModuleMainTest), + 'test_bisect.py' : (True, UTModuleMainTest), + 'test_bool.py' : (False, UTModuleMainTest), + 'test_bsddb.py' : (False, UTModuleMainTest), + 'test_bsddb185.py' : (False, UTModuleMainTest), + 'test_bsddb3.py' : (False, UTModuleMainTest), + 'test_bufio.py' : (False, UnknownTestModule), + 'test_builtin.py' : (True, UTModuleMainTest), + 'test_bz2.py' : (False, UTModuleMainTest), + 'test_calendar.py' : (False, UTModuleMainTest), + 'test_call.py' : (True, UTModuleMainTest), + 'test_capi.py' : (False, UnknownTestModule), + 'test_cd.py' : (False, UnknownTestModule), + 'test_cfgparser.py' : (False, UTModuleMainTest), + 'test_cgi.py' : (False, OutputTestModule), + 'test_charmapcodec.py' : (False, UTModuleMainTest), + 'test_cl.py' : (False, UnknownTestModule), + 'test_class.py' : (False, OutputTestModule), + 'test_cmath.py' : (True, UnknownTestModule), + 'test_codeccallbacks.py' : (False, UTModuleMainTest), + 'test_codecs.py' : (False, UTModuleMainTest), + 'test_codeop.py' : (True, UTModuleMainTest), + 'test_coercion.py' : (False, OutputTestModule), + 'test_commands.py' : (True, UTModuleMainTest), + 'test_compare.py' : (True, OutputTestModule), + 'test_compile.py' : (True, UTModuleMainTest), + 'test_complex.py' : (False, UTModuleMainTest), + 'test_contains.py' : (False, UnknownTestModule), + 'test_cookie.py' : (False, OutputTestModule), + 'test_copy.py' : (False, UTModuleMainTest), + 'test_copy_reg.py' : (False, UTModuleMainTest), + 'test_cpickle.py' : (False, UTModuleMainTest), + 'test_crypt.py' : (False, UnknownTestModule), + 'test_csv.py' : (False, UTModuleMainTest), + 'test_curses.py' : (False, UnknownTestModule), + 'test_datetime.py' : (True, UTModuleMainTest), + 'test_dbm.py' : (False, UnknownTestModule), + 'test_descr.py' : (False, UTModuleMainTest), + 'test_descrtut.py' : (False, UTModuleMainTest), + 'test_difflib.py' : (False, UnknownTestModule), + 'test_dircache.py' : (False, UTModuleMainTest), + 'test_dis.py' : (True, UTModuleMainTest), + 'test_dl.py' : (False, UnknownTestModule), + 'test_doctest.py' : (False, UnknownTestModule), + 'test_doctest2.py' : (False, UTModuleMainTest), + 'test_dumbdbm.py' : (False, UTModuleMainTest), + 'test_dummy_thread.py' : (False, UTModuleMainTest), + 'test_dummy_threading.py': (False, UTModuleMainTest), + 'test_email.py' : (False, UTModuleMainTest), + 'test_email_codecs.py' : (False, UnknownTestModule), + 'test_enumerate.py' : (False, UTModuleMainTest), + 'test_eof.py' : (False, UTModuleMainTest), + 'test_errno.py' : (False, UnknownTestModule), + 'test_exceptions.py' : (False, OutputTestModule), + 'test_extcall.py' : (False, OutputTestModule), + 'test_fcntl.py' : (False, UnknownTestModule), + 'test_file.py' : (False, UnknownTestModule), + 'test_filecmp.py' : (False, UTModuleMainTest), + 'test_fileinput.py' : (False, UnknownTestModule), + 'test_fnmatch.py' : (False, UTModuleMainTest), + 'test_fork1.py' : (False, UnknownTestModule), + 'test_format.py' : (False, UnknownTestModule), + 'test_fpformat.py' : (False, UTModuleMainTest), + 'test_frozen.py' : (False, OutputTestModule), + 'test_funcattrs.py' : (False, UnknownTestModule), + 'test_future.py' : (False, OutputTestModule), + 'test_future1.py' : (False, UnknownTestModule), + 'test_future2.py' : (False, UnknownTestModule), + 'test_future3.py' : (False, UTModuleMainTest), + 'test_gc.py' : (False, UnknownTestModule), + 'test_gdbm.py' : (False, UnknownTestModule), + 'test_generators.py' : (False, UTModuleMainTest), + 'test_getargs.py' : (False, UnknownTestModule), + 'test_getargs2.py' : (False, UTModuleMainTest), + 'test_getopt.py' : (False, UnknownTestModule), + 'test_gettext.py' : (False, UTModuleMainTest), + 'test_gl.py' : (False, UnknownTestModule), + 'test_glob.py' : (False, UTModuleMainTest), + 'test_global.py' : (False, OutputTestModule), + 'test_grammar.py' : (False, OutputTestModule), + 'test_grp.py' : (False, UTModuleMainTest), + 'test_gzip.py' : (False, UnknownTestModule), + 'test_hash.py' : (True, UTModuleMainTest), + 'test_heapq.py' : (True, UTModuleMainTest), + 'test_hexoct.py' : (True, UTModuleMainTest), + 'test_hmac.py' : (False, UTModuleMainTest), + 'test_hotshot.py' : (False, UTModuleMainTest), + 'test_htmllib.py' : (True, UTModuleMainTest), + 'test_htmlparser.py' : (True, UTModuleMainTest), + 'test_httplib.py' : (False, OutputTestModule), + 'test_imageop.py' : (False, UnknownTestModule), + 'test_imaplib.py' : (False, UnknownTestModule), + 'test_imgfile.py' : (False, UnknownTestModule), + 'test_imp.py' : (False, UTModuleMainTest), + 'test_import.py' : (False, UnknownTestModule), + 'test_importhooks.py' : (False, UTModuleMainTest), + 'test_inspect.py' : (False, UnknownTestModule), + 'test_ioctl.py' : (False, UTModuleMainTest), + 'test_isinstance.py' : (True, UTModuleMainTest), + 'test_iter.py' : (False, UTModuleMainTest), + 'test_itertools.py' : (False, UTModuleMainTest), + 'test_largefile.py' : (False, UnknownTestModule), + 'test_linuxaudiodev.py' : (False, OutputTestModule), + 'test_locale.py' : (False, UnknownTestModule), + 'test_logging.py' : (False, UTModuleMainTest), + 'test_long.py' : (True, UnknownTestModule), # takes hours + 'test_long_future.py' : (False, UnknownTestModule), + 'test_longexp.py' : (False, OutputTestModule), + 'test_macfs.py' : (False, UTModuleMainTest), + 'test_macostools.py' : (False, UTModuleMainTest), + 'test_macpath.py' : (False, UTModuleMainTest), + 'test_mailbox.py' : (False, UTModuleMainTest), + 'test_marshal.py' : (False, UnknownTestModule), + 'test_math.py' : (False, OutputTestModule), + 'test_md5.py' : (False, OutputTestModule), + 'test_mhlib.py' : (False, UTModuleMainTest), + 'test_mimetools.py' : (False, UTModuleMainTest), + 'test_mimetypes.py' : (False, UTModuleMainTest), + 'test_minidom.py' : (False, UnknownTestModule), + 'test_mmap.py' : (False, OutputTestModule), + 'test_module.py' : (False, UnknownTestModule), + 'test_mpz.py' : (False, UnknownTestModule), + 'test_multifile.py' : (False, UTModuleMainTest), + 'test_mutants.py' : (False, UnknownTestModule), + 'test_netrc.py' : (False, UTModuleMainTest), + 'test_new.py' : (False, OutputTestModule), + 'test_nis.py' : (False, OutputTestModule), + 'test_normalization.py' : (False, UTModuleMainTest), + 'test_ntpath.py' : (False, UnknownTestModule), + 'test_opcodes.py' : (False, OutputTestModule), + 'test_openpty.py' : (False, OutputTestModule), + 'test_operations.py' : (False, OutputTestModule), + 'test_operator.py' : (True, UTModuleMainTest), + 'test_optparse.py' : (False, UTModuleMainTest), + 'test_os.py' : (False, UTModuleMainTest), + 'test_ossaudiodev.py' : (False, OutputTestModule), + 'test_parser.py' : (True, UTModuleMainTest), + 'test_pep247.py' : (False, UnknownTestModule), + 'test_pep263.py' : (False, UnknownTestModule), + 'test_pep277.py' : (False, UTModuleMainTest), + 'test_pickle.py' : (False, UTModuleMainTest), + 'test_pickletools.py' : (False, UnknownTestModule), + 'test_pkg.py' : (False, OutputTestModule), + 'test_pkgimport.py' : (False, UTModuleMainTest), + 'test_plistlib.py' : (False, UTModuleMainTest), + 'test_poll.py' : (False, OutputTestModule), + 'test_popen.py' : (False, OutputTestModule), + 'test_popen2.py' : (False, OutputTestModule), + 'test_posix.py' : (False, UTModuleMainTest), + 'test_posixpath.py' : (False, UTModuleMainTest), + 'test_pow.py' : (False, UTModuleMainTest), + 'test_pprint.py' : (True, UTModuleMainTest), + 'test_profile.py' : (False, UTModuleMainTest), + 'test_profilehooks.py' : (True, UTModuleMainTest), + 'test_pty.py' : (False, OutputTestModule), + 'test_pwd.py' : (False, UTModuleMainTest), + 'test_pyclbr.py' : (False, UTModuleMainTest), + 'test_pyexpat.py' : (False, OutputTestModule), + 'test_queue.py' : (False, UnknownTestModule), + 'test_quopri.py' : (False, UTModuleMainTest), + 'test_random.py' : (False, UTModuleMainTest), + 'test_re.py' : (False, UTModuleMainTest), + 'test_regex.py' : (False, OutputTestModule), + 'test_repr.py' : (False, UTModuleMainTest), + 'test_resource.py' : (False, OutputTestModule), + 'test_rfc822.py' : (False, UTModuleMainTest), + 'test_rgbimg.py' : (False, OutputTestModule), + 'test_richcmp.py' : (False, UTModuleMainTest), + 'test_robotparser.py' : (False, UTModuleMainTest), + 'test_rotor.py' : (False, OutputTestModule), + 'test_sax.py' : (False, UnknownTestModule), + 'test_scope.py' : (False, OutputTestModule), + 'test_scriptpackages.py' : (False, UTModuleMainTest), + 'test_select.py' : (False, UnknownTestModule), + 'test_sets.py' : (False, UTModuleMainTest), + 'test_sgmllib.py' : (True, UTModuleMainTest), + 'test_sha.py' : (False, UTModuleMainTest), + 'test_shelve.py' : (False, UTModuleMainTest), + 'test_shlex.py' : (False, UTModuleMainTest), + 'test_shutil.py' : (False, UTModuleMainTest), + 'test_signal.py' : (False, OutputTestModule), + 'test_slice.py' : (False, UnknownTestModule), + 'test_socket.py' : (False, UTModuleMainTest), + 'test_socket_ssl.py' : (False, UTModuleMainTest), + 'test_socketserver.py' : (False, UTModuleMainTest), + 'test_softspace.py' : (False, UnknownTestModule), + 'test_sort.py' : (False, UnknownTestModule), + 'test_str.py' : (False, UTModuleMainTest), + 'test_strftime.py' : (False, UnknownTestModule), + 'test_string.py' : (True, UTModuleMainTest), + 'test_stringprep.py' : (False, UnknownTestModule), + 'test_strop.py' : (False, UTModuleMainTest), + 'test_strptime.py' : (False, UTModuleMainTest), + 'test_struct.py' : (False, UnknownTestModule), + 'test_structseq.py' : (False, UnknownTestModule), + 'test_sunaudiodev.py' : (False, UnknownTestModule), + 'test_sundry.py' : (False, UnknownTestModule), + 'test_support.py' : (False, UnknownTestModule), + 'test_symtable.py' : (False, UnknownTestModule), + 'test_syntax.py' : (False, UTModuleMainTest), + 'test_sys.py' : (True, UTModuleMainTest), + 'test_tarfile.py' : (False, UTModuleMainTest), + 'test_tempfile.py' : (False, UTModuleMainTest), + 'test_textwrap.py' : (True, UTModuleMainTest), + 'test_thread.py' : (False, OutputTestModule), + 'test_threaded_import.py': (False, UTModuleMainTest), + 'test_threadedtempfile.py': (False, UTModuleMainTest), + 'test_threading.py' : (False, UnknownTestModule), + 'test_time.py' : (False, UTModuleMainTest), + 'test_timeout.py' : (False, UTModuleMainTest), + 'test_timing.py' : (False, UnknownTestModule), + 'test_tokenize.py' : (False, OutputTestModule), + 'test_trace.py' : (True, UTModuleMainTest), + 'test_traceback.py' : (False, UTModuleMainTest), + 'test_types.py' : (False, OutputTestModule), + 'test_ucn.py' : (False, UTModuleMainTest), + 'test_unary.py' : (False, UTModuleMainTest), + 'test_unicode.py' : (False, UTModuleMainTest), + 'test_unicode_file.py' : (False, OutputTestModule), + 'test_unicodedata.py' : (False, UTModuleMainTest), + 'test_univnewlines.py' : (False, UTModuleMainTest), + 'test_unpack.py' : (False, UnknownTestModule), + 'test_urllib.py' : (False, UTModuleMainTest), + 'test_urllib2.py' : (False, UnknownTestModule), + 'test_urllibnet.py' : (False, UTModuleMainTest), + 'test_urlparse.py' : (True, UTModuleMainTest), + 'test_userdict.py' : (False, UTModuleMainTest), + 'test_userlist.py' : (False, UTModuleMainTest), + 'test_userstring.py' : (False, UTModuleMainTest), + 'test_uu.py' : (False, UTModuleMainTest), + 'test_warnings.py' : (False, UTModuleMainTest), + 'test_wave.py' : (False, UnknownTestModule), + 'test_weakref.py' : (False, UTModuleMainTest), + 'test_whichdb.py' : (False, UTModuleMainTest), + 'test_winreg.py' : (False, OutputTestModule), + 'test_winsound.py' : (False, UTModuleMainTest), + 'test_xmllib.py' : (False, UTModuleMainTest), + 'test_xmlrpc.py' : (False, UTModuleMainTest), + 'test_xpickle.py' : (False, UTModuleMainTest), + 'test_xreadline.py' : (False, OutputTestModule), + 'test_zipfile.py' : (False, UnknownTestModule), + 'test_zipimport.py' : (False, UTModuleMainTest), + 'test_zlib.py' : (False, UTModuleMainTest), +} Modified: pypy/dist/pypy/conftest.py ============================================================================== --- pypy/dist/pypy/conftest.py (original) +++ pypy/dist/pypy/conftest.py Sat Apr 16 22:02:01 2005 @@ -2,6 +2,7 @@ from pypy.interpreter.gateway import app2interp_temp from pypy.interpreter.error import OperationError from pypy.tool import pytestsupport +from inspect import isclass rootdir = py.magic.autopath().dirpath() @@ -9,26 +10,31 @@ # PyPy's command line extra options (these are added # to py.test's standard options) # -Option = py.test.Option -options = ('pypy options', [ - Option('-o', '--objspace', action="store", default=None, +Option = py.test.Config.Option + +#class Options: +# group = "pypy options" +# optionlist = + +option = py.test.Config.addoptions("pypy options", + Option('-O', '--objspace', action="store", default=None, type="string", dest="objspacename", help="object space to run tests on."), Option('--oldstyle', action="store_true",dest="oldstyle", default=False, help="enable oldstyle classes as default metaclass (std objspace only)"), Option('--allpypy', action="store_true",dest="allpypy", default=False, help="run everything possible on top of PyPy."), -]) + ) def getobjspace(name=None, _spacecache={}): """ helper for instantiating and caching space's for testing. """ if name is None: - name = py.test.config.option.objspacename + name = option.objspacename if name is None: name = py.std.os.environ.get('OBJSPACE', 'std') else: - optionname = py.test.config.option.objspacename + optionname = option.objspacename if optionname is not None and optionname != name: return None try: @@ -36,9 +42,24 @@ except KeyError: #py.magic.invoke(compile=True) module = __import__("pypy.objspace.%s" % name, None, None, ["Space"]) - space = module.Space() + try: + space = module.Space() + except KeyboardInterrupt: + raise + except OperationError, e: + # we cannot easily convert w_KeyboardInterrupt to + # KeyboardInterrupt so we have to jump through hoops + try: + if e.w_type.name == 'KeyboardInterrupt': + raise KeyboardInterrupt + except AttributeError: + pass + if option.verbose: + import traceback + traceback.print_exc() + py.test.fail("fatal: cannot initialize objspace: %r" %(module.Space,)) _spacecache[name] = space - if name == 'std' and py.test.config.option.oldstyle: + if name == 'std' and option.oldstyle: space.enable_old_style_classes_as_default_metaclass() if name != 'flow': # not sensible for flow objspace case space.setitem(space.builtin.w_dict, space.wrap('AssertionError'), @@ -60,26 +81,34 @@ and at interp-level (because we need to stick a space at the class) ourselves. """ - def collect_function(self, extpy): - if extpy.check(func=1, basestarts='test_'): - if extpy.check(genfunc=1): - yield IntTestGenerator(extpy) - else: - yield IntTestFunction(extpy) + def funcnamefilter(self, name): + return name.startswith('test_') or name.startswith('app_test_') + def classnamefilter(self, name): + return name.startswith('Test') or name.startswith('AppTest') - def collect_app_function(self, extpy): - if extpy.check(func=1, basestarts='app_test_'): - assert not extpy.check(genfunc=1), ( - "generator app level functions? you must be joking") - yield AppTestFunction(extpy) - - def collect_class(self, extpy): - if extpy.check(class_=1, basestarts="Test"): - yield IntClassCollector(extpy) - - def collect_appclass(self, extpy): - if extpy.check(class_=1, basestarts="AppTest"): - yield AppClassCollector(extpy) + def setup(self): + # stick py.test raise in module globals + self.obj.raises = py.test.raises + super(Module, self).setup() + # if hasattr(mod, 'objspacename'): + # mod.space = getttestobjspace(mod.objspacename) + + def join(self, name): + obj = getattr(self.obj, name) + if isclass(obj): + if name.startswith('AppTest'): + return AppClassCollector(name, parent=self) + else: + return IntClassCollector(name, parent=self) + elif hasattr(obj, 'func_code'): + if name.startswith('app_test_'): + assert not obj.func_code.co_flags & 32, \ + "generator app level functions? you must be joking" + return AppTestFunction(name, parent=self) + elif obj.func_code.co_flags & 32: # generator function + return self.Generator(name, parent=self) + else: + return IntTestFunction(name, parent=self) def gettestobjspace(name=None): space = getobjspace(name) @@ -88,33 +117,21 @@ return space -class PyPyItem(py.test.Item): +class PyPyTestFunction(py.test.Function): # All PyPy test items catch and display OperationErrors specially. - def setup_module(self, mod): - # if hasattr(mod, 'objspacename'): - # mod.space = getttestobjspace(mod.objspacename) - # stick py.test raise in module globals - mod.raises = py.test.raises - super(PyPyItem, self).setup_module(mod) - - def setup_class(self, cls): - name = getattr(cls, 'objspacename', None) - if name is None: - m = __import__(cls.__module__, {}, {}, ["objspacename"]) - name = getattr(m, 'objspacename', None) - cls.space = gettestobjspace(name) - super(PyPyItem, self).setup_class(cls) - def execute_appex(self, space, target, *args): try: target(*args) except OperationError, e: if e.match(space, space.w_KeyboardInterrupt): raise KeyboardInterrupt - raise self.Failed(excinfo=pytestsupport.AppExceptionInfo(space, e)) + appexcinfo = pytestsupport.AppExceptionInfo(space, e) + if appexcinfo.traceback: + raise self.Failed(excinfo=pytestsupport.AppExceptionInfo(space, e)) + raise -class IntTestFunction(PyPyItem): +class IntTestFunction(PyPyTestFunction): def execute(self, target, *args): co = target.func_code if 'space' in co.co_varnames[:co.co_argcount]: @@ -124,29 +141,37 @@ else: target(*args) -class IntTestMethod(PyPyItem): - def execute(self, target, *args): - target(*args) - -class AppTestFunction(PyPyItem): +class AppTestFunction(PyPyTestFunction): def execute(self, target, *args): assert not args name = target.func_globals.get('objspacename', None) space = gettestobjspace(name) func = app2interp_temp(target) + print "executing", func self.execute_appex(space, func, space) - -class AppTestMethod(PyPyItem): +class AppTestMethod(PyPyTestFunction): def execute(self, target, *args): assert not args space = target.im_self.space func = app2interp_temp(target.im_func) self.execute_appex(space, func, space, space.w_None) -class AppClassCollector(py.test.collect.Class): - Item = AppTestMethod - class IntClassCollector(py.test.collect.Class): - Item = IntTestMethod - + Function = IntTestFunction + + def setup(self): + cls = self.obj + name = getattr(cls, 'objspacename', None) + if name is None: + m = __import__(cls.__module__, {}, {}, ["objspacename"]) + name = getattr(m, 'objspacename', None) + cls.space = gettestobjspace(name) + super(IntClassCollector, self).setup() + +class AppClassInstance(py.test.collect.Instance): + Function = AppTestMethod + +class AppClassCollector(IntClassCollector): + Instance = AppClassInstance + Modified: pypy/dist/pypy/lib/test2/conftest.py ============================================================================== --- pypy/dist/pypy/lib/test2/conftest.py (original) +++ pypy/dist/pypy/lib/test2/conftest.py Sat Apr 16 22:02:01 2005 @@ -2,7 +2,7 @@ import sys import py import pypy -from pypy.conftest import gettestobjspace +from pypy.conftest import gettestobjspace, option ModuleType = type(sys) @@ -19,19 +19,16 @@ libtest = py.path.local(pypy.__file__).dirpath() libtest = libtest.dirpath('lib-python-2.3.4', 'test') -assert libtest.check(dir=1) -#conftest = make_cpy_module('234conftest', libtest.join('conftest.py')) -conftest = libtest.join('conftest.py').getpymodule() -conftest.__file__ = str(conftest.__file__) # keep out the py's importhook - -def Module(fspath): - if py.test.config.option.allpypy: - return conftest.Module(fspath) - return UnittestModuleOnCPython(fspath) +conftest = libtest.join('conftest.py').pyimport() + +def Module(fspath, parent=None): + if option.allpypy: + return conftest.Module(fspath, parent=parent) + return UnittestModuleOnCPython(fspath, parent=parent) class Directory(conftest.Directory): - def __iter__(self): - return iter([]) + def run(self): + return [] class UnittestModuleOnCPython(py.test.collect.Module): def _prepare(self): @@ -39,19 +36,19 @@ sys.modules['unittest'] = mod mod.raises = py.test.raises self.TestCase = mod.TestCase - - def __iter__(self): + + def run(self): self._prepare() try: iterable = self._cache except AttributeError: iterable = self._cache = list(self._iter()) - for x in iterable: - yield x + return list(iterable) def _iter(self): name = self.fspath.purebasename mod = make_cpy_module(name, self.fspath) + print mod tlist = conftest.app_list_testmethods(mod, self.TestCase, []) for (setup, teardown, methods) in tlist: for name, method in methods: Modified: pypy/dist/pypy/lib/test2/support_tests.py ============================================================================== --- pypy/dist/pypy/lib/test2/support_tests.py (original) +++ pypy/dist/pypy/lib/test2/support_tests.py Sat Apr 16 22:02:01 2005 @@ -12,7 +12,7 @@ tmpdir = sys.pypy_getudir() except AttributeError: import py - tmpdir = str(py.test.config.tmpdir) + tmpdir = str(py.test.ensuretemp('support_tests_tempdir')) TESTFN = os.path.join(tmpdir, '@test') class Error(Exception): Modified: pypy/dist/pypy/tool/pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/pytestsupport.py (original) +++ pypy/dist/pypy/tool/pytestsupport.py Sat Apr 16 22:02:01 2005 @@ -43,6 +43,21 @@ self.operr = operr self.traceback = AppTraceback(self.operr.application_traceback) + def exconly(self): + return '(application-level) ' + self.operr.errorstr(self.space) + + def errisinstance(self, exc): + clsname = exc.__name__ + try: + w_exc = getattr(self.space, 'w_' + clsname) + except KeyboardInterrupt: + raise + except: + pass + else: + return self.operr.match(self.space, w_exc) + return False + def __str__(self): return '(application-level) ' + self.operr.errorstr(self.space) @@ -99,7 +114,8 @@ source = str(source).strip() except py.error.ENOENT: source = None - if source and not py.test.config.option.nomagic: + from pypy import conftest + if source and not conftest.option.nomagic: msg = exprinfo.interpret(source, runner, should_fail=True) space.setattr(w_self, space.wrap('args'), space.newtuple([space.wrap(msg)])) Modified: pypy/dist/pypy/tool/test/test_pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/test/test_pytestsupport.py (original) +++ pypy/dist/pypy/tool/test/test_pytestsupport.py Sat Apr 16 22:02:01 2005 @@ -5,7 +5,7 @@ from pypy.interpreter.argument import Arguments from pypy.interpreter.pycode import PyCode from pypy.interpreter.pyframe import PyFrame -from pypy.tool.pytestsupport import AppFrame, build_pytest_assertion +from pypy.tool.pytestsupport import AppFrame, build_pytest_assertion, AppExceptionInfo def somefunc(x): @@ -53,4 +53,18 @@ assert e.msg == "Failed" +def test_appexecinfo(space): + try: + space.appexec([], "(): raise ValueError") + except OperationError, e: + appex = AppExceptionInfo(space, e) + else: + py.test.fail("did not raise!") + assert appex.exconly().find('ValueError') != -1 + assert appex.errisinstance(ValueError) + assert not appex.errisinstance(RuntimeError) + class A: + pass + assert not appex.errisinstance(A) + Modified: pypy/dist/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/dist/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/dist/pypy/translator/test/test_pyrextrans.py Sat Apr 16 22:02:01 2005 @@ -7,6 +7,9 @@ from pypy.translator.tool.buildpyxmodule import skip_missing_compiler from pypy.translator.translator import Translator +from pypy import conftest +#from pypy.conftest import option + from pypy.translator.test import snippet # XXX this tries to make compiling faster for full-scale testing @@ -21,7 +24,7 @@ try: func = func.im_func except AttributeError: pass - dot = py.test.config.option.verbose >0 and 1 or 0 + dot = conftest.option.verbose > 0 and 1 or 0 options = { 'simplify' : 1, 'dot' : dot, From hpk at codespeak.net Sat Apr 16 22:11:46 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 16 Apr 2005 22:11:46 +0200 (CEST) Subject: [pypy-svn] r10748 - pypy/dist/pypy/documentation Message-ID: <20050416201146.C486127B5E@code1.codespeak.net> Author: hpk Date: Sat Apr 16 22:11:46 2005 New Revision: 10748 Modified: pypy/dist/pypy/documentation/rest_test.py Log: fix related to incomplete merge in this file Modified: pypy/dist/pypy/documentation/rest_test.py ============================================================================== --- pypy/dist/pypy/documentation/rest_test.py (original) +++ pypy/dist/pypy/documentation/rest_test.py Sat Apr 16 22:11:46 2005 @@ -2,9 +2,9 @@ import py import pypy +from py.__impl__.misc import rest pydir = py.magic.autopath(vars(py)).dirpath() -rest = pydir.join('bin', 'py.rest').getpymodule() docdir = py.path.svnwc(pypy.__file__).dirpath('documentation') From hpk at codespeak.net Sat Apr 16 22:50:36 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 16 Apr 2005 22:50:36 +0200 (CEST) Subject: [pypy-svn] r10751 - in pypy/dist/pypy/tool: . test Message-ID: <20050416205036.547C527B5E@code1.codespeak.net> Author: hpk Date: Sat Apr 16 22:50:36 2005 New Revision: 10751 Modified: pypy/dist/pypy/tool/pytestsupport.py pypy/dist/pypy/tool/test/test_pytestsupport.py Log: fix Modified: pypy/dist/pypy/tool/pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/pytestsupport.py (original) +++ pypy/dist/pypy/tool/pytestsupport.py Sat Apr 16 22:50:36 2005 @@ -43,7 +43,7 @@ self.operr = operr self.traceback = AppTraceback(self.operr.application_traceback) - def exconly(self): + def exconly(self, tryshort=True): return '(application-level) ' + self.operr.errorstr(self.space) def errisinstance(self, exc): Modified: pypy/dist/pypy/tool/test/test_pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/test/test_pytestsupport.py (original) +++ pypy/dist/pypy/tool/test/test_pytestsupport.py Sat Apr 16 22:50:36 2005 @@ -61,6 +61,7 @@ else: py.test.fail("did not raise!") assert appex.exconly().find('ValueError') != -1 + assert appex.exconly(tryshort=True).find('ValueError') != -1 assert appex.errisinstance(ValueError) assert not appex.errisinstance(RuntimeError) class A: From arigo at codespeak.net Sat Apr 16 22:51:52 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 16 Apr 2005 22:51:52 +0200 (CEST) Subject: [pypy-svn] r10752 - pypy/dist/pypy/tool Message-ID: <20050416205152.35EE227B5E@code1.codespeak.net> Author: arigo Date: Sat Apr 16 22:51:52 2005 New Revision: 10752 Modified: pypy/dist/pypy/tool/pytestsupport.py Log: Old code still using space.w_builtin. Modified: pypy/dist/pypy/tool/pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/pytestsupport.py (original) +++ pypy/dist/pypy/tool/pytestsupport.py Sat Apr 16 22:51:52 2005 @@ -155,10 +155,10 @@ for key, w_value in kwds_w.items(): space.setitem(w_locals, space.wrap(key), w_value) try: - space.call_method(space.w_builtin, 'eval', - space.wrap(str(source)), - frame.w_globals, - w_locals) + space.call_function(space.builtin.get('eval'), + space.wrap(str(source)), + frame.w_globals, + w_locals) except OperationError, e: if e.match(space, w_ExpectedException): return space.sys.call('exc_info') From arigo at codespeak.net Sat Apr 16 23:02:01 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 16 Apr 2005 23:02:01 +0200 (CEST) Subject: [pypy-svn] r10754 - pypy/dist/pypy/tool Message-ID: <20050416210201.D80B527B5E@code1.codespeak.net> Author: arigo Date: Sat Apr 16 23:02:01 2005 New Revision: 10754 Modified: pypy/dist/pypy/tool/pytestsupport.py Log: It wasn't quite right still to use eval(). raises() should accept any statement(s). On our daily "did you know?" Python list, here is one: if you compile any possibly large source with compile(_, _, 'exec'), then you get a code object that eval() is just fine to execute. (It just returns None.) Modified: pypy/dist/pypy/tool/pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/pytestsupport.py (original) +++ pypy/dist/pypy/tool/pytestsupport.py Sat Apr 16 23:02:01 2005 @@ -155,10 +155,7 @@ for key, w_value in kwds_w.items(): space.setitem(w_locals, space.wrap(key), w_value) try: - space.call_function(space.builtin.get('eval'), - space.wrap(str(source)), - frame.w_globals, - w_locals) + space.exec_(str(source), frame.w_globals, w_locals) except OperationError, e: if e.match(space, w_ExpectedException): return space.sys.call('exc_info') From cfbolz at codespeak.net Sun Apr 17 00:36:17 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sun, 17 Apr 2005 00:36:17 +0200 (CEST) Subject: [pypy-svn] r10756 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050416223617.71D6427B5E@code1.codespeak.net> Author: cfbolz Date: Sun Apr 17 00:36:17 2005 New Revision: 10756 Modified: pypy/dist/pypy/objspace/std/boolobject.py pypy/dist/pypy/objspace/std/test/test_boolobject.py Log: Added and_, or_ and xor implementation to bool. Until now True | True returned 1. Modified: pypy/dist/pypy/objspace/std/boolobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/boolobject.py (original) +++ pypy/dist/pypy/objspace/std/boolobject.py Sun Apr 17 00:36:17 2005 @@ -36,6 +36,15 @@ else: return space.wrap('False') +def and__Bool_Bool(space, w_bool1, w_bool2): + return space.newbool(w_bool1.boolval & w_bool2.boolval) + +def or__Bool_Bool(space, w_bool1, w_bool2): + return space.newbool(w_bool1.boolval | w_bool2.boolval) + +def xor__Bool_Bool(space, w_bool1, w_bool2): + return space.newbool(w_bool1.boolval ^ w_bool2.boolval) + str__Bool = repr__Bool register_all(vars()) Modified: pypy/dist/pypy/objspace/std/test/test_boolobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_boolobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_boolobject.py Sun Apr 17 00:36:17 2005 @@ -31,3 +31,12 @@ assert "False" == str(False) assert "True" == repr(True) assert "False" == repr(False) + + def test_bool_ops(self): + assert True + True == 2 + assert False | False is False + assert True | False is True + assert True & True is True + assert True ^ True is False + assert False ^ False is False + assert True ^ False is True \ No newline at end of file From hpk at codespeak.net Sun Apr 17 00:40:29 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 00:40:29 +0200 (CEST) Subject: [pypy-svn] r10757 - pypy/dist/pypy/lib/test2 Message-ID: <20050416224029.B1F2727B61@code1.codespeak.net> Author: hpk Date: Sun Apr 17 00:40:29 2005 New Revision: 10757 Modified: pypy/dist/pypy/lib/test2/conftest.py Log: - intermediate - get rid of the conftest import for now (it causes problems on non-python2.3 versions, thanks samuele for finding it out) - lib/test2 is currenty not testable via py.test (but wasn't really before ...) Modified: pypy/dist/pypy/lib/test2/conftest.py ============================================================================== --- pypy/dist/pypy/lib/test2/conftest.py (original) +++ pypy/dist/pypy/lib/test2/conftest.py Sun Apr 17 00:40:29 2005 @@ -19,14 +19,14 @@ libtest = py.path.local(pypy.__file__).dirpath() libtest = libtest.dirpath('lib-python-2.3.4', 'test') -conftest = libtest.join('conftest.py').pyimport() +#conftest = libtest.join('conftest.py').pyimport() def Module(fspath, parent=None): if option.allpypy: return conftest.Module(fspath, parent=parent) return UnittestModuleOnCPython(fspath, parent=parent) -class Directory(conftest.Directory): +class Directory(py.test.collect.Directory): def run(self): return [] From pedronis at codespeak.net Sun Apr 17 02:07:50 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 17 Apr 2005 02:07:50 +0200 (CEST) Subject: [pypy-svn] r10758 - in pypy/dist/pypy/module: builtin test test/impsubdir/pkg/pkg2 Message-ID: <20050417000750.5554D27B5E@code1.codespeak.net> Author: pedronis Date: Sun Apr 17 02:07:50 2005 New Revision: 10758 Added: pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/ pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/__init__.py (contents, props changed) pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/a.py (contents, props changed) pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/b.py (contents, props changed) Modified: pypy/dist/pypy/module/builtin/importing.py pypy/dist/pypy/module/test/test_import.py Log: fix failure behavior of import in case a package __path__ has been deleted; with test Modified: pypy/dist/pypy/module/builtin/importing.py ============================================================================== --- pypy/dist/pypy/module/builtin/importing.py (original) +++ pypy/dist/pypy/module/builtin/importing.py Sun Apr 17 02:07:50 2005 @@ -156,19 +156,21 @@ w_mod = space.sys.getmodule(modulename) if w_mod is not None: return w_mod - for path in space.unpackiterable(w_path): - dir = os.path.join(space.str_w(path), partname) - if os.path.isdir(dir): - f = os.path.join(dir,'__init__.py') + + if w_path is not None: + for path in space.unpackiterable(w_path): + dir = os.path.join(space.str_w(path), partname) + if os.path.isdir(dir): + f = os.path.join(dir,'__init__.py') + w_mod = try_import_mod(space, w_modulename, f, w_parent, + w(partname), pkgdir=dir) + if w_mod is not None: + return w_mod + f = os.path.join(space.str_w(path), partname + '.py') w_mod = try_import_mod(space, w_modulename, f, w_parent, - w(partname), pkgdir=dir) + w(partname)) if w_mod is not None: return w_mod - f = os.path.join(space.str_w(path), partname + '.py') - w_mod = try_import_mod(space, w_modulename, f, w_parent, - w(partname)) - if w_mod is not None: - return w_mod if tentative: return None Added: pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/__init__.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/__init__.py Sun Apr 17 02:07:50 2005 @@ -0,0 +1 @@ +# package Added: pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/a.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/a.py Sun Apr 17 02:07:50 2005 @@ -0,0 +1 @@ +# a.py Added: pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/b.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/b.py Sun Apr 17 02:07:50 2005 @@ -0,0 +1 @@ +# b.py Modified: pypy/dist/pypy/module/test/test_import.py ============================================================================== --- pypy/dist/pypy/module/test/test_import.py (original) +++ pypy/dist/pypy/module/test/test_import.py Sun Apr 17 02:07:50 2005 @@ -144,3 +144,11 @@ def test_substituting_import(self): from pkg_substituting import mod assert mod.__name__ =='pkg_substituting.mod' + + def test_proper_failure_on_killed__path__(self): + import pkg.pkg2.a + del pkg.pkg2.__path__ + def imp_b(): + import pkg.pkg2.b + raises(ImportError,imp_b) + From hpk at codespeak.net Sun Apr 17 11:59:41 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 11:59:41 +0200 (CEST) Subject: [pypy-svn] r10759 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050417095941.639F927B62@code1.codespeak.net> Author: hpk Date: Sun Apr 17 11:59:40 2005 New Revision: 10759 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: - sort tests when running from plain directory - fix initialization of Modules Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Sun Apr 17 11:59:40 2005 @@ -29,6 +29,7 @@ w_globals = mod.w_dict w_filename = space.wrap(str(filepath)) w_execfile = space.builtin.get('execfile') + print "calling execfile", w_filename space.call_function(w_execfile, w_filename, w_globals, w_globals) w_mod = space.wrap(mod) w_modules = space.sys.get('modules') @@ -46,7 +47,9 @@ class RegrDirectory(py.test.collect.Directory): def run(self): l = [] - for (name, (enabled, typ)) in testmap.items(): + items = testmap.items() + items.sort() + for (name, (enabled, typ)) in items: if enabled: l.append(name) return l @@ -55,7 +58,7 @@ if name not in testmap: raise NameError(name) enabled, typ = testmap[name] - return typ(name, parent=self) + return typ(mydir.join(name), parent=self) Directory = RegrDirectory @@ -154,7 +157,7 @@ class UTModuleMainTest(OpErrorModule): def _prepare(self): - if hasattr(self, 'space'): + if hasattr(self, '_testcases'): return self.space = space = getmyspace() def f(): From arigo at codespeak.net Sun Apr 17 13:53:59 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 17 Apr 2005 13:53:59 +0200 (CEST) Subject: [pypy-svn] r10771 - pypy/dist/pypy/translator/llvm Message-ID: <20050417115359.3C27E27B5F@code1.codespeak.net> Author: arigo Date: Sun Apr 17 13:53:59 2005 New Revision: 10771 Modified: pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/typerepr.py Log: Updated genllvm to the changes in annotation.model.SomeList. Modified: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/seqrepr.py (original) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Sun Apr 17 13:53:59 2005 @@ -77,19 +77,19 @@ l_listtypes = {} def get(obj, gen): if obj.__class__ is annmodel.SomeList: - if (obj.s_item.__class__, gen) in ListTypeRepr.l_listtypes: - return ListTypeRepr.l_listtypes[(obj.s_item.__class__, gen)] + if (listitem(obj).__class__, gen) in ListTypeRepr.l_listtypes: + return ListTypeRepr.l_listtypes[(listitem(obj).__class__, gen)] l_repr = ListTypeRepr(obj, gen) - ListTypeRepr.l_listtypes[(obj.s_item.__class__, gen)] = l_repr + ListTypeRepr.l_listtypes[(listitem(obj).__class__, gen)] = l_repr return l_repr return None get = staticmethod(get) def __init__(self, obj, gen): if debug: - print "ListTypeRepr: %s, %s" % (obj, obj.s_item) + print "ListTypeRepr: %s, %s" % (obj, listitem(obj)) self.gen = gen - self.l_itemtype = gen.get_repr(obj.s_item) + self.l_itemtype = gen.get_repr(listitem(obj)) self.dependencies = sets.Set([self.l_itemtype]) itemtype = self.l_itemtype.typename() self.name = "%%std.list.%s" % itemtype.strip("%").replace("*", "") @@ -231,3 +231,8 @@ raise CompileError, "Invalid arguments to getitem" lblock.getelementptr(l_tmp, l_args[0], [0, l_unsigned]) lblock.load(l_target, l_tmp) + + +def listitem(s_list): + assert isinstance(s_list, annmodel.SomeList) + return s_list.listdef.listitem.s_value Modified: pypy/dist/pypy/translator/llvm/typerepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/typerepr.py (original) +++ pypy/dist/pypy/translator/llvm/typerepr.py Sun Apr 17 13:53:59 2005 @@ -6,6 +6,7 @@ from pypy.objspace.flow.model import Variable, Constant from pypy.objspace.flow.model import last_exception, last_exc_value from pypy.annotation import model as annmodel +from pypy.annotation.listdef import ListDef from pypy.translator.llvm.representation import debug, LLVMRepr, CompileError from pypy.translator.llvm.representation import LLVM_SIMPLE_TYPES @@ -71,7 +72,7 @@ def setup(self): self.l_charlist = self.gen.get_repr( - annmodel.SomeList(None, annmodel.SomeChar())) + annmodel.SomeList(ListDef(None, annmodel.SomeChar()))) self.dependencies.add(self.l_charlist) self.name = self.l_charlist.typename_wo_pointer() From hpk at codespeak.net Sun Apr 17 14:51:26 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 14:51:26 +0200 (CEST) Subject: [pypy-svn] r10774 - pypy/dist/pypy/documentation Message-ID: <20050417125126.8B3F627B5F@code1.codespeak.net> Author: hpk Date: Sun Apr 17 14:51:26 2005 New Revision: 10774 Added: pypy/dist/pypy/documentation/newstructure Log: armin and me want to reorganize the documentation into fewer more consistent text files. Added: pypy/dist/pypy/documentation/newstructure ============================================================================== --- (empty file) +++ pypy/dist/pypy/documentation/newstructure Sun Apr 17 14:51:26 2005 @@ -0,0 +1,48 @@ + +getting_started.txt + howtopypy.txt + howtosvn.txt + optionaltool.txt + checking_ReST.txt + +revreport + cmodules.txt # move to revreport somehow? + developers.txt + +index.txt + # references all the major chapters + +architecture.txt + +interpreter.txt + the execution loop + exceptions + modules + functions + +future.txt + newrepolayout.txt + goals.txt + +coding-style.txt + restrictedpy.txt + coding-style.txt + testdesign.txt + +objspace.txt + objspaceinterface.txt + wrapping.txt + abstractobjspace.txt + controlflow.txt + annotateobjspace.txt + stdobjspace.txt + multimethod.txt + +translation.txt + annotation.txt + basicblock.asc + backends + genc + typer + llvm + From hpk at codespeak.net Sun Apr 17 17:45:13 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 17:45:13 +0200 (CEST) Subject: [pypy-svn] r10778 - pypy/dist/pypy/documentation Message-ID: <20050417154513.71DD627B47@code1.codespeak.net> Author: hpk Date: Sun Apr 17 17:45:13 2005 New Revision: 10778 Added: pypy/dist/pypy/documentation/conftest.py Removed: pypy/dist/pypy/documentation/rest_test.py Log: borrow the brand new documentation-conftest settings from the py lib. (also allows to have a '-R' option for checking remote links instead of just local ones) Added: pypy/dist/pypy/documentation/conftest.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/documentation/conftest.py Sun Apr 17 17:45:13 2005 @@ -0,0 +1,3 @@ + +from py.__impl__.documentation.conftest import * + Deleted: /pypy/dist/pypy/documentation/rest_test.py ============================================================================== --- /pypy/dist/pypy/documentation/rest_test.py Sun Apr 17 17:45:13 2005 +++ (empty file) @@ -1,57 +0,0 @@ -from __future__ import generators - -import py -import pypy -from py.__impl__.misc import rest - -pydir = py.magic.autopath(vars(py)).dirpath() - -docdir = py.path.svnwc(pypy.__file__).dirpath('documentation') - -checkremote = False - -def restcheck(path): - try: - import docutils - except ImportError: - py.test.skip("docutils not importable") - rest.process(path) - check_htmllinks(path) - #assert not out - -def test_rest_files(): - for x in docdir.listdir('*.txt'): - yield restcheck, x - -def check_htmllinks(path): - ddir = docdir.localpath - - for lineno, line in py.builtin.enumerate(path.readlines()): - line = line.strip() - if line.startswith('.. _'): - l = line.split(':', 1) - if len(l) != 2: - continue - tryfn = l[1].strip() - if tryfn.startswith('http:'): - if not checkremote: - continue - try: - print "trying remote", tryfn - py.std.urllib2.urlopen(tryfn) - except py.std.urllib2.HTTPError: - py.test.fail("remote reference error %r in %s:%d" %( - tryfn, path.basename, lineno+1)) - elif tryfn.endswith('.html'): - # assume it should be a file - fn = ddir.join(tryfn) - fn = fn.new(ext='.txt') - if not fn.check(file=1): - py.test.fail("reference error %r in %s:%d" %( - tryfn, path.basename, lineno+1)) - else: - # yes, what else? - pass - - - From hpk at codespeak.net Sun Apr 17 19:05:08 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 19:05:08 +0200 (CEST) Subject: [pypy-svn] r10780 - pypy/dist/pypy/documentation Message-ID: <20050417170508.295FE27B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 19:05:07 2005 New Revision: 10780 Added: pypy/dist/pypy/documentation/redirections pypy/dist/pypy/documentation/test_redirections.py Log: helper for the web site: we list redirections of documents here in the 'redirections' file containing a dictionary. Added: pypy/dist/pypy/documentation/redirections ============================================================================== --- (empty file) +++ pypy/dist/pypy/documentation/redirections Sun Apr 17 19:05:07 2005 @@ -0,0 +1,5 @@ +# please make sure this is evaluatable +{ + 'aaa.html': 'architecture.html', +} + Added: pypy/dist/pypy/documentation/test_redirections.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/documentation/test_redirections.py Sun Apr 17 19:05:07 2005 @@ -0,0 +1,15 @@ + +import py +redir = py.magic.autopath().dirpath('redirections') + +def checkexist(path): + assert path.new(ext='.txt').check(file=1) + +def test_eval(): + d = eval(redir.read()) + return d + +def test_redirections(): + d = test_eval() + for newname in d.values(): + yield checkexist, redir.dirpath(newname) From hpk at codespeak.net Sun Apr 17 19:09:04 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 19:09:04 +0200 (CEST) Subject: [pypy-svn] r10781 - pypy/dist/pypy/documentation Message-ID: <20050417170904.7E49927B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 19:09:04 2005 New Revision: 10781 Removed: pypy/dist/pypy/documentation/restrictedpy.txt pypy/dist/pypy/documentation/testdesign.txt Modified: pypy/dist/pypy/documentation/annotateobjspace.txt pypy/dist/pypy/documentation/coding-style.txt pypy/dist/pypy/documentation/redirections Log: first steps refactoring according to 'newstructure' restrictedpy and testdesign are merged with coding-style.txt Modified: pypy/dist/pypy/documentation/annotateobjspace.txt ============================================================================== --- pypy/dist/pypy/documentation/annotateobjspace.txt (original) +++ pypy/dist/pypy/documentation/annotateobjspace.txt Sun Apr 17 19:09:04 2005 @@ -23,4 +23,4 @@ ------------------------------ .. _StandardObjectSpace: stdobjspace.html -.. _RestrictedPython: restrictedpy.html +.. _RestrictedPython: coding-style.html Modified: pypy/dist/pypy/documentation/coding-style.txt ============================================================================== --- pypy/dist/pypy/documentation/coding-style.txt (original) +++ pypy/dist/pypy/documentation/coding-style.txt Sun Apr 17 19:09:04 2005 @@ -1,10 +1,251 @@ ===================================== -Coding Style +PyPy Coding Style ===================================== +.. contents:: +.. sectnum:: -Naming and environment ------------------------------ +Restricted Python +================== + +We are writing a Python interpreter in Python, using Python's well known ability +to step behind the algorithmic problems as language. At first glance, one might +think this achieves nothing but a better understanding for everybody how the +interpreter works. This alone would make it worth doing, but we have much larger +goals. + + +CPython vs. PyPy +------------------- + +Compared to the CPython implementation, Python takes the role of the C Code. So +actually, we describe something by Python, which has been coded in C already, +with all the restrictions that are implied by C. We are not trying to make the +structures of the CPython interpreter more flexible by rewriting things in C, +but we want to use Python to give an alternative description of the interpreter. + +The clear advantage is that this description is probably shorter and simpler to +read, and many implementation details vanish. The drawback of this approach is +that this interpreter will be unbearably slow. + +To get to a useful interpreter again, we need to apply some mappings to the +implementation, later. One rather straight-forward is to do a whole program +analysis of the PyPy interpreter and create a C source, again. There are many +other ways, but let's stick with the easiest approach, first. + +In order to make a C code generator simple, we restrict ourselves to a subset of +the Python language, and we adhere to some rules, which make code generation +obvious and easy. + + +Restricted Python is Runtime Python +------------------------------------- + +Restricted Python describes a runnable Python interpreter implementation. This +is a quite static object that can be suitably described by RPython. But the +restrictions do not apply during the startup phase. + + +PyPy Bootstrap +------------------- + +When the PyPy interpreter is started as a CPython program, it can use all of +CPython for a while, until it reaches runtime. That is, all executable code will +be executed using the full power of Python. + +An example can be found in the implementation, which is quite elegant: For the +definition of all the opcodes of the Python interpreter, the module dis is +imported and used. This saves us from adding extra modules to PyPy. The import +code is run at startup time, and we are allowed to use the CPython builtin +import function. + +When the startup code is done, all resulting objects, functions, code blocks +etc. must adhere to the runtime restrictions. All initialized modules are +written out in a persistent manner. Our current idea is to emit a huge C source +file which contains everything created so far. During this process, a whole +program analysis is performed, which makes use of the restrictions defined in +RPython. This enables the code generator to emit efficient replacements for pure +integer objects, for instance. + + +RPython Definition +-------------------- + +It might make sense to define a sub-language of Python called RPython, with the +restrictions depicted below. This is an evolving topic, and we're just +collecting things which come up during trying to code the interpreter, so this +is no language at all, but an arbitrary set of rules, which are about to be +changed all day. + + +Object restrictions +------------------------- + +We are using + +**variables** + + the same variable in the same context can receive values of different types, + at a possible overhead cost. For example, a variable that can contain a + wrapped object or None is efficiently implemented as a PyObject* pointer that + can be NULL, but a variable that can contain either an integer or a float must + be implemented as a union with a type tag in C. + +**constants** + + all module globals are considered constants. + +**integer, float, string, boolean** + + avoid string methods and complex operations like slicing with a step + +**tuples** + + no variable-length tuples; use them to store or return pairs or n-tuples of + values + +**lists** + + lists are used as an allocated array; list.append() does naive resizing, so as + far as possible use list comprehensions (see below). list.extend() or the += + operator are allowed and efficient. Unless there is really a use case for it, + repetition is limited to initialization purposes: '[single_value] * length'. + +**dicts** + + dicts with string keys only (preferrably the kind of strings that are usually + interned in CPython, i.e. short strings that look like identifiers). The + implementation could safely decide that all dict keys should be interned. + +**control structures** + + all allowed + +**list comprehensions** + + may be used to create allocated, initialized array. the array size must be + computable in advance, which implies that we don't allow an if clause. + +**functions** + ++ statically called functions may use defaults and a variable number of + arguments (which may be passed as a list instead of a tuple, so write code that + does not depend on it being a tuple). + ++ dynamic dispatch enforces use of very simple signatures, equal for all + functions to be called in that context. At the moment, this occurs in the opcode + dispatch, only. + +**builtin functions** + + A few builtin functions will be used, while this set is not defined + completely, yet. Some builtin functions are special forms: + +**range** + + does not create an array. It is only allowed in for loops. The step argument + must be a constant. + +**len** + ++ may be used with basic types that have a length. But len is a special form + that is recognized by the compiler. + ++ If a certain structure is never touched by len, the compiler might save the + length field from the underlying structure. + +``int, float, ord, chr``... are available as simple conversion functions. + +``int, float, str``... have a special meaning as a type inside of isinstance only. + +**classes** + ++ methods and other class attributes do not change after startup ++ inheritance is supported ++ classes are first-class objects too + +**exceptions** + ++ fully supported ++ see below for restrictions on exceptions raised by built-in operations + +**objects** + + wrapped objects are borrowed from the object space. Just like in CPython, code + that needs e.g. a dictionary can use a wrapped dict and the object space + operations on it. + +This layout makes the number of types to take care about quite limited. + + +Example: Integer Types +------------------------- + +While implementing the integer type, I (Chris) stumbled over the problem, that +integers are quite in flux in CPython right now. Depending on the version, +integers either raise an overflow exception or mutate into longs on overflow. +Also, shifting right now truncates (up to 2.3) but is going to extend to longs +as well. In order to enable us to run the restricted Python stuff in CPython, I +needed to use a derived class r_int(int), which always behaves the same: Never +leaving its domain, but always staying an integer. + +The r_int type is implemented in a pervasive way: Every operation that involves +an r_int creates an r_int as the result. Therefore, the implementation is not +cluttered with special type casts. Just the initial value of an emulated +integer's intval field is initialized by obj.intval = r_int(val) . This way, the +r_int type propagates itself through all operations without extra effort of the +programmer. + +This concept looks promising, and since we will need unsigned integers which do +not overflow as well, I also created r_uint. It is always a word-sized unsigned +integer and never overflows. This will be a building block for things like +computing hash values, where wrap-around effects are intended and should be +easily coded without lots of explicit mask shuffling. + +Now I think to extend this even more and build a full set of primitive types, +which are intended to + ++ define the semantics of the primitive type ++ give a working implementation for unrestricted Python + +These primitive types can later easily be augmented with methods to emit C code instead of executing. I guess this would be implemented in an extra ObjectSpace. + + +Exception rules +--------------------- + +Exceptions are by default not generated for simple cases.:: + + #!/usr/bin/python + + x = 5 + x = x + 1 # this code is not checked for overflow + + try: + x = x + y + except OverflowError: + # implement using longs + + +Code with no exception handlers does not raise exceptions. By supplying an +exception handler, you ask for error checking. Without, you assure the system +that the operation cannot overflow. + +Exceptions explicitly raised will always be generated. + +PyPy is debuggable on top of CPython +------------------------------------ + +PyPy has the advantage that it is runnable on standard +CPython. That means, we can run all of PyPy with all exception +handling enabled, so we might catch cases where we failed to +adhere to our implicit assertions. + +Naming and development conventions +================================== + +Naming +------ - directories/modules/namespaces are always **lowercase** @@ -22,6 +263,17 @@ - it's appreciated if you manage to name files in a directory so that tab-completion on the shell level is as easy as possible. +- objectspace classes are always spelled "ObjSpace". e.g. + + - StdObjSpace + - FlowObjSpace + +- at interpreter level and in ObjSpace all boxed values + have a leading ``w_`` to indicate "wrapped values". This + includes w_self. Don't use ``w_`` in application level + python only code. + + Committing ---------- @@ -33,18 +285,42 @@ that the property 'svn:eol-style' is set to native which allows checkin/checkout in native line-ending format. -Object Spaces ---------------- -- objectspace classes are always spelled "ObjSpace". e.g. +Test Design +============= - - StdObjSpace - - FlowObjSpace +Our tests are based on the new `py.test`_ tool which lets you write +unittests without boilerplate. All tests of modules +in a directory usually reside in a subdirectory **test**. There are +basically two types of unit tests: -- at interpreter level and in ObjSpace all boxed values - have a leading ``w_`` to indicate "wrapped values". This - includes w_self. Don't use ``w_`` in application level - python only code. +- **Interpreter Level tests**. They run at the same level as PyPy's + interpreter. + +- **Application Level tests**. They run at application level which means + that they look like straight python code but they are interpreted by PyPy. + +Both types of tests need an objectspace they can run with (the interpreter +dispatches operations on objects to an objectspace). If you run a test you +can usually give the '-o' switch to select an object space. E.g. '-o thunk' +will select the thunk object space. The default is the "Standard Object Space" +which aims to implement unmodified Python semantics. + +.. _`py.test`: http://codespeak.net/py/current/doc/test.html + +Writing a test +-------------- + +Currently the best reference is to go to some test files and look how they are done. + +Command line tool test_all +-------------------------- + +You can run almost all of PyPy's tests by invoking:: + + python test_all.py + +For switches to modify test execution invoke "python test_all.py -h". Test conventions ---------------- @@ -60,7 +336,3 @@ - each test directory needs a copy of pypy/tool/autopath.py which upon import will make sure that sys.path contains the directory where 'pypy' is in. - -- see some more information about tests at the test-design_ document. - -.. _test-design: testdesign.html Modified: pypy/dist/pypy/documentation/redirections ============================================================================== --- pypy/dist/pypy/documentation/redirections (original) +++ pypy/dist/pypy/documentation/redirections Sun Apr 17 19:09:04 2005 @@ -1,5 +1,6 @@ # please make sure this is evaluatable { - 'aaa.html': 'architecture.html', + 'restrictedpy.html': 'coding-style.html', + 'testdesign.html' : 'coding-style.html', } Deleted: /pypy/dist/pypy/documentation/restrictedpy.txt ============================================================================== --- /pypy/dist/pypy/documentation/restrictedpy.txt Sun Apr 17 19:09:04 2005 +++ (empty file) @@ -1,238 +0,0 @@ -================== -Restricted Python -================== - -We are writing a Python interpreter in Python, using Python's well known ability -to step behind the algorithmic problems as language. At first glance, one might -think this achieves nothing but a better understanding for everybody how the -interpreter works. This alone would make it worth doing, but we have much larger -goals. - - -CPython vs. PyPy -------------------- - -Compared to the CPython implementation, Python takes the role of the C Code. So -actually, we describe something by Python, which has been coded in C already, -with all the restrictions that are implied by C. We are not trying to make the -structures of the CPython interpreter more flexible by rewriting things in C, -but we want to use Python to give an alternative description of the interpreter. - -The clear advantage is that this description is probably shorter and simpler to -read, and many implementation details vanish. The drawback of this approach is -that this interpreter will be unbearably slow. - -To get to a useful interpreter again, we need to apply some mappings to the -implementation, later. One rather straight-forward is to do a whole program -analysis of the PyPy interpreter and create a C source, again. There are many -other ways, but let's stick with the easiest approach, first. - -In order to make a C code generator simple, we restrict ourselves to a subset of -the Python language, and we adhere to some rules, which make code generation -obvious and easy. - - -Restricted Python is Runtime Python -------------------------------------- - -Restricted Python describes a runnable Python interpreter implementation. This -is a quite static object that can be suitably described by RPython. But the -restrictions do not apply during the startup phase. - - -PyPy Bootstrap -------------------- - -When the PyPy interpreter is started as a CPython program, it can use all of -CPython for a while, until it reaches runtime. That is, all executable code will -be executed using the full power of Python. - -An example can be found in the implementation, which is quite elegant: For the -definition of all the opcodes of the Python interpreter, the module dis is -imported and used. This saves us from adding extra modules to PyPy. The import -code is run at startup time, and we are allowed to use the CPython builtin -import function. - -When the startup code is done, all resulting objects, functions, code blocks -etc. must adhere to the runtime restrictions. All initialized modules are -written out in a persistent manner. Our current idea is to emit a huge C source -file which contains everything created so far. During this process, a whole -program analysis is performed, which makes use of the restrictions defined in -RPython. This enables the code generator to emit efficient replacements for pure -integer objects, for instance. - - -RPython Definition --------------------- - -It might make sense to define a sub-language of Python called RPython, with the -restrictions depicted below. This is an evolving topic, and we're just -collecting things which come up during trying to code the interpreter, so this -is no language at all, but an arbitrary set of rules, which are about to be -changed all day. - - -Object restrictions -------------------------- - -We are using - -**variables** - - the same variable in the same context can receive values of different types, - at a possible overhead cost. For example, a variable that can contain a - wrapped object or None is efficiently implemented as a PyObject* pointer that - can be NULL, but a variable that can contain either an integer or a float must - be implemented as a union with a type tag in C. - -**constants** - - all module globals are considered constants. - -**integer, float, string, boolean** - - avoid string methods and complex operations like slicing with a step - -**tuples** - - no variable-length tuples; use them to store or return pairs or n-tuples of - values - -**lists** - - lists are used as an allocated array; list.append() does naive resizing, so as - far as possible use list comprehensions (see below). list.extend() or the += - operator are allowed and efficient. Unless there is really a use case for it, - repetition is limited to initialization purposes: '[single_value] * length'. - -**dicts** - - dicts with string keys only (preferrably the kind of strings that are usually - interned in CPython, i.e. short strings that look like identifiers). The - implementation could safely decide that all dict keys should be interned. - -**control structures** - - all allowed - -**list comprehensions** - - may be used to create allocated, initialized array. the array size must be - computable in advance, which implies that we don't allow an if clause. - -**functions** - -+ statically called functions may use defaults and a variable number of - arguments (which may be passed as a list instead of a tuple, so write code that - does not depend on it being a tuple). - -+ dynamic dispatch enforces use of very simple signatures, equal for all - functions to be called in that context. At the moment, this occurs in the opcode - dispatch, only. - -**builtin functions** - - A few builtin functions will be used, while this set is not defined - completely, yet. Some builtin functions are special forms: - -**range** - - does not create an array. It is only allowed in for loops. The step argument - must be a constant. - -**len** - -+ may be used with basic types that have a length. But len is a special form - that is recognized by the compiler. - -+ If a certain structure is never touched by len, the compiler might save the - length field from the underlying structure. - -``int, float, ord, chr``... are available as simple conversion functions. - -``int, float, str``... have a special meaning as a type inside of isinstance only. - -**classes** - -+ methods and other class attributes do not change after startup -+ inheritance is supported -+ classes are first-class objects too - -**exceptions** - -+ fully supported -+ see below for restrictions on exceptions raised by built-in operations - -**objects** - - wrapped objects are borrowed from the object space. Just like in CPython, code - that needs e.g. a dictionary can use a wrapped dict and the object space - operations on it. - -This layout makes the number of types to take care about quite limited. - - -Example: Integer Types -------------------------- - -While implementing the integer type, I (Chris) stumbled over the problem, that -integers are quite in flux in CPython right now. Depending on the version, -integers either raise an overflow exception or mutate into longs on overflow. -Also, shifting right now truncates (up to 2.3) but is going to extend to longs -as well. In order to enable us to run the restricted Python stuff in CPython, I -needed to use a derived class r_int(int), which always behaves the same: Never -leaving its domain, but always staying an integer. - -The r_int type is implemented in a pervasive way: Every operation that involves -an r_int creates an r_int as the result. Therefore, the implementation is not -cluttered with special type casts. Just the initial value of an emulated -integer's intval field is initialized by obj.intval = r_int(val) . This way, the -r_int type propagates itself through all operations without extra effort of the -programmer. - -This concept looks promising, and since we will need unsigned integers which do -not overflow as well, I also created r_uint. It is always a word-sized unsigned -integer and never overflows. This will be a building block for things like -computing hash values, where wrap-around effects are intended and should be -easily coded without lots of explicit mask shuffling. - -Now I think to extend this even more and build a full set of primitive types, -which are intended to - -+ define the semantics of the primitive type -+ give a working implementation for unrestricted Python - -These primitive types can later easily be augmented with methods to emit C code instead of executing. I guess this would be implemented in an extra ObjectSpace. - - -Exception rules ---------------------- - -Exceptions are by default not generated for simple cases.:: - - - #!/usr/bin/python - - x = 5 - x = x + 1 # this code is not checked for overflow - - try: - x = x + y - except OverflowError: - # implement using longs - - -Code with no exception handlers does not raise exceptions. By supplying an -exception handler, you ask for error checking. Without, you assure the system -that the operation cannot overflow. - -Exceptions explicitly raised will always be generated. - - -Testing ------------- - -Besides extra tests which have to be written, PyPy has the advantage that it is -runnable on standard CPython. That means, we can run all of PyPy with all -exception handling enabled, so we might catch cases where we failed to adhere to -our implicit assertions. Deleted: /pypy/dist/pypy/documentation/testdesign.txt ============================================================================== --- /pypy/dist/pypy/documentation/testdesign.txt Sun Apr 17 19:09:04 2005 +++ (empty file) @@ -1,36 +0,0 @@ -============= -Test Design -============= - -Our tests are based on the new `py.test`_ tool which lets you write -unittests without boilerplate. All tests of modules -in a directory usually reside in a subdirectory **test**. There are -basically two types of unit tests: - -- **Interpreter Level tests**. They run at the same level as PyPy's - interpreter. - -- **Application Level tests**. They run at application level which means - that they look like straight python code but they are interpreted by PyPy. - -Both types of tests need an objectspace they can run with (the interpreter -dispatches operations on objects to an objectspace). If you run a test you -can usually give the '-o' switch to select an object space. E.g. '-o thunk' -will select the thunk object space. The default is the "Standard Object Space" -which aims to implement unmodified Python semantics. - -.. _`py.test`: http://codespeak.net/py/current/doc/test.html - -Writing a test --------------- - -Currently the best reference is to go to some test files and look how they are done. - -Command line tool test_all --------------------------- - -You can run almost all of PyPy's tests by invoking:: - - python test_all.py - -For switches to modify test execution invoke "python test_all.py -h". From hpk at codespeak.net Sun Apr 17 19:15:56 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 19:15:56 +0200 (CEST) Subject: [pypy-svn] r10783 - pypy/dist/pypy/documentation Message-ID: <20050417171556.8AA0227B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 19:15:56 2005 New Revision: 10783 Modified: pypy/dist/pypy/documentation/redirections Log: improve redirections with anchors Modified: pypy/dist/pypy/documentation/redirections ============================================================================== --- pypy/dist/pypy/documentation/redirections (original) +++ pypy/dist/pypy/documentation/redirections Sun Apr 17 19:15:56 2005 @@ -1,6 +1,6 @@ # please make sure this is evaluatable { - 'restrictedpy.html': 'coding-style.html', - 'testdesign.html' : 'coding-style.html', + 'restrictedpy.html': 'coding-style.html#restricted-python', + 'testdesign.html' : 'coding-style.html#test-design', } From hpk at codespeak.net Sun Apr 17 20:07:49 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 20:07:49 +0200 (CEST) Subject: [pypy-svn] r10786 - pypy/dist/pypy/documentation Message-ID: <20050417180749.C2D7027B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 20:07:49 2005 New Revision: 10786 Modified: pypy/dist/pypy/documentation/newstructure Log: plan for a new "theory.txt" file. Modified: pypy/dist/pypy/documentation/newstructure ============================================================================== --- pypy/dist/pypy/documentation/newstructure (original) +++ pypy/dist/pypy/documentation/newstructure Sun Apr 17 20:07:49 2005 @@ -32,7 +32,6 @@ objspace.txt objspaceinterface.txt wrapping.txt - abstractobjspace.txt controlflow.txt annotateobjspace.txt stdobjspace.txt @@ -46,3 +45,8 @@ typer llvm +theory.txt + Abstract Interpretation + XXX Annotation + XXX translation aspects + XXX multimethods From arigo at codespeak.net Sun Apr 17 20:57:21 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 17 Apr 2005 20:57:21 +0200 (CEST) Subject: [pypy-svn] r10788 - pypy/dist/pypy/documentation Message-ID: <20050417185721.A276C27B4B@code1.codespeak.net> Author: arigo Date: Sun Apr 17 20:57:21 2005 New Revision: 10788 Added: pypy/dist/pypy/documentation/theory.txt - copied, changed from r10785, pypy/dist/pypy/documentation/abstractobjspace.txt Removed: pypy/dist/pypy/documentation/abstractobjspace.txt pypy/dist/pypy/documentation/annotateobjspace.txt pypy/dist/pypy/documentation/controlflow.txt pypy/dist/pypy/documentation/multimethod.txt pypy/dist/pypy/documentation/objspaceinterface.txt pypy/dist/pypy/documentation/stdobjspace.txt pypy/dist/pypy/documentation/wrapping.txt Modified: pypy/dist/pypy/documentation/ (props changed) pypy/dist/pypy/documentation/howtopypy.txt pypy/dist/pypy/documentation/objspace.txt pypy/dist/pypy/documentation/redirections Log: Second part of the redocumentation process: objspace.txt. Deleted: /pypy/dist/pypy/documentation/abstractobjspace.txt ============================================================================== --- /pypy/dist/pypy/documentation/abstractobjspace.txt Sun Apr 17 20:57:21 2005 +++ (empty file) @@ -1,16 +0,0 @@ -======================= -AbstractObjectSpace -======================= - -We currently don't really have an AbstractObjSpace but an AnnotateObjSpace_ (or AnnSpace for short) -which comes close to it. Abstract Interpretation means to the bytecode instructions of a program like an interpreter does but with abstract objects instead of concrete ones. Remember that in PyPy this is done by using alternate object spaces with the same interpreter main loop. - -The most abstract object space is the one manipulating the most abstract objects that you could imagine: they are all equivalent, because we have abstracted away any information about the object. There is actually only one of them left, and we can call it "the object". In Python terms, our AbstractObjectSpace uses None for all its wrapped objects. Any operation between wrapped objects gives None again as the wrapped result -- there is nothing else it could give anyway. So when you have said that the add method of AbstractObjectSpace takes None and None and returns None you have said everything. - -The point of such an object space is for example to check the bytecode. The interpreter will really run your bytecode, just with completely abstract arguments. If there is no problem then you are sure that the bytecode is valid. You could also record, during this abstract interpretation, how much the stack ever grows; that would give you a fool-proof method of computing the co_stacksize argument of a code object which might be useful for the PyPy compiler. (There are subtleties which I won't describe here, but that's the basic idea.) - -Typically, however, abstract object spaces are a (little) bit less abstract, still maintaining a minimal amount of information about the objects. For example, a wrapped object could be represented by its type. You then define the object space's add to return int when the two arguments are int and int. That way, you abstractedly call a function with the input argument's types and what the interpreter will do is a type inference. (Here also there are subtle problems, even besides the remark that integer operations can overflow and actually return longs in a real Python implementation.) - -As an example of more abstract object spaces you have the ones with finite domain, i.e. with a finite number of different possible wrapped objects. For example, you can use True and False as wrapped values to denote the fact that the object is, respectively, a non-negative integer or anything else. In this way you are doing another kind of type inference that just tells you which variables will only ever contain non-negative integers. - -.. _AnnotateObjSpace: annotateobjspace.html Deleted: /pypy/dist/pypy/documentation/annotateobjspace.txt ============================================================================== --- /pypy/dist/pypy/documentation/annotateobjspace.txt Sun Apr 17 20:57:21 2005 +++ (empty file) @@ -1,26 +0,0 @@ -========================= -Annotate Object Space -========================= - -was TranslateObjectSpace -------------------------- -This has been renamed and is currently being re-written. Older information follows: - -This is an example of an ObjectSpace that differs a lot from StandardObjectSpace_. - -At some point in the near future we will have to design a translator from all the RestrictedPython_ code we have into C code. This is the sine qua non condition for our work to be actually usable. Quite unexpectedly, the major piece of the translator is itself an object space, the TranslateObjectSpace. Its goal is to run any RestrictedPython code and produce C code in the background as it does so. - -More specifically, we take our PyPy interpreter with the TranslateObjectSpace instead of the StandardObjectSpace, and run that, asking it to interpret some RestrictedPython bytecode. The idea is that a wrapped object is now the name of a variable in the C program we are emitting: - -The TranslateObjectSpace's add method takes two such variable names x and y, and emits the C code z=x+y;, where z is a new variable name which is returned as the result of add. So when the interpreter goes along the bytecode, the TranslateObjectSpace will create variable names and emit C code that does just the same thing as the bytecode. - -The above description is what would occur if RestrictedPython only had integer data types. We must actually make the wrapped objects a bit more elaborate to also record, besides the C variable name, its basic type. This can be easy, like prefixing the variable name with a type character; for example, add would behave as above if the variable names begin with ``i_`` but differently if they begin with the prefix denoting floats or lists, say. - -Once you grasp the idea that this process can actually easily translate any RestrictedPython to C, and if you remember that the interpreter main loop itself is written in RestrictedPython, then you shouldn't be surprised if I say that all we have to do next is run the interpreter to interpret itself (and thus translate itself to C)! - -This is again a rough sketch, but it shows why I expect translating RestrictedPython to C to be easy. The RestrictedPython is precisely restricted in such a way that makes the above process work, e.g. we only ever use well-known types and operations that are easy to convert to an efficient C equivalent. (For example, if lists are translated to C arrays, I'm sure Christian would insist on not using '+' between lists in RestrictedPython but rather '+=', which has a more direct translation as realloc() -- although by now he might be convinced that supporting '+' as a bonus isn't going to be any difficult anyway :-) ) - ------------------------------- - -.. _StandardObjectSpace: stdobjspace.html -.. _RestrictedPython: coding-style.html Deleted: /pypy/dist/pypy/documentation/controlflow.txt ============================================================================== --- /pypy/dist/pypy/documentation/controlflow.txt Sun Apr 17 20:57:21 2005 +++ (empty file) @@ -1,105 +0,0 @@ -FlowObjSpace -============ - -Introduction ------------- - -The FlowObjSpace generates a control-flow graph from a function. This graph also contains a trace of the individual operations, so that it is actually just an alternate representation for the function. - -The FlowObjSpace is an object space, which means that it exports the standard object space interface and it is driven by the interpreter. - -The basic idea is that if the interpreter is given a function, e.g.:: - - def f(n): - return 3*n+2 - -it will do whatever bytecode dispatching and stack-shuffling needed, during which it issues a sequence of calls to the object space. The FlowObjSpace merely records these calls (corresponding to "operations") in a structure called a basic block. To track which value goes where, the FlowObjSpace invents placeholder "wrapped objects" and give them to the interpreter, so that they appear in some next operation. - -For example, if the placeholder ``v1`` is given as the argument to the above function, the interpreter will call ``v2 = space.mul(space.wrap(3), v1)`` and then ``v3 = space.add(v2, space.wrap(2))`` and return ``v3`` as the result. During these calls the FlowObjSpace will record a basic block:: - - Block(v1): # input argument - v2 = mul(Constant(3), v1) - v3 = add(v2, Constant(2)) - - -The Flow model --------------- - -``pypy.objspace.flow.model`` defines the data model used by the flow graphs, as created by the FlowObjSpace, manipulated by ``pypy.translator.simplify`` and ``pypy.translator.transform``, and in general read by almost all the modules in ``pypy.translator``. - -It is recommended to play with ``python translator.py`` on a few examples to get an idea of the structure of flow graphs. Here is a short summary of the non-obvious parts. - - -FunctionGraph - A container for one graph (corresponding to one function). - - :startblock: the first block. It is where the control goes when the function is called. The input arguments of the startblock are the function's arguments. If the function takes a ``*args`` argument, the ``args`` tuple is given as the last input argument of the startblock. - :returnblock: the (unique) block that performs a function return. It is empty, not actually containing any ``return`` operation; the return is implicit. The returned value is the unique input variable of the returnblock. - :exceptblock: the (unique) block that raises an exception out of the function. The two input variables are the exception class and the exception value, respectively. (No other block will actually link to the exceptblock if the function does not explicitely raise exceptions.) - - -Block - A basic block, containing a list of operations and ending in jumps to other basic blocks. All the values that are "live" during the execution of the block are stored in Variables. Each basic block uses its own distinct Variables. - - :inputargs: list of fresh, distinct Variables that represent all the values that can enter this block from any of the previous blocks. - :operations: list of SpaceOperations. - :exitswitch: see below - :exits: list of Links representing possible jumps from the end of this basic block to the beginning of other basic blocks. - - Each Block ends in one of the following ways: - - * unconditional jump: exitswitch is None, exits contains a single Link. - * conditional jump: exitswitch is one of the Variables that appear in the Block, and exits contains one or more Links (usually 2). Each Link's exitcase gives a concrete value. This is the equivalent of a "switch": the control follows the Link whose exitcase matches the run-time value of the exitswitch Variable. It is a run-time error if the Variable doesn't match any exitcase. (Currently only used with 2 Links whose exitcase are False and True, respectively.) - * exception catching: exitswitch is ``Constant(last_exception)``. The first Link has exitcase set to None and represents the non-exceptional path. The next Links have exitcase set to a subclass of Exception, and are taken when the *last* operation of the basic block raises a matching exception. (Thus the basic block must not be empty, and only the last operation is protected by the handler.) - * return or except: the returnblock and the exceptblock have operations set to an empty tuple, exitswitch to None, and exits empty. - - -Link - A link from one basic block to another. - - :prevblock: the Block that this Link is an exit of. - :target: the target Block to which this Link points to. - :args: a list of Variables and Constants, of the same size as the target Block's inputargs, which gives all the values passed into the next block. (Note that each Variable used in the prevblock may appear zero, one or more times in the ``args`` list.) - :exitcase: see above. - - Note that ``args`` uses Variables from the prevblock, which are matched to the target block's ``inputargs`` by position, as in a tuple assignment or function call would do. - - -SpaceOperation - A recorded (or otherwise generated) basic operation. - - :opname: the name of the operation. Generally one from the list in ``pypy.interpreter.baseobjspace``. - :args: list of arguments. Each one is a Constant or a Variable seen previously in the basic block. - :result: a *new* Variable into which the result is to be stored. - - Note that operations usually cannot implicitely raise exceptions at run-time; so for example, code generators can assume that a ``getitem`` operation on a list is safe and can be performed without bound checking. The exceptions to this rule are: (1) if the operation is the last in the block, which ends with ``exitswitch == Constant(last_exception)``, then the implicit exceptions must be checked for, generated, and caught appropriately; (2) calls to other functions, as per ``simple_call`` or ``call_args``, can always raise whatever the called function can raise --- and such exceptions must be passed through to the parent unless they are caught as above. - - -Variable - A placeholder for a run-time value. There is mostly debugging stuff here. - - :name: it is good style to use the Variable object itself instead of its ``name`` attribute to reference a value, although the ``name`` is guaranteed unique. - - -Constant - A constant value used as argument to a SpaceOperation, or as value to pass across a Link to initialize an input Variable in the target Block. - - :value: the concrete value represented by this Constant. - :key: a hashable object representing the value. - - A Constant can occasionally store a mutable Python object. It represents a static, pre-initialized, read-only version of that object. The flow graph should not attempt to actually mutate such Constants. - - -XXX talk about implicit exceptions - - -How the FlowObjSpace works --------------------------- - -The FlowObjSpace works by recording all operations issued by the interpreter into basic blocks. A basic block ends in one of two cases: when the interpreters calls ``is_true()``, or when a joinpoint is reached. - -* A joinpoint occurs when the next operation is about to be recorded into the current block, but there is already another block that records an operation for the same bytecode position. This means that the interpreter has closed a loop and is interpreting already-seen code again. In this situation, we interrupt the interpreter and we make a link from the end of the current block back to the previous block, thus closing the loop in the flow graph as well. (Note that this occurs only when an operation is about to be recorded, which allows some amount of constant-folding.) - -* If the interpreter calls ``is_true()``, the FlowObjSpace doesn't generally know if the answer should be True or False, so it puts a conditional jump and generates two successor blocks for the current basic block. There is some trickery involved so that the interpreter is fooled into thinking that ``is_true()`` first returns False (and the subsequent operations are recorded in the first successor block), and later the *same* call to ``is_true()`` also returns True (and the subsequent operations go this time to the other successor block). - -(This section to be extended...) Modified: pypy/dist/pypy/documentation/howtopypy.txt ============================================================================== --- pypy/dist/pypy/documentation/howtopypy.txt (original) +++ pypy/dist/pypy/documentation/howtopypy.txt Sun Apr 17 20:57:21 2005 @@ -161,7 +161,7 @@ .. _this: http://docutils.sourceforge.net/docs/rst/quickref.html .. _ObjectSpace: objspace.html -.. _ObjectSpaceInterface: objspaceinterface.html +.. _ObjectSpaceInterface: objspace.html#object-space-interface .. _`detailed version`: Deleted: /pypy/dist/pypy/documentation/multimethod.txt ============================================================================== --- /pypy/dist/pypy/documentation/multimethod.txt Sun Apr 17 20:57:21 2005 +++ (empty file) @@ -1,254 +0,0 @@ -========================= -MultiMethods and Coercion -========================= - -Introduction ------------- - -A "multimethod" is the generalization of the OOP notion of "method". -Theoretically, a method is a "message name" and signature attached to a -particular base class, which is implementated in the class or its subclasses. -To do a "method call" means to send a message to an object, using a message -name and actual arguments. We call "message dispatch" the operation of -finding which actual implementation is suitable for a particular call. For -methods, a message is dispatched by looking up the class of the "self" object, -and finding an implementation in that class, or in its base classes, in a -certain order. - -A multimethod is a message name and signature that can have implementations -that depend not only on the class of the first "self" argument, but on the -class of several arguments. Because of this we cannot use Python's nice model -of storing method implementations as functions, in the attributes of the -class. - -Here is a common implementation of multimethods: they are instances of a -specific MultiMethod class, and the instances are callable (there is a -__call__ operator on MultiMethod). When a MultiMethod is called, a dispatch -algorithm is used to find which, among the registered implementations, is the -one that should be called; this implementation is then immediately called. The -most important difference with normal methods is that the MultiMethod object -to call is no longer syntactically attached to classes. In other words, -whereas a method is called with ``obj.somemethod(args)``, a multimethod is -called much like a function, e.g. ``dosomething(obj1, obj2, obj3...)``. You -have to find the MultiMethod object ``dosomething`` in some namespace; it is -no longer implicitely looked up in the namespace of the "self" object. - -In PyPy the MultiMethod objects are stored in the object space instance, thus -``space.add`` is the name of a MultiMethod. The ``space`` argument is not -used for the dispatch, but just as a convenient place to put the MultiMethod -object. - - -Concept Trees -------------- - -A multimethod is a "signature" and a set of "implementations", which are -regular Python functions. The difficulty is to figure out an algorithm that -should be used to know, given actual argument values, which implementation -should be called. - -This algorithm should only depend on the types of the arguments. For -explicitness we will *not* use the Python class inheritance at all (because it -is better suited to normal methods, and anyway it can be emulated if needed). -Thus the following diagram looks like inheritance diagrams, but it is actually -just an explicitely specified tree:: - - Value - \ - \ - Float - / \ - / \ - Integer \ - / \ F1 - / \ - I1 I2 - -This diagram contains three Python types I1, I2 and F1, and three "concepts" -Integer, Float and Value, which are just names. The types I1 and I2 could be -two different ways to implement integers (e.g. machine-sized ints, and -variable-sized longs), and the type F1 could be the IEEE doubles. Note that in -this model the real Python types are the "leaves" of the tree. - -Consider the multimethod ``add(Value, Value)``. The signature specifies that -the two arguments should be two Values (remember that Value is not a type, -just some "concept"; you cannot ask whether a Python object is a Value or -not). Suppose that this multimethod has got three implementations: -``add(I1,I1)``, ``add(I1,I2)`` and ``add(F1,F1)``. If you call ``add(t1,t2)`` with -two objects of type ``I1``, the first implementation is used; if you call it -with a ``I1`` and a ``I2``, the second one is used; and if you call it with two -``F1``, the third one is used. - -But if you call it with another pattern of types, there is no direct match. -To be able to satisfy the call, at least one of the arguments will have to be -converted to another type. This is where the shape of the tree becomes -important. Remember that the signature of the multimethod is ``add(Value, -Value)``. The two ``Value`` here mean that conversions are allowed inside of -the part of the tree that is below ``Value``. (This is the tree shown above; -maybe there are other "concepts" above ``Value`` outside the picture, but they -are ignored.) The intuitive meaning of the signature is: "add() is an -operation between two Values". It allows an object of type I1 to be converted -into an object of type I2 or F1 and vice-versa, as long as the objects have the -same "Value", in an intuitive sense. An example of conversion that destroys -the Value would be casting a I1 object into an instance of ``object``, which is -a parent class of any Python class. - - -Conversion ----------- - -All conversions that don't change the "Value" of an object can be registered -as Python functions. For example:: - - def f(x): - return F1(x) - -might be a conversion from I1 to F1. But we can say more: this conversion is -more precisely defined at the level of "Float" in the tree above. -Similarily, a conversion from I1 to I2 would probably be defined at the -"Integer" level. - -Suppose that we have defined these two conversions, from I1 to F1 and -from I1 to I2. Suppose now that we call ``add(i,f)`` where ``i`` is of -type I1 and ``f`` is of type F1. Clearly, we want ``i`` to be converted -into a F1, which allows ``add(Value, Value)`` to be called and -dispatched to the ``add(F1,F1)`` implementation. To find this -conversion, the algorithm looks into the subconcepts of ``Value``, -starting from the leaves and going back to the higher levels, until it -can satisfy the call request by inserting conversions registered at -these levels. - -Starting from the lower levels and going up allows the tree to prioritize the -solutions: it is better to try to convert between Integers, and only if that -fails, to try to convert at the Float level, which might promote integer -objects into floats. - - -Multimethod signature ---------------------- - -The signature ``add(Value, Value)`` of the multimethod is essential to specify -that conversions are indeed allowed for the addition. In other multimethods, -some arguments might play different roles. Consider a multimethod for -"in-place addition": as this operation might mutate its first argument, it -must never be automatically converted. This is expressed by saying that the -signature of this multimethod is ``inplace_add(Identity, Value)`` where -``Identity`` is another concept that intuitively means "a Python object whose -identity is important". ``Identity`` would not appear in a tree, or if it -would, it would not have conversions between its subtypes. - -Note how a real Python object of type I1 can either be an "Integer" or an -"Identity" depending on its role in a multimethod call. This is why we cannot -use normal inheritance as the (global) conversion tree: which tree to use -depends on the role of the argument, which changes in different positions of -different multimethods. - -This approach is general enough to allow arguments to play very different -roles. For example, the same mecanisms could be used for an argument that -must be an integer: the multimethod signature would specify ``Integer`` -instead of ``Value``. It still allows conversion between integer -representations, but not from float to int. - -In PyPy, some "concepts" are by convention tied to the application-level -types: ``Integer`` corresponds to the application-level ``class int``, -and ``Float`` to ``class float``. The I1, I2 and F1 types are -interpreter-level implementations, and they are normally not visible at -application-level. It is then natural to define what the method -``int.__add__(self, other)`` should do: it should require an ``Integer`` -as its first argument, but it could be I1 or I2 -- appropriate conversions -can be done, as long as we don't convert ``self`` outside the realm of -``Integer``. - - -Conversion multimethods ------------------------ - -As conversion functions are linked to levels in the tree, and there can be -several conversions for each level, they are much like multimethods -themselves. In other words, for each "concept" (Value, Float, Integer) we can -introduce a multimethod (valueconv, floatconv, integerconv) with the -corresponding signature (``valueconv(Value)``, ``floatconv(Float)``, -``integerconv(Integer)``). Specific conversion functions are implementations -of one of these multimethods. For example, if ``g`` is a I1-to-I2 conversion, -it is an implementation of ``integerconv(Integer)``, with the type ``g(I1)``. - -The job of the multimethod dispatcher algorithm is to insert the appropriate -implementations of the allowed ``xxxconv(Xxx)`` multimethods until the call -can be satisfied. - -A nice point of view is that these conversion multimethod are identity -functions (i.e. functions that do nothing, and return their argument -unmodified): ``integerconv(Integer)`` is the abstract function that takes an -Integer and just returns it; an implementation like ``g(I1)`` actually takes a -I1 and returns a I2, which is different, but when you look at it abstractedly at -the Integer level, you just see an Integer input argument and the same Integer -result. - - -Algorithm ---------- - -Here is a suggested algorithm. Roughly, it assumes that arguments with the -same abstract signature (e.g. ``Value`` in ``add(Value, Value)``) work -together, but arguments with distinct signature are independent. - -Assume that the signature of a multimethod is ``m(C1,...,Cn)``, and we want to -dispatch the call ``m(A1,...,An)``, where the arguments have types -``T1,...,Tn`` respectively. Each type ``Ti`` must appear in the subtree below -``Ci``, otherwise it is a TypeError. - -We use a single set S of types and concepts, which will grow until it is large -enough to contain the appropriate conversion functions:: - - S = { } # empty set - sortedmatches = [] - while 1: - find_matches_in(S) - i = the largest integer in {1,...,n} such that Ci not in S - or break if there isn't any such i any more - C = the first item in order(Ci) such that C not in S - add C into S - also add into S the whole subtree of C - -where ``order(C)`` is a kind of "method resolution order" of everything -*under* ``C`` (instead of *over* ``C`` for Python's MRO). For example, -following Python 2.2:: - - def order(C): - lst = [] - for j in range(n,0,-1): - if Tj in subtree(C): - lst += [Tj, parent(Tj), parent(parent(Tj)), ..., C] - for each D that appears more than once in lst: - remove all but the last occurrence of D in lst - return lst - -The algorithm in Python 2.3 is slightly different, and could probably be used -instead, though the difference should not be significant for the kind of trees -we are using. - -Finally:: - - def find_matches_in(S): - matches = list_matches_in(S) - remove from matches the items already in sortedmatches - if len(matches) > 1: - warning ambiguity, or maybe use performance hints - sortedmatches += matches - - def list_matches_in(S): - conv = { implementations of the conversion multimethod of C - for C in S } - combine in all possible ways the functions in conv to change - the types T1,...,Tn into the types U1,...,Un of an - implementation of the multimethod to call - -The resulting ``sortedmatches`` list contains, in preference order, the -implementations that are available to be dispatched to. We generally just -call the first one, but it (or any later one) may raise FailedToImplement; in -this case the dispatcher tries the next one. - -The rest of the algorithm are implementation and performance tricks, e.g. it -should try to call a given conversion function only once and remember the -value of the converted argument in case we need it again after a -FailedToImplement. Modified: pypy/dist/pypy/documentation/objspace.txt ============================================================================== --- pypy/dist/pypy/documentation/objspace.txt (original) +++ pypy/dist/pypy/documentation/objspace.txt Sun Apr 17 20:57:21 2005 @@ -1,37 +1,416 @@ -===================== -PyPython ObjectSpace -===================== +================== +PyPy Object Spaces +================== + +.. contents:: +.. sectnum:: + +This document is an overview of the implementation of PyPy's `Object Spaces`_. + +.. _`Object Spaces`: architecture.html#the-object-space + + +Wrapping rules +============== + +Introduction +------------ + +PyPy is made of Python source code at two levels: there is on the one hand *application-level code* that looks like normal Python code, and that implements some functionalities as one would expect from Python code (e.g. one can give a pure Python implementation of some built-in functions like ``zip()``). There is also *interpreter-level code* for the functionalities that must more directly manipulate interpreter data and objects (e.g. the main loop of the interpreter, and the various object spaces). + +Application-level code doesn't see object spaces explicitely: it runs using an object space to support the objects it manipulates, but this is implicit. There is no need for particular conventions for application-level code. The sequel is only about interpreter-level code. (Ideally, no application-level variable should be called ``space`` or ``w_xxx`` to avoid confusion.) + + +Naming conventions +------------------ + +* ``space``: the object space is only visible at interpreter-level, where it is by convention in a variable called ``space``. + +* ``w_xxx``: any object seen by application-level code is an object explicitely managed by the object space. From the interpreter-level point of view, this is called a *wrapped* object. The ``w_`` prefix is used for any type of application-level object. + +* ``xxx_w``: an interpreter-level container for wrapped objects, for example a list or a dict containing wrapped objects. Not to be confused with a wrapped object that would be a list or a dict: these are normal wrapped objects, so they use the ``w_`` prefix. + + +Operations on ``w_xxx`` +----------------------- + +The core interpreter considers wrapped objects as black boxes. It is not allowed to inspect them directly. The allowed operations are all dependent on the object space: they are called ``space.xxx()``, where ``xxx`` is a standard operation name (``add``, ``getattr``, ``call``, ``eq``...). The list of standard operations is found in the large table near the end of ``pypy.interpreter.baseobjspace``. These operations take wrapped arguments and return a wrapped result (or sometimes just None). + +Also note some helpers: + +* ``space.call_function(w_callable, ...)``: collects the given (already-wrapped) arguments, builds a wrapped tuple for them, and uses ``space.call()`` to perform the call. + +* ``space.call_method(w_object, 'method', ...)``: uses ``space.getattr()`` to get the method object, and then ``space.call_function()`` to invoke it. + + +Building ``w_xxx`` objects +-------------------------- + +From the core interpreter, wrapped objects are usually built as the result of an object space operation. The ways to directly create a wrapped object are: + +* ``space.wrap(x)``: returns a wrapped object containing the value ``x``. Only works if ``x`` is either a simple value (integer, float, string) or an instance of an internal interpreter class (Function, Code, Frame...). + +* ``space.newlist([w_x, w_y, w_z...])``: returns a wrapped list from a list of already-wrapped objects. + +* ``space.newtuple([w_x, w_y, w_z...])``: returns a wrapped tuple from a list of already-wrapped objects. + +* ``space.newdict([])``: returns a new, empty wrapped dictionary. (The argument list can contain tuples ``(w_key, w_value)`` but it seems that such a use is not common.) + +* ``space.newbool(x)``: returns ``space.w_False`` or ``space.w_True`` depending on the truth value of ``x``. + +There are a few less common constructors, described in the comments at the end of ``pypy.interpreter.baseobjspace``. + + +Constant ``w_xxx`` objects +-------------------------- + +The object space holds a number of predefined wrapped objects. The most common ones are ``space.w_None`` and ``space.w_XxxError`` for each exception class ``XxxError`` (e.g. ``space.w_KeyError``, ``space.w_IndexError``, etc.). + + +Inspecting ``w_xxx`` objects +---------------------------- + +The most delicate operation is for the interpreter to inspect a wrapped object, which must be done via the object space. + +* ``space.is_true(w_x)``: checks if the given wrapped object is considered to be ``True`` or ``False``. You must never use the truth-value of ``w_x`` directly; doing so (e.g. writing ``if w_x:``) will give you an error reminding you of the problem. + +* ``w_x == w_y`` or ``w_x is w_y``: DON'T DO THAT. The only half-official exception is to check if ``w_x`` contains a wrapped ``None``: you can write ``w_x == space.w_None``. Follow this rule; the case of ``None`` is easy to fix globally later if we find out that we need to. The rationale for this rule is that there is no reason that two wrappers are related in any way even if they contain what looks like the same object at application-level. To check for equality, use ``space.is_true(space.eq(w_x, w_y))``. To check for identity, use ``space.is_true(space.is_(w_x, w_y))``. + +* ``space.unpackiterable(w_x)``: this helper iterates ``w_x`` (using ``space.iter()`` and ``space.next()``) and collects the resulting wrapped objects in a list. Of course, in cases where iterating directly is better than collecting the elements in a list first, you should use ``space.iter()`` and ``space.next()`` directly. + +* ``space.unwrap(w_x)``: inverse of ``space.wrap()``. Attention! Using ``space.unwrap()`` must be avoided whenever possible, i.e. only use this when you are well aware that you are cheating, in unit tests or bootstrapping code. + +* ``space.interpclass_w(w_x)``: If w_x is a wrapped instance of an interpreter class -- for example Function, Frame, Cell, etc. -- return it unwrapped. Otherwise return None. + +* ``space.int_w(w_x)``: If w_x is an application-level integer or long which can be converted without overflow to an integer, return an interpreter-level integer. Otherwise raise TypeError or OverflowError. + +* ``space.str_w(w_x)``: If w_x is an application-level string, return an interpreter-level string. Otherwise raise TypeError. + +* ``space.float_w(w_x)``: If w_x is an application-level float, integer or long, return interpreter-level float. Otherwise raise TypeError or OverflowError in case of very large longs. + +Remember that you can usually obtain the information you want by invoking operations or methods on the wrapped objects; e.g. ``space.call_method(w_dict, 'iterkeys')`` returns a wrapped iterable that you can decode with ``space.unpackiterable()``. + + +Application-level exceptions +---------------------------- + +Interpreter-level code can use exceptions freely. However, all application-level exceptions are represented as an ``OperationError`` at interpreter-level. In other words, all exceptions that are potentially visible at application-level are internally an ``OperationError``. This is the case of all errors reported by the object space operations (``space.add()`` etc.). + +To raise an application-level exception:: + + raise OperationError(space.w_XxxError, space.wrap("message")) + +To catch a specific application-level exception:: + + try: + ... + except OperationError, e: + if not e.match(space, space.w_XxxError): + raise + ... + +This construct catches all application-level exceptions, so we have to match it against the particular ``w_XxxError`` we are interested in and re-raise other exceptions. The exception instance ``e`` holds two attributes that you can inspect: ``e.w_type`` and ``e.w_value``. Do not use ``e.w_type`` to match an exception, as this will miss exceptions that are instances of subclasses. + +We are thinking about replacing ``OperationError`` with a family of common exception classes (e.g. ``AppKeyError``, ``AppIndexError``...) so that we can more easily catch them. The generic ``AppError`` would stand for all other application-level classes. + + +Object Space Interface +====================== + +This is a draft version of the Object Space interface. It is still evolving, although the public interface is not evolving as much as the internal interface that subclasses need to know about. This document now generally refers to the public interface; for subclassing you need to poke at the code in detail anyway. + + +Administrative Functions +---------------------------- + +**initialize():** + Function which initializes w_builtins and the other w_constants. + +**getexecutioncontext():** + Return current active execution context. + +Operations on Objects in ObjSpace +----------------------------------------- + +These functions both take and return "wrapped" objects. + +*The following functions implement the same operations as those in CPython:* + +``id, type, issubtype, iter, repr, str, len, hash,`` + +``getattr, setattr, delattr, getitem, setitem, delitem,`` + +``pos, neg, not_, abs, invert, add, sub, mul, truediv, floordiv, div, mod, divmod, pow, lshift, rshift, and_, or_, xor,`` + +``hex, oct, int, float, ord,`` + +``lt, le, eq, ne, gt, ge, contains,`` + +``inplace_add, inplace_sub, inplace_mul, inplace_truediv, inplace_floordiv, inplace_div, inplace_mod, inplace_pow, inplace_lshift, inplace_rshift, inplace_and, inplace_or, inplace_xor,`` + +``get, set, delete`` + +**next(w):** + Call the next function for iterator w, or raises a real NoValue. + +**call(w_callable, w_args, w_kwds):** + Call a function with the given args and keywords. + +**call_function(w_callable, *args_w, **kw_w):** + Convenience function that collects the arguments in a wrapped tuple and dict and invokes 'call()'. + +**is_(w_x, w_y):** + Implements 'w_x is w_y'. (Returns a wrapped result too!) + +**isinstance(w_obj, w_type):** + Implements 'issubtype(type(w_obj), w_type)'. (Returns a wrapped result too!) + +**exception_match(w_exc_type, w_check_class):** + Checks if the given exception type matches 'w_check_class'. Used in matching the actual exception raised with the list of those to catch in an except clause. (Returns a wrapped result too!) + +Creation of Application Level objects +--------------------------------------- -See ObjectSpaceInterface_ for a draft version of the interface specification to ObjectSpace objects. ------------------------------------------------------------------------------------------------------- +**wrap(x):** + Returns a wrapped object that is a reference to the interpreter-level object x. This can be used either on simple immutable objects (integers, strings...) to create a new wrapped object, or on complex mutable objects to obtain an application-level-visible reference to them (e.g. instances of internal interpreter classes). -In a Python-like language, a running interpreter has three main parts: +**newbool(b):** + Creates a Bool Object from an interpreter level object. -+ the compiler, which represents the static optimization of the source code into an intermediate format, the bytecode; -+ the object library, implementing the various types of objects and their semantics; -+ the main loop, which shuffles data around and calls the operations defined in the object library according to the bytecode. +**newtuple([..]):** + Take an interpreter level list of wrapped objects. -The main loop generally assumes little about the semantics of the objects: they are essentially black boxes (PyObject pointers). The interpreter stack and the variables only contain such black boxes. Every operation is done via calls to the object library, like PyNumber_Add(). +**newlist([..]):** + Takes an interpreter level list of wrapped objects. -In PyPy, the three parts are clearly separated and can be replaced independently. I will discuss below the reasons I think it is very useful to have, in particular, the object library be replaced. We call object space such an object library. The standard object space is the object space that works just like Python's, that is, the object space whose black boxes are real Python objects that work as expected. We will call wrapped objects the black boxes of an object space. +**newdict([..]):** + Takes an interpreter level list of interpreter level pairs of wrapped key:wrapped value entries (and NOT an interpreter level dictionary!). -Here are three examples of object spaces: +**newslice(w_start, w_end, w_step):** + Makes a new slice object. -- StandardObjectSpace_ -- AbstractObjectSpace_ -- AnnotateObjectSpace_ +**newstring(asciilist):** + Creates a string from a list of wrapped integers. -(We should also talk about turning the compiler and the main loop into explicit concepts, as Rocco discussed in pypy-dev.) +Conversions from Application Level to Interpreter Level +---------------------------------------------------------- -I believe that the above examples should give a hint at why we might really want object spaces that behave differently: this is called abstract interpretation in the literature. But there are also more funny ways to use object spaces, for example: +**unwrap(w_x):** + Return Interpreter Level equivalent of w_x -+ running with several object spaces at once, to clearly separate the data into domains -+ proxy object spaces, which forward all requests over a network to a "Python object server" -+ and more... there have been numerous ideas in pypy-dev. +**interpclass_w(w_x):** + If w_x is a wrapped instance of an interpreter class -- for example Function, Frame, Cell, etc. -- return it unwrapped. Otherwise return None. +**int_w(w_x):** + If w_x is an application-level integer or long which can be converted without overflow to an integer, return an interpreter-level integer. Otherwise raise TypeError or OverflowError. + +**str_w(w_x):** + If w_x is an application-level string, return an interpreter-level string. Otherwise raise TypeError. + +**float_w(w_x):** + If w_x is an application-level float, integer or long, return interpreter-level float. Otherwise raise TypeError or OverflowError in case of very large longs. + +**is_true(w_x):** + Return a interpreter level bool (True or False). + +**unpackiterable(w_iterable, expected_length=None):** + Unpack an iterable object into a real (interpreter level) list. Raise a real ValueError if the expected_length is wrong. + +**unpacktuple(w_tuple, expected_length=None):** + Same as unpackiterable(), but only for tuples. + + +Data Members +----------------- + ++ self.builtin ++ self.sys ++ self.w_None: The ObjSpace's None ++ self.w_True: The ObjSpace's True ++ self.w_False: The ObjSpace's False ++ self.w_Ellipsis: The ObjSpace's Ellipsis ++ self.w_NotImplemented: The ObjSpace's NotImplemented + ++ ObjSpace.MethodTable: + List of tuples (method name, symbol, number of arguments, list of special names) for the regular part of the interface. (Tuples are interpreter level.) + ++ ObjSpace.BuiltinModuleTable: + List of names of built-in modules. + ++ ObjSpace.ConstantTable: + List of names of the constants that the object space should define + ++ ObjSpace.ExceptionTable: + List of names of exception classes. + + +The Standard Object Space +========================= + +The Standard Object Space (StdObjSpace_) is the direct equivalent of CPython's object library (the "Objects/" subdirectory in the distribution). It is an implementation of the common Python types in a lower-level language. + +The Standard Object Space defines an abstract parent class, W_Object, and a bunch of subclasses like W_IntObject, W_ListObject, and so on. A wrapped object (a "black box" for the interpreter main loop) is thus an instance of one of these classes. When the main loop invokes an operation, say the addition, between two wrapped objects w1 and w2, the Standard Object Space does some internal dispatching (similar to "Object/abstract.c" in CPython) and invokes a method of the proper W_XyzObject class that can do the operation. The operation itself is done with the primitives allowed by RestrictedPython. The result is constructed as a wrapped object again. For example, compare the following implementation of integer addition with the function "int_add()" in "Object/intobject.c": :: + + def int_int_add(space, w_int1, w_int2): + x = w_int1.intval + y = w_int2.intval + try: + z = x + y + except OverflowError: + raise FailedToImplement(space.w_OverflowError, + space.wrap("integer addition")) + return W_IntObject(z) + +Why such a burden just for integer objects? Why did we have to wrap them into W_IntObject instances? For them it seems it would have been sufficient just to use plain Python integers. But this argumentation fails just like it fails for more complex kind of objects. Wrapping them just like everything else is the cleanest solution. You could introduce case testing wherever you use a wrapped object, to know if it is a plain integer or an instance of (a subclass of) W_Object. But that makes the whole program more complicated. The equivalent in CPython would be to use PyObject* pointers all around except when the object is an integer (after all, integers are directly available in C too). You could represent small integers as odd-valuated pointers. But it puts extra burden on the whole C code, so the CPython team avoided it. + +In our case it is a later optimization that we could make. We just don't want to make it now (and certainly not hard-coded at this level -- it could be introduced by the C translators that we will eventually write). So in summary: wrapping integers as instances is the simple path, while using plain integers instead is the complex path, not the other way around. + +Note that the Standard Object Space implementation uses MultiMethod dispatch instead of the complex rules of "Object/abstract.c". I think that this can be translated to a different low-level dispatch implementation that would be binary compatible with CPython's (basically the PyTypeObject structure and its function pointers). If compatibility is not required it will be more straightforwardly converted into some efficient multimethod code. + +--------------------------------------------------------------------------- + +.. _StdObjSpace: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/ + + +The Trace Object Space +====================== + +XXX see `this overview`_. + +.. _`this overview`: architecture.html#trace-object-space + + +The Thunk Object Space +====================== + +This small object space, meant as a nice example, wraps another object space (e.g. the standard one) and adds two capabilities: lazily computed objects (computed only when an operation is performed on them), and "become", which completely and globally replaces an object with another. + +Example usage:: + + $ python interpreter/py.py -o thunk + >>> def f(): + ... print 'computing...' + ... return 6*7 + ... + >>> x = thunk(f) + >>> x + computing... + 42 + >>> x + 42 + >>> y = thunk(f) + >>> type(y) + computing... + + + +The Flow Object Space +===================== + +Introduction ------------ -.. _ObjectSpaceInterface: objspaceinterface.html -.. _StandardObjectSpace: stdobjspace.html -.. _AbstractObjectSpace: abstractobjspace.html -.. _AnnotateObjectSpace: annotateobjspace.html +The task of the FlowObjSpace_ is to generate a control-flow graph from a function. This graph will also contain a trace of the individual operations, so that it is actually just an alternate representation for the function. + +The FlowObjSpace is an object space, which means that it exports the standard object space interface and it is driven by the interpreter. + +The basic idea is that if the interpreter is given a function, e.g.:: + + def f(n): + return 3*n+2 + +it will do whatever bytecode dispatching and stack-shuffling needed, during which it issues a sequence of calls to the object space. The FlowObjSpace merely records these calls (corresponding to "operations") in a structure called a basic block. To track which value goes where, the FlowObjSpace invents placeholder "wrapped objects" and give them to the interpreter, so that they appear in some next operation. This technique is an example of `Abstract Interpretation`_. + +.. _`Abstract Interpretation`: theory.html#abstract-interpretation + +For example, if the placeholder ``v1`` is given as the argument to the above function, the interpreter will call ``v2 = space.mul(space.wrap(3), v1)`` and then ``v3 = space.add(v2, space.wrap(2))`` and return ``v3`` as the result. During these calls the FlowObjSpace will record a basic block:: + + Block(v1): # input argument + v2 = mul(Constant(3), v1) + v3 = add(v2, Constant(2)) + + +.. _FlowObjSpace: http://codespeak.net/svn/pypy/dist/pypy/objspace/flow/ + + +The Flow model +-------------- + +``pypy.objspace.flow.model`` defines the data model used by the flow graphs, as created by the FlowObjSpace, manipulated by ``pypy.translator.simplify`` and ``pypy.translator.transform``, and in general read by almost all the modules in ``pypy.translator``. + +It is recommended to play with ``python translator.py`` on a few examples to get an idea of the structure of flow graphs. Here is a short summary of the non-obvious parts. + + +FunctionGraph + A container for one graph (corresponding to one function). + + :startblock: the first block. It is where the control goes when the function is called. The input arguments of the startblock are the function's arguments. If the function takes a ``*args`` argument, the ``args`` tuple is given as the last input argument of the startblock. + :returnblock: the (unique) block that performs a function return. It is empty, not actually containing any ``return`` operation; the return is implicit. The returned value is the unique input variable of the returnblock. + :exceptblock: the (unique) block that raises an exception out of the function. The two input variables are the exception class and the exception value, respectively. (No other block will actually link to the exceptblock if the function does not explicitely raise exceptions.) + + +Block + A basic block, containing a list of operations and ending in jumps to other basic blocks. All the values that are "live" during the execution of the block are stored in Variables. Each basic block uses its own distinct Variables. + + :inputargs: list of fresh, distinct Variables that represent all the values that can enter this block from any of the previous blocks. + :operations: list of SpaceOperations. + :exitswitch: see below + :exits: list of Links representing possible jumps from the end of this basic block to the beginning of other basic blocks. + + Each Block ends in one of the following ways: + + * unconditional jump: exitswitch is None, exits contains a single Link. + * conditional jump: exitswitch is one of the Variables that appear in the Block, and exits contains one or more Links (usually 2). Each Link's exitcase gives a concrete value. This is the equivalent of a "switch": the control follows the Link whose exitcase matches the run-time value of the exitswitch Variable. It is a run-time error if the Variable doesn't match any exitcase. (Currently only used with 2 Links whose exitcase are False and True, respectively.) + * exception catching: exitswitch is ``Constant(last_exception)``. The first Link has exitcase set to None and represents the non-exceptional path. The next Links have exitcase set to a subclass of Exception, and are taken when the *last* operation of the basic block raises a matching exception. (Thus the basic block must not be empty, and only the last operation is protected by the handler.) + * return or except: the returnblock and the exceptblock have operations set to an empty tuple, exitswitch to None, and exits empty. + + +Link + A link from one basic block to another. + + :prevblock: the Block that this Link is an exit of. + :target: the target Block to which this Link points to. + :args: a list of Variables and Constants, of the same size as the target Block's inputargs, which gives all the values passed into the next block. (Note that each Variable used in the prevblock may appear zero, one or more times in the ``args`` list.) + :exitcase: see above. + + Note that ``args`` uses Variables from the prevblock, which are matched to the target block's ``inputargs`` by position, as in a tuple assignment or function call would do. + + +SpaceOperation + A recorded (or otherwise generated) basic operation. + + :opname: the name of the operation. Generally one from the list in ``pypy.interpreter.baseobjspace``. + :args: list of arguments. Each one is a Constant or a Variable seen previously in the basic block. + :result: a *new* Variable into which the result is to be stored. + + Note that operations usually cannot implicitely raise exceptions at run-time; so for example, code generators can assume that a ``getitem`` operation on a list is safe and can be performed without bound checking. The exceptions to this rule are: (1) if the operation is the last in the block, which ends with ``exitswitch == Constant(last_exception)``, then the implicit exceptions must be checked for, generated, and caught appropriately; (2) calls to other functions, as per ``simple_call`` or ``call_args``, can always raise whatever the called function can raise --- and such exceptions must be passed through to the parent unless they are caught as above. + + +Variable + A placeholder for a run-time value. There is mostly debugging stuff here. + + :name: it is good style to use the Variable object itself instead of its ``name`` attribute to reference a value, although the ``name`` is guaranteed unique. + + +Constant + A constant value used as argument to a SpaceOperation, or as value to pass across a Link to initialize an input Variable in the target Block. + + :value: the concrete value represented by this Constant. + :key: a hashable object representing the value. + + A Constant can occasionally store a mutable Python object. It represents a static, pre-initialized, read-only version of that object. The flow graph should not attempt to actually mutate such Constants. + + +XXX talk about implicit exceptions + + +How the FlowObjSpace works +-------------------------- + +The FlowObjSpace works by recording all operations issued by the interpreter into basic blocks. A basic block ends in one of two cases: when the interpreters calls ``is_true()``, or when a joinpoint is reached. + +* A joinpoint occurs when the next operation is about to be recorded into the current block, but there is already another block that records an operation for the same bytecode position. This means that the interpreter has closed a loop and is interpreting already-seen code again. In this situation, we interrupt the interpreter and we make a link from the end of the current block back to the previous block, thus closing the loop in the flow graph as well. (Note that this occurs only when an operation is about to be recorded, which allows some amount of constant-folding.) + +* If the interpreter calls ``is_true()``, the FlowObjSpace doesn't generally know if the answer should be True or False, so it puts a conditional jump and generates two successor blocks for the current basic block. There is some trickery involved so that the interpreter is fooled into thinking that ``is_true()`` first returns False (and the subsequent operations are recorded in the first successor block), and later the *same* call to ``is_true()`` also returns True (and the subsequent operations go this time to the other successor block). + +(This section to be extended...) Deleted: /pypy/dist/pypy/documentation/objspaceinterface.txt ============================================================================== --- /pypy/dist/pypy/documentation/objspaceinterface.txt Sun Apr 17 20:57:21 2005 +++ (empty file) @@ -1,136 +0,0 @@ -================================ -PyPython ObjectSpaceInterface -================================ - -This is a draft version of the ObjectSpace_ interface. It is still evolving, although the public interface is not evolving as much as the internal interface that subclasses need to know about. This document now generally refers to the public interface; for subclassing you need to poke at the code in detail anyway. - - -class baseobjspace.ObjSpace -=========================== - -Administrative Functions ----------------------------- - -**initialize():** - Function which initializes w_builtins and the other w_constants. - -**getexecutioncontext():** - Return current active execution context. - -Operations on Objects in ObjectSpace ------------------------------------------ - -These functions both take and return "wrapped" objects. - -*The following functions implement the same operations as those in CPython:* - -``id, type, issubtype, iter, repr, str, len, hash,`` - -``getattr, setattr, delattr, getitem, setitem, delitem,`` - -``pos, neg, not_, abs, invert, add, sub, mul, truediv, floordiv, div, mod, divmod, pow, lshift, rshift, and_, or_, xor,`` - -``hex, oct, int, float, ord,`` - -``lt, le, eq, ne, gt, ge, contains,`` - -``inplace_add, inplace_sub, inplace_mul, inplace_truediv, inplace_floordiv, inplace_div, inplace_mod, inplace_pow, inplace_lshift, inplace_rshift, inplace_and, inplace_or, inplace_xor,`` - -``get, set, delete`` - -**next(w):** - Call the next function for iterator w, or raises a real NoValue. - -**call(w_callable, w_args, w_kwds):** - Call a function with the given args and keywords. - -**call_function(w_callable, *args_w, **kw_w):** - Convenience function that collects the arguments in a wrapped tuple and dict and invokes 'call()'. - -**is_(w_x, w_y):** - Implements 'w_x is w_y'. (Returns a wrapped result too!) - -**isinstance(w_obj, w_type):** - Implements 'issubtype(type(w_obj), w_type)'. (Returns a wrapped result too!) - -**exception_match(w_exc_type, w_check_class):** - Checks if the given exception type matches 'w_check_class'. Used in matching the actual exception raised with the list of those to catch in an except clause. (Returns a wrapped result too!) - -Creation of Application Level objects ---------------------------------------- - -**wrap(x):** - Returns a wrapped object that is a reference to the interpreter-level object x. This can be used either on simple immutable objects (integers, strings...) to create a new wrapped object, or on complex mutable objects to obtain an application-level-visible reference to them (e.g. instances of internal interpreter classes). - -**newbool(b):** - Creates a Bool Object from an interpreter level object. - -**newtuple([..]):** - Take an interpreter level list of wrapped objects. - -**newlist([..]):** - Takes an interpreter level list of wrapped objects. - -**newdict([..]):** - Takes an interpreter level list of interpreter level pairs of wrapped key:wrapped value entries (and NOT an interpreter level dictionary!). - -**newslice(w_start, w_end, w_step):** - Makes a new slice object. - -**newstring(asciilist):** - Creates a string from a list of wrapped integers. - -Conversions from Application Level to Interpreter Level ----------------------------------------------------------- - -**unwrap(w_x):** - Return Interpreter Level equivalent of w_x - -**interpclass_w(w_x):** - If w_x is a wrapped instance of an interpreter class -- for example Function, Frame, Cell, etc. -- return it unwrapped. Otherwise return None. - -**int_w(w_x):** - If w_x is an application-level integer or long which can be converted without overflow to an integer, return an interpreter-level integer. Otherwise raise TypeError or OverflowError. - -**str_w(w_x):** - If w_x is an application-level string, return an interpreter-level string. Otherwise raise TypeError. - -**float_w(w_x):** - If w_x is an application-level float, integer or long, return interpreter-level float. Otherwise raise TypeError or OverflowError in case of very large longs. - -**is_true(w_x):** - Return a interpreter level bool (True or False). - -**unpackiterable(w_iterable, expected_length=None):** - Unpack an iterable object into a real (interpreter level) list. Raise a real ValueError if the expected_length is wrong. - -**unpacktuple(w_tuple, expected_length=None):** - Same as unpackiterable(), but only for tuples. - - -Data Members ------------------ - -+ self.w_builtins -+ self.w_modules -+ self.w_None: The ObjectSpace's None -+ self.w_True: The ObjectSpace's True -+ self.w_False: The ObjectSpace's False -+ self.w_Ellipsis: The ObjectSpace's Ellipsis -+ self.w_NotImplemented: The ObjectSpace's NotImplemented - -+ ObjSpace.MethodTable: - List of tuples (method name, symbol, number of arguments, list of special names) for the regular part of the interface. (Tuples are interpreter level.) - -+ ObjSpace.BuiltinModuleTable: - List of names of built-in modules. - -+ ObjSpace.ConstantTable: - List of names of the constants that the object space should define - -+ ObjSpace.ExceptionTable: - List of names of exception classes. - ---------------------------- - -.. _ObjectSpace: objspace.html Modified: pypy/dist/pypy/documentation/redirections ============================================================================== --- pypy/dist/pypy/documentation/redirections (original) +++ pypy/dist/pypy/documentation/redirections Sun Apr 17 20:57:21 2005 @@ -1,6 +1,13 @@ # please make sure this is evaluatable { 'restrictedpy.html': 'coding-style.html#restricted-python', - 'testdesign.html' : 'coding-style.html#test-design', + 'testdesign.html' : 'coding-style.html#test-design', + + 'stdobjspace.html' : 'objspace.html#the-standard-object-space', + 'objspaceinterface.html': 'objspace.html#object-space-interface', + 'annotateobjspace.html' : 'objspace.html#the-flow-object-space', + 'wrapping.html' : 'objspace.html#wrapping-rules', + 'abstractobjspace.html' : 'theory.html#abstract-interpretation', + 'multimethod.html' : 'theory.html#multimethods', } Deleted: /pypy/dist/pypy/documentation/stdobjspace.txt ============================================================================== --- /pypy/dist/pypy/documentation/stdobjspace.txt Sun Apr 17 20:57:21 2005 +++ (empty file) @@ -1,28 +0,0 @@ -========================= -StandardObjectSpace -========================= - -The StandardObjectSpace is the direct equivalent of CPython's object library (the "Objects/" subdirectory in the distribution). It is an implementation of the common Python types in a lower-level language. - -The StandardObjectSpace defines an abstract parent class, W_Object, and a bunch of subclasses like W_IntObject, W_ListObject, and so on. A wrapped object (a "black box" for the interpreter main loop) is thus an instance of one of these classes. When the main loop invokes an operation, say the addition, between two wrapped objects w1 and w2, the StandardObjectSpace does some internal dispatching (similar to "Object/abstract.c" in CPython) and invokes a method of the proper W_XyzObject class that can do the operation. The operation itself is done with the primitives allowed by RestrictedPython. The result is constructed as a wrapped object again. For example, compare the following implementation of integer addition with the function "int_add()" in "Object/intobject.c": :: - - def int_int_add(space, w_int1, w_int2): - x = w_int1.intval - y = w_int2.intval - try: - z = x + y - except OverflowError: - raise FailedToImplement(space.w_OverflowError, - space.wrap("integer addition")) - return W_IntObject(z) - -Why such a burden just for integer objects? Why did we have to wrap them into W_IntObject instances? For them it seems it would have been sufficient just to use plain Python integers. But this argumentation fails just like it fails for more complex kind of objects. Wrapping them just like everything else is the cleanest solution. You could introduce case testing wherever you use a wrapped object, to know if it is a plain integer or an instance of (a subclass of) W_Object. But that makes the whole program more complicated. The equivalent in CPython would be to use PyObject* pointers all around except when the object is an integer (after all, integers are directly available in C too). You could represent small integers as odd-valuated pointers. But it puts extra burden on the whole C code, so the CPython team avoided it. - -In our case it is a later optimization that we could make. We just don't want to make it now (and certainly not hard-coded at this level -- it could be introduced by the C translators that we will eventually write). So in summary: wrapping integers as instances is the simple path, while using plain integers instead is the complex path, not the other way around. - -Note that the current StandardObjectSpace_ implementation uses MultiMethod_ dispatch instead of the complex rules of "Object/abstract.c". I think that this can be translated to a different low-level dispatch implementation that would be binary compatible with CPython's (basically the PyTypeObject structure and its function pointers). If compatibility is not required it will be more straightforwardly converted into some efficient multimethod code. - ---------------------------------------------------------------------------- - -.. _StandardObjectSpace: stdobjspace.html -.. _MultiMethod: multimethod.html Copied: pypy/dist/pypy/documentation/theory.txt (from r10785, pypy/dist/pypy/documentation/abstractobjspace.txt) ============================================================================== --- pypy/dist/pypy/documentation/abstractobjspace.txt (original) +++ pypy/dist/pypy/documentation/theory.txt Sun Apr 17 20:57:21 2005 @@ -1,16 +1,65 @@ -======================= -AbstractObjectSpace +=================================== +Techniques used in PyPy +=================================== + +.. contents:: +.. sectnum:: + +Abstract Interpretation ======================= -We currently don't really have an AbstractObjSpace but an AnnotateObjSpace_ (or AnnSpace for short) -which comes close to it. Abstract Interpretation means to the bytecode instructions of a program like an interpreter does but with abstract objects instead of concrete ones. Remember that in PyPy this is done by using alternate object spaces with the same interpreter main loop. +Abstract Interpretation is a general technique which consists of an interpreter that follows the bytecode instructions of a user program, just like a normal interpreter does, but with abstract objects instead of concrete ones. Remember that in PyPy this is done by using alternate object spaces with the same interpreter main loop. -The most abstract object space is the one manipulating the most abstract objects that you could imagine: they are all equivalent, because we have abstracted away any information about the object. There is actually only one of them left, and we can call it "the object". In Python terms, our AbstractObjectSpace uses None for all its wrapped objects. Any operation between wrapped objects gives None again as the wrapped result -- there is nothing else it could give anyway. So when you have said that the add method of AbstractObjectSpace takes None and None and returns None you have said everything. +As a theoretical example, the most abstract object space would be the one manipulating the most abstract objects that you could imagine: they are all equivalent, because we have abstracted away any information about the object. There is actually only one of them left, and we could call it "the object". In Python terms, an AbstractObjectSpace could use None for all its wrapped objects. Any operation between wrapped objects gives None again as the wrapped result -- there is nothing else it could give anyway. So when you have said that the add method of AbstractObjectSpace takes None and None and returns None you have said everything. -The point of such an object space is for example to check the bytecode. The interpreter will really run your bytecode, just with completely abstract arguments. If there is no problem then you are sure that the bytecode is valid. You could also record, during this abstract interpretation, how much the stack ever grows; that would give you a fool-proof method of computing the co_stacksize argument of a code object which might be useful for the PyPy compiler. (There are subtleties which I won't describe here, but that's the basic idea.) +The point of such an object space is for example to check the bytecode. The interpreter will really run your bytecode, just with completely abstract arguments. If there is no problem then you are sure that the bytecode is valid. You could also record, during this abstract interpretation, how much the stack ever grows; that would give you a fool-proof method of computing or checking the co_stacksize argument of a code object. (There are subtleties which I won't describe here, but that's the basic idea.) Typically, however, abstract object spaces are a (little) bit less abstract, still maintaining a minimal amount of information about the objects. For example, a wrapped object could be represented by its type. You then define the object space's add to return int when the two arguments are int and int. That way, you abstractedly call a function with the input argument's types and what the interpreter will do is a type inference. (Here also there are subtle problems, even besides the remark that integer operations can overflow and actually return longs in a real Python implementation.) As an example of more abstract object spaces you have the ones with finite domain, i.e. with a finite number of different possible wrapped objects. For example, you can use True and False as wrapped values to denote the fact that the object is, respectively, a non-negative integer or anything else. In this way you are doing another kind of type inference that just tells you which variables will only ever contain non-negative integers. -.. _AnnotateObjSpace: annotateobjspace.html +In PyPy, the FlowObjSpace_ uses the abstract interpretation technique to generate a control flow graph of the functions of RPython_ programs. + +.. _FlowObjSpace: objspace.html#the-flow-object-space +.. _RPython: coding-style.html#restricted-python + + +Multimethods +============ + +A "multimethod" is the generalization of the OOP notion of "method". +Theoretically, a method is a "message name" and signature attached to a +particular base class, which is implementated in the class or its subclasses. +To do a "method call" means to send a message to an object, using a message +name and actual arguments. We call "message dispatch" the operation of +finding which actual implementation is suitable for a particular call. For +methods, a message is dispatched by looking up the class of the "self" object, +and finding an implementation in that class, or in its base classes, in a +certain order. + +A multimethod is a message name and signature that can have implementations +that depend not only on the class of the first "self" argument, but on the +class of several arguments. Because of this we cannot use Python's nice model +of storing method implementations as functions, in the attributes of the +class. + +Here is a common implementation of multimethods: they are instances of a +specific MultiMethod class, and the instances are callable (there is a +__call__ operator on MultiMethod). When a MultiMethod is called, a dispatch +algorithm is used to find which, among the registered implementations, is the +one that should be called; this implementation is then immediately called. The +most important difference with normal methods is that the MultiMethod object +to call is no longer syntactically attached to classes. In other words, +whereas a method is called with ``obj.somemethod(args)``, a multimethod is +called much like a function, e.g. ``dosomething(obj1, obj2, obj3...)``. You +have to find the MultiMethod object ``dosomething`` in some namespace; it is +no longer implicitely looked up in the namespace of the "self" object. + +PyPy contains two different implementations of multimethods: a `quite general +one`_ written in RPython_ for the purposes of the StdObjSpace_, and a `short +two-arguments-dispatching one`_ used internally by the annotator_. + +.. _`quite general one`: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/multimethod.py +.. _StdObjSpace: objspace.html#the-standard-object-space +.. _`short two-arguments-dispatching one`: http://codespeak.net/svn/pypy/dist/pypy/annotation/pairtype.py +.. _annotator: annotation.html Deleted: /pypy/dist/pypy/documentation/wrapping.txt ============================================================================== --- /pypy/dist/pypy/documentation/wrapping.txt Sun Apr 17 20:57:21 2005 +++ (empty file) @@ -1,103 +0,0 @@ -========================= - Wrapping rules -========================= - -Introduction ------------- - -PyPy is made of Python source code at two levels: there is on the one hand *application-level code* that looks like normal Python code, and that implements some functionalities as one would expect from Python code (e.g. one can give a pure Python implementation of some built-in functions like ``zip()``). There is also *interpreter-level code* for the functionalities that must more directly manipulate interpreter data and objects (e.g. the main loop of the interpreter, and the various object spaces). - -Application-level code doesn't see object spaces explicitely: it runs using an object space to support the objects it manipulates, but this is implicit. There is no need for particular conventions for application-level code. The sequel is only about interpreter-level code. (Ideally, no application-level variable should be called ``space`` or ``w_xxx`` to avoid confusion.) - - -Naming conventions ------------------- - -* ``space``: the object space is only visible at interpreter-level, where it is by convention in a variable called ``space``. - -* ``w_xxx``: any object seen by application-level code is an object explicitely managed by the object space. From the interpreter-level point of view, this is called a *wrapped* object. The ``w_`` prefix is used for any type of application-level object. - -* ``xxx_w``: an interpreter-level container for wrapped objects, for example a list or a dict containing wrapped objects. Not to be confused with a wrapped object that would be a list or a dict: these are normal wrapped objects, so they use the ``w_`` prefix. - - -Operations on ``w_xxx`` ------------------------ - -The core interpreter considers wrapped objects as black boxes. It is not allowed to inspect them directly. The allowed operations are all dependent on the object space: they are called ``space.xxx()``, where ``xxx`` is a standard operation name (``add``, ``getattr``, ``call``, ``eq``...). The list of standard operations is found in the large table near the end of ``pypy.interpreter.baseobjspace``. These operations take wrapped arguments and return a wrapped result (or sometimes just None). - -Also note some helpers: - -* ``space.call_function(w_callable, ...)``: collects the given (already-wrapped) arguments, builds a wrapped tuple for them, and uses ``space.call()`` to perform the call. - -* ``space.call_method(w_object, 'method', ...)``: uses ``space.getattr()`` to get the method object, and then ``space.call_function()`` to invoke it. - - -Building ``w_xxx`` objects --------------------------- - -From the core interpreter, wrapped objects are usually built as the result of an object space operation. The ways to directly create a wrapped object are: - -* ``space.wrap(x)``: returns a wrapped object containing the value ``x``. Only works if ``x`` is either a simple value (integer, float, string) or an instance of an internal interpreter class (Function, Code, Frame...). - -* ``space.newlist([w_x, w_y, w_z...])``: returns a wrapped list from a list of already-wrapped objects. - -* ``space.newtuple([w_x, w_y, w_z...])``: returns a wrapped tuple from a list of already-wrapped objects. - -* ``space.newdict([])``: returns a new, empty wrapped dictionary. (The argument list can contain tuples ``(w_key, w_value)`` but it seems that such a use is not common.) - -* ``space.newbool(x)``: returns ``space.w_False`` or ``space.w_True`` depending on the truth value of ``x``. - -There are a few less common constructors, described in the comments at the end of ``pypy.interpreter.baseobjspace``. - - -Constant ``w_xxx`` objects --------------------------- - -The object space holds a number of predefined wrapped objects. The most common ones are ``space.w_None`` and ``space.w_XxxError`` for each exception class ``XxxError`` (e.g. ``space.w_KeyError``, ``space.w_IndexError``, etc.). - - -Inspecting ``w_xxx`` objects ----------------------------- - -The most delicate operation is for the interpreter to inspect a wrapped object, which must be done via the object space. - -* ``space.is_true(w_x)``: checks if the given wrapped object is considered to be ``True`` or ``False``. You must never use the truth-value of ``w_x`` directly; doing so (e.g. writing ``if w_x:``) will give you an error reminding you of the problem. - -* ``w_x == w_y`` or ``w_x is w_y``: DON'T DO THAT. The only half-official exception is to check if ``w_x`` contains a wrapped ``None``: you can write ``w_x == space.w_None``. Follow this rule; the case of ``None`` is easy to fix globally later if we find out that we need to. The rationale for this rule is that there is no reason that two wrappers are related in any way even if they contain what looks like the same object at application-level. To check for equality, use ``space.is_true(space.eq(w_x, w_y))``. To check for identity, use ``space.is_true(space.is_(w_x, w_y))``. - -* ``space.unpackiterable(w_x)``: this helper iterates ``w_x`` (using ``space.iter()`` and ``space.next()``) and collects the resulting wrapped objects in a list. Of course, in cases where iterating directly is better than collecting the elements in a list first, you should use ``space.iter()`` and ``space.next()`` directly. - -* ``space.unwrap(w_x)``: inverse of ``space.wrap()``. Attention! Using ``space.unwrap()`` must be avoided whenever possible, i.e. only use this when you are well aware that you are cheating, in unit tests or bootstrapping code. - -* ``space.interpclass_w(w_x)``: If w_x is a wrapped instance of an interpreter class -- for example Function, Frame, Cell, etc. -- return it unwrapped. Otherwise return None. - -* ``space.int_w(w_x)``: If w_x is an application-level integer or long which can be converted without overflow to an integer, return an interpreter-level integer. Otherwise raise TypeError or OverflowError. - -* ``space.str_w(w_x)``: If w_x is an application-level string, return an interpreter-level string. Otherwise raise TypeError. - -* ``space.float_w(w_x)``: If w_x is an application-level float, integer or long, return interpreter-level float. Otherwise raise TypeError or OverflowError in case of very large longs. - -Remember that you can usually obtain the information you want by invoking operations or methods on the wrapped objects; e.g. ``space.call_method(w_dict, 'iterkeys')`` returns a wrapped iterable that you can decode with ``space.unpackiterable()``. - - -Application-level exceptions ----------------------------- - -Interpreter-level code can use exceptions freely. However, all application-level exceptions are represented as an ``OperationError`` at interpreter-level. In other words, all exceptions that are potentially visible at application-level are internally an ``OperationError``. This is the case of all errors reported by the object space operations (``space.add()`` etc.). - -To raise an application-level exception:: - - raise OperationError(space.w_XxxError, space.wrap("message")) - -To catch a specific application-level exception:: - - try: - ... - except OperationError, e: - if not e.match(space, space.w_XxxError): - raise - ... - -This construct catches all application-level exceptions, so we have to match it against the particular ``w_XxxError`` we are interested in and re-raise other exceptions. The exception instance ``e`` holds two attributes that you can inspect: ``e.w_type`` and ``e.w_value``. Do not use ``e.w_type`` to match an exception, as this will miss exceptions that are instances of subclasses. - -We are thinking about replacing ``OperationError`` with a family of common exception classes (e.g. ``AppKeyError``, ``AppIndexError``...) so that we can more easily catch them. The generic ``AppError`` would stand for all other application-level classes. From arigo at codespeak.net Sun Apr 17 21:40:59 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 17 Apr 2005 21:40:59 +0200 (CEST) Subject: [pypy-svn] r10789 - pypy/dist/pypy/documentation Message-ID: <20050417194059.5E95727B4B@code1.codespeak.net> Author: arigo Date: Sun Apr 17 21:40:59 2005 New Revision: 10789 Modified: pypy/dist/pypy/documentation/objspace.txt Log: Reviewed the text about the stdobjspace. Modified: pypy/dist/pypy/documentation/objspace.txt ============================================================================== --- pypy/dist/pypy/documentation/objspace.txt (original) +++ pypy/dist/pypy/documentation/objspace.txt Sun Apr 17 21:40:59 2005 @@ -251,25 +251,26 @@ The Standard Object Space defines an abstract parent class, W_Object, and a bunch of subclasses like W_IntObject, W_ListObject, and so on. A wrapped object (a "black box" for the interpreter main loop) is thus an instance of one of these classes. When the main loop invokes an operation, say the addition, between two wrapped objects w1 and w2, the Standard Object Space does some internal dispatching (similar to "Object/abstract.c" in CPython) and invokes a method of the proper W_XyzObject class that can do the operation. The operation itself is done with the primitives allowed by RestrictedPython. The result is constructed as a wrapped object again. For example, compare the following implementation of integer addition with the function "int_add()" in "Object/intobject.c": :: - def int_int_add(space, w_int1, w_int2): + def add__Int_Int(space, w_int1, w_int2): x = w_int1.intval y = w_int2.intval try: - z = x + y + z = ovfcheck(x + y) except OverflowError: raise FailedToImplement(space.w_OverflowError, space.wrap("integer addition")) - return W_IntObject(z) + return W_IntObject(space, z) Why such a burden just for integer objects? Why did we have to wrap them into W_IntObject instances? For them it seems it would have been sufficient just to use plain Python integers. But this argumentation fails just like it fails for more complex kind of objects. Wrapping them just like everything else is the cleanest solution. You could introduce case testing wherever you use a wrapped object, to know if it is a plain integer or an instance of (a subclass of) W_Object. But that makes the whole program more complicated. The equivalent in CPython would be to use PyObject* pointers all around except when the object is an integer (after all, integers are directly available in C too). You could represent small integers as odd-valuated pointers. But it puts extra burden on the whole C code, so the CPython team avoided it. -In our case it is a later optimization that we could make. We just don't want to make it now (and certainly not hard-coded at this level -- it could be introduced by the C translators that we will eventually write). So in summary: wrapping integers as instances is the simple path, while using plain integers instead is the complex path, not the other way around. +In our case it is a later optimization that we could make. We just don't want to make it now (and certainly not hard-coded at this level -- it could be introduced by the code generators at translation time). So in summary: wrapping integers as instances is the simple path, while using plain integers instead is the complex path, not the other way around. -Note that the Standard Object Space implementation uses MultiMethod dispatch instead of the complex rules of "Object/abstract.c". I think that this can be translated to a different low-level dispatch implementation that would be binary compatible with CPython's (basically the PyTypeObject structure and its function pointers). If compatibility is not required it will be more straightforwardly converted into some efficient multimethod code. +Note that the Standard Object Space implementation uses MultiMethod_ dispatch instead of the complex rules of "Object/abstract.c". I think that this can be translated to a different low-level dispatch implementation that would be binary compatible with CPython's (basically the PyTypeObject structure and its function pointers). If compatibility is not required it will be more straightforwardly converted into some efficient multimethod code. --------------------------------------------------------------------------- .. _StdObjSpace: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/ +.. _MultiMethod: theory.html#multimethods The Trace Object Space From hpk at codespeak.net Sun Apr 17 21:51:39 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 21:51:39 +0200 (CEST) Subject: [pypy-svn] r10790 - pypy/dist/pypy/documentation Message-ID: <20050417195139.0BA1A27B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 21:51:38 2005 New Revision: 10790 Added: pypy/dist/pypy/documentation/getting_started.txt - copied, changed from r10788, pypy/dist/pypy/documentation/howtopypy.txt Removed: pypy/dist/pypy/documentation/checking_ReST.txt pypy/dist/pypy/documentation/howtopypy.txt pypy/dist/pypy/documentation/howtosvn.txt pypy/dist/pypy/documentation/optionaltool.txt Modified: pypy/dist/pypy/documentation/coding-style.txt pypy/dist/pypy/documentation/redirections Log: third row of refactoring the documentation Deleted: /pypy/dist/pypy/documentation/checking_ReST.txt ============================================================================== --- /pypy/dist/pypy/documentation/checking_ReST.txt Sun Apr 17 21:51:38 2005 +++ (empty file) @@ -1,9 +0,0 @@ -1. You need to have docutils installed. -2. docutils/tools/buildhtml.py converts your ReST .txt files into .html - files, and complains when your document has errors. -3. There is one problem. It converts _every_ .txt to an .html, and there - is no option to just specify one file. I get around this problem by - making a directory and moving my new file there for testing, and then - moving it back when I am done. 0 Elegance points for that fix ... - - Laura \ No newline at end of file Modified: pypy/dist/pypy/documentation/coding-style.txt ============================================================================== --- pypy/dist/pypy/documentation/coding-style.txt (original) +++ pypy/dist/pypy/documentation/coding-style.txt Sun Apr 17 21:51:38 2005 @@ -336,3 +336,78 @@ - each test directory needs a copy of pypy/tool/autopath.py which upon import will make sure that sys.path contains the directory where 'pypy' is in. + +PyPy Documentation +================== + +Adding documentation +-------------------- + +Please add new or updated documentation by checking it in to the appropriate +directory in subversion, usually under +http://codespeak.net/svn/pypy/dist/pypy/documentation + ++ Remember to run ``svn up`` **before** doing any commit. ++ All filenames should be lowercase, and documentation should be .txt files. ++ Mark-up the documentation with reST so it can generate a pretty html version. ++ On the server side a commit on the doc-subtree will immediately update the webpage. + +*Note* If you don't markup the textfile, it'll still be checked in, but when docutils +runs the parser, it'll look ugly on the website. So run docutils yourself before you commit it. + +Some reST basics: +----------------- + +There should be a title on your page. Do it like this:: + + Here is my Title + ================== + + Here is a section title + ------------------------- + +Make sure you have a blank line after your = or - lines or it will give you an error. +For marking a block of code so it'll look right, you can:: + + Put a line of text ending with :: + indent your code at least one space + my code + more code + even more code + still more code + +End of the "block" occurs whenever you unindent back to the same level as the +text with the ``::`` at the end. + +Using an underscore after a word like ``this_`` will make reST think you want a hyperlink. +To avoid that (especially with things like ``wrap_``), you can use the `` back quote `` +to mark it as plain text. + +You can get more info on reST markup at http://docutils.sourceforge.net/docs/rst/quickref.html + + +Automatically testing documentation changes +------------------------------------------- + +.. _`docutils home page`: +.. _`docutils`: http://docutils.sourceforge.net/ + +We automatically check referential integrity and ReST-conformance. In order to +run the tests you need docutils_ installed. Then go to the local checkout +of the documentation directory and run the tests:: + + cd .../pypy/documentation + python ../test_all.py + +If you see no failures chances are high that your modifications at least +don't produce ReST-errors or wron local references. A side effect of running +the tests is that you have `.html` files in the documentation directory +which you can point your browser to! + +Additionally, if you also want to check for remote references inside +the documentation issue:: + + python ../test_all.py --checkremote + +which will check that remote URLs are reachable. + Copied: pypy/dist/pypy/documentation/getting_started.txt (from r10788, pypy/dist/pypy/documentation/howtopypy.txt) ============================================================================== --- pypy/dist/pypy/documentation/howtopypy.txt (original) +++ pypy/dist/pypy/documentation/getting_started.txt Sun Apr 17 21:51:38 2005 @@ -5,10 +5,11 @@ .. contents:: .. sectnum:: +.. _howtopypy: + Just the facts ============== - Checking out & running PyPy as a two-liner ------------------------------------------ @@ -22,8 +23,7 @@ have fun :-) -You can also go the more `detailed version`_ of this -two-liner. +You can also go the more `detailed version`_ of this two-liner. Browsing via HTTP and getting an svn client ------------------------------------------- @@ -32,7 +32,6 @@ (sorry, viewcvs is still not stable enough with subversion). And here is some information to `install a subversion client`_. -.. _`install a subversion client`: howtosvn.html .. _`browse the pypy source code`: http://codespeak.net/svn/pypy/dist coding style and testing @@ -60,109 +59,16 @@ within the pypy project. Even better, come to our next sprint so that we can get to know you. -.. _`documentation start page`: http://codespeak.net/pypy/index.cgi?doc/index.html -.. _`coding-style document`: http://codespeak.net/pypy/index.cgi?doc/coding-style.html -.. _`py.test`: http://codespeak.net/py/current/doc/test.html - - -PyPy Documentation -================== - Viewing documentation --------------------- -PyPy documentation is generated from reST textfiles in the pypy/documentation directory of -our pypy-subversion repository. Go to the `documentation start page`_ and hit -"recently modified" to get a list of recently modified documents. While in -"doc-view" you also have a navigation area on the left side which maps all -documentation files. - -Adding documentation --------------------- - -Please add new or updated documentation by checking it in to the appropriate -directory in subversion, usually under -http://codespeak.net/svn/pypy/dist/pypy/documentation - -+ Remember to run ``svn up`` **before** doing any commit. -+ All filenames should be lowercase, and documentation should be .txt files. -+ Mark-up the documentation with reST so it can generate a pretty html version. -+ On the server side a commit on the doc-subtree will immediately update the webpage. - -*Note* If you don't markup the textfile, it'll still be checked in, but when docutils -runs the parser, it'll look ugly on the website. So run docutils yourself before you commit it. - -Some reST basics: ------------------ - -There should be a title on your page. Do it like this:: - - Here is my Title - ================== - - Here is a section title - ------------------------- - -Make sure you have a blank line after your = or - lines or it will give you an error. -For marking a block of code so it'll look right, you can:: - - Put a line of text ending with :: - indent your code at least one space - my code - more code - even more code - still more code - -End of the "block" occurs whenever you unindent back to the same level as the -text with the ``::`` at the end. - -Using an underscore after a word like this_ will make reST think you want a hyperlink. -To avoid that (especially with things like ``wrap_``), you can use the `` back quote `` -to mark it as plain text. - -You can get more info on reST markup at http://docutils.sourceforge.net/docs/rst/quickref.html - -Checking your work ------------------------- - -In order to make sure that what you commit looks reasonably pretty (or at least not -entirely broken), you'll need to run the ``docutils`` parser on it. Unless you've -installed it in the past, you probably don't have it installed. Open IDLE (or any -Python interactive environment) and try "import docutils". If it imports, hooray! -Otherwise, you'll need to download it. - -Go to sourceforge and download the ``snapshot`` version. Install it. - -*Note to Debian users:* Be sure you installed ``python2.2-dev``, which includes ``distutils``, -before trying to install ``docutils``. - -Once you have ``docutils`` installed, you can use it go to your shell and use it like this:: - - $ python ~/mypath/docutils/tools/buildhtml.py - /// Processing directory: /home/anna/downloads/arObjSpaceDoc - ::: Processing .txt: howtosvn.txt - ::: Processing .txt: index.txt - -**WARNING** This will process **all** text documents in the directory and any subdirectories. -I prefer to work on text in a separate directory, run the ``docutils`` parser to see what it -looks like, then copy the .txt file over to my local /doc checkouts to commit it. - -Use a browser menu to go to ``File: Open: filename.html`` then you can see what it looks -like. Look at the command shell to see what errors you've got on which lines and fix it -in your textfile. You can then re-run the buildhtml.py script and see what errors you get. -After it's fixed, you can commit the .txt file and it'll automagically be turned into html -viewable on the website. - - -Here are some sample reST textfiles to see what it looks like: - -+ ObjectSpace_ -+ ObjectSpaceInterface_ - -.. _this: http://docutils.sourceforge.net/docs/rst/quickref.html -.. _ObjectSpace: objspace.html -.. _ObjectSpaceInterface: objspace.html#object-space-interface +PyPy documentation is generated from reST textfiles in the pypy/documentation directory +of our pypy-subversion repository. Go to the `documentation start page`_ +and look around. +.. _`documentation start page`: index.html +.. _`coding-style document`: coding-style.html +.. _`py.test`: http://codespeak.net/py/current/doc/test.html .. _`detailed version`: @@ -177,7 +83,10 @@ follow these instructions, which assume that you are working in a DOS box (Windows) or terminal (MacOS/X or Linux). -1. Download subversion_ if you do not already have it. +detailed steps +-------------- + +1. Download and install subversion_ if you do not already have it. 2. Change to the directory where you wish to install the source tree, and use subversion to download the source:: @@ -262,7 +171,7 @@ .. _`installed py.test`: http://codespeak.net/py/current/doc/getting_started.html Trying out the translator -========================= +------------------------- The translator is a tool based on the PyPy interpreter which can translate sufficiently static Python programs into low-level code. @@ -305,7 +214,7 @@ Where to start reading the sources -================================== +---------------------------------- PyPy is made from parts that are relatively independent from each other. You should start looking at the part that attracts you most: @@ -336,7 +245,7 @@ To learn more -============= +------------- * To learn more about PyPy and its development process, head read around in the documentation_ and the wiki_, and consider @@ -347,9 +256,47 @@ `unit tests`_ and file some `bug reports`_ (although we are not really actively using the issue tracker yet, watch out :-) +.. _optionaltool: + +Additional Tools for running (and hacking) PyPy +----------------------------------------------- + +We use some optional tools for working on pypy. They are not required to run +all the tests or to get an interactive PyPy prompt but they help to understand +and debug PyPy. + +Recommended tools ++++++++++++++++++ + +* graphviz:: + + (used for visualizing the control-flow) + http://www.research.att.com/sw/tools/graphviz/download.html_ + +* pygame:: + + (to visualize control flow and annotation analysis of python programs) + http://www.pygame.org/download.shtml_ + + - on MAC OSX: XXX (please provide help on how to sanely + install pygame on OSX) + +Optional tools +++++++++++++++ + +* llvm: + One of our backends uses the `low level virtual machine`_ to generate + processor independant machine level code. + +* CLISP:: + + http://clisp.cons.org/_ + +.. _`low level virtual machine`: http://llvm.cs.uiuc.edu/ + + -------------------------------------------------------------------------------- -.. _subversion: http://codespeak.net/pypy/index.cgi?doc/howtosvn.html .. _Dot Graphviz: http://www.research.att.com/sw/tools/graphviz/ .. _Pygame: http://www.pygame.org/ .. _dist-pypy/pypy/interpreter: http://codespeak.net/svn/pypy/dist/pypy/interpreter/ @@ -378,3 +325,183 @@ .. _wiki: http://codespeak.net/moin/pypy/moin.cgi/FrontPage?action=show .. _unit tests: http://codespeak.net/pypy/index.cgi?doc/testdesign.html .. _bug reports: http://codespeak.net/issues/pypy/ + + + + +.. _subversion: +.. _`install a subversion client`: +.. _howtosvn: + +subversion +========== + + +The PyPy codebase, documentation and web pages are controlled by subversion. +If you already know how to use it here is the URL you need to interact +with subversion: + +``http://codespeak.net/svn/pypy/dist`` + +If you don't know what to do then Jens-Uwe Mager has prepared some +installation files which should help you to install subversion on +your computer. + ++ Download Unix source tarball or prepackaged versions_ for MacOS, Windows, FreeBSD and Linux + ++ Additional information for Windows users: + + * See Microsoft website_ if you have .DLL issues. + + * Windows Installer file for Tortoise SVN (like Tortoise CVS) GUI_ + (Pick the UNICODE version for Windows 2000 and XP and + see Win_ 2000, NT if you have problems loading it.) + ++ Local copy of MacOS_ X binary tar ball + (This requires at least OS X 10.3) + ++ Debian instructions below... + +btw, HowToInstallServer_ sketches how to install a subversion server on Linux (not as easy as the client install). You don't need to install server side files to get your client going. + +Getting started +----------------- + +If you're just getting started with subversion, here's a simple how-to. +For complete information, you can go read the subversion guide_. + +**Download and install the appropriate installation file of subversion above.** + +For linux: + +download the tarball. unzip and untar it. Then type *./configure*. Then, as root, *make* followed by *make install*. Voil?? ... a subversion client. + +For Debian users:: + + $ apt-get install subversion-tools + +People using Debian *stable* first need to add the following line to ``/etc/apt/sources.list`` (thanks backports_!):: + + deb http://fs.cs.fhm.edu/mirror/backports.org/debian stable subversion + +Note that you can always go look at the files online_ with your browser, located at: http://codespeak.net/svn/pypy/dist +But, you'll want to check out your own local copies to work on. + +Check out and Check in +---------------------------- + +There are currently two directories you'll want to check out: /src and /doc +In order to get the sourcecode and docs downloaded onto your drive, open a shell or commandline and type:: + + $ svn co http://codespeak.net/svn/pypy/dist + $ svn co http://codespeak.net/svn/pypy/extradoc + +If you are behind a dump proxy this may or may not work; see below. + +Once you've got the files checked out to your own system, you can use your favorite text editor to change to files. Be sure to read the coding-style_ and other documentation files before doing a lot of work on the source code. Before doing any work, make sure you're using the most recent update with:: + + $ svn up + +this will update whichever subdirectory you're in (doc or src). + +When you're ready to **check in** a file, + +cd to your local checked out sourcecode directory, and if necessary, copy the file over from wherever you worked on it:: + + $ cp ~/mydir/filename.ext filename.ext + +If you're adding a brand-new file:: + + $ svn add filename.ext + +Then, to **commit** it:: + + $ svn ci -m "your comments about what changes your committing" + $ your password: (this may not be necessary) + +You'll see something like the following:: + + Adding goals/stringcomp.py + Transmitting file data . + Committed revision 578. + +or:: + + Sending coding-style.txt + Transmitting file data . + Committed revision 631. + +Check online on the check-in archives_ and you'll see your revision. Feel free to add a documentation file on any major changes you've made! + +Some other useful subversion tricks: +-------------------------------------- + +**Be sure to remember ``svn`` in the commandline in the following commands.** + +``$ svn mv filename.ext`` + to move or rename a file + +``$ svn rm filename.ext`` + to remove (delete) a file + +``$ svn status`` + will let you know what changes you've made compared to the current repository version + +``$ svn revert filename.ext`` + will fix problems if you deleted or moved a file without telling svn. + +``$ svn cleanup`` + last resort to fix it if you've got a totally messed up local copy. + Use this if you see error messages about ``locked`` files that you can't fix otherwise. + +Circumventing proxies +---------------------------- + +Some proxies don't let extended HTTP commands through. If you have an +error complaining about a bad request, you can ask subversion to use the +alternate port 8080 to connect to codespeak.net by adding the following +lines in a file ``~/.subversion/servers`` (on Unix) or +``%APPDATA%\Subversion\servers`` (on Windows):: + + [groups] + codespeak = codespeak.net + + [codespeak] + http-proxy-host = codespeak.net + http-proxy-port = 8080 + +How to Avoid Line-ending Hell +----------------------------- + +We will assume that whenever you create a .txt or a .py file, you would +like other people to be able to read it with the line endings their +OS prefers, even if that is different from the one your OS likes. This +could occasionally be wrong -- say when you are specifically testing +that code you are writing handles line endings properly -- but this is +what you want by default. Binary files, on the other hand, should be +stored exactly as is. This has to be set on every client. Here is how: + +In your home directory edit .subversion/config and comment in :: + + enable-auto-props = yes + + *.txt = svn:eol-style=native + +and add a line for .py files. + +-------------------------------------------------------------------------------- + + +.. _website: http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B259403 +.. _GUI: http://tortoisesvn.tigris.org/servlets/ProjectDocumentList?folderID=616 +.. _MacOS: http://codespeak.net/~jum/svn-1.1.3-darwin-ppc.tar.gz +.. _versions: http://subversion.tigris.org/project_packages.html +.. _Win: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4B6140F9-2D36-4977-8FA1-6F8A0F5DCA8F + +.. _guide: http://svnbook.red-bean.com/book.html#svn-ch-1 +.. _archives: http://codespeak.net/pipermail/pypy-svn/ +.. _online: http://codespeak.net/svn/pypy/dist/ +.. _coding-style: coding-style.html +.. _HowToInstallServer: http://codespeak.net/moin/pypy/moin.cgi/HowToInstallServer +.. _backports: http://www.backports.org + Deleted: /pypy/dist/pypy/documentation/howtopypy.txt ============================================================================== --- /pypy/dist/pypy/documentation/howtopypy.txt Sun Apr 17 21:51:38 2005 +++ (empty file) @@ -1,380 +0,0 @@ -================================== -Getting started with PyPy -================================== - -.. contents:: -.. sectnum:: - -Just the facts -============== - - -Checking out & running PyPy as a two-liner ------------------------------------------- - -There is no public release yet, but you can easily do:: - - svn co http://codespeak.net/svn/pypy/dist dist-pypy - -and after checkout you can get a PyPy interpreter via:: - - python dist-pypy/pypy/interpreter/py.py - -have fun :-) - -You can also go the more `detailed version`_ of this -two-liner. - -Browsing via HTTP and getting an svn client -------------------------------------------- - -You can `browse the pypy source code`_ directly via http. -(sorry, viewcvs is still not stable enough with subversion). -And here is some information to `install a subversion client`_. - -.. _`install a subversion client`: howtosvn.html -.. _`browse the pypy source code`: http://codespeak.net/svn/pypy/dist - -coding style and testing ------------------------- - -We keep a strong focus on testing because we want to be able -to refactor things all the time (without proper automated -testing this would become very hard and fragile). - -For an overview of how we organize our codebase please look at our -`coding-style document`_. - -For running all PyPy tests you can issue:: - - cd dist-pypy/pypy/ - python test_all.py - -test_all.py really is another name for `py.test`_ which is a testing -tool working from the current directory unless you specify -filename/directory arguments. - -If you want to have write access to the codespeak respository -please send a mail to jum at anubis han de or hpk at merlinux de -in order to ask for a username and password. Please mention what you want to do -within the pypy project. Even better, come to our next sprint so that we can get -to know you. - -.. _`documentation start page`: http://codespeak.net/pypy/index.cgi?doc/index.html -.. _`coding-style document`: http://codespeak.net/pypy/index.cgi?doc/coding-style.html -.. _`py.test`: http://codespeak.net/py/current/doc/test.html - - -PyPy Documentation -================== - -Viewing documentation ---------------------- - -PyPy documentation is generated from reST textfiles in the pypy/documentation directory of -our pypy-subversion repository. Go to the `documentation start page`_ and hit -"recently modified" to get a list of recently modified documents. While in -"doc-view" you also have a navigation area on the left side which maps all -documentation files. - -Adding documentation --------------------- - -Please add new or updated documentation by checking it in to the appropriate -directory in subversion, usually under -http://codespeak.net/svn/pypy/dist/pypy/documentation - -+ Remember to run ``svn up`` **before** doing any commit. -+ All filenames should be lowercase, and documentation should be .txt files. -+ Mark-up the documentation with reST so it can generate a pretty html version. -+ On the server side a commit on the doc-subtree will immediately update the webpage. - -*Note* If you don't markup the textfile, it'll still be checked in, but when docutils -runs the parser, it'll look ugly on the website. So run docutils yourself before you commit it. - -Some reST basics: ------------------ - -There should be a title on your page. Do it like this:: - - Here is my Title - ================== - - Here is a section title - ------------------------- - -Make sure you have a blank line after your = or - lines or it will give you an error. -For marking a block of code so it'll look right, you can:: - - Put a line of text ending with :: - indent your code at least one space - my code - more code - even more code - still more code - -End of the "block" occurs whenever you unindent back to the same level as the -text with the ``::`` at the end. - -Using an underscore after a word like this_ will make reST think you want a hyperlink. -To avoid that (especially with things like ``wrap_``), you can use the `` back quote `` -to mark it as plain text. - -You can get more info on reST markup at http://docutils.sourceforge.net/docs/rst/quickref.html - -Checking your work ------------------------- - -In order to make sure that what you commit looks reasonably pretty (or at least not -entirely broken), you'll need to run the ``docutils`` parser on it. Unless you've -installed it in the past, you probably don't have it installed. Open IDLE (or any -Python interactive environment) and try "import docutils". If it imports, hooray! -Otherwise, you'll need to download it. - -Go to sourceforge and download the ``snapshot`` version. Install it. - -*Note to Debian users:* Be sure you installed ``python2.2-dev``, which includes ``distutils``, -before trying to install ``docutils``. - -Once you have ``docutils`` installed, you can use it go to your shell and use it like this:: - - $ python ~/mypath/docutils/tools/buildhtml.py - /// Processing directory: /home/anna/downloads/arObjSpaceDoc - ::: Processing .txt: howtosvn.txt - ::: Processing .txt: index.txt - -**WARNING** This will process **all** text documents in the directory and any subdirectories. -I prefer to work on text in a separate directory, run the ``docutils`` parser to see what it -looks like, then copy the .txt file over to my local /doc checkouts to commit it. - -Use a browser menu to go to ``File: Open: filename.html`` then you can see what it looks -like. Look at the command shell to see what errors you've got on which lines and fix it -in your textfile. You can then re-run the buildhtml.py script and see what errors you get. -After it's fixed, you can commit the .txt file and it'll automagically be turned into html -viewable on the website. - - -Here are some sample reST textfiles to see what it looks like: - -+ ObjectSpace_ -+ ObjectSpaceInterface_ - -.. _this: http://docutils.sourceforge.net/docs/rst/quickref.html -.. _ObjectSpace: objspace.html -.. _ObjectSpaceInterface: objspace.html#object-space-interface - - -.. _`detailed version`: - -The long'n detailed version -=========================== - -PyPy sources can be browsed on the web at: - - http://codespeak.net/svn/pypy/dist - -Once you are ready to download and try PyPy out, -follow these instructions, which assume that you -are working in a DOS box (Windows) or terminal (MacOS/X or Linux). - -1. Download subversion_ if you do not already have it. - -2. Change to the directory where you wish to install the source tree, - and use subversion to download the source:: - - svn co http://codespeak.net/svn/pypy/dist dist-pypy - - This will create a directory named ``dist-pypy``, and will get - you the PyPy source in ``dist-pypy/pypy`` and documentation - files in ``dist-pypy/pypy/documentation``. - -3. To start interpreting Python with PyPy, use Python 2.3 or greater:: - - cd dist-pypy/pypy/interpreter - python py.py - - After a few seconds, you should be at the PyPy prompt, which is - the same as the Python prompt, but with an extra ">". - -4. Now you are ready to start running Python code. Some real Python - modules will not run yet, and others will run too slowly to be - worth waiting for, but a few are fun to run:: - - >>>> from test2 import pystone - >>>> pystone.main(10) - - Note that this is a slightly modified version of pystone -- the - original version does not accept the parameter to main(). The - parameter is the number of loops to run through the test, and the - default is 50000, which is far too many to run in a reasonable time - on the current PyPy implementation. - - -5. To list the PyPy interpreter command line options, type:: - - cd dist-pypy/pypy/interpreter - python py.py --help - - As an example of using PyPy from the command line, you could type:: - - python py.py -c "from test2 import pystone; pystone.main(10)" - - Alternatively, as with regular Python, you can simply give a - script name on the command line:: - - python py.py ../lib/test2/pystone.py - - (Note that this will run "forever" -- actually, "just" for many - hours, with the current implementation of PyPy.) - - -6. The PyPy project uses test-driven-development. Right now, there are - a couple of different categories of tests which you can run. - To run all the unit tests:: - - cd dist-pypy/pypy - python test_all.py - - Alternatively, you may run subtests by going to the correct subdirectory - and running them individually:: - - cd dist-pypy/pypy - python test_all.py module/test/test_builtin.py - - ``test_all.py`` is actually just a synonym for `py.test`_ which is - our external testing tool. If you have installed that then you - can as well just issue ``py.test DIRECTORY_OR_FILE`` in order - to perform test runs or simply start it without arguments to - run all tests below the current directory. - - Finally, there are standard regression tests which you can - run like this:: - - cd dist-pypy/lib-python-2.3.4/test - python ../../pypy/test_all.py - - or if you have `installed py.test`_ then you simply say:: - - py.test - - from the lib-python-2.3.4/test directory. - -.. _`installed py.test`: http://codespeak.net/py/current/doc/getting_started.html - -Trying out the translator -========================= - -The translator is a tool based on the PyPy interpreter which can translate -sufficiently static Python programs into low-level code. - -1. Download and install `Dot Graphviz`_. - -2. Download and install Pygame_ if you do not already have it. - -3. Type:: - - cd dist-pypy/pypy/translator - python -i translator.py - - Test snippets of translatable code are provided in the file - ``test/snippet.py``. For example:: - - >>> t = Translator(test.is_perfect_number) - >>> t.simplify() - >>> t.view() - -4. We have a type annotator that can completely infer types for functions like - ``is_perfect_number``:: - - >>> t.annotate([int]) - >>> t.view() - - Move the mouse over variable names (in red) to see their inferred types. - -5. The graph can be turned into Pyrex code, with types if ``annotate()`` was - called:: - - >>> print t.pyrex() - >>> f = t.compile() - >>> f(28) - 1 - - Note how the strange-looking Pyrex code is unrelated to the original - Python source code. This is because the Pyrex code is generated from the - graph only, without reference to the original source. - - -Where to start reading the sources -================================== - -PyPy is made from parts that are relatively independent from each other. -You should start looking at the part that attracts you most: - -* `dist-pypy/pypy/interpreter`_ contains the basic interpreter: bytecode dispatcher - in pyopcode.py_, frame and code objects in eval.py_ and pyframe.py_, - function objects and argument passing in function.py_ and argument.py_, - the object space interface definition in baseobjspace.py_, modules in - module.py_ and lazymodule.py_. Core types supporting the interpreter are - defined in typedef.py_. - -* `dist-pypy/pypy/objspace/std`_ contains the `Standard object space`_. The main file - is objspace.py_. For each type, the files ``xxxtype.py`` and - ``xxxobject.py`` contain respectively the definition of the type and its - (default) implementation. - -* `dist-pypy/pypy/objspace`_ contains a few other object spaces: the thunk_ - one, the trace_ one, the flow_ one. The latter is a relatively short piece - of code that builds the control flow graphs when the interpreter runs in it. - -* `dist-pypy/pypy/translator`_ contains the code analysis and generation stuff. - Start reading from translator.py_, from which it should be easy to follow - the pieces of code involved in the various translation phases. - -* `dist-pypy/pypy/annotation`_ contains the data model for the type annotation that - can be inferred about a graph. The graph "walker" that uses this is in - `dist-pypy/pypy/translator/annrpython.py`_. - - -To learn more -============= - -* To learn more about PyPy and its development process, head - read around in the documentation_ and the wiki_, and consider - subscribing to the `mailing lists`_ (or simply - read the archives online) or show up irc.freenode.net:6667, channel #pypy. - -* To help PyPy become Python-the-next-generation, you may write some - `unit tests`_ and file some `bug reports`_ (although we are not really - actively using the issue tracker yet, watch out :-) - --------------------------------------------------------------------------------- - -.. _subversion: http://codespeak.net/pypy/index.cgi?doc/howtosvn.html -.. _Dot Graphviz: http://www.research.att.com/sw/tools/graphviz/ -.. _Pygame: http://www.pygame.org/ -.. _dist-pypy/pypy/interpreter: http://codespeak.net/svn/pypy/dist/pypy/interpreter/ -.. _pyopcode.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/pyopcode.py -.. _eval.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/eval.py -.. _pyframe.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/pyframe.py -.. _function.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/function.py -.. _argument.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/argument.py -.. _baseobjspace.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/baseobjspace.py -.. _module.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/module.py -.. _lazymodule.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/lazymodule.py -.. _typedef.py: http://codespeak.net/svn/pypy/dist/pypy/interpreter/typedef.py -.. _dist-pypy/pypy/objspace/std: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/ -.. _Standard object space: http://codespeak.net/pypy/index.cgi?doc/stdobjspace.html -.. _objspace.py: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/objspace.py -.. _dist-pypy/pypy/objspace: http://codespeak.net/svn/pypy/dist/pypy/objspace/ -.. _thunk: http://codespeak.net/svn/pypy/dist/pypy/objspace/thunk.py -.. _trace: http://codespeak.net/svn/pypy/dist/pypy/objspace/trace.py -.. _flow: http://codespeak.net/svn/pypy/dist/pypy/objspace/flow/ -.. _dist-pypy/pypy/translator: http://codespeak.net/svn/pypy/dist/pypy/translator/ -.. _translator.py: http://codespeak.net/svn/pypy/dist/pypy/translator/translator.py -.. _dist-pypy/pypy/annotation: http://codespeak.net/svn/pypy/dist/pypy/annotation/ -.. _dist-pypy/pypy/translator/annrpython.py: http://codespeak.net/svn/pypy/dist/pypy/translator/annrpython.py -.. _mailing lists: http://codespeak.net/pypy/index.cgi?lists -.. _documentation: http://codespeak.net/pypy/index.cgi?doc -.. _wiki: http://codespeak.net/moin/pypy/moin.cgi/FrontPage?action=show -.. _unit tests: http://codespeak.net/pypy/index.cgi?doc/testdesign.html -.. _bug reports: http://codespeak.net/issues/pypy/ Deleted: /pypy/dist/pypy/documentation/howtosvn.txt ============================================================================== --- /pypy/dist/pypy/documentation/howtosvn.txt Sun Apr 17 21:51:38 2005 +++ (empty file) @@ -1,171 +0,0 @@ -================= -subversion -================= - -The PyPy codebase, documentation and web pages are controlled by subversion. -If you already know how to use it here is the URL you need to interact -with subversion: - -``http://codespeak.net/svn/pypy/dist`` - -If you don't know what to do then Jens-Uwe Mager has prepared some -installation files which should help you to install subversion on -your computer. - -+ Download Unix source tarball or prepackaged versions_ for MacOS, Windows, FreeBSD and Linux - -+ Additional information for Windows users: - - * See Microsoft website_ if you have .DLL issues. - - * Windows Installer file for Tortoise SVN (like Tortoise CVS) GUI_ - (Pick the UNICODE version for Windows 2000 and XP and - see Win_ 2000, NT if you have problems loading it.) - -+ Local copy of MacOS_ X binary tar ball - (This requires at least OS X 10.3) - -+ Debian instructions below... - -btw, HowToInstallServer_ sketches how to install a subversion server on Linux (not as easy as the client install). You don't need to install server side files to get your client going. - -Getting started ------------------ - -If you're just getting started with subversion, here's a simple how-to. -For complete information, you can go read the subversion guide_. - -**Download and install the appropriate installation file of subversion above.** - -For linux: - -download the tarball. unzip and untar it. Then type *./configure*. Then, as root, *make* followed by *make install*. Voil? ... a subversion client. - -For Debian users:: - - $ apt-get install subversion-tools - -People using Debian *stable* first need to add the following line to ``/etc/apt/sources.list`` (thanks backports_!):: - - deb http://fs.cs.fhm.edu/mirror/backports.org/debian stable subversion - -Note that you can always go look at the files online_ with your browser, located at: http://codespeak.net/svn/pypy/dist -But, you'll want to check out your own local copies to work on. - -Check out and Check in ----------------------------- - -There are currently two directories you'll want to check out: /src and /doc -In order to get the sourcecode and docs downloaded onto your drive, open a shell or commandline and type:: - - $ svn co http://codespeak.net/svn/pypy/dist - $ svn co http://codespeak.net/svn/pypy/extradoc - -If you are behind a dump proxy this may or may not work; see below. - -Once you've got the files checked out to your own system, you can use your favorite text editor to change to files. Be sure to read the coding-style_ and other documentation files before doing a lot of work on the source code. Before doing any work, make sure you're using the most recent update with:: - - $ svn up - -this will update whichever subdirectory you're in (doc or src). - -When you're ready to **check in** a file, - -cd to your local checked out sourcecode directory, and if necessary, copy the file over from wherever you worked on it:: - - $ cp ~/mydir/filename.ext filename.ext - -If you're adding a brand-new file:: - - $ svn add filename.ext - -Then, to **commit** it:: - - $ svn ci -m "your comments about what changes your committing" - $ your password: (this may not be necessary) - -You'll see something like the following:: - - Adding goals/stringcomp.py - Transmitting file data . - Committed revision 578. - -or:: - - Sending coding-style.txt - Transmitting file data . - Committed revision 631. - -Check online on the check-in archives_ and you'll see your revision. Feel free to add a documentation file on any major changes you've made! - -Some other useful subversion tricks: --------------------------------------- - -**Be sure to remember ``svn`` in the commandline in the following commands.** - -``$ svn mv filename.ext`` - to move or rename a file - -``$ svn rm filename.ext`` - to remove (delete) a file - -``$ svn status`` - will let you know what changes you've made compared to the current repository version - -``$ svn revert filename.ext`` - will fix problems if you deleted or moved a file without telling svn. - -``$ svn cleanup`` - last resort to fix it if you've got a totally messed up local copy. - Use this if you see error messages about ``locked`` files that you can't fix otherwise. - -Circumventing proxies ----------------------------- - -Some proxies don't let extended HTTP commands through. If you have an -error complaining about a bad request, you can ask subversion to use the -alternate port 8080 to connect to codespeak.net by adding the following -lines in a file ``~/.subversion/servers`` (on Unix) or -``%APPDATA%\Subversion\servers`` (on Windows):: - - [groups] - codespeak = codespeak.net - - [codespeak] - http-proxy-host = codespeak.net - http-proxy-port = 8080 - -How to Avoid Line-ending Hell ------------------------------ - -We will assume that whenever you create a .txt or a .py file, you would -like other people to be able to read it with the line endings their -OS prefers, even if that is different from the one your OS likes. This -could occasionally be wrong -- say when you are specifically testing -that code you are writing handles line endings properly -- but this is -what you want by default. Binary files, on the other hand, should be -stored exactly as is. This has to be set on every client. Here is how: - -In your home directory edit .subversion/config and comment in :: - - enable-auto-props = yes - - *.txt = svn:eol-style=native - -and add a line for .py files. - --------------------------------------------------------------------------------- - - -.. _website: http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B259403 -.. _GUI: http://tortoisesvn.tigris.org/servlets/ProjectDocumentList?folderID=616 -.. _MacOS: http://codespeak.net/~jum/svn-1.1.3-darwin-ppc.tar.gz -.. _versions: http://subversion.tigris.org/project_packages.html -.. _Win: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4B6140F9-2D36-4977-8FA1-6F8A0F5DCA8F - -.. _guide: http://svnbook.red-bean.com/book.html#svn-ch-1 -.. _archives: http://codespeak.net/pipermail/pypy-svn/ -.. _online: http://codespeak.net/svn/pypy/dist/ -.. _coding-style: coding-style.html -.. _HowToInstallServer: http://codespeak.net/moin/pypy/moin.cgi/HowToInstallServer -.. _backports: http://www.backports.org Deleted: /pypy/dist/pypy/documentation/optionaltool.txt ============================================================================== --- /pypy/dist/pypy/documentation/optionaltool.txt Sun Apr 17 21:51:38 2005 +++ (empty file) @@ -1,33 +0,0 @@ -Optional Tools for running (and hacking) PyPy -============================================= - -In addition to the latest version of svn and Python, we use some optional -tools to install for working on pypy. They are not required to run all the -tests or to get an interactive PyPy prompt but they help to understand and -debug PyPy. - -Recommended tools: ------------------- - -* graphviz:: - - (used for visualizing the control-flow) - http://www.research.att.com/sw/tools/graphviz/download.html_ - -* pygame:: - - (to visualize control flow and annotation analysis of python programs) - http://www.pygame.org/download.shtml_ - - - on MAC OSX, TRY THIS:: - Alex will reconstruct the process for us - -Optional tools: ---------------- - -* CLISP:: - - Optional (if you want to work on generating lisp code from pypy) - http://clisp.cons.org/_ - - Modified: pypy/dist/pypy/documentation/redirections ============================================================================== --- pypy/dist/pypy/documentation/redirections (original) +++ pypy/dist/pypy/documentation/redirections Sun Apr 17 21:51:38 2005 @@ -9,5 +9,10 @@ 'wrapping.html' : 'objspace.html#wrapping-rules', 'abstractobjspace.html' : 'theory.html#abstract-interpretation', 'multimethod.html' : 'theory.html#multimethods', + + 'howtopypy.html' : 'getting_started.html#howtopypy', + 'howtosvn.html' : 'getting_started.html#howtosvn', + 'checking_ReST.html' : 'coding-style.html#pypy-documentation', + 'optionaltools.html' : 'coding-style.html#optionaltool', } From hpk at codespeak.net Sun Apr 17 22:08:23 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 22:08:23 +0200 (CEST) Subject: [pypy-svn] r10791 - pypy/dist/pypy/documentation Message-ID: <20050417200823.41F0827B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 22:08:23 2005 New Revision: 10791 Added: pypy/dist/pypy/documentation/future.txt Removed: pypy/dist/pypy/documentation/goals.txt pypy/dist/pypy/documentation/newrepolayout.txt Modified: pypy/dist/pypy/documentation/redirections Log: fourth refactoring according to newstructure Added: pypy/dist/pypy/documentation/future.txt ============================================================================== --- (empty file) +++ pypy/dist/pypy/documentation/future.txt Sun Apr 17 22:08:23 2005 @@ -0,0 +1,475 @@ +============ +Future plans +============ + +.. contents:: +.. sectnum:: + +This document contains a loose collection of future plans. + +.. _newrepolayout: + +Improving Repo layout +===================== + +Motivation +---------- + +We want to move our subversion tree to the following structure: + +- `dist`_: source code + documentation (for developer needs) + +- `extradoc`_: talks, papers, newsletters and EU-related information + that are useful for not-only-developers + +- `eu-tracking`: eu-tracking details that involve internal + budget/cost/audit preparations and documentations (not + available to anonymous checkouts) + +.. _`extradoc`: http://codespeak.net/svn/pypy/extradoc +.. _`dist`: http://codespeak.net/svn/pypy/dist + +More detailed layout (work in progress) +--------------------------------------- + +(starting at /svn/pypy):: + + branch # holds branches + tag # holds tagged dist-versions + + dist # holds current development + pypy # current dist/pypy + documentation # developer documentation (inside pypy!) + py # and other 'externals' + setup.py # should be there at some point + README.txt # tell how to run PyPy, the translator, tests + LICENSE.txt # copyright notices for tree parts including pypy + + extradoc # non-dist documentations (papers etc.pp.) + talk # various pypy-talks + paper # various pypy-related papers (including our own) + sprint # sprint related information (reports etc.pp.) + irclog # IRC logs (snipped appropriately) + eu-info # legal guidelines/rules partcipation + eu-forms # Accession forms (empty) + proposal # several versions + newsletter # ... + press # ... + + eu-tracking # strong focus on eu-internal details + timesheets # monthly timesheets + monthly-reports + deliverables # deliverable/documents + minutes # meeting protocols + budget.sxc + calendar.sxc + ... + www # website-related stuff (needs its own reconsideration) + + +The idea is that developers can use a simple url:: + + svn co https://codespeak.net/svn/pypy/dist dist-pypy + +in order to get everything neccessary for sourcecode, documentation +and test development. Obviously, if you care about the EU-funding +or web site application/contents you can do an appropriate checkout +as well. The extradoc contains information interesting to +developers and other open source projects (seeking funding or not). + +Note, that having documentation inside the source tree will help +with keeping a closer eye on documentation - especially when we +have special ref-integrity tests for the documentation (which itself +should reference real source-code/functions at some point). For +example, the refactoring of unitest.py-style tests to `py.test`_ based ones +"forgot" to modify our test-documentation in the too-far-away doc-folder. +We should move to a scheme where such an omission will raise real +test errors. + +.. _`py.test`: http://codespeak.net/py/current/doc/test.html + +.. _goals: + +Brainstorming of goals +========================= + +This is a loose collection of goals we brainstormed at +some earlier point. + +**Infrastructure and tools** + +Supporting the PyPy project by producing and enhancing the tools. + +Support the development process with reusing existing or developing +new debugging opensource tools. + +- provide access over http/https and ssh server + +- build extensions for automatic document extraction + +- implement a search facility over all content + +- maintain and enhance website infrastructure + +- setup a mirror repository which is kept up-to-date and which + can be used readonly in case of failure of the main repository. + +- Design a strict backup policy. + +- help with automated testing + + XXX add what more do we want to do? + +- http-server to present runtime/introspection information aiding + debugging and understanding of PyPy internals + +- automated (unit-)testing framework with html/pdf reports + +**Synchronisation with Standard Python** + +- Keeping PyPy in sync with potential changes to Standard Python. + +- Support a subset of the CPython API for compatibility with extension modules. + +- Facilitate porting of extension modules to PyPy. + +- What's new since 2.2? see http://www.python.org/doc/2.3.3/whatsnew -- Thank you amk! + +**PEPS** + ++ PEP 218: A Standard Set Datatype -- set module -- + ++ PEP 263 defining Python Source Code encodings + ++ PEP 273 Importing Modules from Zip Archives -- zipimport module -- + ++ PEP 277: Unicode file name support for Windows NT + ++ PEP 278: Universal Newline Support + ++ PEP 279: enumerate() + ++ PEP 282: The logging Package + ++ PEP 285: A Boolean Type + ++ PEP 293: Codec Error Handling Callbacks + ++ PEP 301: Package Index and Metadata for Distutils + ++ PEP 302: New Import Hooks + ++ PEP 307: Pickle Enhancements + +**Check and see we have implemented these** + +* Extended Slices + +* The yield statement is now always a keyword + +* new built-in function enumerate() + +* Two new constants, True and False + +* The int() type constructor will now return a long integer instead of + raising an OverflowError when a string or floating-point number is too + large to fit into an integer. This can lead to the paradoxical result + that isinstance(int(expression), int) is false. + +* Built-in types now support the extended slicing syntax + +* A new built-in function, sum(iterable, start=0), adds up the numeric + items in the iterable object and returns their sum. sum() only accepts + numbers, meaning that you can't use it to concatenate a bunch of strings. + +does it handle mixed floats and ints? + +* list.insert(pos, value) used to insert value at the front of the list + when pos was negative. The behaviour has now been changed to be consistent + with slice indexing, so when pos is -1 the value will be inserted before + the last element, and so forth. + +so to insert at the front? + +* list.index(value), which searches for value within the list and + returns its index, now takes optional start and stop arguments to limit + the search to only part of the list. + +* Dictionaries have a new method, pop(key[, default]), that returns the + value corresponding to key and removes that key/value pair from the + dictionary. If the requested key isn't present in the dictionary, + default is returned if it's specified and KeyError raised if it isn't. + +* There's also a new class method, dict.fromkeys(iterable, value), that + creates a dictionary with keys taken from the supplied iterator iterable + and all values set to value, defaulting to None. + + Also, the dict() constructor now accepts keyword arguments to simplify + creating small dictionaries: + + >>> dict(red=1, blue=2, green=3, black=4) + {'blue': 2, 'black': 4, 'green': 3, 'red': 1} + + +* The assert statement no longer checks the __debug__ flag, so you can no + longer disable assertions by assigning to __debug__. Running Python with + the -O switch will still generate code that doesn't execute any assertions. + +So what if you want to disable assertions just within one module? + +* Most type objects are now callable, so you can use them to create new + objects such as functions, classes, and modules. (This means that the + new module can be deprecated in a future Python version, because you + can now use the type objects available in the types module.) For example, + you can create a new module object with the following code: + + >>> import types + >>> m = types.ModuleType('abc','docstring') + >>> m + + >>> m.__doc__ + 'docstring' + +* A new warning, PendingDeprecationWarning was added to indicate features + which are in the process of being deprecated. The warning will not be + printed by default. To check for use of features that will be deprecated + in the future, supply -Walways::PendingDeprecationWarning:: on the + command line or use warnings.filterwarnings(). + +* The process of deprecating string-based exceptions, as in + raise "Error occurred", has begun. Raising a string will now trigger + PendingDeprecationWarning. + +* Using None as a variable name will now result in a SyntaxWarning warning. + In a future version of Python, None may finally become a keyword. + +* The xreadlines() method of file objects, introduced in Python 2.1, + is no longer necessary because files now behave as their own + iterator. xreadlines() was originally introduced as a faster way to + loop over all the lines in a file, but now you can simply write + for line in file_obj. File objects also have a new read-only encoding + attribute that gives the encoding used by the file; Unicode strings + written to the file will be automatically converted to bytes using + the given encoding. + +* The method resolution order used by new-style classes has changed, + though you'll only notice the difference if you have a really + complicated inheritance hierarchy. Classic classes are unaffected by + this change. Python 2.2 originally used a topological sort of a + class's ancestors, but 2.3 now uses the C3 algorithm as described in + the paper *A Monotonic Superclass Linearization for Dylan*. To + understand the motivation for this change, read Michele Simionato's + article *Python 2.3 Method Resolution Order*, or read the thread + on python-dev starting with the message at + http://mail.python.org/pipermail/python-dev/2002-October/029035.html. + Samuele Pedroni first pointed out the problem and also implemented the fix + by coding the C3 algorithm. + +* Python runs multithreaded programs by switching between threads + after executing N bytecodes. The default value for N has been + increased from 10 to 100 bytecodes, speeding up single-threaded + applications by reducing the switching overhead. Some multithreaded + applications may suffer slower response time, but that's easily + fixed by setting the limit back to a lower number using + sys.setcheckinterval(N). The limit can be retrieved with the new + sys.getcheckinterval() function. + +* One minor but far-reaching change is that the names of extension + types defined by the modules included with Python now contain the + module and a "." in front of the type name. For example, in Python + 2.2, if you created a socket and printed its __class__, you'd get + this output: + + >>> s = socket.socket() + >>> s.__class__ + + + In 2.3, you get this: + + >>> s.__class__ + + +* One of the noted incompatibilities between old- and new-style + classes has been removed: you can now assign to the __name__ and + __bases__ attributes of new-style classes. There are some + restrictions on what can be assigned to __bases__ along the lines of + those relating to assigning to an instance's __class__ attribute. + +**String Changes** + +* The in operator now works differently for strings. Previously, when + evaluating X in Y where X and Y are strings, X could only be a + single character. That's now changed; X can be a string of any + length, and X in Y will return True if X is a substring of Y. If X + is the empty string, the result is always True. + + >>> 'ab' in 'abcd' + True + >>> 'ad' in 'abcd' + False + >>> '' in 'abcd' + True + +* The strip(), lstrip(), and rstrip() string methods now have an + optional argument for specifying the characters to strip. The + default is still to remove all whitespace characters: + +* The startswith() and endswith() string methods now accept negative + numbers for the start and end parameters. + +* Another new string method is zfill(), originally a function in the + string module. zfill() pads a numeric string with zeros on the left + until it's the specified width. Note that the % operator is still + more flexible and powerful than zfill(). + +* A new type object, basestring, has been added. Both 8-bit strings + and Unicode strings inherit from this type, so isinstance(obj, basestring) + will return True for either kind of string. It's a completely abstract + type, so you can't create basestring instances. + +* Interned strings are no longer immortal and will now be + garbage-collected in the usual way when the only reference to them + is from the internal dictionary of interned strings. + +**Replace PyPy Core** + +Building a complete Python interpreter written in Python, +using a subset of Python that avoids dynamic featureslll +which would impair the objectives of RPython. + +- Design and implement the PyPy bytecode interpreter and + build an object space library in RPython. + The resulting interpreter must cover the complete Python + language specification. -- mostly done, test coverage. + +- Port the built-in Python library to PyPy (functions, types and + modules currently implemented in C) -- types needs refactoring, + the rest is mostly done. Anthony Baxter has given us a very useful + list of the cmodules_ we need to consider porting. + +- Decide on a case-by-case basis which features are to + be implemented using RPython or just general Python. -- moving target. + +- Implement a Python parser and bytecode compiler in Python. + -- we have something, but it is not well integrated. + +- A partial Python implementation that passses 75% of the official + Python test suite that don't depend on extension modules. + -- write this test and then pass it. + +**The PyPy Translation** + +- Analysis and translation of the PyPy core into efficient low-level code + (C, Pyrex, Java, others). - moving target + +- Provide a Runtime Library for the translated versions + of PyPy. - not even started + +- Create a code analysis tool for a subset of the Python + language (RPython). Coordinate the definition of RPython + being the implementation language of the core. + + - we can analyse functions, but not classes, modules, spaces etc. + +- Complete implementation of Python, conforming to the language + definition and passing all relevant tests of the official Python + test suite. -- global goal, which we will think more about when + it is very close to being done. + +**Stackless Integration + More Performance Hacks** + +- Identification and Implementation of Optimisations through modifications + of the Translator. + +- Enable Massive Parallelism in a Single Thread. + +- Provide support for real-time parallelism. + +- Allow Pickling of a Running Program. + +- Enhance the translator to support continuation passing + style by integrating technology from the Stackless project. + +- Implement the necessary runtime system to support massive parallelism. + +- Implement a single-threaded, pre-emptive scheduler with + priorities, complementing the OS threads. + +- Study approaches concerning code size vs. speed trade-offs. + +- Implement and compare different object layout and memory management + strategy or strategies. + +- Enhance multimethod dispatching. + +- Implement schemes of pointer tagging. + +- Create reports and merge the results back into the optimization effort. + +**Psyco Integration** + +- Outperform the state-of-the art (Psyco, Stackless). + +- Enhance PyPy to dynamically adapt to its run-time environment and + to the characteristics of the running program. Dramatically + increase speed by enabling Just-In-Time compilation and + specialization. + +- Address multiple processor architectures. + +- Apply and enhance techniques from the Psyco project. Promote parts + of the static translator to be used for run-time specialization. + +- Design and implement a back-end component for dynamically emitting + machine code for multiple processor architectures. Enable dynamic + foreign function calls. + +- Research optimisation heuristics for the Just-In-Time compiler. + +- A Just-In-Time compiler for PyPy !!! Outperform the + state-of-the art (Psyco, Stackless). + +**Embed in Specialized Hardware** + +if we get funding. + +**Implement Security, Distribution and Persistence** + +- Research and validate the flexibility of PyPy by building key middleware + features into the language itself. + +- Analyze and implement security models at the language level. + +- Implement the "RExec" restricted execution model. (It was removed + from the official Python implementation because it is false security.) + +- Analyze and implement distributed execution models at the language level. + +- Implement network-transparent execution of Python programs. (Typical + libraries require programs to be aware of the remote execution model.) + +- Analyze and implement persistence at the language level. -- talk to + Patrick O'Brien who is really hot for the idea. + +- Implement an orthogonally persistent object space for Python programs. + (Persistence is never fully orthogonal without advanced language support.) + +**PyPy A la Carte** + +- Develop tools that will allow to chose from available features and runtime + restrictions to build a custom PyPy version. + +- Analyse and integrate all results from the results of other workpackages. + This involves identifying and resolving conflicts which could prevent + a combintation of desired optimization goals. + +- Implement user interfaces to select features and runtime restrictions. + Provide a way to automatically build a PyPy custom version for different + memory, performance and extension requirements. + +- Make a build- and configuration tool that allows to build custom PyPy + versions suitable for specialized environments such as small or very large + computing devices. + +.. _cmodules: http://codespeak.net/pypy/index.cgi?doc/cmodules.html + Deleted: /pypy/dist/pypy/documentation/goals.txt ============================================================================== --- /pypy/dist/pypy/documentation/goals.txt Sun Apr 17 22:08:23 2005 +++ (empty file) @@ -1,376 +0,0 @@ -**Infrastructure and tools** - -Supporting the PyPy project by producing and enhancing the tools. - -Support the development process with reusing existing or developing -new debugging opensource tools. - -- provide access over http/https and ssh server - -- build extensions for automatic document extraction - -- implement a search facility over all content - -- maintain and enhance website infrastructure - -- setup a mirror repository which is kept up-to-date and which - can be used readonly in case of failure of the main repository. - -- Design a strict backup policy. - -- help with automated testing - - XXX add what more do we want to do? - -- http-server to present runtime/introspection information aiding - debugging and understanding of PyPy internals - -- automated (unit-)testing framework with html/pdf reports - -**Synchronisation with Standard Python** - -- Keeping PyPy in sync with potential changes to Standard Python. - -- Support a subset of the CPython API for compatibility with extension modules. - -- Facilitate porting of extension modules to PyPy. - -- What's new since 2.2? see http://www.python.org/doc/2.3.3/whatsnew -- Thank you amk! - -**PEPS** - -+ PEP 218: A Standard Set Datatype -- set module -- - -+ PEP 263 defining Python Source Code encodings - -+ PEP 273 Importing Modules from Zip Archives -- zipimport module -- - -+ PEP 277: Unicode file name support for Windows NT - -+ PEP 278: Universal Newline Support - -+ PEP 279: enumerate() - -+ PEP 282: The logging Package - -+ PEP 285: A Boolean Type - -+ PEP 293: Codec Error Handling Callbacks - -+ PEP 301: Package Index and Metadata for Distutils - -+ PEP 302: New Import Hooks - -+ PEP 307: Pickle Enhancements - -**Check and see we have implemented these** - -* Extended Slices - -* The yield statement is now always a keyword - -* new built-in function enumerate() - -* Two new constants, True and False - -* The int() type constructor will now return a long integer instead of - raising an OverflowError when a string or floating-point number is too - large to fit into an integer. This can lead to the paradoxical result - that isinstance(int(expression), int) is false. - -* Built-in types now support the extended slicing syntax - -* A new built-in function, sum(iterable, start=0), adds up the numeric - items in the iterable object and returns their sum. sum() only accepts - numbers, meaning that you can't use it to concatenate a bunch of strings. - -does it handle mixed floats and ints? - -* list.insert(pos, value) used to insert value at the front of the list - when pos was negative. The behaviour has now been changed to be consistent - with slice indexing, so when pos is -1 the value will be inserted before - the last element, and so forth. - -so to insert at the front? - -* list.index(value), which searches for value within the list and - returns its index, now takes optional start and stop arguments to limit - the search to only part of the list. - -* Dictionaries have a new method, pop(key[, default]), that returns the - value corresponding to key and removes that key/value pair from the - dictionary. If the requested key isn't present in the dictionary, - default is returned if it's specified and KeyError raised if it isn't. - -* There's also a new class method, dict.fromkeys(iterable, value), that - creates a dictionary with keys taken from the supplied iterator iterable - and all values set to value, defaulting to None. - - Also, the dict() constructor now accepts keyword arguments to simplify - creating small dictionaries: - - >>> dict(red=1, blue=2, green=3, black=4) - {'blue': 2, 'black': 4, 'green': 3, 'red': 1} - - -* The assert statement no longer checks the __debug__ flag, so you can no - longer disable assertions by assigning to __debug__. Running Python with - the -O switch will still generate code that doesn't execute any assertions. - -So what if you want to disable assertions just within one module? - -* Most type objects are now callable, so you can use them to create new - objects such as functions, classes, and modules. (This means that the - new module can be deprecated in a future Python version, because you - can now use the type objects available in the types module.) For example, - you can create a new module object with the following code: - - >>> import types - >>> m = types.ModuleType('abc','docstring') - >>> m - - >>> m.__doc__ - 'docstring' - -* A new warning, PendingDeprecationWarning was added to indicate features - which are in the process of being deprecated. The warning will not be - printed by default. To check for use of features that will be deprecated - in the future, supply -Walways::PendingDeprecationWarning:: on the - command line or use warnings.filterwarnings(). - -* The process of deprecating string-based exceptions, as in - raise "Error occurred", has begun. Raising a string will now trigger - PendingDeprecationWarning. - -* Using None as a variable name will now result in a SyntaxWarning warning. - In a future version of Python, None may finally become a keyword. - -* The xreadlines() method of file objects, introduced in Python 2.1, - is no longer necessary because files now behave as their own - iterator. xreadlines() was originally introduced as a faster way to - loop over all the lines in a file, but now you can simply write - for line in file_obj. File objects also have a new read-only encoding - attribute that gives the encoding used by the file; Unicode strings - written to the file will be automatically converted to bytes using - the given encoding. - -* The method resolution order used by new-style classes has changed, - though you'll only notice the difference if you have a really - complicated inheritance hierarchy. Classic classes are unaffected by - this change. Python 2.2 originally used a topological sort of a - class's ancestors, but 2.3 now uses the C3 algorithm as described in - the paper *A Monotonic Superclass Linearization for Dylan*. To - understand the motivation for this change, read Michele Simionato's - article *Python 2.3 Method Resolution Order*, or read the thread - on python-dev starting with the message at - http://mail.python.org/pipermail/python-dev/2002-October/029035.html. - Samuele Pedroni first pointed out the problem and also implemented the fix - by coding the C3 algorithm. - -* Python runs multithreaded programs by switching between threads - after executing N bytecodes. The default value for N has been - increased from 10 to 100 bytecodes, speeding up single-threaded - applications by reducing the switching overhead. Some multithreaded - applications may suffer slower response time, but that's easily - fixed by setting the limit back to a lower number using - sys.setcheckinterval(N). The limit can be retrieved with the new - sys.getcheckinterval() function. - -* One minor but far-reaching change is that the names of extension - types defined by the modules included with Python now contain the - module and a "." in front of the type name. For example, in Python - 2.2, if you created a socket and printed its __class__, you'd get - this output: - - >>> s = socket.socket() - >>> s.__class__ - - - In 2.3, you get this: - - >>> s.__class__ - - -* One of the noted incompatibilities between old- and new-style - classes has been removed: you can now assign to the __name__ and - __bases__ attributes of new-style classes. There are some - restrictions on what can be assigned to __bases__ along the lines of - those relating to assigning to an instance's __class__ attribute. - -**String Changes** - -* The in operator now works differently for strings. Previously, when - evaluating X in Y where X and Y are strings, X could only be a - single character. That's now changed; X can be a string of any - length, and X in Y will return True if X is a substring of Y. If X - is the empty string, the result is always True. - - >>> 'ab' in 'abcd' - True - >>> 'ad' in 'abcd' - False - >>> '' in 'abcd' - True - -* The strip(), lstrip(), and rstrip() string methods now have an - optional argument for specifying the characters to strip. The - default is still to remove all whitespace characters: - -* The startswith() and endswith() string methods now accept negative - numbers for the start and end parameters. - -* Another new string method is zfill(), originally a function in the - string module. zfill() pads a numeric string with zeros on the left - until it's the specified width. Note that the % operator is still - more flexible and powerful than zfill(). - -* A new type object, basestring, has been added. Both 8-bit strings - and Unicode strings inherit from this type, so isinstance(obj, basestring) - will return True for either kind of string. It's a completely abstract - type, so you can't create basestring instances. - -* Interned strings are no longer immortal and will now be - garbage-collected in the usual way when the only reference to them - is from the internal dictionary of interned strings. - -**Replace PyPy Core** - -Building a complete Python interpreter written in Python, -using a subset of Python that avoids dynamic featureslll -which would impair the objectives of RPython. - -- Design and implement the PyPy bytecode interpreter and - build an object space library in RPython. - The resulting interpreter must cover the complete Python - language specification. -- mostly done, test coverage. - -- Port the built-in Python library to PyPy (functions, types and - modules currently implemented in C) -- types needs refactoring, - the rest is mostly done. Anthony Baxter has given us a very useful - list of the cmodules_ we need to consider porting. - -- Decide on a case-by-case basis which features are to - be implemented using RPython or just general Python. -- moving target. - -- Implement a Python parser and bytecode compiler in Python. - -- we have something, but it is not well integrated. - -- A partial Python implementation that passses 75% of the official - Python test suite that don't depend on extension modules. - -- write this test and then pass it. - -**The PyPy Translation** - -- Analysis and translation of the PyPy core into efficient low-level code - (C, Pyrex, Java, others). - moving target - -- Provide a Runtime Library for the translated versions - of PyPy. - not even started - -- Create a code analysis tool for a subset of the Python - language (RPython). Coordinate the definition of RPython - being the implementation language of the core. - - - we can analyse functions, but not classes, modules, spaces etc. - -- Complete implementation of Python, conforming to the language - definition and passing all relevant tests of the official Python - test suite. -- global goal, which we will think more about when - it is very close to being done. - -**Stackless Integration + More Performance Hacks** - -- Identification and Implementation of Optimisations through modifications - of the Translator. - -- Enable Massive Parallelism in a Single Thread. - -- Provide support for real-time parallelism. - -- Allow Pickling of a Running Program. - -- Enhance the translator to support continuation passing - style by integrating technology from the Stackless project. - -- Implement the necessary runtime system to support massive parallelism. - -- Implement a single-threaded, pre-emptive scheduler with - priorities, complementing the OS threads. - -- Study approaches concerning code size vs. speed trade-offs. - -- Implement and compare different object layout and memory management - strategy or strategies. - -- Enhance multimethod dispatching. - -- Implement schemes of pointer tagging. - -- Create reports and merge the results back into the optimization effort. - -**Psyco Integration** - -- Outperform the state-of-the art (Psyco, Stackless). - -- Enhance PyPy to dynamically adapt to its run-time environment and - to the characteristics of the running program. Dramatically - increase speed by enabling Just-In-Time compilation and - specialization. - -- Address multiple processor architectures. - -- Apply and enhance techniques from the Psyco project. Promote parts - of the static translator to be used for run-time specialization. - -- Design and implement a back-end component for dynamically emitting - machine code for multiple processor architectures. Enable dynamic - foreign function calls. - -- Research optimisation heuristics for the Just-In-Time compiler. - -- A Just-In-Time compiler for PyPy !!! Outperform the - state-of-the art (Psyco, Stackless). - -**Embed in Specialized Hardware** - -if we get funding. - -**Implement Security, Distribution and Persistence** - -- Research and validate the flexibility of PyPy by building key middleware - features into the language itself. - -- Analyze and implement security models at the language level. - -- Implement the "RExec" restricted execution model. (It was removed - from the official Python implementation because it is false security.) - -- Analyze and implement distributed execution models at the language level. - -- Implement network-transparent execution of Python programs. (Typical - libraries require programs to be aware of the remote execution model.) - -- Analyze and implement persistence at the language level. -- talk to - Patrick O'Brien who is really hot for the idea. - -- Implement an orthogonally persistent object space for Python programs. - (Persistence is never fully orthogonal without advanced language support.) - -**PyPy A la Carte** - -- Develop tools that will allow to chose from available features and runtime - restrictions to build a custom PyPy version. - -- Analyse and integrate all results from the results of other workpackages. - This involves identifying and resolving conflicts which could prevent - a combintation of desired optimization goals. - -- Implement user interfaces to select features and runtime restrictions. - Provide a way to automatically build a PyPy custom version for different - memory, performance and extension requirements. - -- Make a build- and configuration tool that allows to build custom PyPy - versions suitable for specialized environments such as small or very large - computing devices. - -.. _cmodules: http://codespeak.net/pypy/index.cgi?doc/cmodules.html \ No newline at end of file Deleted: /pypy/dist/pypy/documentation/newrepolayout.txt ============================================================================== --- /pypy/dist/pypy/documentation/newrepolayout.txt Sun Apr 17 22:08:23 2005 +++ (empty file) @@ -1,80 +0,0 @@ -=========================================== -Proposition: new svn repository layout -=========================================== - -Motivation ----------- - -We want to move to the following structure: - -- `dist`_: source code + documentation (for developer needs) - -- `extradoc`_: talks, papers, newsletters and EU-related information - that are useful for not-only-developers - -- `eu-tracking`: eu-tracking details that involve internal - budget/cost/audit preparations and documentations (not - available to anonymous checkouts) - -.. _`extradoc`: http://codespeak.net/svn/pypy/extradoc -.. _`dist`: http://codespeak.net/svn/pypy/dist - -More detailed layout (work in progress) ---------------------------------------- - -(starting at /svn/pypy):: - - branch # holds branches - tag # holds tagged dist-versions - - dist # holds current development - pypy # current dist/pypy - documentation # developer documentation (inside pypy!) - py # and other 'externals' - setup.py # should be there at some point - README.txt # tell how to run PyPy, the translator, tests - LICENSE.txt # copyright notices for tree parts including pypy - - extradoc # non-dist documentations (papers etc.pp.) - talk # various pypy-talks - paper # various pypy-related papers (including our own) - sprint # sprint related information (reports etc.pp.) - irclog # IRC logs (snipped appropriately) - eu-info # legal guidelines/rules partcipation - eu-forms # Accession forms (empty) - proposal # several versions - newsletter # ... - press # ... - - eu-tracking # strong focus on eu-internal details - timesheets # monthly timesheets - monthly-reports - deliverables # deliverable/documents - minutes # meeting protocols - budget.sxc - calendar.sxc - ... - www # website-related stuff (needs its own reconsideration) - - -The idea is that developers can use a simple url:: - - svn co https://codespeak.net/svn/pypy/dist dist-pypy - -in order to get everything neccessary for sourcecode, documentation -and test development. Obviously, if you care about the EU-funding -or web site application/contents you can do an appropriate checkout -as well. The extradoc contains information interesting to -developers and other open source projects (seeking funding or not). - -Note, that having documentation inside the source tree will help -with keeping a closer eye on documentation - especially when we -have special ref-integrity tests for the documentation (which itself -should reference real source-code/functions at some point). For -example, the refactoring of unitest.py-style tests to `py.test`_ based ones -"forgot" to modify our test-documentation in the too-far-away doc-folder. -We should move to a scheme where such an omission will raise real -test errors. - -.. _`py.test`: http://codespeak.net/py/current/doc/test.html - Modified: pypy/dist/pypy/documentation/redirections ============================================================================== --- pypy/dist/pypy/documentation/redirections (original) +++ pypy/dist/pypy/documentation/redirections Sun Apr 17 22:08:23 2005 @@ -14,5 +14,8 @@ 'howtosvn.html' : 'getting_started.html#howtosvn', 'checking_ReST.html' : 'coding-style.html#pypy-documentation', 'optionaltools.html' : 'coding-style.html#optionaltool', + + 'newrepolayout.html' : 'future.html#newrepolayout', + 'goals.html' : 'future.html#goals', } From hpk at codespeak.net Sun Apr 17 22:14:59 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 22:14:59 +0200 (CEST) Subject: [pypy-svn] r10792 - pypy/dist/pypy/documentation Message-ID: <20050417201459.724A427B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 22:14:59 2005 New Revision: 10792 Added: pypy/dist/pypy/documentation/misc.txt - copied, changed from r10791, pypy/dist/pypy/documentation/future.txt Removed: pypy/dist/pypy/documentation/cmodules.txt pypy/dist/pypy/documentation/developers.txt pypy/dist/pypy/documentation/future.txt Modified: pypy/dist/pypy/documentation/newstructure pypy/dist/pypy/documentation/redirections Log: group some stuff into misc.txt to further cleanup the documentation directory. Deleted: /pypy/dist/pypy/documentation/cmodules.txt ============================================================================== --- /pypy/dist/pypy/documentation/cmodules.txt Sun Apr 17 22:14:59 2005 +++ (empty file) @@ -1,208 +0,0 @@ -PyPy shares a common need with other python reimplementations: -reimplementing c-coded modules in Python. The more plain -python code there is the less code needs to be ported either -Python or to the implementation language (e.g. C# for IronPython_). - -In the course of an email discussion_ Anthony Baxter came up with -a annotated list of modules and some rough categorization of -the to-be-or-has-been ported modules. The list doesn't claim -to be exhaustive and should certainly be worked on. - -Probably doable ---------------- - -These ones are probably achievable, although you might think -otherwise. - -_bisectmodule - already exists - -_codecsmodule - -_csv - already exists? - -_heapqmodule - already exists - -_hotshot - -_localemodule - -_randommodule - already exists but with a lesser generator - -_sre - already exists? - -_weakref - -arraymodule - -audioop - -binascii - -cPickle - already exists - -cStringIO - already exists - -cgensupport - -cmathmodule - -collectionsmodule - Raymond Hettinger has an ASPN recipe (which has a 'deque' drop-in replacement): - http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/259179 - -cryptmodule - see http://home.clear.net.nz/pages/c.evans/sw/ - -datetimemodule - already exists - -gcmodule - -imageop - -imgfile - -itertoolsmodule - the docs include pure python equivalents in a form -suitable for cut and pasting - -mathmodule - -md5module - done - -operator - done in PyPy - -parsermodule - already exists? - -rgbimgmodule - -sgimodule - -shamodule - done - -stropmodule - -structmodule - -symtablemodule - -syslogmodule - -timingmodule - -unicodedata - -yuvconvert - -zipimport - -Deprecated ----------- - -These modules are deprecated - -regexmodule - -regexpr - -rotormodule - -mpzmodule - -Links in an external library ----------------------------- - -These are all wrappers around external C libraries. Rewriting them -from scratch is really not practical. - -_bsddb - -_curses_panel - -_cursesmodule - -_ssl - -_tkinter - -almodule - -bsddbmodule - -bz2module - -cdmodule - -clmodule - -dbmmodule - -flmodule - -fmmodule - -gdbmmodule - -glmodule - -nismodule - -puremodule - -pyexpat - -readline (replace with pyrepl?) - -svmodule - -termios - -tkappinit - -zlibmodule - -System specific ---------------- - -These are modules that are wrappers around system calls -and the like. Rewriting them in pure Python will still -need a way to invoke the underlying calls - and will probably -be different for each platform (pypy, pycore, ironpython, &c). -A lot of these are also a mass of #ifdefs for various broken -operating systems. - -dlmodule - -errnomodule - -fcntlmodule - -fpectlmodule - -fpetestmodule - -grpmodule - -linuxaudiodev - -mmapmodule - -ossaudiodev - -posixmodule - -pwdmodule - -resource - -selectmodule - -signalmodule - -socketmodule - -sunaudiodev - -threadmodule - -timemodule - - -.. _IronPython: http://ironpython.com/ -.. _discussion: http://codespeak.net/pipermail/pypy-dev/2004q3/001509.html Deleted: /pypy/dist/pypy/documentation/developers.txt ============================================================================== --- /pypy/dist/pypy/documentation/developers.txt Sun Apr 17 22:14:59 2005 +++ (empty file) @@ -1,20 +0,0 @@ - - -pypy project developers and contributors:: - - Armin Rigo Holger Krekel - Samuele Pedroni Christian Tismer - Michael Hudson Laura Creighton - Jacob Hallen Alex Martelli - Richard Emslie Seo Sanghyeon - Anna Ravencroft Guido Van Rossum - Anders Lehmann Tomek Meka - Jiwon Seo Stephan Diehl - Jens-Uwe Mager Jonathan David Riehl - Guenter Jantzen Stefan Schwarzer - Dinu Gherman Patrick Maupin - Rocco Moretti Andreas Friedge - Theo de Ridder Olivier Dormond - Bob Ippolito Marius Gedminas - -PyPy Webpage: http://codespeak.net/pypy Deleted: /pypy/dist/pypy/documentation/future.txt ============================================================================== --- /pypy/dist/pypy/documentation/future.txt Sun Apr 17 22:14:59 2005 +++ (empty file) @@ -1,475 +0,0 @@ -============ -Future plans -============ - -.. contents:: -.. sectnum:: - -This document contains a loose collection of future plans. - -.. _newrepolayout: - -Improving Repo layout -===================== - -Motivation ----------- - -We want to move our subversion tree to the following structure: - -- `dist`_: source code + documentation (for developer needs) - -- `extradoc`_: talks, papers, newsletters and EU-related information - that are useful for not-only-developers - -- `eu-tracking`: eu-tracking details that involve internal - budget/cost/audit preparations and documentations (not - available to anonymous checkouts) - -.. _`extradoc`: http://codespeak.net/svn/pypy/extradoc -.. _`dist`: http://codespeak.net/svn/pypy/dist - -More detailed layout (work in progress) ---------------------------------------- - -(starting at /svn/pypy):: - - branch # holds branches - tag # holds tagged dist-versions - - dist # holds current development - pypy # current dist/pypy - documentation # developer documentation (inside pypy!) - py # and other 'externals' - setup.py # should be there at some point - README.txt # tell how to run PyPy, the translator, tests - LICENSE.txt # copyright notices for tree parts including pypy - - extradoc # non-dist documentations (papers etc.pp.) - talk # various pypy-talks - paper # various pypy-related papers (including our own) - sprint # sprint related information (reports etc.pp.) - irclog # IRC logs (snipped appropriately) - eu-info # legal guidelines/rules partcipation - eu-forms # Accession forms (empty) - proposal # several versions - newsletter # ... - press # ... - - eu-tracking # strong focus on eu-internal details - timesheets # monthly timesheets - monthly-reports - deliverables # deliverable/documents - minutes # meeting protocols - budget.sxc - calendar.sxc - ... - www # website-related stuff (needs its own reconsideration) - - -The idea is that developers can use a simple url:: - - svn co https://codespeak.net/svn/pypy/dist dist-pypy - -in order to get everything neccessary for sourcecode, documentation -and test development. Obviously, if you care about the EU-funding -or web site application/contents you can do an appropriate checkout -as well. The extradoc contains information interesting to -developers and other open source projects (seeking funding or not). - -Note, that having documentation inside the source tree will help -with keeping a closer eye on documentation - especially when we -have special ref-integrity tests for the documentation (which itself -should reference real source-code/functions at some point). For -example, the refactoring of unitest.py-style tests to `py.test`_ based ones -"forgot" to modify our test-documentation in the too-far-away doc-folder. -We should move to a scheme where such an omission will raise real -test errors. - -.. _`py.test`: http://codespeak.net/py/current/doc/test.html - -.. _goals: - -Brainstorming of goals -========================= - -This is a loose collection of goals we brainstormed at -some earlier point. - -**Infrastructure and tools** - -Supporting the PyPy project by producing and enhancing the tools. - -Support the development process with reusing existing or developing -new debugging opensource tools. - -- provide access over http/https and ssh server - -- build extensions for automatic document extraction - -- implement a search facility over all content - -- maintain and enhance website infrastructure - -- setup a mirror repository which is kept up-to-date and which - can be used readonly in case of failure of the main repository. - -- Design a strict backup policy. - -- help with automated testing - - XXX add what more do we want to do? - -- http-server to present runtime/introspection information aiding - debugging and understanding of PyPy internals - -- automated (unit-)testing framework with html/pdf reports - -**Synchronisation with Standard Python** - -- Keeping PyPy in sync with potential changes to Standard Python. - -- Support a subset of the CPython API for compatibility with extension modules. - -- Facilitate porting of extension modules to PyPy. - -- What's new since 2.2? see http://www.python.org/doc/2.3.3/whatsnew -- Thank you amk! - -**PEPS** - -+ PEP 218: A Standard Set Datatype -- set module -- - -+ PEP 263 defining Python Source Code encodings - -+ PEP 273 Importing Modules from Zip Archives -- zipimport module -- - -+ PEP 277: Unicode file name support for Windows NT - -+ PEP 278: Universal Newline Support - -+ PEP 279: enumerate() - -+ PEP 282: The logging Package - -+ PEP 285: A Boolean Type - -+ PEP 293: Codec Error Handling Callbacks - -+ PEP 301: Package Index and Metadata for Distutils - -+ PEP 302: New Import Hooks - -+ PEP 307: Pickle Enhancements - -**Check and see we have implemented these** - -* Extended Slices - -* The yield statement is now always a keyword - -* new built-in function enumerate() - -* Two new constants, True and False - -* The int() type constructor will now return a long integer instead of - raising an OverflowError when a string or floating-point number is too - large to fit into an integer. This can lead to the paradoxical result - that isinstance(int(expression), int) is false. - -* Built-in types now support the extended slicing syntax - -* A new built-in function, sum(iterable, start=0), adds up the numeric - items in the iterable object and returns their sum. sum() only accepts - numbers, meaning that you can't use it to concatenate a bunch of strings. - -does it handle mixed floats and ints? - -* list.insert(pos, value) used to insert value at the front of the list - when pos was negative. The behaviour has now been changed to be consistent - with slice indexing, so when pos is -1 the value will be inserted before - the last element, and so forth. - -so to insert at the front? - -* list.index(value), which searches for value within the list and - returns its index, now takes optional start and stop arguments to limit - the search to only part of the list. - -* Dictionaries have a new method, pop(key[, default]), that returns the - value corresponding to key and removes that key/value pair from the - dictionary. If the requested key isn't present in the dictionary, - default is returned if it's specified and KeyError raised if it isn't. - -* There's also a new class method, dict.fromkeys(iterable, value), that - creates a dictionary with keys taken from the supplied iterator iterable - and all values set to value, defaulting to None. - - Also, the dict() constructor now accepts keyword arguments to simplify - creating small dictionaries: - - >>> dict(red=1, blue=2, green=3, black=4) - {'blue': 2, 'black': 4, 'green': 3, 'red': 1} - - -* The assert statement no longer checks the __debug__ flag, so you can no - longer disable assertions by assigning to __debug__. Running Python with - the -O switch will still generate code that doesn't execute any assertions. - -So what if you want to disable assertions just within one module? - -* Most type objects are now callable, so you can use them to create new - objects such as functions, classes, and modules. (This means that the - new module can be deprecated in a future Python version, because you - can now use the type objects available in the types module.) For example, - you can create a new module object with the following code: - - >>> import types - >>> m = types.ModuleType('abc','docstring') - >>> m - - >>> m.__doc__ - 'docstring' - -* A new warning, PendingDeprecationWarning was added to indicate features - which are in the process of being deprecated. The warning will not be - printed by default. To check for use of features that will be deprecated - in the future, supply -Walways::PendingDeprecationWarning:: on the - command line or use warnings.filterwarnings(). - -* The process of deprecating string-based exceptions, as in - raise "Error occurred", has begun. Raising a string will now trigger - PendingDeprecationWarning. - -* Using None as a variable name will now result in a SyntaxWarning warning. - In a future version of Python, None may finally become a keyword. - -* The xreadlines() method of file objects, introduced in Python 2.1, - is no longer necessary because files now behave as their own - iterator. xreadlines() was originally introduced as a faster way to - loop over all the lines in a file, but now you can simply write - for line in file_obj. File objects also have a new read-only encoding - attribute that gives the encoding used by the file; Unicode strings - written to the file will be automatically converted to bytes using - the given encoding. - -* The method resolution order used by new-style classes has changed, - though you'll only notice the difference if you have a really - complicated inheritance hierarchy. Classic classes are unaffected by - this change. Python 2.2 originally used a topological sort of a - class's ancestors, but 2.3 now uses the C3 algorithm as described in - the paper *A Monotonic Superclass Linearization for Dylan*. To - understand the motivation for this change, read Michele Simionato's - article *Python 2.3 Method Resolution Order*, or read the thread - on python-dev starting with the message at - http://mail.python.org/pipermail/python-dev/2002-October/029035.html. - Samuele Pedroni first pointed out the problem and also implemented the fix - by coding the C3 algorithm. - -* Python runs multithreaded programs by switching between threads - after executing N bytecodes. The default value for N has been - increased from 10 to 100 bytecodes, speeding up single-threaded - applications by reducing the switching overhead. Some multithreaded - applications may suffer slower response time, but that's easily - fixed by setting the limit back to a lower number using - sys.setcheckinterval(N). The limit can be retrieved with the new - sys.getcheckinterval() function. - -* One minor but far-reaching change is that the names of extension - types defined by the modules included with Python now contain the - module and a "." in front of the type name. For example, in Python - 2.2, if you created a socket and printed its __class__, you'd get - this output: - - >>> s = socket.socket() - >>> s.__class__ - - - In 2.3, you get this: - - >>> s.__class__ - - -* One of the noted incompatibilities between old- and new-style - classes has been removed: you can now assign to the __name__ and - __bases__ attributes of new-style classes. There are some - restrictions on what can be assigned to __bases__ along the lines of - those relating to assigning to an instance's __class__ attribute. - -**String Changes** - -* The in operator now works differently for strings. Previously, when - evaluating X in Y where X and Y are strings, X could only be a - single character. That's now changed; X can be a string of any - length, and X in Y will return True if X is a substring of Y. If X - is the empty string, the result is always True. - - >>> 'ab' in 'abcd' - True - >>> 'ad' in 'abcd' - False - >>> '' in 'abcd' - True - -* The strip(), lstrip(), and rstrip() string methods now have an - optional argument for specifying the characters to strip. The - default is still to remove all whitespace characters: - -* The startswith() and endswith() string methods now accept negative - numbers for the start and end parameters. - -* Another new string method is zfill(), originally a function in the - string module. zfill() pads a numeric string with zeros on the left - until it's the specified width. Note that the % operator is still - more flexible and powerful than zfill(). - -* A new type object, basestring, has been added. Both 8-bit strings - and Unicode strings inherit from this type, so isinstance(obj, basestring) - will return True for either kind of string. It's a completely abstract - type, so you can't create basestring instances. - -* Interned strings are no longer immortal and will now be - garbage-collected in the usual way when the only reference to them - is from the internal dictionary of interned strings. - -**Replace PyPy Core** - -Building a complete Python interpreter written in Python, -using a subset of Python that avoids dynamic featureslll -which would impair the objectives of RPython. - -- Design and implement the PyPy bytecode interpreter and - build an object space library in RPython. - The resulting interpreter must cover the complete Python - language specification. -- mostly done, test coverage. - -- Port the built-in Python library to PyPy (functions, types and - modules currently implemented in C) -- types needs refactoring, - the rest is mostly done. Anthony Baxter has given us a very useful - list of the cmodules_ we need to consider porting. - -- Decide on a case-by-case basis which features are to - be implemented using RPython or just general Python. -- moving target. - -- Implement a Python parser and bytecode compiler in Python. - -- we have something, but it is not well integrated. - -- A partial Python implementation that passses 75% of the official - Python test suite that don't depend on extension modules. - -- write this test and then pass it. - -**The PyPy Translation** - -- Analysis and translation of the PyPy core into efficient low-level code - (C, Pyrex, Java, others). - moving target - -- Provide a Runtime Library for the translated versions - of PyPy. - not even started - -- Create a code analysis tool for a subset of the Python - language (RPython). Coordinate the definition of RPython - being the implementation language of the core. - - - we can analyse functions, but not classes, modules, spaces etc. - -- Complete implementation of Python, conforming to the language - definition and passing all relevant tests of the official Python - test suite. -- global goal, which we will think more about when - it is very close to being done. - -**Stackless Integration + More Performance Hacks** - -- Identification and Implementation of Optimisations through modifications - of the Translator. - -- Enable Massive Parallelism in a Single Thread. - -- Provide support for real-time parallelism. - -- Allow Pickling of a Running Program. - -- Enhance the translator to support continuation passing - style by integrating technology from the Stackless project. - -- Implement the necessary runtime system to support massive parallelism. - -- Implement a single-threaded, pre-emptive scheduler with - priorities, complementing the OS threads. - -- Study approaches concerning code size vs. speed trade-offs. - -- Implement and compare different object layout and memory management - strategy or strategies. - -- Enhance multimethod dispatching. - -- Implement schemes of pointer tagging. - -- Create reports and merge the results back into the optimization effort. - -**Psyco Integration** - -- Outperform the state-of-the art (Psyco, Stackless). - -- Enhance PyPy to dynamically adapt to its run-time environment and - to the characteristics of the running program. Dramatically - increase speed by enabling Just-In-Time compilation and - specialization. - -- Address multiple processor architectures. - -- Apply and enhance techniques from the Psyco project. Promote parts - of the static translator to be used for run-time specialization. - -- Design and implement a back-end component for dynamically emitting - machine code for multiple processor architectures. Enable dynamic - foreign function calls. - -- Research optimisation heuristics for the Just-In-Time compiler. - -- A Just-In-Time compiler for PyPy !!! Outperform the - state-of-the art (Psyco, Stackless). - -**Embed in Specialized Hardware** - -if we get funding. - -**Implement Security, Distribution and Persistence** - -- Research and validate the flexibility of PyPy by building key middleware - features into the language itself. - -- Analyze and implement security models at the language level. - -- Implement the "RExec" restricted execution model. (It was removed - from the official Python implementation because it is false security.) - -- Analyze and implement distributed execution models at the language level. - -- Implement network-transparent execution of Python programs. (Typical - libraries require programs to be aware of the remote execution model.) - -- Analyze and implement persistence at the language level. -- talk to - Patrick O'Brien who is really hot for the idea. - -- Implement an orthogonally persistent object space for Python programs. - (Persistence is never fully orthogonal without advanced language support.) - -**PyPy A la Carte** - -- Develop tools that will allow to chose from available features and runtime - restrictions to build a custom PyPy version. - -- Analyse and integrate all results from the results of other workpackages. - This involves identifying and resolving conflicts which could prevent - a combintation of desired optimization goals. - -- Implement user interfaces to select features and runtime restrictions. - Provide a way to automatically build a PyPy custom version for different - memory, performance and extension requirements. - -- Make a build- and configuration tool that allows to build custom PyPy - versions suitable for specialized environments such as small or very large - computing devices. - -.. _cmodules: http://codespeak.net/pypy/index.cgi?doc/cmodules.html - Copied: pypy/dist/pypy/documentation/misc.txt (from r10791, pypy/dist/pypy/documentation/future.txt) ============================================================================== --- pypy/dist/pypy/documentation/future.txt (original) +++ pypy/dist/pypy/documentation/misc.txt Sun Apr 17 22:14:59 2005 @@ -1,11 +1,36 @@ -============ -Future plans -============ +====================== +Miscallenous fragments +====================== .. contents:: .. sectnum:: -This document contains a loose collection of future plans. +This document contains a loose collection of goals, plans and +fragmentary documentation. (We don't want these pieces to clutter +our documentation directory as single files, to be honest.) + +.. _developers: + +pypy project developers and contributors +======================================== + +The following list is not up-to-date and should +be computed automatically, anyway:: + + Armin Rigo Holger Krekel + Samuele Pedroni Christian Tismer + Michael Hudson Laura Creighton + Jacob Hallen Alex Martelli + Richard Emslie Seo Sanghyeon + Anna Ravencroft Guido Van Rossum + Anders Lehmann Tomek Meka + Jiwon Seo Stephan Diehl + Jens-Uwe Mager Jonathan David Riehl + Guenter Jantzen Stefan Schwarzer + Dinu Gherman Patrick Maupin + Rocco Moretti Andreas Friedge + Theo de Ridder Olivier Dormond + Bob Ippolito Marius Gedminas .. _newrepolayout: @@ -88,6 +113,219 @@ .. _`py.test`: http://codespeak.net/py/current/doc/test.html + +Porting C Modules in Python +================================ + +PyPy shares a common need with other python reimplementations: +reimplementing c-coded modules in Python. The more plain +python code there is the less code needs to be ported either +Python or to the implementation language (e.g. C# for IronPython_). + +In the course of an email discussion_ Anthony Baxter came up with +a annotated list of modules and some rough categorization of +the to-be-or-has-been ported modules. The list doesn't claim +to be exhaustive and should certainly be worked on. + +Probably doable +--------------- + +These ones are probably achievable, although you might think +otherwise. + +_bisectmodule - already exists + +_codecsmodule + +_csv - already exists? + +_heapqmodule - already exists + +_hotshot + +_localemodule + +_randommodule - already exists but with a lesser generator + +_sre - already exists? + +_weakref + +arraymodule + +audioop + +binascii + +cPickle - already exists + +cStringIO - already exists + +cgensupport + +cmathmodule + +collectionsmodule - Raymond Hettinger has an ASPN recipe (which has a 'deque' drop-in replacement): + http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/259179 + +cryptmodule - see http://home.clear.net.nz/pages/c.evans/sw/ + +datetimemodule - already exists + +gcmodule + +imageop + +imgfile + +itertoolsmodule - the docs include pure python equivalents in a form +suitable for cut and pasting + +mathmodule + +md5module - done + +operator - done in PyPy + +parsermodule - already exists? + +rgbimgmodule + +sgimodule + +shamodule - done + +stropmodule + +structmodule + +symtablemodule + +syslogmodule + +timingmodule + +unicodedata + +yuvconvert + +zipimport + +Deprecated +---------- + +These modules are deprecated + +regexmodule + +regexpr + +rotormodule + +mpzmodule + +Links in an external library +---------------------------- + +These are all wrappers around external C libraries. Rewriting them +from scratch is really not practical. + +_bsddb + +_curses_panel + +_cursesmodule + +_ssl + +_tkinter + +almodule + +bsddbmodule + +bz2module + +cdmodule + +clmodule + +dbmmodule + +flmodule + +fmmodule + +gdbmmodule + +glmodule + +nismodule + +puremodule + +pyexpat + +readline (replace with pyrepl?) + +svmodule + +termios + +tkappinit + +zlibmodule + +System specific +--------------- + +These are modules that are wrappers around system calls +and the like. Rewriting them in pure Python will still +need a way to invoke the underlying calls - and will probably +be different for each platform (pypy, pycore, ironpython, &c). +A lot of these are also a mass of #ifdefs for various broken +operating systems. + +dlmodule + +errnomodule + +fcntlmodule + +fpectlmodule + +fpetestmodule + +grpmodule + +linuxaudiodev + +mmapmodule + +ossaudiodev + +posixmodule + +pwdmodule + +resource + +selectmodule + +signalmodule + +socketmodule + +sunaudiodev + +threadmodule + +timemodule + +.. _IronPython: http://ironpython.com/ +.. _discussion: http://codespeak.net/pipermail/pypy-dev/2004q3/001509.html + + .. _goals: Brainstorming of goals Modified: pypy/dist/pypy/documentation/newstructure ============================================================================== --- pypy/dist/pypy/documentation/newstructure (original) +++ pypy/dist/pypy/documentation/newstructure Sun Apr 17 22:14:59 2005 @@ -5,9 +5,11 @@ optionaltool.txt checking_ReST.txt -revreport +misc cmodules.txt # move to revreport somehow? developers.txt + newrepolayout.txt + goals.txt index.txt # references all the major chapters @@ -20,9 +22,6 @@ modules functions -future.txt - newrepolayout.txt - goals.txt coding-style.txt restrictedpy.txt Modified: pypy/dist/pypy/documentation/redirections ============================================================================== --- pypy/dist/pypy/documentation/redirections (original) +++ pypy/dist/pypy/documentation/redirections Sun Apr 17 22:14:59 2005 @@ -15,7 +15,10 @@ 'checking_ReST.html' : 'coding-style.html#pypy-documentation', 'optionaltools.html' : 'coding-style.html#optionaltool', - 'newrepolayout.html' : 'future.html#newrepolayout', - 'goals.html' : 'future.html#goals', + 'newrepolayout.html' : 'misc.html#newrepolayout', + 'goals.html' : 'misc.html#goals', + + 'developers.html' : 'misc.html#developers', + 'cmodules.html' : 'misc.html#cmodules', } From arigo at codespeak.net Sun Apr 17 22:17:42 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 17 Apr 2005 22:17:42 +0200 (CEST) Subject: [pypy-svn] r10793 - pypy/dist/pypy/documentation Message-ID: <20050417201742.1262227B4B@code1.codespeak.net> Author: arigo Date: Sun Apr 17 22:17:41 2005 New Revision: 10793 Modified: pypy/dist/pypy/documentation/objspace.txt Log: added a paragraph about the stdobjspace. Modified: pypy/dist/pypy/documentation/objspace.txt ============================================================================== --- pypy/dist/pypy/documentation/objspace.txt (original) +++ pypy/dist/pypy/documentation/objspace.txt Sun Apr 17 22:17:41 2005 @@ -247,6 +247,9 @@ The Standard Object Space ========================= +Introduction +------------ + The Standard Object Space (StdObjSpace_) is the direct equivalent of CPython's object library (the "Objects/" subdirectory in the distribution). It is an implementation of the common Python types in a lower-level language. The Standard Object Space defines an abstract parent class, W_Object, and a bunch of subclasses like W_IntObject, W_ListObject, and so on. A wrapped object (a "black box" for the interpreter main loop) is thus an instance of one of these classes. When the main loop invokes an operation, say the addition, between two wrapped objects w1 and w2, the Standard Object Space does some internal dispatching (similar to "Object/abstract.c" in CPython) and invokes a method of the proper W_XyzObject class that can do the operation. The operation itself is done with the primitives allowed by RestrictedPython. The result is constructed as a wrapped object again. For example, compare the following implementation of integer addition with the function "int_add()" in "Object/intobject.c": :: @@ -267,12 +270,32 @@ Note that the Standard Object Space implementation uses MultiMethod_ dispatch instead of the complex rules of "Object/abstract.c". I think that this can be translated to a different low-level dispatch implementation that would be binary compatible with CPython's (basically the PyTypeObject structure and its function pointers). If compatibility is not required it will be more straightforwardly converted into some efficient multimethod code. ---------------------------------------------------------------------------- - .. _StdObjSpace: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/ .. _MultiMethod: theory.html#multimethods +Object types +------------ + +The larger part of the `StdObjSpace`_ package defines and implements the library of Python's standard built-in object types. Each type (int, float, list, tuple, str, type, etc.) is typically implemented by two modules: + +* the *type specification* module, which for a type ``xxx`` is called ``xxxtype.py``; + +* the *implementation* module, called ``xxxobject.py``. + +The ``xxxtype.py`` module basically defines the type object itself. For example, `listtype.py`_ contains the specification of the object you get when you type ``list`` in a PyPy prompt. `listtype.py`_ enumerates the methods specific to lists, like ``append()``. + +A particular method implemented by all types is the ``__new__()`` special method, which in Python's new-style-classes world is responsible for creating an instance of the type. In PyPy, ``__new__()`` locates and imports the module implementing *instances* of the type, and creates such an instance based on the arguments the user supplied to the constructor. For example, `tupletype.py`_ defines ``__new__()`` to import the class ``W_TupleObject`` from `tupleobject.py`_ and instantiate it. The `tupleobject.py`_ then contains a "real" implementation of tuples: the way the data is stored in the ``W_TupleObject`` class, how the operations work, etc. + +The goal of the above module layout is to cleanly separate the Python type object, visible to the user, and the actual implementation of its instances. It is possible (though not done so far) to provide *several* implementations of the instances of the same Python type. The ``__new__()`` method could decide to create one or the other. From the user's point of view, they are still all instances of exactly the same type; the possibly multiple internal ``W_XxxObject`` classes are not visible. PyPy knows that (e.g.) the application-level type of its interpreter-level ``W_TupleObject`` instances is "tuple" because there is a ``typedef`` class attribute in ``W_TupleObject`` which points back to the tuple type specification from `tupletype.py`_. + +.. _`listtype.py`: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/listtype.py +.. _`tupletype.py`: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/tupletype.py +.. _`tupleobject.py`: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/tupleobject.py + +--------------------------------------------------------------------------- + + The Trace Object Space ====================== From hpk at codespeak.net Sun Apr 17 22:21:27 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 22:21:27 +0200 (CEST) Subject: [pypy-svn] r10794 - pypy/dist/pypy/documentation Message-ID: <20050417202127.41E2327B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 22:21:27 2005 New Revision: 10794 Added: pypy/dist/pypy/documentation/navlist Modified: pypy/dist/pypy/documentation/test_redirections.py Log: introduce a navlist (needs to be used by the web interface) for the left side navigation of the documentation page Added: pypy/dist/pypy/documentation/navlist ============================================================================== --- (empty file) +++ pypy/dist/pypy/documentation/navlist Sun Apr 17 22:21:27 2005 @@ -0,0 +1,8 @@ +[ + 'getting_started.html', + 'architecture.html', + 'coding-style.html', + 'objspace.html', + 'misc.html', + 'theory.html', +] Modified: pypy/dist/pypy/documentation/test_redirections.py ============================================================================== --- pypy/dist/pypy/documentation/test_redirections.py (original) +++ pypy/dist/pypy/documentation/test_redirections.py Sun Apr 17 22:21:27 2005 @@ -13,3 +13,6 @@ d = test_eval() for newname in d.values(): yield checkexist, redir.dirpath(newname) + +def test_navlist(): + assert eval(redir.dirpath('navlist').read()) From arigo at codespeak.net Sun Apr 17 22:30:24 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 17 Apr 2005 22:30:24 +0200 (CEST) Subject: [pypy-svn] r10795 - pypy/dist/pypy/documentation Message-ID: <20050417203024.D5DD027B4B@code1.codespeak.net> Author: arigo Date: Sun Apr 17 22:30:24 2005 New Revision: 10795 Modified: pypy/dist/pypy/documentation/objspace.txt Log: Removed the trailing "--------" line. (Yup, you have to search a bit to see what changed in this diff.) Modified: pypy/dist/pypy/documentation/objspace.txt ============================================================================== --- pypy/dist/pypy/documentation/objspace.txt (original) +++ pypy/dist/pypy/documentation/objspace.txt Sun Apr 17 22:30:24 2005 @@ -293,7 +293,6 @@ .. _`tupletype.py`: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/tupletype.py .. _`tupleobject.py`: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/tupleobject.py ---------------------------------------------------------------------------- The Trace Object Space From hpk at codespeak.net Sun Apr 17 23:27:42 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 23:27:42 +0200 (CEST) Subject: [pypy-svn] r10799 - pypy/dist/pypy/documentation Message-ID: <20050417212742.BCBA227B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 23:27:42 2005 New Revision: 10799 Modified: pypy/dist/pypy/documentation/index.txt Log: refactored the entry page, corrected links Modified: pypy/dist/pypy/documentation/index.txt ============================================================================== --- pypy/dist/pypy/documentation/index.txt (original) +++ pypy/dist/pypy/documentation/index.txt Sun Apr 17 23:27:42 2005 @@ -7,35 +7,34 @@ Here are some good entry points into PyPy's world: - * PyPy's current architecture_ + * architecture_ gives a complete view of PyPy's basic design. - * howtopypy_ provides some hands-on instructions for getting started, + * `getting started`_ provides hands-on instructions including a two-liner to run PyPy on your computer. - * the current `revision report`_ shows status information - about ongoing pypy development - - * go to recently-modified_ for an overview on which documentation - changed recently + * objspace_ and coding-style_ provide more in-depth + implementation level information. + * recently-modified_ shows a list of recently modified + documentation while `revision report`_ shows status + information about ongoing pypy development + +.. _`objspace`: objspace.html +.. _`coding-style`: coding-style.html +.. _`architecture`: architecture.html .. _`revision report`: http://codespeak.net/pypy/rev/current +.. _`getting started`: getting_started.html +.. _`theory`: theory.html Before doing pypy coding, you might also take a look at these developer-specific instructions: - * coding-style_ covers pypy coding conventions - - * optionaltool_ describes some optional tools used in pypy development - - * wrapping_ is a description of the crucial distinction between - application-level and interpreter-level objects (without understanding - this you might have difficulties understanding PyPy's source code). - * oscon2003-paper_ is a paper we presented at Oscon 2003 describing what the pypy project is about and why you should care * testdesign_ describes a bit of PyPy's testing approaches + Further reading / related projects ---------------------------------- @@ -62,12 +61,7 @@ * A comparison of Python and Pliant_ , an OS written in a python-like language. -.. _architecture: http://codespeak.net/pypy/index.cgi?doc/architecture.html -.. _oscon2003-paper: http://codespeak.net/pypy/index.cgi?doc/oscon2003-paper.html -.. _howtopypy: http://codespeak.net/pypy/index.cgi?doc/howtopypy.html -.. _readme: http://codespeak.net/pypy/index.cgi?doc/readme.html -.. _wrapping: http://codespeak.net/pypy/index.cgi?doc/wrapping.html -.. _coding-style: http://codespeak.net/pypy/index.cgi?doc/coding-style.html +.. _oscon2003-paper: http://codespeak.net/pypy/index.cgi?extradoc/talk/oscon2003-paper.html .. _howtosvn: http://codespeak.net/pypy/index.cgi?doc/howtosvn.html .. _optionaltool: http://codespeak.net/pypy/index.cgi?doc/optionaltool.html .. _testdesign: http://codespeak.net/pypy/index.cgi?doc/testdesign.html From hpk at codespeak.net Sun Apr 17 23:35:56 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 23:35:56 +0200 (CEST) Subject: [pypy-svn] r10800 - pypy/dist/pypy/documentation Message-ID: <20050417213556.680AC27B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 23:35:56 2005 New Revision: 10800 Modified: pypy/dist/pypy/documentation/objspace.txt Log: don't just start with wrapping rules Modified: pypy/dist/pypy/documentation/objspace.txt ============================================================================== --- pypy/dist/pypy/documentation/objspace.txt (original) +++ pypy/dist/pypy/documentation/objspace.txt Sun Apr 17 23:35:56 2005 @@ -5,17 +5,18 @@ .. contents:: .. sectnum:: -This document is an overview of the implementation of PyPy's `Object Spaces`_. .. _`Object Spaces`: architecture.html#the-object-space +Introduction +============ + +This document describes aspects of the implementation of PyPy's `Object Spaces`_. + Wrapping rules ============== -Introduction ------------- - PyPy is made of Python source code at two levels: there is on the one hand *application-level code* that looks like normal Python code, and that implements some functionalities as one would expect from Python code (e.g. one can give a pure Python implementation of some built-in functions like ``zip()``). There is also *interpreter-level code* for the functionalities that must more directly manipulate interpreter data and objects (e.g. the main loop of the interpreter, and the various object spaces). Application-level code doesn't see object spaces explicitely: it runs using an object space to support the objects it manipulates, but this is implicit. There is no need for particular conventions for application-level code. The sequel is only about interpreter-level code. (Ideally, no application-level variable should be called ``space`` or ``w_xxx`` to avoid confusion.) From arigo at codespeak.net Sun Apr 17 23:41:35 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 17 Apr 2005 23:41:35 +0200 (CEST) Subject: [pypy-svn] r10801 - pypy/dist/pypy/documentation Message-ID: <20050417214135.19FEF27B4B@code1.codespeak.net> Author: arigo Date: Sun Apr 17 23:41:34 2005 New Revision: 10801 Added: pypy/dist/pypy/documentation/translation.txt - copied, changed from r10793, pypy/dist/pypy/documentation/annotation.txt Removed: pypy/dist/pypy/documentation/annotation.txt pypy/dist/pypy/documentation/basicblock.asc Modified: pypy/dist/pypy/documentation/navlist pypy/dist/pypy/documentation/redirections pypy/dist/pypy/documentation/test_redirections.py pypy/dist/pypy/documentation/theory.txt Log: The last big txt file is translation.txt. Draft for now. Deleted: /pypy/dist/pypy/documentation/annotation.txt ============================================================================== --- /pypy/dist/pypy/documentation/annotation.txt Sun Apr 17 23:41:34 2005 +++ (empty file) @@ -1,306 +0,0 @@ -The annotation pass -=================== - -(INCOMPLETE DRAFT) - -We describe below how a control flow graph can be "annotated" to -discover the types of the objects. This annotation pass is a form of -type inference. It is done after control flow graphs are built by the -FlowObjSpace, but before these graphs are translated into low-level code -(e.g. C/Lisp/Pyrex). - - ------ -Model ------ - -The major goal of the annotator is to "annotate" each variable that -appears in a flow graph. An "annotation" describes all the possible -Python objects that this variable could contain at run-time, based on a -whole-program analysis of all the flow graphs --- one per function. - -An "annotation" is an instance of ``SomeObject``. There are subclasses -that are meant to represent specific families of objects. Note that -these classes are all meant to be instantiated; the classes ``SomeXxx`` -themselves are not the annotations. - -Here is an overview (see ``pypy.annotation.model``): - -* ``SomeObject`` is the base class. An instance ``SomeObject()`` - represents any Python object. It is used for the case where we don't - have enough information to be more precise. In practice, the presence - of ``SomeObject()`` means that we have to make the annotated source code - simpler or the annotator smarter. - -* ``SomeInteger()`` represents any integer. - ``SomeInteger(nonneg=True)`` represent a non-negative integer (``>=0``). - -* ``SomeString()`` represents any string; ``SomeChar()`` a string of - length 1. - -* ``SomeTuple([s1,s2,..,sn])`` represents a tuple of length ``n``. The - elements in this tuple are themselves constrained by the given list of - annotations. For example, ``SomeTuple([SomeInteger(), SomeString()])`` - represents a tuple with two items: an integer and a string. - -There are more complex subclasses of ``SomeObject`` that we describe in -more details below. - -All the ``SomeXxx`` instances can optionally have a ``const`` attribute, -which means that we know exactly which Python object the Variable will -contain. - -All the ``SomeXxx`` instances are supposed to be immutable. The -annotator manages a dictionary mapping Variables (which appear in flow -graphs) to ``SomeXxx`` instances; if it needs to revise its belief about -what a Variable can contain, it does so by updating this dictionary, not -the ``SomeXxx`` instance. - - ---------- -Annotator ---------- - -The annotator itself (``pypy.translator.annrpython``) works by -propagating the annotations forward in the flow graphs, starting at some -entry point function, possibly with explicitely provided annotations -about the entry point's input arguments. It considers each operation in -the flow graph in turn. Each operation takes a few input arguments -(Variables and Constants) and produce a single result (a Variable). -Depending on the input argument's annotations, an annotation about the -operation result is produced. The exact rules to do this are provided -by the whole ``pypy.annotation`` subdirectory, which defines all the -cases in detail according to the R-Python semantics. For example, if -the operation is 'v3=add(v1,v2)' and the Variables v1 and v2 are -annotated with ``SomeInteger()``, then v3 also receives the annotation -``SomeInteger()``. So for example the function:: - - def f(n): - return n+1 - -corresponds to the flow graph:: - - start ----------. - | - V - +-------------------+ - | v2 = add(v1, 1) | - +-------------------+ - | - `---> return block - -If the annotator is told that v1 is ``SomeInteger()``, then it will -deduce that v2 (and hence the function's return value) is -``SomeInteger()``. - -This step-by-step annotation phase proceeds through all the operations -in a block, and then along the links between the blocks of the flow -graph. If there are loops in the flow graph, then the links will close -back to already-seen blocks, as in:: - - def g(n): - i = 0 - while n: - i = i + n - n = n - 1 - -whose flow graph is:: - - start -----. ,-----------------. - | n1 0 | m3 j3 | - V v | - +-------------------+ | - | input: n2 i2 | | - | v2 = is_true(n2) | | - +-------------------+ | - | | | - |ifFalse |ifTrue | - return <---' | n2 i2 | - V | - +--------------------+ | - | input: n3 i3 | | - | j3 = add(i3, n3) | | - | m3 = sub(n3, 1) |---' - +--------------------+ - -Be sure to follow the variable renaming that occurs systematically -across each link in a flow graph. In the above example the Variables -have been given names similar to the name of the original variables in -the source code (the FlowObjSpace tries to do this too) but keep in mind -that all Variables are different: n1, n2, i2, v2, n3, i3, j3, m3. - -Assume that we call the annotator with an input annotation of -``SomeInteger()`` for n1. Following the links from the start, the -annotator will first believe that the Variable i2, whose value comes -from the constant 0 of the first link, must always be zero. It will -thus use the annotation ``SomeInteger(const=0)`` for i2. Then it will -propagate the annotations through both blocks, and find that v2 is -``SomeBool()`` and all other variables are ``SomeInteger()``. In -particular, the annotation of j3 is different from the annotation of the -Variable i2 into which it is copied (via the back-link). More -precisely, j3 is ``SomeInteger()`` but i2 is the more specific -``SomeInteger(const=0)``. This means that the assumption that i2 must -always be zero is found to be wrong. At this point, the annotation of -i2 is *generalized* to include both the existing and the new annotation. -(This is the purpose of ``pypy.annotation.model.unionof()``). Then -these more general annotations must again be propagated forward. - -This process of successive generalizations continues until the -annotations stabilize. In the above example, it is sufficient to -re-analyse the first block once, but in general it can take several -iterations to reach a fixpoint. Annotations may also be propagated from -one flow graph to another and back repeatedly, across ``call`` -operations. The overall model should ensure that this process -eventually terminates under reasonable conditions. Note that as long as -the process is not finished, the annotations given to the Variables are -wrong, in the sense that they are too specific; at run-time, the -Variables will possibly contain Python objects outside the set defined -by the annotation, and the annotator doesn't know it yet. - - ----------------------------------- -Description of the available types ----------------------------------- - -The reference and the details for the annotation model is found in the -module ``pypy.annotation.model``. We describe below the issues related -to the various kinds of annotations. - - -Simple Types -++++++++++++ - -``SomeInteger``, ``SomeBool``, ``SomeString``, ``SomeChar`` all stands -for the obvious corresponding set of immutable Python objects. - - -Tuples -++++++ - -``SomeTuple`` only considers tuples of known length. We don't try to -handle tuples of varying length (the program should use lists instead). - - -Lists and Dictionaries -++++++++++++++++++++++ - -``SomeList`` stands for a list of homogenous type (i.e. all the elements -of the list are represented by a single common ``SomeXxx`` annotation). - -``SomeDict`` stands for a homogenous dictionary (i.e. all keys have the -same ``SomeXxx`` annotation, and so have all values). - -These types are mutable, which requires special support for the -annotator. The problem is that in code like:: - - lst = [42] - update_list(lst) - value = lst[0] - -the annotation given to ``value`` depends on the order in which the -annotator progresses. As ``lst`` is originally considered as a list of -``SomeInteger(const=42)``, it is possible that ``value`` becomes -``SomeInteger(const=42)`` as well if the analysis of ``update_list()`` -is not completed by the time the third operation is first considered. -To solve this problem, each ``SomeList`` or ``SomeDict`` is linked to a -set of so-called *factories*. Each creation point, i.e. each 'newlist' -or 'newdict' operation, gets its associated factory. The factory -remembers what kind of object it really needs to build. For example, in -code like:: - - lst = [42] - lst.append(43) - -the factory associated with the first line originally builds a list -whose items are all constants equal to 42; when the ``append(43)`` call -is then found, the factory is updated to build a more general list of -integers, and the annotator restarts its analysis from the factory -position. Our model is not sensitive to timing: it doesn't know that -the same list object may contain different items at different times. It -only computes how general the items in the list must be to cover all -cases. - -For initially empty lists, as created by ``lst = []``, we build a list -whose items have the annotation ``SomeImpossibleValue``. This is an -annotation that denotes that no Python object at all can possibly appear -here at run-time. It is the least general annotation. The rationale is -that:: - - lst = [] - oups = lst[0] - -will give the variable ``oups`` the annotation ``SomeImpossibleValue``, -which is reasonable given that no concrete Python object can ever be put -in ``oups`` at run-time. In a more usual example:: - - lst = [] - lst.append(42) - -the list is first built with ``SomeImpossibleValue`` items, and then the -factory is generalized to produce a list of ``SomeInteger(const=42)``. -With this "impossible object" trick we don't have to do anything special -about empty lists. - - -User-defined Classes and Instances -++++++++++++++++++++++++++++++++++ - -``SomeInstance`` stands for an instance of the given class or any -subclass of it. For each user-defined class seen by the annotator, we -maintain a ClassDef (``pypy.annotation.classdef``) describing the -attributes of the instances of the class; essentially, a ClassDef gives -the set of all class-level and instance-level attributes, and for each -one, a corresponding ``SomeXxx`` annotation. - -Instance-level attributes are discovered progressively as the annotation -progresses. Assignments like:: - - inst.attr = value - -update the ClassDef of the given instance to record that the given -attribute exists and can be as general as the given value. - -For every attribute, the ClassDef also records all the positions where -the attribute is *read*. If, at some later time, we discover an -assignment that forces the annotation about the attribute to be -generalized, then all the places that read the attribute so far are -marked as invalid and the annotator will have to restart its analysis -from there. - -The distinction between instance-level and class-level attributes is -thin; class-level attributes are essentially considered as initial -values for instance-level attributes. Methods are not special in this -respect, expect that they are bound to the instance (i.e. ``self = -SomeInstance(cls)``) when considered as the initial value for the -instance. - -The inheritance rules are as follows: the union of two ``SomeInstance`` -annotations is the ``SomeInstance`` of the most precise common base -class. If an attribute is considered (i.e. read or written) through a -``SomeInstance`` of a parent class, then we assume that all subclasses -also have the same attribute, and that the same annotation applies to -them all (so code like ``return self.x`` in a method of a parent class -forces the parent class and all its subclasses to have an attribute -``x``, whose annotation is general enough to contain all the values that -all the subclasses might want to store in ``x``). However, distinct -subclasses can have attributes of the same names with different, -unrelated annotations if they are not used in a general way through the -parent class. - - -Prebuilt Constants -++++++++++++++++++ - -(to be completed) - - -Built-in functions and methods -++++++++++++++++++++++++++++++ - -(to be completed) - - -Others -++++++ - -(to be completed) Deleted: /pypy/dist/pypy/documentation/basicblock.asc ============================================================================== --- /pypy/dist/pypy/documentation/basicblock.asc Sun Apr 17 23:41:34 2005 +++ (empty file) @@ -1,36 +0,0 @@ -the CtlFlowObjSpace is supposed to produce the following object-model -(currently just a linear list of objects referencing each other, sorry -no UML diagream :-) - -the reason we want this objectmodel as the source for doing the -translation is that otherwise we get very-hard-to-read low-level/pyrex -code with lots of gotos etc.pp. - -With the CtlFlow-object model we can basically reconstruct some -source-structure (without examining the bytecode). - -class BasicBlock: - .inputargs = [list-of-input-locals] - .locals = [list-of-all-locals-incluing-inputargs] - .operations = [list-of-operations] - .branch = - -class Variable: - pass - -class Constant: - .value = ... - -class SpaceOperation: - .opname = 'add' - .args = [list-of-variables] - .result = - -class Branch: - .args = [list-of-variables] - .target = - -class ConditionalBranch: - .condition = - .iftrue = - .iffalse = Modified: pypy/dist/pypy/documentation/navlist ============================================================================== --- pypy/dist/pypy/documentation/navlist (original) +++ pypy/dist/pypy/documentation/navlist Sun Apr 17 23:41:34 2005 @@ -2,7 +2,8 @@ 'getting_started.html', 'architecture.html', 'coding-style.html', - 'objspace.html', + 'objspace.html', + 'translation.html', 'misc.html', 'theory.html', ] Modified: pypy/dist/pypy/documentation/redirections ============================================================================== --- pypy/dist/pypy/documentation/redirections (original) +++ pypy/dist/pypy/documentation/redirections Sun Apr 17 23:41:34 2005 @@ -19,6 +19,9 @@ 'goals.html' : 'misc.html#goals', 'developers.html' : 'misc.html#developers', - 'cmodules.html' : 'misc.html#cmodules', + 'cmodules.html' : 'misc.html#cmodules', + + 'annotation.html' : 'translation.html#annotator', + 'basicblock.asc' : 'objspace.html#the-flow-model', } Modified: pypy/dist/pypy/documentation/test_redirections.py ============================================================================== --- pypy/dist/pypy/documentation/test_redirections.py (original) +++ pypy/dist/pypy/documentation/test_redirections.py Sun Apr 17 23:41:34 2005 @@ -15,4 +15,6 @@ yield checkexist, redir.dirpath(newname) def test_navlist(): - assert eval(redir.dirpath('navlist').read()) + navlist = eval(redir.dirpath('navlist').read()) + for entry in navlist: + yield checkexist, redir.dirpath(entry) Modified: pypy/dist/pypy/documentation/theory.txt ============================================================================== --- pypy/dist/pypy/documentation/theory.txt (original) +++ pypy/dist/pypy/documentation/theory.txt Sun Apr 17 23:41:34 2005 @@ -62,4 +62,4 @@ .. _`quite general one`: http://codespeak.net/svn/pypy/dist/pypy/objspace/std/multimethod.py .. _StdObjSpace: objspace.html#the-standard-object-space .. _`short two-arguments-dispatching one`: http://codespeak.net/svn/pypy/dist/pypy/annotation/pairtype.py -.. _annotator: annotation.html +.. _annotator: translation.html#annotator Copied: pypy/dist/pypy/documentation/translation.txt (from r10793, pypy/dist/pypy/documentation/annotation.txt) ============================================================================== --- pypy/dist/pypy/documentation/annotation.txt (original) +++ pypy/dist/pypy/documentation/translation.txt Sun Apr 17 23:41:34 2005 @@ -1,3 +1,51 @@ +===================== + Translation +===================== + +.. contents:: +.. sectnum:: + +This document describes the tool chain that we developed to analyze and +"compile" RPython_ programs (like PyPy itself) to various lower-level +languages. + +.. _RPython: coding-style.html#restricted-python + + +Overview +======== + +XXX very preliminary documentation! + +The module `translator.py`_ is the common entry point to the various parts +of the translation process. It is available as an interactive utility to +`play around`_. + +Here are the steps we follow to translate a given program: + +1. The complete program is imported. If needed, extra initialization is performed. Once this is done, the program must be present in memory is a form that is "static enough" in the sense of RPython_. + +2. The `Flow Object Space`_ processes the input program, turning each function independently into a `control flow graph`_ data structure recording sequences of basic operations in "single-style assignment". + +3. Optionally, the Annotator_ performs global type inference on the control flow graphs. Each variable gets annotated with an inferred type. + +4. One of the Code Generators (XXX not documented yet) turns the optionally annotated flow graphs and produces a source file in a lower-level language: C_, LLVM_, `Common Lisp`_, Pyrex_, Java_, or `Python again`_ (this is used in PyPy to turn sufficiently RPythonic app-level code into interp-level code). + +.. _`translator.py`: http://codespeak.net/svn/pypy/dist/pypy/translator/translator.py +.. _`play around`: getting_started.html#trying-out-the-translator +.. _`Flow Object Space`: objspace.html#the-flow-object-space +.. _`control flow graph`: objspace.html#the-flow-model +.. _C: http://codespeak.net/svn/pypy/dist/pypy/translator/genc/ +.. _LLVM: http://codespeak.net/svn/pypy/dist/pypy/translator/llvm/ +.. _`Common Lisp`: http://codespeak.net/svn/pypy/dist/pypy/translator/gencl.py +.. _Pyrex: http://codespeak.net/svn/pypy/dist/pypy/translator/genpyrex.py +.. _Java: http://codespeak.net/svn/pypy/dist/pypy/translator/java/ +.. _`Python again`: http://codespeak.net/svn/pypy/dist/pypy/translator/geninterplevel.py + + + +.. _Annotator: + The annotation pass =================== @@ -10,9 +58,8 @@ (e.g. C/Lisp/Pyrex). ------ Model ------ +------------------------ The major goal of the annotator is to "annotate" each variable that appears in a flow graph. An "annotation" describes all the possible @@ -57,9 +104,8 @@ the ``SomeXxx`` instance. ---------- Annotator ---------- +-------------------------- The annotator itself (``pypy.translator.annrpython``) works by propagating the annotations forward in the flow graphs, starting at some @@ -158,9 +204,8 @@ by the annotation, and the annotator doesn't know it yet. ----------------------------------- Description of the available types ----------------------------------- +----------------------------------------------- The reference and the details for the annotation model is found in the module ``pypy.annotation.model``. We describe below the issues related From hpk at codespeak.net Sun Apr 17 23:43:07 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 17 Apr 2005 23:43:07 +0200 (CEST) Subject: [pypy-svn] r10802 - pypy/dist/pypy/documentation Message-ID: <20050417214307.B19B427B4B@code1.codespeak.net> Author: hpk Date: Sun Apr 17 23:43:07 2005 New Revision: 10802 Modified: pypy/dist/pypy/documentation/index.txt Log: reference translation Modified: pypy/dist/pypy/documentation/index.txt ============================================================================== --- pypy/dist/pypy/documentation/index.txt (original) +++ pypy/dist/pypy/documentation/index.txt Sun Apr 17 23:43:07 2005 @@ -15,11 +15,15 @@ * objspace_ and coding-style_ provide more in-depth implementation level information. + * translation_ offers the beginnings of documentation + about our low level code generator backends. + * recently-modified_ shows a list of recently modified documentation while `revision report`_ shows status information about ongoing pypy development .. _`objspace`: objspace.html +.. _`translation`: translation.html .. _`coding-style`: coding-style.html .. _`architecture`: architecture.html .. _`revision report`: http://codespeak.net/pypy/rev/current From arigo at codespeak.net Sun Apr 17 23:50:19 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 17 Apr 2005 23:50:19 +0200 (CEST) Subject: [pypy-svn] r10803 - pypy/dist/pypy/documentation Message-ID: <20050417215019.07DAE27B4B@code1.codespeak.net> Author: arigo Date: Sun Apr 17 23:50:18 2005 New Revision: 10803 Modified: pypy/dist/pypy/documentation/translation.txt Log: small addition. Modified: pypy/dist/pypy/documentation/translation.txt ============================================================================== --- pypy/dist/pypy/documentation/translation.txt (original) +++ pypy/dist/pypy/documentation/translation.txt Sun Apr 17 23:50:18 2005 @@ -31,6 +31,8 @@ 4. One of the Code Generators (XXX not documented yet) turns the optionally annotated flow graphs and produces a source file in a lower-level language: C_, LLVM_, `Common Lisp`_, Pyrex_, Java_, or `Python again`_ (this is used in PyPy to turn sufficiently RPythonic app-level code into interp-level code). +5. This lower-level source file is compiled to produce an executable. + .. _`translator.py`: http://codespeak.net/svn/pypy/dist/pypy/translator/translator.py .. _`play around`: getting_started.html#trying-out-the-translator .. _`Flow Object Space`: objspace.html#the-flow-object-space From cfbolz at codespeak.net Mon Apr 18 02:12:42 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Mon, 18 Apr 2005 02:12:42 +0200 (CEST) Subject: [pypy-svn] r10808 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050418001242.E6D0027B4D@code1.codespeak.net> Author: cfbolz Date: Mon Apr 18 02:12:42 2005 New Revision: 10808 Modified: pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/objspace/std/test/test_longobject.py Log: Added invert, lshift, rshift to longs. Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Mon Apr 18 02:12:42 2005 @@ -170,7 +170,7 @@ i += 1 return space.newbool(True) -def lt__Long_Long(space, w_long1, w_long2): #YYYYYY +def lt__Long_Long(space, w_long1, w_long2): if w_long1.sign > w_long2.sign: return space.newbool(False) if w_long1.sign < w_long2.sign: @@ -257,7 +257,7 @@ raise OperationError(space.w_ZeroDivisionError, space.wrap("long division")) z = x / y - return space.newfloat(float(z)) + return space.newfloat(z) def floordiv__Long_Long(space, w_long1, w_long2): #YYYYYY x = w_long1.longval() @@ -375,31 +375,83 @@ def nonzero__Long(space, w_long): return space.newbool(w_long.sign != 0) -def invert__Long(space, w_long): #YYYYYY - z = ~w_long.longval() - return W_LongObject(space, *args_from_long(z)) +def invert__Long(space, w_long): #Implement ~x as -(x + 1) + w_lpp = add__Long_Long(space, w_long, W_LongObject(space, [r_uint(1)], 1)) + return neg__Long(space, w_lpp) -def lshift__Long_Long(space, w_long1, w_long2): #YYYYYY - a = w_long1.longval() - b = w_long2.longval() - if b < 0: +def lshift__Long_Long(space, w_long1, w_long2): + if w_long2.sign < 0: raise OperationError(space.w_ValueError, space.wrap("negative shift count")) + elif w_long2.sign == 0: + return w_long1 try: - res = a << b + b = int_w__Long(space, w_long2) except OverflowError: # b too big raise OperationError(space.w_OverflowError, space.wrap("shift count too large")) - return W_LongObject(space, *args_from_long(res)) + wordshift = b // LONG_BIT + remshift = r_uint(b) % LONG_BIT + oldsize = len(w_long1.digits) + newsize = oldsize + wordshift + if remshift != 0: + newsize += 1 + w_result = W_LongObject(space, [r_uint(0)] * newsize, w_long1.sign) + rightshift = LONG_BIT - remshift + LOWER_MASK = (r_uint(1) << r_uint(rightshift)) - 1 + UPPER_MASK = ~LOWER_MASK + accum = r_uint(0) + i = wordshift + j = 0 + while j < oldsize: + digit = w_long1.digits[j] + w_result.digits[i] = (accum | (digit << remshift)) + accum = (digit & UPPER_MASK) >> rightshift + i += 1 + j += 1 + if remshift: + w_result.digits[i] = accum + else: + assert not accum + w_result._normalize() + return w_result def rshift__Long_Long(space, w_long1, w_long2): #YYYYYY - a = w_long1.longval() - b = w_long2.longval() - if b < 0: + if w_long2.sign < 0: raise OperationError(space.w_ValueError, space.wrap("negative shift count")) - res = a >> b - return W_LongObject(space, *args_from_long(res)) + elif w_long2.sign == 0: + return w_long1 + if w_long1.sign == -1: + w_a1 = invert__Long(space, w_long1) + w_a2 = rshift__Long_Long(space, w_a1, w_long2) + return invert__Long(space, w_a2) + try: + b = int_w__Long(space, w_long2) + except OverflowError: # b too big # XXX maybe just return 0L instead? + raise OperationError(space.w_OverflowError, + space.wrap("shift count too large")) + wordshift = b // LONG_BIT + remshift = r_uint(b) % LONG_BIT + oldsize = len(w_long1.digits) + newsize = oldsize - wordshift + if newsize <= 0: + return W_LongObject(space, [r_uint(0)], 0) + w_result = W_LongObject(space, [r_uint(0)] * newsize, 1) + leftshift = LONG_BIT - remshift + LOWER_MASK = (r_uint(1) << r_uint(remshift)) - 1 + UPPER_MASK = ~LOWER_MASK + accum = r_uint(0) + i = newsize - 1 + j = oldsize - 1 + while j >= 0: + digit = w_long1.digits[j] + w_result.digits[i] = (accum | (digit >> remshift)) + accum = (digit & LOWER_MASK) << leftshift + i -= 1 + j -= 1 + w_result._normalize() + return w_result def and__Long_Long(space, w_long1, w_long2): #YYYYYY a = w_long1.longval() Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_longobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Mon Apr 18 02:12:42 2005 @@ -7,6 +7,15 @@ objspacename = 'std' +def gen_signs(l): + for s in l: + if s == 0: + yield s + else: + yield s + yield -s + + class TestW_LongObject: def test_add(self): @@ -54,13 +63,6 @@ assert not self.space.is_true(lobj.eq__Long_Long(self.space, f1, f3)) def test_lt(self): - def gen_signs(l): - for s in l: - if s == 0: - yield s - else: - yield s - yield -s val = [0, 0x111111111111, 0x111111111112, 0x111111111112FFFF] for x in gen_signs(val): for y in gen_signs(val): @@ -159,6 +161,39 @@ assert self.space.is_true( self.space.eq(lobj.sub__Long_Long(self.space, f1, f1), f0)) + def test_invert(self): + x = 3 ** 40 + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x)) + f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(-x)) + r1 = lobj.invert__Long(self.space, f1) + r2 = lobj.invert__Long(self.space, f2) + assert r1.longval() == -(x + 1) + assert r2.longval() == -(-x + 1) + + def test_shift(self): + negative = lobj.W_LongObject(self.space, *lobj.args_from_long(-23)) + big = lobj.W_LongObject(self.space, *lobj.args_from_long(2L ** 100L)) + for x in gen_signs([3L ** 30L, 5L ** 20L, 7 ** 300, 0L, 1L]): + f1 = lobj.W_LongObject(self.space, *lobj.args_from_long(x)) + self.space.raises_w(self.space.w_ValueError, + lobj.lshift__Long_Long, self.space, f1, + negative) + self.space.raises_w(self.space.w_ValueError, + lobj.rshift__Long_Long, self.space, f1, + negative) + self.space.raises_w(self.space.w_OverflowError, + lobj.lshift__Long_Long, self.space, f1, + big) + self.space.raises_w(self.space.w_OverflowError, + lobj.rshift__Long_Long, self.space, f1, + big) + for y in [0L, 1L, 2304L, 11233L, 3 ** 9]: + f2 = lobj.W_LongObject(self.space, *lobj.args_from_long(y)) + res1 = lobj.lshift__Long_Long(self.space, f1, f2).longval() + res2 = lobj.rshift__Long_Long(self.space, f1, f2).longval() + assert res1 == x << y + assert res2 == x >> y + class AppTestLong: def test_add(self): assert int(123L + 12443L) == 123 + 12443 @@ -180,3 +215,4 @@ def test_pow(self): assert pow(0L, 0L, 1L) == 0L + From pedronis at codespeak.net Mon Apr 18 13:51:49 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 18 Apr 2005 13:51:49 +0200 (CEST) Subject: [pypy-svn] r10810 - pypy/dist/pypy/objspace/std Message-ID: <20050418115149.8F83027B5B@code1.codespeak.net> Author: pedronis Date: Mon Apr 18 13:51:49 2005 New Revision: 10810 Modified: pypy/dist/pypy/objspace/std/longobject.py Log: a recent checkin undid this, it is needed to avoid floatval to become SomeObject Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Mon Apr 18 13:51:49 2005 @@ -257,7 +257,7 @@ raise OperationError(space.w_ZeroDivisionError, space.wrap("long division")) z = x / y - return space.newfloat(z) + return space.newfloat(float(z)) def floordiv__Long_Long(space, w_long1, w_long2): #YYYYYY x = w_long1.longval() From pedronis at codespeak.net Mon Apr 18 15:55:19 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 18 Apr 2005 15:55:19 +0200 (CEST) Subject: [pypy-svn] r10814 - pypy/dist/pypy/annotation Message-ID: <20050418135519.5AE1E27B5B@code1.codespeak.net> Author: pedronis Date: Mon Apr 18 15:55:19 2005 New Revision: 10814 Modified: pypy/dist/pypy/annotation/bookkeeper.py Log: take care of py.lib str subclasses Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Mon Apr 18 15:55:19 2005 @@ -133,7 +133,7 @@ result = SomeInteger(nonneg = x>=0) elif tp is r_uint: result = SomeInteger(nonneg = True, unsigned = True) - elif tp is str: + elif issubclass(tp, str): # py.lib uses annotated str subclasses result = SomeString() elif tp is tuple: result = SomeTuple(items = [self.immutablevalue(e) for e in x]) @@ -216,7 +216,7 @@ return SomeInteger() elif t is r_uint: return SomeInteger(nonneg = True, unsigned = True) - elif t is str: + elif issubclass(t, str): # py.lib uses annotated str subclasses return SomeString() elif t is float: return SomeFloat() From pedronis at codespeak.net Mon Apr 18 15:55:52 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 18 Apr 2005 15:55:52 +0200 (CEST) Subject: [pypy-svn] r10815 - pypy/dist/pypy/objspace/std Message-ID: <20050418135552.E60BD27B5B@code1.codespeak.net> Author: pedronis Date: Mon Apr 18 15:55:52 2005 New Revision: 10815 Modified: pypy/dist/pypy/objspace/std/dictobject.py pypy/dist/pypy/objspace/std/typeobject.py Log: avoid type pollution Modified: pypy/dist/pypy/objspace/std/dictobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/dictobject.py (original) +++ pypy/dist/pypy/objspace/std/dictobject.py Mon Apr 18 15:55:52 2005 @@ -273,7 +273,7 @@ try: w_currently_in_repr = statedict['Py_Repr'] except KeyError: - w_currently_in_repr = statedict['Py_Repr'] = space.newdict(()) + w_currently_in_repr = statedict['Py_Repr'] = space.newdict([]) return dictstr(space, w_currently_in_repr, w_dict) Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Mon Apr 18 15:55:52 2005 @@ -146,13 +146,14 @@ try: return w_self.dict_w[attr] except KeyError: - if w_self.lazyloaders and attr in w_self.lazyloaders: - loader = w_self.lazyloaders[attr] - del w_self.lazyloaders[attr] - w_value = loader() - if w_value is not None: # None means no such attribute - w_self.dict_w[attr] = w_value - return w_value + if w_self.lazyloaders: + if attr in w_self.lazyloaders: + loader = w_self.lazyloaders[attr] + del w_self.lazyloaders[attr] + w_value = loader() + if w_value is not None: # None means no such attribute + w_self.dict_w[attr] = w_value + return w_value return None def lookup(w_self, key): From pedronis at codespeak.net Mon Apr 18 19:53:44 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 18 Apr 2005 19:53:44 +0200 (CEST) Subject: [pypy-svn] r10821 - in pypy/dist/pypy: annotation translator Message-ID: <20050418175344.AD32927B5B@code1.codespeak.net> Author: pedronis Date: Mon Apr 18 19:53:44 2005 New Revision: 10821 Modified: pypy/dist/pypy/annotation/classdef.py pypy/dist/pypy/annotation/dictdef.py pypy/dist/pypy/annotation/listdef.py pypy/dist/pypy/annotation/model.py pypy/dist/pypy/translator/annrpython.py Log: hook on unionof that allows to write code to stop the annotation process or ignore when something degenerate to SomeObject Modified: pypy/dist/pypy/annotation/classdef.py ============================================================================== --- pypy/dist/pypy/annotation/classdef.py (original) +++ pypy/dist/pypy/annotation/classdef.py Mon Apr 18 19:53:44 2005 @@ -4,7 +4,7 @@ from __future__ import generators from types import FunctionType -from pypy.annotation.model import SomeImpossibleValue, SomePBC, unionof +from pypy.annotation.model import SomeImpossibleValue, SomePBC, tracking_unionof class Attribute: @@ -28,13 +28,13 @@ source.__dict__[self.name]) if classdef: s_value = s_value.bindcallables(classdef) - self.s_value = unionof(self.s_value, s_value) + self.s_value = tracking_unionof(self, self.s_value, s_value) return self.s_value def merge(self, other): assert self.name == other.name self.sources.update(other.sources) - self.s_value = unionof(self.s_value, other.s_value) + self.s_value = tracking_unionof(self, self.s_value, other.s_value) self.readonly = self.readonly and other.readonly self.read_locations.update(other.read_locations) Modified: pypy/dist/pypy/annotation/dictdef.py ============================================================================== --- pypy/dist/pypy/annotation/dictdef.py (original) +++ pypy/dist/pypy/annotation/dictdef.py Mon Apr 18 19:53:44 2005 @@ -1,4 +1,4 @@ -from pypy.annotation.model import SomeObject, SomeImpossibleValue, unionof +from pypy.annotation.model import SomeObject, SomeImpossibleValue from pypy.annotation.listdef import ListItem Modified: pypy/dist/pypy/annotation/listdef.py ============================================================================== --- pypy/dist/pypy/annotation/listdef.py (original) +++ pypy/dist/pypy/annotation/listdef.py Mon Apr 18 19:53:44 2005 @@ -1,4 +1,4 @@ -from pypy.annotation.model import SomeObject, SomeImpossibleValue, unionof +from pypy.annotation.model import SomeObject, SomeImpossibleValue, tracking_unionof class ListItem: @@ -21,7 +21,7 @@ listdef.listitem = self def generalize(self, s_other_value): - s_new_value = unionof(self.s_value, s_other_value) + s_new_value = tracking_unionof(self.__class__.__name__, self.s_value, s_other_value) if s_new_value != self.s_value: self.s_value = s_new_value # reflow from all reading points Modified: pypy/dist/pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/dist/pypy/annotation/model.py Mon Apr 18 19:53:44 2005 @@ -267,6 +267,10 @@ s1.caused_by_merge = somevalues return s1 +def tracking_unionof(ctxt, *somevalues): + return unionof(*somevalues) + + # ____________________________________________________________ # internal Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Mon Apr 18 19:53:44 2005 @@ -128,9 +128,9 @@ for a in cells: assert isinstance(a, annmodel.SomeObject) if block not in self.annotated: - self.bindinputargs(block, cells, called_from) + self.bindinputargs(fn, block, cells, called_from) else: - self.mergeinputargs(block, cells, called_from) + self.mergeinputargs(fn, block, cells, called_from) if not self.annotated[block]: self.pendingblocks[block] = fn @@ -320,21 +320,21 @@ assert block in self.annotated self.annotated[block] = False # must re-flow - def bindinputargs(self, block, inputcells, called_from=None): + def bindinputargs(self, fn, block, inputcells, called_from=None): # Create the initial bindings for the input args of a block. assert len(block.inputargs) == len(inputcells) for a, cell in zip(block.inputargs, inputcells): self.setbinding(a, cell, called_from) self.annotated[block] = False # must flowin. - def mergeinputargs(self, block, inputcells, called_from=None): + def mergeinputargs(self, fn, block, inputcells, called_from=None): # Merge the new 'cells' with each of the block's existing input # variables. oldcells = [self.binding(a) for a in block.inputargs] - unions = [annmodel.unionof(c1,c2) for c1, c2 in zip(oldcells,inputcells)] + unions = [annmodel.tracking_unionof((fn, block), c1,c2) for c1, c2 in zip(oldcells,inputcells)] # if the merged cells changed, we must redo the analysis if unions != oldcells: - self.bindinputargs(block, unions, called_from) + self.bindinputargs(fn, block, unions, called_from) def whereami(self, position_key): fn, block, i = position_key From pedronis at codespeak.net Mon Apr 18 20:09:54 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 18 Apr 2005 20:09:54 +0200 (CEST) Subject: [pypy-svn] r10822 - in pypy/dist/pypy: interpreter objspace objspace/std Message-ID: <20050418180954.74A1D27B5B@code1.codespeak.net> Author: pedronis Date: Mon Apr 18 20:09:54 2005 New Revision: 10822 Modified: pypy/dist/pypy/interpreter/baseobjspace.py pypy/dist/pypy/objspace/descroperation.py pypy/dist/pypy/objspace/std/dictobject.py pypy/dist/pypy/objspace/std/inttype.py pypy/dist/pypy/objspace/std/listobject.py pypy/dist/pypy/objspace/std/objspace.py Log: fix some type mixing use a different, annotation friendlier approach than the statedict Modified: pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/dist/pypy/interpreter/baseobjspace.py Mon Apr 18 20:09:54 2005 @@ -179,11 +179,11 @@ raise ValueError, "need more than %d value%s to unpack" % (i, plural) return items - def unpacktuple(self, w_tuple, expected_length=None): + def unpacktuple(self, w_tuple, expected_length=-1): """Same as unpackiterable(), but only for tuples. Only use for bootstrapping or performance reasons.""" tuple_length = self.int_w(self.len(w_tuple)) - if expected_length is not None and tuple_length != expected_length: + if expected_length != -1 and tuple_length != expected_length: raise ValueError, "got a tuple of length %d instead of %d" % ( tuple_length, expected_length) items = [ Modified: pypy/dist/pypy/objspace/descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/descroperation.py (original) +++ pypy/dist/pypy/objspace/descroperation.py Mon Apr 18 20:09:54 2005 @@ -60,6 +60,10 @@ class DescrOperation: _mixin_ = True + def setup_ec(space, ec): + ec._compare_nesting = 0 + ec._cmp_state = {} + def getdict(space, w_obj): return w_obj.getdict() @@ -296,10 +300,10 @@ token = None _inprogress_dict = None - # um - statedict = space.get_ec_state_dict() - _compare_nesting = statedict.get('_compare_nesting', 0) + 1 - statedict['_compare_nesting'] = _compare_nesting + ec = space.getexecutioncontext() + ec._compare_nesting += 1 + _compare_nesting = ec._compare_nesting + try: # Try to do some magic to compare cyclic constructs. if (_compare_nesting > space._NESTING_LIMIT and @@ -313,7 +317,7 @@ t = (iv, iw, -1) else: t = (iw, iv, -1) - _inprogress_dict = statedict.setdefault('cmp_state', {}) + _inprogress_dict = ec._cmp_state if t in _inprogress_dict: # If we are allready trying to compare the arguments # presume they are equal @@ -343,7 +347,7 @@ except: pass finally: - statedict['_compare_nesting'] -= 1 + ec._compare_nesting -= 1 def coerce(space, w_obj1, w_obj2): w_typ1 = space.type(w_obj1) @@ -480,10 +484,9 @@ token = None _inprogress_dict = None - # um - statedict = space.get_ec_state_dict() - _compare_nesting = statedict.get('_compare_nesting', 0) + 1 - statedict['_compare_nesting'] = _compare_nesting + ec = space.getexecutioncontext() + ec._compare_nesting += 1 + _compare_nesting = ec._compare_nesting try: # Try to do some magic to compare cyclic constructs. if (_compare_nesting > space._NESTING_LIMIT and @@ -529,7 +532,7 @@ res = space.int_w(w_res) return space.wrap(op(res, 0)) finally: - statedict['_compare_nesting'] -= 1 + ec._compare_nesting -= 1 if token is not None: try: del _inprogress_dict[token] Modified: pypy/dist/pypy/objspace/std/dictobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/dictobject.py (original) +++ pypy/dist/pypy/objspace/std/dictobject.py Mon Apr 18 20:09:54 2005 @@ -270,11 +270,7 @@ if w_dict.used == 0: return space.wrap('{}') statedict = space.get_ec_state_dict() - try: - w_currently_in_repr = statedict['Py_Repr'] - except KeyError: - w_currently_in_repr = statedict['Py_Repr'] = space.newdict([]) - + w_currently_in_repr = space.getexecutioncontext()._py_repr return dictstr(space, w_currently_in_repr, w_dict) repr__Dict = str__Dict Modified: pypy/dist/pypy/objspace/std/inttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/inttype.py (original) +++ pypy/dist/pypy/objspace/std/inttype.py Mon Apr 18 20:09:54 2005 @@ -58,9 +58,9 @@ raise OperationError(space.w_OverflowError, space.wrap( "long int too large to convert to int")) - from pypy.objspace.std.longobject import W_LongObject + from pypy.objspace.std.longobject import W_LongObject, args_from_long w_obj = space.allocate_instance(W_LongObject, space.w_long) - w_obj.__init__(space, value) + w_obj.__init__(space, *args_from_long(value)) return w_obj else: w_obj = space.allocate_instance(W_IntObject, w_inttype) Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Mon Apr 18 20:09:54 2005 @@ -326,12 +326,7 @@ def repr__List(space, w_list): if w_list.ob_size == 0: return space.wrap('[]') - statedict = space.get_ec_state_dict() - try: - w_currently_in_repr = statedict['Py_Repr'] - except KeyError: - w_currently_in_repr = statedict['Py_Repr'] = space.newdict(()) - + w_currently_in_repr = space.getexecutioncontext()._py_repr return listrepr(space, w_currently_in_repr, w_list) def hash__List(space,w_list): Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Mon Apr 18 20:09:54 2005 @@ -149,6 +149,13 @@ from pypy.interpreter.module import Module return Module(self, self.wrap("exceptions"), w_dic) + def createexecutioncontext(self): + # add space specific fields to execution context + ec = ObjSpace.createexecutioncontext(self) + DescrOperation.setup_ec(self, ec) + ec._py_repr = self.newdict([]) + return ec + def gettypeobject(self, typedef): # types_w maps each StdTypeDef instance to its # unique-for-this-space W_TypeObject instance @@ -276,10 +283,10 @@ allocate_instance._specialize_ = "location" - def unpacktuple(self, w_tuple, expected_length=None): + def unpacktuple(self, w_tuple, expected_length=-1): assert isinstance(w_tuple, W_TupleObject) t = w_tuple.wrappeditems - if expected_length is not None and expected_length != len(t): + if expected_length != -1 and expected_length != len(t): raise ValueError, "got a tuple of length %d instead of %d" % ( len(t), expected_length) return t From pedronis at codespeak.net Mon Apr 18 21:12:08 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 18 Apr 2005 21:12:08 +0200 (CEST) Subject: [pypy-svn] r10827 - pypy/dist/pypy/objspace/std Message-ID: <20050418191208.D82EB27B4C@code1.codespeak.net> Author: pedronis Date: Mon Apr 18 21:12:08 2005 New Revision: 10827 Modified: pypy/dist/pypy/objspace/std/objspace.py Log: keep W_LongObject.__init__ args straight Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Mon Apr 18 21:12:08 2005 @@ -190,7 +190,8 @@ wrappeditems = [self.wrap(item) for item in x] return W_ListObject(self, wrappeditems) if isinstance(x, long): - return W_LongObject(self, x) + from pypy.objspace.std.longobject import args_from_long + return W_LongObject(self, *args_from_long(x)) if isinstance(x, complex): # XXX is this right? YYY no, this is wrong right now (CT) # ZZZ hum, seems necessary for complex literals in co_consts (AR) From arigo at codespeak.net Mon Apr 18 22:10:37 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 18 Apr 2005 22:10:37 +0200 (CEST) Subject: [pypy-svn] r10833 - in pypy/dist/pypy/objspace: . test Message-ID: <20050418201037.AA42F27B4A@code1.codespeak.net> Author: arigo Date: Mon Apr 18 22:10:37 2005 New Revision: 10833 Modified: pypy/dist/pypy/objspace/descroperation.py pypy/dist/pypy/objspace/test/test_descroperation.py Log: Bug detected by the annotator: our **= operator never worked. inplace_pow() to be special-cased in descroperation. Modified: pypy/dist/pypy/objspace/descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/descroperation.py (original) +++ pypy/dist/pypy/objspace/descroperation.py Mon Apr 18 22:10:37 2005 @@ -253,6 +253,14 @@ raise OperationError(space.w_TypeError, space.wrap("operands do not support **")) + def inplace_pow(space, w_lhs, w_rhs): + w_impl = space.lookup(w_lhs, '__ipow__') + if w_impl is not None: + w_res = space.get_and_call_function(w_impl, w_lhs, w_rhs) + if _check_notimplemented(space, w_res): + return w_res + return space.pow(w_lhs, w_rhs, space.w_None) + def contains(space, w_container, w_item): w_descr = space.lookup(w_container, '__contains__') if w_descr is not None: Modified: pypy/dist/pypy/objspace/test/test_descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/test/test_descroperation.py (original) +++ pypy/dist/pypy/objspace/test/test_descroperation.py Mon Apr 18 22:10:37 2005 @@ -13,3 +13,8 @@ sq = Sq() assert sq[1:3] == (1,3) + + def test_ipow(self): + x = 2 + x **= 5 + assert x == 32 From arigo at codespeak.net Mon Apr 18 23:27:59 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 18 Apr 2005 23:27:59 +0200 (CEST) Subject: [pypy-svn] r10835 - pypy/dist/pypy/interpreter Message-ID: <20050418212759.0BF0E27B49@code1.codespeak.net> Author: arigo Date: Mon Apr 18 23:27:58 2005 New Revision: 10835 Modified: pypy/dist/pypy/interpreter/nestedscope.py Log: Safety check and hint for the annotator: cell variables must be Cell instances. Modified: pypy/dist/pypy/interpreter/nestedscope.py ============================================================================== --- pypy/dist/pypy/interpreter/nestedscope.py (original) +++ pypy/dist/pypy/interpreter/nestedscope.py Mon Apr 18 23:27:58 2005 @@ -1,6 +1,6 @@ from pypy.interpreter.error import OperationError from pypy.interpreter.pyopcode import PyInterpFrame -from pypy.interpreter import function, pycode +from pypy.interpreter import function, pycode, pyframe from pypy.interpreter.baseobjspace import Wrappable class Cell(Wrappable): @@ -167,7 +167,12 @@ codeobj = f.space.interpclass_w(w_codeobj) assert isinstance(codeobj, pycode.PyCode) nfreevars = len(codeobj.co_freevars) - freevars = [f.space.interpclass_w(f.valuestack.pop()) for i in range(nfreevars)] + freevars = [] + for i in range(nfreevars): + cell = f.space.interpclass_w(f.valuestack.pop()) + if not isinstance(cell, Cell): + raise pyframe.BytecodeCorruption + freevars.append(cell) freevars.reverse() defaultarguments = [f.valuestack.pop() for i in range(numdefaults)] defaultarguments.reverse() From arigo at codespeak.net Mon Apr 18 23:34:39 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 18 Apr 2005 23:34:39 +0200 (CEST) Subject: [pypy-svn] r10837 - in pypy/dist/pypy: module/test objspace/std objspace/std/test Message-ID: <20050418213439.DCC0627B49@code1.codespeak.net> Author: arigo Date: Mon Apr 18 23:34:39 2005 New Revision: 10837 Modified: pypy/dist/pypy/module/test/test_vars.py pypy/dist/pypy/objspace/std/dictproxytype.py pypy/dist/pypy/objspace/std/test/test_dictproxy.py Log: Fixed dictproxy comparison. Re-enabled old test_vars. Modified: pypy/dist/pypy/module/test/test_vars.py ============================================================================== --- pypy/dist/pypy/module/test/test_vars.py (original) +++ pypy/dist/pypy/module/test/test_vars.py Mon Apr 18 23:34:39 2005 @@ -2,13 +2,13 @@ class AppTestVars: - def _test_vars_no_arguments(self): + def test_vars_no_arguments(self): assert vars() == locals() - def _test_vars_too_many_arguments(self): + def test_vars_too_many_arguments(self): raises(TypeError, vars, 0, 1) - def _test_vars_correct_arguments(self): + def test_vars_correct_arguments(self): class a: def __init__(self): self.res = 42 Modified: pypy/dist/pypy/objspace/std/dictproxytype.py ============================================================================== --- pypy/dist/pypy/objspace/std/dictproxytype.py (original) +++ pypy/dist/pypy/objspace/std/dictproxytype.py Mon Apr 18 23:34:39 2005 @@ -13,6 +13,15 @@ return space.getattr(w_obj.w_dict, space.wrap(name)) return GetSetProperty(fget) +def _compareproxymethod(opname): + def compare(space, w_obj1, w_obj2): + from pypy.objspace.std.dictproxyobject import W_DictProxyObject + if not isinstance(w_obj1, W_DictProxyObject): + raise OperationError(space.w_TypeError, + space.wrap("expected dictproxy")) + return getattr(space, opname)(w_obj1.w_dict, w_obj2) + return gateway.interp2app(compare) + # ____________________________________________________________ dictproxy_typedef = StdTypeDef("dictproxy", @@ -32,11 +41,11 @@ __iter__ = _proxymethod('__iter__'), #__cmp__ = _proxymethod('__cmp__'), # you cannot have it here if it is not in dict - __lt__ = _proxymethod('__lt__'), - __le__ = _proxymethod('__le__'), - __eq__ = _proxymethod('__eq__'), - __ne__ = _proxymethod('__ne__'), - __gt__ = _proxymethod('__gt__'), - __ge__ = _proxymethod('__ge__'), + __lt__ = _compareproxymethod('lt'), + __le__ = _compareproxymethod('le'), + __eq__ = _compareproxymethod('eq'), + __ne__ = _compareproxymethod('ne'), + __gt__ = _compareproxymethod('gt'), + __ge__ = _compareproxymethod('ge'), ) dictproxy_typedef.registermethods(globals()) Modified: pypy/dist/pypy/objspace/std/test/test_dictproxy.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_dictproxy.py (original) +++ pypy/dist/pypy/objspace/std/test/test_dictproxy.py Mon Apr 18 23:34:39 2005 @@ -18,3 +18,16 @@ pass else: raise AssertionError, 'this should not have been writable' + + def test_dictproxyeq(self): + class a(object): + pass + class b(object): + stuff = 42 + class c(object): + stuff = 42 + assert a.__dict__ == a.__dict__ + assert a.__dict__ != b.__dict__ + assert a.__dict__ != {'123': '456'} + assert {'123': '456'} != a.__dict__ + assert b.__dict__ == c.__dict__ From pedronis at codespeak.net Tue Apr 19 00:26:10 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 00:26:10 +0200 (CEST) Subject: [pypy-svn] r10838 - pypy/dist/pypy/interpreter Message-ID: <20050418222610.751BB27B49@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 00:26:10 2005 New Revision: 10838 Modified: pypy/dist/pypy/interpreter/interactive.py Log: oops, repair py.py Modified: pypy/dist/pypy/interpreter/interactive.py ============================================================================== --- pypy/dist/pypy/interpreter/interactive.py (original) +++ pypy/dist/pypy/interpreter/interactive.py Tue Apr 19 00:26:10 2005 @@ -90,10 +90,8 @@ code.InteractiveConsole.__init__(self) self.space = objspace self.verbose = verbose - self.ec = executioncontext.ExecutionContext(self.space) - # Need a way for the object space to get the execution context - setattr(self.space, "createexecutioncontext", self.get_ec) - + self.ec = self.space.createexecutioncontext() + space=self.space mainmodule = main.ensure__main__(space) From cfbolz at codespeak.net Tue Apr 19 01:43:25 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 19 Apr 2005 01:43:25 +0200 (CEST) Subject: [pypy-svn] r10840 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050418234325.E371227B49@code1.codespeak.net> Author: cfbolz Date: Tue Apr 19 01:43:25 2005 New Revision: 10840 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: Added working unittests to conftest.py Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Tue Apr 19 01:43:25 2005 @@ -260,7 +260,7 @@ testmap = { 'test_MimeWriter.py' : (False, OutputTestModule), - 'test_StringIO.py' : (False, UTModuleMainTest), + 'test_StringIO.py' : (True, UTModuleMainTest), 'test___all__.py' : (False, UTModuleMainTest), 'test___future__.py' : (False, UnknownTestModule), 'test_aepack.py' : (False, UTModuleMainTest), @@ -284,13 +284,13 @@ 'test_bufio.py' : (False, UnknownTestModule), 'test_builtin.py' : (True, UTModuleMainTest), 'test_bz2.py' : (False, UTModuleMainTest), - 'test_calendar.py' : (False, UTModuleMainTest), + 'test_calendar.py' : (True, UTModuleMainTest), 'test_call.py' : (True, UTModuleMainTest), 'test_capi.py' : (False, UnknownTestModule), 'test_cd.py' : (False, UnknownTestModule), 'test_cfgparser.py' : (False, UTModuleMainTest), 'test_cgi.py' : (False, OutputTestModule), - 'test_charmapcodec.py' : (False, UTModuleMainTest), + 'test_charmapcodec.py' : (True, UTModuleMainTest), 'test_cl.py' : (False, UnknownTestModule), 'test_class.py' : (False, OutputTestModule), 'test_cmath.py' : (True, UnknownTestModule), @@ -304,8 +304,8 @@ 'test_complex.py' : (False, UTModuleMainTest), 'test_contains.py' : (False, UnknownTestModule), 'test_cookie.py' : (False, OutputTestModule), - 'test_copy.py' : (False, UTModuleMainTest), - 'test_copy_reg.py' : (False, UTModuleMainTest), + 'test_copy.py' : (True, UTModuleMainTest), + 'test_copy_reg.py' : (True, UTModuleMainTest), 'test_cpickle.py' : (False, UTModuleMainTest), 'test_crypt.py' : (False, UnknownTestModule), 'test_csv.py' : (False, UTModuleMainTest), @@ -315,14 +315,14 @@ 'test_descr.py' : (False, UTModuleMainTest), 'test_descrtut.py' : (False, UTModuleMainTest), 'test_difflib.py' : (False, UnknownTestModule), - 'test_dircache.py' : (False, UTModuleMainTest), + 'test_dircache.py' : (True, UTModuleMainTest), 'test_dis.py' : (True, UTModuleMainTest), 'test_dl.py' : (False, UnknownTestModule), 'test_doctest.py' : (False, UnknownTestModule), - 'test_doctest2.py' : (False, UTModuleMainTest), + 'test_doctest2.py' : (True, UTModuleMainTest), 'test_dumbdbm.py' : (False, UTModuleMainTest), - 'test_dummy_thread.py' : (False, UTModuleMainTest), - 'test_dummy_threading.py': (False, UTModuleMainTest), + 'test_dummy_thread.py' : (True, UTModuleMainTest), + 'test_dummy_threading.py': (False, UnknownTestModule), 'test_email.py' : (False, UTModuleMainTest), 'test_email_codecs.py' : (False, UnknownTestModule), 'test_enumerate.py' : (False, UTModuleMainTest), @@ -334,16 +334,16 @@ 'test_file.py' : (False, UnknownTestModule), 'test_filecmp.py' : (False, UTModuleMainTest), 'test_fileinput.py' : (False, UnknownTestModule), - 'test_fnmatch.py' : (False, UTModuleMainTest), + 'test_fnmatch.py' : (True, UTModuleMainTest), 'test_fork1.py' : (False, UnknownTestModule), 'test_format.py' : (False, UnknownTestModule), - 'test_fpformat.py' : (False, UTModuleMainTest), + 'test_fpformat.py' : (True, UTModuleMainTest), 'test_frozen.py' : (False, OutputTestModule), 'test_funcattrs.py' : (False, UnknownTestModule), 'test_future.py' : (False, OutputTestModule), 'test_future1.py' : (False, UnknownTestModule), 'test_future2.py' : (False, UnknownTestModule), - 'test_future3.py' : (False, UTModuleMainTest), + 'test_future3.py' : (True, UTModuleMainTest), 'test_gc.py' : (False, UnknownTestModule), 'test_gdbm.py' : (False, UnknownTestModule), 'test_generators.py' : (False, UTModuleMainTest), @@ -352,7 +352,7 @@ 'test_getopt.py' : (False, UnknownTestModule), 'test_gettext.py' : (False, UTModuleMainTest), 'test_gl.py' : (False, UnknownTestModule), - 'test_glob.py' : (False, UTModuleMainTest), + 'test_glob.py' : (True, UTModuleMainTest), 'test_global.py' : (False, OutputTestModule), 'test_grammar.py' : (False, OutputTestModule), 'test_grp.py' : (False, UTModuleMainTest), @@ -360,7 +360,7 @@ 'test_hash.py' : (True, UTModuleMainTest), 'test_heapq.py' : (True, UTModuleMainTest), 'test_hexoct.py' : (True, UTModuleMainTest), - 'test_hmac.py' : (False, UTModuleMainTest), + 'test_hmac.py' : (True, UTModuleMainTest), 'test_hotshot.py' : (False, UTModuleMainTest), 'test_htmllib.py' : (True, UTModuleMainTest), 'test_htmlparser.py' : (True, UTModuleMainTest), @@ -386,20 +386,20 @@ 'test_macfs.py' : (False, UTModuleMainTest), 'test_macostools.py' : (False, UTModuleMainTest), 'test_macpath.py' : (False, UTModuleMainTest), - 'test_mailbox.py' : (False, UTModuleMainTest), + 'test_mailbox.py' : (True, UTModuleMainTest), 'test_marshal.py' : (False, UnknownTestModule), 'test_math.py' : (False, OutputTestModule), 'test_md5.py' : (False, OutputTestModule), - 'test_mhlib.py' : (False, UTModuleMainTest), - 'test_mimetools.py' : (False, UTModuleMainTest), - 'test_mimetypes.py' : (False, UTModuleMainTest), + 'test_mhlib.py' : (True, UTModuleMainTest), + 'test_mimetools.py' : (True, UTModuleMainTest), + 'test_mimetypes.py' : (True, UTModuleMainTest), 'test_minidom.py' : (False, UnknownTestModule), 'test_mmap.py' : (False, OutputTestModule), 'test_module.py' : (False, UnknownTestModule), 'test_mpz.py' : (False, UnknownTestModule), - 'test_multifile.py' : (False, UTModuleMainTest), + 'test_multifile.py' : (True, UTModuleMainTest), 'test_mutants.py' : (False, UnknownTestModule), - 'test_netrc.py' : (False, UTModuleMainTest), + 'test_netrc.py' : (True, UTModuleMainTest), 'test_new.py' : (False, OutputTestModule), 'test_nis.py' : (False, OutputTestModule), 'test_normalization.py' : (False, UTModuleMainTest), @@ -409,7 +409,7 @@ 'test_operations.py' : (False, OutputTestModule), 'test_operator.py' : (True, UTModuleMainTest), 'test_optparse.py' : (False, UTModuleMainTest), - 'test_os.py' : (False, UTModuleMainTest), + 'test_os.py' : (True, UTModuleMainTest), 'test_ossaudiodev.py' : (False, OutputTestModule), 'test_parser.py' : (True, UTModuleMainTest), 'test_pep247.py' : (False, UnknownTestModule), @@ -418,16 +418,16 @@ 'test_pickle.py' : (False, UTModuleMainTest), 'test_pickletools.py' : (False, UnknownTestModule), 'test_pkg.py' : (False, OutputTestModule), - 'test_pkgimport.py' : (False, UTModuleMainTest), + 'test_pkgimport.py' : (True, UTModuleMainTest), 'test_plistlib.py' : (False, UTModuleMainTest), 'test_poll.py' : (False, OutputTestModule), 'test_popen.py' : (False, OutputTestModule), 'test_popen2.py' : (False, OutputTestModule), - 'test_posix.py' : (False, UTModuleMainTest), - 'test_posixpath.py' : (False, UTModuleMainTest), - 'test_pow.py' : (False, UTModuleMainTest), + 'test_posix.py' : (True, UTModuleMainTest), + 'test_posixpath.py' : (True, UTModuleMainTest), + 'test_pow.py' : (True, UTModuleMainTest), 'test_pprint.py' : (True, UTModuleMainTest), - 'test_profile.py' : (False, UTModuleMainTest), + 'test_profile.py' : (True, UTModuleMainTest), 'test_profilehooks.py' : (True, UTModuleMainTest), 'test_pty.py' : (False, OutputTestModule), 'test_pwd.py' : (False, UTModuleMainTest), @@ -440,21 +440,21 @@ 'test_regex.py' : (False, OutputTestModule), 'test_repr.py' : (False, UTModuleMainTest), 'test_resource.py' : (False, OutputTestModule), - 'test_rfc822.py' : (False, UTModuleMainTest), + 'test_rfc822.py' : (True, UTModuleMainTest), 'test_rgbimg.py' : (False, OutputTestModule), 'test_richcmp.py' : (False, UTModuleMainTest), - 'test_robotparser.py' : (False, UTModuleMainTest), + 'test_robotparser.py' : (True, UTModuleMainTest), 'test_rotor.py' : (False, OutputTestModule), 'test_sax.py' : (False, UnknownTestModule), 'test_scope.py' : (False, OutputTestModule), 'test_scriptpackages.py' : (False, UTModuleMainTest), 'test_select.py' : (False, UnknownTestModule), - 'test_sets.py' : (False, UTModuleMainTest), + 'test_sets.py' : (True, UTModuleMainTest), 'test_sgmllib.py' : (True, UTModuleMainTest), 'test_sha.py' : (False, UTModuleMainTest), - 'test_shelve.py' : (False, UTModuleMainTest), - 'test_shlex.py' : (False, UTModuleMainTest), - 'test_shutil.py' : (False, UTModuleMainTest), + 'test_shelve.py' : (True, UTModuleMainTest), + 'test_shlex.py' : (True, UTModuleMainTest), + 'test_shutil.py' : (True, UTModuleMainTest), 'test_signal.py' : (False, OutputTestModule), 'test_slice.py' : (False, UnknownTestModule), 'test_socket.py' : (False, UTModuleMainTest), @@ -474,7 +474,7 @@ 'test_sundry.py' : (False, UnknownTestModule), 'test_support.py' : (False, UnknownTestModule), 'test_symtable.py' : (False, UnknownTestModule), - 'test_syntax.py' : (False, UTModuleMainTest), + 'test_syntax.py' : (True, UTModuleMainTest), 'test_sys.py' : (True, UTModuleMainTest), 'test_tarfile.py' : (False, UTModuleMainTest), 'test_tempfile.py' : (False, UTModuleMainTest), @@ -483,7 +483,7 @@ 'test_threaded_import.py': (False, UTModuleMainTest), 'test_threadedtempfile.py': (False, UTModuleMainTest), 'test_threading.py' : (False, UnknownTestModule), - 'test_time.py' : (False, UTModuleMainTest), + 'test_time.py' : (True, UTModuleMainTest), 'test_timeout.py' : (False, UTModuleMainTest), 'test_timing.py' : (False, UnknownTestModule), 'test_tokenize.py' : (False, OutputTestModule), @@ -491,21 +491,21 @@ 'test_traceback.py' : (False, UTModuleMainTest), 'test_types.py' : (False, OutputTestModule), 'test_ucn.py' : (False, UTModuleMainTest), - 'test_unary.py' : (False, UTModuleMainTest), + 'test_unary.py' : (True, UTModuleMainTest), 'test_unicode.py' : (False, UTModuleMainTest), 'test_unicode_file.py' : (False, OutputTestModule), 'test_unicodedata.py' : (False, UTModuleMainTest), - 'test_univnewlines.py' : (False, UTModuleMainTest), + 'test_univnewlines.py' : (True, UTModuleMainTest), 'test_unpack.py' : (False, UnknownTestModule), - 'test_urllib.py' : (False, UTModuleMainTest), + 'test_urllib.py' : (True, UTModuleMainTest), 'test_urllib2.py' : (False, UnknownTestModule), 'test_urllibnet.py' : (False, UTModuleMainTest), 'test_urlparse.py' : (True, UTModuleMainTest), - 'test_userdict.py' : (False, UTModuleMainTest), + 'test_userdict.py' : (True, UTModuleMainTest), 'test_userlist.py' : (False, UTModuleMainTest), 'test_userstring.py' : (False, UTModuleMainTest), 'test_uu.py' : (False, UTModuleMainTest), - 'test_warnings.py' : (False, UTModuleMainTest), + 'test_warnings.py' : (True, UTModuleMainTest), 'test_wave.py' : (False, UnknownTestModule), 'test_weakref.py' : (False, UTModuleMainTest), 'test_whichdb.py' : (False, UTModuleMainTest), From pedronis at codespeak.net Tue Apr 19 01:59:51 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 01:59:51 +0200 (CEST) Subject: [pypy-svn] r10841 - pypy/dist/pypy/interpreter Message-ID: <20050418235951.8CF1F27B49@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 01:59:51 2005 New Revision: 10841 Modified: pypy/dist/pypy/interpreter/interactive.py Log: cosmetics Modified: pypy/dist/pypy/interpreter/interactive.py ============================================================================== --- pypy/dist/pypy/interpreter/interactive.py (original) +++ pypy/dist/pypy/interpreter/interactive.py Tue Apr 19 01:59:51 2005 @@ -90,9 +90,8 @@ code.InteractiveConsole.__init__(self) self.space = objspace self.verbose = verbose - self.ec = self.space.createexecutioncontext() - - space=self.space + space = self.space + self.ec = space.createexecutioncontext() mainmodule = main.ensure__main__(space) self.w_globals = mainmodule.w_dict From pedronis at codespeak.net Tue Apr 19 02:00:57 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 02:00:57 +0200 (CEST) Subject: [pypy-svn] r10842 - in pypy/dist/pypy/interpreter: . test Message-ID: <20050419000057.5C46327B40@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 02:00:57 2005 New Revision: 10842 Modified: pypy/dist/pypy/interpreter/executioncontext.py pypy/dist/pypy/interpreter/test/test_pyframe.py Log: fixed bug in exception tracing, with test, discovered because the annotator in obscure ways hinted that we were mxing W_Roots and OperationErrors, oopsy Modified: pypy/dist/pypy/interpreter/executioncontext.py ============================================================================== --- pypy/dist/pypy/interpreter/executioncontext.py (original) +++ pypy/dist/pypy/interpreter/executioncontext.py Tue Apr 19 02:00:57 2005 @@ -108,12 +108,13 @@ def exception_trace(self, frame, operationerr): "Trace function called upon OperationError." operationerr.record_interpreter_traceback() - exc_info = self.sys_exc_info() - self._trace(frame, 'exception', - exc_info) + space = self.space + w_exc_info = space.newtuple([operationerr.w_type, operationerr.w_value, + space.wrap(operationerr.application_traceback)]) + self._trace(frame, 'exception', w_exc_info) #operationerr.print_detailed_traceback(self.space) - def sys_exc_info(self): + def sys_exc_info(self): # attn: the result is not the wrapped sys.exc_info() !!! """Implements sys.exc_info(). Return an OperationError instance or None.""" for i in range(self.framestack.depth()): Modified: pypy/dist/pypy/interpreter/test/test_pyframe.py ============================================================================== --- pypy/dist/pypy/interpreter/test/test_pyframe.py (original) +++ pypy/dist/pypy/interpreter/test/test_pyframe.py Tue Apr 19 02:00:57 2005 @@ -51,3 +51,23 @@ print g_frame.f_back.f_code.co_name, f_frame.f_code.co_name sys.settrace(trace) f() + + def test_trace_exc(self): + import sys + l = [] + def ltrace(a,b,c): + if b == 'exception': + l.append(c) + return ltrace + def trace(a,b,c): return ltrace + def f(): + try: + raise Exception + except: + pass + sys.settrace(trace) + f() + sys.settrace(None) + assert len(l) == 1 + assert isinstance(l[0][1], Exception) + From pedronis at codespeak.net Tue Apr 19 03:04:00 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 03:04:00 +0200 (CEST) Subject: [pypy-svn] r10843 - pypy/dist/pypy/interpreter Message-ID: <20050419010400.D5E9127B41@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 03:04:00 2005 New Revision: 10843 Modified: pypy/dist/pypy/interpreter/pycode.py Log: of course unpack_str_tuple should return a list Modified: pypy/dist/pypy/interpreter/pycode.py ============================================================================== --- pypy/dist/pypy/interpreter/pycode.py (original) +++ pypy/dist/pypy/interpreter/pycode.py Tue Apr 19 03:04:00 2005 @@ -16,7 +16,7 @@ els = [] for w_el in space.unpackiterable(w_str_tuple): els.append(space.str_w(w_el)) - return tuple(els) + return els # code object contants, for co_flags below @@ -88,9 +88,9 @@ self.co_code = None # string: instruction opcodes self.co_consts_w = [] # list of constants used (wrapped!) self.co_names = [] # list of strings: names (for attrs..) - self.co_varnames = [] # tuple of strings: local variable names - self.co_freevars = [] # tuple of strings: free variable names - self.co_cellvars = [] # tuple of strings: cell variable names + self.co_varnames = [] # list of strings: local variable names + self.co_freevars = [] # list of strings: free variable names + self.co_cellvars = [] # list of strings: cell variable names # The rest doesn't count for hash/cmp self.co_filename = "" # string: where it was loaded from #self.co_name (in base class)# string: name, for reference From pedronis at codespeak.net Tue Apr 19 16:05:56 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 16:05:56 +0200 (CEST) Subject: [pypy-svn] r10858 - pypy/dist/pypy/annotation Message-ID: <20050419140556.DAD4227B43@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 16:05:56 2005 New Revision: 10858 Modified: pypy/dist/pypy/annotation/builtin.py Log: perhaps saner annotation for isinstance(., long) (?) Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Tue Apr 19 16:05:56 2005 @@ -62,7 +62,13 @@ else: if typ == long: getbookkeeper().warning("isinstance(., long) is not RPython") - typ = int # XXX as we did before + if s_obj.is_constant(): + r.const = isinstance(s_obj.const, long) + else: + if type(s_obj) is not SomeObject: # only SomeObjects could be longs + r.const = False + return r + assert not issubclass(typ, (int,long)) or typ in (bool, int), ( "for integers only isinstance(.,int|r_uint) are supported") if s_obj.is_constant(): From pedronis at codespeak.net Tue Apr 19 16:38:11 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 16:38:11 +0200 (CEST) Subject: [pypy-svn] r10859 - in pypy/dist/pypy: annotation translator/test Message-ID: <20050419143811.5FF1F27B43@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 16:38:11 2005 New Revision: 10859 Modified: pypy/dist/pypy/annotation/unaryop.py pypy/dist/pypy/translator/test/test_annrpython.py Log: empty dict/list -> len = 0 -> false; with tests avoids two blocked blocks in translate_pypy.py targetpypy Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Tue Apr 19 16:38:11 2005 @@ -198,10 +198,28 @@ def method_pop(lst, s_index=None): return lst.listdef.read_item() + def len(lst): + s_item = lst.listdef.read_item() + if isinstance(s_item, SomeImpossibleValue): + r = SomeInteger(nonneg=True) + r.const = 0 + return r + return SomeObject.len(lst) + def iter(lst): return SomeIterator(lst.listdef.read_item()) class __extend__(SomeDict): + + def len(dct): + s_key = dct.dictdef.read_key() + s_value = dct.dictdef.read_value() + if isinstance(s_key, SomeImpossibleValue) and isinstance(s_value, SomeImpossibleValue): + r = SomeInteger(nonneg=True) + r.const = 0 + return r + return SomeObject.len(dct) + def iter(dct): return SomeIterator(dct.dictdef.read_key()) Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Tue Apr 19 16:38:11 2005 @@ -874,6 +874,47 @@ assert listitem(s.items[0]) == annmodel.SomeImpossibleValue() assert listitem(s.items[1]).knowntype == int assert listitem(s.items[2]).knowntype == int + + def test_empty_list(self): + def f(): + l = [] + return bool(l) + def g(): + l = [] + x = bool(l) + l.append(1) + return x, bool(l) + + a = RPythonAnnotator() + s = a.build_types(f, []) + assert s.const == False + + a = RPythonAnnotator() + s = a.build_types(g, []) + + assert s.items[0].knowntype == bool and not s.items[0].is_constant() + assert s.items[1].knowntype == bool and not s.items[1].is_constant() + + def test_empty_dict(self): + def f(): + d = {} + return bool(d) + def g(): + d = {} + x = bool(d) + d['a'] = 1 + return x, bool(d) + + a = RPythonAnnotator() + s = a.build_types(f, []) + assert s.const == False + + a = RPythonAnnotator() + s = a.build_types(g, []) + + assert s.items[0].knowntype == bool and not s.items[0].is_constant() + assert s.items[1].knowntype == bool and not s.items[1].is_constant() + def g(n): From pedronis at codespeak.net Tue Apr 19 17:38:30 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 17:38:30 +0200 (CEST) Subject: [pypy-svn] r10861 - pypy/dist/pypy/objspace Message-ID: <20050419153830.EAF5527B43@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 17:38:30 2005 New Revision: 10861 Modified: pypy/dist/pypy/objspace/descroperation.py Log: oops Modified: pypy/dist/pypy/objspace/descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/descroperation.py (original) +++ pypy/dist/pypy/objspace/descroperation.py Tue Apr 19 17:38:30 2005 @@ -507,7 +507,7 @@ t = (i1, i2, left) else: t = (i2, i1, right) - _inprogress_dict = space.get_ec_state_dict().setdefault('cmp_state', {}) + _inprogress_dict = ec._cmp_state if t in _inprogress_dict: # If we are allready trying to compare the arguments # presume they are equal From pedronis at codespeak.net Tue Apr 19 18:10:06 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 18:10:06 +0200 (CEST) Subject: [pypy-svn] r10864 - pypy/dist/pypy/objspace/std Message-ID: <20050419161006.823D827B43@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 18:10:06 2005 New Revision: 10864 Modified: pypy/dist/pypy/objspace/std/objspace.py Log: reordering to cut the number of warnings when annotating Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Tue Apr 19 18:10:06 2005 @@ -189,6 +189,10 @@ if isinstance(x, list): wrappeditems = [self.wrap(item) for item in x] return W_ListObject(self, wrappeditems) + if isinstance(x, BaseWrappable): + w_result = x.__spacebind__(self) + #print 'wrapping', x, '->', w_result + return w_result if isinstance(x, long): from pypy.objspace.std.longobject import args_from_long return W_LongObject(self, *args_from_long(x)) @@ -199,10 +203,6 @@ return self.call_function(c, self.wrap(x.real), self.wrap(x.imag)) - if isinstance(x, BaseWrappable): - w_result = x.__spacebind__(self) - #print 'wrapping', x, '->', w_result - return w_result # anything below this line is implicitly XXX'ed if isinstance(x, type(Exception)) and issubclass(x, Exception): w_result = self.wrap_exception_cls(x) From pedronis at codespeak.net Tue Apr 19 19:28:07 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 19:28:07 +0200 (CEST) Subject: [pypy-svn] r10865 - pypy/dist/pypy/objspace/std Message-ID: <20050419172807.9E64C27B43@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 19:28:07 2005 New Revision: 10865 Modified: pypy/dist/pypy/objspace/std/inttype.py pypy/dist/pypy/objspace/std/longtype.py pypy/dist/pypy/objspace/std/strutil.py pypy/dist/pypy/objspace/std/unicodeobject.py Log: use our own exception for _parse_string, avoids depending on .args and remove the last meaningful blocked blocks Modified: pypy/dist/pypy/objspace/std/inttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/inttype.py (original) +++ pypy/dist/pypy/objspace/std/inttype.py Tue Apr 19 19:28:07 2005 @@ -1,5 +1,5 @@ from pypy.objspace.std.stdtypedef import * -from pypy.objspace.std.strutil import string_to_int +from pypy.objspace.std.strutil import string_to_int, ParseStringError from pypy.interpreter.error import OperationError from pypy.interpreter.gateway import NoneNotWrapped @@ -13,9 +13,9 @@ try: # XXX can produce unwrapped long value = string_to_int(space.str_w(w_value)) - except ValueError, e: + except ParseStringError, e: raise OperationError(space.w_ValueError, - space.wrap(e.args[0])) + space.wrap(e.msg)) else: # otherwise, use the __int__() method w_obj = space.int(w_value) @@ -49,9 +49,9 @@ # XXX can produce unwrapped long, need real long impl to know # what to do value = string_to_int(s, base) - except ValueError, e: + except ParseStringError, e: raise OperationError(space.w_ValueError, - space.wrap(e.args[0])) + space.wrap(e.msg)) if isinstance(value, long): if not space.is_true(space.is_(w_inttype, space.w_int)): Modified: pypy/dist/pypy/objspace/std/longtype.py ============================================================================== --- pypy/dist/pypy/objspace/std/longtype.py (original) +++ pypy/dist/pypy/objspace/std/longtype.py Tue Apr 19 19:28:07 2005 @@ -1,5 +1,5 @@ from pypy.objspace.std.stdtypedef import * -from pypy.objspace.std.strutil import string_to_long +from pypy.objspace.std.strutil import string_to_long, ParseStringError from pypy.interpreter.error import OperationError from pypy.objspace.std.inttype import int_typedef from pypy.interpreter.gateway import NoneNotWrapped @@ -14,9 +14,9 @@ try: # XXX value can be unwrapped long value = string_to_long(space.str_w(w_value)) - except ValueError, e: + except ParseStringError, e: raise OperationError(space.w_ValueError, - space.wrap(e.args[0])) + space.wrap(e.msg)) else: # otherwise, use the __long__() method w_obj = space.long(w_value) @@ -45,9 +45,9 @@ try: # XXX value can be unwrapped long value = string_to_long(s, base) - except ValueError, e: + except ParseStringError, e: raise OperationError(space.w_ValueError, - space.wrap(e.args[0])) + space.wrap(e.msg)) #XXX w_obj = space.allocate_instance(W_LongObject, w_longtype) w_obj.__init__(space, *args_from_long(value)) Modified: pypy/dist/pypy/objspace/std/strutil.py ============================================================================== --- pypy/dist/pypy/objspace/std/strutil.py (original) +++ pypy/dist/pypy/objspace/std/strutil.py Tue Apr 19 19:28:07 2005 @@ -18,6 +18,11 @@ class InvalidLiteral(Exception): pass +class ParseStringError(ValueError): + def __init__(self, msg): + self.args = (msg,) + self.msg = msg + def _parse_string(s, literal, base, fname): # internal utility for string_to_int() and string_to_long(). sign = 1 @@ -34,7 +39,7 @@ else: base = 10 elif base < 2 or base > 36: - raise ValueError, "%s() base must be >= 2 and <= 36" % (fname,) + raise ParseStringError, "%s() base must be >= 2 and <= 36" % (fname,) try: if not s: raise InvalidLiteral @@ -58,14 +63,14 @@ return result * sign except InvalidLiteral: if literal: - raise ValueError, 'invalid literal for %s(): %s' % (fname, literal) + raise ParseStringError, 'invalid literal for %s(): %s' % (fname, literal) else: - raise ValueError, 'empty literal for %s()' % (fname,) + raise ParseStringError, 'empty literal for %s()' % (fname,) def string_to_int(s, base=10): """Utility to converts a string to an integer (or possibly a long). If base is 0, the proper base is guessed based on the leading - characters of 's'. Raises ValueError in case of error. + characters of 's'. Raises ParseStringError (a subclass of ValueError) in case of error. """ s = literal = strip_spaces(s) return _parse_string(s, literal, base, 'int') Modified: pypy/dist/pypy/objspace/std/unicodeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/unicodeobject.py (original) +++ pypy/dist/pypy/objspace/std/unicodeobject.py Tue Apr 19 19:28:07 2005 @@ -1,7 +1,7 @@ from pypy.objspace.std.objspace import * from pypy.objspace.std.fake import fake_type, wrap_exception from pypy.objspace.std.stringobject import W_StringObject -from pypy.objspace.std.strutil import string_to_int, string_to_long +from pypy.objspace.std.strutil import string_to_int, string_to_long, ParseStringError W_UnicodeObject = fake_type(unicode) @@ -84,12 +84,16 @@ def int__Unicode(space, w_uni): try: return space.wrap(string_to_int(unicode_to_decimal_w(space, w_uni))) + except ParseStringError, e: + raise OperationError(space.w_ValueError, space.wrap(e.msg)) except: wrap_exception(space) def long__Unicode(space, w_uni): try: return space.wrap(string_to_long(unicode_to_decimal_w(space, w_uni))) + except ParseStringError, e: + raise OperationError(space.w_ValueError, space.wrap(e.msg)) except: wrap_exception(space) From pedronis at codespeak.net Tue Apr 19 19:36:19 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 19:36:19 +0200 (CEST) Subject: [pypy-svn] r10866 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050419173619.437D327B43@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 19:36:19 2005 New Revision: 10866 Modified: pypy/dist/pypy/objspace/std/strutil.py pypy/dist/pypy/objspace/std/test/test_strutil.py Log: change the tests, ParseStringError does not need to be a subclass of ValueError anymore Modified: pypy/dist/pypy/objspace/std/strutil.py ============================================================================== --- pypy/dist/pypy/objspace/std/strutil.py (original) +++ pypy/dist/pypy/objspace/std/strutil.py Tue Apr 19 19:36:19 2005 @@ -18,9 +18,8 @@ class InvalidLiteral(Exception): pass -class ParseStringError(ValueError): +class ParseStringError(Exception): def __init__(self, msg): - self.args = (msg,) self.msg = msg def _parse_string(s, literal, base, fname): @@ -70,7 +69,7 @@ def string_to_int(s, base=10): """Utility to converts a string to an integer (or possibly a long). If base is 0, the proper base is guessed based on the leading - characters of 's'. Raises ParseStringError (a subclass of ValueError) in case of error. + characters of 's'. Raises ParseStringError in case of error. """ s = literal = strip_spaces(s) return _parse_string(s, literal, base, 'int') Modified: pypy/dist/pypy/objspace/std/test/test_strutil.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_strutil.py (original) +++ pypy/dist/pypy/objspace/std/test/test_strutil.py Tue Apr 19 19:36:19 2005 @@ -76,11 +76,11 @@ '@', ] for s in cases: - raises(ValueError, string_to_int, s) - raises(ValueError, string_to_int, ' '+s) - raises(ValueError, string_to_int, s+' ') - raises(ValueError, string_to_int, '+'+s) - raises(ValueError, string_to_int, '-'+s) + raises(ParseStringError, string_to_int, s) + raises(ParseStringError, string_to_int, ' '+s) + raises(ParseStringError, string_to_int, s+' ') + raises(ParseStringError, string_to_int, '+'+s) + raises(ParseStringError, string_to_int, '-'+s) def test_string_to_int_base_error(self): cases = [('1', 1), @@ -98,17 +98,17 @@ ('12.3', 16), ] for s, base in cases: - raises(ValueError, string_to_int, s, base) - raises(ValueError, string_to_int, ' '+s, base) - raises(ValueError, string_to_int, s+' ', base) - raises(ValueError, string_to_int, '+'+s, base) - raises(ValueError, string_to_int, '-'+s, base) + raises(ParseStringError, string_to_int, s, base) + raises(ParseStringError, string_to_int, ' '+s, base) + raises(ParseStringError, string_to_int, s+' ', base) + raises(ParseStringError, string_to_int, '+'+s, base) + raises(ParseStringError, string_to_int, '-'+s, base) def test_string_to_long(self): assert string_to_long('123L') == 123 assert string_to_long('123L ') == 123 - raises(ValueError, string_to_long, 'L') - raises(ValueError, string_to_long, 'L ') + raises(ParseStringError, string_to_long, 'L') + raises(ParseStringError, string_to_long, 'L ') assert string_to_long('123L', 4) == 27 assert string_to_long('123L', 30) == 27000 + 1800 + 90 + 21 assert string_to_long('123L', 22) == 10648 + 968 + 66 + 21 From pedronis at codespeak.net Tue Apr 19 20:17:20 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 20:17:20 +0200 (CEST) Subject: [pypy-svn] r10867 - pypy/dist/pypy/annotation Message-ID: <20050419181720.7D84F27B43@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 20:17:20 2005 New Revision: 10867 Modified: pypy/dist/pypy/annotation/unaryop.py Log: annotations for list.index, str.endswith/startswith Modified: pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- pypy/dist/pypy/annotation/unaryop.py (original) +++ pypy/dist/pypy/annotation/unaryop.py Tue Apr 19 20:17:20 2005 @@ -198,6 +198,9 @@ def method_pop(lst, s_index=None): return lst.listdef.read_item() + def method_index(lst, el): + return SomeInteger(nonneg=True) + def len(lst): s_item = lst.listdef.read_item() if isinstance(s_item, SomeImpossibleValue): @@ -243,6 +246,12 @@ class __extend__(SomeString): + def method_startswith(str, frag): + return SomeBool() + + def method_endswith(str, frag): + return SomeBool() + def method_join(str, s_list): return SomeString() From arigo at codespeak.net Tue Apr 19 21:20:21 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 19 Apr 2005 21:20:21 +0200 (CEST) Subject: [pypy-svn] r10874 - in pypy/branch/canonlyraise-pypy: . annotation objspace/flow translator Message-ID: <20050419192021.EFE2627B43@code1.codespeak.net> Author: arigo Date: Tue Apr 19 21:20:21 2005 New Revision: 10874 Added: pypy/branch/canonlyraise-pypy/ - copied from r10864, pypy/dist/pypy/ Modified: pypy/branch/canonlyraise-pypy/annotation/binaryop.py pypy/branch/canonlyraise-pypy/annotation/builtin.py pypy/branch/canonlyraise-pypy/annotation/model.py pypy/branch/canonlyraise-pypy/objspace/flow/model.py pypy/branch/canonlyraise-pypy/translator/ann_override.py pypy/branch/canonlyraise-pypy/translator/annrpython.py pypy/branch/canonlyraise-pypy/translator/transform.py Log: Very temporary branch to share work in progress. Modified: pypy/branch/canonlyraise-pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/branch/canonlyraise-pypy/annotation/binaryop.py Tue Apr 19 21:20:21 2005 @@ -382,10 +382,6 @@ result = SomePBC(d) return result -class __extend__(pairtype(SomeImpossibleValue, SomeImpossibleValue)): - def union((imp1, imp2)): - return SomeImpossibleValue(benign=imp1.benign and imp2.benign) - class __extend__(pairtype(SomeImpossibleValue, SomeObject)): def union((imp1, obj2)): return obj2 Modified: pypy/branch/canonlyraise-pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/branch/canonlyraise-pypy/annotation/builtin.py Tue Apr 19 21:20:21 2005 @@ -66,7 +66,8 @@ r.const = isinstance(s_obj.const, long) else: if type(s_obj) is not SomeObject: # only SomeObjects could be longs - r.const = False + pass # r.const = False -- XXX can't do this, + # could break the assert in AnnRPython.setbinding return r assert not issubclass(typ, (int,long)) or typ in (bool, int), ( Modified: pypy/branch/canonlyraise-pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/branch/canonlyraise-pypy/annotation/model.py Tue Apr 19 21:20:21 2005 @@ -253,13 +253,11 @@ class SomeImpossibleValue(SomeObject): """The empty set. Instances are placeholders for objects that will never show up at run-time, e.g. elements of an empty list.""" - def __init__(self, benign=False): - self.benign = benign def unionof(*somevalues): "The most precise SomeValue instance that contains all the values." - s1 = SomeImpossibleValue(benign=len(somevalues)>0) + s1 = SomeImpossibleValue() for s2 in somevalues: if s1 != s2: s1 = pair(s1, s2).union() Modified: pypy/branch/canonlyraise-pypy/objspace/flow/model.py ============================================================================== --- pypy/dist/pypy/objspace/flow/model.py (original) +++ pypy/branch/canonlyraise-pypy/objspace/flow/model.py Tue Apr 19 21:20:21 2005 @@ -26,21 +26,21 @@ def getreturnvar(self): return self.returnblock.inputargs[0] - def hasonlyexceptionreturns(self): - try: - return self._onlyex - except AttributeError: - def visit(link): - if isinstance(link, Link): - if link.target == self.returnblock: - raise ValueError(link) - try: - traverse(visit, self) - except ValueError: - self._onlyex = False - else: - self._onlyex = True - return self._onlyex +## def hasonlyexceptionreturns(self): +## try: +## return self._onlyex +## except AttributeError: +## def visit(link): +## if isinstance(link, Link): +## if link.target == self.returnblock: +## raise ValueError(link) +## try: +## traverse(visit, self) +## except ValueError: +## self._onlyex = False +## else: +## self._onlyex = True +## return self._onlyex def show(self): from pypy.translator.tool.graphpage import SingleGraphPage Modified: pypy/branch/canonlyraise-pypy/translator/ann_override.py ============================================================================== --- pypy/dist/pypy/translator/ann_override.py (original) +++ pypy/branch/canonlyraise-pypy/translator/ann_override.py Tue Apr 19 21:20:21 2005 @@ -10,7 +10,7 @@ from pypy.objspace.std.objspace import StdObjSpace def hole(*args): - return annmodel.SomeImpossibleValue(benign=True) + pass # no result (similar to setattr and setitem) def ignore(*args): bk = getbookkeeper() Modified: pypy/branch/canonlyraise-pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/branch/canonlyraise-pypy/translator/annrpython.py Tue Apr 19 21:20:21 2005 @@ -226,13 +226,10 @@ try: return self.bindings[v] except KeyError: - # let's see if the graph only has exception returns - if graph.hasonlyexceptionreturns(): - # XXX for functions with exceptions what to - # do anyway? - #return self.bookkeeper.immutablevalue(None) - return annmodel.SomeImpossibleValue(benign=True) - return annmodel.SomeImpossibleValue() + # the function didn't reach any return statement so far. + # (some functions actually never do, they always raise exceptions) + # interrupt the annotation of the caller in a 'soft' way. + raise CanOnlyRaiseException def reflowfromposition(self, position_key): fn, block, index = position_key @@ -309,6 +306,8 @@ if annmodel.DEBUG: import sys self.why_not_annotated[block] = sys.exc_info() + except CanOnlyRaiseException: + pass # end of the block not annotated, but it's not an error except Exception, e: # hack for debug tools only if not hasattr(e, '__annotator_block'): @@ -430,14 +429,12 @@ argcells = [self.binding(a) for a in op.args] consider_meth = getattr(self,'consider_op_'+op.opname, self.default_consider_op) - # because benign SomeImpossibleValues are meant to propagate without leaving - # dangling blocked blocks around, and because of the None case below, # let's be careful about avoiding propagated SomeImpossibleValues # to enter an op; the latter can result in violations of the # more general results invariant: e.g. if SomeImpossibleValue enters is_ # is_(SomeImpossibleValue, None) -> SomeBool # is_(SomeInstance(not None), None) -> SomeBool(const=False) ... - # boom + # boom -- in the assert of setbinding() for arg in argcells: if isinstance(arg, annmodel.SomeImpossibleValue): raise BlockedInference(self, info=op) @@ -519,3 +516,10 @@ return "" %(break_at, info) __str__ = __repr__ + + +class CanOnlyRaiseException(Exception): + """A soft version of BlockedInference: the inference should not continue + in the current block, but this not necessarily an error: if the current + block never progresses past this point, then it means that the current + operation will always raise an exception at run-time.""" Modified: pypy/branch/canonlyraise-pypy/translator/transform.py ============================================================================== --- pypy/dist/pypy/translator/transform.py (original) +++ pypy/branch/canonlyraise-pypy/translator/transform.py Tue Apr 19 21:20:21 2005 @@ -265,6 +265,36 @@ if len(block.exits) == 1: block.exitswitch = None block.exits[0].exitcase = None + elif len(block.exits) == 0: + # this is the CanOnlyRaiseException case. + # search the operation that cannot succeed + can_succeed = [op for op in block.operations + if op.result in self.bindings] + cannot_succeed = [op for op in block.operations + if op.result not in self.bindings] + n = len(can_succeed) + # check consistency + assert can_succeed == block.operations[:n] + assert cannot_succeed == block.operations[n:] + assert 0 <= n < len(block.operations) + # chop off the unreachable end of the block + del block.operations[n+1:] + s_none = annmodel.SomePBC({None: True}) + self.bindings[block.operations[n].result] = s_none + # insert the equivalent of 'raise SystemError' + # XXX no sane way to get the graph from the block! + fn = self.annotated[block] + assert fn in self.translator.flowgraphs, ( + "Cannot find the graph that this block belong to! " + "fn=%r" % (fn,)) + graph = self.translator.flowgraphs[fn] + c1 = Constant(SystemError) + c2 = Constant(SystemError( + "Call to %r should have raised an exception" % (fn,))) + errlink = Link([c1, c2], graph.exceptblock) + block.recloseblock(errlink) + # XXX do something about the annotation of the + # exceptblock.inputargs def transform_graph(ann): From pedronis at codespeak.net Tue Apr 19 22:19:40 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 22:19:40 +0200 (CEST) Subject: [pypy-svn] r10876 - pypy/dist/pypy/interpreter Message-ID: <20050419201940.C4A7527B43@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 22:19:40 2005 New Revision: 10876 Modified: pypy/dist/pypy/interpreter/pycode.py Log: names were swapped (?) Modified: pypy/dist/pypy/interpreter/pycode.py ============================================================================== --- pypy/dist/pypy/interpreter/pycode.py (original) +++ pypy/dist/pypy/interpreter/pycode.py Tue Apr 19 22:19:40 2005 @@ -196,10 +196,10 @@ return space.newtuple([space.wrap(name) for name in self.co_varnames]) def fget_co_cellvars(space, self): - return space.newtuple([space.wrap(name) for name in self.co_freevars]) + return space.newtuple([space.wrap(name) for name in self.co_cellvars]) def fget_co_freevars(space, self): - return space.newtuple([space.wrap(name) for name in self.co_cellvars]) + return space.newtuple([space.wrap(name) for name in self.co_freevars]) def descr_code__eq__(self, w_other): space = self.space From pedronis at codespeak.net Tue Apr 19 22:21:11 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 19 Apr 2005 22:21:11 +0200 (CEST) Subject: [pypy-svn] r10877 - in pypy/dist/pypy: interpreter translator Message-ID: <20050419202111.E9B7727B43@code1.codespeak.net> Author: pedronis Date: Tue Apr 19 22:21:11 2005 New Revision: 10877 Modified: pypy/dist/pypy/interpreter/typedef.py pypy/dist/pypy/translator/ann_override.py Log: tweak teh User* classes hierarchy and make instantiate annotation more precise; this avoids the warnings about user_setup Modified: pypy/dist/pypy/interpreter/typedef.py ============================================================================== --- pypy/dist/pypy/interpreter/typedef.py (original) +++ pypy/dist/pypy/interpreter/typedef.py Tue Apr 19 22:21:11 2005 @@ -84,7 +84,12 @@ body = dict([(key, value) for key, value in User_InsertNameHere.__dict__.items() if not key.startswith('_') or key == '__del__']) - subcls = type(name, (cls,), body) + if not hasdict and not wants_slots: + subcls = type(name, (cls,), body) + else: + basesubcls = get_unique_interplevel_subclass(cls, False, False) + subcls = type(name, (basesubcls,), body) + return subcls def instantiate(cls): Modified: pypy/dist/pypy/translator/ann_override.py ============================================================================== --- pypy/dist/pypy/translator/ann_override.py (original) +++ pypy/dist/pypy/translator/ann_override.py Tue Apr 19 22:21:11 2005 @@ -16,8 +16,14 @@ bk = getbookkeeper() return bk.immutablevalue(None) -def instantiate(cls): - clsdef = getbookkeeper().getclassdef(itypedef.W_Root) +def instantiate(clspbc): + assert isinstance(clspbc, annmodel.SomePBC) + clsdef = None + for cls, v in clspbc.prebuiltinstances.items(): + if not clsdef: + clsdef = getbookkeeper().getclassdef(cls) + else: + clsdef = clsdef.commonbase(getbookkeeper().getclassdef(cls)) return annmodel.SomeInstance(clsdef) def wrap_exception_cls(space, x): From ac at codespeak.net Wed Apr 20 09:14:44 2005 From: ac at codespeak.net (ac at codespeak.net) Date: Wed, 20 Apr 2005 09:14:44 +0200 (CEST) Subject: [pypy-svn] r10900 - pypy/dist/pypy/interpreter/test Message-ID: <20050420071444.8136327B43@code1.codespeak.net> Author: ac Date: Wed Apr 20 09:14:44 2005 New Revision: 10900 Modified: pypy/dist/pypy/interpreter/test/test_pyframe.py Log: Test the pyframes f_exc_ attributes. Modified: pypy/dist/pypy/interpreter/test/test_pyframe.py ============================================================================== --- pypy/dist/pypy/interpreter/test/test_pyframe.py (original) +++ pypy/dist/pypy/interpreter/test/test_pyframe.py Wed Apr 20 09:14:44 2005 @@ -52,6 +52,30 @@ sys.settrace(trace) f() + def test_f_exc_xxx(self): + import sys + + class OuterException(Exception): + pass + class InnerException(Exception): + pass + + def g(exc_info): + f = sys._getframe() + assert f.f_exc_type is None + assert f.f_exc_value is None + assert f.f_exc_traceback is None + try: + raise InnerException + except: + assert f.f_exc_type is exc_info[0] + assert f.f_exc_value is exc_info[1] + assert f.f_exc_traceback is exc_info[2] + try: + raise OuterException + except: + g(sys.exc_info()) + def test_trace_exc(self): import sys l = [] From hpk at codespeak.net Wed Apr 20 09:29:57 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 20 Apr 2005 09:29:57 +0200 (CEST) Subject: [pypy-svn] r10902 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050420072957.5280127B43@code1.codespeak.net> Author: hpk Date: Wed Apr 20 09:29:57 2005 New Revision: 10902 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: sort test modules ignoring capitalizing Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 20 09:29:57 2005 @@ -48,7 +48,7 @@ def run(self): l = [] items = testmap.items() - items.sort() + items.sort(lambda x,y: cmp(x[0].lower(), y[0].lower())) for (name, (enabled, typ)) in items: if enabled: l.append(name) From hpk at codespeak.net Wed Apr 20 10:05:02 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 20 Apr 2005 10:05:02 +0200 (CEST) Subject: [pypy-svn] r10903 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050420080502.6E99F27B43@code1.codespeak.net> Author: hpk Date: Wed Apr 20 10:05:02 2005 New Revision: 10903 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: preparing for a bit more flexibility for declaring tests Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 20 10:05:02 2005 @@ -18,7 +18,7 @@ #option = py.test.addoptions("compliance testing options", # py.test.Option('-L', '--listpassing', action="store", default=None, # type="string", dest="listpassing", -# help="display only the list of expected-to-pass tests.") +# help="just display the list of expected-to-pass tests.") mydir = py.magic.autopath().dirpath() @@ -49,16 +49,16 @@ l = [] items = testmap.items() items.sort(lambda x,y: cmp(x[0].lower(), y[0].lower())) - for (name, (enabled, typ)) in items: - if enabled: + for name, testdecl in items: + if testdecl.enabled: l.append(name) return l def join(self, name): if name not in testmap: raise NameError(name) - enabled, typ = testmap[name] - return typ(mydir.join(name), parent=self) + testdecl = testmap[name] + return testdecl.testclass(mydir.join(name), parent=self) Directory = RegrDirectory @@ -106,8 +106,9 @@ class OpErrorModule(py.test.collect.Module): # wraps some methods around a py.test Module in order - # to get clean KeyboardInterrupt behaviour (pypy often - # throws wrapped ones) + # to get clean KeyboardInterrupt behaviour (while + # running pypy we often get a wrapped + # space.w_KeyboardInterrupt) def tryiter(self, stopitems=()): try: for x in super(OpErrorModule, self).tryiter(stopitems): @@ -258,264 +259,270 @@ def execute(self): self.space.call_function(self.w_method) +class TestDecl: + """ Test Declaration. """ + def __init__(self, enabled, testclass): + self.enabled = enabled + self.testclass = testclass + testmap = { - 'test_MimeWriter.py' : (False, OutputTestModule), - 'test_StringIO.py' : (True, UTModuleMainTest), - 'test___all__.py' : (False, UTModuleMainTest), - 'test___future__.py' : (False, UnknownTestModule), - 'test_aepack.py' : (False, UTModuleMainTest), - 'test_al.py' : (False, UnknownTestModule), - 'test_anydbm.py' : (False, UTModuleMainTest), - 'test_array.py' : (False, UTModuleMainTest), - 'test_asynchat.py' : (False, OutputTestModule), - 'test_atexit.py' : (False, UnknownTestModule), - 'test_audioop.py' : (False, UnknownTestModule), - 'test_augassign.py' : (False, OutputTestModule), - 'test_base64.py' : (True, UTModuleMainTest), - 'test_bastion.py' : (False, UnknownTestModule), - 'test_binascii.py' : (False, UTModuleMainTest), - 'test_binhex.py' : (False, UTModuleMainTest), - 'test_binop.py' : (True, UTModuleMainTest), - 'test_bisect.py' : (True, UTModuleMainTest), - 'test_bool.py' : (False, UTModuleMainTest), - 'test_bsddb.py' : (False, UTModuleMainTest), - 'test_bsddb185.py' : (False, UTModuleMainTest), - 'test_bsddb3.py' : (False, UTModuleMainTest), - 'test_bufio.py' : (False, UnknownTestModule), - 'test_builtin.py' : (True, UTModuleMainTest), - 'test_bz2.py' : (False, UTModuleMainTest), - 'test_calendar.py' : (True, UTModuleMainTest), - 'test_call.py' : (True, UTModuleMainTest), - 'test_capi.py' : (False, UnknownTestModule), - 'test_cd.py' : (False, UnknownTestModule), - 'test_cfgparser.py' : (False, UTModuleMainTest), - 'test_cgi.py' : (False, OutputTestModule), - 'test_charmapcodec.py' : (True, UTModuleMainTest), - 'test_cl.py' : (False, UnknownTestModule), - 'test_class.py' : (False, OutputTestModule), - 'test_cmath.py' : (True, UnknownTestModule), - 'test_codeccallbacks.py' : (False, UTModuleMainTest), - 'test_codecs.py' : (False, UTModuleMainTest), - 'test_codeop.py' : (True, UTModuleMainTest), - 'test_coercion.py' : (False, OutputTestModule), - 'test_commands.py' : (True, UTModuleMainTest), - 'test_compare.py' : (True, OutputTestModule), - 'test_compile.py' : (True, UTModuleMainTest), - 'test_complex.py' : (False, UTModuleMainTest), - 'test_contains.py' : (False, UnknownTestModule), - 'test_cookie.py' : (False, OutputTestModule), - 'test_copy.py' : (True, UTModuleMainTest), - 'test_copy_reg.py' : (True, UTModuleMainTest), - 'test_cpickle.py' : (False, UTModuleMainTest), - 'test_crypt.py' : (False, UnknownTestModule), - 'test_csv.py' : (False, UTModuleMainTest), - 'test_curses.py' : (False, UnknownTestModule), - 'test_datetime.py' : (True, UTModuleMainTest), - 'test_dbm.py' : (False, UnknownTestModule), - 'test_descr.py' : (False, UTModuleMainTest), - 'test_descrtut.py' : (False, UTModuleMainTest), - 'test_difflib.py' : (False, UnknownTestModule), - 'test_dircache.py' : (True, UTModuleMainTest), - 'test_dis.py' : (True, UTModuleMainTest), - 'test_dl.py' : (False, UnknownTestModule), - 'test_doctest.py' : (False, UnknownTestModule), - 'test_doctest2.py' : (True, UTModuleMainTest), - 'test_dumbdbm.py' : (False, UTModuleMainTest), - 'test_dummy_thread.py' : (True, UTModuleMainTest), - 'test_dummy_threading.py': (False, UnknownTestModule), - 'test_email.py' : (False, UTModuleMainTest), - 'test_email_codecs.py' : (False, UnknownTestModule), - 'test_enumerate.py' : (False, UTModuleMainTest), - 'test_eof.py' : (False, UTModuleMainTest), - 'test_errno.py' : (False, UnknownTestModule), - 'test_exceptions.py' : (False, OutputTestModule), - 'test_extcall.py' : (False, OutputTestModule), - 'test_fcntl.py' : (False, UnknownTestModule), - 'test_file.py' : (False, UnknownTestModule), - 'test_filecmp.py' : (False, UTModuleMainTest), - 'test_fileinput.py' : (False, UnknownTestModule), - 'test_fnmatch.py' : (True, UTModuleMainTest), - 'test_fork1.py' : (False, UnknownTestModule), - 'test_format.py' : (False, UnknownTestModule), - 'test_fpformat.py' : (True, UTModuleMainTest), - 'test_frozen.py' : (False, OutputTestModule), - 'test_funcattrs.py' : (False, UnknownTestModule), - 'test_future.py' : (False, OutputTestModule), - 'test_future1.py' : (False, UnknownTestModule), - 'test_future2.py' : (False, UnknownTestModule), - 'test_future3.py' : (True, UTModuleMainTest), - 'test_gc.py' : (False, UnknownTestModule), - 'test_gdbm.py' : (False, UnknownTestModule), - 'test_generators.py' : (False, UTModuleMainTest), - 'test_getargs.py' : (False, UnknownTestModule), - 'test_getargs2.py' : (False, UTModuleMainTest), - 'test_getopt.py' : (False, UnknownTestModule), - 'test_gettext.py' : (False, UTModuleMainTest), - 'test_gl.py' : (False, UnknownTestModule), - 'test_glob.py' : (True, UTModuleMainTest), - 'test_global.py' : (False, OutputTestModule), - 'test_grammar.py' : (False, OutputTestModule), - 'test_grp.py' : (False, UTModuleMainTest), - 'test_gzip.py' : (False, UnknownTestModule), - 'test_hash.py' : (True, UTModuleMainTest), - 'test_heapq.py' : (True, UTModuleMainTest), - 'test_hexoct.py' : (True, UTModuleMainTest), - 'test_hmac.py' : (True, UTModuleMainTest), - 'test_hotshot.py' : (False, UTModuleMainTest), - 'test_htmllib.py' : (True, UTModuleMainTest), - 'test_htmlparser.py' : (True, UTModuleMainTest), - 'test_httplib.py' : (False, OutputTestModule), - 'test_imageop.py' : (False, UnknownTestModule), - 'test_imaplib.py' : (False, UnknownTestModule), - 'test_imgfile.py' : (False, UnknownTestModule), - 'test_imp.py' : (False, UTModuleMainTest), - 'test_import.py' : (False, UnknownTestModule), - 'test_importhooks.py' : (False, UTModuleMainTest), - 'test_inspect.py' : (False, UnknownTestModule), - 'test_ioctl.py' : (False, UTModuleMainTest), - 'test_isinstance.py' : (True, UTModuleMainTest), - 'test_iter.py' : (False, UTModuleMainTest), - 'test_itertools.py' : (False, UTModuleMainTest), - 'test_largefile.py' : (False, UnknownTestModule), - 'test_linuxaudiodev.py' : (False, OutputTestModule), - 'test_locale.py' : (False, UnknownTestModule), - 'test_logging.py' : (False, UTModuleMainTest), - 'test_long.py' : (True, UnknownTestModule), # takes hours - 'test_long_future.py' : (False, UnknownTestModule), - 'test_longexp.py' : (False, OutputTestModule), - 'test_macfs.py' : (False, UTModuleMainTest), - 'test_macostools.py' : (False, UTModuleMainTest), - 'test_macpath.py' : (False, UTModuleMainTest), - 'test_mailbox.py' : (True, UTModuleMainTest), - 'test_marshal.py' : (False, UnknownTestModule), - 'test_math.py' : (False, OutputTestModule), - 'test_md5.py' : (False, OutputTestModule), - 'test_mhlib.py' : (True, UTModuleMainTest), - 'test_mimetools.py' : (True, UTModuleMainTest), - 'test_mimetypes.py' : (True, UTModuleMainTest), - 'test_minidom.py' : (False, UnknownTestModule), - 'test_mmap.py' : (False, OutputTestModule), - 'test_module.py' : (False, UnknownTestModule), - 'test_mpz.py' : (False, UnknownTestModule), - 'test_multifile.py' : (True, UTModuleMainTest), - 'test_mutants.py' : (False, UnknownTestModule), - 'test_netrc.py' : (True, UTModuleMainTest), - 'test_new.py' : (False, OutputTestModule), - 'test_nis.py' : (False, OutputTestModule), - 'test_normalization.py' : (False, UTModuleMainTest), - 'test_ntpath.py' : (False, UnknownTestModule), - 'test_opcodes.py' : (False, OutputTestModule), - 'test_openpty.py' : (False, OutputTestModule), - 'test_operations.py' : (False, OutputTestModule), - 'test_operator.py' : (True, UTModuleMainTest), - 'test_optparse.py' : (False, UTModuleMainTest), - 'test_os.py' : (True, UTModuleMainTest), - 'test_ossaudiodev.py' : (False, OutputTestModule), - 'test_parser.py' : (True, UTModuleMainTest), - 'test_pep247.py' : (False, UnknownTestModule), - 'test_pep263.py' : (False, UnknownTestModule), - 'test_pep277.py' : (False, UTModuleMainTest), - 'test_pickle.py' : (False, UTModuleMainTest), - 'test_pickletools.py' : (False, UnknownTestModule), - 'test_pkg.py' : (False, OutputTestModule), - 'test_pkgimport.py' : (True, UTModuleMainTest), - 'test_plistlib.py' : (False, UTModuleMainTest), - 'test_poll.py' : (False, OutputTestModule), - 'test_popen.py' : (False, OutputTestModule), - 'test_popen2.py' : (False, OutputTestModule), - 'test_posix.py' : (True, UTModuleMainTest), - 'test_posixpath.py' : (True, UTModuleMainTest), - 'test_pow.py' : (True, UTModuleMainTest), - 'test_pprint.py' : (True, UTModuleMainTest), - 'test_profile.py' : (True, UTModuleMainTest), - 'test_profilehooks.py' : (True, UTModuleMainTest), - 'test_pty.py' : (False, OutputTestModule), - 'test_pwd.py' : (False, UTModuleMainTest), - 'test_pyclbr.py' : (False, UTModuleMainTest), - 'test_pyexpat.py' : (False, OutputTestModule), - 'test_queue.py' : (False, UnknownTestModule), - 'test_quopri.py' : (False, UTModuleMainTest), - 'test_random.py' : (False, UTModuleMainTest), - 'test_re.py' : (False, UTModuleMainTest), - 'test_regex.py' : (False, OutputTestModule), - 'test_repr.py' : (False, UTModuleMainTest), - 'test_resource.py' : (False, OutputTestModule), - 'test_rfc822.py' : (True, UTModuleMainTest), - 'test_rgbimg.py' : (False, OutputTestModule), - 'test_richcmp.py' : (False, UTModuleMainTest), - 'test_robotparser.py' : (True, UTModuleMainTest), - 'test_rotor.py' : (False, OutputTestModule), - 'test_sax.py' : (False, UnknownTestModule), - 'test_scope.py' : (False, OutputTestModule), - 'test_scriptpackages.py' : (False, UTModuleMainTest), - 'test_select.py' : (False, UnknownTestModule), - 'test_sets.py' : (True, UTModuleMainTest), - 'test_sgmllib.py' : (True, UTModuleMainTest), - 'test_sha.py' : (False, UTModuleMainTest), - 'test_shelve.py' : (True, UTModuleMainTest), - 'test_shlex.py' : (True, UTModuleMainTest), - 'test_shutil.py' : (True, UTModuleMainTest), - 'test_signal.py' : (False, OutputTestModule), - 'test_slice.py' : (False, UnknownTestModule), - 'test_socket.py' : (False, UTModuleMainTest), - 'test_socket_ssl.py' : (False, UTModuleMainTest), - 'test_socketserver.py' : (False, UTModuleMainTest), - 'test_softspace.py' : (False, UnknownTestModule), - 'test_sort.py' : (False, UnknownTestModule), - 'test_str.py' : (False, UTModuleMainTest), - 'test_strftime.py' : (False, UnknownTestModule), - 'test_string.py' : (True, UTModuleMainTest), - 'test_stringprep.py' : (False, UnknownTestModule), - 'test_strop.py' : (False, UTModuleMainTest), - 'test_strptime.py' : (False, UTModuleMainTest), - 'test_struct.py' : (False, UnknownTestModule), - 'test_structseq.py' : (False, UnknownTestModule), - 'test_sunaudiodev.py' : (False, UnknownTestModule), - 'test_sundry.py' : (False, UnknownTestModule), - 'test_support.py' : (False, UnknownTestModule), - 'test_symtable.py' : (False, UnknownTestModule), - 'test_syntax.py' : (True, UTModuleMainTest), - 'test_sys.py' : (True, UTModuleMainTest), - 'test_tarfile.py' : (False, UTModuleMainTest), - 'test_tempfile.py' : (False, UTModuleMainTest), - 'test_textwrap.py' : (True, UTModuleMainTest), - 'test_thread.py' : (False, OutputTestModule), - 'test_threaded_import.py': (False, UTModuleMainTest), - 'test_threadedtempfile.py': (False, UTModuleMainTest), - 'test_threading.py' : (False, UnknownTestModule), - 'test_time.py' : (True, UTModuleMainTest), - 'test_timeout.py' : (False, UTModuleMainTest), - 'test_timing.py' : (False, UnknownTestModule), - 'test_tokenize.py' : (False, OutputTestModule), - 'test_trace.py' : (True, UTModuleMainTest), - 'test_traceback.py' : (False, UTModuleMainTest), - 'test_types.py' : (False, OutputTestModule), - 'test_ucn.py' : (False, UTModuleMainTest), - 'test_unary.py' : (True, UTModuleMainTest), - 'test_unicode.py' : (False, UTModuleMainTest), - 'test_unicode_file.py' : (False, OutputTestModule), - 'test_unicodedata.py' : (False, UTModuleMainTest), - 'test_univnewlines.py' : (True, UTModuleMainTest), - 'test_unpack.py' : (False, UnknownTestModule), - 'test_urllib.py' : (True, UTModuleMainTest), - 'test_urllib2.py' : (False, UnknownTestModule), - 'test_urllibnet.py' : (False, UTModuleMainTest), - 'test_urlparse.py' : (True, UTModuleMainTest), - 'test_userdict.py' : (True, UTModuleMainTest), - 'test_userlist.py' : (False, UTModuleMainTest), - 'test_userstring.py' : (False, UTModuleMainTest), - 'test_uu.py' : (False, UTModuleMainTest), - 'test_warnings.py' : (True, UTModuleMainTest), - 'test_wave.py' : (False, UnknownTestModule), - 'test_weakref.py' : (False, UTModuleMainTest), - 'test_whichdb.py' : (False, UTModuleMainTest), - 'test_winreg.py' : (False, OutputTestModule), - 'test_winsound.py' : (False, UTModuleMainTest), - 'test_xmllib.py' : (False, UTModuleMainTest), - 'test_xmlrpc.py' : (False, UTModuleMainTest), - 'test_xpickle.py' : (False, UTModuleMainTest), - 'test_xreadline.py' : (False, OutputTestModule), - 'test_zipfile.py' : (False, UnknownTestModule), - 'test_zipimport.py' : (False, UTModuleMainTest), - 'test_zlib.py' : (False, UTModuleMainTest), + 'test_MimeWriter.py' : TestDecl(False, OutputTestModule), + 'test_StringIO.py' : TestDecl(True, UTModuleMainTest), + 'test___all__.py' : TestDecl(False, UTModuleMainTest), + 'test___future__.py' : TestDecl(False, UnknownTestModule), + 'test_aepack.py' : TestDecl(False, UTModuleMainTest), + 'test_al.py' : TestDecl(False, UnknownTestModule), + 'test_anydbm.py' : TestDecl(False, UTModuleMainTest), + 'test_array.py' : TestDecl(False, UTModuleMainTest), + 'test_asynchat.py' : TestDecl(False, OutputTestModule), + 'test_atexit.py' : TestDecl(False, UnknownTestModule), + 'test_audioop.py' : TestDecl(False, UnknownTestModule), + 'test_augassign.py' : TestDecl(False, OutputTestModule), + 'test_base64.py' : TestDecl(True, UTModuleMainTest), + 'test_bastion.py' : TestDecl(False, UnknownTestModule), + 'test_binascii.py' : TestDecl(False, UTModuleMainTest), + 'test_binhex.py' : TestDecl(False, UTModuleMainTest), + 'test_binop.py' : TestDecl(True, UTModuleMainTest), + 'test_bisect.py' : TestDecl(True, UTModuleMainTest), + 'test_bool.py' : TestDecl(False, UTModuleMainTest), + 'test_bsddb.py' : TestDecl(False, UTModuleMainTest), + 'test_bsddb185.py' : TestDecl(False, UTModuleMainTest), + 'test_bsddb3.py' : TestDecl(False, UTModuleMainTest), + 'test_bufio.py' : TestDecl(False, UnknownTestModule), + 'test_builtin.py' : TestDecl(True, UTModuleMainTest), + 'test_bz2.py' : TestDecl(False, UTModuleMainTest), + 'test_calendar.py' : TestDecl(True, UTModuleMainTest), + 'test_call.py' : TestDecl(True, UTModuleMainTest), + 'test_capi.py' : TestDecl(False, UnknownTestModule), + 'test_cd.py' : TestDecl(False, UnknownTestModule), + 'test_cfgparser.py' : TestDecl(False, UTModuleMainTest), + 'test_cgi.py' : TestDecl(False, OutputTestModule), + 'test_charmapcodec.py' : TestDecl(True, UTModuleMainTest), + 'test_cl.py' : TestDecl(False, UnknownTestModule), + 'test_class.py' : TestDecl(False, OutputTestModule), + 'test_cmath.py' : TestDecl(True, UnknownTestModule), + 'test_codeccallbacks.py' : TestDecl(False, UTModuleMainTest), + 'test_codecs.py' : TestDecl(False, UTModuleMainTest), + 'test_codeop.py' : TestDecl(True, UTModuleMainTest), + 'test_coercion.py' : TestDecl(False, OutputTestModule), + 'test_commands.py' : TestDecl(True, UTModuleMainTest), + 'test_compare.py' : TestDecl(True, OutputTestModule), + 'test_compile.py' : TestDecl(True, UTModuleMainTest), + 'test_complex.py' : TestDecl(False, UTModuleMainTest), + 'test_contains.py' : TestDecl(False, UnknownTestModule), + 'test_cookie.py' : TestDecl(False, OutputTestModule), + 'test_copy.py' : TestDecl(True, UTModuleMainTest), + 'test_copy_reg.py' : TestDecl(True, UTModuleMainTest), + 'test_cpickle.py' : TestDecl(False, UTModuleMainTest), + 'test_crypt.py' : TestDecl(False, UnknownTestModule), + 'test_csv.py' : TestDecl(False, UTModuleMainTest), + 'test_curses.py' : TestDecl(False, UnknownTestModule), + 'test_datetime.py' : TestDecl(True, UTModuleMainTest), + 'test_dbm.py' : TestDecl(False, UnknownTestModule), + 'test_descr.py' : TestDecl(False, UTModuleMainTest), + 'test_descrtut.py' : TestDecl(False, UTModuleMainTest), + 'test_difflib.py' : TestDecl(False, UnknownTestModule), + 'test_dircache.py' : TestDecl(True, UTModuleMainTest), + 'test_dis.py' : TestDecl(True, UTModuleMainTest), + 'test_dl.py' : TestDecl(False, UnknownTestModule), + 'test_doctest.py' : TestDecl(False, UnknownTestModule), + 'test_doctest2.py' : TestDecl(True, UTModuleMainTest), + 'test_dumbdbm.py' : TestDecl(False, UTModuleMainTest), + 'test_dummy_thread.py' : TestDecl(True, UTModuleMainTest), + 'test_dummy_threading.py': TestDecl(False, UnknownTestModule), + 'test_email.py' : TestDecl(False, UTModuleMainTest), + 'test_email_codecs.py' : TestDecl(False, UnknownTestModule), + 'test_enumerate.py' : TestDecl(False, UTModuleMainTest), + 'test_eof.py' : TestDecl(False, UTModuleMainTest), + 'test_errno.py' : TestDecl(False, UnknownTestModule), + 'test_exceptions.py' : TestDecl(False, OutputTestModule), + 'test_extcall.py' : TestDecl(False, OutputTestModule), + 'test_fcntl.py' : TestDecl(False, UnknownTestModule), + 'test_file.py' : TestDecl(False, UnknownTestModule), + 'test_filecmp.py' : TestDecl(False, UTModuleMainTest), + 'test_fileinput.py' : TestDecl(False, UnknownTestModule), + 'test_fnmatch.py' : TestDecl(True, UTModuleMainTest), + 'test_fork1.py' : TestDecl(False, UnknownTestModule), + 'test_format.py' : TestDecl(False, UnknownTestModule), + 'test_fpformat.py' : TestDecl(True, UTModuleMainTest), + 'test_frozen.py' : TestDecl(False, OutputTestModule), + 'test_funcattrs.py' : TestDecl(False, UnknownTestModule), + 'test_future.py' : TestDecl(False, OutputTestModule), + 'test_future1.py' : TestDecl(False, UnknownTestModule), + 'test_future2.py' : TestDecl(False, UnknownTestModule), + 'test_future3.py' : TestDecl(True, UTModuleMainTest), + 'test_gc.py' : TestDecl(False, UnknownTestModule), + 'test_gdbm.py' : TestDecl(False, UnknownTestModule), + 'test_generators.py' : TestDecl(False, UTModuleMainTest), + 'test_getargs.py' : TestDecl(False, UnknownTestModule), + 'test_getargs2.py' : TestDecl(False, UTModuleMainTest), + 'test_getopt.py' : TestDecl(False, UnknownTestModule), + 'test_gettext.py' : TestDecl(False, UTModuleMainTest), + 'test_gl.py' : TestDecl(False, UnknownTestModule), + 'test_glob.py' : TestDecl(True, UTModuleMainTest), + 'test_global.py' : TestDecl(False, OutputTestModule), + 'test_grammar.py' : TestDecl(False, OutputTestModule), + 'test_grp.py' : TestDecl(False, UTModuleMainTest), + 'test_gzip.py' : TestDecl(False, UnknownTestModule), + 'test_hash.py' : TestDecl(True, UTModuleMainTest), + 'test_heapq.py' : TestDecl(True, UTModuleMainTest), + 'test_hexoct.py' : TestDecl(True, UTModuleMainTest), + 'test_hmac.py' : TestDecl(True, UTModuleMainTest), + 'test_hotshot.py' : TestDecl(False, UTModuleMainTest), + 'test_htmllib.py' : TestDecl(True, UTModuleMainTest), + 'test_htmlparser.py' : TestDecl(True, UTModuleMainTest), + 'test_httplib.py' : TestDecl(False, OutputTestModule), + 'test_imageop.py' : TestDecl(False, UnknownTestModule), + 'test_imaplib.py' : TestDecl(False, UnknownTestModule), + 'test_imgfile.py' : TestDecl(False, UnknownTestModule), + 'test_imp.py' : TestDecl(False, UTModuleMainTest), + 'test_import.py' : TestDecl(False, UnknownTestModule), + 'test_importhooks.py' : TestDecl(False, UTModuleMainTest), + 'test_inspect.py' : TestDecl(False, UnknownTestModule), + 'test_ioctl.py' : TestDecl(False, UTModuleMainTest), + 'test_isinstance.py' : TestDecl(True, UTModuleMainTest), + 'test_iter.py' : TestDecl(False, UTModuleMainTest), + 'test_itertools.py' : TestDecl(False, UTModuleMainTest), + 'test_largefile.py' : TestDecl(False, UnknownTestModule), + 'test_linuxaudiodev.py' : TestDecl(False, OutputTestModule), + 'test_locale.py' : TestDecl(False, UnknownTestModule), + 'test_logging.py' : TestDecl(False, UTModuleMainTest), + 'test_long.py' : TestDecl(True, UnknownTestModule), # takes hours + 'test_long_future.py' : TestDecl(False, UnknownTestModule), + 'test_longexp.py' : TestDecl(False, OutputTestModule), + 'test_macfs.py' : TestDecl(False, UTModuleMainTest), + 'test_macostools.py' : TestDecl(False, UTModuleMainTest), + 'test_macpath.py' : TestDecl(False, UTModuleMainTest), + 'test_mailbox.py' : TestDecl(True, UTModuleMainTest), + 'test_marshal.py' : TestDecl(False, UnknownTestModule), + 'test_math.py' : TestDecl(False, OutputTestModule), + 'test_md5.py' : TestDecl(False, OutputTestModule), + 'test_mhlib.py' : TestDecl(True, UTModuleMainTest), + 'test_mimetools.py' : TestDecl(True, UTModuleMainTest), + 'test_mimetypes.py' : TestDecl(True, UTModuleMainTest), + 'test_minidom.py' : TestDecl(False, UnknownTestModule), + 'test_mmap.py' : TestDecl(False, OutputTestModule), + 'test_module.py' : TestDecl(False, UnknownTestModule), + 'test_mpz.py' : TestDecl(False, UnknownTestModule), + 'test_multifile.py' : TestDecl(True, UTModuleMainTest), + 'test_mutants.py' : TestDecl(False, UnknownTestModule), + 'test_netrc.py' : TestDecl(True, UTModuleMainTest), + 'test_new.py' : TestDecl(False, OutputTestModule), + 'test_nis.py' : TestDecl(False, OutputTestModule), + 'test_normalization.py' : TestDecl(False, UTModuleMainTest), + 'test_ntpath.py' : TestDecl(False, UnknownTestModule), + 'test_opcodes.py' : TestDecl(False, OutputTestModule), + 'test_openpty.py' : TestDecl(False, OutputTestModule), + 'test_operations.py' : TestDecl(False, OutputTestModule), + 'test_operator.py' : TestDecl(True, UTModuleMainTest), + 'test_optparse.py' : TestDecl(False, UTModuleMainTest), + 'test_os.py' : TestDecl(True, UTModuleMainTest), + 'test_ossaudiodev.py' : TestDecl(False, OutputTestModule), + 'test_parser.py' : TestDecl(True, UTModuleMainTest), + 'test_pep247.py' : TestDecl(False, UnknownTestModule), + 'test_pep263.py' : TestDecl(False, UnknownTestModule), + 'test_pep277.py' : TestDecl(False, UTModuleMainTest), + 'test_pickle.py' : TestDecl(False, UTModuleMainTest), + 'test_pickletools.py' : TestDecl(False, UnknownTestModule), + 'test_pkg.py' : TestDecl(False, OutputTestModule), + 'test_pkgimport.py' : TestDecl(True, UTModuleMainTest), + 'test_plistlib.py' : TestDecl(False, UTModuleMainTest), + 'test_poll.py' : TestDecl(False, OutputTestModule), + 'test_popen.py' : TestDecl(False, OutputTestModule), + 'test_popen2.py' : TestDecl(False, OutputTestModule), + 'test_posix.py' : TestDecl(True, UTModuleMainTest), + 'test_posixpath.py' : TestDecl(True, UTModuleMainTest), + 'test_pow.py' : TestDecl(True, UTModuleMainTest), + 'test_pprint.py' : TestDecl(True, UTModuleMainTest), + 'test_profile.py' : TestDecl(True, UTModuleMainTest), + 'test_profilehooks.py' : TestDecl(True, UTModuleMainTest), + 'test_pty.py' : TestDecl(False, OutputTestModule), + 'test_pwd.py' : TestDecl(False, UTModuleMainTest), + 'test_pyclbr.py' : TestDecl(False, UTModuleMainTest), + 'test_pyexpat.py' : TestDecl(False, OutputTestModule), + 'test_queue.py' : TestDecl(False, UnknownTestModule), + 'test_quopri.py' : TestDecl(False, UTModuleMainTest), + 'test_random.py' : TestDecl(False, UTModuleMainTest), + 'test_re.py' : TestDecl(False, UTModuleMainTest), + 'test_regex.py' : TestDecl(False, OutputTestModule), + 'test_repr.py' : TestDecl(False, UTModuleMainTest), + 'test_resource.py' : TestDecl(False, OutputTestModule), + 'test_rfc822.py' : TestDecl(True, UTModuleMainTest), + 'test_rgbimg.py' : TestDecl(False, OutputTestModule), + 'test_richcmp.py' : TestDecl(False, UTModuleMainTest), + 'test_robotparser.py' : TestDecl(True, UTModuleMainTest), + 'test_rotor.py' : TestDecl(False, OutputTestModule), + 'test_sax.py' : TestDecl(False, UnknownTestModule), + 'test_scope.py' : TestDecl(False, OutputTestModule), + 'test_scriptpackages.py' : TestDecl(False, UTModuleMainTest), + 'test_select.py' : TestDecl(False, UnknownTestModule), + 'test_sets.py' : TestDecl(True, UTModuleMainTest), + 'test_sgmllib.py' : TestDecl(True, UTModuleMainTest), + 'test_sha.py' : TestDecl(False, UTModuleMainTest), + 'test_shelve.py' : TestDecl(True, UTModuleMainTest), + 'test_shlex.py' : TestDecl(True, UTModuleMainTest), + 'test_shutil.py' : TestDecl(True, UTModuleMainTest), + 'test_signal.py' : TestDecl(False, OutputTestModule), + 'test_slice.py' : TestDecl(False, UnknownTestModule), + 'test_socket.py' : TestDecl(False, UTModuleMainTest), + 'test_socket_ssl.py' : TestDecl(False, UTModuleMainTest), + 'test_socketserver.py' : TestDecl(False, UTModuleMainTest), + 'test_softspace.py' : TestDecl(False, UnknownTestModule), + 'test_sort.py' : TestDecl(False, UnknownTestModule), + 'test_str.py' : TestDecl(False, UTModuleMainTest), + 'test_strftime.py' : TestDecl(False, UnknownTestModule), + 'test_string.py' : TestDecl(True, UTModuleMainTest), + 'test_stringprep.py' : TestDecl(False, UnknownTestModule), + 'test_strop.py' : TestDecl(False, UTModuleMainTest), + 'test_strptime.py' : TestDecl(False, UTModuleMainTest), + 'test_struct.py' : TestDecl(False, UnknownTestModule), + 'test_structseq.py' : TestDecl(False, UnknownTestModule), + 'test_sunaudiodev.py' : TestDecl(False, UnknownTestModule), + 'test_sundry.py' : TestDecl(False, UnknownTestModule), + 'test_support.py' : TestDecl(False, UnknownTestModule), + 'test_symtable.py' : TestDecl(False, UnknownTestModule), + 'test_syntax.py' : TestDecl(True, UTModuleMainTest), + 'test_sys.py' : TestDecl(True, UTModuleMainTest), + 'test_tarfile.py' : TestDecl(False, UTModuleMainTest), + 'test_tempfile.py' : TestDecl(False, UTModuleMainTest), + 'test_textwrap.py' : TestDecl(True, UTModuleMainTest), + 'test_thread.py' : TestDecl(False, OutputTestModule), + 'test_threaded_import.py': TestDecl(False, UTModuleMainTest), + 'test_threadedtempfile.py': TestDecl(False, UTModuleMainTest), + 'test_threading.py' : TestDecl(False, UnknownTestModule), + 'test_time.py' : TestDecl(True, UTModuleMainTest), + 'test_timeout.py' : TestDecl(False, UTModuleMainTest), + 'test_timing.py' : TestDecl(False, UnknownTestModule), + 'test_tokenize.py' : TestDecl(False, OutputTestModule), + 'test_trace.py' : TestDecl(True, UTModuleMainTest), + 'test_traceback.py' : TestDecl(False, UTModuleMainTest), + 'test_types.py' : TestDecl(False, OutputTestModule), + 'test_ucn.py' : TestDecl(False, UTModuleMainTest), + 'test_unary.py' : TestDecl(True, UTModuleMainTest), + 'test_unicode.py' : TestDecl(False, UTModuleMainTest), + 'test_unicode_file.py' : TestDecl(False, OutputTestModule), + 'test_unicodedata.py' : TestDecl(False, UTModuleMainTest), + 'test_univnewlines.py' : TestDecl(True, UTModuleMainTest), + 'test_unpack.py' : TestDecl(False, UnknownTestModule), + 'test_urllib.py' : TestDecl(True, UTModuleMainTest), + 'test_urllib2.py' : TestDecl(False, UnknownTestModule), + 'test_urllibnet.py' : TestDecl(False, UTModuleMainTest), + 'test_urlparse.py' : TestDecl(True, UTModuleMainTest), + 'test_userdict.py' : TestDecl(True, UTModuleMainTest), + 'test_userlist.py' : TestDecl(False, UTModuleMainTest), + 'test_userstring.py' : TestDecl(False, UTModuleMainTest), + 'test_uu.py' : TestDecl(False, UTModuleMainTest), + 'test_warnings.py' : TestDecl(True, UTModuleMainTest), + 'test_wave.py' : TestDecl(False, UnknownTestModule), + 'test_weakref.py' : TestDecl(False, UTModuleMainTest), + 'test_whichdb.py' : TestDecl(False, UTModuleMainTest), + 'test_winreg.py' : TestDecl(False, OutputTestModule), + 'test_winsound.py' : TestDecl(False, UTModuleMainTest), + 'test_xmllib.py' : TestDecl(False, UTModuleMainTest), + 'test_xmlrpc.py' : TestDecl(False, UTModuleMainTest), + 'test_xpickle.py' : TestDecl(False, UTModuleMainTest), + 'test_xreadline.py' : TestDecl(False, OutputTestModule), + 'test_zipfile.py' : TestDecl(False, UnknownTestModule), + 'test_zipimport.py' : TestDecl(False, UTModuleMainTest), + 'test_zlib.py' : TestDecl(False, UTModuleMainTest), } From hpk at codespeak.net Wed Apr 20 13:09:25 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 20 Apr 2005 13:09:25 +0200 (CEST) Subject: [pypy-svn] r10914 - pypy/dist/pypy/documentation Message-ID: <20050420110925.1393827B3E@code1.codespeak.net> Author: hpk Date: Wed Apr 20 13:09:24 2005 New Revision: 10914 Modified: pypy/dist/pypy/documentation/misc.txt Log: adjusting directories to new pypy/eu-tracking structure Modified: pypy/dist/pypy/documentation/misc.txt ============================================================================== --- pypy/dist/pypy/documentation/misc.txt (original) +++ pypy/dist/pypy/documentation/misc.txt Wed Apr 20 13:09:24 2005 @@ -82,10 +82,10 @@ press # ... eu-tracking # strong focus on eu-internal details - timesheets # monthly timesheets - monthly-reports - deliverables # deliverable/documents - minutes # meeting protocols + timesheet # monthly timesheets + accession # formal accession related information/decisions + deliverable # deliverable/documents + minute # minutes of meetings budget.sxc calendar.sxc ... From hpk at codespeak.net Wed Apr 20 13:27:54 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 20 Apr 2005 13:27:54 +0200 (CEST) Subject: [pypy-svn] r10916 - pypy/dist/pypy/documentation Message-ID: <20050420112754.B681B27B3E@code1.codespeak.net> Author: hpk Date: Wed Apr 20 13:27:54 2005 New Revision: 10916 Modified: pypy/dist/pypy/documentation/misc.txt Log: link the new eu-tracking directory Modified: pypy/dist/pypy/documentation/misc.txt ============================================================================== --- pypy/dist/pypy/documentation/misc.txt (original) +++ pypy/dist/pypy/documentation/misc.txt Wed Apr 20 13:27:54 2005 @@ -47,10 +47,11 @@ - `extradoc`_: talks, papers, newsletters and EU-related information that are useful for not-only-developers -- `eu-tracking`: eu-tracking details that involve internal - budget/cost/audit preparations and documentations (not - available to anonymous checkouts) +- `eu-tracking`_ (password protected): tracking EU project details + that involve internal budget/cost/audit preparations and + documentations. This is not available to anonymous checkouts. +.. _`eu-tracking`: http://codespeak.net/svn/pypy/eu-tracking .. _`extradoc`: http://codespeak.net/svn/pypy/extradoc .. _`dist`: http://codespeak.net/svn/pypy/dist From cfbolz at codespeak.net Wed Apr 20 14:34:57 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Wed, 20 Apr 2005 14:34:57 +0200 (CEST) Subject: [pypy-svn] r10917 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050420123457.B3D5827B3E@code1.codespeak.net> Author: cfbolz Date: Wed Apr 20 14:34:57 2005 New Revision: 10917 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: Added comments to conftest about the tests I tested that failed. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 20 14:34:57 2005 @@ -274,6 +274,8 @@ 'test_al.py' : TestDecl(False, UnknownTestModule), 'test_anydbm.py' : TestDecl(False, UTModuleMainTest), 'test_array.py' : TestDecl(False, UTModuleMainTest), + #Uncaught interp-level exception: Same place as test_cfgparser + 'test_asynchat.py' : TestDecl(False, OutputTestModule), 'test_atexit.py' : TestDecl(False, UnknownTestModule), 'test_audioop.py' : TestDecl(False, UnknownTestModule), @@ -281,10 +283,16 @@ 'test_base64.py' : TestDecl(True, UTModuleMainTest), 'test_bastion.py' : TestDecl(False, UnknownTestModule), 'test_binascii.py' : TestDecl(False, UTModuleMainTest), + #2 of 8 tests fail + 'test_binhex.py' : TestDecl(False, UTModuleMainTest), + #1 of 1 test fails + 'test_binop.py' : TestDecl(True, UTModuleMainTest), 'test_bisect.py' : TestDecl(True, UTModuleMainTest), 'test_bool.py' : TestDecl(False, UTModuleMainTest), + #Infinite recursion in DescrOperation.is_true + 'test_bsddb.py' : TestDecl(False, UTModuleMainTest), 'test_bsddb185.py' : TestDecl(False, UTModuleMainTest), 'test_bsddb3.py' : TestDecl(False, UTModuleMainTest), @@ -296,19 +304,30 @@ 'test_capi.py' : TestDecl(False, UnknownTestModule), 'test_cd.py' : TestDecl(False, UnknownTestModule), 'test_cfgparser.py' : TestDecl(False, UTModuleMainTest), + #Uncaught interp-level exception: + #File "pypy/objspace/std/fake.py", line 133, in setfastscope + #raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) + #pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > + 'test_cgi.py' : TestDecl(False, OutputTestModule), 'test_charmapcodec.py' : TestDecl(True, UTModuleMainTest), 'test_cl.py' : TestDecl(False, UnknownTestModule), 'test_class.py' : TestDecl(False, OutputTestModule), 'test_cmath.py' : TestDecl(True, UnknownTestModule), 'test_codeccallbacks.py' : TestDecl(False, UTModuleMainTest), + #Uncaught interp-level exception: Same place as test_cfgparser + 'test_codecs.py' : TestDecl(False, UTModuleMainTest), + #Uncaught interp-level exception: Same place as test_cfgparser + 'test_codeop.py' : TestDecl(True, UTModuleMainTest), 'test_coercion.py' : TestDecl(False, OutputTestModule), 'test_commands.py' : TestDecl(True, UTModuleMainTest), 'test_compare.py' : TestDecl(True, OutputTestModule), 'test_compile.py' : TestDecl(True, UTModuleMainTest), 'test_complex.py' : TestDecl(False, UTModuleMainTest), + #at least one test fails, after several hours I gave up waiting for the rest + 'test_contains.py' : TestDecl(False, UnknownTestModule), 'test_cookie.py' : TestDecl(False, OutputTestModule), 'test_copy.py' : TestDecl(True, UTModuleMainTest), @@ -316,11 +335,15 @@ 'test_cpickle.py' : TestDecl(False, UTModuleMainTest), 'test_crypt.py' : TestDecl(False, UnknownTestModule), 'test_csv.py' : TestDecl(False, UTModuleMainTest), + #ImportError: _csv + 'test_curses.py' : TestDecl(False, UnknownTestModule), 'test_datetime.py' : TestDecl(True, UTModuleMainTest), 'test_dbm.py' : TestDecl(False, UnknownTestModule), 'test_descr.py' : TestDecl(False, UTModuleMainTest), 'test_descrtut.py' : TestDecl(False, UTModuleMainTest), + #19 of 96 tests fail + 'test_difflib.py' : TestDecl(False, UnknownTestModule), 'test_dircache.py' : TestDecl(True, UTModuleMainTest), 'test_dis.py' : TestDecl(True, UTModuleMainTest), @@ -328,12 +351,20 @@ 'test_doctest.py' : TestDecl(False, UnknownTestModule), 'test_doctest2.py' : TestDecl(True, UTModuleMainTest), 'test_dumbdbm.py' : TestDecl(False, UTModuleMainTest), + #5 of 7 tests fail + 'test_dummy_thread.py' : TestDecl(True, UTModuleMainTest), 'test_dummy_threading.py': TestDecl(False, UnknownTestModule), 'test_email.py' : TestDecl(False, UTModuleMainTest), + #Uncaught interp-level exception + 'test_email_codecs.py' : TestDecl(False, UnknownTestModule), 'test_enumerate.py' : TestDecl(False, UTModuleMainTest), + #fails because enumerate is a type in CPy: the test tries to subclass it + 'test_eof.py' : TestDecl(False, UTModuleMainTest), + #some error strings differ slightly XXX + 'test_errno.py' : TestDecl(False, UnknownTestModule), 'test_exceptions.py' : TestDecl(False, OutputTestModule), 'test_extcall.py' : TestDecl(False, OutputTestModule), @@ -354,21 +385,31 @@ 'test_gc.py' : TestDecl(False, UnknownTestModule), 'test_gdbm.py' : TestDecl(False, UnknownTestModule), 'test_generators.py' : TestDecl(False, UTModuleMainTest), + #30 of 152 tests fail + 'test_getargs.py' : TestDecl(False, UnknownTestModule), 'test_getargs2.py' : TestDecl(False, UTModuleMainTest), + #ImportError: _testcapi + 'test_getopt.py' : TestDecl(False, UnknownTestModule), 'test_gettext.py' : TestDecl(False, UTModuleMainTest), + #28 of 28 tests fail + 'test_gl.py' : TestDecl(False, UnknownTestModule), 'test_glob.py' : TestDecl(True, UTModuleMainTest), 'test_global.py' : TestDecl(False, OutputTestModule), 'test_grammar.py' : TestDecl(False, OutputTestModule), 'test_grp.py' : TestDecl(False, UTModuleMainTest), + #ImportError: grp + 'test_gzip.py' : TestDecl(False, UnknownTestModule), 'test_hash.py' : TestDecl(True, UTModuleMainTest), 'test_heapq.py' : TestDecl(True, UTModuleMainTest), 'test_hexoct.py' : TestDecl(True, UTModuleMainTest), 'test_hmac.py' : TestDecl(True, UTModuleMainTest), 'test_hotshot.py' : TestDecl(False, UTModuleMainTest), + #ImportError: _hotshot + 'test_htmllib.py' : TestDecl(True, UTModuleMainTest), 'test_htmlparser.py' : TestDecl(True, UTModuleMainTest), 'test_httplib.py' : TestDecl(False, OutputTestModule), @@ -382,11 +423,15 @@ 'test_ioctl.py' : TestDecl(False, UTModuleMainTest), 'test_isinstance.py' : TestDecl(True, UTModuleMainTest), 'test_iter.py' : TestDecl(False, UTModuleMainTest), + #Uncaught interp-level exception: Same place as test_cfgparser + 'test_itertools.py' : TestDecl(False, UTModuleMainTest), + #Alternate version in test2 + 'test_largefile.py' : TestDecl(False, UnknownTestModule), 'test_linuxaudiodev.py' : TestDecl(False, OutputTestModule), 'test_locale.py' : TestDecl(False, UnknownTestModule), - 'test_logging.py' : TestDecl(False, UTModuleMainTest), + 'test_logging.py' : TestDecl(False, OutputTestModule), 'test_long.py' : TestDecl(True, UnknownTestModule), # takes hours 'test_long_future.py' : TestDecl(False, UnknownTestModule), 'test_longexp.py' : TestDecl(False, OutputTestModule), @@ -419,6 +464,8 @@ 'test_os.py' : TestDecl(True, UTModuleMainTest), 'test_ossaudiodev.py' : TestDecl(False, OutputTestModule), 'test_parser.py' : TestDecl(True, UTModuleMainTest), + #18 of 18 tests fail + 'test_pep247.py' : TestDecl(False, UnknownTestModule), 'test_pep263.py' : TestDecl(False, UnknownTestModule), 'test_pep277.py' : TestDecl(False, UTModuleMainTest), @@ -434,22 +481,37 @@ 'test_posixpath.py' : TestDecl(True, UTModuleMainTest), 'test_pow.py' : TestDecl(True, UTModuleMainTest), 'test_pprint.py' : TestDecl(True, UTModuleMainTest), - 'test_profile.py' : TestDecl(True, UTModuleMainTest), + 'test_profile.py' : TestDecl(True, OutputTestModule), 'test_profilehooks.py' : TestDecl(True, UTModuleMainTest), 'test_pty.py' : TestDecl(False, OutputTestModule), 'test_pwd.py' : TestDecl(False, UTModuleMainTest), + #ImportError: pwd + 'test_pyclbr.py' : TestDecl(False, UTModuleMainTest), 'test_pyexpat.py' : TestDecl(False, OutputTestModule), 'test_queue.py' : TestDecl(False, UnknownTestModule), 'test_quopri.py' : TestDecl(False, UTModuleMainTest), 'test_random.py' : TestDecl(False, UTModuleMainTest), + #Uncaught app-level exception: + #class WichmannHill_TestBasicOps(TestBasicOps): + #File "test_random.py", line 125 in WichmannHill_TestBasicOps + #gen = random.WichmannHill() + #AttributeError: 'module' object has no attribute 'WichmannHill' + 'test_re.py' : TestDecl(False, UTModuleMainTest), + #7 of 47 tests fail + 'test_regex.py' : TestDecl(False, OutputTestModule), 'test_repr.py' : TestDecl(False, UTModuleMainTest), + #6 of 12 tests fail. Always minor stuff like + #'' != '' + 'test_resource.py' : TestDecl(False, OutputTestModule), 'test_rfc822.py' : TestDecl(True, UTModuleMainTest), 'test_rgbimg.py' : TestDecl(False, OutputTestModule), 'test_richcmp.py' : TestDecl(False, UTModuleMainTest), + #1 of 11 test fails. The failing one had an infinite recursion. + 'test_robotparser.py' : TestDecl(True, UTModuleMainTest), 'test_rotor.py' : TestDecl(False, OutputTestModule), 'test_sax.py' : TestDecl(False, UnknownTestModule), @@ -465,16 +527,26 @@ 'test_signal.py' : TestDecl(False, OutputTestModule), 'test_slice.py' : TestDecl(False, UnknownTestModule), 'test_socket.py' : TestDecl(False, UTModuleMainTest), + #ImportError: thread + 'test_socket_ssl.py' : TestDecl(False, UTModuleMainTest), 'test_socketserver.py' : TestDecl(False, UTModuleMainTest), + #ImportError: thread + 'test_softspace.py' : TestDecl(False, UnknownTestModule), 'test_sort.py' : TestDecl(False, UnknownTestModule), 'test_str.py' : TestDecl(False, UTModuleMainTest), + #at least two tests fail, after several hours I gave up waiting for the rest + 'test_strftime.py' : TestDecl(False, UnknownTestModule), 'test_string.py' : TestDecl(True, UTModuleMainTest), 'test_stringprep.py' : TestDecl(False, UnknownTestModule), 'test_strop.py' : TestDecl(False, UTModuleMainTest), + #ImportError: strop + 'test_strptime.py' : TestDecl(False, UTModuleMainTest), + #1 of 42 test fails: seems to be some regex problem + 'test_struct.py' : TestDecl(False, UnknownTestModule), 'test_structseq.py' : TestDecl(False, UnknownTestModule), 'test_sunaudiodev.py' : TestDecl(False, UnknownTestModule), @@ -484,18 +556,30 @@ 'test_syntax.py' : TestDecl(True, UTModuleMainTest), 'test_sys.py' : TestDecl(True, UTModuleMainTest), 'test_tarfile.py' : TestDecl(False, UTModuleMainTest), + #13 of 13 test fail + 'test_tempfile.py' : TestDecl(False, UTModuleMainTest), + #Uncaught interp-level exception: Same place as test_cfgparser + 'test_textwrap.py' : TestDecl(True, UTModuleMainTest), 'test_thread.py' : TestDecl(False, OutputTestModule), 'test_threaded_import.py': TestDecl(False, UTModuleMainTest), - 'test_threadedtempfile.py': TestDecl(False, UTModuleMainTest), + 'test_threadedtempfile.py': TestDecl(False, OutputTestModule), + #ImportError: thread + 'test_threading.py' : TestDecl(False, UnknownTestModule), + #ImportError: thread + 'test_time.py' : TestDecl(True, UTModuleMainTest), 'test_timeout.py' : TestDecl(False, UTModuleMainTest), + #Uncaught interp-level exception: Same place as test_cfgparser + 'test_timing.py' : TestDecl(False, UnknownTestModule), 'test_tokenize.py' : TestDecl(False, OutputTestModule), 'test_trace.py' : TestDecl(True, UTModuleMainTest), 'test_traceback.py' : TestDecl(False, UTModuleMainTest), + #2 of 2 tests fail + 'test_types.py' : TestDecl(False, OutputTestModule), 'test_ucn.py' : TestDecl(False, UTModuleMainTest), 'test_unary.py' : TestDecl(True, UTModuleMainTest), @@ -505,24 +589,39 @@ 'test_univnewlines.py' : TestDecl(True, UTModuleMainTest), 'test_unpack.py' : TestDecl(False, UnknownTestModule), 'test_urllib.py' : TestDecl(True, UTModuleMainTest), + #10 of 10 tests fail + 'test_urllib2.py' : TestDecl(False, UnknownTestModule), 'test_urllibnet.py' : TestDecl(False, UTModuleMainTest), 'test_urlparse.py' : TestDecl(True, UTModuleMainTest), 'test_userdict.py' : TestDecl(True, UTModuleMainTest), + #5 of 25 tests fail + 'test_userlist.py' : TestDecl(False, UTModuleMainTest), + #at least two tests fail, after several hours I gave up waiting for the rest + 'test_userstring.py' : TestDecl(False, UTModuleMainTest), 'test_uu.py' : TestDecl(False, UTModuleMainTest), + #1 of 9 test fails + 'test_warnings.py' : TestDecl(True, UTModuleMainTest), 'test_wave.py' : TestDecl(False, UnknownTestModule), 'test_weakref.py' : TestDecl(False, UTModuleMainTest), + #ImportError: _weakref + 'test_whichdb.py' : TestDecl(False, UTModuleMainTest), 'test_winreg.py' : TestDecl(False, OutputTestModule), 'test_winsound.py' : TestDecl(False, UTModuleMainTest), 'test_xmllib.py' : TestDecl(False, UTModuleMainTest), 'test_xmlrpc.py' : TestDecl(False, UTModuleMainTest), + #2 of 5 tests fail + 'test_xpickle.py' : TestDecl(False, UTModuleMainTest), 'test_xreadline.py' : TestDecl(False, OutputTestModule), 'test_zipfile.py' : TestDecl(False, UnknownTestModule), 'test_zipimport.py' : TestDecl(False, UTModuleMainTest), + #ImportError: zlib + 'test_zlib.py' : TestDecl(False, UTModuleMainTest), + #ImportError: zlib } From hpk at codespeak.net Wed Apr 20 15:08:24 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 20 Apr 2005 15:08:24 +0200 (CEST) Subject: [pypy-svn] r10918 - in pypy/dist: lib-python-2.3.4/test pypy/lib/test2 Message-ID: <20050420130824.9F59727B3E@code1.codespeak.net> Author: hpk Date: Wed Apr 20 15:08:24 2005 New Revision: 10918 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py pypy/dist/pypy/lib/test2/conftest.py Log: lib/test2 is enabled again but only for running tests against CPython. There also is a test map now just for the lib/test2 hierarchy. test_sha.py and test_itertools.py pass but the latter fails one test on CPython because of our particular pypy/lib/itertools.py slice implementation (i think) Note that just running 'python test_itertools.py' will suceed because it doesn't use our 'pypy/lib/itertools.py' implementation. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 20 15:08:24 2005 @@ -44,24 +44,6 @@ raise KeyboardInterrupt raise -class RegrDirectory(py.test.collect.Directory): - def run(self): - l = [] - items = testmap.items() - items.sort(lambda x,y: cmp(x[0].lower(), y[0].lower())) - for name, testdecl in items: - if testdecl.enabled: - l.append(name) - return l - - def join(self, name): - if name not in testmap: - raise NameError(name) - testdecl = testmap[name] - return testdecl.testclass(mydir.join(name), parent=self) - -Directory = RegrDirectory - w_testlist = None def hack_test_support(space): @@ -625,3 +607,23 @@ 'test_zlib.py' : TestDecl(False, UTModuleMainTest), #ImportError: zlib } + +class RegrDirectory(py.test.collect.Directory): + testmap = testmap + def run(self): + l = [] + items = self.testmap.items() + items.sort(lambda x,y: cmp(x[0].lower(), y[0].lower())) + for name, testdecl in items: + if testdecl.enabled: + l.append(name) + return l + + def join(self, name): + if name not in self.testmap: + raise NameError(name) + testdecl = self.testmap[name] + return testdecl.testclass(self.fspath.join(name), parent=self) + +Directory = RegrDirectory + Modified: pypy/dist/pypy/lib/test2/conftest.py ============================================================================== --- pypy/dist/pypy/lib/test2/conftest.py (original) +++ pypy/dist/pypy/lib/test2/conftest.py Wed Apr 20 15:08:24 2005 @@ -6,7 +6,7 @@ ModuleType = type(sys) -def make_cpy_module(dottedname, filepath, force=False): +def make_cpy_module(dottedname, filepath, force=True): try: if force: raise KeyError @@ -14,62 +14,87 @@ except KeyError: mod = ModuleType(dottedname) execfile(str(filepath), mod.__dict__) + #print "setting sys.modules[%s] = %s" % (dottedname, mod) sys.modules[dottedname] = mod return mod libtest = py.path.local(pypy.__file__).dirpath() libtest = libtest.dirpath('lib-python-2.3.4', 'test') -#conftest = libtest.join('conftest.py').pyimport() +libconftest = libtest.join('conftest.py').getpymodule() # read()) -def Module(fspath, parent=None): - if option.allpypy: - return conftest.Module(fspath, parent=parent) - return UnittestModuleOnCPython(fspath, parent=parent) +testlist = None +doctestmodulelist = None -class Directory(py.test.collect.Directory): - def run(self): - return [] - -class UnittestModuleOnCPython(py.test.collect.Module): - def _prepare(self): - mod = make_cpy_module('unittest', libtest.join('pypy_unittest.py'), force=True) - sys.modules['unittest'] = mod +def hack_test_support_cpython(): + global testlist, doctestmodulelist + if testlist is None: + testlist = [] + doctestmodulelist = [] + mod = make_cpy_module('unittest', libtest.join('pypy_unittest.py', force=True)) mod.raises = py.test.raises - self.TestCase = mod.TestCase + + def hack_run_unittest(*classes): + testlist.extend(list(classes)) + def hack_run_doctest(name, verbose=None): + doctestmodulelist.append(name) + + from test import test_support + test_support.run_unittest = hack_run_unittest + test_support.run_doctest = hack_run_doctest + return sys.modules['unittest'] + +class UTModuleOnCPython(py.test.collect.Module): + def __init__(self, fspath, parent): + super(UTModuleOnCPython, self).__init__(fspath, parent) + mod = hack_test_support_cpython() + self.TestCaseClass = getattr(mod, 'TestCase') + + name = self.fspath.purebasename + mod = self._obj = make_cpy_module(name, self.fspath, force=True) + + # hack out the test case classes for this module + testlist[:] = [] + mod.test_main() + + self._testcases = [(cls.__name__, cls) for cls in testlist] + self._testcases.sort() def run(self): - self._prepare() - try: - iterable = self._cache - except AttributeError: - iterable = self._cache = list(self._iter()) - return list(iterable) + return [x[0] for x in self._testcases] - def _iter(self): - name = self.fspath.purebasename - mod = make_cpy_module(name, self.fspath) - print mod - tlist = conftest.app_list_testmethods(mod, self.TestCase, []) - for (setup, teardown, methods) in tlist: - for name, method in methods: - yield CpyTestCaseMethod(self.fspath, name, method, - setup, teardown) - -class CpyTestCaseMethod(py.test.Item): - def __init__(self, fspath, name, method, setup, teardown): - self.name = name - extpy = py.path.extpy(fspath, name) - super(CpyTestCaseMethod, self).__init__(extpy) - self.method = method - self.setup = setup - self.teardown = teardown + def join(self, name): + for x,cls in self._testcases: + if x == name: + return UTTestCase(name, parent=self, cls=cls) - def run(self, driver): - self.setup() +class UTTestCaseMethod(py.test.Function): + def run(self): + method = self.obj + setup = method.im_self.setUp + teardown = method.im_self.tearDown + setup() try: - self.execute() + method() finally: - self.teardown() + teardown() + +class UTTestCaseInstance(py.test.collect.Instance): + Function = UTTestCaseMethod + +class UTTestCase(py.test.collect.Class): + Instance = UTTestCaseInstance + + def __init__(self, name, parent, cls): + super(UTTestCase, self).__init__(name, parent) + self._obj = cls + +TestDecl = libconftest.TestDecl + +testmap = { + 'test_itertools.py' : TestDecl(True, UTModuleOnCPython), + 'test_sha.py' : TestDecl(True, UTModuleOnCPython), +} + +class Directory(libconftest.Directory): + testmap = testmap - def execute(self): - return self.method() From hpk at codespeak.net Wed Apr 20 15:24:31 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 20 Apr 2005 15:24:31 +0200 (CEST) Subject: [pypy-svn] r10919 - pypy/dist/pypy/lib/test2 Message-ID: <20050420132431.E54DA27B3E@code1.codespeak.net> Author: hpk Date: Wed Apr 20 15:24:31 2005 New Revision: 10919 Modified: pypy/dist/pypy/lib/test2/conftest.py Log: hack out pypy/lib dir for running against CPython (it gets inserted because importing the conftest file adds it ... hum) Modified: pypy/dist/pypy/lib/test2/conftest.py ============================================================================== --- pypy/dist/pypy/lib/test2/conftest.py (original) +++ pypy/dist/pypy/lib/test2/conftest.py Wed Apr 20 15:24:31 2005 @@ -18,9 +18,17 @@ sys.modules[dottedname] = mod return mod -libtest = py.path.local(pypy.__file__).dirpath() -libtest = libtest.dirpath('lib-python-2.3.4', 'test') -libconftest = libtest.join('conftest.py').getpymodule() # read()) +pypydir = py.path.local(pypy.__file__).dirpath() + +# hack out pypy/lib -> XXX we need to restructure our test2 situation +pypylibdir = pypydir.join('lib') +if str(pypylibdir) in sys.path: + print "warning, %s on sys.path at cpython level, removing it" % pypylibdir + sys.path.remove(str(pypylibdir)) +assert str(pypylibdir) not in sys.path + +libtestdir = pypydir.dirpath('lib-python-2.3.4', 'test') +libconftest = libtestdir.join('conftest.py').getpymodule() # read()) testlist = None doctestmodulelist = None @@ -30,7 +38,7 @@ if testlist is None: testlist = [] doctestmodulelist = [] - mod = make_cpy_module('unittest', libtest.join('pypy_unittest.py', force=True)) + mod = make_cpy_module('unittest', libtestdir.join('pypy_unittest.py', force=True)) mod.raises = py.test.raises def hack_run_unittest(*classes): From cfbolz at codespeak.net Wed Apr 20 15:38:02 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Wed, 20 Apr 2005 15:38:02 +0200 (CEST) Subject: [pypy-svn] r10920 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050420133802.01B7927B3E@code1.codespeak.net> Author: cfbolz Date: Wed Apr 20 15:38:02 2005 New Revision: 10920 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: Added revision numbers to comments. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 20 15:38:02 2005 @@ -256,7 +256,7 @@ 'test_al.py' : TestDecl(False, UnknownTestModule), 'test_anydbm.py' : TestDecl(False, UTModuleMainTest), 'test_array.py' : TestDecl(False, UTModuleMainTest), - #Uncaught interp-level exception: Same place as test_cfgparser + #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser 'test_asynchat.py' : TestDecl(False, OutputTestModule), 'test_atexit.py' : TestDecl(False, UnknownTestModule), @@ -265,15 +265,15 @@ 'test_base64.py' : TestDecl(True, UTModuleMainTest), 'test_bastion.py' : TestDecl(False, UnknownTestModule), 'test_binascii.py' : TestDecl(False, UTModuleMainTest), - #2 of 8 tests fail + #rev 10840: 2 of 8 tests fail 'test_binhex.py' : TestDecl(False, UTModuleMainTest), - #1 of 1 test fails + #rev 10840: 1 of 1 test fails 'test_binop.py' : TestDecl(True, UTModuleMainTest), 'test_bisect.py' : TestDecl(True, UTModuleMainTest), 'test_bool.py' : TestDecl(False, UTModuleMainTest), - #Infinite recursion in DescrOperation.is_true + #rev 10840: Infinite recursion in DescrOperation.is_true 'test_bsddb.py' : TestDecl(False, UTModuleMainTest), 'test_bsddb185.py' : TestDecl(False, UTModuleMainTest), @@ -286,7 +286,7 @@ 'test_capi.py' : TestDecl(False, UnknownTestModule), 'test_cd.py' : TestDecl(False, UnknownTestModule), 'test_cfgparser.py' : TestDecl(False, UTModuleMainTest), - #Uncaught interp-level exception: + #rev 10840: Uncaught interp-level exception: #File "pypy/objspace/std/fake.py", line 133, in setfastscope #raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) #pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > @@ -297,10 +297,10 @@ 'test_class.py' : TestDecl(False, OutputTestModule), 'test_cmath.py' : TestDecl(True, UnknownTestModule), 'test_codeccallbacks.py' : TestDecl(False, UTModuleMainTest), - #Uncaught interp-level exception: Same place as test_cfgparser + #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser 'test_codecs.py' : TestDecl(False, UTModuleMainTest), - #Uncaught interp-level exception: Same place as test_cfgparser + #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser 'test_codeop.py' : TestDecl(True, UTModuleMainTest), 'test_coercion.py' : TestDecl(False, OutputTestModule), @@ -308,7 +308,7 @@ 'test_compare.py' : TestDecl(True, OutputTestModule), 'test_compile.py' : TestDecl(True, UTModuleMainTest), 'test_complex.py' : TestDecl(False, UTModuleMainTest), - #at least one test fails, after several hours I gave up waiting for the rest + #rev 10840: at least one test fails, after several hours I gave up waiting for the rest 'test_contains.py' : TestDecl(False, UnknownTestModule), 'test_cookie.py' : TestDecl(False, OutputTestModule), @@ -317,14 +317,14 @@ 'test_cpickle.py' : TestDecl(False, UTModuleMainTest), 'test_crypt.py' : TestDecl(False, UnknownTestModule), 'test_csv.py' : TestDecl(False, UTModuleMainTest), - #ImportError: _csv + #rev 10840: ImportError: _csv 'test_curses.py' : TestDecl(False, UnknownTestModule), 'test_datetime.py' : TestDecl(True, UTModuleMainTest), 'test_dbm.py' : TestDecl(False, UnknownTestModule), 'test_descr.py' : TestDecl(False, UTModuleMainTest), 'test_descrtut.py' : TestDecl(False, UTModuleMainTest), - #19 of 96 tests fail + #rev 10840: 19 of 96 tests fail 'test_difflib.py' : TestDecl(False, UnknownTestModule), 'test_dircache.py' : TestDecl(True, UTModuleMainTest), @@ -333,19 +333,19 @@ 'test_doctest.py' : TestDecl(False, UnknownTestModule), 'test_doctest2.py' : TestDecl(True, UTModuleMainTest), 'test_dumbdbm.py' : TestDecl(False, UTModuleMainTest), - #5 of 7 tests fail + #rev 10840: 5 of 7 tests fail 'test_dummy_thread.py' : TestDecl(True, UTModuleMainTest), 'test_dummy_threading.py': TestDecl(False, UnknownTestModule), 'test_email.py' : TestDecl(False, UTModuleMainTest), - #Uncaught interp-level exception + #rev 10840: Uncaught interp-level exception 'test_email_codecs.py' : TestDecl(False, UnknownTestModule), 'test_enumerate.py' : TestDecl(False, UTModuleMainTest), - #fails because enumerate is a type in CPy: the test tries to subclass it + #rev 10840: fails because enumerate is a type in CPy: the test tries to subclass it 'test_eof.py' : TestDecl(False, UTModuleMainTest), - #some error strings differ slightly XXX + #rev 10840: some error strings differ slightly XXX 'test_errno.py' : TestDecl(False, UnknownTestModule), 'test_exceptions.py' : TestDecl(False, OutputTestModule), @@ -367,22 +367,22 @@ 'test_gc.py' : TestDecl(False, UnknownTestModule), 'test_gdbm.py' : TestDecl(False, UnknownTestModule), 'test_generators.py' : TestDecl(False, UTModuleMainTest), - #30 of 152 tests fail + #rev 10840: 30 of 152 tests fail 'test_getargs.py' : TestDecl(False, UnknownTestModule), 'test_getargs2.py' : TestDecl(False, UTModuleMainTest), - #ImportError: _testcapi + #rev 10840: ImportError: _testcapi 'test_getopt.py' : TestDecl(False, UnknownTestModule), 'test_gettext.py' : TestDecl(False, UTModuleMainTest), - #28 of 28 tests fail + #rev 10840: 28 of 28 tests fail 'test_gl.py' : TestDecl(False, UnknownTestModule), 'test_glob.py' : TestDecl(True, UTModuleMainTest), 'test_global.py' : TestDecl(False, OutputTestModule), 'test_grammar.py' : TestDecl(False, OutputTestModule), 'test_grp.py' : TestDecl(False, UTModuleMainTest), - #ImportError: grp + #rev 10840: ImportError: grp 'test_gzip.py' : TestDecl(False, UnknownTestModule), 'test_hash.py' : TestDecl(True, UTModuleMainTest), @@ -390,7 +390,7 @@ 'test_hexoct.py' : TestDecl(True, UTModuleMainTest), 'test_hmac.py' : TestDecl(True, UTModuleMainTest), 'test_hotshot.py' : TestDecl(False, UTModuleMainTest), - #ImportError: _hotshot + #rev 10840: ImportError: _hotshot 'test_htmllib.py' : TestDecl(True, UTModuleMainTest), 'test_htmlparser.py' : TestDecl(True, UTModuleMainTest), @@ -405,10 +405,10 @@ 'test_ioctl.py' : TestDecl(False, UTModuleMainTest), 'test_isinstance.py' : TestDecl(True, UTModuleMainTest), 'test_iter.py' : TestDecl(False, UTModuleMainTest), - #Uncaught interp-level exception: Same place as test_cfgparser + #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser 'test_itertools.py' : TestDecl(False, UTModuleMainTest), - #Alternate version in test2 + #rev 10840: Alternate version in test2 'test_largefile.py' : TestDecl(False, UnknownTestModule), 'test_linuxaudiodev.py' : TestDecl(False, OutputTestModule), @@ -446,7 +446,7 @@ 'test_os.py' : TestDecl(True, UTModuleMainTest), 'test_ossaudiodev.py' : TestDecl(False, OutputTestModule), 'test_parser.py' : TestDecl(True, UTModuleMainTest), - #18 of 18 tests fail + #rev 10840: 18 of 18 tests fail 'test_pep247.py' : TestDecl(False, UnknownTestModule), 'test_pep263.py' : TestDecl(False, UnknownTestModule), @@ -467,32 +467,32 @@ 'test_profilehooks.py' : TestDecl(True, UTModuleMainTest), 'test_pty.py' : TestDecl(False, OutputTestModule), 'test_pwd.py' : TestDecl(False, UTModuleMainTest), - #ImportError: pwd + #rev 10840: ImportError: pwd 'test_pyclbr.py' : TestDecl(False, UTModuleMainTest), 'test_pyexpat.py' : TestDecl(False, OutputTestModule), 'test_queue.py' : TestDecl(False, UnknownTestModule), 'test_quopri.py' : TestDecl(False, UTModuleMainTest), 'test_random.py' : TestDecl(False, UTModuleMainTest), - #Uncaught app-level exception: + #rev 10840: Uncaught app-level exception: #class WichmannHill_TestBasicOps(TestBasicOps): #File "test_random.py", line 125 in WichmannHill_TestBasicOps #gen = random.WichmannHill() #AttributeError: 'module' object has no attribute 'WichmannHill' 'test_re.py' : TestDecl(False, UTModuleMainTest), - #7 of 47 tests fail + #rev 10840: 7 of 47 tests fail 'test_regex.py' : TestDecl(False, OutputTestModule), 'test_repr.py' : TestDecl(False, UTModuleMainTest), - #6 of 12 tests fail. Always minor stuff like + #rev 10840: 6 of 12 tests fail. Always minor stuff like #'' != '' 'test_resource.py' : TestDecl(False, OutputTestModule), 'test_rfc822.py' : TestDecl(True, UTModuleMainTest), 'test_rgbimg.py' : TestDecl(False, OutputTestModule), 'test_richcmp.py' : TestDecl(False, UTModuleMainTest), - #1 of 11 test fails. The failing one had an infinite recursion. + #rev 10840: 1 of 11 test fails. The failing one had an infinite recursion. 'test_robotparser.py' : TestDecl(True, UTModuleMainTest), 'test_rotor.py' : TestDecl(False, OutputTestModule), @@ -509,25 +509,25 @@ 'test_signal.py' : TestDecl(False, OutputTestModule), 'test_slice.py' : TestDecl(False, UnknownTestModule), 'test_socket.py' : TestDecl(False, UTModuleMainTest), - #ImportError: thread + #rev 10840: ImportError: thread 'test_socket_ssl.py' : TestDecl(False, UTModuleMainTest), 'test_socketserver.py' : TestDecl(False, UTModuleMainTest), - #ImportError: thread + #rev 10840: ImportError: thread 'test_softspace.py' : TestDecl(False, UnknownTestModule), 'test_sort.py' : TestDecl(False, UnknownTestModule), 'test_str.py' : TestDecl(False, UTModuleMainTest), - #at least two tests fail, after several hours I gave up waiting for the rest + #rev 10840: at least two tests fail, after several hours I gave up waiting for the rest 'test_strftime.py' : TestDecl(False, UnknownTestModule), 'test_string.py' : TestDecl(True, UTModuleMainTest), 'test_stringprep.py' : TestDecl(False, UnknownTestModule), 'test_strop.py' : TestDecl(False, UTModuleMainTest), - #ImportError: strop + #rev 10840: ImportError: strop 'test_strptime.py' : TestDecl(False, UTModuleMainTest), - #1 of 42 test fails: seems to be some regex problem + #rev 10840: 1 of 42 test fails: seems to be some regex problem 'test_struct.py' : TestDecl(False, UnknownTestModule), 'test_structseq.py' : TestDecl(False, UnknownTestModule), @@ -538,29 +538,29 @@ 'test_syntax.py' : TestDecl(True, UTModuleMainTest), 'test_sys.py' : TestDecl(True, UTModuleMainTest), 'test_tarfile.py' : TestDecl(False, UTModuleMainTest), - #13 of 13 test fail + #rev 10840: 13 of 13 test fail 'test_tempfile.py' : TestDecl(False, UTModuleMainTest), - #Uncaught interp-level exception: Same place as test_cfgparser + #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser 'test_textwrap.py' : TestDecl(True, UTModuleMainTest), 'test_thread.py' : TestDecl(False, OutputTestModule), 'test_threaded_import.py': TestDecl(False, UTModuleMainTest), 'test_threadedtempfile.py': TestDecl(False, OutputTestModule), - #ImportError: thread + #rev 10840: ImportError: thread 'test_threading.py' : TestDecl(False, UnknownTestModule), - #ImportError: thread + #rev 10840: ImportError: thread 'test_time.py' : TestDecl(True, UTModuleMainTest), 'test_timeout.py' : TestDecl(False, UTModuleMainTest), - #Uncaught interp-level exception: Same place as test_cfgparser + #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser 'test_timing.py' : TestDecl(False, UnknownTestModule), 'test_tokenize.py' : TestDecl(False, OutputTestModule), 'test_trace.py' : TestDecl(True, UTModuleMainTest), 'test_traceback.py' : TestDecl(False, UTModuleMainTest), - #2 of 2 tests fail + #rev 10840: 2 of 2 tests fail 'test_types.py' : TestDecl(False, OutputTestModule), 'test_ucn.py' : TestDecl(False, UTModuleMainTest), @@ -571,41 +571,41 @@ 'test_univnewlines.py' : TestDecl(True, UTModuleMainTest), 'test_unpack.py' : TestDecl(False, UnknownTestModule), 'test_urllib.py' : TestDecl(True, UTModuleMainTest), - #10 of 10 tests fail + #rev 10840: 10 of 10 tests fail 'test_urllib2.py' : TestDecl(False, UnknownTestModule), 'test_urllibnet.py' : TestDecl(False, UTModuleMainTest), 'test_urlparse.py' : TestDecl(True, UTModuleMainTest), 'test_userdict.py' : TestDecl(True, UTModuleMainTest), - #5 of 25 tests fail + #rev 10840: 5 of 25 tests fail 'test_userlist.py' : TestDecl(False, UTModuleMainTest), - #at least two tests fail, after several hours I gave up waiting for the rest + #rev 10840: at least two tests fail, after several hours I gave up waiting for the rest 'test_userstring.py' : TestDecl(False, UTModuleMainTest), 'test_uu.py' : TestDecl(False, UTModuleMainTest), - #1 of 9 test fails + #rev 10840: 1 of 9 test fails 'test_warnings.py' : TestDecl(True, UTModuleMainTest), 'test_wave.py' : TestDecl(False, UnknownTestModule), 'test_weakref.py' : TestDecl(False, UTModuleMainTest), - #ImportError: _weakref + #rev 10840: ImportError: _weakref 'test_whichdb.py' : TestDecl(False, UTModuleMainTest), 'test_winreg.py' : TestDecl(False, OutputTestModule), 'test_winsound.py' : TestDecl(False, UTModuleMainTest), 'test_xmllib.py' : TestDecl(False, UTModuleMainTest), 'test_xmlrpc.py' : TestDecl(False, UTModuleMainTest), - #2 of 5 tests fail + #rev 10840: 2 of 5 tests fail 'test_xpickle.py' : TestDecl(False, UTModuleMainTest), 'test_xreadline.py' : TestDecl(False, OutputTestModule), 'test_zipfile.py' : TestDecl(False, UnknownTestModule), 'test_zipimport.py' : TestDecl(False, UTModuleMainTest), - #ImportError: zlib + #rev 10840: ImportError: zlib 'test_zlib.py' : TestDecl(False, UTModuleMainTest), - #ImportError: zlib + #rev 10840: ImportError: zlib } class RegrDirectory(py.test.collect.Directory): From hpk at codespeak.net Wed Apr 20 16:23:18 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 20 Apr 2005 16:23:18 +0200 (CEST) Subject: [pypy-svn] r10921 - in pypy/dist: lib-python-2.3.4/test pypy/lib/test2 Message-ID: <20050420142318.98F4F27B3D@code1.codespeak.net> Author: hpk Date: Wed Apr 20 16:23:18 2005 New Revision: 10921 Added: pypy/dist/pypy/lib/test2/test_types.py - copied, changed from r10917, pypy/dist/pypy/lib/test2/cpy_test_types.py Removed: pypy/dist/pypy/lib/test2/cpy_test_types.py Modified: pypy/dist/lib-python-2.3.4/test/conftest.py pypy/dist/pypy/lib/test2/conftest.py Log: now when you run test_sha.py and test_types from the lib-python-2.3.4/test directory you will actually run our slightly modified unit-tests. See the notes in the testmap. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 20 16:23:18 2005 @@ -1,5 +1,6 @@ import py import sys +import pypy from pypy.interpreter.gateway import ApplevelClass from pypy.interpreter.error import OperationError from pypy.tool import pytestsupport @@ -21,6 +22,7 @@ # help="just display the list of expected-to-pass tests.") mydir = py.magic.autopath().dirpath() +pypydir = py.path.local(pypy.__file__).dirpath() def make_module(space, dottedname, filepath): #print "making module", dottedname, "from", filepath @@ -91,6 +93,11 @@ # to get clean KeyboardInterrupt behaviour (while # running pypy we often get a wrapped # space.w_KeyboardInterrupt) + # + def __init__(self, fspath, parent, testdecl): + super(py.test.collect.Module, self).__init__(fspath, parent) + self.testdecl = testdecl + def tryiter(self, stopitems=()): try: for x in super(OpErrorModule, self).tryiter(stopitems): @@ -113,13 +120,17 @@ outputpath = self.fspath.dirpath('output', self.name) if not outputpath.check(): py.test.fail("expected outputfile at %s" %(outputpath,)) + if self.parent.testdecl.modified: + fspath = pypydir.join('lib', 'test2', self.fspath.basename) + else: + fspath = self.fspath # unmodified regrtest space = getmyspace() try: oldsysout = sys.stdout sys.stdout = capturesysout = py.std.cStringIO.StringIO() try: print self.fspath.purebasename - run_file(str(self.fspath), space=space) + run_file(str(fspath), space=space) finally: sys.stdout = oldsysout except OperationError, e: @@ -156,7 +167,11 @@ def get_testcases(self): name = self.fspath.purebasename space = self.space - w_mod = make_module(space, name, self.fspath) + if self.testdecl.modified: + fspath = pypydir.join('lib', 'test2', self.fspath.basename) + else: + fspath = self.fspath + w_mod = make_module(space, name, fspath) # hack out testcases space.appexec([w_mod, w_testlist], """ @@ -243,9 +258,10 @@ class TestDecl: """ Test Declaration. """ - def __init__(self, enabled, testclass): + def __init__(self, enabled, testclass, modified=False): self.enabled = enabled self.testclass = testclass + self.modified = modified testmap = { 'test_MimeWriter.py' : TestDecl(False, OutputTestModule), @@ -502,7 +518,8 @@ 'test_select.py' : TestDecl(False, UnknownTestModule), 'test_sets.py' : TestDecl(True, UTModuleMainTest), 'test_sgmllib.py' : TestDecl(True, UTModuleMainTest), - 'test_sha.py' : TestDecl(False, UTModuleMainTest), + 'test_sha.py' : TestDecl(True, UTModuleMainTest, modified=True), + # one test is taken out (too_slow_test_case_3), rest passses 'test_shelve.py' : TestDecl(True, UTModuleMainTest), 'test_shlex.py' : TestDecl(True, UTModuleMainTest), 'test_shutil.py' : TestDecl(True, UTModuleMainTest), @@ -562,7 +579,12 @@ 'test_traceback.py' : TestDecl(False, UTModuleMainTest), #rev 10840: 2 of 2 tests fail - 'test_types.py' : TestDecl(False, OutputTestModule), + 'test_types.py' : TestDecl(False, OutputTestModule, modified=True), + #rev 10920: fails with: + # E vereq(a[::], a) + # > (application-level) TypeError: an integer is required + # [/home/hpk/pypy-dist/pypy/lib/test2/test_types.py:217] + 'test_ucn.py' : TestDecl(False, UTModuleMainTest), 'test_unary.py' : TestDecl(True, UTModuleMainTest), 'test_unicode.py' : TestDecl(False, UTModuleMainTest), @@ -620,10 +642,12 @@ return l def join(self, name): - if name not in self.testmap: - raise NameError(name) - testdecl = self.testmap[name] - return testdecl.testclass(self.fspath.join(name), parent=self) + if name in self.testmap: + testdecl = self.testmap[name] + fspath = self.fspath.join(name) + return testdecl.testclass(fspath, parent=self, testdecl=testdecl) + else: + raise ValueError("no test type specified for %s" %(name,)) Directory = RegrDirectory Modified: pypy/dist/pypy/lib/test2/conftest.py ============================================================================== --- pypy/dist/pypy/lib/test2/conftest.py (original) +++ pypy/dist/pypy/lib/test2/conftest.py Wed Apr 20 16:23:18 2005 @@ -4,6 +4,8 @@ import pypy from pypy.conftest import gettestobjspace, option +# XXX do something for running doctests from regrtests! + ModuleType = type(sys) def make_cpy_module(dottedname, filepath, force=True): @@ -49,11 +51,13 @@ from test import test_support test_support.run_unittest = hack_run_unittest test_support.run_doctest = hack_run_doctest + return sys.modules['unittest'] class UTModuleOnCPython(py.test.collect.Module): - def __init__(self, fspath, parent): + def __init__(self, fspath, parent, testdecl): super(UTModuleOnCPython, self).__init__(fspath, parent) + self.testdecl = testdecl mod = hack_test_support_cpython() self.TestCaseClass = getattr(mod, 'TestCase') Deleted: /pypy/dist/pypy/lib/test2/cpy_test_types.py ============================================================================== --- /pypy/dist/pypy/lib/test2/cpy_test_types.py Wed Apr 20 16:23:18 2005 +++ (empty file) @@ -1,787 +0,0 @@ -# Python test set -- part 6, built-in types -# Slightly edited version for PyPy. - -from support_tests import * - -print '6. Built-in types' - -print '6.1 Truth value testing' -if None: raise TestFailed, 'None is true instead of false' -if 0: raise TestFailed, '0 is true instead of false' -if 0L: raise TestFailed, '0L is true instead of false' -if 0.0: raise TestFailed, '0.0 is true instead of false' -if '': raise TestFailed, '\'\' is true instead of false' -if (): raise TestFailed, '() is true instead of false' -if []: raise TestFailed, '[] is true instead of false' -if {}: raise TestFailed, '{} is true instead of false' -if not 1: raise TestFailed, '1 is false instead of true' -if not 1L: raise TestFailed, '1L is false instead of true' -if not 1.0: raise TestFailed, '1.0 is false instead of true' -if not 'x': raise TestFailed, '\'x\' is false instead of true' -if not (1, 1): raise TestFailed, '(1, 1) is false instead of true' -if not [1]: raise TestFailed, '[1] is false instead of true' -if not {'x': 1}: raise TestFailed, '{\'x\': 1} is false instead of true' -def f(): pass -class C: pass -import sys -x = C() -if not f: raise TestFailed, 'f is false instead of true' -if not C: raise TestFailed, 'C is false instead of true' -if not sys: raise TestFailed, 'sys is false instead of true' -if not x: raise TestFailed, 'x is false instead of true' - -print '6.2 Boolean operations' -if 0 or 0: raise TestFailed, '0 or 0 is true instead of false' -if 1 and 1: pass -else: raise TestFailed, '1 and 1 is false instead of false' -if not 1: raise TestFailed, 'not 1 is true instead of false' - -print '6.3 Comparisons' -if 0 < 1 <= 1 == 1 >= 1 > 0 != 1: pass -else: raise TestFailed, 'int comparisons failed' -if 0L < 1L <= 1L == 1L >= 1L > 0L != 1L: pass -else: raise TestFailed, 'long int comparisons failed' -if 0.0 < 1.0 <= 1.0 == 1.0 >= 1.0 > 0.0 != 1.0: pass -else: raise TestFailed, 'float comparisons failed' -if '' < 'a' <= 'a' == 'a' < 'abc' < 'abd' < 'b': pass -else: raise TestFailed, 'string comparisons failed' -if 0 in [0] and 0 not in [1]: pass -else: raise TestFailed, 'membership test failed' -if None is None and [] is not []: pass -else: raise TestFailed, 'identity test failed' - - -print '6.3.1 Conversion errors' -try: float('') -except ValueError: pass -else: raise TestFailed, "float('') didn't raise ValueError" - -try: float('5\0') -except ValueError: pass -else: raise TestFailed, "float('5\0') didn't raise ValueError" - -print '6.3.2 Division errors' -try: 5.0 / 0.0 -except ZeroDivisionError: pass -else: raise TestFailed, "5.0 / 0.0 didn't raise ZeroDivisionError" - -try: 5.0 // 0.0 -except ZeroDivisionError: pass -else: raise TestFailed, "5.0 // 0.0 didn't raise ZeroDivisionError" - -try: 5.0 % 0.0 -except ZeroDivisionError: pass -else: raise TestFailed, "5.0 % 0.0 didn't raise ZeroDivisionError" - -try: 5L / 0 -except ZeroDivisionError: pass -else: raise TestFailed, "5L / 0 didn't raise ZeroDivisionError" - -try: 5 / 0L -except ZeroDivisionError: pass -else: raise TestFailed, "5 / 0L didn't raise ZeroDivisionError" - -try: 5 // 0L -except ZeroDivisionError: pass -else: raise TestFailed, "5 // 0L didn't raise ZeroDivisionError" - -try: 5 % 0L -except ZeroDivisionError: pass -else: raise TestFailed, "5 % 0L didn't raise ZeroDivisionError" - -print '6.4 Numeric types (mostly conversions)' -if 0 != 0L or 0 != 0.0 or 0L != 0.0: raise TestFailed, 'mixed comparisons' -if 1 != 1L or 1 != 1.0 or 1L != 1.0: raise TestFailed, 'mixed comparisons' -if -1 != -1L or -1 != -1.0 or -1L != -1.0: - raise TestFailed, 'int/long/float value not equal' -# calling built-in types without argument must return 0 -if int() != 0: raise TestFailed, 'int() does not return 0' -if long() != 0L: raise TestFailed, 'long() does not return 0L' -if float() != 0.0: raise TestFailed, 'float() does not return 0.0' -if int(1.9) == 1 == int(1.1) and int(-1.1) == -1 == int(-1.9): pass -else: raise TestFailed, 'int() does not round properly' -if long(1.9) == 1L == long(1.1) and long(-1.1) == -1L == long(-1.9): pass -else: raise TestFailed, 'long() does not round properly' -if float(1) == 1.0 and float(-1) == -1.0 and float(0) == 0.0: pass -else: raise TestFailed, 'float() does not work properly' -print '6.4.1 32-bit integers' -if 12 + 24 != 36: raise TestFailed, 'int op' -if 12 + (-24) != -12: raise TestFailed, 'int op' -if (-12) + 24 != 12: raise TestFailed, 'int op' -if (-12) + (-24) != -36: raise TestFailed, 'int op' -if not 12 < 24: raise TestFailed, 'int op' -if not -24 < -12: raise TestFailed, 'int op' -# Test for a particular bug in integer multiply -xsize, ysize, zsize = 238, 356, 4 -if not (xsize*ysize*zsize == zsize*xsize*ysize == 338912): - raise TestFailed, 'int mul commutativity' -# And another. -m = -sys.maxint - 1 -for divisor in 1, 2, 4, 8, 16, 32: - j = m // divisor - prod = divisor * j - if prod != m: - raise TestFailed, "%r * %r == %r != %r" % (divisor, j, prod, m) - if type(prod) is not int: - raise TestFailed, ("expected type(prod) to be int, not %r" % - type(prod)) -# Check for expected * overflow to long. -for divisor in 1, 2, 4, 8, 16, 32: - j = m // divisor - 1 - prod = divisor * j - if type(prod) is not long: - raise TestFailed, ("expected type(%r) to be long, not %r" % - (prod, type(prod))) -# Check for expected * overflow to long. -m = sys.maxint -for divisor in 1, 2, 4, 8, 16, 32: - j = m // divisor + 1 - prod = divisor * j - if type(prod) is not long: - raise TestFailed, ("expected type(%r) to be long, not %r" % - (prod, type(prod))) - -print '6.4.2 Long integers' -if 12L + 24L != 36L: raise TestFailed, 'long op' -if 12L + (-24L) != -12L: raise TestFailed, 'long op' -if (-12L) + 24L != 12L: raise TestFailed, 'long op' -if (-12L) + (-24L) != -36L: raise TestFailed, 'long op' -if not 12L < 24L: raise TestFailed, 'long op' -if not -24L < -12L: raise TestFailed, 'long op' -x = sys.maxint -if int(long(x)) != x: raise TestFailed, 'long op' -try: y = int(long(x)+1L) -except OverflowError: raise TestFailed, 'long op' -if not isinstance(y, long): raise TestFailed, 'long op' -x = -x -if int(long(x)) != x: raise TestFailed, 'long op' -x = x-1 -if int(long(x)) != x: raise TestFailed, 'long op' -try: y = int(long(x)-1L) -except OverflowError: raise TestFailed, 'long op' -if not isinstance(y, long): raise TestFailed, 'long op' - -try: 5 << -5 -except ValueError: pass -else: raise TestFailed, 'int negative shift <<' - -try: 5L << -5L -except ValueError: pass -else: raise TestFailed, 'long negative shift <<' - -try: 5 >> -5 -except ValueError: pass -else: raise TestFailed, 'int negative shift >>' - -try: 5L >> -5L -except ValueError: pass -else: raise TestFailed, 'long negative shift >>' - -print '6.4.3 Floating point numbers' -if 12.0 + 24.0 != 36.0: raise TestFailed, 'float op' -if 12.0 + (-24.0) != -12.0: raise TestFailed, 'float op' -if (-12.0) + 24.0 != 12.0: raise TestFailed, 'float op' -if (-12.0) + (-24.0) != -36.0: raise TestFailed, 'float op' -if not 12.0 < 24.0: raise TestFailed, 'float op' -if not -24.0 < -12.0: raise TestFailed, 'float op' - -print '6.5 Sequence types' - -print '6.5.1 Strings' -if len('') != 0: raise TestFailed, 'len(\'\')' -if len('a') != 1: raise TestFailed, 'len(\'a\')' -if len('abcdef') != 6: raise TestFailed, 'len(\'abcdef\')' -if 'xyz' + 'abcde' != 'xyzabcde': raise TestFailed, 'string concatenation' -if 'xyz'*3 != 'xyzxyzxyz': raise TestFailed, 'string repetition *3' -if 0*'abcde' != '': raise TestFailed, 'string repetition 0*' -if min('abc') != 'a' or max('abc') != 'c': raise TestFailed, 'min/max string' -if 'a' in 'abc' and 'b' in 'abc' and 'c' in 'abc' and 'd' not in 'abc': pass -else: raise TestFailed, 'in/not in string' -x = 'x'*103 -if '%s!'%x != x+'!': raise TestFailed, 'nasty string formatting bug' - -#extended slices for strings -a = '0123456789' -vereq(a[::], a) -vereq(a[::2], '02468') -vereq(a[1::2], '13579') -vereq(a[::-1],'9876543210') -vereq(a[::-2], '97531') -vereq(a[3::-2], '31') -vereq(a[-100:100:], a) -vereq(a[100:-100:-1], a[::-1]) -vereq(a[-100L:100L:2L], '02468') - -if have_unicode: - a = unicode('0123456789', 'ascii') - vereq(a[::], a) - vereq(a[::2], unicode('02468', 'ascii')) - vereq(a[1::2], unicode('13579', 'ascii')) - vereq(a[::-1], unicode('9876543210', 'ascii')) - vereq(a[::-2], unicode('97531', 'ascii')) - vereq(a[3::-2], unicode('31', 'ascii')) - vereq(a[-100:100:], a) - vereq(a[100:-100:-1], a[::-1]) - vereq(a[-100L:100L:2L], unicode('02468', 'ascii')) - - -print '6.5.2 Tuples' -# calling built-in types without argument must return empty -if tuple() != (): raise TestFailed,'tuple() does not return ()' -if len(()) != 0: raise TestFailed, 'len(())' -if len((1,)) != 1: raise TestFailed, 'len((1,))' -if len((1,2,3,4,5,6)) != 6: raise TestFailed, 'len((1,2,3,4,5,6))' -if (1,2)+(3,4) != (1,2,3,4): raise TestFailed, 'tuple concatenation' -if (1,2)*3 != (1,2,1,2,1,2): raise TestFailed, 'tuple repetition *3' -if 0*(1,2,3) != (): raise TestFailed, 'tuple repetition 0*' -if min((1,2)) != 1 or max((1,2)) != 2: raise TestFailed, 'min/max tuple' -if 0 in (0,1,2) and 1 in (0,1,2) and 2 in (0,1,2) and 3 not in (0,1,2): pass -else: raise TestFailed, 'in/not in tuple' -try: ()[0] -except IndexError: pass -else: raise TestFailed, "tuple index error didn't raise IndexError" -x = () -x += () -if x != (): raise TestFailed, 'tuple inplace add from () to () failed' -x += (1,) -if x != (1,): raise TestFailed, 'tuple resize from () failed' - -# extended slicing - subscript only for tuples -a = (0,1,2,3,4) -vereq(a[::], a) -vereq(a[::2], (0,2,4)) -vereq(a[1::2], (1,3)) -vereq(a[::-1], (4,3,2,1,0)) -vereq(a[::-2], (4,2,0)) -vereq(a[3::-2], (3,1)) -vereq(a[-100:100:], a) -vereq(a[100:-100:-1], a[::-1]) -vereq(a[-100L:100L:2L], (0,2,4)) - -# Check that a specific bug in _PyTuple_Resize() is squashed. -def f(): - for i in range(1000): - yield i -vereq(list(tuple(f())), range(1000)) - -# Verify that __getitem__ overrides are not recognized by __iter__ -# XXX TODO: this fails with PyPy because overriding __getitem__ will -# really override what the sequence iterator returns -#class T(tuple): -# def __getitem__(self, key): -# return str(key) + '!!!' -#vereq(iter(T((1,2))).next(), 1) - -print '6.5.3 Lists' -# calling built-in types without argument must return empty -if list() != []: raise TestFailed,'list() does not return []' -if len([]) != 0: raise TestFailed, 'len([])' -if len([1,]) != 1: raise TestFailed, 'len([1,])' -if len([1,2,3,4,5,6]) != 6: raise TestFailed, 'len([1,2,3,4,5,6])' -if [1,2]+[3,4] != [1,2,3,4]: raise TestFailed, 'list concatenation' -if [1,2]*3 != [1,2,1,2,1,2]: raise TestFailed, 'list repetition *3' -if [1,2]*3L != [1,2,1,2,1,2]: raise TestFailed, 'list repetition *3L' -if 0*[1,2,3] != []: raise TestFailed, 'list repetition 0*' -if 0L*[1,2,3] != []: raise TestFailed, 'list repetition 0L*' -if min([1,2]) != 1 or max([1,2]) != 2: raise TestFailed, 'min/max list' -if 0 in [0,1,2] and 1 in [0,1,2] and 2 in [0,1,2] and 3 not in [0,1,2]: pass -else: raise TestFailed, 'in/not in list' -a = [1, 2, 3, 4, 5] -a[:-1] = a -if a != [1, 2, 3, 4, 5, 5]: - raise TestFailed, "list self-slice-assign (head)" -a = [1, 2, 3, 4, 5] -a[1:] = a -if a != [1, 1, 2, 3, 4, 5]: - raise TestFailed, "list self-slice-assign (tail)" -a = [1, 2, 3, 4, 5] -a[1:-1] = a -if a != [1, 1, 2, 3, 4, 5, 5]: - raise TestFailed, "list self-slice-assign (center)" -try: [][0] -except IndexError: pass -else: raise TestFailed, "list index error didn't raise IndexError" -try: [][0] = 5 -except IndexError: pass -else: raise TestFailed, "list assignment index error didn't raise IndexError" -try: [].pop() -except IndexError: pass -else: raise TestFailed, "empty list.pop() didn't raise IndexError" -try: [1].pop(5) -except IndexError: pass -else: raise TestFailed, "[1].pop(5) didn't raise IndexError" -try: [][0:1] = 5 -except TypeError: pass -else: raise TestFailed, "bad list slice assignment didn't raise TypeError" -try: [].extend(None) -except TypeError: pass -else: raise TestFailed, "list.extend(None) didn't raise TypeError" -a = [1, 2, 3, 4] -a *= 0 -if a != []: - raise TestFailed, "list inplace repeat" - -a = [] -a[:] = tuple(range(10)) -if a != range(10): - raise TestFailed, "assigning tuple to slice" - -print '6.5.3a Additional list operations' -a = [0,1,2,3,4] -a[0L] = 1 -a[1L] = 2 -a[2L] = 3 -if a != [1,2,3,3,4]: raise TestFailed, 'list item assignment [0L], [1L], [2L]' -a[0] = 5 -a[1] = 6 -a[2] = 7 -if a != [5,6,7,3,4]: raise TestFailed, 'list item assignment [0], [1], [2]' -a[-2L] = 88 -a[-1L] = 99 -if a != [5,6,7,88,99]: raise TestFailed, 'list item assignment [-2L], [-1L]' -a[-2] = 8 -a[-1] = 9 -if a != [5,6,7,8,9]: raise TestFailed, 'list item assignment [-2], [-1]' -a[:2] = [0,4] -a[-3:] = [] -a[1:1] = [1,2,3] -if a != [0,1,2,3,4]: raise TestFailed, 'list slice assignment' -a[ 1L : 4L] = [7,8,9] -if a != [0,7,8,9,4]: raise TestFailed, 'list slice assignment using long ints' -del a[1:4] -if a != [0,4]: raise TestFailed, 'list slice deletion' -del a[0] -if a != [4]: raise TestFailed, 'list item deletion [0]' -del a[-1] -if a != []: raise TestFailed, 'list item deletion [-1]' -a=range(0,5) -del a[1L:4L] -if a != [0,4]: raise TestFailed, 'list slice deletion' -del a[0L] -if a != [4]: raise TestFailed, 'list item deletion [0]' -del a[-1L] -if a != []: raise TestFailed, 'list item deletion [-1]' -a=[] -a.append(0) -a.append(1) -a.append(2) -if a != [0,1,2]: raise TestFailed, 'list append' -a.insert(0, -2) -a.insert(1, -1) -a.insert(2,0) -if a != [-2,-1,0,0,1,2]: raise TestFailed, 'list insert' -b = a[:] -b.insert(-2, "foo") -b.insert(-200, "left") -b.insert(200, "right") -if b != ["left",-2,-1,0,0,"foo",1,2,"right"]: raise TestFailed, 'list insert2' -# a = [-2,-1,0,0,1,2] -if a.count(0) != 2: raise TestFailed, ' list count' -if a.index(0) != 2: raise TestFailed, 'list index' -if a.index(0,2) != 2: raise TestFailed, 'list index, start argument' -if a.index(0,-4) != 2: raise TestFailed, 'list index, -start argument' -if a.index(-2,-10) != 0: raise TestFailed, 'list index, very -start argument' -if a.index(0,3) != 3: raise TestFailed, 'list index, start argument' -if a.index(0,-3) != 3: raise TestFailed, 'list index, -start argument' -if a.index(0,3,4) != 3: raise TestFailed, 'list index, stop argument' -if a.index(0,-3,-2) != 3: raise TestFailed, 'list index, -stop argument' -if a.index(0,-4*sys.maxint,4*sys.maxint) != 2: - raise TestFailed, 'list index, -maxint, maxint argument' -try: - a.index(0, 4*sys.maxint,-4*sys.maxint) -except ValueError: - pass -else: - raise TestFailed, 'list index, maxint,-maxint argument' - -try: - a.index(2,0,-10) -except ValueError: - pass -else: - raise TestFailed, 'list index, very -stop argument' -a.remove(0) -try: - a.index(2,0,4) -except ValueError: - pass -else: - raise TestFailed, 'list index, stop argument.' -if a != [-2,-1,0,1,2]: raise TestFailed, 'list remove' -a.reverse() -if a != [2,1,0,-1,-2]: raise TestFailed, 'list reverse' -a.sort() -if a != [-2,-1,0,1,2]: raise TestFailed, 'list sort' -def revcmp(a, b): return cmp(b, a) -a.sort(revcmp) -if a != [2,1,0,-1,-2]: raise TestFailed, 'list sort with cmp func' -# The following dumps core in unpatched Python 1.5: -def myComparison(x,y): - return cmp(x%3, y%7) -z = range(12) -z.sort(myComparison) - -try: z.sort(2) -except TypeError: pass -else: raise TestFailed, 'list sort compare function is not callable' - -''' XXX TODO: add detection of list modification during sort -def selfmodifyingComparison(x,y): - z.append(1) - return cmp(x, y) -try: z.sort(selfmodifyingComparison) -except ValueError: pass -else: raise TestFailed, 'modifying list during sort' -''' - -try: z.sort(lambda x, y: 's') -except TypeError: pass -else: raise TestFailed, 'list sort compare function does not return int' - -# Test extreme cases with long ints -a = [0,1,2,3,4] -if a[ -pow(2,128L): 3 ] != [0,1,2]: - raise TestFailed, "list slicing with too-small long integer" -if a[ 3: pow(2,145L) ] != [3,4]: - raise TestFailed, "list slicing with too-large long integer" - -# extended slicing - -# subscript -a = [0,1,2,3,4] -vereq(a[::], a) -vereq(a[::2], [0,2,4]) -vereq(a[1::2], [1,3]) -vereq(a[::-1], [4,3,2,1,0]) -vereq(a[::-2], [4,2,0]) -vereq(a[3::-2], [3,1]) -vereq(a[-100:100:], a) -vereq(a[100:-100:-1], a[::-1]) -vereq(a[-100L:100L:2L], [0,2,4]) -vereq(a[1000:2000:2], []) -vereq(a[-1000:-2000:-2], []) -# deletion -del a[::2] -vereq(a, [1,3]) -a = range(5) -del a[1::2] -vereq(a, [0,2,4]) -a = range(5) -del a[1::-2] -vereq(a, [0,2,3,4]) -a = range(10) -del a[::1000] -vereq(a, [1, 2, 3, 4, 5, 6, 7, 8, 9]) -# assignment -a = range(10) -a[::2] = [-1]*5 -vereq(a, [-1, 1, -1, 3, -1, 5, -1, 7, -1, 9]) -a = range(10) -a[::-4] = [10]*3 -vereq(a, [0, 10, 2, 3, 4, 10, 6, 7, 8 ,10]) -a = range(4) -a[::-1] = a -vereq(a, [3, 2, 1, 0]) -a = range(10) -b = a[:] -c = a[:] -a[2:3] = ["two", "elements"] -b[slice(2,3)] = ["two", "elements"] -c[2:3:] = ["two", "elements"] -vereq(a, b) -vereq(a, c) -a = range(10) -a[::2] = tuple(range(5)) -vereq(a, [0, 1, 1, 3, 2, 5, 3, 7, 4, 9]) - -# Verify that __getitem__ overrides are not recognized by __iter__ -# XXX TODO same as class T(tuple) above -#class L(list): -# def __getitem__(self, key): -# return str(key) + '!!!' -#vereq(iter(L([1,2])).next(), 1) - - -print '6.6 Mappings == Dictionaries' -# calling built-in types without argument must return empty -if dict() != {}: raise TestFailed,'dict() does not return {}' -d = {} -if d.keys() != []: raise TestFailed, '{}.keys()' -if d.values() != []: raise TestFailed, '{}.values()' -if d.items() != []: raise TestFailed, '{}.items()' -if d.has_key('a') != 0: raise TestFailed, '{}.has_key(\'a\')' -if ('a' in d) != 0: raise TestFailed, "'a' in {}" -if ('a' not in d) != 1: raise TestFailed, "'a' not in {}" -if len(d) != 0: raise TestFailed, 'len({})' -d = {'a': 1, 'b': 2} -if len(d) != 2: raise TestFailed, 'len(dict)' -k = d.keys() -k.sort() -if k != ['a', 'b']: raise TestFailed, 'dict keys()' -if d.has_key('a') and d.has_key('b') and not d.has_key('c'): pass -else: raise TestFailed, 'dict keys()' -if 'a' in d and 'b' in d and 'c' not in d: pass -else: raise TestFailed, 'dict keys() # in/not in version' -if d['a'] != 1 or d['b'] != 2: raise TestFailed, 'dict item' -d['c'] = 3 -d['a'] = 4 -if d['c'] != 3 or d['a'] != 4: raise TestFailed, 'dict item assignment' -del d['b'] -if d != {'a': 4, 'c': 3}: raise TestFailed, 'dict item deletion' -print '6.6.1 dict methods' -# dict.clear() -d = {1:1, 2:2, 3:3} -d.clear() -if d != {}: raise TestFailed, 'dict clear' -# dict.update() -d.update({1:100}) -d.update({2:20}) -d.update({1:1, 2:2, 3:3}) -if d != {1:1, 2:2, 3:3}: raise TestFailed, 'dict update' -d.clear() -try: d.update(None) -except AttributeError: pass -else: raise TestFailed, 'dict.update(None), AttributeError expected' -print '6.6.2 user-dict methods' -class SimpleUserDict: - def __init__(self): - self.d = {1:1, 2:2, 3:3} - def keys(self): - return self.d.keys() - def __getitem__(self, i): - return self.d[i] -d.update(SimpleUserDict()) -if d != {1:1, 2:2, 3:3}: raise TestFailed, 'dict.update(instance)' -d.clear() -class FailingUserDict: - def keys(self): - raise ValueError -try: d.update(FailingUserDict()) -except ValueError: pass -else: raise TestFailed, 'dict.keys() expected ValueError' -class FailingUserDict: - def keys(self): - class BogonIter: - def __iter__(self): - raise ValueError - return BogonIter() -try: d.update(FailingUserDict()) -except ValueError: pass -else: raise TestFailed, 'iter(dict.keys()) expected ValueError' -class FailingUserDict: - def keys(self): - class BogonIter: - def __init__(self): - self.i = 1 - def __iter__(self): - return self - def next(self): - if self.i: - self.i = 0 - return 'a' - raise ValueError - return BogonIter() - def __getitem__(self, key): - return key -try: d.update(FailingUserDict()) -except ValueError: pass -else: raise TestFailed, 'iter(dict.keys()).next() expected ValueError' -class FailingUserDict: - def keys(self): - class BogonIter: - def __init__(self): - self.i = ord('a') - def __iter__(self): - return self - def next(self): - if self.i <= ord('z'): - rtn = chr(self.i) - self.i += 1 - return rtn - raise StopIteration - return BogonIter() - def __getitem__(self, key): - raise ValueError -try: d.update(FailingUserDict()) -except ValueError: pass -else: raise TestFailed, 'dict.update(), __getitem__ expected ValueError' -print '6.6.3 dict.fromkeys' -# dict.fromkeys() -if dict.fromkeys('abc') != {'a':None, 'b':None, 'c':None}: - raise TestFailed, 'dict.fromkeys did not work as a class method' -d = {} -if d.fromkeys('abc') is d: - raise TestFailed, 'dict.fromkeys did not return a new dict' -if d.fromkeys('abc') != {'a':None, 'b':None, 'c':None}: - raise TestFailed, 'dict.fromkeys failed with default value' -if d.fromkeys((4,5),0) != {4:0, 5:0}: - raise TestFailed, 'dict.fromkeys failed with specified value' -if d.fromkeys([]) != {}: - raise TestFailed, 'dict.fromkeys failed with null sequence' -def g(): - yield 1 -if d.fromkeys(g()) != {1:None}: - raise TestFailed, 'dict.fromkeys failed with a generator' -try: {}.fromkeys(3) -except TypeError: pass -else: raise TestFailed, 'dict.fromkeys failed to raise TypeError' -class dictlike(dict): pass -if dictlike.fromkeys('a') != {'a':None}: - raise TestFailed, 'dictsubclass.fromkeys did not inherit' -if dictlike().fromkeys('a') != {'a':None}: - raise TestFailed, 'dictsubclass.fromkeys did not inherit' -if type(dictlike.fromkeys('a')) is not dictlike: - raise TestFailed, 'dictsubclass.fromkeys created wrong type' -if type(dictlike().fromkeys('a')) is not dictlike: - raise TestFailed, 'dictsubclass.fromkeys created wrong type' - -from UserDict import UserDict -class mydict(dict): - def __new__(cls): - return UserDict() -ud = mydict.fromkeys('ab') -if ud != {'a':None, 'b':None} or not isinstance(ud,UserDict): - raise TestFailed, 'fromkeys did not instantiate using __new__' - -print '6.6.4 dict copy, get, setdefault' - -# dict.copy() -d = {1:1, 2:2, 3:3} -if d.copy() != {1:1, 2:2, 3:3}: raise TestFailed, 'dict copy' -if {}.copy() != {}: raise TestFailed, 'empty dict copy' -# dict.get() -d = {} -if d.get('c') is not None: raise TestFailed, 'missing {} get, no 2nd arg' -if d.get('c', 3) != 3: raise TestFailed, 'missing {} get, w/ 2nd arg' -d = {'a' : 1, 'b' : 2} -if d.get('c') is not None: raise TestFailed, 'missing dict get, no 2nd arg' -if d.get('c', 3) != 3: raise TestFailed, 'missing dict get, w/ 2nd arg' -if d.get('a') != 1: raise TestFailed, 'present dict get, no 2nd arg' -if d.get('a', 3) != 1: raise TestFailed, 'present dict get, w/ 2nd arg' -# dict.setdefault() -d = {} -if d.setdefault('key0') is not None: - raise TestFailed, 'missing {} setdefault, no 2nd arg' -if d.setdefault('key0') is not None: - raise TestFailed, 'present {} setdefault, no 2nd arg' -d.setdefault('key', []).append(3) -if d['key'][0] != 3: - raise TestFailed, 'missing {} setdefault, w/ 2nd arg' -d.setdefault('key', []).append(4) -if len(d['key']) != 2: - raise TestFailed, 'present {} setdefault, w/ 2nd arg' - -print '6.6.5 dict popitem' - -# dict.popitem() -for copymode in -1, +1: - # -1: b has same structure as a - # +1: b is a.copy() - for log2size in range(4):#(12): - size = 2**log2size - a = {} - b = {} - for i in range(size): - a[`i`] = i - if copymode < 0: - b[`i`] = i - if copymode > 0: - b = a.copy() - for i in range(size): - ka, va = ta = a.popitem() - if va != int(ka): raise TestFailed, "a.popitem: %s" % str(ta) - kb, vb = tb = b.popitem() - if vb != int(kb): raise TestFailed, "b.popitem: %s" % str(tb) - if copymode < 0 and ta != tb: - raise TestFailed, "a.popitem != b.popitem: %s, %s" % ( - str(ta), str(tb)) - if a: raise TestFailed, 'a not empty after popitems: %s' % str(a) - if b: raise TestFailed, 'b not empty after popitems: %s' % str(b) - -d.clear() -try: d.popitem() -except KeyError: pass -else: raise TestFailed, "{}.popitem doesn't raise KeyError" - -print '6.6.6 dict pop' - -# Tests for pop with specified key -d.clear() -k, v = 'abc', 'def' -d[k] = v -try: d.pop('ghi') -except KeyError: pass -else: raise TestFailed, "{}.pop(k) doesn't raise KeyError when k not in dictionary" - -if d.pop(k) != v: raise TestFailed, "{}.pop(k) doesn't find known key/value pair" -if len(d) > 0: raise TestFailed, "{}.pop(k) failed to remove the specified pair" - -try: d.pop(k) -except KeyError: pass -else: raise TestFailed, "{}.pop(k) doesn't raise KeyError when dictionary is empty" - -# verify longs/ints get same value when key > 32 bits (for 64-bit archs) -# see SF bug #689659 -x = 4503599627370496L -y = 4503599627370496 -h = {x: 'anything', y: 'something else'} -if h[x] != h[y]: - raise TestFailed, "long/int key should match" - -if d.pop(k, v) != v: raise TestFailed, "{}.pop(k, v) doesn't return default value" -d[k] = v -if d.pop(k, 1) != v: raise TestFailed, "{}.pop(k, v) doesn't find known key/value pair" - -''' TODO: doesn't raise correctly -d[1] = 1 -try: - for i in d: - d[i+1] = 1 -except RuntimeError: - pass -else: - raise TestFailed, "changing dict size during iteration doesn't raise Error" -''' - -print '6.7 type' - -try: type(1, 2) -except TypeError: pass -else: raise TestFailed, 'type(), w/2 args expected TypeError' - -try: type(1, 2, 3, 4) -except TypeError: pass -else: raise TestFailed, 'type(), w/4 args expected TypeError' - -''' TODO: No buffer support yet XXX -print '6.8 buffer' - -try: buffer('asdf', -1) -except ValueError: pass -else: raise TestFailed, "buffer('asdf', -1) should raise ValueError" - -try: buffer(None) -except TypeError: pass -else: raise TestFailed, "buffer(None) should raise TypeError" - -a = buffer('asdf') -hash(a) -b = a * 5 -if a == b: - raise TestFailed, 'buffers should not be equal' -if str(b) != ('asdf' * 5): - raise TestFailed, 'repeated buffer has wrong content' -if str(a * 0) != '': - raise TestFailed, 'repeated buffer zero times has wrong content' -if str(a + buffer('def')) != 'asdfdef': - raise TestFailed, 'concatenation of buffers yields wrong content' - -try: a[1] = 'g' -except TypeError: pass -else: raise TestFailed, "buffer assignment should raise TypeError" - -try: a[0:1] = 'g' -except TypeError: pass -else: raise TestFailed, "buffer slice assignment should raise TypeError" -''' -print '6.99999999... All tests ran to completion' Copied: pypy/dist/pypy/lib/test2/test_types.py (from r10917, pypy/dist/pypy/lib/test2/cpy_test_types.py) ============================================================================== --- pypy/dist/pypy/lib/test2/cpy_test_types.py (original) +++ pypy/dist/pypy/lib/test2/test_types.py Wed Apr 20 16:23:18 2005 @@ -1,7 +1,7 @@ # Python test set -- part 6, built-in types # Slightly edited version for PyPy. -from support_tests import * +from test.test_support import * print '6. Built-in types' From arigo at codespeak.net Wed Apr 20 17:07:25 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 17:07:25 +0200 (CEST) Subject: [pypy-svn] r10922 - in pypy/branch/canonlyraise-pypy/translator: . test Message-ID: <20050420150725.20B2627B3E@code1.codespeak.net> Author: arigo Date: Wed Apr 20 17:07:24 2005 New Revision: 10922 Added: pypy/branch/canonlyraise-pypy/translator/test/test_annsimplifyrpython.py Modified: pypy/branch/canonlyraise-pypy/translator/annrpython.py pypy/branch/canonlyraise-pypy/translator/test/test_annrpython.py pypy/branch/canonlyraise-pypy/translator/transform.py Log: This version of CanOnlyRaise seems to work. Modified: pypy/branch/canonlyraise-pypy/translator/annrpython.py ============================================================================== --- pypy/branch/canonlyraise-pypy/translator/annrpython.py (original) +++ pypy/branch/canonlyraise-pypy/translator/annrpython.py Wed Apr 20 17:07:24 2005 @@ -229,7 +229,7 @@ # the function didn't reach any return statement so far. # (some functions actually never do, they always raise exceptions) # interrupt the annotation of the caller in a 'soft' way. - raise CanOnlyRaiseException + raise CanOnlyRaise def reflowfromposition(self, position_key): fn, block, index = position_key @@ -306,7 +306,7 @@ if annmodel.DEBUG: import sys self.why_not_annotated[block] = sys.exc_info() - except CanOnlyRaiseException: + except CanOnlyRaise: pass # end of the block not annotated, but it's not an error except Exception, e: # hack for debug tools only @@ -358,19 +358,32 @@ def flowin(self, fn, block): #print 'Flowing', block, [self.binding(a) for a in block.inputargs] - for i in range(len(block.operations)): - try: - self.bookkeeper.enter((fn, block, i)) - self.consider_op(block.operations[i]) - finally: - self.bookkeeper.leave() - # dead code removal: don't follow all exits if the exitswitch is known - exits = block.exits - if isinstance(block.exitswitch, Variable): - s_exitswitch = self.bindings[block.exitswitch] - if s_exitswitch.is_constant(): - exits = [link for link in exits - if link.exitcase == s_exitswitch.const] + i = -1 + try: + for i in range(len(block.operations)): + try: + self.bookkeeper.enter((fn, block, i)) + self.consider_op(block.operations[i]) + finally: + self.bookkeeper.leave() + except (BlockedInference, CanOnlyRaise): + if (i != len(block.operations)-1 or + block.exitswitch != Constant(last_exception)): + raise + # this is the case where the last operation of the block can + # only raise an exception, which is caught by an exception + # handler. we only follow the exceptional branches. + exits = [link for link in block.exits + if link.exitcase is not None] + else: + # dead code removal: don't follow all exits if the exitswitch + # is known + exits = block.exits + if isinstance(block.exitswitch, Variable): + s_exitswitch = self.bindings[block.exitswitch] + if s_exitswitch.is_constant(): + exits = [link for link in exits + if link.exitcase == s_exitswitch.const] knownvars, knownvarvalue = getattr(self.bindings.get(block.exitswitch), "knowntypedata", (None, None)) for link in exits: @@ -518,7 +531,7 @@ __str__ = __repr__ -class CanOnlyRaiseException(Exception): +class CanOnlyRaise(Exception): """A soft version of BlockedInference: the inference should not continue in the current block, but this not necessarily an error: if the current block never progresses past this point, then it means that the current Modified: pypy/branch/canonlyraise-pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/branch/canonlyraise-pypy/translator/test/test_annrpython.py (original) +++ pypy/branch/canonlyraise-pypy/translator/test/test_annrpython.py Wed Apr 20 17:07:24 2005 @@ -3,7 +3,7 @@ import py.test from pypy.tool.udir import udir -from pypy.translator.annrpython import RPythonAnnotator, annmodel +from pypy.translator.annrpython import annmodel from pypy.translator.translator import Translator from pypy.annotation.listdef import ListDef from pypy.annotation.dictdef import DictDef @@ -34,6 +34,8 @@ class TestAnnonateTestCase: objspacename = 'flow' + from pypy.translator.annrpython import RPythonAnnotator + def make_fun(self, func): import inspect try: @@ -64,7 +66,7 @@ fun = FunctionGraph("f", block) block.operations.append(op) block.closeblock(Link([result], fun.returnblock)) - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(fun, [int]) assert a.gettype(fun.getreturnvar()) == int @@ -91,7 +93,7 @@ whileblock.operations.append(decop) whileblock.closeblock(Link([i], headerblock)) - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(fun, [int]) assert a.gettype(fun.getreturnvar()) == int @@ -126,54 +128,54 @@ whileblock.operations.append(decop) whileblock.closeblock(Link([i, sum], headerblock)) - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(fun, [int]) assert a.gettype(fun.getreturnvar()) == int def test_f_calls_g(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f_calls_g, [int]) # result should be an integer assert s.knowntype == int def test_lists(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() end_cell = a.build_types(snippet.poor_man_rev_range, [int]) # result should be a list of integers assert listitem(end_cell).knowntype == int def test_factorial(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.factorial, [int]) # result should be an integer assert s.knowntype == int def test_factorial2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.factorial2, [int]) # result should be an integer assert s.knowntype == int def test_build_instance(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.build_instance, []) # result should be a snippet.C instance assert s.knowntype == snippet.C def test_set_attr(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.set_attr, []) # result should be an integer assert s.knowntype == int def test_merge_setattr(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.merge_setattr, [int]) # result should be an integer assert s.knowntype == int def test_inheritance1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.inheritance1, []) # result should be exactly: assert s == annmodel.SomeTuple([ @@ -182,7 +184,7 @@ ]) def test_inheritance2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet._inheritance_nonrunnable, []) # result should be exactly: assert s == annmodel.SomeTuple([ @@ -191,13 +193,13 @@ ]) def test_poor_man_range(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.poor_man_range, [int]) # result should be a list of integers assert listitem(s).knowntype == int def test_methodcall1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet._methodcall1, [int]) # result should be a tuple of (C, positive_int) assert s.knowntype == tuple @@ -207,7 +209,7 @@ assert s.items[1].nonneg == True def test_classes_methodcall1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(snippet._methodcall1, [int]) # the user classes should have the following attributes: classes = a.bookkeeper.userclasses @@ -219,31 +221,31 @@ def DISABLED_test_knownkeysdict(self): # disabled, SomeDict() is now a general {s_key: s_value} dict - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.knownkeysdict, [int]) # result should be an integer assert s.knowntype == int def test_generaldict(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.generaldict, [str, int, str, int]) # result should be an integer assert s.knowntype == int def test_somebug1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet._somebug1, [int]) # result should be a built-in method assert isinstance(s, annmodel.SomeBuiltin) def test_with_init(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.with_init, [int]) # result should be an integer assert s.knowntype == int def test_with_more_init(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.with_more_init, [int, bool]) # the user classes should have the following attributes: classes = a.bookkeeper.userclasses @@ -256,26 +258,26 @@ annmodel.SomeBool()) def test_global_instance(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.global_instance, []) # currently this returns the constant 42. # XXX not sure this is the best behavior... assert s == a.bookkeeper.immutablevalue(42) def test_call_five(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.call_five, []) # returns should be a list of constants (= 5) assert listitem(s) == a.bookkeeper.immutablevalue(5) def test_call_five_six(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.call_five_six, []) # returns should be a list of positive integers assert listitem(s) == annmodel.SomeInteger(nonneg=True) def test_constant_result(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.constant_result, []) #a.translator.simplify() # must return "yadda" @@ -292,12 +294,12 @@ #a.translator.view() def test_call_pbc(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.call_cpbc, []) assert s == a.bookkeeper.immutablevalue(42) def test_flow_type_info(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_type_info, [object]) a.translator.simplify() a.simplify() @@ -305,7 +307,7 @@ assert s.knowntype == int def test_flow_type_info_2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_type_info, [annmodel.SomeInteger(nonneg=True)]) # this checks that isinstance(i, int) didn't loose the @@ -313,19 +315,19 @@ assert s == annmodel.SomeInteger(nonneg=True) def test_flow_usertype_info(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_usertype_info, [object]) #a.translator.view() assert s.knowntype == snippet.WithInit def test_flow_usertype_info2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_usertype_info, [snippet.WithMoreInit]) #a.translator.view() assert s.knowntype == snippet.WithMoreInit def test_flow_identity_info(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_identity_info, [object, object]) a.translator.simplify() a.simplify() @@ -333,27 +335,27 @@ assert s == a.bookkeeper.immutablevalue((None, None)) def test_mergefunctions(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.mergefunctions, [int]) # the test is mostly that the above line hasn't blown up # but let's at least check *something* assert isinstance(s, annmodel.SomePBC) def test_func_calls_func_which_just_raises(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.funccallsex, []) # the test is mostly that the above line hasn't blown up # but let's at least check *something* #self.assert_(isinstance(s, SomeCallable)) def test_tuple_unpack_from_const_tuple_with_different_types(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.func_arg_unpack, []) assert isinstance(s, annmodel.SomeInteger) assert s.const == 3 def test_pbc_attr_preserved_on_instance(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.preserve_pbc_attr_on_instance, [bool]) #a.simplify() #a.translator.view() @@ -361,14 +363,14 @@ #self.assertEquals(s.__class__, annmodel.SomeInteger) def test_is_and_knowntype_data(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.is_and_knowntype, [bool]) #a.simplify() #a.translator.view() assert s == a.bookkeeper.immutablevalue(None) def test_isinstance_and_knowntype_data(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() x = annmodel.SomePBC({snippet.apbc: True}) s = a.build_types(snippet.isinstance_and_knowntype, [x]) #a.simplify() @@ -376,12 +378,12 @@ assert s == x def test_somepbc_simplify(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() # this example used to trigger an AssertionError a.build_types(snippet.somepbc_simplify, []) def test_builtin_methods(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() iv = a.bookkeeper.immutablevalue # this checks that some built-in methods are really supported by # the annotator (it doesn't check that they operate property, though) @@ -400,7 +402,7 @@ assert isinstance(s_constmeth, annmodel.SomeBuiltin) def test_simple_slicing0(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.simple_slice, [list]) g = a.translator.getflowgraph(snippet.simple_slice) for thing in flatten(g): @@ -411,23 +413,23 @@ annmodel.SomeSlice) def test_simple_slicing(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.simple_slice, [list]) assert isinstance(s, annmodel.SomeList) def test_simple_iter_list(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.simple_iter, [list]) assert isinstance(s, annmodel.SomeIterator) def test_simple_iter_dict(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() t = somedict(annmodel.SomeInteger(), annmodel.SomeInteger()) s = a.build_types(snippet.simple_iter, [t]) assert isinstance(s, annmodel.SomeIterator) def test_simple_zip(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() x = somelist(annmodel.SomeInteger()) y = somelist(annmodel.SomeString()) s = a.build_types(snippet.simple_zip, [x,y]) @@ -437,45 +439,45 @@ assert listitem(s).items[1].knowntype == str def test_dict_copy(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() t = somedict(annmodel.SomeInteger(), annmodel.SomeInteger()) s = a.build_types(snippet.dict_copy, [t]) assert isinstance(dictkey(s), annmodel.SomeInteger) assert isinstance(dictvalue(s), annmodel.SomeInteger) def test_dict_update(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_update, [int]) assert isinstance(dictkey(s), annmodel.SomeInteger) assert isinstance(dictvalue(s), annmodel.SomeInteger) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_update, [str]) assert not isinstance(dictkey(s), annmodel.SomeString) assert not isinstance(dictvalue(s), annmodel.SomeString) def test_dict_keys(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_keys, []) assert isinstance(listitem(s), annmodel.SomeString) def test_dict_keys2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_keys2, []) assert not isinstance(listitem(s), annmodel.SomeString) def test_dict_values(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_values, []) assert isinstance(listitem(s), annmodel.SomeString) def test_dict_values2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_values2, []) assert not isinstance(listitem(s), annmodel.SomeString) def test_dict_items(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_items, []) assert isinstance(listitem(s), annmodel.SomeTuple) s_key, s_value = listitem(s).items @@ -483,19 +485,19 @@ assert isinstance(s_value, annmodel.SomeInteger) def test_exception_deduction(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction, []) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc def test_exception_deduction_we_are_dumb(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction_we_are_dumb, []) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc def test_nested_exception_deduction(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.nested_exception_deduction, []) assert isinstance(s, annmodel.SomeTuple) assert isinstance(s.items[0], annmodel.SomeInstance) @@ -504,22 +506,33 @@ assert s.items[1].knowntype is snippet.Exc2 def test_exc_deduction_our_exc_plus_others(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exc_deduction_our_exc_plus_others, []) assert isinstance(s, annmodel.SomeInteger) def test_exc_deduction_our_excs_plus_others(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exc_deduction_our_excs_plus_others, []) assert isinstance(s, annmodel.SomeInteger) + def test_operation_always_raising(self): + def operation_always_raising(n): + lst = [] + try: + return lst[n] + except IndexError: + return 24 + a = self.RPythonAnnotator() + s = a.build_types(operation_always_raising, [int]) + assert s == a.bookkeeper.immutablevalue(24) + def test_slice_union(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.slice_union, [int]) assert isinstance(s, annmodel.SomeSlice) def test_bltin_code_frame_confusion(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(snippet.bltin_code_frame_confusion,[]) f_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_f) g_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_g) @@ -528,7 +541,7 @@ assert a.binding(g_flowgraph.getreturnvar()).__class__ is annmodel.SomeObject def test_bltin_code_frame_reorg(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(snippet.bltin_code_frame_reorg,[]) f_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_f) g_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_g) @@ -538,12 +551,12 @@ annmodel.SomeString) def test_propagation_of_fresh_instances_through_attrs(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.propagation_of_fresh_instances_through_attrs, [int]) assert s is not None def test_propagation_of_fresh_instances_through_attrs_rec_0(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.make_r, [int]) assert s.knowntype == snippet.R Rdef = a.getuserclasses()[snippet.R] @@ -553,7 +566,7 @@ def test_propagation_of_fresh_instances_through_attrs_rec_eo(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.make_eo, [int]) assert s.knowntype == snippet.B Even_def = a.getuserclasses()[snippet.Even] @@ -564,13 +577,13 @@ assert listitem(Odd_def.attrs['y'].s_value).knowntype == snippet.Odd def test_flow_rev_numbers(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_rev_numbers, []) assert s.knowntype == int assert not s.is_constant() # ! def test_methodcall_is_precise(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.methodcall_is_precise, []) classes = a.bookkeeper.userclasses assert 'x' not in classes[snippet.CBase].attrs @@ -581,26 +594,26 @@ assert s == a.bookkeeper.immutablevalue(42) def test_class_spec(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.class_spec, []) assert s.items[0].knowntype == int assert s.items[1].knowntype == str def test_exception_deduction_with_raise1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction_with_raise1, [bool]) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc def test_exception_deduction_with_raise2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction_with_raise2, [bool]) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc def test_exception_deduction_with_raise3(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction_with_raise3, [bool]) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc @@ -612,14 +625,14 @@ if type(x) is C: return x raise Exception - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [object]) assert s.knowntype is C def test_ann_assert(self): def assert_(x): assert x,"XXX" - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(assert_, []) assert s.const is None @@ -634,7 +647,7 @@ return 'y' else: return None - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [bool]) assert s.knowntype == str assert not s.can_be_None @@ -650,7 +663,7 @@ return e return None - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [list]) assert s.knowntype is LookupError @@ -669,7 +682,7 @@ record_exc(e) def ann_record_exc(s_e): return a.bookkeeper.immutablevalue(None) - a = RPythonAnnotator(overrides={record_exc: ann_record_exc}) + a = self.RPythonAnnotator(overrides={record_exc: ann_record_exc}) s = a.build_types(f, []) assert s.const is None @@ -682,12 +695,12 @@ self.called = True return self.flag myobj = Stuff(True) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(lambda: myobj, []) assert myobj.called assert s == annmodel.SomePBC({myobj: True}) myobj = Stuff(False) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(lambda: myobj, []) assert myobj.called assert s == annmodel.SomeInstance(a.bookkeeper.getclassdef(Stuff)) @@ -699,7 +712,7 @@ c.x = c def f(): return c.x - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert s.knowntype == C @@ -709,33 +722,33 @@ for i in range(n): lst = [lst] return lst - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [int]) assert listitem(s) == s def test_harmonic(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.harmonic, [int]) assert s.knowntype == float def test_bool(self): def f(a,b): return bool(a) or bool(b) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [int,list]) assert s.knowntype == bool def test_float(self): def f(n): return float(n) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [int]) assert s.knowntype == float def test_r_uint(self): def f(n): return n + constant_unsigned_five - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [r_uint]) assert s == annmodel.SomeInteger(nonneg = True, unsigned = True) @@ -766,7 +779,7 @@ f2(l2, c3) return l1,l2 - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(g,[]) l1, l2 = s.items assert listitem(l1).knowntype == int @@ -785,7 +798,7 @@ assert acc1.attrs == {'v1': True, 'v2': True} assert access_sets[c1] is acc1 - raises(KeyError, "access_sets[object()]") + py.test.raises(KeyError, "access_sets[object()]") def test_isinstance_usigned(self): from pypy.tool.rarithmetic import r_uint @@ -794,7 +807,7 @@ def g(): v = r_uint(1) return f(v) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(g, []) assert s.const == True @@ -817,7 +830,7 @@ c1 = alloc(C1) c2 = alloc(C2) return c1,c2 - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert s.items[0].knowntype == C1 assert s.items[1].knowntype == C2 @@ -831,7 +844,7 @@ def f(): l = [T()] return g(l) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert listitem(s).knowntype == T @@ -844,14 +857,14 @@ def f(): l = [T()] return g(l) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert listitem(s).knowntype == T def test_int_str_mul(self): def f(x,a,b): return a*x+x*b - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [str,int,int]) assert s.knowntype == str @@ -869,7 +882,7 @@ t = (2,) l3 = g1(t) return l1, l2, l3 - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [bool]) assert listitem(s.items[0]) == annmodel.SomeImpossibleValue() assert listitem(s.items[1]).knowntype == int @@ -885,11 +898,11 @@ l.append(1) return x, bool(l) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert s.const == False - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(g, []) assert s.items[0].knowntype == bool and not s.items[0].is_constant() @@ -905,11 +918,11 @@ d['a'] = 1 return x, bool(d) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert s.const == False - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(g, []) assert s.items[0].knowntype == bool and not s.items[0].is_constant() Added: pypy/branch/canonlyraise-pypy/translator/test/test_annsimplifyrpython.py ============================================================================== --- (empty file) +++ pypy/branch/canonlyraise-pypy/translator/test/test_annsimplifyrpython.py Wed Apr 20 17:07:24 2005 @@ -0,0 +1,13 @@ +import autopath +import pypy.translator.test.test_annrpython +parent = pypy.translator.test.test_annrpython.TestAnnonateTestCase + + +class TestAnnonateAndSimplifyTestCase(parent): + + class RPythonAnnotator(parent.RPythonAnnotator): + + def complete(self): + parent.RPythonAnnotator.complete(self) + if self.translator is not None: + self.simplify() Modified: pypy/branch/canonlyraise-pypy/translator/transform.py ============================================================================== --- pypy/branch/canonlyraise-pypy/translator/transform.py (original) +++ pypy/branch/canonlyraise-pypy/translator/transform.py Wed Apr 20 17:07:24 2005 @@ -10,6 +10,7 @@ import types from pypy.objspace.flow.model import SpaceOperation from pypy.objspace.flow.model import Variable, Constant, Block, Link +from pypy.objspace.flow.model import last_exception from pypy.translator.annrpython import CannotSimplify from pypy.annotation import model as annmodel @@ -262,39 +263,50 @@ lst = list(block.exits) lst.remove(link) block.exits = tuple(lst) - if len(block.exits) == 1: - block.exitswitch = None - block.exits[0].exitcase = None - elif len(block.exits) == 0: - # this is the CanOnlyRaiseException case. - # search the operation that cannot succeed - can_succeed = [op for op in block.operations - if op.result in self.bindings] - cannot_succeed = [op for op in block.operations - if op.result not in self.bindings] - n = len(can_succeed) - # check consistency - assert can_succeed == block.operations[:n] - assert cannot_succeed == block.operations[n:] - assert 0 <= n < len(block.operations) - # chop off the unreachable end of the block - del block.operations[n+1:] - s_none = annmodel.SomePBC({None: True}) - self.bindings[block.operations[n].result] = s_none - # insert the equivalent of 'raise SystemError' - # XXX no sane way to get the graph from the block! - fn = self.annotated[block] - assert fn in self.translator.flowgraphs, ( - "Cannot find the graph that this block belong to! " - "fn=%r" % (fn,)) - graph = self.translator.flowgraphs[fn] - c1 = Constant(SystemError) - c2 = Constant(SystemError( - "Call to %r should have raised an exception" % (fn,))) - errlink = Link([c1, c2], graph.exceptblock) - block.recloseblock(errlink) - # XXX do something about the annotation of the - # exceptblock.inputargs + if not block.exits: + # oups! cannot reach the end of this block + cutoff_alwaysraising_block(self, block) + elif block.exitswitch != Constant(last_exception): + # non-exceptional exit + if len(block.exits) == 1: + block.exitswitch = None + block.exits[0].exitcase = None + else: + # exceptional exit + if block.exits[0].exitcase is not None: + # killed the non-exceptional path! + cutoff_alwaysraising_block(self, block) + +def cutoff_alwaysraising_block(self, block): + "Fix a block whose end can never be reached at run-time." + # search the operation that cannot succeed + can_succeed = [op for op in block.operations + if op.result in self.bindings] + cannot_succeed = [op for op in block.operations + if op.result not in self.bindings] + n = len(can_succeed) + # check consistency + assert can_succeed == block.operations[:n] + assert cannot_succeed == block.operations[n:] + assert 0 <= n < len(block.operations) + # chop off the unreachable end of the block + del block.operations[n+1:] + s_impossible = annmodel.SomeImpossibleValue() + self.bindings[block.operations[n].result] = s_impossible + # insert the equivalent of 'raise SystemError' + # XXX no sane way to get the graph from the block! + fn = self.annotated[block] + assert fn in self.translator.flowgraphs, ( + "Cannot find the graph that this block belong to! " + "fn=%r" % (fn,)) + graph = self.translator.flowgraphs[fn] + c1 = Constant(SystemError) + c2 = Constant(SystemError( + "Call to %r should have raised an exception" % (fn,))) + errlink = Link([c1, c2], graph.exceptblock) + block.recloseblock(errlink) + # XXX do something about the annotation of the + # exceptblock.inputargs def transform_graph(ann): From arigo at codespeak.net Wed Apr 20 17:23:50 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 17:23:50 +0200 (CEST) Subject: [pypy-svn] r10923 - pypy/branch/canonlyraise-pypy/objspace/flow Message-ID: <20050420152350.14DA627B40@code1.codespeak.net> Author: arigo Date: Wed Apr 20 17:23:49 2005 New Revision: 10923 Modified: pypy/branch/canonlyraise-pypy/objspace/flow/model.py Log: More precise checkgraph(), looking for badly placed last_exception and last_exc_value. Modified: pypy/branch/canonlyraise-pypy/objspace/flow/model.py ============================================================================== --- pypy/branch/canonlyraise-pypy/objspace/flow/model.py (original) +++ pypy/branch/canonlyraise-pypy/objspace/flow/model.py Wed Apr 20 17:23:49 2005 @@ -332,6 +332,10 @@ assert isinstance(v, (Constant, Variable)) if isinstance(v, Variable): assert v in vars + else: + assert v.value != last_exception + assert v.value != last_exc_value + exc_links = {} if block.exitswitch is None: assert len(block.exits) <= 1 if block.exits: @@ -342,16 +346,24 @@ assert block.exits[0].exitcase is None for link in block.exits[1:]: assert issubclass(link.exitcase, Exception) + exc_links[link] = True else: assert isinstance(block.exitswitch, Variable) assert block.exitswitch in vars for link in block.exits: assert len(link.args) == len(link.target.inputargs) assert link.prevblock is block + exc_link = link in exc_links for v in link.args: assert isinstance(v, (Constant, Variable)) if isinstance(v, Variable): assert v in vars + if exc_link: + assert v != block.operations[-1].result + else: + if not exc_link: + assert v.value != last_exception + assert v.value != last_exc_value vars_previous_blocks.update(vars) try: From arigo at codespeak.net Wed Apr 20 17:30:16 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 17:30:16 +0200 (CEST) Subject: [pypy-svn] r10924 - pypy/branch/canonlyraise-pypy/translator/test Message-ID: <20050420153016.08DDE27B3E@code1.codespeak.net> Author: arigo Date: Wed Apr 20 17:30:15 2005 New Revision: 10924 Modified: pypy/branch/canonlyraise-pypy/translator/test/test_annsimplifyrpython.py Log: Docstring. Modified: pypy/branch/canonlyraise-pypy/translator/test/test_annsimplifyrpython.py ============================================================================== --- pypy/branch/canonlyraise-pypy/translator/test/test_annsimplifyrpython.py (original) +++ pypy/branch/canonlyraise-pypy/translator/test/test_annsimplifyrpython.py Wed Apr 20 17:30:15 2005 @@ -4,9 +4,11 @@ class TestAnnonateAndSimplifyTestCase(parent): + """Same tests as test_annrpython.TestAnnotateTestCase, but automatically + running the simplify() method of the annotator after the annotation phase. + """ class RPythonAnnotator(parent.RPythonAnnotator): - def complete(self): parent.RPythonAnnotator.complete(self) if self.translator is not None: From arigo at codespeak.net Wed Apr 20 17:53:43 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 17:53:43 +0200 (CEST) Subject: [pypy-svn] r10926 - in pypy/dist/pypy: annotation objspace/flow translator translator/test Message-ID: <20050420155343.E883627B3E@code1.codespeak.net> Author: arigo Date: Wed Apr 20 17:53:43 2005 New Revision: 10926 Added: pypy/dist/pypy/translator/test/test_annsimplifyrpython.py - copied unchanged from r10925, pypy/branch/canonlyraise-pypy/translator/test/test_annsimplifyrpython.py Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/model.py pypy/dist/pypy/objspace/flow/model.py pypy/dist/pypy/translator/ann_override.py pypy/dist/pypy/translator/annrpython.py pypy/dist/pypy/translator/test/test_annrpython.py pypy/dist/pypy/translator/transform.py Log: Merge of a small branch cleaning up what occurs with operations and functions that never return but always raise exceptions: - SomeImpossibleValue(benign=True) is gone. - a new exception CanOnlyRaise is introduced, similar to BlockedInference but not signalling an error. It merely indicates that the current operation (or called function) always raises. - a new test showing the problem. - tranform.py is more subtle about cutting off dead branches which, in this situation, can be the last non-exceptional links out of a block. - test_annrpython duplicated: the copy test_annsimplifyrpython also calls transform.py to check the simplification going on there. Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Wed Apr 20 17:53:43 2005 @@ -382,10 +382,6 @@ result = SomePBC(d) return result -class __extend__(pairtype(SomeImpossibleValue, SomeImpossibleValue)): - def union((imp1, imp2)): - return SomeImpossibleValue(benign=imp1.benign and imp2.benign) - class __extend__(pairtype(SomeImpossibleValue, SomeObject)): def union((imp1, obj2)): return obj2 Modified: pypy/dist/pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/dist/pypy/annotation/model.py Wed Apr 20 17:53:43 2005 @@ -253,13 +253,11 @@ class SomeImpossibleValue(SomeObject): """The empty set. Instances are placeholders for objects that will never show up at run-time, e.g. elements of an empty list.""" - def __init__(self, benign=False): - self.benign = benign def unionof(*somevalues): "The most precise SomeValue instance that contains all the values." - s1 = SomeImpossibleValue(benign=len(somevalues)>0) + s1 = SomeImpossibleValue() for s2 in somevalues: if s1 != s2: s1 = pair(s1, s2).union() Modified: pypy/dist/pypy/objspace/flow/model.py ============================================================================== --- pypy/dist/pypy/objspace/flow/model.py (original) +++ pypy/dist/pypy/objspace/flow/model.py Wed Apr 20 17:53:43 2005 @@ -26,21 +26,21 @@ def getreturnvar(self): return self.returnblock.inputargs[0] - def hasonlyexceptionreturns(self): - try: - return self._onlyex - except AttributeError: - def visit(link): - if isinstance(link, Link): - if link.target == self.returnblock: - raise ValueError(link) - try: - traverse(visit, self) - except ValueError: - self._onlyex = False - else: - self._onlyex = True - return self._onlyex +## def hasonlyexceptionreturns(self): +## try: +## return self._onlyex +## except AttributeError: +## def visit(link): +## if isinstance(link, Link): +## if link.target == self.returnblock: +## raise ValueError(link) +## try: +## traverse(visit, self) +## except ValueError: +## self._onlyex = False +## else: +## self._onlyex = True +## return self._onlyex def show(self): from pypy.translator.tool.graphpage import SingleGraphPage @@ -332,6 +332,10 @@ assert isinstance(v, (Constant, Variable)) if isinstance(v, Variable): assert v in vars + else: + assert v.value != last_exception + assert v.value != last_exc_value + exc_links = {} if block.exitswitch is None: assert len(block.exits) <= 1 if block.exits: @@ -342,16 +346,24 @@ assert block.exits[0].exitcase is None for link in block.exits[1:]: assert issubclass(link.exitcase, Exception) + exc_links[link] = True else: assert isinstance(block.exitswitch, Variable) assert block.exitswitch in vars for link in block.exits: assert len(link.args) == len(link.target.inputargs) assert link.prevblock is block + exc_link = link in exc_links for v in link.args: assert isinstance(v, (Constant, Variable)) if isinstance(v, Variable): assert v in vars + if exc_link: + assert v != block.operations[-1].result + else: + if not exc_link: + assert v.value != last_exception + assert v.value != last_exc_value vars_previous_blocks.update(vars) try: Modified: pypy/dist/pypy/translator/ann_override.py ============================================================================== --- pypy/dist/pypy/translator/ann_override.py (original) +++ pypy/dist/pypy/translator/ann_override.py Wed Apr 20 17:53:43 2005 @@ -10,7 +10,7 @@ from pypy.objspace.std.objspace import StdObjSpace def hole(*args): - return annmodel.SomeImpossibleValue(benign=True) + pass # no result (similar to setattr and setitem) def ignore(*args): bk = getbookkeeper() Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Wed Apr 20 17:53:43 2005 @@ -226,13 +226,10 @@ try: return self.bindings[v] except KeyError: - # let's see if the graph only has exception returns - if graph.hasonlyexceptionreturns(): - # XXX for functions with exceptions what to - # do anyway? - #return self.bookkeeper.immutablevalue(None) - return annmodel.SomeImpossibleValue(benign=True) - return annmodel.SomeImpossibleValue() + # the function didn't reach any return statement so far. + # (some functions actually never do, they always raise exceptions) + # interrupt the annotation of the caller in a 'soft' way. + raise CanOnlyRaise def reflowfromposition(self, position_key): fn, block, index = position_key @@ -309,6 +306,8 @@ if annmodel.DEBUG: import sys self.why_not_annotated[block] = sys.exc_info() + except CanOnlyRaise: + pass # end of the block not annotated, but it's not an error except Exception, e: # hack for debug tools only if not hasattr(e, '__annotator_block'): @@ -359,19 +358,32 @@ def flowin(self, fn, block): #print 'Flowing', block, [self.binding(a) for a in block.inputargs] - for i in range(len(block.operations)): - try: - self.bookkeeper.enter((fn, block, i)) - self.consider_op(block.operations[i]) - finally: - self.bookkeeper.leave() - # dead code removal: don't follow all exits if the exitswitch is known - exits = block.exits - if isinstance(block.exitswitch, Variable): - s_exitswitch = self.bindings[block.exitswitch] - if s_exitswitch.is_constant(): - exits = [link for link in exits - if link.exitcase == s_exitswitch.const] + i = -1 + try: + for i in range(len(block.operations)): + try: + self.bookkeeper.enter((fn, block, i)) + self.consider_op(block.operations[i]) + finally: + self.bookkeeper.leave() + except (BlockedInference, CanOnlyRaise): + if (i != len(block.operations)-1 or + block.exitswitch != Constant(last_exception)): + raise + # this is the case where the last operation of the block can + # only raise an exception, which is caught by an exception + # handler. we only follow the exceptional branches. + exits = [link for link in block.exits + if link.exitcase is not None] + else: + # dead code removal: don't follow all exits if the exitswitch + # is known + exits = block.exits + if isinstance(block.exitswitch, Variable): + s_exitswitch = self.bindings[block.exitswitch] + if s_exitswitch.is_constant(): + exits = [link for link in exits + if link.exitcase == s_exitswitch.const] knownvars, knownvarvalue = getattr(self.bindings.get(block.exitswitch), "knowntypedata", (None, None)) for link in exits: @@ -430,14 +442,12 @@ argcells = [self.binding(a) for a in op.args] consider_meth = getattr(self,'consider_op_'+op.opname, self.default_consider_op) - # because benign SomeImpossibleValues are meant to propagate without leaving - # dangling blocked blocks around, and because of the None case below, # let's be careful about avoiding propagated SomeImpossibleValues # to enter an op; the latter can result in violations of the # more general results invariant: e.g. if SomeImpossibleValue enters is_ # is_(SomeImpossibleValue, None) -> SomeBool # is_(SomeInstance(not None), None) -> SomeBool(const=False) ... - # boom + # boom -- in the assert of setbinding() for arg in argcells: if isinstance(arg, annmodel.SomeImpossibleValue): raise BlockedInference(self, info=op) @@ -519,3 +529,10 @@ return "" %(break_at, info) __str__ = __repr__ + + +class CanOnlyRaise(Exception): + """A soft version of BlockedInference: the inference should not continue + in the current block, but this not necessarily an error: if the current + block never progresses past this point, then it means that the current + operation will always raise an exception at run-time.""" Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Wed Apr 20 17:53:43 2005 @@ -3,7 +3,7 @@ import py.test from pypy.tool.udir import udir -from pypy.translator.annrpython import RPythonAnnotator, annmodel +from pypy.translator.annrpython import annmodel from pypy.translator.translator import Translator from pypy.annotation.listdef import ListDef from pypy.annotation.dictdef import DictDef @@ -34,6 +34,8 @@ class TestAnnonateTestCase: objspacename = 'flow' + from pypy.translator.annrpython import RPythonAnnotator + def make_fun(self, func): import inspect try: @@ -64,7 +66,7 @@ fun = FunctionGraph("f", block) block.operations.append(op) block.closeblock(Link([result], fun.returnblock)) - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(fun, [int]) assert a.gettype(fun.getreturnvar()) == int @@ -91,7 +93,7 @@ whileblock.operations.append(decop) whileblock.closeblock(Link([i], headerblock)) - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(fun, [int]) assert a.gettype(fun.getreturnvar()) == int @@ -126,54 +128,54 @@ whileblock.operations.append(decop) whileblock.closeblock(Link([i, sum], headerblock)) - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(fun, [int]) assert a.gettype(fun.getreturnvar()) == int def test_f_calls_g(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f_calls_g, [int]) # result should be an integer assert s.knowntype == int def test_lists(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() end_cell = a.build_types(snippet.poor_man_rev_range, [int]) # result should be a list of integers assert listitem(end_cell).knowntype == int def test_factorial(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.factorial, [int]) # result should be an integer assert s.knowntype == int def test_factorial2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.factorial2, [int]) # result should be an integer assert s.knowntype == int def test_build_instance(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.build_instance, []) # result should be a snippet.C instance assert s.knowntype == snippet.C def test_set_attr(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.set_attr, []) # result should be an integer assert s.knowntype == int def test_merge_setattr(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.merge_setattr, [int]) # result should be an integer assert s.knowntype == int def test_inheritance1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.inheritance1, []) # result should be exactly: assert s == annmodel.SomeTuple([ @@ -182,7 +184,7 @@ ]) def test_inheritance2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet._inheritance_nonrunnable, []) # result should be exactly: assert s == annmodel.SomeTuple([ @@ -191,13 +193,13 @@ ]) def test_poor_man_range(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.poor_man_range, [int]) # result should be a list of integers assert listitem(s).knowntype == int def test_methodcall1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet._methodcall1, [int]) # result should be a tuple of (C, positive_int) assert s.knowntype == tuple @@ -207,7 +209,7 @@ assert s.items[1].nonneg == True def test_classes_methodcall1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(snippet._methodcall1, [int]) # the user classes should have the following attributes: classes = a.bookkeeper.userclasses @@ -219,31 +221,31 @@ def DISABLED_test_knownkeysdict(self): # disabled, SomeDict() is now a general {s_key: s_value} dict - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.knownkeysdict, [int]) # result should be an integer assert s.knowntype == int def test_generaldict(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.generaldict, [str, int, str, int]) # result should be an integer assert s.knowntype == int def test_somebug1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet._somebug1, [int]) # result should be a built-in method assert isinstance(s, annmodel.SomeBuiltin) def test_with_init(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.with_init, [int]) # result should be an integer assert s.knowntype == int def test_with_more_init(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.with_more_init, [int, bool]) # the user classes should have the following attributes: classes = a.bookkeeper.userclasses @@ -256,26 +258,26 @@ annmodel.SomeBool()) def test_global_instance(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.global_instance, []) # currently this returns the constant 42. # XXX not sure this is the best behavior... assert s == a.bookkeeper.immutablevalue(42) def test_call_five(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.call_five, []) # returns should be a list of constants (= 5) assert listitem(s) == a.bookkeeper.immutablevalue(5) def test_call_five_six(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.call_five_six, []) # returns should be a list of positive integers assert listitem(s) == annmodel.SomeInteger(nonneg=True) def test_constant_result(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.constant_result, []) #a.translator.simplify() # must return "yadda" @@ -292,12 +294,12 @@ #a.translator.view() def test_call_pbc(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.call_cpbc, []) assert s == a.bookkeeper.immutablevalue(42) def test_flow_type_info(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_type_info, [object]) a.translator.simplify() a.simplify() @@ -305,7 +307,7 @@ assert s.knowntype == int def test_flow_type_info_2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_type_info, [annmodel.SomeInteger(nonneg=True)]) # this checks that isinstance(i, int) didn't loose the @@ -313,19 +315,19 @@ assert s == annmodel.SomeInteger(nonneg=True) def test_flow_usertype_info(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_usertype_info, [object]) #a.translator.view() assert s.knowntype == snippet.WithInit def test_flow_usertype_info2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_usertype_info, [snippet.WithMoreInit]) #a.translator.view() assert s.knowntype == snippet.WithMoreInit def test_flow_identity_info(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_identity_info, [object, object]) a.translator.simplify() a.simplify() @@ -333,27 +335,27 @@ assert s == a.bookkeeper.immutablevalue((None, None)) def test_mergefunctions(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.mergefunctions, [int]) # the test is mostly that the above line hasn't blown up # but let's at least check *something* assert isinstance(s, annmodel.SomePBC) def test_func_calls_func_which_just_raises(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.funccallsex, []) # the test is mostly that the above line hasn't blown up # but let's at least check *something* #self.assert_(isinstance(s, SomeCallable)) def test_tuple_unpack_from_const_tuple_with_different_types(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.func_arg_unpack, []) assert isinstance(s, annmodel.SomeInteger) assert s.const == 3 def test_pbc_attr_preserved_on_instance(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.preserve_pbc_attr_on_instance, [bool]) #a.simplify() #a.translator.view() @@ -361,14 +363,14 @@ #self.assertEquals(s.__class__, annmodel.SomeInteger) def test_is_and_knowntype_data(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.is_and_knowntype, [bool]) #a.simplify() #a.translator.view() assert s == a.bookkeeper.immutablevalue(None) def test_isinstance_and_knowntype_data(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() x = annmodel.SomePBC({snippet.apbc: True}) s = a.build_types(snippet.isinstance_and_knowntype, [x]) #a.simplify() @@ -376,12 +378,12 @@ assert s == x def test_somepbc_simplify(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() # this example used to trigger an AssertionError a.build_types(snippet.somepbc_simplify, []) def test_builtin_methods(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() iv = a.bookkeeper.immutablevalue # this checks that some built-in methods are really supported by # the annotator (it doesn't check that they operate property, though) @@ -400,7 +402,7 @@ assert isinstance(s_constmeth, annmodel.SomeBuiltin) def test_simple_slicing0(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.simple_slice, [list]) g = a.translator.getflowgraph(snippet.simple_slice) for thing in flatten(g): @@ -411,23 +413,23 @@ annmodel.SomeSlice) def test_simple_slicing(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.simple_slice, [list]) assert isinstance(s, annmodel.SomeList) def test_simple_iter_list(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.simple_iter, [list]) assert isinstance(s, annmodel.SomeIterator) def test_simple_iter_dict(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() t = somedict(annmodel.SomeInteger(), annmodel.SomeInteger()) s = a.build_types(snippet.simple_iter, [t]) assert isinstance(s, annmodel.SomeIterator) def test_simple_zip(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() x = somelist(annmodel.SomeInteger()) y = somelist(annmodel.SomeString()) s = a.build_types(snippet.simple_zip, [x,y]) @@ -437,45 +439,45 @@ assert listitem(s).items[1].knowntype == str def test_dict_copy(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() t = somedict(annmodel.SomeInteger(), annmodel.SomeInteger()) s = a.build_types(snippet.dict_copy, [t]) assert isinstance(dictkey(s), annmodel.SomeInteger) assert isinstance(dictvalue(s), annmodel.SomeInteger) def test_dict_update(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_update, [int]) assert isinstance(dictkey(s), annmodel.SomeInteger) assert isinstance(dictvalue(s), annmodel.SomeInteger) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_update, [str]) assert not isinstance(dictkey(s), annmodel.SomeString) assert not isinstance(dictvalue(s), annmodel.SomeString) def test_dict_keys(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_keys, []) assert isinstance(listitem(s), annmodel.SomeString) def test_dict_keys2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_keys2, []) assert not isinstance(listitem(s), annmodel.SomeString) def test_dict_values(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_values, []) assert isinstance(listitem(s), annmodel.SomeString) def test_dict_values2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_values2, []) assert not isinstance(listitem(s), annmodel.SomeString) def test_dict_items(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.dict_items, []) assert isinstance(listitem(s), annmodel.SomeTuple) s_key, s_value = listitem(s).items @@ -483,19 +485,19 @@ assert isinstance(s_value, annmodel.SomeInteger) def test_exception_deduction(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction, []) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc def test_exception_deduction_we_are_dumb(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction_we_are_dumb, []) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc def test_nested_exception_deduction(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.nested_exception_deduction, []) assert isinstance(s, annmodel.SomeTuple) assert isinstance(s.items[0], annmodel.SomeInstance) @@ -504,22 +506,33 @@ assert s.items[1].knowntype is snippet.Exc2 def test_exc_deduction_our_exc_plus_others(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exc_deduction_our_exc_plus_others, []) assert isinstance(s, annmodel.SomeInteger) def test_exc_deduction_our_excs_plus_others(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exc_deduction_our_excs_plus_others, []) assert isinstance(s, annmodel.SomeInteger) + def test_operation_always_raising(self): + def operation_always_raising(n): + lst = [] + try: + return lst[n] + except IndexError: + return 24 + a = self.RPythonAnnotator() + s = a.build_types(operation_always_raising, [int]) + assert s == a.bookkeeper.immutablevalue(24) + def test_slice_union(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.slice_union, [int]) assert isinstance(s, annmodel.SomeSlice) def test_bltin_code_frame_confusion(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(snippet.bltin_code_frame_confusion,[]) f_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_f) g_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_g) @@ -528,7 +541,7 @@ assert a.binding(g_flowgraph.getreturnvar()).__class__ is annmodel.SomeObject def test_bltin_code_frame_reorg(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() a.build_types(snippet.bltin_code_frame_reorg,[]) f_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_f) g_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_g) @@ -538,12 +551,12 @@ annmodel.SomeString) def test_propagation_of_fresh_instances_through_attrs(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.propagation_of_fresh_instances_through_attrs, [int]) assert s is not None def test_propagation_of_fresh_instances_through_attrs_rec_0(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.make_r, [int]) assert s.knowntype == snippet.R Rdef = a.getuserclasses()[snippet.R] @@ -553,7 +566,7 @@ def test_propagation_of_fresh_instances_through_attrs_rec_eo(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.make_eo, [int]) assert s.knowntype == snippet.B Even_def = a.getuserclasses()[snippet.Even] @@ -564,13 +577,13 @@ assert listitem(Odd_def.attrs['y'].s_value).knowntype == snippet.Odd def test_flow_rev_numbers(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.flow_rev_numbers, []) assert s.knowntype == int assert not s.is_constant() # ! def test_methodcall_is_precise(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.methodcall_is_precise, []) classes = a.bookkeeper.userclasses assert 'x' not in classes[snippet.CBase].attrs @@ -581,26 +594,26 @@ assert s == a.bookkeeper.immutablevalue(42) def test_class_spec(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.class_spec, []) assert s.items[0].knowntype == int assert s.items[1].knowntype == str def test_exception_deduction_with_raise1(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction_with_raise1, [bool]) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc def test_exception_deduction_with_raise2(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction_with_raise2, [bool]) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc def test_exception_deduction_with_raise3(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.exception_deduction_with_raise3, [bool]) assert isinstance(s, annmodel.SomeInstance) assert s.knowntype is snippet.Exc @@ -612,14 +625,14 @@ if type(x) is C: return x raise Exception - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [object]) assert s.knowntype is C def test_ann_assert(self): def assert_(x): assert x,"XXX" - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(assert_, []) assert s.const is None @@ -634,7 +647,7 @@ return 'y' else: return None - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [bool]) assert s.knowntype == str assert not s.can_be_None @@ -650,7 +663,7 @@ return e return None - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [list]) assert s.knowntype is LookupError @@ -669,7 +682,7 @@ record_exc(e) def ann_record_exc(s_e): return a.bookkeeper.immutablevalue(None) - a = RPythonAnnotator(overrides={record_exc: ann_record_exc}) + a = self.RPythonAnnotator(overrides={record_exc: ann_record_exc}) s = a.build_types(f, []) assert s.const is None @@ -682,12 +695,12 @@ self.called = True return self.flag myobj = Stuff(True) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(lambda: myobj, []) assert myobj.called assert s == annmodel.SomePBC({myobj: True}) myobj = Stuff(False) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(lambda: myobj, []) assert myobj.called assert s == annmodel.SomeInstance(a.bookkeeper.getclassdef(Stuff)) @@ -699,7 +712,7 @@ c.x = c def f(): return c.x - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert s.knowntype == C @@ -709,33 +722,33 @@ for i in range(n): lst = [lst] return lst - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [int]) assert listitem(s) == s def test_harmonic(self): - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(snippet.harmonic, [int]) assert s.knowntype == float def test_bool(self): def f(a,b): return bool(a) or bool(b) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [int,list]) assert s.knowntype == bool def test_float(self): def f(n): return float(n) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [int]) assert s.knowntype == float def test_r_uint(self): def f(n): return n + constant_unsigned_five - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [r_uint]) assert s == annmodel.SomeInteger(nonneg = True, unsigned = True) @@ -766,7 +779,7 @@ f2(l2, c3) return l1,l2 - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(g,[]) l1, l2 = s.items assert listitem(l1).knowntype == int @@ -785,7 +798,7 @@ assert acc1.attrs == {'v1': True, 'v2': True} assert access_sets[c1] is acc1 - raises(KeyError, "access_sets[object()]") + py.test.raises(KeyError, "access_sets[object()]") def test_isinstance_usigned(self): from pypy.tool.rarithmetic import r_uint @@ -794,7 +807,7 @@ def g(): v = r_uint(1) return f(v) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(g, []) assert s.const == True @@ -817,7 +830,7 @@ c1 = alloc(C1) c2 = alloc(C2) return c1,c2 - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert s.items[0].knowntype == C1 assert s.items[1].knowntype == C2 @@ -831,7 +844,7 @@ def f(): l = [T()] return g(l) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert listitem(s).knowntype == T @@ -844,14 +857,14 @@ def f(): l = [T()] return g(l) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert listitem(s).knowntype == T def test_int_str_mul(self): def f(x,a,b): return a*x+x*b - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [str,int,int]) assert s.knowntype == str @@ -869,7 +882,7 @@ t = (2,) l3 = g1(t) return l1, l2, l3 - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, [bool]) assert listitem(s.items[0]) == annmodel.SomeImpossibleValue() assert listitem(s.items[1]).knowntype == int @@ -885,11 +898,11 @@ l.append(1) return x, bool(l) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert s.const == False - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(g, []) assert s.items[0].knowntype == bool and not s.items[0].is_constant() @@ -905,11 +918,11 @@ d['a'] = 1 return x, bool(d) - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(f, []) assert s.const == False - a = RPythonAnnotator() + a = self.RPythonAnnotator() s = a.build_types(g, []) assert s.items[0].knowntype == bool and not s.items[0].is_constant() Modified: pypy/dist/pypy/translator/transform.py ============================================================================== --- pypy/dist/pypy/translator/transform.py (original) +++ pypy/dist/pypy/translator/transform.py Wed Apr 20 17:53:43 2005 @@ -10,6 +10,7 @@ import types from pypy.objspace.flow.model import SpaceOperation from pypy.objspace.flow.model import Variable, Constant, Block, Link +from pypy.objspace.flow.model import last_exception from pypy.translator.annrpython import CannotSimplify from pypy.annotation import model as annmodel @@ -262,9 +263,50 @@ lst = list(block.exits) lst.remove(link) block.exits = tuple(lst) - if len(block.exits) == 1: - block.exitswitch = None - block.exits[0].exitcase = None + if not block.exits: + # oups! cannot reach the end of this block + cutoff_alwaysraising_block(self, block) + elif block.exitswitch != Constant(last_exception): + # non-exceptional exit + if len(block.exits) == 1: + block.exitswitch = None + block.exits[0].exitcase = None + else: + # exceptional exit + if block.exits[0].exitcase is not None: + # killed the non-exceptional path! + cutoff_alwaysraising_block(self, block) + +def cutoff_alwaysraising_block(self, block): + "Fix a block whose end can never be reached at run-time." + # search the operation that cannot succeed + can_succeed = [op for op in block.operations + if op.result in self.bindings] + cannot_succeed = [op for op in block.operations + if op.result not in self.bindings] + n = len(can_succeed) + # check consistency + assert can_succeed == block.operations[:n] + assert cannot_succeed == block.operations[n:] + assert 0 <= n < len(block.operations) + # chop off the unreachable end of the block + del block.operations[n+1:] + s_impossible = annmodel.SomeImpossibleValue() + self.bindings[block.operations[n].result] = s_impossible + # insert the equivalent of 'raise SystemError' + # XXX no sane way to get the graph from the block! + fn = self.annotated[block] + assert fn in self.translator.flowgraphs, ( + "Cannot find the graph that this block belong to! " + "fn=%r" % (fn,)) + graph = self.translator.flowgraphs[fn] + c1 = Constant(SystemError) + c2 = Constant(SystemError( + "Call to %r should have raised an exception" % (fn,))) + errlink = Link([c1, c2], graph.exceptblock) + block.recloseblock(errlink) + # XXX do something about the annotation of the + # exceptblock.inputargs def transform_graph(ann): From arigo at codespeak.net Wed Apr 20 17:54:05 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 17:54:05 +0200 (CEST) Subject: [pypy-svn] r10927 - pypy/branch/canonlyraise-pypy Message-ID: <20050420155405.76EA427B3E@code1.codespeak.net> Author: arigo Date: Wed Apr 20 17:54:05 2005 New Revision: 10927 Removed: pypy/branch/canonlyraise-pypy/ Log: Branch merged. From pedronis at codespeak.net Wed Apr 20 18:08:20 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 20 Apr 2005 18:08:20 +0200 (CEST) Subject: [pypy-svn] r10928 - pypy/dist/pypy/annotation Message-ID: <20050420160820.D6A6A27B43@code1.codespeak.net> Author: pedronis Date: Wed Apr 20 18:08:20 2005 New Revision: 10928 Modified: pypy/dist/pypy/annotation/builtin.py Log: comment Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Wed Apr 20 18:08:20 2005 @@ -66,6 +66,8 @@ r.const = isinstance(s_obj.const, long) else: if type(s_obj) is not SomeObject: # only SomeObjects could be longs + # type(s_obj) < SomeObject -> SomeBool(False) + # type(s_obj) == SomeObject -> SomeBool() r.const = False return r From tismer at codespeak.net Wed Apr 20 18:23:37 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 20 Apr 2005 18:23:37 +0200 (CEST) Subject: [pypy-svn] r10929 - in pypy/dist/pypy: interpreter tool translator Message-ID: <20050420162337.8BB1D27B3D@code1.codespeak.net> Author: tismer Date: Wed Apr 20 18:23:37 2005 New Revision: 10929 Modified: pypy/dist/pypy/interpreter/gateway.py pypy/dist/pypy/interpreter/pyopcode.py pypy/dist/pypy/tool/sourcetools.py pypy/dist/pypy/translator/geninterplevel.py Log: managed to get the sys code in pyopcode.py to be translatable. Some things needed to be changed, i.e. with the current module handling, the code was only working after I moved the import of sys into the single functions. This leads to late imports of sys. Also, I had to replace space.newint and space.newfloat by space.wrap, which flow space doesn't have (and which are not part of the interface definition in baseobjspace) Reworked the handling of module docstrings to show up correctly in the init function, looking *almost* like a real docstring. Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Wed Apr 20 18:23:37 2005 @@ -586,7 +586,7 @@ GI_VERSION_RENDERED = 0 from pypy.translator.geninterplevel import GI_VERSION if GI_VERSION != GI_VERSION_RENDERED or GI_VERSION is None: - file(cls.cache_filename, "w").write(""" + file(cls.cache_filename, "w").write("""\ # This file acts as a cache for code snippets which have been # compiled by compile_as_module(). # It will get a new entry for every piece of code that has Modified: pypy/dist/pypy/interpreter/pyopcode.py ============================================================================== --- pypy/dist/pypy/interpreter/pyopcode.py (original) +++ pypy/dist/pypy/interpreter/pyopcode.py Wed Apr 20 18:23:37 2005 @@ -740,17 +740,22 @@ # class above. app = gateway.applevel(r''' - # NOT_RPYTHON (but should be, soon) - - import sys - - def sys_stdout(): + """ applevel implementation of certain system properties, imports + and other helpers""" + # import sys + # note that sys must be imported inside of + # the functions, or attributes will be + # bound too early by flow space! + + def sys_stdout(): + import sys try: return sys.stdout except AttributeError: raise RuntimeError("lost sys.stdout") def print_expr(obj): + import sys try: displayhook = sys.displayhook except AttributeError: Modified: pypy/dist/pypy/tool/sourcetools.py ============================================================================== --- pypy/dist/pypy/tool/sourcetools.py (original) +++ pypy/dist/pypy/tool/sourcetools.py Wed Apr 20 18:23:37 2005 @@ -9,7 +9,8 @@ Note that we don't use a sequence, since we want the docstring to line up left, regardless of indentation. The shorter triple quotes are - choosen automatically.""" + choosen automatically. + The result is returned as a 1-tuple.""" if type(func) is not str: doc = func.__doc__ else: Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Wed Apr 20 18:23:37 2005 @@ -41,7 +41,7 @@ import pypy # __path__ import py.path -GI_VERSION = '1.0.1' # bump this for substantial changes +GI_VERSION = '1.0.3' # bump this for substantial changes # ____________________________________________________________ def eval_helper(self, typename, expr): @@ -384,7 +384,7 @@ # the prefixbefore the initial '_' for easy postprocessing name = 'gi_minus_%d' % abs(value) name = self.uniquename(name) - self.initcode.append1('%s = space.newint(%d)' % (name, value)) + self.initcode.append1('%s = space.wrap(%d)' % (name, value)) return name def nameof_long(self, value): @@ -413,7 +413,7 @@ name = (name.replace('-', 'minus') .replace('.', 'dot')) name = self.uniquename(name) - self.initcode.append1('%s = space.newfloat(%r)' % (name, value)) + self.initcode.append1('%s = space.wrap(%r)' % (name, value)) return name def nameof_str(self, value): @@ -430,6 +430,7 @@ txt = '%s = space.wrap(%r)' % (name, value) else: txt = render_docstr(value, '%s = space.wrap(\n' % name, ')') + txt = txt, # not splitted self.initcode.append(txt) return name @@ -526,7 +527,11 @@ base_class = None base = cls def initinstance(): - content = instance.__dict__.items() + try: + content = instance.__dict__.items() + except: + import pdb + pdb.set_trace() content.sort() for key, value in content: if self.should_translate_attr(instance, key): @@ -658,8 +663,7 @@ self.initcode.append((docstr,)) # not splitted else: self.initcode.append("_doc = %s" % self.nameof(docobj) ) - self.initcode.append("space.setitem(_dic, %s, _doc)" % ( - self.nameof("__doc__"),)) + self.initcode.append("space.setitem(_dic, %s, _doc)" % (sdoc,)) self.initcode.append1('_bases = space.newtuple([%(bases)s])\n' '_args = space.newtuple([%(name)s, _bases, _dic])\n' '%(klass)s = space.call(%(meta)s, _args)' @@ -851,28 +855,33 @@ def gen_source_temp(self): f = self.f + + # header + print >> f, self.RPY_HEADER + print >> f + info = { 'modname': self.modname, # the side-effects of this is kick-start the process - 'entrypoint': self.nameof(self.entrypoint), + 'entrypoint': None # self.nameof(self.entrypoint), } - # header - print >> f, self.RPY_HEADER - print >> f + # header """def initmodule(space):""" + print >> f, self.RPY_INIT_HEADER % info # doc if self.moddict and self.moddict.get("__doc__"): doc = self.moddict["__doc__"] - print >> f, render_docstr(doc) + print >> f, render_docstr(doc, " __doc__ = \\\n") print >> f # make sure it is not rendered again key = Constant(doc).key - self.rpynames[key] = "__doc__" - self.initcode.append("__doc__ = space.wrap('__doc__')") - - # header """def initmodule(space):""" - print >> f, self.RPY_INIT_HEADER % info + self.rpynames[key] = "w__doc__" + self.initcode.append("w__doc__ = space.wrap(__doc__)") + # info.entrypoint must be done *after* __doc__ is handled, + # because nameof(entrypoint) might touch __doc__ early. + info["entrypoint"] = self.nameof(self.entrypoint) + # function implementations while self.pendingfunctions or self.latercode: if self.pendingfunctions: From pedronis at codespeak.net Wed Apr 20 18:31:56 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 20 Apr 2005 18:31:56 +0200 (CEST) Subject: [pypy-svn] r10933 - pypy/dist/pypy/interpreter Message-ID: <20050420163156.D802B27B3D@code1.codespeak.net> Author: pedronis Date: Wed Apr 20 18:31:56 2005 New Revision: 10933 Modified: pypy/dist/pypy/interpreter/executioncontext.py Log: made operr -> exc_info tuple conversion on exception tracing lazy Modified: pypy/dist/pypy/interpreter/executioncontext.py ============================================================================== --- pypy/dist/pypy/interpreter/executioncontext.py (original) +++ pypy/dist/pypy/interpreter/executioncontext.py Wed Apr 20 18:31:56 2005 @@ -109,9 +109,7 @@ "Trace function called upon OperationError." operationerr.record_interpreter_traceback() space = self.space - w_exc_info = space.newtuple([operationerr.w_type, operationerr.w_value, - space.wrap(operationerr.application_traceback)]) - self._trace(frame, 'exception', w_exc_info) + self._trace(frame, 'exception', None, operationerr) #operationerr.print_detailed_traceback(self.space) def sys_exc_info(self): # attn: the result is not the wrapped sys.exc_info() !!! @@ -151,9 +149,11 @@ finally: self.is_tracing = is_tracing - def _trace(self, frame, event, w_arg): + def _trace(self, frame, event, w_arg, operr=None): if self.is_tracing or frame.code.hidden_applevel: return + + space = self.space # Tracing cases if event == 'call': @@ -162,17 +162,20 @@ w_callback = frame.w_f_trace if w_callback is not None and event != "leaveframe": + if operr is not None: + w_arg = space.newtuple([operr.w_type, operr.w_value, + space.wrap(operr.application_traceback)]) self.is_tracing += 1 try: try: - w_result = self.space.call_function(w_callback, self.space.wrap(frame), self.space.wrap(event), w_arg) - if self.space.is_true(self.space.is_(w_result, self.space.w_None)): + w_result = space.call_function(w_callback, space.wrap(frame), space.wrap(event), w_arg) + if space.is_true(space.is_(w_result, space.w_None)): frame.w_f_trace = None else: frame.w_f_trace = w_result except: - self.settrace(self.space.w_None) + self.settrace(space.w_None) frame.w_f_trace = None raise finally: @@ -192,9 +195,9 @@ self.is_tracing += 1 try: try: - w_result = self.space.call_function(self.w_profilefunc, - self.space.wrap(frame), - self.space.wrap(event), w_arg) + w_result = space.call_function(self.w_profilefunc, + space.wrap(frame), + space.wrap(event), w_arg) except: self.w_profilefunc = None raise From arigo at codespeak.net Wed Apr 20 19:08:33 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 19:08:33 +0200 (CEST) Subject: [pypy-svn] r10934 - pypy/dist/goal Message-ID: <20050420170833.97C2127B3E@code1.codespeak.net> Author: arigo Date: Wed Apr 20 19:08:33 2005 New Revision: 10934 Modified: pypy/dist/goal/translate_pypy.py Log: -no-s op Modified: pypy/dist/goal/translate_pypy.py ============================================================================== --- pypy/dist/goal/translate_pypy.py (original) +++ pypy/dist/goal/translate_pypy.py Wed Apr 20 19:08:33 2005 @@ -13,6 +13,7 @@ defaults to targetpypy -text Don't start the Pygame viewer -no-a Don't infer annotations, just translate everything + -no-s Don't specialize the graph operations with the C typer -no-c Don't generate the C code -c Generate the C code, but don't compile it -o Generate and compile the C code, but don't run it @@ -56,7 +57,8 @@ if not options['-no-a']: a = t.annotate(inputtypes, overrides=pypy_overrides) a.simplify() - a.specialize() + if not options['-no-s']: + a.specialize() t.frozen = True # cannot freeze if we don't have annotations if not options['-no-mark-some-objects']: options['-no-mark-some-objects'] = True # Do not do this again @@ -164,6 +166,7 @@ '-o': False, '-no-mark-some-objects': False, '-no-a': False, + '-no-s': False, '-tcc': False, '-no-d': False, } From arigo at codespeak.net Wed Apr 20 19:21:45 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 19:21:45 +0200 (CEST) Subject: [pypy-svn] r10936 - pypy/dist/goal Message-ID: <20050420172145.A231227B3E@code1.codespeak.net> Author: arigo Date: Wed Apr 20 19:21:45 2005 New Revision: 10936 Modified: pypy/dist/goal/translate_pypy.py Log: (Sorry, incomplete log message in the previous check-in.) This adds options -no-s and -no-t to translate_pypy.py. Modified: pypy/dist/goal/translate_pypy.py ============================================================================== --- pypy/dist/goal/translate_pypy.py (original) +++ pypy/dist/goal/translate_pypy.py Wed Apr 20 19:21:45 2005 @@ -13,7 +13,8 @@ defaults to targetpypy -text Don't start the Pygame viewer -no-a Don't infer annotations, just translate everything - -no-s Don't specialize the graph operations with the C typer + -no-s Don't simplify the graph after annotation + -no-t Don't type-specialize the graph operations with the C typer -no-c Don't generate the C code -c Generate the C code, but don't compile it -o Generate and compile the C code, but don't run it @@ -56,8 +57,9 @@ run_async_server() if not options['-no-a']: a = t.annotate(inputtypes, overrides=pypy_overrides) - a.simplify() if not options['-no-s']: + a.simplify() + if not options['-no-t']: a.specialize() t.frozen = True # cannot freeze if we don't have annotations if not options['-no-mark-some-objects']: @@ -167,6 +169,7 @@ '-no-mark-some-objects': False, '-no-a': False, '-no-s': False, + '-no-t': False, '-tcc': False, '-no-d': False, } From arigo at codespeak.net Wed Apr 20 19:39:34 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 19:39:34 +0200 (CEST) Subject: [pypy-svn] r10937 - pypy/dist/pypy/translator/test Message-ID: <20050420173934.82B7A27B3E@code1.codespeak.net> Author: arigo Date: Wed Apr 20 19:39:34 2005 New Revision: 10937 Modified: pypy/dist/pypy/translator/test/snippet.py pypy/dist/pypy/translator/test/test_annrpython.py Log: A test that shows the next problem. Modified: pypy/dist/pypy/translator/test/snippet.py ============================================================================== --- pypy/dist/pypy/translator/test/snippet.py (original) +++ pypy/dist/pypy/translator/test/snippet.py Wed Apr 20 19:39:34 2005 @@ -762,6 +762,9 @@ return Exc() +def always_raising(x): + raise ValueError + def witness(x): pass @@ -876,6 +879,12 @@ return mod3.p() + +def call_two_funcs_but_one_can_only_raise(n): + fn = [witness, always_raising][n] + return fn(n) + + class BltinCode: def __init__(self, func, framecls): self.func = func Modified: pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- pypy/dist/pypy/translator/test/test_annrpython.py (original) +++ pypy/dist/pypy/translator/test/test_annrpython.py Wed Apr 20 19:39:34 2005 @@ -927,8 +927,13 @@ assert s.items[0].knowntype == bool and not s.items[0].is_constant() assert s.items[1].knowntype == bool and not s.items[1].is_constant() - - + + def test_call_two_funcs_but_one_can_only_raise(self): + a = self.RPythonAnnotator() + s = a.build_types(snippet.call_two_funcs_but_one_can_only_raise, + [int]) + assert s == a.bookkeeper.immutablevalue(None) + def g(n): return [0,1,2,n] From arigo at codespeak.net Wed Apr 20 19:59:23 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 19:59:23 +0200 (CEST) Subject: [pypy-svn] r10939 - in pypy/dist/pypy: objspace/flow translator Message-ID: <20050420175923.53EFB27B3E@code1.codespeak.net> Author: arigo Date: Wed Apr 20 19:59:23 2005 New Revision: 10939 Modified: pypy/dist/pypy/objspace/flow/objspace.py pypy/dist/pypy/translator/annrpython.py Log: CanOnlyRaise wasn't a good idea. Now we return again SomeImpossibleValue() for functions that can only raise exceptions, and there is special treatment for the call_args and simple_call operations. Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Wed Apr 20 19:59:23 2005 @@ -348,6 +348,7 @@ args_w, kwds_w = args.unpack() except UnwrapException: args_w, kwds_w = '?', '?' + # NOTE: annrpython needs to know about the following two operations! if not kwds_w: # simple case w_res = self.do_operation('simple_call', w_callable, *args_w) Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Wed Apr 20 19:59:23 2005 @@ -228,8 +228,7 @@ except KeyError: # the function didn't reach any return statement so far. # (some functions actually never do, they always raise exceptions) - # interrupt the annotation of the caller in a 'soft' way. - raise CanOnlyRaise + return annmodel.SomeImpossibleValue() def reflowfromposition(self, position_key): fn, block, index = position_key @@ -303,11 +302,6 @@ #import traceback, sys #traceback.print_tb(sys.exc_info()[2]) self.annotated[block] = False # failed, hopefully temporarily - if annmodel.DEBUG: - import sys - self.why_not_annotated[block] = sys.exc_info() - except CanOnlyRaise: - pass # end of the block not annotated, but it's not an error except Exception, e: # hack for debug tools only if not hasattr(e, '__annotator_block'): @@ -358,7 +352,6 @@ def flowin(self, fn, block): #print 'Flowing', block, [self.binding(a) for a in block.inputargs] - i = -1 try: for i in range(len(block.operations)): try: @@ -366,15 +359,33 @@ self.consider_op(block.operations[i]) finally: self.bookkeeper.leave() - except (BlockedInference, CanOnlyRaise): - if (i != len(block.operations)-1 or - block.exitswitch != Constant(last_exception)): + + except BlockedInference, e: + if annmodel.DEBUG: + import sys + self.why_not_annotated[block] = sys.exc_info() + + if (e.op is block.operations[-1] and + block.exitswitch == Constant(last_exception)): + # this is the case where the last operation of the block will + # always raise an exception which is immediately caught by + # an exception handler. We then only follow the exceptional + # branches. + exits = [link for link in block.exits + if link.exitcase is not None] + + elif e.op.opname in ('simple_call', 'call_args'): + # XXX warning, keep the name of the call operations in sync + # with the flow object space. These are the operations for + # which it is fine to always raise an exception. We then + # swallow the BlockedInference and that's it. + return + + else: + # other cases are problematic (but will hopefully be solved + # later by reflowing). Throw the BlockedInference up to + # processblock(). raise - # this is the case where the last operation of the block can - # only raise an exception, which is caught by an exception - # handler. we only follow the exceptional branches. - exits = [link for link in block.exits - if link.exitcase is not None] else: # dead code removal: don't follow all exits if the exitswitch # is known @@ -450,12 +461,12 @@ # boom -- in the assert of setbinding() for arg in argcells: if isinstance(arg, annmodel.SomeImpossibleValue): - raise BlockedInference(self, info=op) + raise BlockedInference(self, op) resultcell = consider_meth(*argcells) if resultcell is None: resultcell = annmodel.SomeImpossibleValue() # no return value elif resultcell == annmodel.SomeImpossibleValue(): - raise BlockedInference(self, info=op) # the operation cannot succeed + raise BlockedInference(self, op) # the operation cannot succeed assert isinstance(resultcell, annmodel.SomeObject) assert isinstance(op.result, Variable) self.setbinding(op.result, resultcell) # bind resultcell to op.result @@ -509,30 +520,19 @@ """This exception signals the type inference engine that the situation is currently blocked, and that it should try to progress elsewhere.""" - def __init__(self, annotator, info=None): + def __init__(self, annotator, op): self.annotator = annotator try: self.break_at = annotator.bookkeeper.position_key except AttributeError: self.break_at = None - self.info = info + self.op = op def __repr__(self): - if self.info: - info = "[%s]" % self.info - else: - info = "" if not self.break_at: break_at = "?" else: break_at = self.annotator.whereami(self.break_at) - return "" %(break_at, info) + return "" %(break_at, self.op) __str__ = __repr__ - - -class CanOnlyRaise(Exception): - """A soft version of BlockedInference: the inference should not continue - in the current block, but this not necessarily an error: if the current - block never progresses past this point, then it means that the current - operation will always raise an exception at run-time.""" From arigo at codespeak.net Wed Apr 20 20:11:48 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 20 Apr 2005 20:11:48 +0200 (CEST) Subject: [pypy-svn] r10940 - pypy/dist/pypy/translator Message-ID: <20050420181148.6897B27B3E@code1.codespeak.net> Author: arigo Date: Wed Apr 20 20:11:48 2005 New Revision: 10940 Modified: pypy/dist/pypy/translator/ann_override.py Log: Don't use the hack of hole() returning a real None any more. Modified: pypy/dist/pypy/translator/ann_override.py ============================================================================== --- pypy/dist/pypy/translator/ann_override.py (original) +++ pypy/dist/pypy/translator/ann_override.py Wed Apr 20 20:11:48 2005 @@ -9,9 +9,6 @@ import pypy.interpreter.typedef as itypedef from pypy.objspace.std.objspace import StdObjSpace -def hole(*args): - pass # no result (similar to setattr and setitem) - def ignore(*args): bk = getbookkeeper() return bk.immutablevalue(None) @@ -45,7 +42,7 @@ install(pyframe.cpython_tb, ignore) install(error.OperationError.record_interpreter_traceback, ignore) install(sys_state.pypy_getudir, ignore) -install(fake.wrap_exception, hole) +install(fake.wrap_exception, ignore) install(fake.fake_object, fake_object) install(itypedef.instantiate, instantiate) install(StdObjSpace.wrap_exception_cls, wrap_exception_cls) From pedronis at codespeak.net Thu Apr 21 00:25:27 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 21 Apr 2005 00:25:27 +0200 (CEST) Subject: [pypy-svn] r10944 - pypy/dist/pypy/objspace/std/test Message-ID: <20050420222527.9461327B40@code1.codespeak.net> Author: pedronis Date: Thu Apr 21 00:25:27 2005 New Revision: 10944 Modified: pypy/dist/pypy/objspace/std/test/test_floatobject.py pypy/dist/pypy/objspace/std/test/test_intobject.py pypy/dist/pypy/objspace/std/test/test_longobject.py pypy/dist/pypy/objspace/std/test/test_obj.py pypy/dist/pypy/objspace/std/test/test_stringobject.py pypy/dist/pypy/objspace/std/test/test_tupleobject.py Log: simple tests for __getnewargs__() Modified: pypy/dist/pypy/objspace/std/test/test_floatobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_floatobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_floatobject.py Thu Apr 21 00:25:27 2005 @@ -91,3 +91,6 @@ class b: pass raises((AttributeError, TypeError), float, b()) + + def test_getnewargs(self): + assert 0.0 .__getnewargs__() == (0.0,) Modified: pypy/dist/pypy/objspace/std/test/test_intobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_intobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_intobject.py Thu Apr 21 00:25:27 2005 @@ -369,3 +369,6 @@ class b: pass raises((AttributeError,TypeError), long, b()) + + def test_getnewargs(self): + assert 0 .__getnewargs__() == (0,) Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_longobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Thu Apr 21 00:25:27 2005 @@ -216,3 +216,5 @@ def test_pow(self): assert pow(0L, 0L, 1L) == 0L + def test_getnewargs(self): + assert 0L .__getnewargs__() == (0L,) Modified: pypy/dist/pypy/objspace/std/test/test_obj.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_obj.py (original) +++ pypy/dist/pypy/objspace/std/test/test_obj.py Thu Apr 21 00:25:27 2005 @@ -12,3 +12,7 @@ def test_hash_list(self): l = range(5) raises(TypeError, hash, l) + + def test_no_getnewargs(self): + o = object() + assert not hasattr(o, '__getnewargs__') Modified: pypy/dist/pypy/objspace/std/test/test_stringobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_stringobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_stringobject.py Thu Apr 21 00:25:27 2005 @@ -537,3 +537,6 @@ assert hash('') == 0 assert hash('hello') & 0x7fffffff == 0x347697fd assert hash('hello world!') & 0x7fffffff == 0x2f0bb411 + + def test_getnewargs(self): + assert "foo".__getnewargs__() == ("foo",) Modified: pypy/dist/pypy/objspace/std/test/test_tupleobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_tupleobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_tupleobject.py Thu Apr 21 00:25:27 2005 @@ -242,3 +242,6 @@ assert hash(()) & 0x7fffffff == 0x35d373 assert hash((12,)) & 0x7fffffff == 0x1cca0557 assert hash((12,34)) & 0x7fffffff == 0x153e2a41 + + def test_getnewargs(self): + assert () .__getnewargs__() == ((),) From pedronis at codespeak.net Thu Apr 21 00:54:48 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 21 Apr 2005 00:54:48 +0200 (CEST) Subject: [pypy-svn] r10946 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050420225448.01F0727B40@code1.codespeak.net> Author: pedronis Date: Thu Apr 21 00:54:48 2005 New Revision: 10946 Modified: pypy/dist/pypy/objspace/std/floatobject.py pypy/dist/pypy/objspace/std/floattype.py pypy/dist/pypy/objspace/std/intobject.py pypy/dist/pypy/objspace/std/inttype.py pypy/dist/pypy/objspace/std/longobject.py pypy/dist/pypy/objspace/std/longtype.py pypy/dist/pypy/objspace/std/objspace.py pypy/dist/pypy/objspace/std/stringobject.py pypy/dist/pypy/objspace/std/stringtype.py pypy/dist/pypy/objspace/std/test/test_longobject.py pypy/dist/pypy/objspace/std/tupleobject.py pypy/dist/pypy/objspace/std/tupletype.py Log: move implementions of __getnewargs__ to multimethods, this makes sense in term of possible multiple internal impls, and more directly now gives us type precision for the argument. Modified: pypy/dist/pypy/objspace/std/floatobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/floatobject.py (original) +++ pypy/dist/pypy/objspace/std/floatobject.py Thu Apr 21 00:54:48 2005 @@ -245,4 +245,7 @@ StdObjSpace.coerce.register(float_coerce, W_FloatObject) """ +def getnewargs__Float(space, w_float): + return space.newtuple([W_FloatObject(space, w_float.floatval)]) + register_all(vars()) Modified: pypy/dist/pypy/objspace/std/floattype.py ============================================================================== --- pypy/dist/pypy/objspace/std/floattype.py (original) +++ pypy/dist/pypy/objspace/std/floattype.py Thu Apr 21 00:54:48 2005 @@ -19,13 +19,8 @@ w_obj.__init__(space, value) return w_obj -def descr__getnewargs__(space, w_obj): - from pypy.objspace.std.floatobject import W_FloatObject - return space.newtuple([W_FloatObject(space, w_obj.floatval)]) - # ____________________________________________________________ float_typedef = StdTypeDef("float", __new__ = newmethod(descr__new__), - __getnewargs__ = newmethod(descr__getnewargs__), ) Modified: pypy/dist/pypy/objspace/std/intobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/intobject.py (original) +++ pypy/dist/pypy/objspace/std/intobject.py Thu Apr 21 00:54:48 2005 @@ -442,4 +442,8 @@ ret = "0x%lx" % x return space.wrap(ret) +def getnewargs__Int(space, w_int1): + return space.newtuple([W_IntObject(space, w_int1.intval)]) + + register_all(vars()) Modified: pypy/dist/pypy/objspace/std/inttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/inttype.py (original) +++ pypy/dist/pypy/objspace/std/inttype.py Thu Apr 21 00:54:48 2005 @@ -67,13 +67,8 @@ w_obj.__init__(space, value) return w_obj -def descr__getnewargs__(space, w_obj): - from pypy.objspace.std.intobject import W_IntObject - return space.newtuple([W_IntObject(space, w_obj.intval)]) - # ____________________________________________________________ int_typedef = StdTypeDef("int", __new__ = newmethod(descr__new__), - __getnewargs__ = newmethod(descr__getnewargs__), ) Modified: pypy/dist/pypy/objspace/std/longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/longobject.py (original) +++ pypy/dist/pypy/objspace/std/longobject.py Thu Apr 21 00:54:48 2005 @@ -479,6 +479,9 @@ x = w_long1.longval() return space.wrap(hex(x)) +def getnewargs__Long(space, w_long1): + return space.newtuple([W_LongObject(space, w_long1.digits, w_long1.sign)]) + register_all(vars()) Modified: pypy/dist/pypy/objspace/std/longtype.py ============================================================================== --- pypy/dist/pypy/objspace/std/longtype.py (original) +++ pypy/dist/pypy/objspace/std/longtype.py Thu Apr 21 00:54:48 2005 @@ -53,15 +53,10 @@ w_obj.__init__(space, *args_from_long(value)) return w_obj -def descr__getnewargs__(space, w_obj): - from pypy.objspace.std.longobject import W_LongObject - return space.newtuple([W_LongObject(space, w_obj.digits, w_obj.sign)]) - # ____________________________________________________________ long_typedef = StdTypeDef("long", __new__ = newmethod(descr__new__), - __getnewargs__ = newmethod(descr__getnewargs__), ) # hack to allow automatic int to long conversion: the int.__xyz__ methods # will fall back to their long.__xyz__ counterparts if they fail Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Thu Apr 21 00:54:48 2005 @@ -310,6 +310,7 @@ "Container for multimethods." call = MultiMethod('call', 1, ['__call__'], general__args__=True) init = MultiMethod('__init__', 1, general__args__=True) + getnewargs = MultiMethod('__getnewargs__', 1) # special visible multimethods int_w = MultiMethod('int_w', 1, []) # returns an unwrapped int str_w = MultiMethod('str_w', 1, []) # returns an unwrapped string Modified: pypy/dist/pypy/objspace/std/stringobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/stringobject.py (original) +++ pypy/dist/pypy/objspace/std/stringobject.py Thu Apr 21 00:54:48 2005 @@ -969,6 +969,10 @@ space.wrap("ord() expected a character, but string " "of length %d found"%(len(w_str._value),))) return space.wrap(ord(u_str)) + +def getnewargs__String(space, w_str): + return space.newtuple([W_StringObject(space, w_str._value)]) + app = gateway.applevel(r''' import codecs Modified: pypy/dist/pypy/objspace/std/stringtype.py ============================================================================== --- pypy/dist/pypy/objspace/std/stringtype.py (original) +++ pypy/dist/pypy/objspace/std/stringtype.py Thu Apr 21 00:54:48 2005 @@ -49,14 +49,9 @@ w_obj.__init__(space, value) return w_obj -def descr__getnewargs__(space, w_obj): - from pypy.objspace.std.stringobject import W_StringObject - return space.newtuple([W_StringObject(space, w_obj._value)]) - # ____________________________________________________________ str_typedef = StdTypeDef("str", basestring_typedef, __new__ = newmethod(descr__new__), - __getnewargs__ = newmethod(descr__getnewargs__), ) str_typedef.registermethods(globals()) Modified: pypy/dist/pypy/objspace/std/test/test_longobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_longobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_longobject.py Thu Apr 21 00:54:48 2005 @@ -218,3 +218,4 @@ def test_getnewargs(self): assert 0L .__getnewargs__() == (0L,) + assert (-1L) .__getnewargs__() == (-1L,) Modified: pypy/dist/pypy/objspace/std/tupleobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/tupleobject.py (original) +++ pypy/dist/pypy/objspace/std/tupleobject.py Thu Apr 21 00:54:48 2005 @@ -135,4 +135,8 @@ x += 97531 return space.wrap(intmask(x)) +def getnewargs__Tuple(space, w_tuple): + return space.newtuple([W_TupleObject(space, w_tuple.wrappeditems)]) + + register_all(vars()) Modified: pypy/dist/pypy/objspace/std/tupletype.py ============================================================================== --- pypy/dist/pypy/objspace/std/tupletype.py (original) +++ pypy/dist/pypy/objspace/std/tupletype.py Thu Apr 21 00:54:48 2005 @@ -14,13 +14,8 @@ w_obj.__init__(space, tuple_w) return w_obj -def descr__getnewargs__(space, w_obj): - from pypy.objspace.std.tupleobject import W_TupleObject - return space.newtuple([W_TupleObject(space, w_obj.wrappeditems)]) - # ____________________________________________________________ tuple_typedef = StdTypeDef("tuple", __new__ = newmethod(descr__new__), - __getnewargs__ = newmethod(descr__getnewargs__), ) From pedronis at codespeak.net Thu Apr 21 01:05:55 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 21 Apr 2005 01:05:55 +0200 (CEST) Subject: [pypy-svn] r10947 - pypy/dist/pypy/objspace/std Message-ID: <20050420230555.88BBE27B40@code1.codespeak.net> Author: pedronis Date: Thu Apr 21 01:05:55 2005 New Revision: 10947 Modified: pypy/dist/pypy/objspace/std/longtype.py Log: remove a line still from pre-MM sanity refactoring Modified: pypy/dist/pypy/objspace/std/longtype.py ============================================================================== --- pypy/dist/pypy/objspace/std/longtype.py (original) +++ pypy/dist/pypy/objspace/std/longtype.py Thu Apr 21 01:05:55 2005 @@ -58,6 +58,3 @@ long_typedef = StdTypeDef("long", __new__ = newmethod(descr__new__), ) -# hack to allow automatic int to long conversion: the int.__xyz__ methods -# will fall back to their long.__xyz__ counterparts if they fail -long_typedef.could_also_match = int_typedef From pedronis at codespeak.net Thu Apr 21 04:10:42 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 21 Apr 2005 04:10:42 +0200 (CEST) Subject: [pypy-svn] r10948 - pypy/dist/pypy/annotation Message-ID: <20050421021042.9735327B45@code1.codespeak.net> Author: pedronis Date: Thu Apr 21 04:10:42 2005 New Revision: 10948 Modified: pypy/dist/pypy/annotation/classdef.py Log: MI with Exception and BaseWrappable bits again, we need to support in union too Modified: pypy/dist/pypy/annotation/classdef.py ============================================================================== --- pypy/dist/pypy/annotation/classdef.py (original) +++ pypy/dist/pypy/annotation/classdef.py Thu Apr 21 04:10:42 2005 @@ -53,10 +53,12 @@ sources = {} baselist = list(cls.__bases__) baselist.reverse() + self.also_Exception_subclass = False if Exception in baselist and len(baselist)>1: # special-case baselist.remove(Exception) mixeddict['__init__'] = Exception.__init__.im_func - + self.also_Exception_subclass = True + for b1 in baselist: if b1 is object: continue @@ -106,8 +108,13 @@ return "" % (self.cls.__module__, self.cls.__name__) def commonbase(self, other): + other1 = other while other is not None and not issubclass(self.cls, other.cls): other = other.basedef + # special case for MI with Exception + if not other: + if issubclass(self.cls, Exception) and issubclass(other1.cls, Exception): + return self.bookkeeper.getclassdef(Exception) return other def superdef_containing(self, cls): From pedronis at codespeak.net Thu Apr 21 04:12:11 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 21 Apr 2005 04:12:11 +0200 (CEST) Subject: [pypy-svn] r10949 - pypy/dist/pypy/interpreter Message-ID: <20050421021211.36FCF27B45@code1.codespeak.net> Author: pedronis Date: Thu Apr 21 04:12:11 2005 New Revision: 10949 Modified: pypy/dist/pypy/interpreter/typedef.py Log: obj = interpclass_w(w_obj) isinstance(obj, cls) call and again obj = interpclass_w(w_obj) pattern defeats the annotator, avoid this sort of double interpclass_w. More to come Modified: pypy/dist/pypy/interpreter/typedef.py ============================================================================== --- pypy/dist/pypy/interpreter/typedef.py (original) +++ pypy/dist/pypy/interpreter/typedef.py Thu Apr 21 04:12:11 2005 @@ -279,25 +279,21 @@ descr_generic_ne = interp2app(generic_ne) # co_xxx interface emulation for built-in code objects -def fget_co_varnames(space, w_code): - code = space.interpclass_w(w_code) +def fget_co_varnames(space, code): # unwrapping through unwrap_spec return space.newtuple([space.wrap(name) for name in code.getvarnames()]) -def fget_co_argcount(space, w_code): - code = space.interpclass_w(w_code) +def fget_co_argcount(space, code): # unwrapping through unwrap_spec argnames, varargname, kwargname = code.signature() return space.wrap(len(argnames)) -def fget_co_flags(space, w_code): - code = space.interpclass_w(w_code) +def fget_co_flags(space, code): # unwrapping through unwrap_spec argnames, varargname, kwargname = code.signature() flags = 0 if varargname is not None: flags |= CO_VARARGS if kwargname is not None: flags |= CO_VARKEYWORDS return space.wrap(flags) -def fget_co_consts(space, w_code): - code = space.interpclass_w(w_code) +def fget_co_consts(space, code): # unwrapping through unwrap_spec w_docstring = space.wrap(code.getdocstring()) return space.newtuple([w_docstring]) From pedronis at codespeak.net Thu Apr 21 18:39:37 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 21 Apr 2005 18:39:37 +0200 (CEST) Subject: [pypy-svn] r10976 - pypy/dist/pypy/interpreter Message-ID: <20050421163937.C79DB27B41@code1.codespeak.net> Author: pedronis Date: Thu Apr 21 16:38:29 2005 New Revision: 10976 Modified: pypy/dist/pypy/interpreter/eval.py pypy/dist/pypy/interpreter/pyframe.py Log: more removal of double interpclass_w cases Modified: pypy/dist/pypy/interpreter/eval.py ============================================================================== --- pypy/dist/pypy/interpreter/eval.py (original) +++ pypy/dist/pypy/interpreter/eval.py Thu Apr 21 16:38:29 2005 @@ -85,8 +85,7 @@ self.fast2locals() return self.w_locals - def fget_getdictscope(space, w_self): - self = space.interpclass_w(w_self) + def fget_getdictscope(space, self): # unwrapping through unwrap_spec in typedef.py return self.getdictscope() def setdictscope(self, w_locals): Modified: pypy/dist/pypy/interpreter/pyframe.py ============================================================================== --- pypy/dist/pypy/interpreter/pyframe.py (original) +++ pypy/dist/pypy/interpreter/pyframe.py Thu Apr 21 16:38:29 2005 @@ -131,15 +131,16 @@ ### line numbers ### - def fget_f_lineno(space, w_self): + # for fget_f_* unwrapping through unwrap_spec in typedef.py + + def fget_f_lineno(space, self): "Returns the line number of the instruction currently being executed." - self = space.interpclass_w(w_self) if self.w_f_trace is None: return space.wrap(self.get_last_lineno()) else: return space.wrap(self.f_lineno) - def fset_f_lineno(space, w_self, w_new_lineno): + def fset_f_lineno(space, self, w_new_lineno): "Returns the line number of the instruction currently being executed." try: new_lineno = space.int_w(w_new_lineno) @@ -147,7 +148,6 @@ raise OperationError(space.w_ValueError, space.wrap("lineno must be an integer")) - self = space.interpclass_w(w_self) if self.w_f_trace is None: raise OperationError(space.w_ValueError, space.wrap("f_lineo can only be set by a trace function.")) @@ -272,32 +272,26 @@ "Returns the line number of the next instruction to execute." return pytraceback.offset2lineno(self.code, self.next_instr) - def fget_f_builtins(space, w_self): - self = space.interpclass_w(w_self) + def fget_f_builtins(space, self): return self.builtin.getdict() - def fget_f_back(space, w_self): - self = space.interpclass_w(w_self) + def fget_f_back(space, self): return self.space.wrap(self.f_back) - def fget_f_lasti(space, w_self): - self = space.interpclass_w(w_self) + def fget_f_lasti(space, self): return self.space.wrap(self.last_instr) - def fget_f_trace(space, w_self): - self = space.interpclass_w(w_self) + def fget_f_trace(space, self): return self.w_f_trace - def fset_f_trace(space, w_self, w_trace): - self = space.interpclass_w(w_self) + def fset_f_trace(space, self, w_trace): if space.is_true(space.is_(w_trace, space.w_None)): self.w_f_trace = None else: self.w_f_trace = w_trace self.f_lineno = self.get_last_lineno() - def fget_f_exc_type(space, w_self): - self = space.interpclass_w(w_self) + def fget_f_exc_type(space, self): if self.last_exception is not None: f = self.f_back while f is not None and f.last_exception is None: @@ -306,8 +300,7 @@ return f.last_exception.w_type return space.w_None - def fget_f_exc_value(space, w_self): - self = space.interpclass_w(w_self) + def fget_f_exc_value(space, self): if self.last_exception is not None: f = self.f_back while f is not None and f.last_exception is None: @@ -316,8 +309,7 @@ return f.last_exception.w_value return space.w_None - def fget_f_exc_traceback(space, w_self): - self = space.interpclass_w(w_self) + def fget_f_exc_traceback(space, self): if self.last_exception is not None: f = self.f_back while f is not None and f.last_exception is None: @@ -326,8 +318,7 @@ return space.wrap(f.last_exception.application_traceback) return space.w_None - def fget_f_restricted(space, w_self): - self = space.interpclass_w(w_self) + def fget_f_restricted(space, self): return space.wrap(self.builtin is not space.builtin) ### Frame Blocks ### From tismer at codespeak.net Thu Apr 21 18:39:58 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 21 Apr 2005 18:39:58 +0200 (CEST) Subject: [pypy-svn] r10977 - in pypy/dist/pypy: . interpreter tool translator translator/test Message-ID: <20050421163958.BE0C727B41@code1.codespeak.net> Author: tismer Date: Thu Apr 21 17:08:04 2005 New Revision: 10977 Added: pypy/dist/pypy/translator/test/test_rpystone.py Modified: pypy/dist/pypy/ (props changed) pypy/dist/pypy/interpreter/gateway.py pypy/dist/pypy/tool/sourcetools.py pypy/dist/pypy/translator/geninterplevel.py pypy/dist/pypy/translator/test/rpystone.py Log: added test_rpystone (forgotton) added _cache to the svn ignore list wrote an initial folder based geninterp cache. Todo: find the names of the source modules. Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Thu Apr 21 17:08:04 2005 @@ -7,7 +7,7 @@ """ -import types, sys +import types, sys, md5 from pypy.tool import hack from pypy.interpreter.error import OperationError @@ -536,7 +536,7 @@ def _freeze_(self): return True # hint for the annotator: applevel instances are constants -class ApplevelInterpClass(ApplevelClass): +class old_ApplevelInterpClass(ApplevelClass): """ similar to applevel, but using translation to interp-level. """ NOT_RPYTHON_ATTRIBUTES = [] @@ -620,6 +620,119 @@ cls._setup_done = True _setup = classmethod(_setup) +class ApplevelInterpClass(ApplevelClass): + """ similar to applevel, but using translation to interp-level. + This version maintains a cache folder with single files. + """ + NOT_RPYTHON_ATTRIBUTES = [] + + def __init__(self, source, filename = None, modname = 'applevelinterp', do_imports=False): + "NOT_RPYTHON" + self.filename = filename + self.source = source + self.modname = modname + self.do_imports = do_imports + + def _builddict(self, space): + "NOT_RPYTHON" + if not self._setup_done: + self._setup() + from pypy.translator.geninterplevel import translate_as_module + scramble = md5.new(self.seed) + scramble.update(self.source) + key = scramble.digest() + initfunc = self.known_source.get(key) + if not initfunc: + # try to get it from file + name = scramble.hexdigest() + try: + __import__("pypy._cache."+name) + except ImportError, x: + # print x + pass + else: + initfunc = self.known_source[key] + if not initfunc: + # build it and put it into a file + initfunc, newsrc = translate_as_module( + self.source, self.filename, self.modname, self.do_imports) + name = scramble.hexdigest() + fname = self.cache_path.join(name+".py").strpath + f = file(fname, "w") + print >> f, """\ +# self-destruct on double-click: +if __name__ == "__main__": + from pypy import _cache + import os + namestart = os.path.join(os.path.split(_cache.__file__)[0], '%s') + for ending in ('.py', '.pyc', '.pyo'): + try: + os.unlink(namestart+ending) + except os.error: + pass""" % name + print >> f + print >> f, newsrc + print >> f, "from pypy._cache import known_source" + print >> f, "known_source[%r] = %s" % (key, initfunc.__name__) + w_glob = initfunc(space) + return w_glob + + _setup_done = False + + def _setup(cls): + """NOT_RPYTHON""" + from pypy.tool.getpy import py + lp = py.path.local + import pypy, os + p = lp(pypy.__file__).new(basename='_cache').ensure(dir=1) + cls.cache_path = p + ini = p.join('__init__.py') + try: + if not ini.check(): + raise ImportError # don't import if only a .pyc file left!!! + from pypy._cache import known_source, \ + GI_VERSION_RENDERED + except ImportError: + GI_VERSION_RENDERED = 0 + from pypy.translator.geninterplevel import GI_VERSION + cls.seed = md5.new(str(GI_VERSION)).digest() + if GI_VERSION != GI_VERSION_RENDERED or GI_VERSION is None: + for pth in p.listdir(): + try: + pth.remove() + except: pass + file(str(ini), "w").write("""\ +# This folder acts as a cache for code snippets which have been +# compiled by compile_as_module(). +# It will get a new entry for every piece of code that has +# not been seen, yet. +# +# Caution! Only the code snippet is checked. If something +# is imported, changes are not detected. Also, changes +# to geninterplevel or gateway are also not checked. +# Exception: There is a checked version number in geninterplevel.py +# +# If in doubt, remove this file from time to time. + +GI_VERSION_RENDERED = %r + +known_source = {} + +# self-destruct on double-click: +if __name__ == "__main__": + import pypy._cache as _c + from pypy.tool.getpy import py + lp = py.path.local + for pth in lp(_c.__file__).dirpath().listdir(): + try: + pth.remove() + except: pass +""" % GI_VERSION) + import pypy._cache + cls.known_source = pypy._cache.known_source + cls._setup_done = True + _setup = classmethod(_setup) + def applevel(source, filename = None, modname = 'applevelinterp', do_imports=False): # look at the first three lines Modified: pypy/dist/pypy/tool/sourcetools.py ============================================================================== --- pypy/dist/pypy/tool/sourcetools.py (original) +++ pypy/dist/pypy/tool/sourcetools.py Thu Apr 21 17:08:04 2005 @@ -48,7 +48,7 @@ # missing source, what to do? self.srctext = None - def __call__(self, src, args): + def __call__(self, src, args={}): """ instance NiceCompile (src, args) -- formats src with args and returns a code object ready for exec. Instead of , the code object has correct co_filename and line numbers. @@ -90,7 +90,7 @@ return src % name.__sourceargs__ return src -## the following is stolen frompy.code.source.py for now. +## the following is stolen from py.code.source.py for now. ## XXX discuss whether and how to put this functionality ## into py.code.source. # Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Thu Apr 21 17:08:04 2005 @@ -527,11 +527,7 @@ base_class = None base = cls def initinstance(): - try: - content = instance.__dict__.items() - except: - import pdb - pdb.set_trace() + content = instance.__dict__.items() content.sort() for key, value in content: if self.should_translate_attr(instance, key): @@ -1538,17 +1534,18 @@ builtins_can_raise_exceptions=True, do_imports_immediately=do_imports) hold = sys.path - sys.path.insert(0, os.path.join(pypy.__path__[0], "lib")) + libdir = os.path.join(pypy.__path__[0], "lib") gen = GenRpy(t, entrypoint, modname, dic) - sys.path = hold if tmpname: _file = file else: _file = memfile - tmpname = sourcetext + tmpname = 'nada' out = _file(tmpname, 'w') gen.f = out + sys.path.insert(0, libdir) gen.gen_source(tmpname, file=_file) + sys.path.remove(libdir) out.close() newsrc = _file(tmpname).read() code = py.code.Source(newsrc).compile() Modified: pypy/dist/pypy/translator/test/rpystone.py ============================================================================== --- pypy/dist/pypy/translator/test/rpystone.py (original) +++ pypy/dist/pypy/translator/test/rpystone.py Thu Apr 21 17:08:04 2005 @@ -38,7 +38,9 @@ class G:pass g = G() -import sys +# import sys +# we cannot import sys here +# because flow space must produce a late lookup from time import clock @@ -64,13 +66,15 @@ FALSE = 0 def main(loops=LOOPS): - benchtime, stones = pystones(loops) + benchtime, stones = pystones(abs(loops)) #print "Pystone(%s) time for %d passes = %g" % \ # (__version__, loops, benchtime) - sys.stdout.write("Pystone(%s) time for %d passes = %g\n" % \ - (__version__, loops, benchtime) ) - #print "This machine benchmarks at %g pystones/second" % stones - sys.stdout.write("This machine benchmarks at %g pystones/second\n" % stones) + if loops >= 0: + import sys + sys.stdout.write("Pystone(%s) time for %d passes = %g\n" % \ + (__version__, loops, benchtime) ) + #print "This machine benchmarks at %g pystones/second" % stones + sys.stdout.write("This machine benchmarks at %g pystones/second\n" % stones) def pystones(loops=LOOPS): @@ -296,6 +300,7 @@ # for now, we use main in the test. def error(msg): + import sys #print >>sys.stderr, msg, sys.stderr.write(msg+" ") #print >>sys.stderr, "usage: %s [number_of_loops]" % sys.argv[0] Added: pypy/dist/pypy/translator/test/test_rpystone.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/test/test_rpystone.py Thu Apr 21 17:08:04 2005 @@ -0,0 +1,22 @@ +from pypy.translator.geninterplevel import translate_as_module, __file__ as __ +from pypy.objspace.std import Space +import os +fname = os.path.join(os.path.dirname(__), "test", "rpystone.py") +src = file(fname).read() +init, ign = translate_as_module(src) + +LOOPS = 25 + +def test_rpystone(): + space = Space() + modic = init(space) + # entry = space.getitem(modic, space.wrap("entrypoint")) + # XXX wecan't use stuff like sys.argv, yet + entry = space.getitem(modic, space.wrap("main")) + # warm-up,to get everything translated + space.call(entry, space.newtuple([space.wrap(-1)])) + # now this is the real one + space.call(entry, space.newtuple([space.wrap(LOOPS)])) + +if __name__ == "__main__": + test_rpystone() \ No newline at end of file From pedronis at codespeak.net Thu Apr 21 18:40:06 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 21 Apr 2005 18:40:06 +0200 (CEST) Subject: [pypy-svn] r10978 - in pypy/dist/pypy: interpreter module/builtin Message-ID: <20050421164006.5C75827B47@code1.codespeak.net> Author: pedronis Date: Thu Apr 21 17:38:17 2005 New Revision: 10978 Modified: pypy/dist/pypy/interpreter/function.py pypy/dist/pypy/interpreter/pyframe.py pypy/dist/pypy/module/builtin/compiling.py Log: make comment more precise more double interpclass_w removal make eval impl more annotator friendly Modified: pypy/dist/pypy/interpreter/function.py ============================================================================== --- pypy/dist/pypy/interpreter/function.py (original) +++ pypy/dist/pypy/interpreter/function.py Thu Apr 21 17:38:17 2005 @@ -48,6 +48,8 @@ raise OperationError( space.w_TypeError, space.wrap("setting function's dictionary to a non-dict") ) self.w_func_dict = w_dict + # unwrapping is done through unwrap_specs in typedef.py + def descr_function_get(self, w_obj, w_cls=None): space = self.space wrap = space.wrap @@ -64,39 +66,32 @@ def descr_function_call(self, __args__): return self.call_args(__args__) - def fget_func_defaults(space, w_self): - self = space.interpclass_w(w_self) + def fget_func_defaults(space, self): values_w = self.defs_w if not values_w: return space.w_None return space.newtuple(values_w) - def fset_func_defaults(space, w_self, w_defaults): - self = space.interpclass_w(w_self) + def fset_func_defaults(space, self, w_defaults): if not space.is_true( space.isinstance( w_defaults, space.w_tuple ) ): raise OperationError( space.w_TypeError, space.wrap("func_defaults must be set to a tuple object") ) self.defs_w = space.unpackiterable( w_defaults ) - def fdel_func_defaults(space, w_self): - self = space.interpclass_w(w_self) + def fdel_func_defaults(space, self): self.defs_w = [] - def fget_func_doc(space, w_self): - self = space.interpclass_w(w_self) + def fget_func_doc(space, self): if self.w_doc is None: self.w_doc = space.wrap(self.code.getdocstring()) return self.w_doc - def fset_func_doc(space, w_self, w_doc): - self = space.interpclass_w(w_self) + def fset_func_doc(space, self, w_doc): self.w_doc = w_doc - def fdel_func_doc(space, w_self): - self = space.interpclass_w(w_self) + def fdel_func_doc(space, self): self.w_doc = space.w_None - def fget___module__(space, w_self): - self = space.interpclass_w(w_self) + def fget___module__(space, self): if self.w_module is None: if self.w_func_globals is not None and not space.is_w(self.w_func_globals, space.w_None): self.w_module = space.call_method( self.w_func_globals, "get", space.wrap("__name__") ) @@ -104,27 +99,22 @@ self.w_module = space.w_None return self.w_module - def fset___module__(space, w_self, w_module): - self = space.interpclass_w(w_self) + def fset___module__(space, self, w_module): self.w_module = w_module - def fdel___module__(space, w_self): - self = space.interpclass_w(w_self) + def fdel___module__(space, self): self.w_module = space.w_None - def fget_func_code(space, w_self): - self = space.interpclass_w(w_self) + def fget_func_code(space, self): return space.wrap(self.code) - def fset_func_code(space, w_self, w_code): - self = space.interpclass_w(w_self) + def fset_func_code(space, self, w_code): code = space.interpclass_w(w_code) if not isinstance(code, Code ): raise OperationError( space.w_TypeError, space.wrap("func_code must be set to a code object") ) self.code = code - def fget_func_closure(space, w_self): - self = space.interpclass_w(w_self) + def fget_func_closure(space, self): if self.closure is not None: w_res = space.newtuple( [ space.wrap(i) for i in self.closure ] ) else: Modified: pypy/dist/pypy/interpreter/pyframe.py ============================================================================== --- pypy/dist/pypy/interpreter/pyframe.py (original) +++ pypy/dist/pypy/interpreter/pyframe.py Thu Apr 21 17:38:17 2005 @@ -131,7 +131,7 @@ ### line numbers ### - # for fget_f_* unwrapping through unwrap_spec in typedef.py + # for f*_f_* unwrapping through unwrap_spec in typedef.py def fget_f_lineno(space, self): "Returns the line number of the instruction currently being executed." Modified: pypy/dist/pypy/module/builtin/compiling.py ============================================================================== --- pypy/dist/pypy/module/builtin/compiling.py (original) +++ pypy/dist/pypy/module/builtin/compiling.py Thu Apr 21 17:38:17 2005 @@ -43,18 +43,18 @@ compile.unwrap_spec = [ObjSpace,W_Root,str,str,int,int] -def eval(space, w_source, w_globals=NoneNotWrapped, w_locals=NoneNotWrapped): +def eval(space, w_code, w_globals=NoneNotWrapped, w_locals=NoneNotWrapped): w = space.wrap - if (space.is_true(space.isinstance(w_source, space.w_str)) or - space.is_true(space.isinstance(w_source, space.w_unicode))): - w_codeobj = compile(space, - space.call_method(w_source, 'lstrip', - space.wrap(' \t')), - "", "eval") - elif isinstance(space.interpclass_w(w_source), PyCode): - w_codeobj = w_source - else: + if (space.is_true(space.isinstance(w_code, space.w_str)) or + space.is_true(space.isinstance(w_code, space.w_unicode))): + w_code = compile(space, + space.call_method(w_code, 'lstrip', + space.wrap(' \t')), + "", "eval") + + codeobj = space.interpclass_w(w_code) + if not isinstance(codeobj, PyCode): raise OperationError(space.w_TypeError, w('eval() arg 1 must be a string or code object')) @@ -81,4 +81,4 @@ w_builtin = space.builtin.pick_builtin(caller.w_globals) space.setitem(w_globals, space.wrap('__builtins__'), w_builtin) - return space.interpclass_w(w_codeobj).exec_code(space, w_globals, w_locals) + return codeobj.exec_code(space, w_globals, w_locals) From sanxiyn at codespeak.net Thu Apr 21 18:40:12 2005 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Thu, 21 Apr 2005 18:40:12 +0200 (CEST) Subject: [pypy-svn] r10979 - in pypy/dist/pypy: annotation/test documentation/revreport interpreter interpreter/test lib/test2 module/test objspace/flow/test objspace/std objspace/std/test objspace/test tool tool/test translator translator/genc translator/genc/test translator/java translator/java/test translator/llvm translator/llvm/test translator/test translator/tool translator/tool/pygame Message-ID: <20050421164012.A7C0E27B41@code1.codespeak.net> Author: sanxiyn Date: Thu Apr 21 17:42:26 2005 New Revision: 10979 Modified: pypy/dist/pypy/annotation/test/autopath.py pypy/dist/pypy/documentation/revreport/autopath.py pypy/dist/pypy/interpreter/autopath.py pypy/dist/pypy/interpreter/test/autopath.py pypy/dist/pypy/lib/test2/autopath.py pypy/dist/pypy/module/test/autopath.py pypy/dist/pypy/objspace/flow/test/autopath.py pypy/dist/pypy/objspace/std/autopath.py pypy/dist/pypy/objspace/std/test/autopath.py pypy/dist/pypy/objspace/test/autopath.py pypy/dist/pypy/tool/autopath.py pypy/dist/pypy/tool/test/autopath.py pypy/dist/pypy/translator/autopath.py pypy/dist/pypy/translator/genc/autopath.py pypy/dist/pypy/translator/genc/test/autopath.py pypy/dist/pypy/translator/java/autopath.py pypy/dist/pypy/translator/java/test/autopath.py pypy/dist/pypy/translator/llvm/autopath.py pypy/dist/pypy/translator/llvm/test/autopath.py pypy/dist/pypy/translator/test/autopath.py pypy/dist/pypy/translator/tool/autopath.py pypy/dist/pypy/translator/tool/pygame/autopath.py Log: Autopath: do not add to sys.path over and over Modified: pypy/dist/pypy/annotation/test/autopath.py ============================================================================== --- pypy/dist/pypy/annotation/test/autopath.py (original) +++ pypy/dist/pypy/annotation/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/documentation/revreport/autopath.py ============================================================================== --- pypy/dist/pypy/documentation/revreport/autopath.py (original) +++ pypy/dist/pypy/documentation/revreport/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/interpreter/autopath.py ============================================================================== --- pypy/dist/pypy/interpreter/autopath.py (original) +++ pypy/dist/pypy/interpreter/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/interpreter/test/autopath.py ============================================================================== --- pypy/dist/pypy/interpreter/test/autopath.py (original) +++ pypy/dist/pypy/interpreter/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/lib/test2/autopath.py ============================================================================== --- pypy/dist/pypy/lib/test2/autopath.py (original) +++ pypy/dist/pypy/lib/test2/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/module/test/autopath.py ============================================================================== --- pypy/dist/pypy/module/test/autopath.py (original) +++ pypy/dist/pypy/module/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/objspace/flow/test/autopath.py ============================================================================== --- pypy/dist/pypy/objspace/flow/test/autopath.py (original) +++ pypy/dist/pypy/objspace/flow/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/objspace/std/autopath.py ============================================================================== --- pypy/dist/pypy/objspace/std/autopath.py (original) +++ pypy/dist/pypy/objspace/std/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/objspace/std/test/autopath.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/autopath.py (original) +++ pypy/dist/pypy/objspace/std/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/objspace/test/autopath.py ============================================================================== --- pypy/dist/pypy/objspace/test/autopath.py (original) +++ pypy/dist/pypy/objspace/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/tool/autopath.py ============================================================================== --- pypy/dist/pypy/tool/autopath.py (original) +++ pypy/dist/pypy/tool/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/tool/test/autopath.py ============================================================================== --- pypy/dist/pypy/tool/test/autopath.py (original) +++ pypy/dist/pypy/tool/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/autopath.py ============================================================================== --- pypy/dist/pypy/translator/autopath.py (original) +++ pypy/dist/pypy/translator/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/genc/autopath.py ============================================================================== --- pypy/dist/pypy/translator/genc/autopath.py (original) +++ pypy/dist/pypy/translator/genc/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/genc/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/genc/test/autopath.py (original) +++ pypy/dist/pypy/translator/genc/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/java/autopath.py ============================================================================== --- pypy/dist/pypy/translator/java/autopath.py (original) +++ pypy/dist/pypy/translator/java/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/java/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/java/test/autopath.py (original) +++ pypy/dist/pypy/translator/java/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/llvm/autopath.py ============================================================================== --- pypy/dist/pypy/translator/llvm/autopath.py (original) +++ pypy/dist/pypy/translator/llvm/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/llvm/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/autopath.py (original) +++ pypy/dist/pypy/translator/llvm/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/test/autopath.py ============================================================================== --- pypy/dist/pypy/translator/test/autopath.py (original) +++ pypy/dist/pypy/translator/test/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/tool/autopath.py ============================================================================== --- pypy/dist/pypy/translator/tool/autopath.py (original) +++ pypy/dist/pypy/translator/tool/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): Modified: pypy/dist/pypy/translator/tool/pygame/autopath.py ============================================================================== --- pypy/dist/pypy/translator/tool/pygame/autopath.py (original) +++ pypy/dist/pypy/translator/tool/pygame/autopath.py Thu Apr 21 17:42:26 2005 @@ -50,7 +50,8 @@ if fullorig.startswith(pypy_root): if os.path.exists(os.path.join(fullorig, '__init__.py')): sys.path.remove(orig) - sys.path.insert(0, head) + if head not in sys.path: + sys.path.insert(0, head) munged = {} for name, mod in sys.modules.items(): From tismer at codespeak.net Thu Apr 21 18:40:17 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 21 Apr 2005 18:40:17 +0200 (CEST) Subject: [pypy-svn] r10980 - in pypy/dist/pypy: interpreter module/builtin module/parser objspace/std tool translator Message-ID: <20050421164017.4AF8327B47@code1.codespeak.net> Author: tismer Date: Thu Apr 21 18:18:12 2005 New Revision: 10980 Modified: pypy/dist/pypy/interpreter/gateway.py pypy/dist/pypy/interpreter/pyopcode.py pypy/dist/pypy/module/builtin/operation.py pypy/dist/pypy/module/parser/pyparser.py pypy/dist/pypy/objspace/std/dictobject.py pypy/dist/pypy/objspace/std/dicttype.py pypy/dist/pypy/objspace/std/floatobject.py pypy/dist/pypy/objspace/std/listobject.py pypy/dist/pypy/objspace/std/listtype.py pypy/dist/pypy/objspace/std/objecttype.py pypy/dist/pypy/objspace/std/sliceobject.py pypy/dist/pypy/objspace/std/slicetype.py pypy/dist/pypy/objspace/std/stringobject.py pypy/dist/pypy/objspace/std/tupleobject.py pypy/dist/pypy/objspace/std/typeobject.py pypy/dist/pypy/tool/sourcetools.py pypy/dist/pypy/translator/geninterplevel.py Log: added name prefixes to the _cache/files as far as possible. Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Thu Apr 21 18:18:12 2005 @@ -7,7 +7,7 @@ """ -import types, sys, md5 +import types, sys, md5, os from pypy.tool import hack from pypy.interpreter.error import OperationError @@ -16,7 +16,9 @@ from pypy.interpreter.baseobjspace import W_Root,ObjSpace, BaseWrappable, Wrappable from pypy.interpreter.argument import Arguments from pypy.tool.cache import Cache -from pypy.tool.compile import compile2 +from pypy.tool.compile import compile2 +from pypy.tool.sourcetools import NiceCompile + # internal non-translatable parts: from pypy.tool.getpy import py # XXX from interpreter/ we get py.py @@ -492,8 +494,8 @@ "NOT_RPYTHON" if filename is None: self.code = py.code.Source(source).compile() - else: - self.code = compile(source, filename, 'exec') + else: + self.code = NiceCompile(filename)(source) def getwdict(self, space): return space.loadfromcache(self, self.__class__._builddict, @@ -640,11 +642,14 @@ from pypy.translator.geninterplevel import translate_as_module scramble = md5.new(self.seed) scramble.update(self.source) - key = scramble.digest() + key = scramble.hexdigest() initfunc = self.known_source.get(key) if not initfunc: # try to get it from file - name = scramble.hexdigest() + name = '_' + key + if self.filename: + prename = os.path.splitext(os.path.basename(self.filename))[0] + name = prename + name try: __import__("pypy._cache."+name) except ImportError, x: @@ -656,7 +661,6 @@ # build it and put it into a file initfunc, newsrc = translate_as_module( self.source, self.filename, self.modname, self.do_imports) - name = scramble.hexdigest() fname = self.cache_path.join(name+".py").strpath f = file(fname, "w") print >> f, """\ Modified: pypy/dist/pypy/interpreter/pyopcode.py ============================================================================== --- pypy/dist/pypy/interpreter/pyopcode.py (original) +++ pypy/dist/pypy/interpreter/pyopcode.py Thu Apr 21 18:18:12 2005 @@ -862,7 +862,7 @@ else: # prog is a string co = compile(prog,'','exec', compile_flags, 1) return (co, globals, locals) -''') +''', filename=__file__) sys_stdout = app.interphook('sys_stdout') print_expr = app.interphook('print_expr') Modified: pypy/dist/pypy/module/builtin/operation.py ============================================================================== --- pypy/dist/pypy/module/builtin/operation.py (original) +++ pypy/dist/pypy/module/builtin/operation.py Thu Apr 21 18:18:12 2005 @@ -124,7 +124,7 @@ raise TypeError, 'iter(v, w): v must be callable' return iter_generator(callable_, sentinel) -''').interphook("iter_sentinel") +''', filename=__file__).interphook("iter_sentinel") def iter(space, w_collection_or_callable, w_sentinel=NoneNotWrapped): if w_sentinel is None: Modified: pypy/dist/pypy/module/parser/pyparser.py ============================================================================== --- pypy/dist/pypy/module/parser/pyparser.py (original) +++ pypy/dist/pypy/module/parser/pyparser.py Thu Apr 21 18:18:12 2005 @@ -116,7 +116,7 @@ def modcompile(compileAST): gen = compiler.pycodegen.ModuleCodeGenerator(compileAST) return gen.getCode() -""") +""", filename=__file__) mycompile = app.interphook("mycompile") exprcompile = app.interphook("exprcompile") Modified: pypy/dist/pypy/objspace/std/dictobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/dictobject.py (original) +++ pypy/dist/pypy/objspace/std/dictobject.py Thu Apr 21 18:18:12 2005 @@ -262,7 +262,7 @@ del currently_in_repr[dict_id] except: pass -''') +''', filename=__file__) dictstr = app.interphook("dictstr") Modified: pypy/dist/pypy/objspace/std/dicttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/dicttype.py (original) +++ pypy/dist/pypy/objspace/std/dicttype.py Thu Apr 21 18:18:12 2005 @@ -71,7 +71,7 @@ def itervalues(d): return iter(d.values()) -''') +''', filename=__file__) #XXX what about dict.fromkeys()? dict_update__ANY_ANY = app.interphook("update") Modified: pypy/dist/pypy/objspace/std/floatobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/floatobject.py (original) +++ pypy/dist/pypy/objspace/std/floatobject.py Thu Apr 21 18:18:12 2005 @@ -72,7 +72,7 @@ return r else: return r + '.0' -''') +''', filename=__file__) repr__Float = app.interphook('repr__Float') str__Float = app.interphook('str__Float') Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Thu Apr 21 18:18:12 2005 @@ -319,7 +319,7 @@ del currently_in_repr[list_id] except: pass -""") +""", filename=__file__) listrepr = app.interphook("listrepr") Modified: pypy/dist/pypy/objspace/std/listtype.py ============================================================================== --- pypy/dist/pypy/objspace/std/listtype.py (original) +++ pypy/dist/pypy/objspace/std/listtype.py Thu Apr 21 18:18:12 2005 @@ -22,7 +22,7 @@ for index in range(len(lst)-1, -1, -1): yield lst[index] -''').interphook('reversed') +''', filename=__file__).interphook('reversed') register_all(vars(), globals()) Modified: pypy/dist/pypy/objspace/std/objecttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/objecttype.py (original) +++ pypy/dist/pypy/objspace/std/objecttype.py Thu Apr 21 18:18:12 2005 @@ -127,7 +127,7 @@ if not isinstance(slotnames, list) and slotnames is not None: raise TypeError, "copy_reg._slotnames didn't return a list or None" return slotnames -''') +''', filename=__file__) reduce_1 = app.interphook('reduce_1') reduce_2 = app.interphook('reduce_2') Modified: pypy/dist/pypy/objspace/std/sliceobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/sliceobject.py (original) +++ pypy/dist/pypy/objspace/std/sliceobject.py Thu Apr 21 18:18:12 2005 @@ -27,7 +27,7 @@ repr__Slice = gateway.applevel(""" def repr__Slice(aslice): return 'slice(%r, %r, %r)' % (aslice.start, aslice.stop, aslice.step) -""").interphook("repr__Slice") +""", filename=__file__).interphook("repr__Slice") def eq__Slice_Slice(space, w_slice1, w_slice2): # We need this because CPython considers that slice1 == slice1 Modified: pypy/dist/pypy/objspace/std/slicetype.py ============================================================================== --- pypy/dist/pypy/objspace/std/slicetype.py (original) +++ pypy/dist/pypy/objspace/std/slicetype.py Thu Apr 21 18:18:12 2005 @@ -64,7 +64,7 @@ slicelength = 0 return start, stop, step, slicelength -""") +""", filename=__file__) slice_indices__ANY_ANY = app.interphook("indices") slice_indices3 = slice_indices__ANY_ANY Modified: pypy/dist/pypy/objspace/std/stringobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/stringobject.py (original) +++ pypy/dist/pypy/objspace/std/stringobject.py Thu Apr 21 18:18:12 2005 @@ -1017,7 +1017,7 @@ return codecs.getdecoder(encoding)(str)[0] else: return codecs.getdecoder(encoding)(str, errors)[0] -''') +''', filename=__file__) # this one should do the import of _formatting: app2 = gateway.applevel(''' @@ -1031,7 +1031,7 @@ return _formatting.format(format, (values,), values) else: return _formatting.format(format, (values,), None) -''', do_imports=True) +''', filename=__file__, do_imports=True) str_translate__String_ANY_ANY = app.interphook('str_translate__String_ANY_ANY') str_decode__String_ANY_ANY = app.interphook('str_decode__String_ANY_ANY') Modified: pypy/dist/pypy/objspace/std/tupleobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/tupleobject.py (original) +++ pypy/dist/pypy/objspace/std/tupleobject.py Thu Apr 21 18:18:12 2005 @@ -118,7 +118,7 @@ return "(" + repr(t[0]) + ",)" else: return "(" + ", ".join([repr(x) for x in t]) + ')' -""") +""", filename=__file__) repr__Tuple = app.interphook('repr__Tuple') Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Thu Apr 21 18:18:12 2005 @@ -290,7 +290,7 @@ fill_mro(base) fill_mro(klass) return mro -""").interphook("abstract_mro") +""", filename=__file__).interphook("abstract_mro") def get_mro(space, klass): if isinstance(klass, W_TypeObject): Modified: pypy/dist/pypy/tool/sourcetools.py ============================================================================== --- pypy/dist/pypy/tool/sourcetools.py (original) +++ pypy/dist/pypy/tool/sourcetools.py Thu Apr 21 18:18:12 2005 @@ -32,8 +32,11 @@ are happy. We provide correct line numbers and a real __file__ attribute. """ - def __init__(self, namespace): - srcname = namespace.get('__file__') + def __init__(self, namespace_or_filename): + if type(namespace_or_filename) is str: + srcname = namespace_or_filename + else: + srcname = namespace_or_filename.get('__file__') if not srcname: # assume the module was executed from the # command line. @@ -48,7 +51,7 @@ # missing source, what to do? self.srctext = None - def __call__(self, src, args={}): + def __call__(self, src, args=None): """ instance NiceCompile (src, args) -- formats src with args and returns a code object ready for exec. Instead of , the code object has correct co_filename and line numbers. @@ -69,13 +72,17 @@ # fake a block prelines -= 1 src = 'if 1:\n' + src - src = '\n' * prelines + src % args + if args is not None: + src = '\n' * prelines + src % args + else: + src = '\n' * prelines + src c = compile(src, self.srcname, "exec") # preserve the arguments of the code in an attribute # of the code's co_filename if self.srcname: srcname = MyStr(self.srcname) - srcname.__sourceargs__ = args + if args is not None: + srcname.__sourceargs__ = args c = newcode_withfilename(c, srcname) return c Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Thu Apr 21 18:18:12 2005 @@ -33,7 +33,7 @@ from pypy.translator.translator import Translator from pypy.objspace.flow import FlowObjSpace -from pypy.tool.sourcetools import render_docstr +from pypy.tool.sourcetools import render_docstr, NiceCompile from pypy.translator.gensupp import ordered_blocks, UniqueList, builtin_base, \ c_string, uniquemodulename, C_IDENTIFIER, NameManager @@ -1525,7 +1525,7 @@ if filename is None: code = py.code.Source(sourcetext).compile() else: - code = compile(sourcetext, filename, 'exec') + code = NiceCompile(filename)(sourcetext) dic = {'__name__': modname} exec code in dic #del dic['__builtins__'] From tismer at codespeak.net Thu Apr 21 21:06:54 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 21 Apr 2005 21:06:54 +0200 (CEST) Subject: [pypy-svn] r10997 - pypy/dist/pypy/translator/test Message-ID: <20050421190654.E7E2927B4F@code1.codespeak.net> Author: tismer Date: Thu Apr 21 21:06:54 2005 New Revision: 10997 Modified: pypy/dist/pypy/translator/test/rpystone.py pypy/dist/pypy/translator/test/test_rpystone.py Log: small fixes. Found the way to use sys in rpystone: Import it into local functions and almost all is fine. Printing is still a problem, because some interp2app instances are badly involved. print sys.stderr.write works fine. Modified: pypy/dist/pypy/translator/test/rpystone.py ============================================================================== --- pypy/dist/pypy/translator/test/rpystone.py (original) +++ pypy/dist/pypy/translator/test/rpystone.py Thu Apr 21 21:06:54 2005 @@ -67,13 +67,10 @@ def main(loops=LOOPS): benchtime, stones = pystones(abs(loops)) - #print "Pystone(%s) time for %d passes = %g" % \ - # (__version__, loops, benchtime) if loops >= 0: import sys sys.stdout.write("Pystone(%s) time for %d passes = %g\n" % \ (__version__, loops, benchtime) ) - #print "This machine benchmarks at %g pystones/second" % stones sys.stdout.write("This machine benchmarks at %g pystones/second\n" % stones) @@ -263,60 +260,27 @@ if EnumLoc == Ident3: return TRUE return FALSE -# XXX the following creates bad code -# sys.argv is seen as a constant. -# also, in entrypoint(), the try..except is -# removed, which is a bug. -# XXX repair this, write a test - -""" def error(msg): - #print >>sys.stderr, msg, + import sys sys.stderr.write(msg+" ") - #print >>sys.stderr, "usage: %s [number_of_loops]" % sys.argv[0] sys.stderr.write("usage: %s [number_of_loops]\n" % sys.argv[0]) sys.exit(100) -def entrypoint(): - loops = LOOPS # initialize early, for slow space - nargs = len(sys.argv) - 1 - if nargs > 1: - error("%d arguments are too many;" % nargs) - elif nargs == 1: - try: loops = int(sys.argv[1]) - except ValueError: - error("Invalid argument %r;" % sys.argv[1]) - else: - if hasattr(sys, 'pypy_objspaceclass'): - loops = LOOPS / 2000 # XXX rough estimate, adjust - #else: - # loops = LOOPS - main(loops) -""" - -if __name__ == '__main__': - # the following should be replaced by - # entrypoint() - # for now, we use main in the test. - - def error(msg): - import sys - #print >>sys.stderr, msg, - sys.stderr.write(msg+" ") - #print >>sys.stderr, "usage: %s [number_of_loops]" % sys.argv[0] - sys.stderr.write("usage: %s [number_of_loops]\n" % sys.argv[0]) - sys.exit(100) - nargs = len(sys.argv) - 1 - if nargs > 1: - error("%d arguments are too many;" % nargs) - elif nargs == 1: - try: loops = int(sys.argv[1]) - except ValueError: - error("Invalid argument %r;" % sys.argv[1]) - else: - if hasattr(sys, 'pypy_objspaceclass'): - loops = LOOPS / 2000 # XXX rough estimate, adjust +def entrypoint(loops=None): + import sys + if loops is None: + loops = LOOPS # initialize early, for slow space + nargs = len(sys.argv) - 1 + if nargs > 1: + error("%d arguments are too many;" % nargs) + elif nargs == 1: + try: loops = int(sys.argv[1]) + except ValueError: + error("Invalid argument %r;" % sys.argv[1]) else: - loops = LOOPS + if hasattr(sys, 'pypy_objspaceclass'): + loops = LOOPS / 2000 # XXX rough estimate, adjust main(loops) +if __name__ == '__main__': + entrypoint() Modified: pypy/dist/pypy/translator/test/test_rpystone.py ============================================================================== --- pypy/dist/pypy/translator/test/test_rpystone.py (original) +++ pypy/dist/pypy/translator/test/test_rpystone.py Thu Apr 21 21:06:54 2005 @@ -3,16 +3,14 @@ import os fname = os.path.join(os.path.dirname(__), "test", "rpystone.py") src = file(fname).read() -init, ign = translate_as_module(src) +init, ign = translate_as_module(src)#, tmpname="/tmp/look.py") LOOPS = 25 def test_rpystone(): space = Space() modic = init(space) - # entry = space.getitem(modic, space.wrap("entrypoint")) - # XXX wecan't use stuff like sys.argv, yet - entry = space.getitem(modic, space.wrap("main")) + entry = space.getitem(modic, space.wrap("entrypoint")) # warm-up,to get everything translated space.call(entry, space.newtuple([space.wrap(-1)])) # now this is the real one From hpk at codespeak.net Thu Apr 21 22:47:59 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 21 Apr 2005 22:47:59 +0200 (CEST) Subject: [pypy-svn] r11003 - pypy/dist/pypy/documentation Message-ID: <20050421204759.95CDF27B53@code1.codespeak.net> Author: hpk Date: Thu Apr 21 22:47:59 2005 New Revision: 11003 Modified: pypy/dist/pypy/documentation/coding-style.txt pypy/dist/pypy/documentation/objspace.txt Log: updating and improving some RPython chapters, they often refered to something as being in the future than in the present. I also introduced some links to source code and starkiller. feel free to review and further enhance. I note that the "integer" chapter is both somewhat outdated with respect to the new ovfcheck() and is sometimes written in the 'I' form. Would be great if someone can state some authoritate things about the current integer situation and refactor the 'I' into a 'we' and follow the style of our other documentation some more. Modified: pypy/dist/pypy/documentation/coding-style.txt ============================================================================== --- pypy/dist/pypy/documentation/coding-style.txt (original) +++ pypy/dist/pypy/documentation/coding-style.txt Thu Apr 21 22:47:59 2005 @@ -10,73 +10,78 @@ We are writing a Python interpreter in Python, using Python's well known ability to step behind the algorithmic problems as language. At first glance, one might -think this achieves nothing but a better understanding for everybody how the -interpreter works. This alone would make it worth doing, but we have much larger -goals. +think this achieves nothing but a better understanding how the interpreter works. +This alone would make it worth doing, but we have much larger goals. CPython vs. PyPy ------------------- -Compared to the CPython implementation, Python takes the role of the C Code. So -actually, we describe something by Python, which has been coded in C already, -with all the restrictions that are implied by C. We are not trying to make the -structures of the CPython interpreter more flexible by rewriting things in C, -but we want to use Python to give an alternative description of the interpreter. +Compared to the CPython implementation, Python takes the role of the C +Code. We rewrite the CPython interpreter in Python itself. We could +also aim at writing a more flexible interpreter at C level but but we +want to use Python to give an alternative description of the interpreter. -The clear advantage is that this description is probably shorter and simpler to +The clear advantage is that such a description is shorter and simpler to read, and many implementation details vanish. The drawback of this approach is -that this interpreter will be unbearably slow. +that this interpreter will be unbearably slow as long as it is run on top +of CPython. -To get to a useful interpreter again, we need to apply some mappings to the -implementation, later. One rather straight-forward is to do a whole program -analysis of the PyPy interpreter and create a C source, again. There are many -other ways, but let's stick with the easiest approach, first. - -In order to make a C code generator simple, we restrict ourselves to a subset of -the Python language, and we adhere to some rules, which make code generation -obvious and easy. - - -Restricted Python is Runtime Python -------------------------------------- - -Restricted Python describes a runnable Python interpreter implementation. This -is a quite static object that can be suitably described by RPython. But the -restrictions do not apply during the startup phase. - - -PyPy Bootstrap -------------------- - -When the PyPy interpreter is started as a CPython program, it can use all of -CPython for a while, until it reaches runtime. That is, all executable code will -be executed using the full power of Python. - -An example can be found in the implementation, which is quite elegant: For the -definition of all the opcodes of the Python interpreter, the module dis is -imported and used. This saves us from adding extra modules to PyPy. The import -code is run at startup time, and we are allowed to use the CPython builtin -import function. - -When the startup code is done, all resulting objects, functions, code blocks -etc. must adhere to the runtime restrictions. All initialized modules are -written out in a persistent manner. Our current idea is to emit a huge C source -file which contains everything created so far. During this process, a whole -program analysis is performed, which makes use of the restrictions defined in -RPython. This enables the code generator to emit efficient replacements for pure -integer objects, for instance. - - -RPython Definition --------------------- - -It might make sense to define a sub-language of Python called RPython, with the -restrictions depicted below. This is an evolving topic, and we're just -collecting things which come up during trying to code the interpreter, so this -is no language at all, but an arbitrary set of rules, which are about to be -changed all day. +To get to a useful interpreter again, we need to translate our +high-level description of Python to a lower level one. One rather +straight-forward way is to do a whole program analysis of the PyPy +interpreter and create a C source, again. There are many other ways, +but let's stick with this somewhat canonical approach. + +our runtime interpreter is "restricted python" +---------------------------------------------- + +In order to make a C code generator feasible we restrict ourselves to a +subset of the Python language, and we adhere to some rules which make +translation to lower level langauges more obvious. + +Unlike source-to-source translations (like e.g. Starkiller_) we start +translation from live python code objects which constitute our Python +interpreter. When doing its work of interpreting bytecode our Python +implementation must behave in a static way often referenced as +"RPythonic". + +.. _Starkiller: http://www.python.org/pycon/dc2004/papers/1/paper.pdf + +However, when the PyPy interpreter is started as a Python program, it +can use all of the Python language until it reaches interpretation +runtime. That is, during initialisation our program is free to use the +full dynamism of Python, including dynamic code generation. + +An example can be found in the current implementation which is quite +elegant: For the definition of all the opcodes of the Python +interpreter, the module ``dis`` is imported and used to initialize our +bytecode interpreter. (See ``__initclass_`` in `pyopcode.py`_). This +saves us from adding extra modules to PyPy. The import code is run at +startup time, and we are allowed to use the CPython builtin import +function. + +After the startup code is finished, all resulting objects, functions, +code blocks etc. must adhere to certain runtime restrictions which we +describe further below. Here is some background for why this is so: +during translation, a whole program analysis ("type inference") is +performed, which makes use of the restrictions defined in RPython. This +enables the code generator to emit efficient machine level replacements +for pure integer objects, for instance. + +.. _`pyopcode.py`: http://codespeak.net/svn/pypy/dist/pypy/interpreter/pyopcode.py + +RPython Definition, not +----------------------- + +The list and exact details of the "RPython" restrictions are a somewhat +evolving topic. In particular, we have no formal language definition +as we find it more practical to discuss and evolve the set of +restrictions while working on the whole program analysis. If you +have any questions about the restrictions below then please feel +free to mail us at pypy-dev at codespeak net. +.. _`wrapped object`: objspace.html#wrapping-rules Object restrictions ------------------------- @@ -87,7 +92,7 @@ the same variable in the same context can receive values of different types, at a possible overhead cost. For example, a variable that can contain a - wrapped object or None is efficiently implemented as a PyObject* pointer that + `wrapped object`_ or None is efficiently implemented as a PyObject* pointer that can be NULL, but a variable that can contain either an integer or a float must be implemented as a union with a type tag in C. @@ -308,10 +313,45 @@ .. _`py.test`: http://codespeak.net/py/current/doc/test.html -Writing a test --------------- +Interpreter level tests +----------------------- + +You can write test functions and methods like this:: -Currently the best reference is to go to some test files and look how they are done. + def test_something(space): + # use space ... + + class TestSomething: + def test_some(self): + # use 'self.space' here + +Note that the prefix `test` for test functions and `Test` for test +classes is mandatory. In both cases you can import Python modules at +module global level and use plain 'assert' statements thanks to the +usage of the `py.test`_ tool. + +Application Level tests +----------------------- + +For testing the conformance and well-behavedness of PyPy it +is often sufficient to write "normal" application-level +Python code that doesn't need to be aware of any particular +coding style or restrictions. If we have a choice we often +use application level tests which usually look like this: + + def app_test_something(): + # application level test code + + class AppTestSomething: + def test_this(self): + # application level test code + +These application level test functions will run on top +of PyPy, i.e. they have no access to interpreter details. +You cannot use imported modules from global level because +they are imported at intepreter-level while you test code +runs at application level. If you need to use modules +you have to import them within the test function. Command line tool test_all -------------------------- @@ -320,14 +360,15 @@ python test_all.py +which is a synonym for the general `py.test`_ utility. For switches to modify test execution invoke "python test_all.py -h". Test conventions ---------------- -- adding features usually requires adding appropriate tests. - (It often even makes sense to first write the tests so that you are - sure that they actually can fail.) +- adding features requires adding appropriate tests. (It often even + makes sense to first write the tests so that you are sure that they + actually can fail.) - All over the pypy source code there are test/ directories which contain unittests. Such scripts can usually be executed Modified: pypy/dist/pypy/documentation/objspace.txt ============================================================================== --- pypy/dist/pypy/documentation/objspace.txt (original) +++ pypy/dist/pypy/documentation/objspace.txt Thu Apr 21 22:47:59 2005 @@ -14,6 +14,8 @@ This document describes aspects of the implementation of PyPy's `Object Spaces`_. +.. _`wrapping rules`: + Wrapping rules ============== From tismer at codespeak.net Thu Apr 21 23:18:13 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 21 Apr 2005 23:18:13 +0200 (CEST) Subject: [pypy-svn] r11005 - pypy/dist/pypy/interpreter Message-ID: <20050421211813.7BD8727B5B@code1.codespeak.net> Author: tismer Date: Thu Apr 21 23:18:13 2005 New Revision: 11005 Modified: pypy/dist/pypy/interpreter/gateway.py Log: removed the old cache code. changed the name of code with no sourcefile name to start with "zznoname" for convenience Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Thu Apr 21 23:18:13 2005 @@ -538,90 +538,6 @@ def _freeze_(self): return True # hint for the annotator: applevel instances are constants -class old_ApplevelInterpClass(ApplevelClass): - """ similar to applevel, but using translation to interp-level. - """ - NOT_RPYTHON_ATTRIBUTES = [] - - def __init__(self, source, filename = None, modname = 'applevelinterp', do_imports=False): - "NOT_RPYTHON" - self.filename = filename - self.source = source - self.modname = modname - self.do_imports = do_imports - - def _builddict(self, space): - "NOT_RPYTHON" - if not self._setup_done: - self._setup() - from pypy.translator.geninterplevel import translate_as_module, \ - render_docstr - initfunc = self.known_source.get(self.source) - if not initfunc: - initfunc, newsrc = translate_as_module( - self.source, self.filename, self.modname, self.do_imports) - f = file(self.cache_filename, "a") - print >> f - print >> f, "#"+72*"_" - print >> f - print >> f, render_docstr( - self.source, "source = ") - print >> f - print >> f, newsrc - print >> f, "known_source[source] = %s" % initfunc.__name__ - w_glob = initfunc(space) - return w_glob - - _setup_done = False - - def _setup(cls): - """NOT_RPYTHON""" - import os - cls.cache_filename = os.path.join(os.path.dirname(__file__), - "_interplevel_cache.py") - try: - if not os.path.exists(cls.cache_filename): - raise ImportError # don't import if only a .pyc file left!!! - from pypy.interpreter._interplevel_cache import known_source, \ - GI_VERSION_RENDERED - except ImportError: - GI_VERSION_RENDERED = 0 - from pypy.translator.geninterplevel import GI_VERSION - if GI_VERSION != GI_VERSION_RENDERED or GI_VERSION is None: - file(cls.cache_filename, "w").write("""\ -# This file acts as a cache for code snippets which have been -# compiled by compile_as_module(). -# It will get a new entry for every piece of code that has -# not been seen, yet. -# -# Caution! Only the code snippet is checked. If something -# is imported, changes are not detected. Also, changes -# to geninterplevel or gateway are also not checked. -# Exception: There is a checked version number in geninterplevel.py -# -# If in doubt, remove this file from time to time. - -known_source = {} - -GI_VERSION_RENDERED = %r - -# self-destruct on double-click: -if __name__ == "__main__": - from pypy.interpreter import _interplevel_cache - import os - namestart = os.path.splitext(_interplevel_cache.__file__)[0] - for ending in ('.py', '.pyc', '.pyo'): - try: - os.unlink(namestart+ending) - except os.error: - pass - -""" % GI_VERSION) - known_source = {} - cls.known_source = known_source - cls._setup_done = True - _setup = classmethod(_setup) - class ApplevelInterpClass(ApplevelClass): """ similar to applevel, but using translation to interp-level. This version maintains a cache folder with single files. @@ -646,10 +562,12 @@ initfunc = self.known_source.get(key) if not initfunc: # try to get it from file - name = '_' + key + name = key if self.filename: prename = os.path.splitext(os.path.basename(self.filename))[0] - name = prename + name + else: + prename = 'zznoname' + name = "%s_%s" % (prename, name) try: __import__("pypy._cache."+name) except ImportError, x: From hpk at codespeak.net Fri Apr 22 00:30:37 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 22 Apr 2005 00:30:37 +0200 (CEST) Subject: [pypy-svn] r11009 - in pypy/dist: lib-python-2.3.4/test pypy/lib pypy/lib/test2 Message-ID: <20050421223037.46ECB27B5B@code1.codespeak.net> Author: hpk Date: Fri Apr 22 00:30:37 2005 New Revision: 11009 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py pypy/dist/pypy/lib/itertools.py pypy/dist/pypy/lib/test2/conftest.py Log: - fix itertools's islice(). Somehow i am wondering why nobody fixed this before or am i missing something? - get rid of the "get pypy/lib out of sys.path" hack (we'll see how far that works) - enabled modified version of test_itertools in lib-python-2.3.4 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 22 00:30:37 2005 @@ -423,8 +423,8 @@ 'test_iter.py' : TestDecl(False, UTModuleMainTest), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_itertools.py' : TestDecl(False, UTModuleMainTest), - #rev 10840: Alternate version in test2 + 'test_itertools.py' : TestDecl(True, UTModuleMainTest, modified=True), + # modified version in pypy/lib/test2 'test_largefile.py' : TestDecl(False, UnknownTestModule), 'test_linuxaudiodev.py' : TestDecl(False, OutputTestModule), Modified: pypy/dist/pypy/lib/itertools.py ============================================================================== --- pypy/dist/pypy/lib/itertools.py (original) +++ pypy/dist/pypy/lib/itertools.py Fri Apr 22 00:30:37 2005 @@ -355,6 +355,10 @@ def __init__(self, iterable, *args): s = slice(*args) self.start, self.stop, self.step = s.start or 0, s.stop, s.step + if not isinstance(self.start, (int, long)): + raise ValueError("Start argument must be an integer") + if self.stop is not None and not isinstance(self.stop, (int,long)): + raise ValueError("Stop argument must be an integer or None") if self.step is None: self.step = 1 if self.start<0 or (self.stop is not None and self.stop<0 Modified: pypy/dist/pypy/lib/test2/conftest.py ============================================================================== --- pypy/dist/pypy/lib/test2/conftest.py (original) +++ pypy/dist/pypy/lib/test2/conftest.py Fri Apr 22 00:30:37 2005 @@ -23,11 +23,11 @@ pypydir = py.path.local(pypy.__file__).dirpath() # hack out pypy/lib -> XXX we need to restructure our test2 situation -pypylibdir = pypydir.join('lib') -if str(pypylibdir) in sys.path: - print "warning, %s on sys.path at cpython level, removing it" % pypylibdir - sys.path.remove(str(pypylibdir)) -assert str(pypylibdir) not in sys.path +#pypylibdir = pypydir.join('lib') +#if str(pypylibdir) in sys.path: +# print "warning, %s on sys.path at cpython level, removing it" % pypylibdir +# sys.path.remove(str(pypylibdir)) +#assert str(pypylibdir) not in sys.path libtestdir = pypydir.dirpath('lib-python-2.3.4', 'test') libconftest = libtestdir.join('conftest.py').getpymodule() # read()) From pedronis at codespeak.net Fri Apr 22 18:08:17 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 22 Apr 2005 18:08:17 +0200 (CEST) Subject: [pypy-svn] r11029 - in pypy/dist/pypy/interpreter: . test Message-ID: <20050422160817.70CB327B61@code1.codespeak.net> Author: pedronis Date: Fri Apr 22 18:08:17 2005 New Revision: 11029 Modified: pypy/dist/pypy/interpreter/gateway.py pypy/dist/pypy/interpreter/test/test_gateway.py Log: support for user specified unwrap/check functions in unwrap specs with test Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Fri Apr 22 18:08:17 2005 @@ -61,8 +61,10 @@ bases_order = [BaseWrappable, W_Root, ObjSpace, Arguments, object] def dispatch(self, meth_family, el, orig_sig, new_sig): - if isinstance(el,str): + if isinstance(el, str): getattr(self, "%s_%s" % (meth_family, el))(el, orig_sig, new_sig) + elif isinstance(el, tuple): + getattr(self, "%s_%s" % (meth_family, 'function'))(el, orig_sig, new_sig) else: for typ in self.bases_order: if issubclass(el, typ): @@ -81,6 +83,9 @@ # checks for checking interp2app func argument names wrt unwrap_spec # and synthetizing an app-level signature + def check_function(self, (func, cls), orig_sig, app_sig): + self.check(cls, orig_sig, app_sig) + def check__BaseWrappable(self, el, orig_sig, app_sig): name = el.__name__ argname = orig_sig.next_arg() @@ -146,6 +151,17 @@ # collect code to emit for interp2app builtin frames based on unwrap_spec + def emit_function(self, (func, cls), orig_sig, emit_sig): + name = func.__name__ + cur = emit_sig.through_scope_w + emit_sig.setfastscope.append( + "obj = %s(scope_w[%d])" % (name, cur)) + emit_sig.miniglobals[name] = func + emit_sig.setfastscope.append( + "self.%s_arg%d = obj" % (name,cur)) + emit_sig.through_scope_w += 1 + emit_sig.run_args.append("self.%s_arg%d" % (name,cur)) + def emit__BaseWrappable(self, el, orig_sig, emit_sig): name = el.__name__ cur = emit_sig.through_scope_w @@ -268,7 +284,13 @@ assert run_args == self.run_args,"unexpected: same spec, different run_args" return frame_cls, box_cls except KeyError: - label = '_'.join([getattr(el, '__name__', el) for el in self.unwrap_spec]) + parts = [] + for el in self.unwrap_spec: + if isinstance(el, tuple): + parts.append(''.join([getattr(subel, '__name__', subel) for subel in el])) + else: + parts.append(getattr(el, '__name__', el)) + label = '_'.join(parts) #print label setfastscope = self.setfastscope if not setfastscope: @@ -338,6 +360,7 @@ # 'args_w' for unpacktuple applied to rest arguments # 'w_args' for rest arguments passed as wrapped tuple # str,int,float: unwrap argument as such type + # (function, cls) use function to check/unwrap argument of type cls # First extract the signature from the (CPython-level) code object from pypy.interpreter import pycode Modified: pypy/dist/pypy/interpreter/test/test_gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/test/test_gateway.py (original) +++ pypy/dist/pypy/interpreter/test/test_gateway.py Fri Apr 22 18:08:17 2005 @@ -67,7 +67,6 @@ w_result = code.exec_code(self.space, w_dict, w_dict) assert self.space.eq_w(w_result, w(1020)) - class TestGateway: def test_app2interp(self): @@ -209,5 +208,26 @@ raises(gateway.OperationError,space.call_function,w_app_g3_f,w(None)) raises(gateway.OperationError,space.call_function,w_app_g3_f,w("foo")) + def test_interp2app_unwrap_spec_func(self): + space = self.space + w = space.wrap + def g_id(space, w_x): + return w_x + l =[] + def checker(w_x): + l.append(w_x) + return w_x + + app_g_id = gateway.interp2app_temp(g_id, + unwrap_spec=[gateway.ObjSpace, + (checker, gateway.W_Root)]) + w_app_g_id = space.wrap(app_g_id) + assert space.eq_w(space.call_function(w_app_g_id,w("foo")),w("foo")) + assert len(l) == 1 + assert space.eq_w(l[0], w("foo")) + + + + def app_g3(b): return 'foo'+b From pedronis at codespeak.net Fri Apr 22 18:11:17 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 22 Apr 2005 18:11:17 +0200 (CEST) Subject: [pypy-svn] r11031 - pypy/dist/pypy/objspace/std Message-ID: <20050422161117.19A0B27B61@code1.codespeak.net> Author: pedronis Date: Fri Apr 22 18:11:16 2005 New Revision: 11031 Modified: pypy/dist/pypy/objspace/std/objecttype.py pypy/dist/pypy/objspace/std/objspace.py pypy/dist/pypy/objspace/std/typeobject.py pypy/dist/pypy/objspace/std/typetype.py Log: we are really using the specific methods on by W_TypeObject instances, also we don't plan right now for multiple impl for types: more precise and annotator friendlier typechecking Modified: pypy/dist/pypy/objspace/std/objecttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/objecttype.py (original) +++ pypy/dist/pypy/objspace/std/objecttype.py Fri Apr 22 18:11:16 2005 @@ -21,8 +21,10 @@ def descr__new__(space, w_type, __args__): from pypy.objspace.std.objectobject import W_ObjectObject + from pypy.objspace.std.typetype import _precheck_for_new # don't allow arguments if the default object.__init__() is about # to be called + w_type = _precheck_for_new(space, w_type) w_parentinit, w_ignored = w_type.lookup_where('__init__') if w_parentinit is space.w_object: try: Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Fri Apr 22 18:11:16 2005 @@ -275,7 +275,7 @@ if self.is_true(self.is_(w_type, w_subtype)): instance = instantiate(cls) else: - w_type.check_user_subclass(w_subtype) + w_subtype = w_type.check_user_subclass(w_subtype) subcls = get_unique_interplevel_subclass(cls, w_subtype.hasdict, w_subtype.nslots != 0) instance = instantiate(subcls) instance.user_setup(self, w_subtype, w_subtype.nslots) Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Fri Apr 22 18:11:16 2005 @@ -49,7 +49,7 @@ # find the most specific typedef instancetypedef = object_typedef for w_base in bases_w: - if not space.is_true(space.isinstance(w_base, space.w_type)): + if not isinstance(w_base, W_TypeObject): continue if issubtypedef(w_base.instancetypedef, instancetypedef): if instancetypedef is not w_base.instancetypedef: @@ -69,7 +69,7 @@ hasoldstylebase = False w_most_derived_base_with_slots = None for w_base in bases_w: - if not space.is_true(space.isinstance(w_base, space.w_type)): + if not isinstance(w_base, W_TypeObject): hasoldstylebase = True continue if w_base.nslots != 0: @@ -177,7 +177,7 @@ def check_user_subclass(w_self, w_subtype): space = w_self.space - if not space.is_true(space.isinstance(w_subtype, space.w_type)): + if not isinstance(w_subtype, W_TypeObject): raise OperationError(space.w_TypeError, space.wrap("X is not a type object (%s)" % ( space.type(w_subtype).name))) @@ -189,6 +189,7 @@ raise OperationError(space.w_TypeError, space.wrap("%s.__new__(%s) is not safe, use %s.__new__()" % ( w_self.name, w_subtype.name, w_subtype.name))) + return w_subtype def getdict(w_self): # XXX should return a Modified: pypy/dist/pypy/objspace/std/typetype.py ============================================================================== --- pypy/dist/pypy/objspace/std/typetype.py (original) +++ pypy/dist/pypy/objspace/std/typetype.py Fri Apr 22 18:11:16 2005 @@ -7,7 +7,10 @@ def descr__new__(space, w_typetype, w_name, w_bases, w_dict): "This is used to create user-defined classes only." from pypy.objspace.std.typeobject import W_TypeObject - # XXX check types + # XXX check types + + w_typetype = _precheck_for_new(space, w_typetype) + bases_w = space.unpackiterable(w_bases) w_winner = w_typetype @@ -43,6 +46,13 @@ w_type.__init__(space, name, bases_w or [space.w_object], dict_w) return w_type +def _precheck_for_new(space, w_type): + from pypy.objspace.std.typeobject import W_TypeObject + if not isinstance(w_type, W_TypeObject): + raise OperationError(space.w_TypeError, + space.wrap("X is not a type object (%s)" % (space.type(w_type).name))) + return w_type + def _check(space, w_type, msg=None): from pypy.objspace.std.typeobject import W_TypeObject if not isinstance(w_type, W_TypeObject): @@ -90,6 +100,7 @@ return space.get(w_result, space.w_None, w_type) def descr__flags(space, w_type): + w_type = _check(space, w_type) return space.wrap(w_type.__flags__) def defunct_descr_get__module(space, w_type): @@ -105,12 +116,14 @@ # therefore, we use the module attribute whenever it exists. def descr_get__module(space, w_type): + w_type = _check(space, w_type) if '__module__' in w_type.dict_w: return w_type.dict_w['__module__'] else: return space.wrap('__builtin__') def descr_set__module(space, w_type, w_value): + w_type = _check(space, w_type) if not (w_type.__flags__ & _HEAPTYPE): raise OperationError(space.w_TypeError, space.wrap("can't set %s.__module__" % From pedronis at codespeak.net Fri Apr 22 21:05:35 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 22 Apr 2005 21:05:35 +0200 (CEST) Subject: [pypy-svn] r11036 - pypy/dist/pypy/objspace/std Message-ID: <20050422190535.D5F2327B61@code1.codespeak.net> Author: pedronis Date: Fri Apr 22 21:05:35 2005 New Revision: 11036 Modified: pypy/dist/pypy/objspace/std/typeobject.py Log: avoid .name being migrated to W_Root, also old style classes don't have it Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Fri Apr 22 21:05:35 2005 @@ -328,6 +328,9 @@ return lst return GOODCANDIDATE # good candidate +def _getname(space, w_cls): + return space.getattr(w_cls, space.wrap('__name__')) + def mro_error(orderlists): cycle = [] candidate = orderlists[-1][0] @@ -335,7 +338,7 @@ if candidate in orderlists[-1][1:]: # explicit error message for this specific case raise OperationError(space.w_TypeError, - space.wrap("duplicate base class " + candidate.name)) + space.wrap("duplicate base class " + _getname(space, candidate))) while candidate not in cycle: cycle.append(candidate) nextblockinglist = mro_blockinglist(candidate, orderlists) @@ -343,7 +346,7 @@ del cycle[:cycle.index(candidate)] cycle.append(candidate) cycle.reverse() - names = [cls.name for cls in cycle] + names = [_getname(space, cls) for cls in cycle] raise OperationError(space.w_TypeError, space.wrap("cycle among base classes: " + ' < '.join(names))) From pedronis at codespeak.net Fri Apr 22 22:13:58 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 22 Apr 2005 22:13:58 +0200 (CEST) Subject: [pypy-svn] r11039 - pypy/dist/pypy/objspace/std Message-ID: <20050422201358.010C127B61@code1.codespeak.net> Author: pedronis Date: Fri Apr 22 22:13:58 2005 New Revision: 11039 Modified: pypy/dist/pypy/objspace/std/typeobject.py Log: avoid migration of .space to W_Root Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Fri Apr 22 22:13:58 2005 @@ -310,7 +310,7 @@ if mro_blockinglist(candidate, orderlists) is GOODCANDIDATE: break # good candidate else: - return mro_error(orderlists) # no candidate found + return mro_error(space, orderlists) # no candidate found assert candidate not in order order.append(candidate) for i in range(len(orderlists)-1, -1, -1): @@ -331,10 +331,9 @@ def _getname(space, w_cls): return space.getattr(w_cls, space.wrap('__name__')) -def mro_error(orderlists): +def mro_error(space, orderlists): cycle = [] candidate = orderlists[-1][0] - space = candidate.space if candidate in orderlists[-1][1:]: # explicit error message for this specific case raise OperationError(space.w_TypeError, From pedronis at codespeak.net Fri Apr 22 23:26:19 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 22 Apr 2005 23:26:19 +0200 (CEST) Subject: [pypy-svn] r11040 - pypy/dist/pypy/module/builtin Message-ID: <20050422212619.C3BA927B61@code1.codespeak.net> Author: pedronis Date: Fri Apr 22 23:26:19 2005 New Revision: 11040 Modified: pypy/dist/pypy/module/builtin/compiling.py Log: type-checking Modified: pypy/dist/pypy/module/builtin/compiling.py ============================================================================== --- pypy/dist/pypy/module/builtin/compiling.py (original) +++ pypy/dist/pypy/module/builtin/compiling.py Fri Apr 22 23:26:19 2005 @@ -20,13 +20,13 @@ supplied_flags |= 4096 if not dont_inherit: try: - frame = space.sys.call('_getframe') - except OperationError, e: - if not e.match(space, space.w_ValueError): - raise - pass + caller = space.getexecutioncontext().framestack.top() + except IndexError: + caller = None else: - supplied_flags |= frame.get_compile_flags() + from pypy.interpreter import pyframe + if isinstance(caller, pyframe.PyFrame): + supplied_flags |= caller.get_compile_flags() try: c = cpy_builtin.compile(str_, filename, startstr, supplied_flags, 1) # It would be nice to propagate all exceptions to app level, From pedronis at codespeak.net Sat Apr 23 00:04:02 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 23 Apr 2005 00:04:02 +0200 (CEST) Subject: [pypy-svn] r11043 - in pypy/dist/pypy: interpreter objspace/std objspace/std/test Message-ID: <20050422220402.6A62727B61@code1.codespeak.net> Author: pedronis Date: Sat Apr 23 00:04:02 2005 New Revision: 11043 Modified: pypy/dist/pypy/interpreter/typedef.py pypy/dist/pypy/objspace/std/test/test_typeobject.py pypy/dist/pypy/objspace/std/typeobject.py Log: type checks for slots descriptors Modified: pypy/dist/pypy/interpreter/typedef.py ============================================================================== --- pypy/dist/pypy/interpreter/typedef.py (original) +++ pypy/dist/pypy/interpreter/typedef.py Sat Apr 23 00:04:02 2005 @@ -213,15 +213,23 @@ class Member(Wrappable): """For slots.""" - def __init__(self, index, name): # XXX ,cls later + def __init__(self, index, name, w_cls): self.index = index self.name = name + self.w_cls = w_cls - def descr_member_get(space, member, w_obj, w_cls=None): + def typecheck(self, space, w_obj): + if not space.is_true(space.isinstance(w_obj, self.w_cls)): + raise OperationError(space.w_TypeError, + space.wrap("descriptor '%s' for '%s' objects doesn't apply to '%s' object" % + (self.name, self.w_cls.name, space.type(w_obj).name))) + + def descr_member_get(space, member, w_obj, w_w_cls=None): if space.is_w(w_obj, space.w_None): return space.wrap(member) else: self = member + self.typecheck(space, w_obj) w_result = w_obj.slots_w[self.index] if w_result is None: raise OperationError(space.w_AttributeError, @@ -230,11 +238,13 @@ def descr_member_set(space, member, w_obj, w_value): self = member - w_obj.slots_w[self.index] = w_value # xxx typecheck + self.typecheck(space, w_obj) + w_obj.slots_w[self.index] = w_value def descr_member_del(space, member, w_obj): self = member - w_obj.slots_w[self.index] = None # xxx typecheck + self.typecheck(space, w_obj) + w_obj.slots_w[self.index] = None Member.typedef = TypeDef( "Member", Modified: pypy/dist/pypy/objspace/std/test/test_typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_typeobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_typeobject.py Sat Apr 23 00:04:02 2005 @@ -237,6 +237,30 @@ raises(TypeError,type.__dict__['__name__'].__get__,1) raises(TypeError,type.__dict__['__mro__'].__get__,1) - + def test_slots_simple(self): + class A(object): + __slots__ = ('x',) + a = A() + raises(AttributeError, getattr, a, 'x') + a.x = 1 + assert a.x == 1 + assert A.__dict__['x'].__get__(a) == 1 + del a.x + raises(AttributeError, getattr, a, 'x') + class B(A): + pass + b = B() + raises(AttributeError, getattr, b, 'x') + b.x = 1 + assert b.x == 1 + assert A.__dict__['x'].__get__(b) == 1 + del b.x + raises(AttributeError, getattr, b, 'x') + class Z(object): + pass + z = Z() + raises(TypeError, A.__dict__['x'].__get__, z) + raises(TypeError, A.__dict__['x'].__set__, z, 1) + raises(TypeError, A.__dict__['x'].__delete__, z) Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Sat Apr 23 00:04:02 2005 @@ -110,7 +110,7 @@ wantdict = True else: # create member - w_self.dict_w[slot_name] = space.wrap(Member(nslots, slot_name)) + w_self.dict_w[slot_name] = space.wrap(Member(nslots, slot_name, w_self)) nslots += 1 w_self.nslots = nslots From hpk at codespeak.net Sat Apr 23 21:40:13 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 23 Apr 2005 21:40:13 +0200 (CEST) Subject: [pypy-svn] r11052 - py/dist/py/path/local py/dist/py/path/local/testing py/dist/py/test pypy/dist/pypy/tool Message-ID: <20050423194013.39B1827B6D@code1.codespeak.net> Author: hpk Date: Sat Apr 23 21:40:12 2005 New Revision: 11052 Modified: py/dist/py/path/local/local.py py/dist/py/path/local/testing/test_local.py py/dist/py/test/config.py pypy/dist/pypy/tool/udir.py Log: change signature of make_numbered_dir Modified: py/dist/py/path/local/local.py ============================================================================== --- py/dist/py/path/local/local.py (original) +++ py/dist/py/path/local/local.py Sat Apr 23 21:40:12 2005 @@ -519,9 +519,9 @@ raise py.error.ENOENT(dpath, "could not create tempdir, %d tries" % tries) mkdtemp = classmethod(mkdtemp) - def make_numbered_dir(cls, rootdir=None, base = 'session-', keep=3): + def make_numbered_dir(cls, prefix='session-', rootdir=None, keep=3): """ return unique directory with a number greater than the current - maximum one. The number is assumed to start directly after base. + maximum one. The number is assumed to start directly after prefix. if keep is true directories with a number less than (maxnum-keep) will be removed. """ @@ -529,15 +529,16 @@ rootdir = cls.get_temproot() def parse_num(path): - """ parse the number out of a path (if it matches the base) """ + """ parse the number out of a path (if it matches the prefix) """ bn = path.basename - if bn.startswith(base): + if bn.startswith(prefix): try: - return int(bn[len(base):]) + return int(bn[len(prefix):]) except ValueError: pass - # compute the maximum number currently in use with the base + # compute the maximum number currently in use with the + # prefix maxnum = -1 for path in rootdir.listdir(): num = parse_num(path) @@ -545,7 +546,7 @@ maxnum = max(maxnum, num) # make the new directory - udir = rootdir.mkdir(base + str(maxnum+1)) + udir = rootdir.mkdir(prefix + str(maxnum+1)) # prune old directories if keep: Modified: py/dist/py/path/local/testing/test_local.py ============================================================================== --- py/dist/py/path/local/testing/test_local.py (original) +++ py/dist/py/path/local/testing/test_local.py Sat Apr 23 21:40:12 2005 @@ -192,7 +192,7 @@ root = self.tmpdir root.ensure('base.not_an_int', dir=1) for i in range(10): - numdir = local.make_numbered_dir(root, 'base.', keep=2) + numdir = local.make_numbered_dir(prefix='base.', rootdir=root, keep=2) assert numdir.check() assert numdir.basename == 'base.%d' %i if i>=1: Modified: py/dist/py/test/config.py ============================================================================== --- py/dist/py/test/config.py (original) +++ py/dist/py/test/config.py Sat Apr 23 21:40:12 2005 @@ -20,7 +20,7 @@ """ global basetemp if basetemp is None: - basetemp = py.path.local.make_numbered_dir(base='pytest-') + basetemp = py.path.local.make_numbered_dir(prefix='pytest-') return basetemp.ensure(string, dir=dir) class Config(object): Modified: pypy/dist/pypy/tool/udir.py ============================================================================== --- pypy/dist/pypy/tool/udir.py (original) +++ pypy/dist/pypy/tool/udir.py Sat Apr 23 21:40:12 2005 @@ -2,5 +2,5 @@ from py.path import local -udir = local.make_numbered_dir(base='usession-', keep=3) +udir = local.make_numbered_dir(prefix='usession-', keep=3) From cfbolz at codespeak.net Sun Apr 24 18:47:42 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sun, 24 Apr 2005 18:47:42 +0200 (CEST) Subject: [pypy-svn] r11412 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050424164742.791E827B75@code1.codespeak.net> Author: cfbolz Date: Sun Apr 24 18:47:42 2005 New Revision: 11412 Added: pypy/dist/pypy/translator/llvm/memorylayout.py pypy/dist/pypy/translator/llvm/pbcrepr.py Modified: pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/genllvm.py pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py pypy/dist/pypy/translator/llvm/typerepr.py Log: * Rewrote ClassRepr and InstanceRepr to use the new MemoryLayout class which is also used by PBCRepr. * Added a simple PBCRepr which represents PBCs (works only for some, at the moment). * Started to work on the recursive-dependencies-problem: repr of class A needs repr of class B needs repr of class A Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Sun Apr 24 18:47:42 2005 @@ -11,10 +11,12 @@ from pypy.translator.llvm.representation import debug, LLVMRepr from pypy.translator.llvm.representation import TmpVariableRepr from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr +from pypy.translator.llvm.typerepr import SimpleTypeRepr from pypy.translator.llvm.funcrepr import FunctionRepr, BoundMethodRepr from pypy.translator.llvm.funcrepr import VirtualMethodRepr +from pypy.translator.llvm.memorylayout import MemoryLayout -debug = True +debug = False class ClassRepr(TypeRepr): l_classes = {} @@ -47,11 +49,9 @@ self.classdef.cls.__name__) if debug: print self.name - if ".Exception.object" in self.objectname: - 1/0 + assert ".Exception.object" not in self.objectname self.dependencies = sets.Set() self.setup_done = False - self.attr_num = {} def setup(self): if self.setup_done: @@ -65,18 +65,17 @@ #XXX if the base class is a builtin Exception we want the #ExceptionTypeRepr, not the ClassRepr if self.classdef.basedef.cls.__module__ == "exceptions": - self.l_base = gen.get_repr(self.classdef.basedef.cls) #XXX we want something more complicated here: #if the class has no __init__ function we need to insert the #'args' attribute the builtin exceptions have - attribs = [] + self.l_base = gen.get_repr(self.classdef.basedef.cls) else: self.l_base = gen.get_repr(self.classdef.basedef) - attribs = self.l_base.attributes + assert self not in self.l_base.get_dependencies() self.dependencies.add(self.l_base) else: self.l_base = None - attribs = [] + attribs = [] meth = [] if debug: print "attributes", self.classdef.attrs @@ -85,7 +84,8 @@ if debug: print key, attr, attr.sources, attr.s_value, if isinstance(attr.s_value, annmodel.SomeImpossibleValue): - print "--> removed" + if debug: + print "--> removed" continue if len(attr.sources) != 0: func = self.classdef.cls.__dict__[attr.name] @@ -102,18 +102,17 @@ attribs.append(attr) if debug: print "--> value" - self.l_attrs_types = [gen.get_repr(attr.s_value) for attr in attribs] - self.dependencies = sets.Set(self.l_attrs_types) - attributes = ", ".join([at.typename() for at in self.l_attrs_types]) - if attributes != "": - self.definition = "%s = type {%%std.class*, %s}" % (self.name, - attributes) + l_att_types = [gen.get_repr(attr.s_value) for attr in attribs] + attribs = [attr.name for attr in attribs] + self.dependencies.update(l_att_types) + if self.l_base is not None: + self.memlayout = self.l_base.memlayout.extend_layout(attribs, + l_att_types) else: - self.definition = "%s = type {%%std.class*}" % self.name - self.attributes = attribs - self.attr_num = {} - for i, attr in enumerate(attribs): - self.attr_num[attr.name] = i + 1 + attribs = ["__class__"] + attribs + l_att_types = [SimpleTypeRepr("%std.class*", gen)] + l_att_types + self.memlayout = MemoryLayout(attribs, l_att_types, self.gen) + self.definition = "%s = %s" % (self.name, self.memlayout.definition()) self.methods = dict(meth) def get_globals(self): @@ -139,11 +138,7 @@ def op_simple_call(self, l_target, args, lblock, l_func): lblock.malloc(l_target, self) - l_tmp = self.gen.get_local_tmp( - PointerTypeRepr("%std.class*", self.gen), l_func) - lblock.getelementptr(l_tmp, l_target, [0, 0]) - lblock.instruction("store %%std.class* %s, %s" % - (self.objectname, l_tmp.typed_name())) + self.memlayout.set(l_target, "__class__", self, lblock, l_func) init = None for cls in self.classdef.getmro(): if "__init__" in cls.attrs: @@ -154,7 +149,7 @@ l_func.dependencies.add(l_init) l_tmp = self.gen.get_local_tmp(PointerTypeRepr("sbyte", self.gen), l_func) - self.dependencies.add(l_tmp) + l_func.dependencies.add(l_tmp) #XXX VirtualMethodRepr should recognize __init__ methods if isinstance(l_init, VirtualMethodRepr): l_init = l_init.l_funcs[l_init.l_classes.index(self)] @@ -166,27 +161,25 @@ print "t_op_getattr of ClassRepr called", l_target, args, self.name if not isinstance(args[1], Constant): raise CompileError,"getattr called with non-constant: %s" % args[1] - if args[1].value in self.attr_num: + if args[1].value in self.memlayout.attrs: l_args0 = self.gen.get_repr(args[0]) l_func.dependencies.add(l_args0) - l_pter = self.gen.get_local_tmp( - PointerTypeRepr(l_target.llvmtype(), self.gen), l_func) - lblock.getelementptr(l_pter, l_args0, - [0, self.attr_num[args[1].value]]) - lblock.load(l_target, l_pter) + self.memlayout.get(l_target, l_args0, args[1].value, lblock, + l_func) return else: if debug: print list(self.classdef.getmro()) for cls in self.classdef.getmro(): l_cls = self.gen.get_repr(cls) - self.dependencies.add(l_cls) + if l_cls != self: + self.dependencies.add(l_cls) if args[1].value in l_cls.methods: if debug: print "class %s, %s matches" % (cls, l_cls) l_args0 = self.gen.get_repr(args[0]) l_func.dependencies.add(l_args0) - l_method = BoundMethodRepr(l_target.type, l_args0, l_cls, + l_method = BoundMethodRepr(l_target.type, l_args0, self.gen) l_func.dependencies.add(l_method) l_method.setup() @@ -198,33 +191,18 @@ def t_op_setattr(self, l_target, args, lblock, l_func): if not isinstance(args[1], Constant): raise CompileError,"setattr called with non-constant: %s" % args[1] - if args[1].value in self.attr_num: - l_type = self.l_attrs_types[self.attr_num[args[1].value] - 1] - l_args0 = self.gen.get_repr(args[0]) - l_value = self.gen.get_repr(args[2]) - self.dependencies.update([l_args0, l_value]) - if l_value.llvmtype() != l_type.typename(): - l_cast = self.gen.get_local_tmp(l_type, l_func) - self.dependencies.add(l_cast) - lblock.cast(l_cast, l_value) - l_value = l_cast - l_pter = self.gen.get_local_tmp( - PointerTypeRepr(l_value.llvmtype(), self.gen), l_func) - lblock.getelementptr(l_pter, l_args0, - [0, self.attr_num[args[1].value]]) - lblock.store(l_value, l_pter) - else: + if args[1].value not in self.memlayout.attr_num: raise CompileError, ("setattr called with unknown attribute %s" % \ args[1].value) + l_args0 = self.gen.get_repr(args[0]) + l_value = self.gen.get_repr(args[2]) + l_func.dependencies.update([l_args0, l_value]) + self.memlayout.set(l_args0, args[1].value, l_value, lblock, l_func) def t_op_type(self, l_target, args, lblock, l_func): l_args0 = self.gen.get_repr(args[0]) l_func.dependencies.add(l_args0) - l_tmp = self.gen.get_local_tmp( - PointerTypeRepr("%std.class*", self.gen), l_func) - lblock.getelementptr(l_tmp, l_args0, [0, 0]) - lblock.load(l_target, l_tmp) - + self.memlayout.get(l_target, l_args0, "__class__", lblock, l_func) def iter_subclasses(self): for cls, classdef in self.classdef.subdefs.iteritems(): @@ -272,6 +250,10 @@ self.dependencies.add(self.l_base) else: self.l_base = None + attribs = ["__class__", "args"] + l_att_types = [SimpleTypeRepr("%std.class*", self.gen), + self.gen.get_repr(annmodel.SomeString())] + self.memlayout = MemoryLayout(attribs, l_att_types, self.gen) def typename(self): return "%std.exception*" @@ -329,7 +311,6 @@ def get(obj, gen): if isinstance(obj, Constant): ann = gen.annotator.binding(obj) - print "InstanceRepr.get: ", obj, ann, ann.__class__ if isinstance(ann, annmodel.SomeInstance): return InstanceRepr(obj, ann.classdef, gen) get = staticmethod(get) @@ -344,20 +325,14 @@ self.name = gen.get_global_tmp(obj.value.__class__.__name__ + ".inst") def setup(self): - self.l_attrib_values = [] - for attr in self.type.attributes: - s_a = self.gen.get_repr(getattr(self.obj.value, attr.name)) + self.l_attrib_values = [self.type] + for attr in self.type.memlayout.attrs[1:]: + s_a = self.gen.get_repr(getattr(self.obj.value, attr)) self.l_attrib_values.append(s_a) self.dependencies.update(self.l_attrib_values) - self.definition = self.name + " = internal global %s {%s" % \ - (self.llvmtype()[:-1], self.type.typed_name()) - if len(self.l_attrib_values) == 0: - self.definition += "}" - else: - attrs = ", ".join([at.typename() + " " + av.llvmname() - for at, av in zip(self.type.l_attrs_types, - self.l_attrib_values)]) - self.definition += ", " + attrs + "}" + self.definition = self.name + \ + " = internal global %s" % self.llvmtype()[:-1] + \ + self.type.memlayout.constant(self.l_attrib_values) def get_globals(self): return self.definition Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Sun Apr 24 18:47:42 2005 @@ -35,8 +35,6 @@ class BuiltinFunctionRepr(LLVMRepr): def get(obj, gen): - if isinstance(obj, Constant): - print "BuiltinFunctionRepr", obj.value if (isinstance(obj, Constant) and (obj in BUILTIN_ANALYZERS or isinstance(gen.annotator.binding(obj), annmodel.SomeBuiltin))): @@ -69,8 +67,9 @@ l_functions = {} def get(obj, gen): name = None - if isinstance(obj, annmodel.SomePBC) and \ - len(obj.prebuiltinstances) == 1: + if (isinstance(obj, annmodel.SomePBC) and + len(obj.prebuiltinstances) == 1 and + isinstance(obj.prebuiltinstances.keys()[0], FunctionType)): obj = obj.prebuiltinstances.keys()[0] elif isinstance(obj, Constant): obj = obj.value @@ -637,14 +636,26 @@ return self.retvalue.llvmtype() class BoundMethodRepr(LLVMRepr): - def __init__(self, l_func, l_self, l_class, gen): + def get(obj, gen): + if isinstance(obj, annmodel.SomePBC) and \ + len(obj.prebuiltinstances) == 1 and \ + isinstance(obj.prebuiltinstances.keys()[0], MethodType): + meth = obj.prebuiltinstances.keys()[0] + l_self = gen.get_repr(Constant(meth.im_self)) + l_func = gen.get_repr(Constant(meth.im_func)) + return BoundMethodRepr(l_func, l_self, gen) + return None + get = staticmethod(get) + + def __init__(self, l_func, l_self, gen): self.gen = gen self.l_func = l_func self.l_self = l_self - self.l_class = l_class - self.dependencies = sets.Set([l_self, l_class, l_func]) + self.dependencies = sets.Set([l_self, l_func]) def t_op_simple_call(self, l_target, args, lblock, l_func): self.l_func.op_simple_call(l_target, [self.l_func, self.l_self] + args[1:], lblock, l_func) + + op_simple_call = t_op_simple_call Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Sun Apr 24 18:47:42 2005 @@ -16,13 +16,13 @@ from pypy.translator.llvm import representation, funcrepr, typerepr, seqrepr -from pypy.translator.llvm import classrepr +from pypy.translator.llvm import classrepr, pbcrepr from pypy.translator.llvm.representation import LLVMRepr, TmpVariableRepr from pypy.translator.llvm.representation import CompileError from pypy.translator.llvm.funcrepr import EntryFunctionRepr -debug = False +debug = True def llvmcompile(transl, optimize=False): @@ -56,7 +56,8 @@ self.global_counts = {} self.local_counts = {} self.repr_classes = [] - for mod in [representation, funcrepr, typerepr, seqrepr, classrepr]: + for mod in [representation, funcrepr, typerepr, seqrepr, classrepr, + pbcrepr]: self.repr_classes += [getattr(mod, s) for s in dir(mod) if "Repr" in s] self.repr_classes = [c for c in self.repr_classes if hasattr(c, "get")] @@ -140,6 +141,8 @@ def write(self, f): init_block = self.l_entrypoint.init_block seen_reprs = sets.Set() + remove_loops(self.l_entrypoint, seen_reprs) + seen_reprs = sets.Set() for l_repr in traverse_dependencies(self.l_entrypoint, seen_reprs): l_repr.collect_init_code(init_block, self.l_entrypoint) include_files = ["operations.ll", "class.ll"] @@ -174,13 +177,35 @@ self.write(f) return f.getvalue() +#traverse dependency-tree starting from the leafes upward +#this is only safe if there are no direct loops def traverse_dependencies(l_repr, seen_reprs): - seen_reprs.add(l_repr) - for l_dep in l_repr.get_dependencies(): - if l_dep in seen_reprs: - continue - seen_reprs.add(l_dep) - for l_dep1 in traverse_dependencies(l_dep, seen_reprs): - yield l_dep1 - yield l_repr + while 1: + length = len(seen_reprs) + if (len(l_repr.get_dependencies() - seen_reprs) == 0 and + l_repr not in seen_reprs): + seen_reprs.add(l_repr) + yield l_repr + break + for l_dep in l_repr.get_dependencies(): + if l_dep in seen_reprs: + continue + for l_dep1 in traverse_dependencies(l_dep, seen_reprs): + yield l_dep1 + if len(seen_reprs) == length: + break + +def remove_loops(l_repr, seen_repr): + deps = l_repr.get_dependencies() + if l_repr in deps: + print "removed direct loop from %s to itself" % l_repr + deps.remove(l_repr) + remove = sets.Set() + for l_dep in deps: + if l_dep in seen_repr: + print "removed loop from %s to %s" % (l_repr, l_dep) + remove.add(l_dep) + else: + remove_loops(l_dep, seen_repr.union(sets.Set([l_repr]))) + deps.difference_update(remove) Added: pypy/dist/pypy/translator/llvm/memorylayout.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/memorylayout.py Sun Apr 24 18:47:42 2005 @@ -0,0 +1,75 @@ +import autopath +import sets + +from types import FunctionType + +from pypy.translator.llvm.representation import debug, LLVMRepr +from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr + +debug = True + +class MemoryLayout(object): + def __init__(self, attrs, l_types, gen): + self.attrs = attrs + self.l_types = l_types + self.attr_num = dict(zip(attrs, range(len(attrs)))) + self.gen = gen + + def extend_layout(self, attrs, l_types): + return MemoryLayout(self.attrs + attrs, self.l_types + l_types, + self.gen) + + def layouts_match(self, other, attrs): #XXX + for attr in attrs: + if self.attr_num[attr] != other.attr_num[attr]: + return False + if (self.l_types[self.attr_num[attr]].typename() != + other.l_types[other.attr_num[attr]].typename()): + return False + return True + + def merge_layouts(self, other, attrs): #XXX + attrs = [] + l_types = [] + for i, attr in enumerate(self.attrs): + l_types.append(self.l_types[i]) + if attr in attrs: + attrs.append(attr) + else: + l_types.append(self.attrs[i]) + + def get(self, l_target, l_object, attr, lblock, l_func): + assert attr in self.attr_num + if debug: + print self.attrs + print attr + l_pter = self.gen.get_local_tmp( + PointerTypeRepr(l_target.llvmtype(), self.gen), l_func) + lblock.getelementptr(l_pter, l_object, + [0, self.attr_num[attr]]) + lblock.load(l_target, l_pter) + + def set(self, l_object, attr, l_value, lblock, l_func): + assert attr in self.attr_num + l_type = self.l_types[self.attr_num[attr]] + if l_value.llvmtype() != l_type.typename(): + l_cast = self.gen.get_local_tmp(l_type, l_func) + l_func.dependencies.add(l_cast) + lblock.cast(l_cast, l_value) + l_value = l_cast + l_pter = self.gen.get_local_tmp( + PointerTypeRepr(l_value.llvmtype(), self.gen), l_func) + lblock.getelementptr(l_pter, l_object, [0, self.attr_num[attr]]) + lblock.store(l_value, l_pter) + + def definition(self): + attributes = ", ".join([at.typename() for at in self.l_types]) + return "type {%s}" % attributes + + def constant(self, l_values): + assert len(l_values) == len(self.attrs) + attrs = ", ".join([at.typename() + " " + av.llvmname() + for at, av in zip(self.l_types, l_values)]) + return "{%s}" % attrs + + Added: pypy/dist/pypy/translator/llvm/pbcrepr.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/pbcrepr.py Sun Apr 24 18:47:42 2005 @@ -0,0 +1,159 @@ +import autopath +import sets + +from types import FunctionType, MethodType + +from pypy.objspace.flow.model import Constant +from pypy.annotation import model as annmodel +from pypy.annotation.classdef import ClassDef +from pypy.translator.llvm import llvmbc + +from pypy.translator.llvm.representation import debug, LLVMRepr, CompileError +from pypy.translator.llvm.representation import TmpVariableRepr +from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr +from pypy.translator.llvm.typerepr import SimpleTypeRepr +from pypy.translator.llvm.funcrepr import FunctionRepr, BoundMethodRepr +from pypy.translator.llvm.funcrepr import VirtualMethodRepr +from pypy.translator.llvm.memorylayout import MemoryLayout + +debug = True + +class PBCTypeRepr(TypeRepr): + def get(obj, gen): + if (isinstance(obj, annmodel.SomePBC) and + len(obj.prebuiltinstances) == 1 and #only one pb instance for now + not isinstance(obj.prebuiltinstances.keys()[0], + (FunctionType, MethodType))): + return PBCTypeRepr(obj, gen) + return None + get = staticmethod(get) + + def __init__(self, obj, gen): + if debug: + print "PBCTypeRepr", obj + self.ann = obj + self.gen = gen + self.dependencies = sets.Set() + self.name = gen.get_global_tmp( + "pbc.%s" % obj.prebuiltinstances.keys()[0].__class__.__name__) + self.objectname = self.name + ".object" + + def setup(self): + bk = self.gen.annotator.bookkeeper + access_sets = bk.pbc_maximal_access_sets + objects = self.ann.prebuiltinstances.keys() + change, rep, access = access_sets.find(objects[0]) + for obj in objects: + change1, rep, access = access_sets.union(rep, obj) + change = change or change1 + self.methods = {} + attribs = ["__class__"] + l_types = [SimpleTypeRepr("%std.class*", self.gen)] + if debug: + print "PBC attributes:", access.attrs + for attr in access.attrs: + actuals = [] + for c in access.objects: + if hasattr(c, attr): + actuals.append(bk.immutablevalue(getattr(c, attr))) + s_value = annmodel.unionof(*actuals) + if debug: + print attr, s_value, + if isinstance(s_value, annmodel.SomeImpossibleValue): + if debug: + print "--> removed" + continue + elif isinstance(s_value, annmodel.SomePBC) and \ + s_value.knowntype in (FunctionType, MethodType): + if debug: + print "--> method" + func = objects[0].__class__.__dict__[attr] + self.methods[attr] = func + else: + if debug: + print "--> value" + attribs.append(attr) + l_types.append(self.gen.get_repr(s_value)) + self.memlayout = MemoryLayout(attribs, l_types, self.gen) + + def get_globals(self): + self.definition = "%s = %s" % (self.name, self.memlayout.definition()) + s = "\n%s = internal global %%std.class {%%std.class* null, uint %i}" + s = s % (self.objectname, abs(id(self))) + return self.definition + s + + def llvmtype(self): + return "%std.class*" + + def llvmname(self): + return self.objectname + + def t_op_getattr(self, l_target, args, lblock, l_func): + if not isinstance(args[1], Constant): + raise CompileError,"getattr called with non-constant: %s" % args[1] + if debug: + print "t_op_getattr of PBCTypeRepr called", args, self.name + if args[1].value in self.memlayout.attrs: + l_args0 = self.gen.get_repr(args[0]) + l_func.dependencies.add(l_args0) + self.memlayout.get(l_target, l_args0, args[1].value, lblock, + l_func) + return + elif args[1].value in self.methods: + print l_target, l_target.llvmname() + if not isinstance(l_target.type, BoundMethodRepr): + l_args0 = self.gen.get_repr(args[0]) + l_func.dependencies.add(l_args0) + l_method = BoundMethodRepr(l_target.type, l_args0, + self.gen) + l_func.dependencies.add(l_method) + l_method.setup() + l_target.type = l_method + return + raise CompileError, ("getattr called with unknown attribute %s" % \ + args[1].value) + + def t_op_setattr(self, l_target, args, lblock, l_func): + raise CompileError, "setattr of PBC called!" + +class PBCRepr(LLVMRepr): + def get(obj, gen): + if isinstance(obj, Constant): + ann = gen.annotator.binding(obj) + if (isinstance(ann, annmodel.SomePBC) and + len(ann.prebuiltinstances) == 1 and + not isinstance(ann.prebuiltinstances.keys()[0], FunctionType)): + return PBCRepr(obj, gen) + return None + get = staticmethod(get) + + def __init__(self, obj, gen): + if debug: + print "PBCRepr: ", obj + self.obj = obj + self.gen = gen + self.dependencies = sets.Set() + self.name = gen.get_global_tmp(obj.value.__class__.__name__ + ".inst") + + def setup(self): + self.type = self.gen.get_repr(self.gen.annotator.binding(self.obj)) + self.dependencies.add(self.type) + self.l_attrib_values = [self.type] + for attr in self.type.memlayout.attrs[1:]: + s_a = self.gen.get_repr(Constant(getattr(self.obj.value, attr))) + self.l_attrib_values.append(s_a) + self.dependencies.update(self.l_attrib_values) + self.definition = self.name + \ + " = internal global %s" % self.llvmtype()[:-1] + \ + self.type.memlayout.constant(self.l_attrib_values) + + def get_globals(self): + return self.definition + + def __getattr__(self, name): + if name.startswith("op_"): + return getattr(self.type, "t_" + name, None) + else: + raise AttributeError, ("PBCRepr instance has no attribute %s" + % repr(name)) + Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Sun Apr 24 18:47:42 2005 @@ -49,7 +49,7 @@ try: return self.dependencies except AttributeError: - return [] + return sets.Set() class SimpleRepr(LLVMRepr): Modified: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/seqrepr.py (original) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Sun Apr 24 18:47:42 2005 @@ -128,7 +128,7 @@ args[1].value in ["append", "reverse", "pop"]: l_args0 = self.gen.get_repr(args[0]) l_func.dependencies.add(l_args0) - l_method = BoundMethodRepr(l_target.type, l_args0, self, self.gen) + l_method = BoundMethodRepr(l_target.type, l_args0, self.gen) l_method.setup() l_target.type = l_method else: Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Sun Apr 24 18:47:42 2005 @@ -375,3 +375,46 @@ return raises(i) except MyException, e: return e.n + +#PBC snippets + +class PBCClass(object): + def __init__(self, a): + self.a = a + self.b = 12 + + def _freeze_(self): + return True + + def get(self, i): + return self.a[i] + +pbc = PBCClass([1, 2, 3, 4]) + +def pbc_passing(pbc, i): + return pbc.a[i] + pbc.get(i) + +def pbc_function1(i): + return pbc_passing(pbc, i) + + +class CIRCULAR1(object): + def __init__(self): + self.a = [1, 2, 3, 4] + self.pbc = pbc1 + + def get(self, i): + return self.a[i] + self.pbc.a.a[i] + self.pbc.b + +class CIRCULAR2(CIRCULAR1): + def __init__(self): + pass + +pbc1 = PBCClass(CIRCULAR2()) +pbc1.a.pbc = pbc1 +pbc1.a.a = range(4) + +def pbc_function2(i): #Circular dependencies: doesn't work at the moment + a = CIRCULAR1() + b = CIRCULAR2() + return a.get(i) Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Sun Apr 24 18:47:42 2005 @@ -336,6 +336,24 @@ assert f(6) == 6 assert f(13) == 13 +class TestPBC(object): + def setup_method(self, method): + if not llvm_found: + py.test.skip("llvm-as not found on path.") + + def test_pbc_function1(self): + f = compile_function(llvmsnippet.pbc_function1, [int]) + assert f(0) == 2 + assert f(1) == 4 + assert f(2) == 6 + assert f(3) == 8 + + def DONOT_test_pbc_function2(self): + f = compile_function(llvmsnippet.pbc_function2, [int]) + assert f(0) == 13 + assert f(1) == 15 + assert f(2) == 17 + assert f(3) == 19 class TestSnippet(object): def setup_method(self, method): @@ -424,3 +442,4 @@ with_more_init = compile_function(test.with_more_init, [int, bool]) assert with_more_init(42, True) == 42 assert with_more_init(42, False) == -42 + Modified: pypy/dist/pypy/translator/llvm/typerepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/typerepr.py (original) +++ pypy/dist/pypy/translator/llvm/typerepr.py Sun Apr 24 18:47:42 2005 @@ -142,9 +142,9 @@ elif obj.__class__ is annmodel.SomeChar: l_repr = SimpleTypeRepr("sbyte", gen) return l_repr - elif obj.__class__ is annmodel.SomePBC: - if obj.knowntype == object or obj.knowntype == ClassType: - return SimpleTypeRepr("%std.class*", gen) +## elif obj.__class__ is annmodel.SomePBC: +## if obj.knowntype == object or obj.knowntype == ClassType: +## return SimpleTypeRepr("%std.class*", gen) elif obj.__class__ is annmodel.SomeObject and \ hasattr(obj, "is_type_of"): return SimpleTypeRepr("%std.class*", gen) From tismer at codespeak.net Mon Apr 25 14:32:21 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 25 Apr 2005 14:32:21 +0200 (CEST) Subject: [pypy-svn] r11420 - in pypy/dist/pypy: interpreter translator/genc Message-ID: <20050425123221.C6FB427B92@code1.codespeak.net> Author: tismer Date: Mon Apr 25 14:32:21 2005 New Revision: 11420 Modified: pypy/dist/pypy/interpreter/gateway.py pypy/dist/pypy/translator/genc/pyobjtype.py Log: fixed gateway and genc to translate targetpypy1 -no-a again. The problem was a py.path.local instance which I left in ApplevelInterpClassafter my latest cache changes. Modified genc to also ignore class attributes if they are defined in NOT_RPYTHON_ATTRIBUTES. This thing took me way too long to find out. Maybe an alternative tagging mechanism is needed: Not just enumerating attributesto be ignored, but maybe also by tagging things like py.path.local as NOT_RPYTHON, themselves? Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Mon Apr 25 14:32:21 2005 @@ -565,7 +565,7 @@ """ similar to applevel, but using translation to interp-level. This version maintains a cache folder with single files. """ - NOT_RPYTHON_ATTRIBUTES = [] + NOT_RPYTHON_ATTRIBUTES = ['cache_path', 'known_source'] def __init__(self, source, filename = None, modname = 'applevelinterp', do_imports=False): "NOT_RPYTHON" @@ -664,7 +664,7 @@ known_source = {} # self-destruct on double-click: -if __name__ == "__main__": +def harakiri(): import pypy._cache as _c from pypy.tool.getpy import py lp = py.path.local @@ -672,6 +672,11 @@ try: pth.remove() except: pass + +if __name__ == "__main__": + harakiri() + +del harakiri """ % GI_VERSION) import pypy._cache cls.known_source = pypy._cache.known_source Modified: pypy/dist/pypy/translator/genc/pyobjtype.py ============================================================================== --- pypy/dist/pypy/translator/genc/pyobjtype.py (original) +++ pypy/dist/pypy/translator/genc/pyobjtype.py Mon Apr 25 14:32:21 2005 @@ -296,6 +296,7 @@ def initclassobj(): content = cls.__dict__.items() content.sort() + ignore = getattr(cls, 'NOT_RPYTHON_ATTRIBUTES', []) for key, value in content: if key.startswith('__'): if key in ['__module__', '__doc__', '__dict__', @@ -313,6 +314,8 @@ if isinstance(value, FunctionType) and value not in self.translator.flowgraphs and self.translator.frozen: print value continue + if key in ignore: + continue yield '%s.%s = %s' % (name, key, self.nameof(value)) From ludal at codespeak.net Mon Apr 25 16:03:44 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Mon, 25 Apr 2005 16:03:44 +0200 (CEST) Subject: [pypy-svn] r11423 - in pypy/dist/pypy/module/parser/recparser: . ebnf leftout python test test/samples tools Message-ID: <20050425140344.9C94527B92@code1.codespeak.net> Author: ludal Date: Mon Apr 25 16:03:44 2005 New Revision: 11423 Added: pypy/dist/pypy/module/parser/recparser/ pypy/dist/pypy/module/parser/recparser/README pypy/dist/pypy/module/parser/recparser/ebnf/ pypy/dist/pypy/module/parser/recparser/ebnf/__init__.py pypy/dist/pypy/module/parser/recparser/ebnf/lexer.py pypy/dist/pypy/module/parser/recparser/ebnf/parse.py pypy/dist/pypy/module/parser/recparser/grammar.py pypy/dist/pypy/module/parser/recparser/leftout/ pypy/dist/pypy/module/parser/recparser/leftout/builders.py pypy/dist/pypy/module/parser/recparser/leftout/compiler.py pypy/dist/pypy/module/parser/recparser/leftout/gen_ast.py pypy/dist/pypy/module/parser/recparser/leftout/parse_grammar.py pypy/dist/pypy/module/parser/recparser/leftout/pgen.py pypy/dist/pypy/module/parser/recparser/python/ pypy/dist/pypy/module/parser/recparser/python/Grammar2.3 pypy/dist/pypy/module/parser/recparser/python/Grammar2.4 pypy/dist/pypy/module/parser/recparser/python/__init__.py pypy/dist/pypy/module/parser/recparser/python/lexer.py pypy/dist/pypy/module/parser/recparser/python/parse.py pypy/dist/pypy/module/parser/recparser/syntaxtree.py pypy/dist/pypy/module/parser/recparser/test/ pypy/dist/pypy/module/parser/recparser/test/samples/ pypy/dist/pypy/module/parser/recparser/test/samples/test_1.py pypy/dist/pypy/module/parser/recparser/test/samples/test_2.py pypy/dist/pypy/module/parser/recparser/test/samples/test_3.py pypy/dist/pypy/module/parser/recparser/test/samples/test_4.py pypy/dist/pypy/module/parser/recparser/test/samples/test_comment.py pypy/dist/pypy/module/parser/recparser/test/samples/test_encoding_declaration.py pypy/dist/pypy/module/parser/recparser/test/samples/test_encoding_declaration2.py pypy/dist/pypy/module/parser/recparser/test/samples/test_encoding_declaration3.py pypy/dist/pypy/module/parser/recparser/test/samples/test_function_calls.py pypy/dist/pypy/module/parser/recparser/test/samples/test_generator.py pypy/dist/pypy/module/parser/recparser/test/samples/test_import_statements.py pypy/dist/pypy/module/parser/recparser/test/samples/test_list_comps.py pypy/dist/pypy/module/parser/recparser/test/samples/test_numbers.py pypy/dist/pypy/module/parser/recparser/test/samples/test_ony_one_comment.py pypy/dist/pypy/module/parser/recparser/test/samples/test_redirected_prints.py pypy/dist/pypy/module/parser/recparser/test/samples/test_samples.py pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_assignment.py pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_class.py pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_for_loop.py pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_in_test.py pypy/dist/pypy/module/parser/recparser/test/samples/test_slice.py pypy/dist/pypy/module/parser/recparser/test/samples/test_whitespaces.py pypy/dist/pypy/module/parser/recparser/test/test_pytokenizer.py pypy/dist/pypy/module/parser/recparser/test/test_samples.py pypy/dist/pypy/module/parser/recparser/test/test_samples2.py pypy/dist/pypy/module/parser/recparser/tools/ pypy/dist/pypy/module/parser/recparser/tools/tokenize.py Log: import into main svn following is the partial revision info from darcs * rewrote test_samples.py for py.test * modified grammar for arglist * added dummy whitespaces test * added testcase for function various function calls * updated test_encoding_declaration2.py to have a non-normalized encoding test case * added encoding normalization * tokenize.py is not used anymore * HACK patch for encoding declarations (remove me when a better solution is found) * added test snippets (esp. for encoding declarations) * added regexp to check encoding declarations * updated python/parse.py's main * prefix each test file with 'test_' * encoding declarations are not parsed correctly * fixed redirected prints (print >> f) syntax errors * unittest_pysource.py is out of date (see test/test_pytokenizer.py) * misc tidy / removed unused imports * added testcases for comments and "is not" * modified official Python Grammar to remove ambiguity * added class testcase * removed debug output * record first appearing comment not last * revert comment regexp change * added unit tests for python tokenizer * added time info + improved test script * added several small tests snippets * added missing RBRACE symbol * fixed bugs with comments, numbers and slices * cleanup * grammar bugfix and recursion removal in Grammar2.3 * improve grammar tree representation * Choose between python 2.3 and python 2.4 grammar * removed import lexers * added python.parse * Use the list of parsed keywords (from Grammar) instead of a hard-coded one * added parser tests * new tests and cleanup * rename simple_for_loop test to simple_in_test * make interface to tokenizer accept strings only * reorganization * export parse_grammar from ebnf * add __init__.py files * move back Grammar into python dir * rework python.lexer * move stuf around * add ebnf/lexer and move TokenSource to grammar * correct ebnf/parse * split python parsing and ebnf grammar parsing * new tests * disable debugging by default * move junk to leftout/ * Reorganize grammar.py * Initial Revision Added: pypy/dist/pypy/module/parser/recparser/README ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/README Mon Apr 25 16:03:44 2005 @@ -0,0 +1,8 @@ + +this is a 'standalone' version of the parser module +as of now it needs '.' to be in the PYTHONPATH so that eg +import ebnf # works + +This should change once we figure out how to integrate properly with +pypy and add an option to switch between the two parsers + Added: pypy/dist/pypy/module/parser/recparser/ebnf/__init__.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/ebnf/__init__.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,2 @@ + +from parse import parse_grammar Added: pypy/dist/pypy/module/parser/recparser/ebnf/lexer.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/ebnf/lexer.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,64 @@ +"""This is a lexer for a Python recursive descent parser +it obeys the TokenSource interface defined for the grammar +analyser in grammar.py +""" + +import re +from grammar import TokenSource + +DEBUG = False + +## Lexer for Python's grammar ######################################## +g_symdef = re.compile(r"[a-zA-Z_][a-zA-Z0-9_]*:",re.M) +g_symbol = re.compile(r"[a-zA-Z_][a-zA-Z0-9_]*",re.M) +g_string = re.compile(r"'[^']+'",re.M) +g_tok = re.compile(r"\[|\]|\(|\)|\*|\+|\|",re.M) +g_skip = re.compile(r"\s*(#.*$)?",re.M) + +class GrammarSource(TokenSource): + """The grammar tokenizer""" + def __init__(self, inpstring ): + TokenSource.__init__(self) + self.input = inpstring + self.pos = 0 + + def context(self): + return self.pos + + def restore(self, ctx ): + self.pos = ctx + + def next(self): + pos = self.pos + inp = self.input + m = g_skip.match(inp, pos) + while m and pos!=m.end(): + pos = m.end() + if pos==len(inp): + self.pos = pos + return None, None + m = g_skip.match(inp, pos) + m = g_symdef.match(inp,pos) + if m: + tk = m.group(0) + self.pos = m.end() + return 'SYMDEF',tk[:-1] + m = g_tok.match(inp,pos) + if m: + tk = m.group(0) + self.pos = m.end() + return tk,tk + m = g_string.match(inp,pos) + if m: + tk = m.group(0) + self.pos = m.end() + return 'STRING',tk[1:-1] + m = g_symbol.match(inp,pos) + if m: + tk = m.group(0) + self.pos = m.end() + return 'SYMBOL',tk + raise ValueError("Unknown token at pos=%d context='%s'" % (pos,inp[pos:pos+20]) ) + + def debug(self): + return self.input[self.pos:self.pos+20] Added: pypy/dist/pypy/module/parser/recparser/ebnf/parse.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/ebnf/parse.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,253 @@ +#!/usr/bin/env python +from grammar import BaseGrammarBuilder, Alternative, Sequence, Token, \ + KleenStar, GrammarElement +from lexer import GrammarSource + +import re +py_name = re.compile(r"[a-zA-Z_][a-zA-Z0-9_]*", re.M) + +punct=['>=', '<>', '!=', '<', '>', '<=', '==', '\\*=', + '//=', '%=', '^=', '<<=', '\\*\\*=', '\\', '=', + '\\+=', '>>=', '=', '&=', '/=', '-=', '\n,', '^', '>>', '&', '\\+', '\\*', '-', '/', '\\.', '\\*\\*', '%', '<<', '//', '\\', '', '\n\\)', '\\(', ';', ':', '@', '\\[', '\\]', '`', '\\{', '\\}'] + +py_punct = re.compile(r""" +>=|<>|!=|<|>|<=|==|~| +\*=|//=|%=|\^=|<<=|\*\*=|\|=|\+=|>>=|=|&=|/=|-=| +,|\^|>>|&|\+|\*|-|/|\.|\*\*|%|<<|//|\|| +\)|\(|;|:|@|\[|\]|`|\{|\} +""", re.M | re.X) + + +TERMINALS = [ + 'NAME', 'NUMBER', 'STRING', 'NEWLINE', 'ENDMARKER', + 'INDENT', 'DEDENT' ] + + +## Grammar Visitors ################################################## +# FIXME: parsertools.py ? parser/__init__.py ? + +class NameToken(Token): + """A token that is not a keyword""" + def __init__(self, keywords=None ): + Token.__init__(self, "NAME") + self.keywords = keywords + + def match(self, source, builder): + """Matches a token. + the default implementation is to match any token whose type + corresponds to the object's name. You can extend Token + to match anything returned from the lexer. for exemple + type, value = source.next() + if type=="integer" and int(value)>=0: + # found + else: + # error unknown or negative integer + """ + ctx = source.context() + tk_type, tk_value = source.next() + if tk_type==self.name: + if tk_value not in self.keywords: + ret = builder.token( tk_type, tk_value, source ) + return self.debug_return( ret, tk_type, tk_value ) + source.restore( ctx ) + return None + + +class EBNFVisitor(object): + def __init__(self): + self.rules = {} + self.terminals = {} + self.current_rule = None + self.current_subrule = 0 + self.tokens = {} + self.items = [] + self.terminals['NAME'] = NameToken() + + def new_name( self ): + rule_name = ":%s_%s" % (self.current_rule, self.current_subrule) + self.current_subrule += 1 + return rule_name + + def new_item( self, itm ): + self.items.append( itm ) + return itm + + def visit_grammar( self, node ): + # print "Grammar:" + for rule in node.nodes: + rule.visit(self) + # the rules are registered already + # we do a pass through the variables to detect + # terminal symbols from non terminals + for r in self.items: + for i,a in enumerate(r.args): + if a.name in self.rules: + assert isinstance(a,Token) + r.args[i] = self.rules[a.name] + if a.name in self.terminals: + del self.terminals[a.name] + # XXX .keywords also contains punctuations + self.terminals['NAME'].keywords = self.tokens.keys() + + def visit_rule( self, node ): + symdef = node.nodes[0].value + self.current_rule = symdef + self.current_subrule = 0 + alt = node.nodes[1] + rule = alt.visit(self) + if not isinstance( rule, Token ): + rule.name = symdef + self.rules[symdef] = rule + + def visit_alternative( self, node ): + items = [ node.nodes[0].visit(self) ] + items+= node.nodes[1].visit(self) + if len(items)==1 and items[0].name.startswith(':'): + return items[0] + alt = Alternative( self.new_name(), *items ) + return self.new_item( alt ) + + def visit_sequence( self, node ): + """ """ + items = [] + for n in node.nodes: + items.append( n.visit(self) ) + if len(items)==1: + return items[0] + elif len(items)>1: + return self.new_item( Sequence( self.new_name(), *items) ) + raise SyntaxError("Found empty sequence") + + def visit_sequence_cont( self, node ): + """Returns a list of sequences (possibly empty)""" + return [n.visit(self) for n in node.nodes] +## L = [] +## for n in node.nodes: +## L.append( n.visit(self) ) +## return L + + def visit_seq_cont_list(self, node): + return node.nodes[1].visit(self) + + + def visit_symbol(self, node): + star_opt = node.nodes[1] + sym = node.nodes[0].value + terminal = self.terminals.get( sym ) + if not terminal: + terminal = Token( sym ) + self.terminals[sym] = terminal + + return self.repeat( star_opt, terminal ) + + def visit_option( self, node ): + rule = node.nodes[1].visit(self) + return self.new_item( KleenStar( self.new_name(), 0, 1, rule ) ) + + def visit_group( self, node ): + rule = node.nodes[1].visit(self) + return self.repeat( node.nodes[3], rule ) + + def visit_STRING( self, node ): + value = node.value + tok = self.tokens.get(value) + if not tok: + if py_punct.match( value ): + tok = Token( value ) + elif py_name.match( value ): + tok = Token('NAME', value) + else: + raise SyntaxError("Unknown STRING value ('%s')" % value ) + self.tokens[value] = tok + return tok + + def visit_sequence_alt( self, node ): + res = node.nodes[0].visit(self) + assert isinstance( res, GrammarElement ) + return res + + def repeat( self, star_opt, myrule ): + if star_opt.nodes: + rule_name = self.new_name() + tok = star_opt.nodes[0].nodes[0] + if tok.value == '+': + return self.new_item( KleenStar( rule_name, _min=1, rule = myrule ) ) + elif tok.value == '*': + return self.new_item( KleenStar( rule_name, _min=0, rule = myrule ) ) + else: + raise SyntaxError("Got symbol star_opt with value='%s'" % tok.value ) + return myrule + + +def grammar_grammar(): + """Builds the grammar for the grammar file + + Here's the description of the grammar's grammar :: + + grammar: rule+ + rule: SYMDEF alternative + + alternative: sequence ( '|' sequence )+ + star: '*' | '+' + sequence: (SYMBOL star? | STRING | option | group star? )+ + option: '[' alternative ']' + group: '(' alternative ')' star? + """ + # star: '*' | '+' + star = Alternative( "star", Token('*'), Token('+') ) + star_opt = KleenStar ( "star_opt", 0, 1, rule=star ) + + # rule: SYMBOL ':' alternative + symbol = Sequence( "symbol", Token('SYMBOL'), star_opt ) + symboldef = Token( "SYMDEF" ) + alternative = Sequence( "alternative" ) + rule = Sequence( "rule", symboldef, alternative ) + + # grammar: rule+ + grammar = KleenStar( "grammar", _min=1, rule=rule ) + + # alternative: sequence ( '|' sequence )* + sequence = KleenStar( "sequence", 1 ) + seq_cont_list = Sequence( "seq_cont_list", Token('|'), sequence ) + sequence_cont = KleenStar( "sequence_cont",0, rule=seq_cont_list ) + + alternative.args = [ sequence, sequence_cont ] + + # option: '[' alternative ']' + option = Sequence( "option", Token('['), alternative, Token(']') ) + + # group: '(' alternative ')' + group = Sequence( "group", Token('('), alternative, Token(')'), star_opt ) + + # sequence: (SYMBOL | STRING | option | group )+ + string = Token('STRING') + alt = Alternative( "sequence_alt", symbol, string, option, group ) + sequence.args = [ alt ] + + return grammar + + +def parse_grammar(stream): + """parses the grammar file + + stream : file-like object representing the grammar to parse + """ + source = GrammarSource(stream.read()) + rule = grammar_grammar() + builder = BaseGrammarBuilder() + result = rule.match(source, builder) + node = builder.stack[-1] + vis = EBNFVisitor() + node.visit(vis) + return vis + + +from pprint import pprint +if __name__ == "__main__": + grambuild = parse_grammar(file('../python/Grammar')) + for i,r in enumerate(grambuild.items): + print "% 3d : %s" % (i, r) + pprint(grambuild.terminals.keys()) + pprint(grambuild.tokens) + print "|".join(grambuild.tokens.keys() ) + Added: pypy/dist/pypy/module/parser/recparser/grammar.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/grammar.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,296 @@ +""" +a generic recursive descent parser +the grammar is defined as a composition of objects +the objects of the grammar are : +Alternative : as in S -> A | B | C +Sequence : as in S -> A B C +KleenStar : as in S -> A* or S -> A+ +Token : a lexer token +""" + +DEBUG = 0 + +#### Abstract interface for a lexer/tokenizer +class TokenSource(object): + """Abstract base class for a source tokenizer""" + def context(self): + """Returns a context to restore the state of the object later""" + + def restore(self, ctx): + """Restore the context""" + + def next(self): + """Returns the next token from the source + a token is a tuple : (type,value) or (None,None) if the end of the + source has been found + """ + + def current_line(self): + """Returns the current line number""" + return 0 + + +###################################################################### + +from syntaxtree import SyntaxNode, TempSyntaxNode, TokenNode + +class BaseGrammarBuilder(object): + """Base/default class for a builder""" + def __init__( self, rules=None, debug=0): + self.rules = rules or {} # a dictionary of grammar rules for debug/reference + self.debug = debug + self.stack = [] + + def context(self): + """Returns the state of the builder to be restored later""" + #print "Save Stack:", self.stack + return len(self.stack) + + def restore(self, ctx): + del self.stack[ctx:] + #print "Restore Stack:", self.stack + + def alternative(self, rule, source): + # Do nothing, keep rule on top of the stack + if rule.is_root(): + elems = self.stack[-1].expand() + self.stack[-1] = SyntaxNode(rule.name, source, *elems) + if self.debug: + self.stack[-1].dumpstr() + return True + + def sequence(self, rule, source, elts_number): + """ """ + items = [] + for node in self.stack[-elts_number:]: + items += node.expand() + if rule.is_root(): + node_type = SyntaxNode + else: + node_type = TempSyntaxNode + # replace N elements with 1 element regrouping them + if elts_number >= 1: + elem = node_type(rule.name, source, *items) + del self.stack[-elts_number:] + self.stack.append(elem) + elif elts_number == 0: + self.stack.append(node_type(rule.name, source)) + if self.debug: + self.stack[-1].dumpstr() + return True + + def token(self, name, value, source): + self.stack.append(TokenNode(name, source, value)) + if self.debug: + self.stack[-1].dumpstr() + return True + + +###################################################################### +# Grammar Elements Classes (Alternative, Sequence, KleenStar, Token) # +###################################################################### +class GrammarElement(object): + """Base parser class""" + def __init__(self, name): + # the rule name + self.name = name + self.args = [] + self._is_root = False + + def is_root(self): + """This is a root node of the grammar, that is one that will + be included in the syntax tree""" + if self.name!=":" and self.name.startswith(":"): + return False + return True + + def match(self, source, builder): + """Try to match a grammar rule + + If next set of tokens matches this grammar element, use + to build an appropriate object, otherwise returns None. + + /!\ If the sets of element didn't match the current grammar + element, then the is restored as it was before the + call to the match() method + """ + return None + + def __str__(self): + return self.display(0) + + def __repr__(self): + return self.display(0) + + def display(self, level): + """Helper function used to represent the grammar. + mostly used for debugging the grammar itself""" + return "GrammarElement" + + + def debug_return(self, ret, *args ): + # FIXME: use a wrapper of match() methods instead of debug_return() + # to prevent additional indirection + if ret and DEBUG>0: + sargs = ",".join( [ str(i) for i in args ] ) + print "matched %s (%s): %s" % (self.__class__.__name__, sargs, self.display() ) + return ret + +class Alternative(GrammarElement): + """Represents an alternative in a grammar rule (as in S -> A | B | C)""" + def __init__(self, name, *args): + GrammarElement.__init__(self, name ) + self.args = list(args) + for i in self.args: + assert isinstance( i, GrammarElement ) + + def match(self, source, builder): + """If any of the rules in self.args matches + returns the object built from the first rules that matches + """ + if DEBUG>1: + print "try alt:", self.display() + for rule in self.args: + m = rule.match( source, builder ) + if m: + ret = builder.alternative( self, source ) + return self.debug_return( ret ) + return False + + def display(self, level=0): + if level==0: + name = self.name + " -> " + elif not self.name.startswith(":"): + return self.name + else: + name = "" + items = [ a.display(1) for a in self.args ] + return name+"(" + "|".join( items ) + ")" + + +class Sequence(GrammarElement): + """Reprensents a Sequence in a grammar rule (as in S -> A B C)""" + def __init__(self, name, *args): + GrammarElement.__init__(self, name ) + self.args = list(args) + for i in self.args: + assert isinstance( i, GrammarElement ) + + def match(self, source, builder): + """matches all of the symbols in order""" + if DEBUG>1: + print "try seq:", self.display() + ctx = source.context() + bctx = builder.context() + for rule in self.args: + m = rule.match(source, builder) + if not m: + # Restore needed because some rules may have been matched + # before the one that failed + source.restore(ctx) + builder.restore(bctx) + return None + ret = builder.sequence(self, source, len(self.args)) + return self.debug_return( ret ) + + def display(self, level=0): + if level == 0: + name = self.name + " -> " + elif not self.name.startswith(":"): + return self.name + else: + name = "" + items = [a.display(1) for a in self.args] + return name + "(" + " ".join( items ) + ")" + +class KleenStar(GrammarElement): + """Represents a KleenStar in a grammar rule as in (S -> A+) or (S -> A*)""" + def __init__(self, name, _min = 0, _max = -1, rule=None): + GrammarElement.__init__( self, name ) + self.args = [rule] + self.min = _min + if _max == 0: + raise ValueError("KleenStar needs max==-1 or max>1") + self.max = _max + self.star = "x" + + def match(self, source, builder): + """matches a number of times self.args[0]. the number must be comprised + between self._min and self._max inclusive. -1 is used to represent infinity""" + if DEBUG>1: + print "try kle:", self.display() + ctx = source.context() + bctx = builder.context() + rules = 0 + rule = self.args[0] + while True: + m = rule.match(source, builder) + if not m: + # Rule should be matched at least 'min' times + if rules0 and rules == self.max: + ret = builder.sequence(self, source, rules) + return self.debug_return( ret, rules ) + + def display(self, level=0): + if level==0: + name = self.name + " -> " + elif not self.name.startswith(":"): + return self.name + else: + name = "" + star = "{%d,%d}" % (self.min,self.max) + if self.min==0 and self.max==1: + star = "?" + elif self.min==0 and self.max==-1: + star = "*" + elif self.min==1 and self.max==-1: + star = "+" + s = self.args[0].display(1) + return name + "%s%s" % (s, star) + + +class Token(GrammarElement): + """Represents a Token in a grammar rule (a lexer token)""" + def __init__( self, name, value = None): + GrammarElement.__init__( self, name ) + self.value = value + + def match(self, source, builder): + """Matches a token. + the default implementation is to match any token whose type + corresponds to the object's name. You can extend Token + to match anything returned from the lexer. for exemple + type, value = source.next() + if type=="integer" and int(value)>=0: + # found + else: + # error unknown or negative integer + """ + ctx = source.context() + tk_type, tk_value = source.next() + if tk_type==self.name: + if self.value is None: + ret = builder.token( tk_type, tk_value, source ) + return self.debug_return( ret, tk_type ) + elif self.value == tk_value: + ret = builder.token( tk_type, tk_value, source ) + return self.debug_return( ret, tk_type, tk_value ) + if DEBUG>1: + print "tried tok:", self.display() + source.restore( ctx ) + return None + + def display(self, level=0): + if self.value is None: + return "<%s>" % self.name + else: + return "<%s>=='%s'" % (self.name, self.value) + + Added: pypy/dist/pypy/module/parser/recparser/leftout/builders.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/leftout/builders.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,185 @@ +"""DEPRECATED""" + +raise DeprecationWarning("This module is broken and out of date. Don't use it !") +from grammar import BaseGrammarBuilder, Alternative, Token, Sequence, KleenStart + +class BuilderToken(object): + def __init__(self, name, value): + self.name = name + self.value = value + + def __str__(self): + return "%s=(%s)" % (self.name, self.value) + + def display(self, indent=""): + print indent,self.name,"=",self.value, + +class BuilderRule(object): + def __init__(self, name, values): + self.name = name + self.values = values + + def __str__(self): + return "%s=(%s)" % (self.name, self.values) + + def display(self, indent=""): + print indent,self.name,'(' + for v in self.values: + v.display(indent+"| ") + print "," + print indent,')', + +class SimpleBuilder(object): + """Default builder class (print output)""" + def __init__(self): + self.gramrules = {} + + def alternative( self, name, value, source ): + print "alt:", self.gramrules.get(name, name), " --", source.debug() + #print "Alternative", name + return BuilderRule( name, [value] ) + + def sequence( self, name, values, source ): + print "seq:", self.gramrules.get(name, name), " --", source.debug() + #print "Sequence", name + return BuilderRule( name, values) + + def token( self, name, value, source ): + print "tok:", self.gramrules.get(name, name), " --", source.debug() + #print "Token", name, value + return BuilderToken( name, value ) + + +class GrammarBuilder(BaseGrammarBuilder): + """Builds a grammar from a grammar desc""" + def __init__(self): + self.rules = {} + self.terminals = {} + self.rule_idx = 0 + self.items = [] + self.tokens = {} + + def alternative( self, name, source ): + pass + + def sequence( self, name, source, N ): + #print "seq:", name, "->", source.debug() + #print "Sequence", name + meth = getattr(self, "build_%s" % name, None) + if meth: + return meth(values) + raise RuntimeError( "symbol %s unhandled" % name ) + + def token( self, name, value, source ): + #print "tok:", name, "->", source.debug() + #print "Token", name, value + if name=="SYMDEF": + return value + elif name=="STRING": + tok = self.tokens.get(value) + if not tok: + tok = Token(value) + self.tokens[value] = tok + return tok + elif name=="SYMBOL": + sym = self.terminals.get(value) + if not sym: + sym = Token(value) + self.terminals[value] = sym + return sym + elif name in ('*','+','(','[',']',')','|',): + return name + return BuilderToken( name, value ) + + def build_sequence( self, values ): + """sequence: sequence_alt+ + sequence_alt: symbol | STRING | option | group star? + """ + if len(values)==1: + return values[0] + if len(values)>1: + seq = Sequence( self.get_name(), *values ) + self.items.append(seq) + debug_rule( seq ) + return seq + return True + + def get_name(self): + s = "Rule_%03d" % self.rule_idx + self.rule_idx += 1 + return s + + def build_rule( self, values ): + rule_def = values[0] + rule_alt = values[1] + if not isinstance(rule_alt,Token): + rule_alt.name = rule_def + self.rules[rule_def] = rule_alt + return True + + def build_alternative( self, values ): + if len(values[1])>0: + alt = Alternative( self.get_name(), values[0], *values[1] ) + debug_rule( alt ) + self.items.append(alt) + return alt + else: + return values[0] + + def build_star_opt( self, values ): + """star_opt: star?""" + if values: + return values[0] + else: + return True + + def build_seq_cont_list( self, values ): + """seq_cont_list: '|' sequence """ + return values[1] + + def build_symbol( self, values ): + """symbol: SYMBOL star?""" + sym = values[0] + star = values[1] + if star is True: + return sym + _min = 0 + _max = -1 + if star=='*': + _min = 0 + elif star=='+': + _min = 1 + sym = KleenStar( self.get_name(), _min, _max, rule=sym ) + sym.star = star + debug_rule( sym ) + self.items.append(sym) + return sym + + def build_group( self, values ): + """group: '(' alternative ')' star?""" + return self.build_symbol( [ values[1], values[3] ] ) + + def build_option( self, values ): + """option: '[' alternative ']'""" + sym = KleenStar( self.get_name(), 0, 1, rule=values[1] ) + debug_rule( sym ) + self.items.append(sym) + return sym + + def build_sequence_cont( self, values ): + """sequence_cont: seq_cont_list*""" + return values + + def build_grammar( self, values ): + """ grammar: rules+""" + # the rules are registered already + # we do a pass through the variables to detect + # terminal symbols from non terminals + for r in self.items: + for i,a in enumerate(r.args): + if a.name in self.rules: + assert isinstance(a,Token) + r.args[i] = self.rules[a.name] + if a.name in self.terminals: + del self.terminals[a.name] + Added: pypy/dist/pypy/module/parser/recparser/leftout/compiler.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/leftout/compiler.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,19 @@ + + +class CompileContext(object): + pass + +class CompilerVisitor(object): + def __init__(self): + self.com = CompileContext() + + def visit_single_input( self, n ): + pass + + def visit_file_input( self, n ): + pass + + + + + Added: pypy/dist/pypy/module/parser/recparser/leftout/gen_ast.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/leftout/gen_ast.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,26 @@ + + + + + +from pgen import grammar_grammar, GrammarSource, GrammarVisitor +from grammar import BaseGrammarBuilder + + +def parse_grammar( fic ): + src = GrammarSource( fic ) + rule = grammar_grammar() + builder = BaseGrammarBuilder() + result = rule.match( src, builder ) + return builder + +if __name__ == "__main__": + import sys + fic = file('Grammar','r') + grambuild = parse_grammar( fic ) + print grambuild.stack + node = grambuild.stack[-1] + vis = GrammarVisitor() + node.visit(vis) + for i,r in enumerate(vis.items): + print "% 3d : %s" % (i, r) Added: pypy/dist/pypy/module/parser/recparser/leftout/parse_grammar.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/leftout/parse_grammar.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,29 @@ + + +from pgen import grammar_grammar, GrammarSource, GrammarVisitor +from grammar import BaseGrammarBuilder + + + + +def parse_grammar( fic ): + src = GrammarSource( fic ) + rule = grammar_grammar() + builder = BaseGrammarBuilder() + result = rule.match( src, builder ) + if not result: + print src.debug() + raise SyntaxError("at %s" % src.debug() ) + return builder + +if __name__ == "__main__": + import sys + fic = file('Grammar','r') + grambuild = parse_grammar( fic ) + print grambuild.stack + node = grambuild.stack[-1] + vis = GrammarVisitor() + node.visit(vis) + for i,r in enumerate(vis.items): + print "% 3d : %s" % (i, r) + Added: pypy/dist/pypy/module/parser/recparser/leftout/pgen.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/leftout/pgen.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,480 @@ +# +# Generate a Python Syntax analyser from the Python's grammar +# The grammar comes from the Grammar file in Python source tree +# +from pylexer import PythonSource +import pylexer +DEBUG=0 + +class BuilderToken(object): + def __init__(self, name, value): + self.name = name + self.value = value + + def __str__(self): + return "%s=(%s)" % (self.name, self.value) + + def display(self, indent=""): + print indent,self.name,"=",self.value, + +class BuilderRule(object): + def __init__(self, name, values): + self.name = name + self.values = values + + def __str__(self): + return "%s=(%s)" % (self.name, self.values) + + def display(self, indent=""): + print indent,self.name,'(' + for v in self.values: + v.display(indent+"| ") + print "," + print indent,')', + +class SimpleBuilder(object): + """Default builder class (print output)""" + def __init__(self): + self.gramrules = {} + + def alternative( self, name, value, source ): + print "alt:", self.gramrules.get(name, name), " --", source.debug() + #print "Alternative", name + return BuilderRule( name, [value] ) + + def sequence( self, name, values, source ): + print "seq:", self.gramrules.get(name, name), " --", source.debug() + #print "Sequence", name + return BuilderRule( name, values) + + def token( self, name, value, source ): + print "tok:", self.gramrules.get(name, name), " --", source.debug() + #print "Token", name, value + return BuilderToken( name, value ) + + +import re +import grammar +from grammar import Token, Alternative, KleenStar, Sequence, TokenSource, BaseGrammarBuilder, Proxy, Pgen + +g_symdef = re.compile(r"[a-zA-Z_][a-zA-Z0-9_]*:",re.M) +g_symbol = re.compile(r"[a-zA-Z_][a-zA-Z0-9_]*",re.M) +g_string = re.compile(r"'[^']+'",re.M) +g_tok = re.compile(r"\[|\]|\(|\)|\*|\+|\|",re.M) +g_skip = re.compile(r"\s*(#.*$)?",re.M) + +class GrammarSource(TokenSource): + """The grammar tokenizer""" + def __init__(self, inpstream ): + TokenSource.__init__(self) + self.input = inpstream.read() + self.pos = 0 + + def context(self): + return self.pos + + def restore(self, ctx ): + self.pos = ctx + + def next(self): + pos = self.pos + inp = self.input + m = g_skip.match(inp, pos) + while m and pos!=m.end(): + pos = m.end() + if pos==len(inp): + self.pos = pos + return None, None + m = g_skip.match(inp, pos) + m = g_symdef.match(inp,pos) + if m: + tk = m.group(0) + self.pos = m.end() + return 'SYMDEF',tk[:-1] + m = g_tok.match(inp,pos) + if m: + tk = m.group(0) + self.pos = m.end() + return tk,tk + m = g_string.match(inp,pos) + if m: + tk = m.group(0) + self.pos = m.end() + return 'STRING',tk[1:-1] + m = g_symbol.match(inp,pos) + if m: + tk = m.group(0) + self.pos = m.end() + return 'SYMBOL',tk + raise ValueError("Unknown token at pos=%d context='%s'" % (pos,inp[pos:pos+20]) ) + + def debug(self): + return self.input[self.pos:self.pos+20] + +def debug_rule( rule ): + nm = rule.__class__.__name__ + print nm, rule.name, "->", + if nm=='KleenStar': + print "(%d,%d,%s)" % (rule.min, rule.max, rule.star), + for x in rule.args: + print x.name, + print + +def debug_rule( *args ): + pass + + +class GrammarBuilder(BaseGrammarBuilder): + """Builds a grammar from a grammar desc""" + def __init__(self): + self.rules = {} + self.terminals = {} + self.rule_idx = 0 + self.items = [] + self.tokens = {} + + def alternative( self, name, source ): + pass + + def sequence( self, name, source, N ): + #print "seq:", name, "->", source.debug() + #print "Sequence", name + meth = getattr(self, "build_%s" % name, None) + if meth: + return meth(values) + raise RuntimeError( "symbol %s unhandled" % name ) + + def token( self, name, value, source ): + #print "tok:", name, "->", source.debug() + #print "Token", name, value + if name=="SYMDEF": + return value + elif name=="STRING": + tok = self.tokens.get(value) + if not tok: + tok = Token(value) + self.tokens[value] = tok + return tok + elif name=="SYMBOL": + sym = self.terminals.get(value) + if not sym: + sym = Token(value) + self.terminals[value] = sym + return sym + elif name in ('*','+','(','[',']',')','|',): + return name + return BuilderToken( name, value ) + + def build_sequence( self, values ): + """sequence: sequence_alt+ + sequence_alt: symbol | STRING | option | group star? + """ + if len(values)==1: + return values[0] + if len(values)>1: + seq = Sequence( self.get_name(), *values ) + self.items.append(seq) + debug_rule( seq ) + return seq + return True + + def get_name(self): + s = "Rule_%03d" % self.rule_idx + self.rule_idx += 1 + return s + + def build_rule( self, values ): + rule_def = values[0] + rule_alt = values[1] + if not isinstance(rule_alt,Token): + rule_alt.name = rule_def + self.rules[rule_def] = rule_alt + return True + + def build_alternative( self, values ): + if len(values[1])>0: + alt = Alternative( self.get_name(), values[0], *values[1] ) + debug_rule( alt ) + self.items.append(alt) + return alt + else: + return values[0] + + def build_star_opt( self, values ): + """star_opt: star?""" + if values: + return values[0] + else: + return True + + def build_seq_cont_list( self, values ): + """seq_cont_list: '|' sequence """ + return values[1] + + def build_symbol( self, values ): + """symbol: SYMBOL star?""" + sym = values[0] + star = values[1] + if star is True: + return sym + _min = 0 + _max = -1 + if star=='*': + _min = 0 + elif star=='+': + _min = 1 + sym = KleenStar( self.get_name(), _min, _max, rule=sym ) + sym.star = star + debug_rule( sym ) + self.items.append(sym) + return sym + + def build_group( self, values ): + """group: '(' alternative ')' star?""" + return self.build_symbol( [ values[1], values[3] ] ) + + def build_option( self, values ): + """option: '[' alternative ']'""" + sym = KleenStar( self.get_name(), 0, 1, rule=values[1] ) + debug_rule( sym ) + self.items.append(sym) + return sym + + def build_sequence_cont( self, values ): + """sequence_cont: seq_cont_list*""" + return values + + def build_grammar( self, values ): + """ grammar: rules+""" + # the rules are registered already + # we do a pass through the variables to detect + # terminal symbols from non terminals + for r in self.items: + for i,a in enumerate(r.args): + if a.name in self.rules: + assert isinstance(a,Token) + r.args[i] = self.rules[a.name] + if a.name in self.terminals: + del self.terminals[a.name] + + +class GrammarVisitor(object): + def __init__(self): + self.rules = {} + self.terminals = {} + self.current_rule = None + self.current_subrule = 0 + self.tokens = {} + self.items = [] + + def new_name( self ): + rule_name = ":%s_%s" % (self.current_rule, self.current_subrule) + self.current_subrule += 1 + return rule_name + + def new_item( self, itm ): + self.items.append( itm ) + return itm + + def visit_grammar( self, node ): + print "Grammar:" + for rule in node.nodes: + rule.visit(self) + # the rules are registered already + # we do a pass through the variables to detect + # terminal symbols from non terminals + for r in self.items: + for i,a in enumerate(r.args): + if a.name in self.rules: + assert isinstance(a,Token) + r.args[i] = self.rules[a.name] + if a.name in self.terminals: + del self.terminals[a.name] + + def visit_rule( self, node ): + symdef = node.nodes[0].value + self.current_rule = symdef + self.current_subrule = 0 + alt = node.nodes[1] + rule = alt.visit(self) + if not isinstance( rule, Token ): + rule.name = symdef + self.rules[symdef] = rule + + def visit_alternative( self, node ): + items = [ node.nodes[0].visit(self) ] + items+= node.nodes[1].visit(self) + if len(items)==1: + return items[0] + alt = Alternative( self.new_name(), *items ) + return self.new_item( alt ) + + def visit_sequence( self, node ): + """ """ + items = [] + for n in node.nodes: + items.append( n.visit(self) ) + if len(items)==1: + return items[0] + elif len(items)>1: + return self.new_item( Sequence( self.new_name(), *items) ) + raise SyntaxError("Found empty sequence") + + def visit_sequence_cont( self, node ): + """Returns a list of sequences (possibly empty)""" + L = [] + for n in node.nodes: + L.append( n.visit(self) ) + return L + + def visit_seq_cont_list( self, node ): + return node.nodes[1].visit(self) + + + def visit_symbol( self, node ): + star_opt = node.nodes[1] + sym = node.nodes[0].value + terminal = self.terminals.get( sym ) + if not terminal: + terminal = Token( sym ) + self.terminals[sym] = terminal + + return self.repeat( star_opt, terminal ) + + def visit_option( self, node ): + rule = node.nodes[1].visit(self) + return self.new_item( KleenStar( self.new_name(), 0, 1, rule ) ) + + def visit_group( self, node ): + rule = node.nodes[1].visit(self) + return self.repeat( node.nodes[3], rule ) + + def visit_STRING( self, node ): + value = node.value + tok = self.tokens.get(value) + if not tok: + if pylexer.py_punct.match( value ): + tok = Token( value ) + elif pylexer.py_name.match( value ): + tok = Token('NAME',value) + else: + raise SyntaxError("Unknown STRING value ('%s')" % value ) + self.tokens[value] = tok + return tok + + def visit_sequence_alt( self, node ): + res = node.nodes[0].visit(self) + assert isinstance( res, Pgen ) + return res + + def repeat( self, star_opt, myrule ): + if star_opt.nodes: + rule_name = self.new_name() + tok = star_opt.nodes[0].nodes[0] + if tok.value == '+': + return self.new_item( KleenStar( rule_name, _min=1, rule = myrule ) ) + elif tok.value == '*': + return self.new_item( KleenStar( rule_name, _min=0, rule = myrule ) ) + else: + raise SyntaxError("Got symbol star_opt with value='%s'" % tok.value ) + return myrule + + +_grammar = """ +grammar: rule+ +rule: SYMDEF alternative + +alternative: sequence ( '|' sequence )+ +star: '*' | '+' +sequence: (SYMBOL star? | STRING | option | group star? )+ +option: '[' alternative ']' +group: '(' alternative ')' star? +""" +def grammar_grammar(): + """Builds the grammar for the grammar file + """ + # star: '*' | '+' + star = Alternative( "star", Token('*'), Token('+') ) + star_opt = KleenStar ( "star_opt", 0, 1, rule=star ) + + # rule: SYMBOL ':' alternative + symbol = Sequence( "symbol", Token('SYMBOL'), star_opt ) + symboldef = Token( "SYMDEF" ) + alternative = Sequence( "alternative" ) + rule = Sequence( "rule", symboldef, alternative ) + + # grammar: rule+ + grammar = KleenStar( "grammar", _min=1, rule=rule ) + + # alternative: sequence ( '|' sequence )* + sequence = KleenStar( "sequence", 1 ) + seq_cont_list = Sequence( "seq_cont_list", Token('|'), sequence ) + sequence_cont = KleenStar( "sequence_cont",0, rule=seq_cont_list ) + + alternative.args = [ sequence, sequence_cont ] + + # option: '[' alternative ']' + option = Sequence( "option", Token('['), alternative, Token(']') ) + + # group: '(' alternative ')' + group = Sequence( "group", Token('('), alternative, Token(')'), star_opt ) + + # sequence: (SYMBOL | STRING | option | group )+ + string = Token('STRING') + alt = Alternative( "sequence_alt", symbol, string, option, group ) + sequence.args = [ alt ] + + return grammar + + +def parse_python( pyf, gram ): + target = gram.rules['file_input'] + src = PythonSource( pyf.read() ) + builder = BaseGrammarBuilder(debug=False, rules=gram.rules) + # for r in gram.items: + # builder.gramrules[r.name] = rg + result = target.match( src, builder ) + print result, builder.stack + if not result: + print src.debug() + raise SyntaxError("at %s" % src.debug() ) + return builder + + +from pprint import pprint +def parse_grammar( fic ): + src = GrammarSource( fic ) + rule = grammar_grammar() + builder = BaseGrammarBuilder() + result = rule.match( src, builder ) + node = builder.stack[-1] + vis = GrammarVisitor() + node.visit(vis) + + return vis + + +if __name__ == "__main__": + grammar.DEBUG = False + import sys + fic = file('Grammar','r') + grambuild = parse_grammar( fic ) + if len(sys.argv)>1: + print "-"*20 + print + pyf = file(sys.argv[1],'r') + DEBUG = 0 + builder = parse_python( pyf, grambuild ) + #print "**", builder.stack + if builder.stack: + print builder.stack[-1].dumpstr() + tp1 = builder.stack[-1] + import parser + tp2 = parser.suite( file(sys.argv[1]).read() ) + + else: + for i,r in enumerate(grambuild.items): + print "% 3d : %s" % (i, r) + pprint(grambuild.terminals.keys()) + pprint(grambuild.tokens) + print "|".join(grambuild.tokens.keys() ) Added: pypy/dist/pypy/module/parser/recparser/python/Grammar2.3 ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/python/Grammar2.3 Mon Apr 25 16:03:44 2005 @@ -0,0 +1,108 @@ +# Grammar for Python + +# Note: Changing the grammar specified in this file will most likely +# require corresponding changes in the parser module +# (../Modules/parsermodule.c). If you can't make the changes to +# that module yourself, please co-ordinate the required changes +# with someone who can; ask around on python-dev for help. Fred +# Drake will probably be listening there. + +# Commands for Kees Blom's railroad program +#diagram:token NAME +#diagram:token NUMBER +#diagram:token STRING +#diagram:token NEWLINE +#diagram:token ENDMARKER +#diagram:token INDENT +#diagram:output\input python.bla +#diagram:token DEDENT +#diagram:output\textwidth 20.04cm\oddsidemargin 0.0cm\evensidemargin 0.0cm +#diagram:rules + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() and input() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +file_input: (NEWLINE | stmt)* ENDMARKER +eval_input: testlist NEWLINE* ENDMARKER + +funcdef: 'def' NAME parameters ':' suite +parameters: '(' [varargslist] ')' +varargslist: (fpdef ['=' test] ',')* ('*' NAME [',' '**' NAME] | '**' NAME) | fpdef ['=' test] (',' fpdef ['=' test])* [','] +fpdef: NAME | '(' fplist ')' +fplist: fpdef (',' fpdef)* [','] + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | exec_stmt | assert_stmt +expr_stmt: testlist (augassign testlist | ('=' testlist)*) +augassign: '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '**=' | '//=' +# For normal assignments, additional restrictions enforced by the interpreter +print_stmt: 'print' ( '>>' test [ (',' test)+ [','] ] | [ test (',' test)* [','] ] ) +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: 'yield' testlist +raise_stmt: 'raise' [test [',' test [',' test]]] +import_stmt: 'import' dotted_as_name (',' dotted_as_name)* | 'from' dotted_name 'import' ('*' | import_as_name (',' import_as_name)*) +import_as_name: NAME [NAME NAME] +dotted_as_name: dotted_name [NAME NAME] +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +exec_stmt: 'exec' expr ['in' test [',' test]] +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite (except_clause ':' suite)+ #diagram:break + ['else' ':' suite] | 'try' ':' suite 'finally' ':' suite) +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test [',' test]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +test: and_test ('or' and_test)* | lambdef +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is' 'not'|'is' +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom trailer* ['**' factor] +atom: '(' [testlist] ')' | '[' [listmaker] ']' | '{' [dictmaker] '}' | '`' testlist1 '`' | NAME | NUMBER | STRING+ +listmaker: test ( list_for | (',' test)* [','] ) +lambdef: 'lambda' [varargslist] ':' test +trailer: '(' ')' | '(' arglist ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: '.' '.' '.' | [test] ':' [test] [sliceop] | test +sliceop: ':' [test] +exprlist: expr (',' expr)* [','] +testlist: test (',' test)* [','] +testlist_safe: test [(',' test)+ [',']] +dictmaker: test ':' test (',' test ':' test)* [','] + +classdef: 'class' NAME ['(' testlist ')'] ':' suite + +# arglist: (argument ',')* (argument [',']| '*' test [',' '**' test] | '**' test) +arglist: (argument ',')* ( '*' test [',' '**' test] | '**' test | argument | [argument ','] ) +argument: [test '='] test # Really [keyword '='] test + +list_iter: list_for | list_if +list_for: 'for' exprlist 'in' testlist_safe [list_iter] +list_if: 'if' test [list_iter] + +testlist1: test (',' test)* + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME Added: pypy/dist/pypy/module/parser/recparser/python/Grammar2.4 ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/python/Grammar2.4 Mon Apr 25 16:03:44 2005 @@ -0,0 +1,118 @@ +# Grammar for Python + +# Note: Changing the grammar specified in this file will most likely +# require corresponding changes in the parser module +# (../Modules/parsermodule.c). If you can't make the changes to +# that module yourself, please co-ordinate the required changes +# with someone who can; ask around on python-dev for help. Fred +# Drake will probably be listening there. + +# Commands for Kees Blom's railroad program +#diagram:token NAME +#diagram:token NUMBER +#diagram:token STRING +#diagram:token NEWLINE +#diagram:token ENDMARKER +#diagram:token INDENT +#diagram:output\input python.bla +#diagram:token DEDENT +#diagram:output\textwidth 20.04cm\oddsidemargin 0.0cm\evensidemargin 0.0cm +#diagram:rules + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() and input() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +file_input: (NEWLINE | stmt)* ENDMARKER +eval_input: testlist NEWLINE* ENDMARKER + +decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorators: decorator+ +funcdef: [decorators] 'def' NAME parameters ':' suite +parameters: '(' [varargslist] ')' +varargslist: (fpdef ['=' test] ',')* ('*' NAME [',' '**' NAME] | '**' NAME) | fpdef ['=' test] (',' fpdef ['=' test])* [','] +fpdef: NAME | '(' fplist ')' +fplist: fpdef (',' fpdef)* [','] + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | exec_stmt | assert_stmt +expr_stmt: testlist (augassign testlist | ('=' testlist)*) +augassign: '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '**=' | '//=' +# For normal assignments, additional restrictions enforced by the interpreter +print_stmt: 'print' ( '>>' test [ (',' test)+ [','] ] | [ test (',' test)* [','] ] ) +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: 'yield' testlist +raise_stmt: 'raise' [test [',' test [',' test]]] +import_stmt: import_name | import_from +import_name: 'import' dotted_as_names +import_from: 'from' dotted_name 'import' ('*' | '(' import_as_names ')' | import_as_names) +import_as_name: NAME [NAME NAME] +dotted_as_name: dotted_name [NAME NAME] +import_as_names: import_as_name (',' import_as_name)* [','] +dotted_as_names: dotted_as_name (',' dotted_as_name)* +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +exec_stmt: 'exec' expr ['in' test [',' test]] +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite (except_clause ':' suite)+ #diagram:break + ['else' ':' suite] | 'try' ':' suite 'finally' ':' suite) +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test [',' test]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +test: and_test ('or' and_test)* | lambdef +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is' 'not'|'is' +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom trailer* ['**' factor] +atom: '(' [testlist_gexp] ')' | '[' [listmaker] ']' | '{' [dictmaker] '}' | '`' testlist1 '`' | NAME | NUMBER | STRING+ +listmaker: test ( list_for | (',' test)* [','] ) +testlist_gexp: test ( gen_for | (',' test)* [','] ) +lambdef: 'lambda' [varargslist] ':' test +trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: '.' '.' '.' | [test] ':' [test] [sliceop] | test +sliceop: ':' [test] +exprlist: expr (',' expr)* [','] +testlist: test (',' test)* [','] +testlist_safe: test [(',' test)+ [',']] +dictmaker: test ':' test (',' test ':' test)* [','] + +classdef: 'class' NAME ['(' testlist ')'] ':' suite + +arglist: (argument ',')* (argument [',']| '*' test [',' '**' test] | '**' test) +argument: [test '='] test [gen_for] # Really [keyword '='] test + +list_iter: list_for | list_if +list_for: 'for' exprlist 'in' testlist_safe [list_iter] +list_if: 'if' test [list_iter] + +gen_iter: gen_for | gen_if +gen_for: 'for' exprlist 'in' test [gen_iter] +gen_if: 'if' test [gen_iter] + +testlist1: test (',' test)* + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME Added: pypy/dist/pypy/module/parser/recparser/python/__init__.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/python/__init__.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,60 @@ +__all__ = [ "parse_file_input", "parse_single_input", "parse_eval_input", + "python_grammar", "PYTHON_GRAMMAR" ] + +from parse import parse_file_input, parse_single_input, parse_eval_input +import os +import sys + +_ver = ".".join([str(i) for i in sys.version_info[:2]]) +PYTHON_GRAMMAR = os.path.join( os.path.dirname(__file__), "Grammar" + _ver ) + +def python_grammar(): + """returns a """ + from ebnf import parse_grammar + level = get_debug() + set_debug( 0 ) + gram = parse_grammar( file(PYTHON_GRAMMAR) ) + set_debug( level ) + return gram + +def get_debug(): + """Return debug level""" + import grammar + return grammar.DEBUG + +def set_debug( level ): + """sets debug mode to """ + import grammar + grammar.DEBUG = level + + +def python_parse(filename): + """parse using CPython's parser module and return nested tuples + """ + pyf = file(filename) + import parser + tp2 = parser.suite(pyf.read()) + return tp2.totuple() + + +def _get_encoding(builder): + if hasattr(builder, '_source_encoding'): + return builder._source_encoding + return None + +def pypy_parse(filename): + """parse using PyPy's parser module and return nested tuples + """ + pyf = file(filename) + builder = parse_file_input(pyf, python_grammar()) + pyf.close() + if builder.stack: + # print builder.stack[-1] + root_node = builder.stack[-1] + nested_tuples = root_node.totuple() + source_encoding = _get_encoding(builder) + if source_encoding is None: + return nested_tuples + else: + return (323, nested_tuples, source_encoding) + return None # XXX raise an exception instead Added: pypy/dist/pypy/module/parser/recparser/python/lexer.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/python/lexer.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,387 @@ +"""This is a lexer for a Python recursive descent parser +it obeys the TokenSource interface defined for the grammar +analyser in grammar.py +""" + +from grammar import TokenSource + +DEBUG = False +import re + +KEYWORDS = [ + 'and', 'assert', 'break', 'class', 'continue', 'def', 'del', + 'elif', 'if', 'import', 'in', 'is', 'finally', 'for', 'from', + 'global', 'else', 'except', 'exec', 'lambda', 'not', 'or', + 'pass', 'print', 'raise', 'return', 'try', 'while', 'yield' + ] + +py_keywords = re.compile(r'(%s)$' % ('|'.join(KEYWORDS)), re.M | re.X) + +py_punct = re.compile(r""" +<>|!=|==|~| +<=|<<=|<<|<| +>=|>>=|>>|>| +\*=|\*\*=|\*\*|\*| +//=|/=|//|/| +%=|\^=|\|=|\+=|=|&=|-=| +,|\^|&|\+|-|\.|%|\|| +\)|\(|;|:|@|\[|\]|`|\{|\} +""", re.M | re.X) + +g_symdef = re.compile(r"[a-zA-Z_][a-zA-Z0-9_]*:", re.M) +g_string = re.compile(r"'[^']+'", re.M) +py_name = re.compile(r"[a-zA-Z_][a-zA-Z0-9_]*", re.M) +py_comment = re.compile(r"#.*$|[ \t\014]*$", re.M) +py_ws = re.compile(r" *", re.M) +py_skip = re.compile(r"[ \t\014]*(#.*$)?", re.M) +py_encoding = re.compile(r"coding[:=]\s*([-\w.]+)") +# py_number = re.compile(r"0x[0-9a-z]+|[0-9]+l|([0-9]+\.[0-9]*|\.[0-9]+|[0-9]+)(e[+-]?[0-9]+)?j?||[0-9]+", re.I) + +# 0x[\da-f]+l matches hexadecimal numbers, possibly defined as long +# \d+l matches and only matches long integers +# (\d+\.\d*|\.\d+|\d+)(e[+-]?\d+)?j? matches simple integers, +# exponential notations and complex +py_number = re.compile(r"""0x[\da-f]+l?| +\d+l| +(\d+\.\d*|\.\d+|\d+)(e[+-]?\d+)?j? +""", re.I | re.X) + +def _normalize_encoding(encoding): + """returns normalized name for + + see dist/src/Parser/tokenizer.c 'get_normal_name()' + for implementation details / reference + + NOTE: for now, parser.suite() raises a MemoryError when + a bad encoding is used. (SF bug #979739) + """ + # lower() + '_' / '-' conversion + encoding = encoding.replace('_', '-').lower() + if encoding.startswith('utf-8'): + return 'utf-8' + for variant in ('latin-1', 'iso-latin-1', 'iso-8859-1'): + if encoding.startswith(variant): + return 'iso-8859-1' + return encoding + +class PythonSource(TokenSource): + """The Python tokenizer""" + def __init__(self, inpstring): + TokenSource.__init__(self) + self.input = inpstring + self.pos = 0 + self.indent = 0 + self.indentstack = [ 0 ] + self.atbol = True + self.line = 1 + self._current_line = 1 + self.pendin = 0 # indentation change waiting to be reported + self.level = 0 + self.linestart = 0 + self.stack = [] + self.stack_pos = 0 + self.comment = '' + self.encoding = None + + def current_line(self): + return self._current_line + + def context(self): + return self.stack_pos + + def restore(self, ctx): + self.stack_pos = ctx + + def _next(self): + """returns the next token from source""" + inp = self.input + pos = self.pos + input_length = len(inp) + if pos >= input_length: + return self.end_of_file() + # Beginning of line + if self.atbol: + self.linestart = pos + col = 0 + m = py_ws.match(inp, pos) + pos = m.end() + col = pos - self.linestart + self.atbol = False + # skip blanklines + m = py_comment.match(inp, pos) + if m: + if not self.comment: + self.comment = m.group(0) + # XXX FIXME: encoding management + if self.line <= 2: + # self.comment can be the previous comment, so don't use it + comment = m.group(0)[1:] + m_enc = py_encoding.search(comment) + if m_enc is not None: + self.encoding = _normalize_encoding(m_enc.group(1)) + # + self.pos = m.end() + 1 + self.line += 1 + self.atbol = True + return self._next() + # the current block is more indented than the previous one + if col > self.indentstack[-1]: + self.indentstack.append(col) + return "INDENT", None + # the current block is less indented than the previous one + while col < self.indentstack[-1]: + self.pendin += 1 + self.indentstack.pop(-1) + if col != self.indentstack[-1]: + raise SyntaxError("Indentation Error") + if self.pendin > 0: + self.pendin -= 1 + return "DEDENT", None + m = py_skip.match(inp, pos) + if m.group(0)[-1:] == '\n': + self.line += 1 + self.comment = m.group(1) or '' + pos = m.end() # always match + if pos >= input_length: + return self.end_of_file() + self.pos = pos + + # STRING + c = inp[pos] + if c in ('r','R'): + if pos < input_length-1 and inp[pos+1] in ("'",'"'): + return self.next_string(raw=1) + elif c in ('u','U'): + if pos < input_length-1: + if inp[pos+1] in ("r",'R'): + if pos 0: + return self._next() + else: + self.atbol = True + comment = self.comment + self.comment = '' + return "NEWLINE", comment + + if c == '\\': + if pos < input_length-1 and inp[pos+1] == '\n': + self.pos += 2 + return self._next() + + m = py_punct.match(inp, pos) + if m: + punct = m.group(0) + if punct in ( '(', '{', '[' ): + self.level += 1 + if punct in ( ')', '}', ']' ): + self.level -= 1 + self.pos = m.end() + return punct, None + raise SyntaxError("Unrecognized token '%s'" % inp[pos:pos+20] ) + + def next(self): + if self.stack_pos >= len(self.stack): + tok, val = self._next() + self.stack.append( (tok, val, self.line) ) + self._current_line = self.line + else: + tok,val,line = self.stack[self.stack_pos] + self._current_line = line + self.stack_pos += 1 + if DEBUG: + print "%d/%d: %s, %s" % (self.stack_pos, len(self.stack), tok, val) + return (tok, val) + + def end_of_file(self): + """return DEDENT and ENDMARKER""" + if len(self.indentstack) == 1: + self.indentstack.pop(-1) + return "NEWLINE", '' #self.comment + elif len(self.indentstack) > 1: + self.indentstack.pop(-1) + return "DEDENT", None + return "ENDMARKER", None + + + def next_string(self, raw=0, uni=0): + pos = self.pos + raw + uni + inp = self.input + quote = inp[pos] + qsize = 1 + if inp[pos:pos+3] == 3*quote: + pos += 3 + quote = 3*quote + qsize = 3 + else: + pos += 1 + while True: + if inp[pos:pos+qsize] == quote: + s = inp[self.pos:pos+qsize] + self.pos = pos+qsize + return "STRING", s + # FIXME : shouldn't it be inp[pos] == os.linesep ? + if inp[pos:pos+2] == "\n" and qsize == 1: + return None, None + if inp[pos] == "\\": + pos += 1 + pos += 1 + + def debug(self): + """return context for debug information""" + if not hasattr(self, '_lines'): + # split lines only once + self._lines = self.input.splitlines() + return 'line %s : %s' % (self.line, self._lines[self.line-1]) + + ## ONLY refactor ideas ########################################### +## def _mynext(self): +## """returns the next token from source""" +## inp = self.input +## pos = self.pos +## input_length = len(inp) +## if pos >= input_length: +## return self.end_of_file() +## # Beginning of line +## if self.atbol: +## self.linestart = pos +## col = 0 +## m = py_ws.match(inp, pos) +## pos = m.end() +## col = pos - self.linestart +## self.atbol = False +## # skip blanklines +## m = py_comment.match(inp, pos) +## if m: +## self.pos = m.end() + 1 +## self.line += 1 +## self.atbol = True +## return self._next() +## # the current block is more indented than the previous one +## if col > self.indentstack[-1]: +## self.indentstack.append(col) +## return "INDENT", None +## # the current block is less indented than the previous one +## while col < self.indentstack[-1]: +## self.pendin += 1 +## self.indentstack.pop(-1) +## if col != self.indentstack[-1]: +## raise SyntaxError("Indentation Error") +## if self.pendin > 0: +## self.pendin -= 1 +## return "DEDENT", None +## m = py_skip.match(inp, pos) +## if m.group(0)[-1:] == '\n': +## self.line += 1 +## pos = m.end() # always match +## if pos >= input_length: +## return self.end_of_file() +## self.pos = pos + +## c = inp[pos] +## chain = (self._check_string, self._check_name, self._check_number, +## self._check_newline, self._check_backslash, self._check_punct) +## for check_meth in chain: +## token_val_pair = check_meth(c, pos) +## if token_val_pair is not None: +## return token_val_pair + + +## def _check_string(self, c, pos): +## inp = self.input +## input_length = len(inp) +## # STRING +## if c in ('r', 'R'): +## if pos < input_length-1 and inp[pos+1] in ("'",'"'): +## return self.next_string(raw=1) +## elif c in ('u','U'): +## if pos < input_length - 1: +## if inp[pos+1] in ("r", 'R'): +## if pos 0: +## return self._next() +## else: +## self.atbol = True +## return "NEWLINE", None +## return None + +## def _check_backslash(self, c, pos): +## inp = self.input +## input_length = len(inp) +## if c == '\\': +## if pos < input_length-1 and inp[pos+1] == '\n': +## self.pos += 2 +## return self._next() +## return None + +## def _check_punct(self, c, pos): +## inp = self.input +## input_length = len(inp) +## m = py_punct.match(inp, pos) +## if m: +## punct = m.group(0) +## if punct in ( '(', '{' ): +## self.level += 1 +## if punct in ( ')', '}' ): +## self.level -= 1 +## self.pos = m.end() +## return punct, None +## raise SyntaxError("Unrecognized token '%s'" % inp[pos:pos+20] ) + Added: pypy/dist/pypy/module/parser/recparser/python/parse.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/python/parse.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,50 @@ +#!/usr/bin/env python +from grammar import BaseGrammarBuilder +from lexer import PythonSource +from ebnf import parse_grammar +from pprint import pprint +import sys +import python + + +def parse_python_source( textsrc, gram, goal ): + """Parse a python source according to goal""" + target = gram.rules[goal] + src = PythonSource(textsrc) + builder = BaseGrammarBuilder(debug=False, rules=gram.rules) + result = target.match(src, builder) + # XXX find a clean way to process encoding declarations + if src.encoding: + builder._source_encoding = src.encoding + # + if not result: + print src.debug() + raise SyntaxError("at %s" % src.debug() ) + return builder + +def parse_file_input(pyf, gram): + """Parse a python file""" + return parse_python_source( pyf.read(), gram, "file_input" ) + +def parse_single_input(textsrc, gram): + """Parse a python file""" + return parse_python_source( textsrc, gram, "single_input" ) + +def parse_eval_input(textsrc, gram): + """Parse a python file""" + return parse_python_source( textsrc, gram, "eval_input" ) + +if __name__ == "__main__": + if len(sys.argv) < 2: + print "python parse.py [-d N] test_file.py" + sys.exit(1) + if sys.argv[1] == "-d": + debug_level = int(sys.argv[2]) + test_file = sys.argv[3] + else: + test_file = sys.argv[1] + print "-"*20 + print + print "pyparse \n", python.pypy_parse(test_file) + print "parser \n", python.python_parse(test_file) + Added: pypy/dist/pypy/module/parser/recparser/syntaxtree.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/syntaxtree.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,151 @@ +import symbol +import token + +TOKEN_MAP = { + "STRING" : token.STRING, + "NUMBER" : token.NUMBER, + "NAME" : token.NAME, + "NEWLINE" : token.NEWLINE, + "DEDENT" : token.DEDENT, + "ENDMARKER" : token.ENDMARKER, + "INDENT" : token.INDENT, + "NEWLINE" : token.NEWLINE, + "NT_OFFSET" : token.NT_OFFSET, + "N_TOKENS" : token.N_TOKENS, + "OP" : token.OP, + "?ERRORTOKEN" : token.ERRORTOKEN, + "&" : token.AMPER, + "&=" : token.AMPEREQUAL, + "`" : token.BACKQUOTE, + "^" : token.CIRCUMFLEX, + "^=" : token.CIRCUMFLEXEQUAL, + ":" : token.COLON, + "," : token.COMMA, + "." : token.DOT, + "//" : token.DOUBLESLASH, + "//=" : token.DOUBLESLASHEQUAL, + "**" : token.DOUBLESTAR, + "**=" : token.DOUBLESTAREQUAL, + "==" : token.EQEQUAL, + "=" : token.EQUAL, + ">" : token.GREATER, + ">=" : token.GREATEREQUAL, + "{" : token.LBRACE, + "}" : token.RBRACE, + "<<" : token.LEFTSHIFT, + "<<=" : token.LEFTSHIFTEQUAL, + "<" : token.LESS, + "<=" : token.LESSEQUAL, + "(" : token.LPAR, + "[" : token.LSQB, + "-=" : token.MINEQUAL, + "-" : token.MINUS, + "!=" : token.NOTEQUAL, + "<>" : token.NOTEQUAL, + "%" : token.PERCENT, + "%=" : token.PERCENTEQUAL, + "+" : token.PLUS, + "+=" : token.PLUSEQUAL, + ")" : token.RBRACE, + ">>" : token.RIGHTSHIFT, + ">>=" : token.RIGHTSHIFTEQUAL, + ")" : token.RPAR, + "]" : token.RSQB, + ";" : token.SEMI, + "/" : token.SLASH, + "/=" : token.SLASHEQUAL, + "*" : token.STAR, + "*=" : token.STAREQUAL, + "~" : token.TILDE, + "|" : token.VBAR, + "|=" : token.VBAREQUAL, + } + + + + +class SyntaxNode(object): + """A syntax node""" + def __init__(self, name, source, *args): + self.name = name + self.nodes = list(args) + self.lineno = source.current_line() + + def dumptree(self, treenodes, indent): + treenodes.append(self.name) + if len(self.nodes) > 1: + treenodes.append(" -> (\n") + treenodes.append(indent+" ") + for node in self.nodes: + node.dumptree(treenodes, indent+" ") + treenodes.append(")\n") + treenodes.append(indent) + elif len(self.nodes) == 1: + treenodes.append(" ->\n") + treenodes.append(indent+" ") + self.nodes[0].dumptree(treenodes, indent+" ") + + def dumpstr(self): + treenodes = [] + self.dumptree(treenodes, "") + return "".join(treenodes) + + def __repr__(self): + return "" % (self.name, id(self)) + + def __str__(self): + return "(%s)" % self.name + + def visit(self, visitor): + visit_meth = getattr(visitor, "visit_%s" % self.name, None) + if visit_meth: + return visit_meth(self) + # helper function for nodes that have only one subnode: + if len(self.nodes) == 1: + return self.nodes[0].visit(visitor) + raise RuntimeError("Unknonw Visitor for %r" % self.name) + + def expand(self): + return [ self ] + + def totuple(self): + l = [getattr(symbol, self.name, (0,self.name) )] + l += [node.totuple() for node in self.nodes] + return tuple(l) + + +class TempSyntaxNode(SyntaxNode): + """A temporary syntax node to represent intermediate rules""" + def expand(self): + return self.nodes + +class TokenNode(SyntaxNode): + """A token node""" + def __init__(self, name, source, value): + SyntaxNode.__init__(self, name, source) + self.value = value + + def dumptree(self, treenodes, indent): + if self.value: + treenodes.append("%s='%s' (%d) " % (self.name, self.value, self.lineno)) + else: + treenodes.append("'%s' (%d) " % (self.name, self.lineno)) + + def __repr__(self): + if self.value is not None: + return "<%s=%s>" % ( self.name, repr(self.value)) + else: + return "<%s!>" % (self.name,) + + def totuple(self): + num = TOKEN_MAP.get(self.name, -1) + if num == -1: + print "Unknown", self.name, self.value + if self.value is not None: + val = self.value + else: + if self.name not in ("NEWLINE", "INDENT", "DEDENT", "ENDMARKER"): + val = self.name + else: + val = self.value or '' + return (num, val) Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_1.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_1.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,3 @@ + +x = y + 1 + Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_2.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_2.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,16 @@ + + +L = [] +print L[0:10] + +def f(): + print 1 + # commentaire foireux +x = 1 +s = "asd" + +class A: + def f(): + pass + + Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_3.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_3.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1 @@ +a[1:] Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_4.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_4.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1 @@ +a is not None Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_comment.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_comment.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,6 @@ +x = 0x1L # comment +a = 1 # yo + # hello +# world +a = 2 +# end Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_encoding_declaration.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_encoding_declaration.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,2 @@ +# -*- coding: ISO-8859-1 -*- +a = 1 # keep this statement for now (see test_only_one_comment.py) Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_encoding_declaration2.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_encoding_declaration2.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,3 @@ +#!/usr/bin/env python +# coding: ISO_LATIN_1 +a = 1 Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_encoding_declaration3.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_encoding_declaration3.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,5 @@ + + +# coding: ISO-8859-1 +# encoding on the third line <=> no encoding +a = 1 Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_function_calls.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_function_calls.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,11 @@ +f() +f(a) +f(a,) +f(a,b) +f(a, b,) +f(*args) +f(**kwargs) +f(*args, **kwargs) +f(a, *args, **kwargs) +f(a, b, *args, **kwargs) +a = 1 Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_generator.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_generator.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,3 @@ +def f(n): + for i in range(n): + yield n Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_import_statements.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_import_statements.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,2 @@ +import os +import os.path as osp Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_list_comps.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_list_comps.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,4 @@ +[i for i in range(10) if i%2 == 0] +# same list on several lines +[i for i in range(10) + if i%2 == 0] Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_numbers.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_numbers.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,8 @@ +a = 1 +a = -1 +a = 1. +a = .2 +a = 1.2 +a = 1e3 +a = 1.3e4 +a = -1.3 Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_ony_one_comment.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_ony_one_comment.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1 @@ +# only one comment Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_redirected_prints.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_redirected_prints.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1 @@ +print >> f Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_samples.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_samples.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,96 @@ + + + +import os, os.path as osp +import sys +from ebnf import parse_grammar +from python import python_parse, pypy_parse, set_debug +from pprint import pprint +import grammar +grammar.DEBUG = False +from symbol import sym_name + + +def name(elt): + return "%s[%d]"% (sym_name.get(elt,elt),elt) + +def read_samples_dir(): + return [osp.join('samples', fname) for fname in os.listdir('samples') + if fname.endswith('.py')] + + +def print_sym_tuple( tup ): + print "\n(", + for elt in tup: + if type(elt)==int: + print name(elt), + elif type(elt)==str: + print repr(elt), + else: + print_sym_tuple(elt) + print ")", + +def assert_tuples_equal(tup1, tup2, curpos = (), disp=""): + if disp: + print "\n"+disp+"(", + for index, (elt1, elt2) in enumerate(zip(tup1, tup2)): + if disp and elt1==elt2 and type(elt1)==int: + print name(elt1), + if elt1 != elt2: + if type(elt1) is tuple and type(elt2) is tuple: + if disp: + disp=disp+" " + assert_tuples_equal(elt1, elt2, curpos + (index,), disp) + print + print "TUP1" + print_sym_tuple(tup1) + print + print "TUP2" + print_sym_tuple(tup2) + + raise AssertionError('Found difference at %s : %s != %s' % + (curpos, name(elt1), name(elt2) ), curpos) + if disp: + print ")", + +def test_samples( samples ): + for sample in samples: + pypy_tuples = pypy_parse(sample) + python_tuples = python_parse(sample) + print "="*20 + print file(sample).read() + print "-"*10 + pprint(pypy_tuples) + print "-"*10 + pprint(python_tuples) + try: + assert_tuples_equal( python_tuples, pypy_tuples, disp=" " ) + assert python_tuples == pypy_tuples + except AssertionError,e: + print + print "python_tuples" + show( python_tuples, e.args[-1] ) + print + print "pypy_tuples" + show( pypy_tuples, e.args[-1] ) + raise + + +def show( tup, idxs ): + for level, i in enumerate(idxs): + print " "*level , tup + tup=tup[i] + print tup + +if __name__=="__main__": + import getopt + opts, args = getopt.getopt( sys.argv[1:], "d:", [] ) + for opt, val in opts: + if opt=="-d": + set_debug(int(val)) + if args: + samples = args + else: + samples = read_samples_dir() + + test_samples( samples ) Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_assignment.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_assignment.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1 @@ +x = 1 Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_class.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_class.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,12 @@ +class A: + + def with_white_spaces_before(self): + pass + + + def another_method(self, foo): + """with a docstring + on several lines + # with a sharpsign + """ + self.bar = foo Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_for_loop.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_for_loop.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,3 @@ +for x in range(10): + pass + Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_in_test.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_simple_in_test.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1 @@ +x in range(10) Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_slice.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_slice.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1 @@ +a[1:] Added: pypy/dist/pypy/module/parser/recparser/test/samples/test_whitespaces.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/samples/test_whitespaces.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,2 @@ +l = [] +l . append ( 12 ) Added: pypy/dist/pypy/module/parser/recparser/test/test_pytokenizer.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/test_pytokenizer.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,111 @@ +import unittest +from python.lexer import PythonSource, py_number, g_symdef, g_string, py_name, \ + py_comment, py_ws, py_punct + +class TokenValPair(tuple): + token = 'Override me' + def __new__(cls, val = None): + return tuple.__new__(cls, (cls.token, val)) + +TokenMap = { + 'Equals' : "=", + 'NonePair' : None, + } +ctx = globals() +for classname in ('Number', 'String', 'EndMarker', 'NewLine', 'Dedent', 'Name', + 'Equals', 'NonePair', 'SymDef', 'Symbol'): + classdict = {'token' : TokenMap.get(classname, classname.upper())} + ctx[classname] = type(classname, (TokenValPair,), classdict) + + +PUNCTS = [ '>=', '<>', '!=', '<', '>', '<=', '==', '*=', + '//=', '%=', '^=', '<<=', '**=', '|=', + '+=', '>>=', '=', '&=', '/=', '-=', ',', '^', + '>>', '&', '+', '*', '-', '/', '.', '**', + '%', '<<', '//', '|', ')', '(', ';', ':', + '@', '[', ']', '`', '{', '}', + ] + + +BAD_SYNTAX_STMTS = [ + # "yo yo", + """for i in range(10): + print i + print 'bad dedent here'""", + """for i in range(10): + print i + print 'Bad indentation here'""", + ] + +def parse_source(source): + lexer = PythonSource(source) + tokens = [] + last_token = '' + while last_token != 'ENDMARKER': + last_token, value = lexer.next() + tokens.append((last_token, value)) + return tokens + + +NUMBERS = [ + '1', '1.23', '1.', '0', + '1L', '1l', + '0x12L', '0x12l', '0X12', '0x12', + '1j', '1J', + '1e2', '1.2e4', + '0.1', '0.', '0.12', '.2', + ] + +BAD_NUMBERS = [ + 'j', '0xg', '0xj', '0xJ', + ] + +class PythonSourceTC(unittest.TestCase): + """ """ + def setUp(self): + pass + + def test_empty_string(self): + """make sure defined regexps don't match empty string""" + rgxes = {'numbers' : py_number, + 'defsym' : g_symdef, + 'strings' : g_string, + 'names' : py_name, + 'punct' : py_punct, + } + for label, rgx in rgxes.items(): + self.assert_(rgx.match('') is None, '%s matches empty string' % label) + + def test_several_lines_list(self): + """tests list definition on several lines""" + s = """['a' + ]""" + tokens = parse_source(s) + self.assertEquals(tokens, [('[', None), ('STRING', "'a'"), (']', None), + ('NEWLINE', ''), ('ENDMARKER', None)]) + + def test_numbers(self): + """make sure all kind of numbers are correctly parsed""" + for number in NUMBERS: + self.assertEquals(parse_source(number)[0], ('NUMBER', number)) + neg = '-%s' % number + self.assertEquals(parse_source(neg)[:2], + [('-', None), ('NUMBER', number)]) + for number in BAD_NUMBERS: + self.assertNotEquals(parse_source(number)[0], ('NUMBER', number)) + + def test_hex_number(self): + tokens = parse_source("a = 0x12L") + self.assertEquals(tokens, [('NAME', 'a'), ('=', None), + ('NUMBER', '0x12L'), ('NEWLINE', ''), + ('ENDMARKER', None)]) + + def test_punct(self): + for pstr in PUNCTS: + tokens = parse_source( pstr ) + self.assertEqual( tokens[0][0], pstr ) + + +if __name__ == '__main__': + unittest.main() + Added: pypy/dist/pypy/module/parser/recparser/test/test_samples.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/test_samples.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,95 @@ +"""test module for CPython / PyPy nested tuples comparison""" + +import os, os.path as osp +import sys +from ebnf import parse_grammar +from python import python_parse, pypy_parse, set_debug +from pprint import pprint +import grammar +grammar.DEBUG = False +from symbol import sym_name + + +def name(elt): + return "%s[%s]"% (sym_name.get(elt,elt),elt) + +def read_samples_dir(): + return [osp.join('samples', fname) for fname in os.listdir('samples') if fname.endswith('.py')] + +def print_sym_tuple(nested, level=0, limit=15, names=False, trace=()): + buf = [] + if level <= limit: + buf.append("%s(" % (" "*level)) + else: + buf.append("(") + for index, elt in enumerate(nested): + # Test if debugging and if on last element of error path + if trace and not trace[1:] and index == trace[0]: + buf.append('\n----> ') + if type(elt) is int: + if names: + buf.append(name(elt)) + else: + buf.append(str(elt)) + buf.append(', ') + elif type(elt) is str: + buf.append(repr(elt)) + else: + if level < limit: + buf.append('\n') + buf.extend(print_sym_tuple(elt, level+1, limit, + names, trace[1:])) + buf.append(')') + return buf + +def assert_tuples_equal(tup1, tup2, curpos = ()): + for index, (elt1, elt2) in enumerate(zip(tup1, tup2)): + if elt1 != elt2: + if type(elt1) is tuple and type(elt2) is tuple: + assert_tuples_equal(elt1, elt2, curpos + (index,)) + raise AssertionError('Found difference at %s : %s != %s' % + (curpos, name(elt1), name(elt2) ), curpos) + +from time import time, clock +def test_samples( samples ): + time_reports = {} + for sample in samples: + print "testing", sample + tstart1, cstart1 = time(), clock() + pypy_tuples = pypy_parse(sample) + tstart2, cstart2 = time(), clock() + python_tuples = python_parse(sample) + time_reports[sample] = (time() - tstart2, tstart2-tstart1, clock() - cstart2, cstart2-cstart1 ) + #print "-"*10, "PyPy parse results", "-"*10 + #print ''.join(print_sym_tuple(pypy_tuples, names=True)) + #print "-"*10, "CPython parse results", "-"*10 + #print ''.join(print_sym_tuple(python_tuples, names=True)) + print + try: + assert_tuples_equal(pypy_tuples, python_tuples) + except AssertionError,e: + error_path = e.args[-1] + print "ERROR PATH =", error_path + print "="*80 + print file(sample).read() + print "="*80 + print "-"*10, "PyPy parse results", "-"*10 + print ''.join(print_sym_tuple(pypy_tuples, names=True, trace=error_path)) + print "-"*10, "CPython parse results", "-"*10 + print ''.join(print_sym_tuple(python_tuples, names=True, trace=error_path)) + print "Failed on (%s)" % sample + # raise + pprint(time_reports) + +if __name__=="__main__": + import getopt + opts, args = getopt.getopt( sys.argv[1:], "d:", [] ) + for opt, val in opts: + if opt == "-d": + set_debug(int(val)) + if args: + samples = args + else: + samples = read_samples_dir() + + test_samples( samples ) Added: pypy/dist/pypy/module/parser/recparser/test/test_samples2.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/test/test_samples2.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,70 @@ +"""test module for CPython / PyPy nested tuples comparison""" +import os, os.path as osp +from python import python_parse, pypy_parse +from pprint import pprint +import grammar +grammar.DEBUG = False +from symbol import sym_name + +def name(elt): + return "%s[%s]"% (sym_name.get(elt,elt),elt) + +def print_sym_tuple(nested, level=0, limit=15, names=False, trace=()): + buf = [] + if level <= limit: + buf.append("%s(" % (" "*level)) + else: + buf.append("(") + for index, elt in enumerate(nested): + # Test if debugging and if on last element of error path + if trace and not trace[1:] and index == trace[0]: + buf.append('\n----> ') + if type(elt) is int: + if names: + buf.append(name(elt)) + else: + buf.append(str(elt)) + buf.append(', ') + elif type(elt) is str: + buf.append(repr(elt)) + else: + if level < limit: + buf.append('\n') + buf.extend(print_sym_tuple(elt, level+1, limit, + names, trace[1:])) + buf.append(')') + return buf + +def assert_tuples_equal(tup1, tup2, curpos = ()): + for index, (elt1, elt2) in enumerate(zip(tup1, tup2)): + if elt1 != elt2: + if type(elt1) is tuple and type(elt2) is tuple: + assert_tuples_equal(elt1, elt2, curpos + (index,)) + raise AssertionError('Found difference at %s : %s != %s\n' % + (curpos, name(elt1), name(elt2) ), curpos) + +def test_samples(): + samples_dir = osp.join(osp.dirname(__file__), 'samples') + for fname in os.listdir(samples_dir): + if not fname.endswith('.py'): + continue + abspath = osp.join(samples_dir, fname) + yield check_parse, abspath + +def check_parse(filepath): + pypy_tuples = pypy_parse(filepath) + python_tuples = python_parse(filepath) + try: + assert_tuples_equal(pypy_tuples, python_tuples) + except AssertionError, e: + error_path = e.args[-1] + print "ERROR PATH =", error_path + print "="*80 + print file(filepath).read() + print "="*80 + print "-"*10, "PyPy parse results", "-"*10 + print ''.join(print_sym_tuple(pypy_tuples, names=True, trace=error_path)) + print "-"*10, "CPython parse results", "-"*10 + print ''.join(print_sym_tuple(python_tuples, names=True, trace=error_path)) + assert False, filepath + Added: pypy/dist/pypy/module/parser/recparser/tools/tokenize.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/parser/recparser/tools/tokenize.py Mon Apr 25 16:03:44 2005 @@ -0,0 +1,15 @@ + +import sys +from python.lexer import PythonSource + + +def parse_file(filename): + f = file(filename).read() + src = PythonSource(f) + token = src.next() + while token!=("ENDMARKER",None) and token!=(None,None): + print token + token = src.next() + +if __name__ == '__main__': + parse_file(sys.argv[1]) From arigo at codespeak.net Mon Apr 25 17:06:30 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 25 Apr 2005 17:06:30 +0200 (CEST) Subject: [pypy-svn] r11424 - pypy/dist/pypy/interpreter Message-ID: <20050425150630.8559727B92@code1.codespeak.net> Author: arigo Date: Mon Apr 25 17:06:30 2005 New Revision: 11424 Modified: pypy/dist/pypy/interpreter/pyopcode.py pypy/dist/pypy/interpreter/typedef.py Log: Tweaks for the annotator (don't mix None with ints or bools) Modified: pypy/dist/pypy/interpreter/pyopcode.py ============================================================================== --- pypy/dist/pypy/interpreter/pyopcode.py (original) +++ pypy/dist/pypy/interpreter/pyopcode.py Mon Apr 25 17:06:30 2005 @@ -692,7 +692,7 @@ raise pyframe.BytecodeCorruption fn(f, oparg) - def MISSING_OPCODE(f, oparg=None): + def MISSING_OPCODE(f, oparg=-1): raise pyframe.BytecodeCorruption, "unknown opcode" ### dispatch_table ### Modified: pypy/dist/pypy/interpreter/typedef.py ============================================================================== --- pypy/dist/pypy/interpreter/typedef.py (original) +++ pypy/dist/pypy/interpreter/typedef.py Mon Apr 25 17:06:30 2005 @@ -14,7 +14,9 @@ "NOT_RPYTHON: initialization-time only" self.name = __name self.base = __base - self.hasdict = '__dict__' in rawdict or (__base and __base.hasdict) + self.hasdict = '__dict__' in rawdict + if __base is not None: + self.hasdict |= __base.hasdict self.rawdict = rawdict self.acceptable_as_base_class = True From arigo at codespeak.net Mon Apr 25 17:13:18 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 25 Apr 2005 17:13:18 +0200 (CEST) Subject: [pypy-svn] r11425 - pypy/dist/pypy/interpreter Message-ID: <20050425151318.1025D27B92@code1.codespeak.net> Author: arigo Date: Mon Apr 25 17:13:17 2005 New Revision: 11425 Modified: pypy/dist/pypy/interpreter/ (props changed) Log: Remove the svn:ignore of _interplevel_cache.py, to remind people to remove the file altogether. From arigo at codespeak.net Mon Apr 25 17:16:22 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 25 Apr 2005 17:16:22 +0200 (CEST) Subject: [pypy-svn] r11426 - pypy/dist/pypy/translator Message-ID: <20050425151622.5EB2227B92@code1.codespeak.net> Author: arigo Date: Mon Apr 25 17:16:22 2005 New Revision: 11426 Modified: pypy/dist/pypy/translator/translator.py Log: It's useful to enable 'import mymodule' from the current directory to allow playing around with the translator. Modified: pypy/dist/pypy/translator/translator.py ============================================================================== --- pypy/dist/pypy/translator/translator.py (original) +++ pypy/dist/pypy/translator/translator.py Mon Apr 25 17:16:22 2005 @@ -288,6 +288,10 @@ if __name__ == '__main__': from pypy.translator.test import snippet as test + import sys + if (os.getcwd() not in sys.path and + os.path.curdir not in sys.path): + sys.path.insert(0, os.getcwd()) print __doc__ # 2.3 specific -- sanxiyn From adim at codespeak.net Mon Apr 25 17:21:08 2005 From: adim at codespeak.net (adim at codespeak.net) Date: Mon, 25 Apr 2005 17:21:08 +0200 (CEST) Subject: [pypy-svn] r11427 - pypy/dist/pypy/module/parser/recparser/test Message-ID: <20050425152108.527BD27B92@code1.codespeak.net> Author: adim Date: Mon Apr 25 17:21:08 2005 New Revision: 11427 Modified: pypy/dist/pypy/module/parser/recparser/test/test_pytokenizer.py Log: use py.test instead of unittest Modified: pypy/dist/pypy/module/parser/recparser/test/test_pytokenizer.py ============================================================================== --- pypy/dist/pypy/module/parser/recparser/test/test_pytokenizer.py (original) +++ pypy/dist/pypy/module/parser/recparser/test/test_pytokenizer.py Mon Apr 25 17:21:08 2005 @@ -1,43 +1,8 @@ -import unittest from python.lexer import PythonSource, py_number, g_symdef, g_string, py_name, \ - py_comment, py_ws, py_punct - -class TokenValPair(tuple): - token = 'Override me' - def __new__(cls, val = None): - return tuple.__new__(cls, (cls.token, val)) - -TokenMap = { - 'Equals' : "=", - 'NonePair' : None, - } -ctx = globals() -for classname in ('Number', 'String', 'EndMarker', 'NewLine', 'Dedent', 'Name', - 'Equals', 'NonePair', 'SymDef', 'Symbol'): - classdict = {'token' : TokenMap.get(classname, classname.upper())} - ctx[classname] = type(classname, (TokenValPair,), classdict) - - -PUNCTS = [ '>=', '<>', '!=', '<', '>', '<=', '==', '*=', - '//=', '%=', '^=', '<<=', '**=', '|=', - '+=', '>>=', '=', '&=', '/=', '-=', ',', '^', - '>>', '&', '+', '*', '-', '/', '.', '**', - '%', '<<', '//', '|', ')', '(', ';', ':', - '@', '[', ']', '`', '{', '}', - ] - - -BAD_SYNTAX_STMTS = [ - # "yo yo", - """for i in range(10): - print i - print 'bad dedent here'""", - """for i in range(10): - print i - print 'Bad indentation here'""", - ] + py_punct def parse_source(source): + """returns list of parsed tokens""" lexer = PythonSource(source) tokens = [] last_token = '' @@ -46,24 +11,31 @@ tokens.append((last_token, value)) return tokens - -NUMBERS = [ - '1', '1.23', '1.', '0', - '1L', '1l', - '0x12L', '0x12l', '0X12', '0x12', - '1j', '1J', - '1e2', '1.2e4', - '0.1', '0.', '0.12', '.2', - ] - -BAD_NUMBERS = [ - 'j', '0xg', '0xj', '0xJ', - ] - -class PythonSourceTC(unittest.TestCase): - """ """ - def setUp(self): - pass +class TestSuite: + """Tokenizer test suite""" + PUNCTS = [ + # Here should be listed each existing punctuation + '>=', '<>', '!=', '<', '>', '<=', '==', '*=', + '//=', '%=', '^=', '<<=', '**=', '|=', + '+=', '>>=', '=', '&=', '/=', '-=', ',', '^', + '>>', '&', '+', '*', '-', '/', '.', '**', + '%', '<<', '//', '|', ')', '(', ';', ':', + '@', '[', ']', '`', '{', '}', + ] + + NUMBERS = [ + # Here should be listed each different form of number + '1', '1.23', '1.', '0', + '1L', '1l', + '0x12L', '0x12l', '0X12', '0x12', + '1j', '1J', + '1e2', '1.2e4', + '0.1', '0.', '0.12', '.2', + ] + + BAD_NUMBERS = [ + 'j', '0xg', '0xj', '0xJ', + ] def test_empty_string(self): """make sure defined regexps don't match empty string""" @@ -74,38 +46,35 @@ 'punct' : py_punct, } for label, rgx in rgxes.items(): - self.assert_(rgx.match('') is None, '%s matches empty string' % label) + assert rgx.match('') is None, '%s matches empty string' % label def test_several_lines_list(self): """tests list definition on several lines""" s = """['a' ]""" tokens = parse_source(s) - self.assertEquals(tokens, [('[', None), ('STRING', "'a'"), (']', None), - ('NEWLINE', ''), ('ENDMARKER', None)]) + assert tokens == [('[', None), ('STRING', "'a'"), (']', None), + ('NEWLINE', ''), ('ENDMARKER', None)] def test_numbers(self): """make sure all kind of numbers are correctly parsed""" - for number in NUMBERS: - self.assertEquals(parse_source(number)[0], ('NUMBER', number)) + for number in self.NUMBERS: + assert parse_source(number)[0] == ('NUMBER', number) neg = '-%s' % number - self.assertEquals(parse_source(neg)[:2], - [('-', None), ('NUMBER', number)]) - for number in BAD_NUMBERS: - self.assertNotEquals(parse_source(number)[0], ('NUMBER', number)) - + assert parse_source(neg)[:2] == [('-', None), ('NUMBER', number)] + for number in self.BAD_NUMBERS: + assert parse_source(number)[0] != ('NUMBER', number) + def test_hex_number(self): + """basic pasrse""" tokens = parse_source("a = 0x12L") - self.assertEquals(tokens, [('NAME', 'a'), ('=', None), - ('NUMBER', '0x12L'), ('NEWLINE', ''), - ('ENDMARKER', None)]) - - def test_punct(self): - for pstr in PUNCTS: - tokens = parse_source( pstr ) - self.assertEqual( tokens[0][0], pstr ) + assert tokens == [('NAME', 'a'), ('=', None), ('NUMBER', '0x12L'), + ('NEWLINE', ''), ('ENDMARKER', None)] + def test_punct(self): + """make sure each punctuation is correctly parsed""" + for pstr in self.PUNCTS: + tokens = parse_source(pstr) + assert tokens[0][0] == pstr -if __name__ == '__main__': - unittest.main() From ludal at codespeak.net Mon Apr 25 18:40:14 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Mon, 25 Apr 2005 18:40:14 +0200 (CEST) Subject: [pypy-svn] r11431 - in pypy/dist/pypy/module/parser/recparser: . ebnf python Message-ID: <20050425164014.7774F27B92@code1.codespeak.net> Author: ludal Date: Mon Apr 25 18:40:14 2005 New Revision: 11431 Modified: pypy/dist/pypy/module/parser/recparser/ebnf/lexer.py pypy/dist/pypy/module/parser/recparser/grammar.py pypy/dist/pypy/module/parser/recparser/python/lexer.py Log: * just small cleanups posponning the big changes later Modified: pypy/dist/pypy/module/parser/recparser/ebnf/lexer.py ============================================================================== --- pypy/dist/pypy/module/parser/recparser/ebnf/lexer.py (original) +++ pypy/dist/pypy/module/parser/recparser/ebnf/lexer.py Mon Apr 25 18:40:14 2005 @@ -25,6 +25,13 @@ def context(self): return self.pos + def offset(self, ctx=None): + if ctx is None: + return self.pos + else: + assert type(ctx)==int + return ctx + def restore(self, ctx ): self.pos = ctx Modified: pypy/dist/pypy/module/parser/recparser/grammar.py ============================================================================== --- pypy/dist/pypy/module/parser/recparser/grammar.py (original) +++ pypy/dist/pypy/module/parser/recparser/grammar.py Mon Apr 25 18:40:14 2005 @@ -25,6 +25,12 @@ source has been found """ + def offset(self, ctx=None): + """Returns the position we're at so far in the source + optionnally provide a context and you'll get the offset + of the context""" + return -1 + def current_line(self): """Returns the current line number""" return 0 @@ -113,9 +119,26 @@ /!\ If the sets of element didn't match the current grammar element, then the is restored as it was before the call to the match() method + + returns None if no match or an object build by builder """ return None + def parse(self, source): + """Returns a simplified grammar if the rule matched at the source + current context or None""" + # **NOT USED** **NOT IMPLEMENTED** + # To consider if we need to improve speed in parsing + pass + + def first_set(self): + """Returns a list of possible tokens that can start this rule + None means the rule can be empty + """ + # **NOT USED** **NOT IMPLEMENTED** + # To consider if we need to improve speed in parsing + pass + def __str__(self): return self.display(0) @@ -150,6 +173,9 @@ """ if DEBUG>1: print "try alt:", self.display() + # Here we stop at the first match we should + # try instead to get the longest alternative + # to see if this solve our problems with infinite recursion for rule in self.args: m = rule.match( source, builder ) if m: Modified: pypy/dist/pypy/module/parser/recparser/python/lexer.py ============================================================================== --- pypy/dist/pypy/module/parser/recparser/python/lexer.py (original) +++ pypy/dist/pypy/module/parser/recparser/python/lexer.py Mon Apr 25 18:40:14 2005 @@ -92,6 +92,13 @@ def restore(self, ctx): self.stack_pos = ctx + def offset(self, ctx=None): + if ctx is None: + return self.stack_pos + else: + assert type(ctx)==int + return ctx + def _next(self): """returns the next token from source""" inp = self.input From ludal at codespeak.net Mon Apr 25 18:48:32 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Mon, 25 Apr 2005 18:48:32 +0200 (CEST) Subject: [pypy-svn] r11432 - in pypy/dist/pypy/module: parser/recparser recparser recparser/ebnf recparser/leftout recparser/python recparser/test recparser/tools Message-ID: <20050425164832.BA5C827B92@code1.codespeak.net> Author: ludal Date: Mon Apr 25 18:48:32 2005 New Revision: 11432 Added: pypy/dist/pypy/module/recparser/ - copied from r11423, pypy/dist/pypy/module/parser/recparser/ pypy/dist/pypy/module/recparser/README - copied unchanged from r11431, pypy/dist/pypy/module/parser/recparser/README pypy/dist/pypy/module/recparser/ebnf/ - copied from r11431, pypy/dist/pypy/module/parser/recparser/ebnf/ pypy/dist/pypy/module/recparser/grammar.py - copied unchanged from r11431, pypy/dist/pypy/module/parser/recparser/grammar.py pypy/dist/pypy/module/recparser/leftout/ - copied from r11431, pypy/dist/pypy/module/parser/recparser/leftout/ pypy/dist/pypy/module/recparser/python/ - copied from r11431, pypy/dist/pypy/module/parser/recparser/python/ pypy/dist/pypy/module/recparser/syntaxtree.py - copied unchanged from r11431, pypy/dist/pypy/module/parser/recparser/syntaxtree.py pypy/dist/pypy/module/recparser/test/ - copied from r11431, pypy/dist/pypy/module/parser/recparser/test/ pypy/dist/pypy/module/recparser/tools/ - copied from r11431, pypy/dist/pypy/module/parser/recparser/tools/ Removed: pypy/dist/pypy/module/parser/recparser/ Log: * ok trying to move recparser up one level From arigo at codespeak.net Mon Apr 25 18:54:18 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 25 Apr 2005 18:54:18 +0200 (CEST) Subject: [pypy-svn] r11434 - pypy/dist/pypy/documentation Message-ID: <20050425165418.8116D27B92@code1.codespeak.net> Author: arigo Date: Mon Apr 25 18:54:18 2005 New Revision: 11434 Modified: pypy/dist/pypy/documentation/coding-style.txt Log: The integer arithmetic model of RPython. Also cleaned up a bit the implicit exception stuff. (arigo, tismer, pedronis) Modified: pypy/dist/pypy/documentation/coding-style.txt ============================================================================== --- pypy/dist/pypy/documentation/coding-style.txt (original) +++ pypy/dist/pypy/documentation/coding-style.txt Mon Apr 25 18:54:18 2005 @@ -183,37 +183,65 @@ This layout makes the number of types to take care about quite limited. -Example: Integer Types +Integer Types ------------------------- -While implementing the integer type, I (Chris) stumbled over the problem, that -integers are quite in flux in CPython right now. Depending on the version, -integers either raise an overflow exception or mutate into longs on overflow. -Also, shifting right now truncates (up to 2.3) but is going to extend to longs -as well. In order to enable us to run the restricted Python stuff in CPython, I -needed to use a derived class r_int(int), which always behaves the same: Never -leaving its domain, but always staying an integer. - -The r_int type is implemented in a pervasive way: Every operation that involves -an r_int creates an r_int as the result. Therefore, the implementation is not -cluttered with special type casts. Just the initial value of an emulated -integer's intval field is initialized by obj.intval = r_int(val) . This way, the -r_int type propagates itself through all operations without extra effort of the -programmer. - -This concept looks promising, and since we will need unsigned integers which do -not overflow as well, I also created r_uint. It is always a word-sized unsigned -integer and never overflows. This will be a building block for things like -computing hash values, where wrap-around effects are intended and should be -easily coded without lots of explicit mask shuffling. - -Now I think to extend this even more and build a full set of primitive types, -which are intended to - -+ define the semantics of the primitive type -+ give a working implementation for unrestricted Python - -These primitive types can later easily be augmented with methods to emit C code instead of executing. I guess this would be implemented in an extra ObjectSpace. +While implementing the integer type, we stumbled over the problem, that +integers are quite in flux in CPython right now. Starting on Python 2.2, +integers mutate into longs on overflow. However, shifting to the left truncates +up to 2.3 but extends to longs as well in 2.4. By contrast, we need a way to +perform wrap-around machine-sized arithmetic by default, while still being +able to check for overflow when we need it explicitely. Moreover, we need a +consistent behavior before and after translation. + +We use normal integers for signed arithmetic. It means that before +translation we get longs in case of overflow, and after translation we get a +silent wrap-around. Whenever we need more control, we use the following +helpers: + +**ovfcheck()** + + This special function should only be used with a single arithmetic operation + as its argument, e.g. ``z = ovfcheck(x+y)``. Its intended meaning is to + perform the given operation in overflow-checking mode. + + At run-time, in Python, the ovfcheck() function itself checks the result + and raises OverflowError if it is a ``long``. But the code generators use + ovfcheck() as a hint: they replace the whole ``ovfcheck(x+y)`` expression + with a single overflow-checking addition in C. + +**ovfcheck_lshift()** + + ovfcheck_lshift(x, y) is a workaround for ovfcheck(x< Author: arigo Date: Mon Apr 25 18:54:59 2005 New Revision: 11435 Modified: pypy/dist/pypy/documentation/translation.txt Log: Start to explain genc. Modified: pypy/dist/pypy/documentation/translation.txt ============================================================================== --- pypy/dist/pypy/documentation/translation.txt (original) +++ pypy/dist/pypy/documentation/translation.txt Mon Apr 25 18:54:59 2005 @@ -351,3 +351,61 @@ ++++++ (to be completed) + + + + +The C Back-End +============== + + +Overview +-------- + +The task of GenC is to convert a flow graph into C code. By itself, GenC does not use the annotations in the graph. It can actually convert unannotated graphs to C. However, to make use of the annotations if they are present, an extra pass is needed: the C typer, whose task is to modify the flow graph according to the annotations, replacing operations with lower-level C-ish equivalents. + +The C typer first replaces all Variables that have constant annotations with real Constants in the flow graph. + +For the time being, we assume that each SomeXxx annotation has a canonical C-level representation. For example, all variables annotated with SomeInteger() will correspond to the C ``int`` type. This allows an attribute ``concretetype`` to be attached to each Variable. Constants also get such an attribute ``concretetype``, but they are computed based on the usage that is made of the particular Constant; for example, a Constant(5) will be a C ``int`` when used in an integer addition but a C ``PyObject*`` when inserted into a CPython list. + +The C typer considers each operation in turn and, based on its annotations, replaces it by C-level operations if possible. + + +Integer operations +------------------ + +Integer operations are the easiest. Assume a graph containing the following operation:: + + v3 = add(v1, v2) + +annotated:: + + v1 -> SomeInteger() + v2 -> SomeInteger() + v3 -> SomeInteger() + +then obviously we want to type it and replace it with:: + + int v1, v2, v3; + v3 = int_add(v1, v2) + +The typing notation in C syntax means that the Variables (which might actually be Constants) are given the ``concretetype`` corresponding to the C ``int``. + + +Memory model +------------ + +For more complicated examples we need to choose a memory model. We will assume the following model: Variables store primitive values only (integers, pointers); more complex structures are always stored in the heap. + +We support this model using the following new graph operations (the result Variable is omitted when meaningless):: + + v2 = malloc(v1) + incref(v3) + decref(v3) + +v2=malloc(v1) allocates v1 bytes of heap memory and returns a pointer to it. For now, there is always a reference counter in a hidden header. + +incref() and decref() allow each primitive value to be tracked: GenC inserts an operation decref(v3) whenever the value in v3 is about to be forgotten (it isn't passed to the next basic block), or incref(v3) when it is about to be duplicated (it is passed several times to the next basic block). The exact operations performed by incref(v3) and decref(v3) depend on the type of v3, but they typically only have an effect for pointer types, for which they increase and decrease the reference counter of the memory they point to and call the appropriate destructor when it falls to zero. The destructor of complex data structures will in turn call decref() on its members. + + +XXX work in progress. From ludal at codespeak.net Mon Apr 25 19:02:57 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Mon, 25 Apr 2005 19:02:57 +0200 (CEST) Subject: [pypy-svn] r11436 - pypy/dist/pypy/module/recparser Message-ID: <20050425170257.80ED527B92@code1.codespeak.net> Author: ludal Date: Mon Apr 25 19:02:57 2005 New Revision: 11436 Added: pypy/dist/pypy/module/recparser/conftest.py Log: * disable all tests temporarily Added: pypy/dist/pypy/module/recparser/conftest.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/recparser/conftest.py Mon Apr 25 19:02:57 2005 @@ -0,0 +1,7 @@ + +import py.test.collect + +class Directory(py.test.collect.Directory): + def run(self): + return [] + From arigo at codespeak.net Mon Apr 25 21:19:24 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Mon, 25 Apr 2005 21:19:24 +0200 (CEST) Subject: [pypy-svn] r11439 - in pypy/dist/pypy: objspace/flow objspace/flow/test translator Message-ID: <20050425191924.1C22327B92@code1.codespeak.net> Author: arigo Date: Mon Apr 25 21:19:23 2005 New Revision: 11439 Modified: pypy/dist/pypy/objspace/flow/flowcontext.py pypy/dist/pypy/objspace/flow/model.py pypy/dist/pypy/objspace/flow/objspace.py pypy/dist/pypy/objspace/flow/test/test_objspace.py pypy/dist/pypy/translator/simplify.py pypy/dist/pypy/translator/transform.py Log: Reworked the implicit exception handling. Now, an implicit exception is raised as an ImplicitOperationError (a subclass of OperationError). If it is caught, fine. If it falls all the way through the function, then it means it is not caught, and we now it should be ignored. If it is caught but re-raised with a bare 'raise' statement, a minor hack ensures that a normal OperationError gets re-raised then. For convenience, when an ImplicitOperationError falls through, the flow obj space makes a link to the except block but with a constant AssertionError, basically saying "this implicit exception shouldn't have happened". It might be nice to try running code with such assertion checks. Normally, though, we don't want them. So the flow graph model is now that such jumps with AssertionError to the except block are regarded as "dead code", i.e. links that are not supposed to be ever followed at run-time. So simplify.py now removes such links. Some carefulness is needed to avoid breaking the graph by removing too many links. New tests check that the correct implicit exceptions are removed and not more. Modified: pypy/dist/pypy/objspace/flow/flowcontext.py ============================================================================== --- pypy/dist/pypy/objspace/flow/flowcontext.py (original) +++ pypy/dist/pypy/objspace/flow/flowcontext.py Mon Apr 25 21:19:23 2005 @@ -7,6 +7,9 @@ class OperationThatShouldNotBePropagatedError(OperationError): pass +class ImplicitOperationError(OperationError): + pass + class StopFlowing(Exception): pass @@ -239,6 +242,17 @@ self.space.unwrap(e.w_type).__name__, self.space.unwrap(e.w_value))) + except ImplicitOperationError, e: + if isinstance(e.w_type, Constant): + exc_cls = e.w_type.value + else: + exc_cls = Exception + msg = "implicit %s shouldn't occur" % exc_cls.__name__ + w_type = Constant(AssertionError) + w_value = Constant(AssertionError(msg)) + link = Link([w_type, w_value], self.graph.exceptblock) + self.recorder.crnt_block.closeblock(link) + except OperationError, e: link = Link([e.w_type, e.w_value], self.graph.exceptblock) self.recorder.crnt_block.closeblock(link) @@ -320,3 +334,10 @@ block.recloseblock(Link(outputargs, newblock)) candidates.insert(0, newblock) self.pendingblocks.append(newblock) + + def sys_exc_info(self): + operr = ExecutionContext.sys_exc_info(self) + if isinstance(operr, ImplicitOperationError): + # re-raising an implicit operation makes it an explicit one + operr = OperationError(operr.w_type, operr.w_value) + return operr Modified: pypy/dist/pypy/objspace/flow/model.py ============================================================================== --- pypy/dist/pypy/objspace/flow/model.py (original) +++ pypy/dist/pypy/objspace/flow/model.py Mon Apr 25 21:19:23 2005 @@ -342,7 +342,7 @@ assert block.exits[0].exitcase is None elif block.exitswitch == Constant(last_exception): assert len(block.operations) >= 1 - assert len(block.exits) >= 1 + assert len(block.exits) >= 2 assert block.exits[0].exitcase is None for link in block.exits[1:]: assert issubclass(link.exitcase, Exception) Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Mon Apr 25 21:19:23 2005 @@ -383,11 +383,9 @@ if exceptions: # catch possible exceptions implicitly. If the OperationError # below is not caught in the same function, it will produce an - # exception-raising return block in the flow graph. The special - # value 'wrap(last_exception)' is used as a marker for this kind - # of implicit exceptions, and simplify.py will remove it as per - # the RPython definition: implicit exceptions not explicitly - # caught in the same function are assumed not to occur. + # exception-raising return block in the flow graph. Note that + # even if the interpreter re-raises the exception, it will not + # be the same ImplicitOperationError instance internally. context = self.getexecutioncontext() outcome, w_exc_cls, w_exc_value = context.guessexception(*exceptions) if outcome is not None: @@ -396,7 +394,8 @@ # unless 'outcome' is Exception. if outcome is not Exception: w_exc_cls = Constant(outcome) - raise OperationError(w_exc_cls, w_exc_value) + raise flowcontext.ImplicitOperationError(w_exc_cls, + w_exc_value) # ______________________________________________________________________ Modified: pypy/dist/pypy/objspace/flow/test/test_objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/test/test_objspace.py (original) +++ pypy/dist/pypy/objspace/flow/test/test_objspace.py Mon Apr 25 21:19:23 2005 @@ -222,7 +222,52 @@ def test_implicitIndexError(self): x = self.codetest(self.implicitIndexError) + simplify_graph(x) + self.show(x) + def cannot_reach_exceptblock(link): + if isinstance(link, Link): + assert link.target is not x.exceptblock + traverse(cannot_reach_exceptblock, x) + + #__________________________________________________________ + def reraiseKeyError(dic): + try: + x = dic[5] + except KeyError: + raise + + def test_reraiseKeyError(self): + x = self.codetest(self.reraiseKeyError) + simplify_graph(x) self.show(x) + found_KeyError = [] + def only_raise_KeyError(link): + if isinstance(link, Link): + if link.target is x.exceptblock: + assert link.args[0] == Constant(KeyError) + found_KeyError.append(link) + traverse(only_raise_KeyError, x) + assert found_KeyError + + #__________________________________________________________ + def reraiseAnything(dic): + try: + dic[5] + except: + raise + + def test_reraiseAnything(self): + x = self.codetest(self.reraiseAnything) + simplify_graph(x) + self.show(x) + found = {} + def find_exceptions(link): + if isinstance(link, Link): + if link.target is x.exceptblock: + assert isinstance(link.args[0], Constant) + found[link.args[0].value] = True + traverse(find_exceptions, x) + assert found == {KeyError: True, IndexError: True} #__________________________________________________________ def freevar(self, x): Modified: pypy/dist/pypy/translator/simplify.py ============================================================================== --- pypy/dist/pypy/translator/simplify.py (original) +++ pypy/dist/pypy/translator/simplify.py Mon Apr 25 21:19:23 2005 @@ -11,7 +11,7 @@ """inplace-apply all the existing optimisations to the graph.""" checkgraph(graph) eliminate_empty_blocks(graph) - remove_implicit_exceptions(graph) + remove_assertion_errors(graph) join_blocks(graph) transform_dead_op_vars(graph) remove_identical_vars(graph) @@ -76,29 +76,33 @@ visit(exit) traverse(visit, graph) -def remove_implicit_exceptions(graph): - """An exception raised implicitely has a particular value of - space.wrap(last_exception) -- see pypy.objspace.flow.objspace.make_op -- - which shows up in the flow graph if the exception is not caught. This - function removes such exceptions entierely. This gets rid for example - of possible IndexErrors by 'getitem', assuming they cannot happen unless - there is an exception handler in the same function.""" - def visit(link): - if isinstance(link, Link) and link in link.prevblock.exits: - if (link.target is graph.exceptblock and - link.prevblock.exitswitch == Constant(last_exception) and - isinstance(link.exitcase, type(Exception)) and - issubclass(link.exitcase, Exception) and - len(link.args) == 2 and - link.args[1] == Constant(last_exc_value) and - link.args[0] in [Constant(last_exception), - Constant(link.exitcase)]): - # remove the link - lst = list(link.prevblock.exits) - lst.remove(link) - link.prevblock.exits = tuple(lst) - if len(lst) <= 1: - link.prevblock.exitswitch = None +def remove_assertion_errors(graph): + """Remove branches that go directly to raising an AssertionError, + assuming that AssertionError shouldn't occur at run-time. Note that + this is how implicit exceptions are removed (see _implicit_ in + flowcontext.py). + """ + def visit(block): + if isinstance(block, Block): + for i in range(len(block.exits)-1, -1, -1): + exit = block.exits[i] + if not (exit.target is graph.exceptblock and + exit.args[0] == Constant(AssertionError)): + continue + # can we remove this exit without breaking the graph? + if len(block.exits) < 2: + break + if block.exitswitch == Constant(last_exception): + if exit.exitcase is None: + break + if len(block.exits) == 2: + # removing the last non-exceptional exit + block.exitswitch = None + exit.exitcase = None + # remove this exit + lst = list(block.exits) + del lst[i] + block.exits = tuple(lst) traverse(visit, graph) def transform_dead_op_vars(graph): Modified: pypy/dist/pypy/translator/transform.py ============================================================================== --- pypy/dist/pypy/translator/transform.py (original) +++ pypy/dist/pypy/translator/transform.py Mon Apr 25 21:19:23 2005 @@ -266,16 +266,14 @@ if not block.exits: # oups! cannot reach the end of this block cutoff_alwaysraising_block(self, block) - elif block.exitswitch != Constant(last_exception): - # non-exceptional exit - if len(block.exits) == 1: - block.exitswitch = None - block.exits[0].exitcase = None - else: + elif block.exitswitch == Constant(last_exception): # exceptional exit if block.exits[0].exitcase is not None: # killed the non-exceptional path! cutoff_alwaysraising_block(self, block) + if len(block.exits) == 1: + block.exitswitch = None + block.exits[0].exitcase = None def cutoff_alwaysraising_block(self, block): "Fix a block whose end can never be reached at run-time." @@ -293,18 +291,18 @@ del block.operations[n+1:] s_impossible = annmodel.SomeImpossibleValue() self.bindings[block.operations[n].result] = s_impossible - # insert the equivalent of 'raise SystemError' + # insert the equivalent of 'raise AssertionError' # XXX no sane way to get the graph from the block! fn = self.annotated[block] assert fn in self.translator.flowgraphs, ( "Cannot find the graph that this block belong to! " "fn=%r" % (fn,)) graph = self.translator.flowgraphs[fn] - c1 = Constant(SystemError) - c2 = Constant(SystemError( - "Call to %r should have raised an exception" % (fn,))) + msg = "Call to %r should have raised an exception" % (fn,) + c1 = Constant(AssertionError) + c2 = Constant(AssertionError(msg)) errlink = Link([c1, c2], graph.exceptblock) - block.recloseblock(errlink) + block.recloseblock(errlink, *block.exits) # XXX do something about the annotation of the # exceptblock.inputargs From cfbolz at codespeak.net Tue Apr 26 04:08:14 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 26 Apr 2005 04:08:14 +0200 (CEST) Subject: [pypy-svn] r11442 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050426020814.6917727B84@code1.codespeak.net> Author: cfbolz Date: Tue Apr 26 04:08:13 2005 New Revision: 11442 Added: pypy/dist/pypy/translator/llvm/lazyattribute.py pypy/dist/pypy/translator/llvm/test/test_lazyattribute.py Modified: pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/genllvm.py pypy/dist/pypy/translator/llvm/list.c pypy/dist/pypy/translator/llvm/list_template.ll pypy/dist/pypy/translator/llvm/memorylayout.py pypy/dist/pypy/translator/llvm/pbcrepr.py pypy/dist/pypy/translator/llvm/representation.py pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py pypy/dist/pypy/translator/llvm/typerepr.py Log: * Refactored most XXXRepr classes to make the instances more lazy via a (quite harmless) metaclass. Every class inheriting from LLVMRepr can define a classattribute 'lazy_attributes', which is a list of strings. For every string a property is bound to the corresponding attribute of the class. The get function of the property checks whether the setup method of the class has been called allready and does so if not. * Various other fixes for small problems that were discovered while trying to get targetpypy1 to work. When I ran into my first SomeDict, I gave up. Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Tue Apr 26 04:08:13 2005 @@ -51,14 +51,12 @@ print self.name assert ".Exception.object" not in self.objectname self.dependencies = sets.Set() - self.setup_done = False + + lazy_attributes = ['l_base', 'memlayout', 'definition', 'methods'] def setup(self): - if self.setup_done: - return - self.setup_done = True if debug: - print "ClassRepr.setup()", id(self), hex(id(self)), self.setup_done + print "ClassRepr.setup()", id(self), hex(id(self)) print len(ClassRepr.l_classes) gen = self.gen if self.classdef.basedef is not None: #get attributes from base classes @@ -140,9 +138,10 @@ lblock.malloc(l_target, self) self.memlayout.set(l_target, "__class__", self, lblock, l_func) init = None - for cls in self.classdef.getmro(): - if "__init__" in cls.attrs: - init = cls.attrs["__init__"].getvalue() + for clsd in self.classdef.getmro(): + if ("__init__" in clsd.cls.__dict__ and + clsd.cls.__module__ != "exceptions"): + init = clsd.cls.__dict__["__init__"] break if init is not None: l_init = self.gen.get_repr(init) @@ -244,6 +243,8 @@ self.definition = s % (self.objectname, abs(id(exception))) self.dependencies = sets.Set() + lazy_attributes = ['l_base', 'memlayout'] + def setup(self): if len(self.exception.__bases__) != 0: self.l_base = self.gen.get_repr(self.exception.__bases__[0]) @@ -324,6 +325,8 @@ self.dependencies = sets.Set([self.type]) self.name = gen.get_global_tmp(obj.value.__class__.__name__ + ".inst") + lazy_attributes = ['l_attrib_values', 'definition'] + def setup(self): self.l_attrib_values = [self.type] for attr in self.type.memlayout.attrs[1:]: Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Tue Apr 26 04:08:13 2005 @@ -1,5 +1,5 @@ import autopath -import sets, StringIO +import sets, inspect from types import FunctionType, MethodType @@ -14,7 +14,7 @@ from pypy.translator.llvm.representation import debug, LLVMRepr, CompileError from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr -debug = False +debug = True INTRINSIC_OPS = ["lt", "le", "eq", "ne", "gt", "ge", "is_", "is_true", "len", "neg", "pos", "invert", "add", "sub", "mul", "truediv", @@ -33,6 +33,13 @@ annmodel.SomeFloat: "double"} +def is_annotated(func, gen): + if func not in gen.translator.flowgraphs: + return False + flg = gen.translator.getflowgraph(func) + startblock = flg.startblock + return startblock in gen.annotator.annotated + class BuiltinFunctionRepr(LLVMRepr): def get(obj, gen): if (isinstance(obj, Constant) and @@ -81,7 +88,7 @@ return FunctionRepr.l_functions[(obj, gen)] if name is None: name = obj.__name__ - l_func = FunctionRepr(gen.get_global_tmp(name), obj, gen) + l_func = FunctionRepr(name, obj, gen) FunctionRepr.l_functions[(obj, gen)] = l_func return l_func return None @@ -93,28 +100,28 @@ self.gen = gen self.func = function self.translator = gen.translator - self.name = name + self.name = gen.get_global_tmp(name) self.graph = self.translator.getflowgraph(self.func) self.annotator = gen.translator.annotator self.blocknum = {} self.allblocks = [] self.pyrex_source = "" self.dependencies = sets.Set() + self.l_retvalue = self.gen.get_repr( + self.graph.returnblock.inputargs[0]) + self.dependencies.add(self.l_retvalue) + self.l_args = [self.gen.get_repr(ar) + for ar in self.graph.startblock.inputargs] + self.dependencies.update(self.l_args) + self.l_default_args = None remove_double_links(self.translator, self.graph) self.get_bbs() - self.se = False - self.lblocks = [] + + lazy_attributes = ['llvm_func', 'lblocks'] def setup(self): - if self.se: - return self.se = True - self.l_args = [self.gen.get_repr(ar) - for ar in self.graph.startblock.inputargs] - self.dependencies.update(self.l_args) - self.retvalue = self.gen.get_repr(self.graph.returnblock.inputargs[0]) - self.dependencies.add(self.retvalue) - self.l_default_args = None + self.lblocks = [] self.build_bbs() def get_returntype(): @@ -148,11 +155,11 @@ self.lblocks.append(lblock) def llvmfuncdef(self): - s = "internal %s %s(" % (self.retvalue.llvmtype(), self.name) + s = "internal %s %s(" % (self.l_retvalue.llvmtype(), self.name) return s + ", ".join([a.typed_name() for a in self.l_args]) + ")" def rettype(self): - return self.retvalue.llvmtype() + return self.l_retvalue.llvmtype() def get_functions(self): return str(self.llvm_func) @@ -164,7 +171,12 @@ def op_simple_call(self, l_target, args, lblock, l_func): l_args = [self.gen.get_repr(arg) for arg in args] if len(l_args) - 1 < len(self.l_args): - assert self.func.func_defaults is not None + if self.func.func_defaults is None: + for l_a in l_args: + print l_a, l_a.llvmname(), + for l_a in self.l_args: + print l_a, l_a.llvmname(), + assert self.func.func_defaults is not None if self.l_default_args is None: self.l_default_args = [self.gen.get_repr(Constant(de)) for de in self.func.func_defaults] @@ -254,7 +266,6 @@ l_func.dependencies.add(l_switch) self.lblock.cond_branch(l_switch, "%" + l_link2.toblock, "%" + l_link.toblock) - #1 / 0 class ReturnBlockRepr(BlockRepr): @@ -424,6 +435,8 @@ self.dependencies = sets.Set() self.branch_added = False + lazy_attributes = ['l_function', 'llvm_func', 'init_block', 'exceptblock'] + def setup(self): self.l_function = self.gen.get_repr(self.function) self.dependencies.add(self.l_function) @@ -441,7 +454,7 @@ self.llvm_func.basic_block(self.init_block) #create the block that calls the "real" function real_entry = llvmbc.TryBasicBlock("real_entry", "retblock", "exc") - l_ret = self.gen.get_local_tmp(self.l_function.retvalue.type, + l_ret = self.gen.get_local_tmp(self.l_function.l_retvalue.type, self) real_entry.last_op = True self.l_function.op_simple_call( @@ -452,7 +465,7 @@ self.exceptblock = llvmbc.BasicBlock("exc") ins = """store int 1, int* %%pypy__uncaught_exception \t%%dummy_ret = cast int 0 to %s -\tret %s %%dummy_ret""" % tuple([self.l_function.retvalue.llvmtype()] * 2) +\tret %s %%dummy_ret""" % tuple([self.l_function.l_retvalue.llvmtype()] * 2) self.exceptblock.instruction(ins) self.exceptblock.closed = True self.llvm_func.basic_block(self.exceptblock) @@ -472,7 +485,7 @@ return fd def llvmfuncdef(self): - s = "%s %s(" % (self.l_function.retvalue.llvmtype(), self.name) + s = "%s %s(" % (self.l_function.l_retvalue.llvmtype(), self.name) s += ", ".join([a.typed_name() for a in self.l_function.l_args]) + ")" return s @@ -501,7 +514,7 @@ return self.pyrex_source def rettype(self): - return self.l_function.retvalue.llvmtype() + return self.l_function.l_retvalue.llvmtype() def get_functions(self): if not self.branch_added: @@ -525,9 +538,9 @@ # to the appropriate class # Should be replaced by function pointers def get(obj, gen): - if isinstance(obj, annmodel.SomePBC) and \ - len(obj.prebuiltinstances) > 1 and \ - isinstance(obj.prebuiltinstances.keys()[0], FunctionType): + if (isinstance(obj, annmodel.SomePBC) and + len(obj.prebuiltinstances) > 1 and + isinstance(obj.prebuiltinstances.keys()[0], FunctionType)): return VirtualMethodRepr(obj.prebuiltinstances, gen) return None get = staticmethod(get) @@ -543,6 +556,9 @@ self.attribute = self.funcs[0].__name__ self.dependencies = sets.Set() + lazy_attributes = ['l_funcs', 'l_commonbase', 'l_classes', 'l_args', + 'type_numbers', 'llvm_func'] + def setup(self): self.l_commonbase = self.gen.get_repr(self.commonbase) self.l_classes = [self.l_commonbase] + \ @@ -552,19 +568,20 @@ #find appropriate method for every class for l_cls in self.l_classes: for classdef in l_cls.classdef.getmro(): - if classdef.cls.__dict__.has_key(self.attribute): - self.l_funcs.append(self.gen.get_repr( - classdef.cls.__dict__[self.attribute])) - break + if (classdef.cls.__dict__.has_key(self.attribute)): + func = classdef.cls.__dict__[self.attribute] + if is_annotated(func, self.gen): + self.l_funcs.append(self.gen.get_repr(func)) + break else: raise CompileError, "Couldn't find method %s for %s" % \ (self.attribute, l_cls.classdef.cls) self.dependencies.update(self.l_funcs) - self.retvalue = self.l_funcs[0].retvalue + self.l_retvalue = self.l_funcs[0].l_retvalue self.type_numbers = [id(l_c) for l_c in self.l_classes] self.l_args = [self.gen.get_repr(ar) for ar in self.l_funcs[0].graph.startblock.inputargs] - l_retvalue = self.retvalue + l_retvalue = self.l_retvalue self.dependencies.update(self.l_args) #create function #XXX pretty messy @@ -628,12 +645,12 @@ return str(self.llvm_func) def llvmfuncdef(self): - s = "internal %s %s(" % (self.l_funcs[0].retvalue.llvmtype(), + s = "internal %s %s(" % (self.l_funcs[0].l_retvalue.llvmtype(), self.name) return s + ", ".join([a.typed_name() for a in self.l_args]) + ")" def rettype(self): - return self.retvalue.llvmtype() + return self.l_retvalue.llvmtype() class BoundMethodRepr(LLVMRepr): def get(obj, gen): Modified: pypy/dist/pypy/translator/llvm/genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/genllvm.py Tue Apr 26 04:08:13 2005 @@ -5,7 +5,7 @@ import autopath import sets, StringIO -from pypy.objspace.flow.model import Constant +from pypy.objspace.flow.model import Constant, last_exception, last_exc_value from pypy.annotation import model as annmodel from pypy.translator import transform from pypy.translator.translator import Translator @@ -14,7 +14,6 @@ from pypy.translator.test import snippet as test from pypy.translator.llvm.test import llvmsnippet as test2 - from pypy.translator.llvm import representation, funcrepr, typerepr, seqrepr from pypy.translator.llvm import classrepr, pbcrepr @@ -22,7 +21,7 @@ from pypy.translator.llvm.representation import CompileError from pypy.translator.llvm.funcrepr import EntryFunctionRepr -debug = True +debug = False def llvmcompile(transl, optimize=False): @@ -64,6 +63,7 @@ self.llvm_reprs = {} self.depth = 0 self.entryname = self.translator.functions[0].__name__ + self.lazy_objects = sets.Set() self.l_entrypoint = EntryFunctionRepr("%__entry__" + self.entryname, self.translator.functions[0], self) @@ -89,6 +89,7 @@ def get_global_tmp(self, used_by=None): used_by = (used_by or "unknown") + assert "%" not in used_by if used_by in self.global_counts: self.global_counts[used_by] += 1 return "%%glb.%s.%i" % (used_by, self.global_counts[used_by]) @@ -103,7 +104,6 @@ def get_repr(self, obj): self.depth += 1 - flag = False if debug: print " " * self.depth, print "looking for object", obj, type(obj).__name__, @@ -118,31 +118,27 @@ return self.llvm_reprs[get_key(obj)] for cl in self.repr_classes: try: - obj.__class__ + g = cl.get(obj, self) except AttributeError: - obj.__class__ = None - flag = True - g = cl.get(obj, self) + continue if g is not None: self.llvm_reprs[get_key(obj)] = g self.local_counts[g] = 0 - if debug: - print " " * self.depth, - print "calling setup of %s, repr of %s" % (g, obj) - g.setup() +## if not hasattr(g.__class__, "lazy_attributes"): +## if debug: +## print " " * self.depth, +## print "calling setup of %s, repr of %s" % (g, obj) +## g.setup() self.depth -= 1 - if flag: - del obj.__class__ return g - if flag: - del obj.__class__ raise CompileError, "Can't get repr of %s, %s" % (obj, obj.__class__) def write(self, f): - init_block = self.l_entrypoint.init_block + self.unlazyify() seen_reprs = sets.Set() remove_loops(self.l_entrypoint, seen_reprs) seen_reprs = sets.Set() + init_block = self.l_entrypoint.init_block for l_repr in traverse_dependencies(self.l_entrypoint, seen_reprs): l_repr.collect_init_code(init_block, self.l_entrypoint) include_files = ["operations.ll", "class.ll"] @@ -172,6 +168,16 @@ if s != "": f.write(s + "\n") + def unlazyify(self): + if debug: + print + print "$$$$$$$$$$$$$$ unlazyify" + while len(self.lazy_objects): + obj = self.lazy_objects.pop() + if debug: + print obj + obj.setup() + def __str__(self): f = StringIO.StringIO() self.write(f) Added: pypy/dist/pypy/translator/llvm/lazyattribute.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/lazyattribute.py Tue Apr 26 04:08:13 2005 @@ -0,0 +1,46 @@ +import autopath + +import sets + +def create_property(cls, la, name): + def get(self): + self.setup() + if la not in self.__dict__: + raise AttributeError, ("'%s' object has no attribute '%s'" % + (name, la)) + return self.__dict__[la] + + def set(self, value): + self.__dict__[la] = value + + def del_(self): + if la not in self.__dict__: + raise AttributeError, ("'%s' object has no attribute '%s'" % + (name, la)) + del self.__dict__[la] + setattr(cls, la, property(get, set, del_)) + +class MetaLazyRepr(type): + def __init__(cls, name, bases, dct): + if "lazy_attributes" in dct: + csetup = cls.setup + def setup(self): + if self.__setup_called__: + return + if getattr(cls.__module__, "lazy_debug", None): + print "calling setup of class", name + self.__setup_called__ = True + self.gen.lazy_objects.discard(self) + ret = csetup(self) + return ret + cls.setup = setup + c__init__ = cls.__init__ + def __init__(self, *args, **kwds): + ret = c__init__(self, *args, **kwds) + self.gen.lazy_objects.add(self) + self.__setup_called__ = False + cls.__init__ = __init__ + for la in dct["lazy_attributes"]: + create_property(cls, la, name) + super(MetaLazyRepr, cls).__init__(name, bases, dct) + Modified: pypy/dist/pypy/translator/llvm/list.c ============================================================================== --- pypy/dist/pypy/translator/llvm/list.c (original) +++ pypy/dist/pypy/translator/llvm/list.c Tue Apr 26 04:08:13 2005 @@ -84,7 +84,7 @@ nlist->data[0] = v1; nlist->data[1] = v2; nlist->data[2] = v3; - nlist->data[3] = v3; + nlist->data[3] = v4; return nlist; } Modified: pypy/dist/pypy/translator/llvm/list_template.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/list_template.ll (original) +++ pypy/dist/pypy/translator/llvm/list_template.ll Tue Apr 26 04:08:13 2005 @@ -113,7 +113,7 @@ %tmp.21 = getelementptr [4 x %(item)s]* %tmp.6, int 0, int 2 store %(item)s %v3, %(item)s* %tmp.21 %tmp.26 = getelementptr [4 x %(item)s]* %tmp.6, int 0, int 3 - store %(item)s %v3, %(item)s* %tmp.26 + store %(item)s %v4, %(item)s* %tmp.26 ret %std.list.%(name)s* %tmp.0 } Modified: pypy/dist/pypy/translator/llvm/memorylayout.py ============================================================================== --- pypy/dist/pypy/translator/llvm/memorylayout.py (original) +++ pypy/dist/pypy/translator/llvm/memorylayout.py Tue Apr 26 04:08:13 2005 @@ -6,7 +6,7 @@ from pypy.translator.llvm.representation import debug, LLVMRepr from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr -debug = True +debug = False class MemoryLayout(object): def __init__(self, attrs, l_types, gen): Modified: pypy/dist/pypy/translator/llvm/pbcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/pbcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/pbcrepr.py Tue Apr 26 04:08:13 2005 @@ -38,6 +38,8 @@ "pbc.%s" % obj.prebuiltinstances.keys()[0].__class__.__name__) self.objectname = self.name + ".object" + lazy_attributes = ['methods', 'memlayout', 'definition'] + def setup(self): bk = self.gen.annotator.bookkeeper access_sets = bk.pbc_maximal_access_sets @@ -67,20 +69,18 @@ s_value.knowntype in (FunctionType, MethodType): if debug: print "--> method" - func = objects[0].__class__.__dict__[attr] - self.methods[attr] = func + if attr in objects[0].__class__.__dict__: + func = objects[0].__class__.__dict__[attr] + self.methods[attr] = func else: if debug: print "--> value" attribs.append(attr) l_types.append(self.gen.get_repr(s_value)) self.memlayout = MemoryLayout(attribs, l_types, self.gen) - - def get_globals(self): self.definition = "%s = %s" % (self.name, self.memlayout.definition()) s = "\n%s = internal global %%std.class {%%std.class* null, uint %i}" - s = s % (self.objectname, abs(id(self))) - return self.definition + s + self.definition += s % (self.objectname, abs(id(self))) def llvmtype(self): return "%std.class*" @@ -100,7 +100,8 @@ l_func) return elif args[1].value in self.methods: - print l_target, l_target.llvmname() + if debug: + print l_target, l_target.llvmname() if not isinstance(l_target.type, BoundMethodRepr): l_args0 = self.gen.get_repr(args[0]) l_func.dependencies.add(l_args0) @@ -132,12 +133,13 @@ print "PBCRepr: ", obj self.obj = obj self.gen = gen - self.dependencies = sets.Set() + self.type = self.gen.get_repr(self.gen.annotator.binding(self.obj)) + self.dependencies = sets.Set([self.type]) self.name = gen.get_global_tmp(obj.value.__class__.__name__ + ".inst") + lazy_attributes = ['l_attrib_values', 'definition'] + def setup(self): - self.type = self.gen.get_repr(self.gen.annotator.binding(self.obj)) - self.dependencies.add(self.type) self.l_attrib_values = [self.type] for attr in self.type.memlayout.attrs[1:]: s_a = self.gen.get_repr(Constant(getattr(self.obj.value, attr))) @@ -156,4 +158,3 @@ else: raise AttributeError, ("PBCRepr instance has no attribute %s" % repr(name)) - Modified: pypy/dist/pypy/translator/llvm/representation.py ============================================================================== --- pypy/dist/pypy/translator/llvm/representation.py (original) +++ pypy/dist/pypy/translator/llvm/representation.py Tue Apr 26 04:08:13 2005 @@ -4,7 +4,7 @@ from pypy.objspace.flow.model import Variable, Constant from pypy.objspace.flow.model import last_exception, last_exc_value from pypy.annotation import model as annmodel - +from pypy.translator.llvm.lazyattribute import MetaLazyRepr LLVM_SIMPLE_TYPES = {annmodel.SomeChar: "sbyte", annmodel.SomeBool: "bool", annmodel.SomeFloat: "double"} @@ -17,6 +17,8 @@ class LLVMRepr(object): + __metaclass__ = MetaLazyRepr + def get(obj, gen): return None get = staticmethod(get) @@ -57,16 +59,19 @@ bool, char (string of length 1), last_exception, last_exc_value""" def get(obj, gen): + if obj is last_exception or (isinstance(obj, Constant) and + obj.value is last_exception): + return SimpleRepr("%std.class**", + "%std.last_exception.type", gen) + if obj is last_exc_value or (isinstance(obj, Constant) and + obj.value is last_exc_value): + return SimpleRepr("%std.exception**", + "%std.last_exception.value", gen) if isinstance(obj, Constant): type_ = gen.annotator.binding(obj) if type_.__class__ in LLVM_SIMPLE_TYPES: llvmtype = LLVM_SIMPLE_TYPES[type_.__class__] return SimpleRepr(llvmtype, repr(obj.value), gen) - if obj == last_exception: - return SimpleRepr("%std.class**", "%std.last_exception.type", gen) - if obj == last_exc_value: - return SimpleRepr("%std.exception**", "%std.last_exception.value", - gen) return None get = staticmethod(get) @@ -93,7 +98,10 @@ return IntRepr(type_, obj, gen) if not isinstance(obj, Constant): return None - type_ = gen.annotator.binding(obj) + try: + type_ = gen.annotator.binding(obj) + except AssertionError: + return None if type_.__class__ == annmodel.SomeInteger: return IntRepr(type_, obj.value, gen) get = staticmethod(get) Modified: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/seqrepr.py (original) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Tue Apr 26 04:08:13 2005 @@ -34,6 +34,8 @@ (self.type.typename()[:-1], len(self.list), self.type.l_itemtype.typename()) + lazy_attributes = ['l_items'] + def setup(self): self.l_items = [self.gen.get_repr(item) for item in self.list] self.dependencies.update(self.l_items) @@ -153,11 +155,13 @@ self.tuple = obj.value self.gen = gen self.dependencies = sets.Set() + self.glvar = self.gen.get_global_tmp( + repr(self.tuple).replace(" ", "").translate(gensupp.C_IDENTIFIER)) + + lazy_attributes = ['l_tuple', 'type'] def setup(self): self.l_tuple = [self.gen.get_repr(l) for l in list(self.tuple)] - self.glvar = self.gen.get_global_tmp( - repr(self.tuple).replace(" ", "").translate(gensupp.C_IDENTIFIER)) self.dependencies.update(self.l_tuple) self.type = self.gen.get_repr(self.gen.annotator.binding(self.const)) self.dependencies.add(self.type) Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Tue Apr 26 04:08:13 2005 @@ -414,7 +414,6 @@ pbc1.a.pbc = pbc1 pbc1.a.a = range(4) -def pbc_function2(i): #Circular dependencies: doesn't work at the moment +def pbc_function2(i): a = CIRCULAR1() - b = CIRCULAR2() return a.get(i) Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Tue Apr 26 04:08:13 2005 @@ -202,9 +202,9 @@ def test_array_pop(self): f = compile_function(llvmsnippet.array_pop, [int]) - assert f(0) == 5 - assert f(1) == 6 - assert f(2) == 7 + assert f(0) == 6 + assert f(1) == 7 + assert f(2) == 8 def test_access_global_array(self): f = compile_function(llvmsnippet.access_global_array, [int, int, int]) @@ -348,7 +348,7 @@ assert f(2) == 6 assert f(3) == 8 - def DONOT_test_pbc_function2(self): + def test_pbc_function2(self): f = compile_function(llvmsnippet.pbc_function2, [int]) assert f(0) == 13 assert f(1) == 15 Added: pypy/dist/pypy/translator/llvm/test/test_lazyattribute.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/test/test_lazyattribute.py Tue Apr 26 04:08:13 2005 @@ -0,0 +1,49 @@ +import autopath +import py + +from pypy.translator.llvm.lazyattribute import * + +class LazyAttributes(object): + __metaclass__ = MetaLazyRepr + def __init__(self, gen): + self.gen = gen + + lazy_attributes = ["test", "test1", "test2"] + + def setup(self): + self.test = "asdf" + self.test1 = 23931 + self.test2 = 2 ** 2233 + +class PseudoGen(object): + def __init__(self): + self.lazy_objects = sets.Set() + + +class TestLazy(object): + def setup_class(cls): + cls.gen = PseudoGen() + cls.la = LazyAttributes(cls.gen) + + def test_registration(self): + assert not self.la.__setup_called__ + assert self.la in self.gen.lazy_objects + + def test_setup(self): + print self.la.test2 + assert self.la not in self.gen.lazy_objects + assert self.la.__setup_called__ + assert self.la.test == "asdf" + assert self.la.test1 == 23931 + assert self.la.test2 == 2 ** 2233 + + def test_attributeness(self): + self.la.test = 23 + assert self.la.test == 23 + del self.la.test1 + py.test.raises(AttributeError, "self.la.test1") + py.test.raises(AttributeError, "del self.la.test1") + + def test_type(self): + assert type(self.la) == LazyAttributes + assert type(type(self.la)) == MetaLazyRepr Modified: pypy/dist/pypy/translator/llvm/typerepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/typerepr.py (original) +++ pypy/dist/pypy/translator/llvm/typerepr.py Tue Apr 26 04:08:13 2005 @@ -69,8 +69,6 @@ print "StringTypeRepr" self.gen = gen self.dependencies = sets.Set() - - def setup(self): self.l_charlist = self.gen.get_repr( annmodel.SomeList(ListDef(None, annmodel.SomeChar()))) self.dependencies.add(self.l_charlist) @@ -142,9 +140,6 @@ elif obj.__class__ is annmodel.SomeChar: l_repr = SimpleTypeRepr("sbyte", gen) return l_repr -## elif obj.__class__ is annmodel.SomePBC: -## if obj.knowntype == object or obj.knowntype == ClassType: -## return SimpleTypeRepr("%std.class*", gen) elif obj.__class__ is annmodel.SomeObject and \ hasattr(obj, "is_type_of"): return SimpleTypeRepr("%std.class*", gen) From hpk at codespeak.net Tue Apr 26 11:23:32 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 26 Apr 2005 11:23:32 +0200 (CEST) Subject: [pypy-svn] r11445 - in pypy/dist/pypy: . documentation documentation/revreport tool tool/test Message-ID: <20050426092332.CF14A27B97@code1.codespeak.net> Author: hpk Date: Tue Apr 26 11:23:32 2005 New Revision: 11445 Modified: pypy/dist/pypy/documentation/conftest.py pypy/dist/pypy/documentation/revreport/revreport.py pypy/dist/pypy/test_all.py pypy/dist/pypy/tool/pytestsupport.py pypy/dist/pypy/tool/test/test_pytestsupport.py Log: adjust to renaming with the py lib: py's implementation modules are now referenced via '__' instead of '__impl__'. all tests pass on my machine. Modified: pypy/dist/pypy/documentation/conftest.py ============================================================================== --- pypy/dist/pypy/documentation/conftest.py (original) +++ pypy/dist/pypy/documentation/conftest.py Tue Apr 26 11:23:32 2005 @@ -1,3 +1,3 @@ -from py.__impl__.documentation.conftest import * +from py.__.documentation.conftest import * Modified: pypy/dist/pypy/documentation/revreport/revreport.py ============================================================================== --- pypy/dist/pypy/documentation/revreport/revreport.py (original) +++ pypy/dist/pypy/documentation/revreport/revreport.py Tue Apr 26 11:23:32 2005 @@ -4,7 +4,7 @@ import py from pypy.documentation.revreport import delta from pypy.tool.pypyrev import pypyrev -from py.__impl__.test.tool.outerrcapture import SimpleOutErrCapture +from py.__.test.tool.outerrcapture import SimpleOutErrCapture BASE = py.path.local(delta.__file__).dirpath() DEST = BASE.join('revdata') Modified: pypy/dist/pypy/test_all.py ============================================================================== --- pypy/dist/pypy/test_all.py (original) +++ pypy/dist/pypy/test_all.py Tue Apr 26 11:23:32 2005 @@ -2,5 +2,5 @@ if __name__ == '__main__': import tool.autopath - from py.__impl__.test.cmdline import main + from py.__.test.cmdline import main main() Modified: pypy/dist/pypy/tool/pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/pytestsupport.py (original) +++ pypy/dist/pypy/tool/pytestsupport.py Tue Apr 26 11:23:32 2005 @@ -1,7 +1,7 @@ from __future__ import generators import autopath import py -from py.__impl__.magic import exprinfo +from py.__.magic import exprinfo from pypy.interpreter import gateway from pypy.interpreter.error import OperationError Modified: pypy/dist/pypy/tool/test/test_pytestsupport.py ============================================================================== --- pypy/dist/pypy/tool/test/test_pytestsupport.py (original) +++ pypy/dist/pypy/tool/test/test_pytestsupport.py Tue Apr 26 11:23:32 2005 @@ -1,5 +1,5 @@ import autopath -from py.__impl__.magic import exprinfo +from py.__.magic import exprinfo from pypy.interpreter.error import OperationError from pypy.interpreter.gateway import app2interp_temp from pypy.interpreter.argument import Arguments From hpk at codespeak.net Tue Apr 26 11:25:52 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 26 Apr 2005 11:25:52 +0200 (CEST) Subject: [pypy-svn] r11447 - pypy/dist/pypy Message-ID: <20050426092552.A051D27B97@code1.codespeak.net> Author: hpk Date: Tue Apr 26 11:25:52 2005 New Revision: 11447 Modified: pypy/dist/pypy/test_all.py Log: use the public hook instead of the implementation level one. Modified: pypy/dist/pypy/test_all.py ============================================================================== --- pypy/dist/pypy/test_all.py (original) +++ pypy/dist/pypy/test_all.py Tue Apr 26 11:25:52 2005 @@ -2,5 +2,5 @@ if __name__ == '__main__': import tool.autopath - from py.__.test.cmdline import main - main() + import py + py.test.cmdline.main() From ludal at codespeak.net Tue Apr 26 12:29:38 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Tue, 26 Apr 2005 12:29:38 +0200 (CEST) Subject: [pypy-svn] r11454 - in pypy/dist/pypy/module/recparser: . data ebnf python Message-ID: <20050426102938.8A27627B9C@code1.codespeak.net> Author: ludal Date: Tue Apr 26 12:29:38 2005 New Revision: 11454 Added: pypy/dist/pypy/module/recparser/data/ pypy/dist/pypy/module/recparser/data/Grammar2.3 - copied unchanged from r11450, pypy/dist/pypy/module/recparser/python/Grammar2.3 pypy/dist/pypy/module/recparser/data/Grammar2.4 - copied unchanged from r11450, pypy/dist/pypy/module/recparser/python/Grammar2.4 pypy/dist/pypy/module/recparser/ebnflexer.py - copied unchanged from r11450, pypy/dist/pypy/module/recparser/ebnf/lexer.py pypy/dist/pypy/module/recparser/ebnfparse.py - copied unchanged from r11450, pypy/dist/pypy/module/recparser/ebnf/parse.py pypy/dist/pypy/module/recparser/pythonlexer.py - copied unchanged from r11450, pypy/dist/pypy/module/recparser/python/lexer.py pypy/dist/pypy/module/recparser/pythonparse.py - copied unchanged from r11450, pypy/dist/pypy/module/recparser/python/parse.py pypy/dist/pypy/module/recparser/pythonutils.py - copied unchanged from r11450, pypy/dist/pypy/module/recparser/python/__init__.py Removed: pypy/dist/pypy/module/recparser/ebnf/ pypy/dist/pypy/module/recparser/python/ Log: * move files around in order to flatten the layout From hpk at codespeak.net Tue Apr 26 12:38:24 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 26 Apr 2005 12:38:24 +0200 (CEST) Subject: [pypy-svn] r11456 - pypy/dist/pypy/documentation Message-ID: <20050426103824.E489727B9C@code1.codespeak.net> Author: hpk Date: Tue Apr 26 12:38:24 2005 New Revision: 11456 Modified: pypy/dist/pypy/documentation/coding-style.txt Log: mention the other pypy/module exception regarding empty __init__.py files Modified: pypy/dist/pypy/documentation/coding-style.txt ============================================================================== --- pypy/dist/pypy/documentation/coding-style.txt (original) +++ pypy/dist/pypy/documentation/coding-style.txt Tue Apr 26 12:38:24 2005 @@ -309,7 +309,8 @@ - never use plural names in directory and file names -- ``__init__.py`` is always empty except for ``"pypy/objspace/*"`` +- ``__init__.py`` is always empty except for ``pypy/objspace/*`` + and ``pypy/module/*``. - functions/methods are lowercase and ``'_'-separated`` (if you need to separate at all) From adim at codespeak.net Tue Apr 26 12:39:07 2005 From: adim at codespeak.net (adim at codespeak.net) Date: Tue, 26 Apr 2005 12:39:07 +0200 (CEST) Subject: [pypy-svn] r11457 - pypy/dist/pypy/module/recparser Message-ID: <20050426103907.D40C927B9C@code1.codespeak.net> Author: adim Date: Tue Apr 26 12:39:07 2005 New Revision: 11457 Added: pypy/dist/pypy/module/recparser/__init__.py Log: make recparser importable Added: pypy/dist/pypy/module/recparser/__init__.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/recparser/__init__.py Tue Apr 26 12:39:07 2005 @@ -0,0 +1 @@ +# emtpy From ludal at codespeak.net Tue Apr 26 12:44:08 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Tue, 26 Apr 2005 12:44:08 +0200 (CEST) Subject: [pypy-svn] r11458 - in pypy/dist/pypy/module/recparser: . tool tools Message-ID: <20050426104408.B8F2227B9C@code1.codespeak.net> Author: ludal Date: Tue Apr 26 12:44:08 2005 New Revision: 11458 Added: pypy/dist/pypy/module/recparser/pythonutil.py - copied, changed from r11454, pypy/dist/pypy/module/recparser/pythonutils.py pypy/dist/pypy/module/recparser/tool/ - copied from r11450, pypy/dist/pypy/module/recparser/tools/ Removed: pypy/dist/pypy/module/recparser/pythonutils.py pypy/dist/pypy/module/recparser/tools/ Modified: pypy/dist/pypy/module/recparser/ebnfparse.py pypy/dist/pypy/module/recparser/pythonparse.py Log: * rename more files to match coding style * fixup some imports (still incomplete) Modified: pypy/dist/pypy/module/recparser/ebnfparse.py ============================================================================== --- pypy/dist/pypy/module/recparser/ebnfparse.py (original) +++ pypy/dist/pypy/module/recparser/ebnfparse.py Tue Apr 26 12:44:08 2005 @@ -1,7 +1,7 @@ #!/usr/bin/env python from grammar import BaseGrammarBuilder, Alternative, Sequence, Token, \ KleenStar, GrammarElement -from lexer import GrammarSource +from ebnflexer import GrammarSource import re py_name = re.compile(r"[a-zA-Z_][a-zA-Z0-9_]*", re.M) Modified: pypy/dist/pypy/module/recparser/pythonparse.py ============================================================================== --- pypy/dist/pypy/module/recparser/pythonparse.py (original) +++ pypy/dist/pypy/module/recparser/pythonparse.py Tue Apr 26 12:44:08 2005 @@ -1,10 +1,9 @@ #!/usr/bin/env python from grammar import BaseGrammarBuilder -from lexer import PythonSource -from ebnf import parse_grammar -from pprint import pprint +from pythonlexer import PythonSource +from ebnfparse import parse_grammar import sys -import python +import pythonutil def parse_python_source( textsrc, gram, goal ): @@ -45,6 +44,6 @@ test_file = sys.argv[1] print "-"*20 print - print "pyparse \n", python.pypy_parse(test_file) - print "parser \n", python.python_parse(test_file) + print "pyparse \n", pythonutil.pypy_parse(test_file) + print "parser \n", pythonutil.python_parse(test_file) Copied: pypy/dist/pypy/module/recparser/pythonutil.py (from r11454, pypy/dist/pypy/module/recparser/pythonutils.py) ============================================================================== --- pypy/dist/pypy/module/recparser/pythonutils.py (original) +++ pypy/dist/pypy/module/recparser/pythonutil.py Tue Apr 26 12:44:08 2005 @@ -1,7 +1,7 @@ __all__ = [ "parse_file_input", "parse_single_input", "parse_eval_input", "python_grammar", "PYTHON_GRAMMAR" ] -from parse import parse_file_input, parse_single_input, parse_eval_input +from pythonparse import parse_file_input, parse_single_input, parse_eval_input import os import sys Deleted: /pypy/dist/pypy/module/recparser/pythonutils.py ============================================================================== --- /pypy/dist/pypy/module/recparser/pythonutils.py Tue Apr 26 12:44:08 2005 +++ (empty file) @@ -1,60 +0,0 @@ -__all__ = [ "parse_file_input", "parse_single_input", "parse_eval_input", - "python_grammar", "PYTHON_GRAMMAR" ] - -from parse import parse_file_input, parse_single_input, parse_eval_input -import os -import sys - -_ver = ".".join([str(i) for i in sys.version_info[:2]]) -PYTHON_GRAMMAR = os.path.join( os.path.dirname(__file__), "Grammar" + _ver ) - -def python_grammar(): - """returns a """ - from ebnf import parse_grammar - level = get_debug() - set_debug( 0 ) - gram = parse_grammar( file(PYTHON_GRAMMAR) ) - set_debug( level ) - return gram - -def get_debug(): - """Return debug level""" - import grammar - return grammar.DEBUG - -def set_debug( level ): - """sets debug mode to """ - import grammar - grammar.DEBUG = level - - -def python_parse(filename): - """parse using CPython's parser module and return nested tuples - """ - pyf = file(filename) - import parser - tp2 = parser.suite(pyf.read()) - return tp2.totuple() - - -def _get_encoding(builder): - if hasattr(builder, '_source_encoding'): - return builder._source_encoding - return None - -def pypy_parse(filename): - """parse using PyPy's parser module and return nested tuples - """ - pyf = file(filename) - builder = parse_file_input(pyf, python_grammar()) - pyf.close() - if builder.stack: - # print builder.stack[-1] - root_node = builder.stack[-1] - nested_tuples = root_node.totuple() - source_encoding = _get_encoding(builder) - if source_encoding is None: - return nested_tuples - else: - return (323, nested_tuples, source_encoding) - return None # XXX raise an exception instead From ludal at codespeak.net Tue Apr 26 12:44:37 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Tue, 26 Apr 2005 12:44:37 +0200 (CEST) Subject: [pypy-svn] r11459 - in pypy/dist/pypy/module/recparser: . tool Message-ID: <20050426104437.90CB027B9C@code1.codespeak.net> Author: ludal Date: Tue Apr 26 12:44:37 2005 New Revision: 11459 Added: pypy/dist/pypy/module/recparser/tokenize.py - copied unchanged from r11458, pypy/dist/pypy/module/recparser/tool/tokenize.py Removed: pypy/dist/pypy/module/recparser/tool/ Log: * move tokenize.py up one level From adim at codespeak.net Tue Apr 26 12:55:04 2005 From: adim at codespeak.net (adim at codespeak.net) Date: Tue, 26 Apr 2005 12:55:04 +0200 (CEST) Subject: [pypy-svn] r11460 - in pypy/dist/pypy/module/recparser: . test Message-ID: <20050426105504.8ADCD27B9C@code1.codespeak.net> Author: adim Date: Tue Apr 26 12:55:04 2005 New Revision: 11460 Modified: pypy/dist/pypy/module/recparser/pythonutil.py pypy/dist/pypy/module/recparser/test/test_pytokenizer.py pypy/dist/pypy/module/recparser/test/test_samples.py pypy/dist/pypy/module/recparser/test/test_samples2.py Log: fixed import paths in recparser and recparser/test Modified: pypy/dist/pypy/module/recparser/pythonutil.py ============================================================================== --- pypy/dist/pypy/module/recparser/pythonutil.py (original) +++ pypy/dist/pypy/module/recparser/pythonutil.py Tue Apr 26 12:55:04 2005 @@ -6,11 +6,11 @@ import sys _ver = ".".join([str(i) for i in sys.version_info[:2]]) -PYTHON_GRAMMAR = os.path.join( os.path.dirname(__file__), "Grammar" + _ver ) +PYTHON_GRAMMAR = os.path.join( os.path.dirname(__file__), "data", "Grammar" + _ver ) def python_grammar(): """returns a """ - from ebnf import parse_grammar + from ebnfparse import parse_grammar level = get_debug() set_debug( 0 ) gram = parse_grammar( file(PYTHON_GRAMMAR) ) Modified: pypy/dist/pypy/module/recparser/test/test_pytokenizer.py ============================================================================== --- pypy/dist/pypy/module/recparser/test/test_pytokenizer.py (original) +++ pypy/dist/pypy/module/recparser/test/test_pytokenizer.py Tue Apr 26 12:55:04 2005 @@ -1,5 +1,5 @@ -from python.lexer import PythonSource, py_number, g_symdef, g_string, py_name, \ - py_punct +from pypy.module.recparser.pythonlexer import PythonSource, py_number, \ + g_symdef, g_string, py_name, py_punct def parse_source(source): """returns list of parsed tokens""" @@ -77,4 +77,3 @@ tokens = parse_source(pstr) assert tokens[0][0] == pstr - Modified: pypy/dist/pypy/module/recparser/test/test_samples.py ============================================================================== --- pypy/dist/pypy/module/recparser/test/test_samples.py (original) +++ pypy/dist/pypy/module/recparser/test/test_samples.py Tue Apr 26 12:55:04 2005 @@ -2,10 +2,9 @@ import os, os.path as osp import sys -from ebnf import parse_grammar -from python import python_parse, pypy_parse, set_debug +from pypy.module.recparser.pythonutil import python_parse, pypy_parse, set_debug from pprint import pprint -import grammar +from pypy.module.recparser import grammar grammar.DEBUG = False from symbol import sym_name Modified: pypy/dist/pypy/module/recparser/test/test_samples2.py ============================================================================== --- pypy/dist/pypy/module/recparser/test/test_samples2.py (original) +++ pypy/dist/pypy/module/recparser/test/test_samples2.py Tue Apr 26 12:55:04 2005 @@ -1,8 +1,8 @@ """test module for CPython / PyPy nested tuples comparison""" import os, os.path as osp -from python import python_parse, pypy_parse +from pypy.module.recparser.pythonutil import python_parse, pypy_parse from pprint import pprint -import grammar +from pypy.module.recparser import grammar grammar.DEBUG = False from symbol import sym_name From adim at codespeak.net Tue Apr 26 12:56:45 2005 From: adim at codespeak.net (adim at codespeak.net) Date: Tue, 26 Apr 2005 12:56:45 +0200 (CEST) Subject: [pypy-svn] r11461 - pypy/dist/pypy/module/recparser/test Message-ID: <20050426105645.25A4B27B9C@code1.codespeak.net> Author: adim Date: Tue Apr 26 12:56:44 2005 New Revision: 11461 Added: pypy/dist/pypy/module/recparser/test/unittest_samples.py - copied unchanged from r11460, pypy/dist/pypy/module/recparser/test/test_samples.py Removed: pypy/dist/pypy/module/recparser/test/test_samples.py Log: test_samples uses unittest, change its name to avoid ambiguity Deleted: /pypy/dist/pypy/module/recparser/test/test_samples.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/test_samples.py Tue Apr 26 12:56:44 2005 +++ (empty file) @@ -1,94 +0,0 @@ -"""test module for CPython / PyPy nested tuples comparison""" - -import os, os.path as osp -import sys -from pypy.module.recparser.pythonutil import python_parse, pypy_parse, set_debug -from pprint import pprint -from pypy.module.recparser import grammar -grammar.DEBUG = False -from symbol import sym_name - - -def name(elt): - return "%s[%s]"% (sym_name.get(elt,elt),elt) - -def read_samples_dir(): - return [osp.join('samples', fname) for fname in os.listdir('samples') if fname.endswith('.py')] - -def print_sym_tuple(nested, level=0, limit=15, names=False, trace=()): - buf = [] - if level <= limit: - buf.append("%s(" % (" "*level)) - else: - buf.append("(") - for index, elt in enumerate(nested): - # Test if debugging and if on last element of error path - if trace and not trace[1:] and index == trace[0]: - buf.append('\n----> ') - if type(elt) is int: - if names: - buf.append(name(elt)) - else: - buf.append(str(elt)) - buf.append(', ') - elif type(elt) is str: - buf.append(repr(elt)) - else: - if level < limit: - buf.append('\n') - buf.extend(print_sym_tuple(elt, level+1, limit, - names, trace[1:])) - buf.append(')') - return buf - -def assert_tuples_equal(tup1, tup2, curpos = ()): - for index, (elt1, elt2) in enumerate(zip(tup1, tup2)): - if elt1 != elt2: - if type(elt1) is tuple and type(elt2) is tuple: - assert_tuples_equal(elt1, elt2, curpos + (index,)) - raise AssertionError('Found difference at %s : %s != %s' % - (curpos, name(elt1), name(elt2) ), curpos) - -from time import time, clock -def test_samples( samples ): - time_reports = {} - for sample in samples: - print "testing", sample - tstart1, cstart1 = time(), clock() - pypy_tuples = pypy_parse(sample) - tstart2, cstart2 = time(), clock() - python_tuples = python_parse(sample) - time_reports[sample] = (time() - tstart2, tstart2-tstart1, clock() - cstart2, cstart2-cstart1 ) - #print "-"*10, "PyPy parse results", "-"*10 - #print ''.join(print_sym_tuple(pypy_tuples, names=True)) - #print "-"*10, "CPython parse results", "-"*10 - #print ''.join(print_sym_tuple(python_tuples, names=True)) - print - try: - assert_tuples_equal(pypy_tuples, python_tuples) - except AssertionError,e: - error_path = e.args[-1] - print "ERROR PATH =", error_path - print "="*80 - print file(sample).read() - print "="*80 - print "-"*10, "PyPy parse results", "-"*10 - print ''.join(print_sym_tuple(pypy_tuples, names=True, trace=error_path)) - print "-"*10, "CPython parse results", "-"*10 - print ''.join(print_sym_tuple(python_tuples, names=True, trace=error_path)) - print "Failed on (%s)" % sample - # raise - pprint(time_reports) - -if __name__=="__main__": - import getopt - opts, args = getopt.getopt( sys.argv[1:], "d:", [] ) - for opt, val in opts: - if opt == "-d": - set_debug(int(val)) - if args: - samples = args - else: - samples = read_samples_dir() - - test_samples( samples ) From adim at codespeak.net Tue Apr 26 12:58:42 2005 From: adim at codespeak.net (adim at codespeak.net) Date: Tue, 26 Apr 2005 12:58:42 +0200 (CEST) Subject: [pypy-svn] r11462 - pypy/dist/pypy/module/recparser/test Message-ID: <20050426105842.1CDB727B9C@code1.codespeak.net> Author: adim Date: Tue Apr 26 12:58:41 2005 New Revision: 11462 Added: pypy/dist/pypy/module/recparser/test/test_samples.py - copied unchanged from r11460, pypy/dist/pypy/module/recparser/test/test_samples2.py Removed: pypy/dist/pypy/module/recparser/test/test_samples2.py Log: test_samples.py was renamed into unittest_sample.py, we don't need the "2" anymore Deleted: /pypy/dist/pypy/module/recparser/test/test_samples2.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/test_samples2.py Tue Apr 26 12:58:41 2005 +++ (empty file) @@ -1,70 +0,0 @@ -"""test module for CPython / PyPy nested tuples comparison""" -import os, os.path as osp -from pypy.module.recparser.pythonutil import python_parse, pypy_parse -from pprint import pprint -from pypy.module.recparser import grammar -grammar.DEBUG = False -from symbol import sym_name - -def name(elt): - return "%s[%s]"% (sym_name.get(elt,elt),elt) - -def print_sym_tuple(nested, level=0, limit=15, names=False, trace=()): - buf = [] - if level <= limit: - buf.append("%s(" % (" "*level)) - else: - buf.append("(") - for index, elt in enumerate(nested): - # Test if debugging and if on last element of error path - if trace and not trace[1:] and index == trace[0]: - buf.append('\n----> ') - if type(elt) is int: - if names: - buf.append(name(elt)) - else: - buf.append(str(elt)) - buf.append(', ') - elif type(elt) is str: - buf.append(repr(elt)) - else: - if level < limit: - buf.append('\n') - buf.extend(print_sym_tuple(elt, level+1, limit, - names, trace[1:])) - buf.append(')') - return buf - -def assert_tuples_equal(tup1, tup2, curpos = ()): - for index, (elt1, elt2) in enumerate(zip(tup1, tup2)): - if elt1 != elt2: - if type(elt1) is tuple and type(elt2) is tuple: - assert_tuples_equal(elt1, elt2, curpos + (index,)) - raise AssertionError('Found difference at %s : %s != %s\n' % - (curpos, name(elt1), name(elt2) ), curpos) - -def test_samples(): - samples_dir = osp.join(osp.dirname(__file__), 'samples') - for fname in os.listdir(samples_dir): - if not fname.endswith('.py'): - continue - abspath = osp.join(samples_dir, fname) - yield check_parse, abspath - -def check_parse(filepath): - pypy_tuples = pypy_parse(filepath) - python_tuples = python_parse(filepath) - try: - assert_tuples_equal(pypy_tuples, python_tuples) - except AssertionError, e: - error_path = e.args[-1] - print "ERROR PATH =", error_path - print "="*80 - print file(filepath).read() - print "="*80 - print "-"*10, "PyPy parse results", "-"*10 - print ''.join(print_sym_tuple(pypy_tuples, names=True, trace=error_path)) - print "-"*10, "CPython parse results", "-"*10 - print ''.join(print_sym_tuple(python_tuples, names=True, trace=error_path)) - assert False, filepath - From ludal at codespeak.net Tue Apr 26 13:09:42 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Tue, 26 Apr 2005 13:09:42 +0200 (CEST) Subject: [pypy-svn] r11467 - pypy/dist/pypy/module/recparser Message-ID: <20050426110942.7ACE427B9C@code1.codespeak.net> Author: ludal Date: Tue Apr 26 13:09:42 2005 New Revision: 11467 Removed: pypy/dist/pypy/module/recparser/tokenize.py Modified: pypy/dist/pypy/module/recparser/pythonlexer.py Log: * move tokenize.py as pythonlexer.py::main * more import fixes Modified: pypy/dist/pypy/module/recparser/pythonlexer.py ============================================================================== --- pypy/dist/pypy/module/recparser/pythonlexer.py (original) +++ pypy/dist/pypy/module/recparser/pythonlexer.py Tue Apr 26 13:09:42 2005 @@ -392,3 +392,16 @@ ## return punct, None ## raise SyntaxError("Unrecognized token '%s'" % inp[pos:pos+20] ) + + +def tokenize_file(filename): + f = file(filename).read() + src = PythonSource(f) + token = src.next() + while token!=("ENDMARKER",None) and token!=(None,None): + print token + token = src.next() + +if __name__ == '__main__': + import sys + tokenize_file(sys.argv[1]) Deleted: /pypy/dist/pypy/module/recparser/tokenize.py ============================================================================== --- /pypy/dist/pypy/module/recparser/tokenize.py Tue Apr 26 13:09:42 2005 +++ (empty file) @@ -1,15 +0,0 @@ - -import sys -from python.lexer import PythonSource - - -def parse_file(filename): - f = file(filename).read() - src = PythonSource(f) - token = src.next() - while token!=("ENDMARKER",None) and token!=(None,None): - print token - token = src.next() - -if __name__ == '__main__': - parse_file(sys.argv[1]) From ac at codespeak.net Tue Apr 26 13:25:44 2005 From: ac at codespeak.net (ac at codespeak.net) Date: Tue, 26 Apr 2005 13:25:44 +0200 (CEST) Subject: [pypy-svn] r11469 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050426112544.F0F5127B9C@code1.codespeak.net> Author: ac Date: Tue Apr 26 13:25:44 2005 New Revision: 11469 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: Remove test_cmath as it doesn't run. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Tue Apr 26 13:25:44 2005 @@ -311,7 +311,7 @@ 'test_charmapcodec.py' : TestDecl(True, UTModuleMainTest), 'test_cl.py' : TestDecl(False, UnknownTestModule), 'test_class.py' : TestDecl(False, OutputTestModule), - 'test_cmath.py' : TestDecl(True, UnknownTestModule), + 'test_cmath.py' : TestDecl(False, UnknownTestModule), 'test_codeccallbacks.py' : TestDecl(False, UTModuleMainTest), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser From pedronis at codespeak.net Tue Apr 26 13:46:55 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 26 Apr 2005 13:46:55 +0200 (CEST) Subject: [pypy-svn] r11471 - pypy/dist/pypy/tool Message-ID: <20050426114655.C0DCD27B9C@code1.codespeak.net> Author: pedronis Date: Tue Apr 26 13:46:55 2005 New Revision: 11471 Removed: pypy/dist/pypy/tool/modanalyze.py Log: this is not working anymore and has been obsoleted by the functionality in delta report Deleted: /pypy/dist/pypy/tool/modanalyze.py ============================================================================== --- /pypy/dist/pypy/tool/modanalyze.py Tue Apr 26 13:46:55 2005 +++ (empty file) @@ -1,84 +0,0 @@ -""" - This module analyzes the delta between the attributes of a module - as seen by the PyPy interpreter, and the same module as seen by the - CPython interpreter. It can be used to help insure that pure-python - functionality as provided by PyPy matches the original functionality - provided by CPython. - - This module may be used as a standalone script, with modules to be - analyzed listed on the command line (default if none given is to - analyze __builtin__) or the moduledelta() function may be called - from other modules. When used standalone, it always analyzes - using the standard object space. - - The current implementation does not examine function signatures -- - it only shows the attributes which are exclusively in one module - or the other. - - The current implementation also may not work for non-builtin extension - modules, depending on whether there is a different path variable - inside PyPy, or whether the presence of the PyPy pure python module - will shadow the original C module, making it unavailable for comparison. -""" - -import autopath -from pypy.interpreter.gateway import app2interp -from sets import Set - -def app_getmodattributes(modname): - """ Return the attributes of the named module """ - pypy_module = __import__(modname,globals(),None,[]) - return pypy_module.__dict__.keys() - -def moduledelta(space,modname): - """ - moduledelta(space,modname) imports the module from inside - the given space, and also from CPython, and returns a tuple - (missing,extra) which describes attributes in CPython but - not in PyPy, and the opposite. - """ - - wrapped_func = app2interp(app_getmodattributes).get_function(space) - - pypy_module = wrapped_func(space.wrap(modname)) - pypy_module = space.unpackiterable(pypy_module) - pypy_module = [space.unwrap(x) for x in pypy_module] - pypy_module = Set(pypy_module) - - c_module = __import__(modname,globals(),None,[]) - c_module = Set(c_module.__dict__.keys()) | Set(['__dict__','__new__']) - diff = c_module ^ pypy_module - missing = list(diff & c_module) - extra = list(diff & pypy_module) - missing.sort() - extra.sort() - return missing,extra - -if __name__ == '__main__': - from sys import argv - from pypy.objspace.std import StdObjSpace - - def showdiff(name,stuff): - if stuff: - print - print name - for i in stuff: print " ",i - print - - modlist = argv[1:] - if not modlist: - print "modanalyze [ ...]" - print - print "Analyzing __builtin__ by default" - print - modlist = ['__builtin__'] - - print "Initializing std object space" - std = StdObjSpace() - - for modname in modlist: - print - print 'Comparing %s module' % modname - missing,extra = moduledelta(std,modname) - showdiff(" Missing from PyPy",missing) - showdiff(" Extra in PyPy",extra) From ludal at codespeak.net Tue Apr 26 14:10:01 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Tue, 26 Apr 2005 14:10:01 +0200 (CEST) Subject: [pypy-svn] r11473 - pypy/dist/pypy/module/recparser/test/samples Message-ID: <20050426121001.75DDE27B9C@code1.codespeak.net> Author: ludal Date: Tue Apr 26 14:10:01 2005 New Revision: 11473 Added: pypy/dist/pypy/module/recparser/test/samples/snippet_1.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_1.py pypy/dist/pypy/module/recparser/test/samples/snippet_2.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_2.py pypy/dist/pypy/module/recparser/test/samples/snippet_3.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_3.py pypy/dist/pypy/module/recparser/test/samples/snippet_4.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_4.py pypy/dist/pypy/module/recparser/test/samples/snippet_comment.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_comment.py pypy/dist/pypy/module/recparser/test/samples/snippet_encoding_declaration.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration.py pypy/dist/pypy/module/recparser/test/samples/snippet_encoding_declaration2.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration2.py pypy/dist/pypy/module/recparser/test/samples/snippet_encoding_declaration3.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration3.py pypy/dist/pypy/module/recparser/test/samples/snippet_function_calls.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_function_calls.py pypy/dist/pypy/module/recparser/test/samples/snippet_generator.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_generator.py pypy/dist/pypy/module/recparser/test/samples/snippet_import_statements.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_import_statements.py pypy/dist/pypy/module/recparser/test/samples/snippet_list_comps.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_list_comps.py pypy/dist/pypy/module/recparser/test/samples/snippet_numbers.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_numbers.py pypy/dist/pypy/module/recparser/test/samples/snippet_ony_one_comment.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_ony_one_comment.py pypy/dist/pypy/module/recparser/test/samples/snippet_redirected_prints.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_redirected_prints.py pypy/dist/pypy/module/recparser/test/samples/snippet_samples.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_samples.py pypy/dist/pypy/module/recparser/test/samples/snippet_simple_assignment.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_simple_assignment.py pypy/dist/pypy/module/recparser/test/samples/snippet_simple_class.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_simple_class.py pypy/dist/pypy/module/recparser/test/samples/snippet_simple_for_loop.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_simple_for_loop.py pypy/dist/pypy/module/recparser/test/samples/snippet_simple_in_test.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_simple_in_test.py pypy/dist/pypy/module/recparser/test/samples/snippet_slice.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_slice.py pypy/dist/pypy/module/recparser/test/samples/snippet_whitespaces.py - copied unchanged from r11472, pypy/dist/pypy/module/recparser/test/samples/test_whitespaces.py Removed: pypy/dist/pypy/module/recparser/test/samples/test_1.py pypy/dist/pypy/module/recparser/test/samples/test_2.py pypy/dist/pypy/module/recparser/test/samples/test_3.py pypy/dist/pypy/module/recparser/test/samples/test_4.py pypy/dist/pypy/module/recparser/test/samples/test_comment.py pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration.py pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration2.py pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration3.py pypy/dist/pypy/module/recparser/test/samples/test_function_calls.py pypy/dist/pypy/module/recparser/test/samples/test_generator.py pypy/dist/pypy/module/recparser/test/samples/test_import_statements.py pypy/dist/pypy/module/recparser/test/samples/test_list_comps.py pypy/dist/pypy/module/recparser/test/samples/test_numbers.py pypy/dist/pypy/module/recparser/test/samples/test_ony_one_comment.py pypy/dist/pypy/module/recparser/test/samples/test_redirected_prints.py pypy/dist/pypy/module/recparser/test/samples/test_samples.py pypy/dist/pypy/module/recparser/test/samples/test_simple_assignment.py pypy/dist/pypy/module/recparser/test/samples/test_simple_class.py pypy/dist/pypy/module/recparser/test/samples/test_simple_for_loop.py pypy/dist/pypy/module/recparser/test/samples/test_simple_in_test.py pypy/dist/pypy/module/recparser/test/samples/test_slice.py pypy/dist/pypy/module/recparser/test/samples/test_whitespaces.py Log: * rename snippets of codes from test_ to snippet_* to prevent test_all from running them Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_1.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_1.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,3 +0,0 @@ - -x = y + 1 - Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_2.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_2.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,16 +0,0 @@ - - -L = [] -print L[0:10] - -def f(): - print 1 - # commentaire foireux -x = 1 -s = "asd" - -class A: - def f(): - pass - - Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_3.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_3.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1 +0,0 @@ -a[1:] Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_4.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_4.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1 +0,0 @@ -a is not None Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_comment.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_comment.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,6 +0,0 @@ -x = 0x1L # comment -a = 1 # yo - # hello -# world -a = 2 -# end Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,2 +0,0 @@ -# -*- coding: ISO-8859-1 -*- -a = 1 # keep this statement for now (see test_only_one_comment.py) Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration2.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration2.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,3 +0,0 @@ -#!/usr/bin/env python -# coding: ISO_LATIN_1 -a = 1 Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration3.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_encoding_declaration3.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,5 +0,0 @@ - - -# coding: ISO-8859-1 -# encoding on the third line <=> no encoding -a = 1 Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_function_calls.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_function_calls.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,11 +0,0 @@ -f() -f(a) -f(a,) -f(a,b) -f(a, b,) -f(*args) -f(**kwargs) -f(*args, **kwargs) -f(a, *args, **kwargs) -f(a, b, *args, **kwargs) -a = 1 Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_generator.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_generator.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,3 +0,0 @@ -def f(n): - for i in range(n): - yield n Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_import_statements.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_import_statements.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,2 +0,0 @@ -import os -import os.path as osp Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_list_comps.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_list_comps.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,4 +0,0 @@ -[i for i in range(10) if i%2 == 0] -# same list on several lines -[i for i in range(10) - if i%2 == 0] Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_numbers.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_numbers.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,8 +0,0 @@ -a = 1 -a = -1 -a = 1. -a = .2 -a = 1.2 -a = 1e3 -a = 1.3e4 -a = -1.3 Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_ony_one_comment.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_ony_one_comment.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1 +0,0 @@ -# only one comment Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_redirected_prints.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_redirected_prints.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1 +0,0 @@ -print >> f Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_samples.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_samples.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,96 +0,0 @@ - - - -import os, os.path as osp -import sys -from ebnf import parse_grammar -from python import python_parse, pypy_parse, set_debug -from pprint import pprint -import grammar -grammar.DEBUG = False -from symbol import sym_name - - -def name(elt): - return "%s[%d]"% (sym_name.get(elt,elt),elt) - -def read_samples_dir(): - return [osp.join('samples', fname) for fname in os.listdir('samples') - if fname.endswith('.py')] - - -def print_sym_tuple( tup ): - print "\n(", - for elt in tup: - if type(elt)==int: - print name(elt), - elif type(elt)==str: - print repr(elt), - else: - print_sym_tuple(elt) - print ")", - -def assert_tuples_equal(tup1, tup2, curpos = (), disp=""): - if disp: - print "\n"+disp+"(", - for index, (elt1, elt2) in enumerate(zip(tup1, tup2)): - if disp and elt1==elt2 and type(elt1)==int: - print name(elt1), - if elt1 != elt2: - if type(elt1) is tuple and type(elt2) is tuple: - if disp: - disp=disp+" " - assert_tuples_equal(elt1, elt2, curpos + (index,), disp) - print - print "TUP1" - print_sym_tuple(tup1) - print - print "TUP2" - print_sym_tuple(tup2) - - raise AssertionError('Found difference at %s : %s != %s' % - (curpos, name(elt1), name(elt2) ), curpos) - if disp: - print ")", - -def test_samples( samples ): - for sample in samples: - pypy_tuples = pypy_parse(sample) - python_tuples = python_parse(sample) - print "="*20 - print file(sample).read() - print "-"*10 - pprint(pypy_tuples) - print "-"*10 - pprint(python_tuples) - try: - assert_tuples_equal( python_tuples, pypy_tuples, disp=" " ) - assert python_tuples == pypy_tuples - except AssertionError,e: - print - print "python_tuples" - show( python_tuples, e.args[-1] ) - print - print "pypy_tuples" - show( pypy_tuples, e.args[-1] ) - raise - - -def show( tup, idxs ): - for level, i in enumerate(idxs): - print " "*level , tup - tup=tup[i] - print tup - -if __name__=="__main__": - import getopt - opts, args = getopt.getopt( sys.argv[1:], "d:", [] ) - for opt, val in opts: - if opt=="-d": - set_debug(int(val)) - if args: - samples = args - else: - samples = read_samples_dir() - - test_samples( samples ) Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_simple_assignment.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_simple_assignment.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1 +0,0 @@ -x = 1 Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_simple_class.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_simple_class.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,12 +0,0 @@ -class A: - - def with_white_spaces_before(self): - pass - - - def another_method(self, foo): - """with a docstring - on several lines - # with a sharpsign - """ - self.bar = foo Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_simple_for_loop.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_simple_for_loop.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,3 +0,0 @@ -for x in range(10): - pass - Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_simple_in_test.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_simple_in_test.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1 +0,0 @@ -x in range(10) Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_slice.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_slice.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1 +0,0 @@ -a[1:] Deleted: /pypy/dist/pypy/module/recparser/test/samples/test_whitespaces.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/test_whitespaces.py Tue Apr 26 14:10:01 2005 +++ (empty file) @@ -1,2 +0,0 @@ -l = [] -l . append ( 12 ) From ludal at codespeak.net Tue Apr 26 14:12:41 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Tue, 26 Apr 2005 14:12:41 +0200 (CEST) Subject: [pypy-svn] r11474 - pypy/dist/pypy/module/recparser/test/samples Message-ID: <20050426121241.DEC9A27B9C@code1.codespeak.net> Author: ludal Date: Tue Apr 26 14:12:41 2005 New Revision: 11474 Added: pypy/dist/pypy/module/recparser/test/samples/snippet_only_one_comment.py - copied unchanged from r11473, pypy/dist/pypy/module/recparser/test/samples/snippet_ony_one_comment.py pypy/dist/pypy/module/recparser/test/samples/snippet_simple_in_expr.py - copied unchanged from r11473, pypy/dist/pypy/module/recparser/test/samples/snippet_simple_in_test.py Removed: pypy/dist/pypy/module/recparser/test/samples/snippet_ony_one_comment.py pypy/dist/pypy/module/recparser/test/samples/snippet_simple_in_test.py Log: * more renaming Deleted: /pypy/dist/pypy/module/recparser/test/samples/snippet_ony_one_comment.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/snippet_ony_one_comment.py Tue Apr 26 14:12:41 2005 +++ (empty file) @@ -1 +0,0 @@ -# only one comment Deleted: /pypy/dist/pypy/module/recparser/test/samples/snippet_simple_in_test.py ============================================================================== --- /pypy/dist/pypy/module/recparser/test/samples/snippet_simple_in_test.py Tue Apr 26 14:12:41 2005 +++ (empty file) @@ -1 +0,0 @@ -x in range(10) From ludal at codespeak.net Tue Apr 26 14:45:09 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Tue, 26 Apr 2005 14:45:09 +0200 (CEST) Subject: [pypy-svn] r11475 - in pypy/dist/pypy/module/recparser: . leftout test test/samples Message-ID: <20050426124509.E093E27B9C@code1.codespeak.net> Author: ludal Date: Tue Apr 26 14:45:09 2005 New Revision: 11475 Removed: pypy/dist/pypy/module/recparser/conftest.py Modified: pypy/dist/pypy/module/recparser/ (props changed) pypy/dist/pypy/module/recparser/__init__.py (props changed) pypy/dist/pypy/module/recparser/ebnflexer.py (props changed) pypy/dist/pypy/module/recparser/ebnfparse.py (props changed) pypy/dist/pypy/module/recparser/grammar.py (props changed) pypy/dist/pypy/module/recparser/leftout/ (props changed) pypy/dist/pypy/module/recparser/leftout/builders.py (props changed) pypy/dist/pypy/module/recparser/leftout/compiler.py (props changed) pypy/dist/pypy/module/recparser/leftout/gen_ast.py (props changed) pypy/dist/pypy/module/recparser/leftout/parse_grammar.py (props changed) pypy/dist/pypy/module/recparser/leftout/pgen.py (props changed) pypy/dist/pypy/module/recparser/pythonlexer.py (props changed) pypy/dist/pypy/module/recparser/pythonparse.py (props changed) pypy/dist/pypy/module/recparser/pythonutil.py (props changed) pypy/dist/pypy/module/recparser/syntaxtree.py (props changed) pypy/dist/pypy/module/recparser/test/ (props changed) pypy/dist/pypy/module/recparser/test/samples/ (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_1.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_2.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_3.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_4.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_comment.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_encoding_declaration.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_encoding_declaration2.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_encoding_declaration3.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_function_calls.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_generator.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_import_statements.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_list_comps.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_numbers.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_only_one_comment.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_redirected_prints.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_samples.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_simple_assignment.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_simple_class.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_simple_for_loop.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_simple_in_expr.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_slice.py (props changed) pypy/dist/pypy/module/recparser/test/samples/snippet_whitespaces.py (props changed) pypy/dist/pypy/module/recparser/test/test_pytokenizer.py (props changed) pypy/dist/pypy/module/recparser/test/test_samples.py (props changed) pypy/dist/pypy/module/recparser/test/unittest_samples.py (props changed) Log: * ran fixeol * removed conftest.py Deleted: /pypy/dist/pypy/module/recparser/conftest.py ============================================================================== --- /pypy/dist/pypy/module/recparser/conftest.py Tue Apr 26 14:45:09 2005 +++ (empty file) @@ -1,7 +0,0 @@ - -import py.test.collect - -class Directory(py.test.collect.Directory): - def run(self): - return [] - From hpk at codespeak.net Tue Apr 26 14:58:06 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 26 Apr 2005 14:58:06 +0200 (CEST) Subject: [pypy-svn] r11476 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050426125806.24E2827B9C@code1.codespeak.net> Author: hpk Date: Tue Apr 26 14:58:05 2005 New Revision: 11476 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: fix conftest and insert a new test type (not completed yet, will do soon ...) Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Tue Apr 26 14:58:05 2005 @@ -144,8 +144,17 @@ reportdiff(expected, result) py.test.fail("output check failed: %s" % (self.fspath.basename,)) +class RunningModule(OpErrorModule): + def run(self): + return [] + #return [self.fspath.purebasename] + + #def join(self, name): + # name = self.fspath.purebasename + # space = getmyspace() + # run_file(str(self.fspath.join(name)), space=space) -class UnknownTestModule(py.test.collect.Module): +class UnknownTestModule(OpErrorModule): def run(self): py.test.skip("missing test type for: %s" %(self.fspath.basename)) @@ -311,7 +320,7 @@ 'test_charmapcodec.py' : TestDecl(True, UTModuleMainTest), 'test_cl.py' : TestDecl(False, UnknownTestModule), 'test_class.py' : TestDecl(False, OutputTestModule), - 'test_cmath.py' : TestDecl(False, UnknownTestModule), + 'test_cmath.py' : TestDecl(False, RunningModule), 'test_codeccallbacks.py' : TestDecl(False, UTModuleMainTest), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser From arigo at codespeak.net Tue Apr 26 15:06:00 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 26 Apr 2005 15:06:00 +0200 (CEST) Subject: [pypy-svn] r11477 - pypy/dist/pypy/annotation Message-ID: <20050426130600.ACAA027B9C@code1.codespeak.net> Author: arigo Date: Tue Apr 26 15:06:00 2005 New Revision: 11477 Modified: pypy/dist/pypy/annotation/bookkeeper.py pypy/dist/pypy/annotation/model.py Log: Protect SomeObject.__repr__ against infinite recursion (for lists containing themselves). Modified: pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- pypy/dist/pypy/annotation/bookkeeper.py (original) +++ pypy/dist/pypy/annotation/bookkeeper.py Tue Apr 26 15:06:00 2005 @@ -9,7 +9,6 @@ from pypy.annotation.classdef import ClassDef from pypy.annotation.listdef import ListDef, MOST_GENERAL_LISTDEF from pypy.annotation.dictdef import DictDef, MOST_GENERAL_DICTDEF -from pypy.tool.tls import tlsobject from pypy.tool.hack import func_with_new_name from pypy.interpreter.pycode import CO_VARARGS from pypy.interpreter.pycode import cpython_code_signature @@ -31,9 +30,6 @@ self.attrs.update(other.attrs) -TLS = tlsobject() - - class Bookkeeper: """The log of choices that have been made while analysing the operations. It ensures that the same 'choice objects' will be returned if we ask Modified: pypy/dist/pypy/annotation/model.py ============================================================================== --- pypy/dist/pypy/annotation/model.py (original) +++ pypy/dist/pypy/annotation/model.py Tue Apr 26 15:06:00 2005 @@ -32,10 +32,12 @@ import pypy from pypy.annotation.pairtype import pair, extendabletype from pypy.objspace.flow.model import Constant +from pypy.tool.tls import tlsobject import inspect DEBUG = True # set to False to disable recording of debugging information +TLS = tlsobject() class SomeObject: @@ -49,15 +51,26 @@ def __ne__(self, other): return not (self == other) def __repr__(self): - items = self.__dict__.items() - items.sort() - args = [] - for k, v in items: - m = getattr(self, 'fmt_' + k, repr) - r = m(v) - if r is not None: - args.append('%s=%s'%(k, r)) - kwds = ', '.join(args) + try: + reprdict = TLS.reprdict + except AttributeError: + reprdict = TLS.reprdict = {} + if self in reprdict: + kwds = '...' + else: + reprdict[self] = True + try: + items = self.__dict__.items() + items.sort() + args = [] + for k, v in items: + m = getattr(self, 'fmt_' + k, repr) + r = m(v) + if r is not None: + args.append('%s=%s'%(k, r)) + kwds = ', '.join(args) + finally: + del reprdict[self] return '%s(%s)' % (self.__class__.__name__, kwds) def fmt_knowntype(self, t): From adim at codespeak.net Tue Apr 26 15:17:34 2005 From: adim at codespeak.net (adim at codespeak.net) Date: Tue, 26 Apr 2005 15:17:34 +0200 (CEST) Subject: [pypy-svn] r11478 - in pypy/dist/pypy/module/recparser: . test Message-ID: <20050426131734.D13A727B8E@code1.codespeak.net> Author: adim Date: Tue Apr 26 15:17:34 2005 New Revision: 11478 Modified: pypy/dist/pypy/module/recparser/pythonparse.py pypy/dist/pypy/module/recparser/pythonutil.py pypy/dist/pypy/module/recparser/test/test_samples.py Log: moved pypy_parse from pythonutil to pythoparse and fixed related imports Modified: pypy/dist/pypy/module/recparser/pythonparse.py ============================================================================== --- pypy/dist/pypy/module/recparser/pythonparse.py (original) +++ pypy/dist/pypy/module/recparser/pythonparse.py Tue Apr 26 15:17:34 2005 @@ -5,7 +5,6 @@ import sys import pythonutil - def parse_python_source( textsrc, gram, goal ): """Parse a python source according to goal""" target = gram.rules[goal] @@ -33,6 +32,22 @@ """Parse a python file""" return parse_python_source( textsrc, gram, "eval_input" ) +def pypy_parse(filename): + """parse using PyPy's parser module and return nested tuples + """ + pyf = file(filename) + builder = parse_file_input(pyf, pythonutil.python_grammar()) + pyf.close() + if builder.stack: + # print builder.stack[-1] + root_node = builder.stack[-1] + nested_tuples = root_node.totuple() + if hasattr(builder, '_source_encoding'): + return (323, nested_tuples, builder._source_encoding) + else: + return nested_tuples + return None # XXX raise an exception instead + if __name__ == "__main__": if len(sys.argv) < 2: print "python parse.py [-d N] test_file.py" @@ -44,6 +59,6 @@ test_file = sys.argv[1] print "-"*20 print - print "pyparse \n", pythonutil.pypy_parse(test_file) + print "pyparse \n", pypy_parse(test_file) print "parser \n", pythonutil.python_parse(test_file) Modified: pypy/dist/pypy/module/recparser/pythonutil.py ============================================================================== --- pypy/dist/pypy/module/recparser/pythonutil.py (original) +++ pypy/dist/pypy/module/recparser/pythonutil.py Tue Apr 26 15:17:34 2005 @@ -1,7 +1,5 @@ -__all__ = [ "parse_file_input", "parse_single_input", "parse_eval_input", - "python_grammar", "PYTHON_GRAMMAR" ] +__all__ = ["python_grammar", "PYTHON_GRAMMAR" ] -from pythonparse import parse_file_input, parse_single_input, parse_eval_input import os import sys @@ -35,26 +33,3 @@ import parser tp2 = parser.suite(pyf.read()) return tp2.totuple() - - -def _get_encoding(builder): - if hasattr(builder, '_source_encoding'): - return builder._source_encoding - return None - -def pypy_parse(filename): - """parse using PyPy's parser module and return nested tuples - """ - pyf = file(filename) - builder = parse_file_input(pyf, python_grammar()) - pyf.close() - if builder.stack: - # print builder.stack[-1] - root_node = builder.stack[-1] - nested_tuples = root_node.totuple() - source_encoding = _get_encoding(builder) - if source_encoding is None: - return nested_tuples - else: - return (323, nested_tuples, source_encoding) - return None # XXX raise an exception instead Modified: pypy/dist/pypy/module/recparser/test/test_samples.py ============================================================================== --- pypy/dist/pypy/module/recparser/test/test_samples.py (original) +++ pypy/dist/pypy/module/recparser/test/test_samples.py Tue Apr 26 15:17:34 2005 @@ -1,6 +1,7 @@ """test module for CPython / PyPy nested tuples comparison""" import os, os.path as osp -from pypy.module.recparser.pythonutil import python_parse, pypy_parse +from pypy.module.recparser.pythonutil import python_parse +from pypy.module.recparser.pythonparse import pypy_parse from pprint import pprint from pypy.module.recparser import grammar grammar.DEBUG = False From cfbolz at codespeak.net Tue Apr 26 17:32:26 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 26 Apr 2005 17:32:26 +0200 (CEST) Subject: [pypy-svn] r11480 - pypy/dist/pypy/documentation Message-ID: <20050426153226.71D8F27B84@code1.codespeak.net> Author: cfbolz Date: Tue Apr 26 17:32:26 2005 New Revision: 11480 Modified: pypy/dist/pypy/documentation/translation.txt Log: started documentation on genllvm. Modified: pypy/dist/pypy/documentation/translation.txt ============================================================================== --- pypy/dist/pypy/documentation/translation.txt (original) +++ pypy/dist/pypy/documentation/translation.txt Tue Apr 26 17:32:26 2005 @@ -409,3 +409,107 @@ XXX work in progress. + + + + +The LLVM Back-End +================= + +Overview +-------- + +XXX preliminary notes only + +The task of GenLLVM is to convert a flow graph into `LLVM code`_, which can +then be optimized and compiled by LLVM. GenLLVM depends heavily on the +annotations, functions without annotations cannot be translated. The flowgraph +is not changed by GenLLVM in contrast to GenC. After the generation and +compilation of the LLVM code a wrapper is generated (at the moment with the +help of Pyrex) wich wraps the arguments and return value of the entry +function. Thus it is possible to call the entry function from Python. + +GenLLVM does not depend on the CPython runtime which has the drawback that most +functions with SomeObject annotations cannot be compiled properly -- the only +operations that are allowed on variables with SomeObject annotations are +isinstance and type. + +GenLLVM creates for every object in the flow graph (e.g. constants, variables, +blocks...) an LLVM 'representation'. This representation knows how to +represent the corresponding object in LLVM and knows what code to generate for +space operations on the object, what global definitions the object needs etc. + +Some examples to make this cleare: A `ClassRepr`_ object represents a class, a +`FuncRepr`_ object represent a function (or method). The following happens if +the space operation ``simple_call`` is performed in a flow grap: An +appropriate ``FuncRepr`` object is constructed which generates LLVM code for +the function it represents. Then the ``FuncRepr`` inserts the appropriate LLVM +instructions into the LLVM code of the function it is called from (sometime +this is more than just a call: the arguments have to be casted, +etc). Something similar happens if a class is instantiated: A ``ClassRepr`` is +created which generates LLVM that allocates enough memory for an instance of +the class and then (if the class or a subclass has an ``__init__`` method) +tells the ``FuncRepr`` of the appropriate ``__init__`` method to generate the +code for the call to it. + +Every representation object has a some other representations it depends on: A +``ListRepr`` of lists instances of a class depends on the ``ClassRepr`` of +that class. This is to ensure that the typedef for that is written after the +typedef of the class. To ensure this the dependency tree of representations +traversed depth first when the LLVM code is written to a file. + +.. _`LLVM code`: http://www.llvm.org +.. _`ClassRepr`: http://codespeak.net/svn/pypy/dist/pypy/translator/llvm/classrepr.py +.. _`FuncRepr`: http://codespeak.net/svn/pypy/dist/pypy/translator/llvm/funcrepr.py + + +Details about the representations +--------------------------------- + +Simple representations +++++++++++++++++++++++ + +There are some objects that have direct counterparts in LLVM: ints, floats, +chars (strings of length 1). Most space operations involving those are +implemented as `tiny function`_ (LLVM doesn't support macros since LLVM's .ll +files correspond directly to its bytecode format so that round trip +conversions are nearly lossless). + + +Function representation ++++++++++++++++++++++++ + +The representation of function in LLVM code is relatively easy since LLVM as +well as flow graph use SSA form. Furthermore LLVM supports exactly the kind of +control structures that the flow graphs feature: A function consists of basic +blocks that end with links to other blocks, data flows along these links. The +data flow is handled in LLVM by phi nodes: at the beginning of every block phi +nodes may be inserted. It determines the value of a variable depending on +which block branched to the currect block. Example:: + + block1: + %b = phi int [1, %block0], [2, %block2] + +Here %b is 1 if control came from block0 and 2 if control came from block2. + + +List representation ++++++++++++++++++++ + +Lists are represented as arrays. The code for the basic operation on lists +(``getitem``, ``setitem``, ``add``, ``mul``, ``append``, ``pop``...) is +`written in C`_. This C code is then compiled to LLVM code with the help of +the LLVM C-front-end. The resulting LLVM code is then transformed (with search +and replace) to fit in with the rest of GenLLVM. To support lists with +different types of items the C code implements lists as arrays of pointers to +``item``, where ``item`` is a dummy struct that is replaced with whatever type +is wanted. + + +XXX More to come. + + + +.. _`tiny function`: http://codespeak.net/svn/pypy/dist/pypy/translator/llvm/operations.ll +.. _`written in C`: http://codespeak.net/svn/pypy/dist/pypy/translator/llvm/list.c + From arigo at codespeak.net Tue Apr 26 21:22:16 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 26 Apr 2005 21:22:16 +0200 (CEST) Subject: [pypy-svn] r11491 - pypy/dist/pypy/documentation Message-ID: <20050426192216.95B6227B7B@code1.codespeak.net> Author: arigo Date: Tue Apr 26 21:22:16 2005 New Revision: 11491 Modified: pypy/dist/pypy/documentation/translation.txt Log: More on the C-level operations that we want to have. Modified: pypy/dist/pypy/documentation/translation.txt ============================================================================== --- pypy/dist/pypy/documentation/translation.txt (original) +++ pypy/dist/pypy/documentation/translation.txt Tue Apr 26 21:22:16 2005 @@ -371,8 +371,8 @@ The C typer considers each operation in turn and, based on its annotations, replaces it by C-level operations if possible. -Integer operations ------------------- +Example: Integer operations +--------------------------- Integer operations are the easiest. Assume a graph containing the following operation:: @@ -395,20 +395,84 @@ Memory model ------------ -For more complicated examples we need to choose a memory model. We will assume the following model: Variables store primitive values only (integers, pointers); more complex structures are always stored in the heap. +For more complicated examples we need to choose a memory model. We will assume a simple model: local Variables store primitive values only (integers, pointers), and the heap stores structs. We support this model using the following new graph operations (the result Variable is omitted when meaningless):: + v2 = malloc() v2 = malloc(v1) incref(v3) decref(v3) -v2=malloc(v1) allocates v1 bytes of heap memory and returns a pointer to it. For now, there is always a reference counter in a hidden header. +v2=malloc() allocates some bytes of heap memory, zero it, and returns a pointer to it. The number of bytes is suitable for the type of v2. For now, there is always a reference counter in a hidden header, initialized to 1. + +incref() and decref() allow each value to be tracked. The decref(v3) operation is used when the content of the value ``v3`` is about to be deleted. GenC inserts an operation decref(v3) whenever the value in a local variable v3 is about to be forgotten (it isn't passed to the next basic block). In addition, incref(v3) is inserted when a local Variable is about to be duplicated (it is passed several times to the next basic block). + +The exact operations performed by incref(v3) and decref(v3) depend on the type of v3. For pointer types, they increment and decrement the reference counter of whatever they point to. For integers, they have no effect. + +When decref() is applied on a pointer and the reference counter drops to zero, the destructor of the appropriate type is called; its action depends on the type, but (as in CPython) what it typically does is call decref() on each member of the structure and then release the occupied memory. + +Note that for now malloc() returns memory initialized to zero. This allows our destructors to cope with partially initialized data structures, should an error occur while they are constructed. + +In C, it is common to see a struct definition whose last member is a variable-sized array. For this case, v2=malloc(v1) allocates an amount of memory which is enough to store the fixed part of the struct plus ``v1`` items in the variable-sized part. + + +CType +----- + +Each C type is represented by an instance of a concrete subclass of CType_. Each instance has the following interface: + +* a ``typename`` attribute: the name given to this type in C. + +* nameof(obj): method returning a C expression representing the constant ``obj`` in this C type. + +* init_globals(): called the first time genc sees this particular CType instance. It generates C code that declares the type. + +* collect_globals(): called from time to time -- more precisely, before each function body is written to the C file. It can generate more C code related to this type, if needed (e.g. declaration of static variables of this type). + + +.. _CType: http://codespeak.net/svn/pypy/dist/pypy/translator/genc/basetype.py + + +C-level operations +------------------ + +Here are the new operations that the C typer introduces in flow graphs. Ideally, a completely typed graph should only contain these operations, and no longer any of the original operations. + +Integer arithmetic operations (see complete list in `ctyper.py`_):: + + v3 = int_add(v1, v2) # v3 = v1+v2; // int v1, v2, v3 + v3 = int_sub(v1, v2) # v3 = v1-v2; // int v1, v2, v3 + v3 = int_mul(v1, v2) # v3 = v1*v2; // int v1, v2, v3 + v3 = int_is_true(v1) # v3 = v1?1:0; // int v1, v3 + etc. + +Function call:: + + v3 = direct_call(v1, v2, ...) # v3 = v1(v2, ...); + +Memory management (see `Memory model`_):: + + v2 = malloc() # for T* v2, alloc and zero sizeof(T) bytes of memory + v2 = malloc(v1) # same, but allocates sizeof(T) + v1*sizeof(T_item) + incref(v3) # for T* v3, details depend on T + decref(v3) # for T* v3, details depend on T + +Pointer operations:: + + v3 = arrow(v1, 'fieldname') # v3 = v1->fieldname; // if fieldname is a primitive + v3 = substruct(v1, 'fieldname') # v3 = &v1->fieldname; // if fieldname is a struct + v3 = subarray(v1, 'fieldname') # v3 = v1->fieldname; // if fieldname is an array + arrow_set(v1, 'fieldname', v2) # v1->fieldname = v2; + v3 = ptr_add(v1, v2) # v3 = v1+v2; // T* v1, int v2, T* v3 + v3 = ptr_cast(v1) # v3 = (T*) v1; // S* v1, T* v3 + +For regularity, all pointers should point to struct types. Casting should follow the C99 aliasing rules: in our case, we should only use it when we have got a pointer ``S* v1``, and we discover (by inspecting what v1 points to) that it is actually just the first field of a larger structure of type T. -incref() and decref() allow each primitive value to be tracked: GenC inserts an operation decref(v3) whenever the value in v3 is about to be forgotten (it isn't passed to the next basic block), or incref(v3) when it is about to be duplicated (it is passed several times to the next basic block). The exact operations performed by incref(v3) and decref(v3) depend on the type of v3, but they typically only have an effect for pointer types, for which they increase and decrease the reference counter of the memory they point to and call the appropriate destructor when it falls to zero. The destructor of complex data structures will in turn call decref() on its members. +If you are confused by the three variants of the ``->`` operator, note that only arrow() reads the content of a field. The substruct() operation returns a pointer to a substructure of the parent structure. The subarray() operation does the same for arrays in the parent structure -- which is essentially the same as substruct(), and not as arrow(). Blame C syntax. -XXX work in progress. +.. _`ctyper.py`: http://codespeak.net/svn/pypy/dist/pypy/translator/genc/ctyper.py From cfbolz at codespeak.net Tue Apr 26 21:45:21 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Tue, 26 Apr 2005 21:45:21 +0200 (CEST) Subject: [pypy-svn] r11492 - in pypy/dist/pypy/translator/llvm: . test Message-ID: <20050426194521.0EB3727B7B@code1.codespeak.net> Author: cfbolz Date: Tue Apr 26 21:45:20 2005 New Revision: 11492 Added: pypy/dist/pypy/translator/llvm/test/test_class.py pypy/dist/pypy/translator/llvm/test/test_seq.py pypy/dist/pypy/translator/llvm/test/test_snippet.py Modified: pypy/dist/pypy/translator/llvm/class.ll pypy/dist/pypy/translator/llvm/classrepr.py pypy/dist/pypy/translator/llvm/funcrepr.py pypy/dist/pypy/translator/llvm/lazyattribute.py pypy/dist/pypy/translator/llvm/list.c pypy/dist/pypy/translator/llvm/list_template.ll pypy/dist/pypy/translator/llvm/make_runtime.py pypy/dist/pypy/translator/llvm/pbcrepr.py pypy/dist/pypy/translator/llvm/seqrepr.py pypy/dist/pypy/translator/llvm/test/llvmsnippet.py pypy/dist/pypy/translator/llvm/test/test_genllvm.py Log: * Splitted the tests into more manageable chunks * Fixed newlist * Changed ListTypeRepr to enable recursive lists Modified: pypy/dist/pypy/translator/llvm/class.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/class.ll (original) +++ pypy/dist/pypy/translator/llvm/class.ll Tue Apr 26 21:45:20 2005 @@ -4,6 +4,7 @@ %std.object = type {%std.class*} %std.list.sbyte = type {uint, sbyte*} +%std.list.int = type {uint, int*} %std.exception = type {%std.class*, %std.list.sbyte*} %std.last_exception.type = internal global %std.class* null %std.last_exception.value = internal global %std.exception* null Modified: pypy/dist/pypy/translator/llvm/classrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/classrepr.py (original) +++ pypy/dist/pypy/translator/llvm/classrepr.py Tue Apr 26 21:45:20 2005 @@ -16,7 +16,8 @@ from pypy.translator.llvm.funcrepr import VirtualMethodRepr from pypy.translator.llvm.memorylayout import MemoryLayout -debug = False +debug = True +lazy_debug = True class ClassRepr(TypeRepr): l_classes = {} @@ -106,6 +107,7 @@ if self.l_base is not None: self.memlayout = self.l_base.memlayout.extend_layout(attribs, l_att_types) + self.dependencies.update(self.l_base.memlayout.l_types) else: attribs = ["__class__"] + attribs l_att_types = [SimpleTypeRepr("%std.class*", gen)] + l_att_types Modified: pypy/dist/pypy/translator/llvm/funcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/funcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/funcrepr.py Tue Apr 26 21:45:20 2005 @@ -14,7 +14,7 @@ from pypy.translator.llvm.representation import debug, LLVMRepr, CompileError from pypy.translator.llvm.typerepr import TypeRepr, PointerTypeRepr -debug = True +debug = False INTRINSIC_OPS = ["lt", "le", "eq", "ne", "gt", "ge", "is_", "is_true", "len", "neg", "pos", "invert", "add", "sub", "mul", "truediv", @@ -23,8 +23,7 @@ "inplace_truediv", "inplace_floordiv", "inplace_div", "inplace_mod", "inplace_pow", "inplace_lshift", "inplace_rshift", "inplace_and", "inplace_or", "inplace_xor", - "contains", "newlist", "newtuple", "alloc_and_set", - "issubtype", "type", "ord"] + "contains", "alloc_and_set", "issubtype", "type", "ord"] C_SIMPLE_TYPES = {annmodel.SomeChar: "char", annmodel.SomeString: "char*", @@ -232,15 +231,20 @@ def create_op(self, opnumber, op): l_target = self.gen.get_repr(op.result) + self.l_func.dependencies.add(l_target) + if op.opname == "newtuple": + l_target.type.t_op_newtuple(l_target, op.args, + self.lblock, self.l_func) + return + if op.opname == "newlist": + l_target.type.t_op_newlist(l_target, op.args, + self.lblock, self.l_func) + return l_arg0 = self.gen.get_repr(op.args[0]) - self.l_func.dependencies.update([l_arg0, l_target]) + self.l_func.dependencies.add(l_arg0) l_op = getattr(l_arg0, "op_" + op.opname, None) if l_op is not None: l_op(l_target, op.args, self.lblock, self.l_func) - #XXX need to find more elegant solution for this special case - elif op.opname == "newtuple": - l_target.type.t_op_newtuple(l_target, op.args, - self.lblock, self.l_func) elif op.opname in INTRINSIC_OPS: l_args = [self.gen.get_repr(arg) for arg in op.args[1:]] self.l_func.dependencies.update(l_args) @@ -477,7 +481,16 @@ def cfuncdef(self): a = self.l_function.translator.annotator retv = self.l_function.graph.returnblock.inputargs[0] - rettype_c = C_SIMPLE_TYPES[a.binding(retv).__class__] + try: + rettype_c = C_SIMPLE_TYPES[a.binding(retv).__class__] + self.void = False + except KeyError: + l_retv = self.l_function.l_retvalue + if l_retv.llvmtype() == "%std.void*": + rettype_c = "void" + self.void = True + else: + raise CompileError, "Return value can't be converted to Python" args = self.l_function.graph.startblock.inputargs argtypes_c = [C_SIMPLE_TYPES[a.binding(v).__class__] for v in args] fd = "%s %s(%s)" % (rettype_c, self.name[1:], @@ -501,14 +514,18 @@ for i, a in enumerate(args): t += ["%s" % a] t = ", ".join(t) - s = """ - result = %s(%s) + if not self.void: + s = " result = %s(%s)" % (name, t) + else: + s = " %s(%s)\n result = None" % (name, t) + + s += """ global pypy__uncaught_exception if pypy__uncaught_exception != 0: pypy__uncaught_exception = 0 raise RuntimeError('An uncaught exception occured in the LLVM code.') else: - return result""" % (name, t) + return result""" self.pyrex_source.append(t + "):\n" + s) self.pyrex_source = "".join(self.pyrex_source) return self.pyrex_source Modified: pypy/dist/pypy/translator/llvm/lazyattribute.py ============================================================================== --- pypy/dist/pypy/translator/llvm/lazyattribute.py (original) +++ pypy/dist/pypy/translator/llvm/lazyattribute.py Tue Apr 26 21:45:20 2005 @@ -36,7 +36,7 @@ cls.setup = setup c__init__ = cls.__init__ def __init__(self, *args, **kwds): - ret = c__init__(self, *args, **kwds) + c__init__(self, *args, **kwds) self.gen.lazy_objects.add(self) self.__setup_called__ = False cls.__init__ = __init__ Modified: pypy/dist/pypy/translator/llvm/list.c ============================================================================== --- pypy/dist/pypy/translator/llvm/list.c (original) +++ pypy/dist/pypy/translator/llvm/list.c Tue Apr 26 21:45:20 2005 @@ -48,47 +48,6 @@ return nlist; } -//XXX implement a real newlist with an arbitrary number of args -struct list* newlist_ALTERNATIVE1(struct item* value) { - struct list* nlist = malloc(sizeof(struct list)); - nlist->length = 1; - nlist->data = malloc(sizeof(struct item*)); - nlist->data[0] = value; - return nlist; -} - -struct list* newlist_ALTERNATIVE2(struct item* v1, struct item* v2) { - struct list* nlist = malloc(sizeof(struct list)); - nlist->length = 2; - nlist->data = malloc(sizeof(struct item*) * 2); - nlist->data[0] = v1; - nlist->data[1] = v2; - return nlist; -} -struct list* newlist_ALTERNATIVE3(struct item* v1, struct item* v2, - struct item* v3) { - struct list* nlist = malloc(sizeof(struct list)); - nlist->length = 3; - nlist->data = malloc(sizeof(struct item*) * 3); - nlist->data[0] = v1; - nlist->data[1] = v2; - nlist->data[2] = v3; - return nlist; -} - -struct list* newlist_ALTERNATIVE4(struct item* v1, struct item* v2, - struct item* v3, struct item* v4) { - struct list* nlist = malloc(sizeof(struct list)); - nlist->length = 4; - nlist->data = malloc(sizeof(struct item*) * 4); - nlist->data[0] = v1; - nlist->data[1] = v2; - nlist->data[2] = v3; - nlist->data[3] = v4; - return nlist; -} - - struct list* alloc_and_set(int length, struct item* init) { unsigned int i = 0; struct list* nlist = malloc(sizeof(struct list)); Modified: pypy/dist/pypy/translator/llvm/list_template.ll ============================================================================== --- pypy/dist/pypy/translator/llvm/list_template.ll (original) +++ pypy/dist/pypy/translator/llvm/list_template.ll Tue Apr 26 21:45:20 2005 @@ -19,21 +19,21 @@ ret void } -internal int %std.len(%std.list.%(name)s* %l) { +internal int %std.len(%(name)s* %l) { entry: - %tmp.1 = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.1 = getelementptr %(name)s* %l, int 0, uint 0 %tmp.2 = load uint* %tmp.1 %tmp.3 = cast uint %tmp.2 to int ret int %tmp.3 } -internal int %std.valid_index(int %i, %std.list.%(name)s* %l) { +internal int %std.valid_index(int %i, %(name)s* %l) { entry: %tmp.1 = setlt int %i, 0 br bool %tmp.1, label %UnifiedReturnBlock, label %endif.0 endif.0: - %tmp.1.i = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.1.i = getelementptr %(name)s* %l, int 0, uint 0 %tmp.2.i = load uint* %tmp.1.i %tmp.3.i = cast uint %tmp.2.i to int %not.tmp.6 = setgt int %tmp.3.i, %i @@ -44,86 +44,23 @@ ret int 0 } -internal %std.list.%(name)s* %std.newlist() { +internal %(name)s* %std.newlist() { entry: - %tmp.0 = malloc %std.list.%(name)s - %tmp.3 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 0 + %tmp.0 = malloc %(name)s + %tmp.3 = getelementptr %(name)s* %tmp.0, int 0, uint 0 store uint 0, uint* %tmp.3 - %tmp.5 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 1 + %tmp.5 = getelementptr %(name)s* %tmp.0, int 0, uint 1 store %(item)s* null, %(item)s** %tmp.5 - ret %std.list.%(name)s* %tmp.0 + ret %(name)s* %tmp.0 } -internal %std.list.%(name)s* %std.newlist(%(item)s %value) { +internal %(name)s* %std.alloc_and_set(int %length, %(item)s %init) { entry: - %tmp.0 = malloc %std.list.%(name)s - %tmp.3 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 0 - store uint 1, uint* %tmp.3 - %tmp.5 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 1 - %tmp.6 = malloc %(item)s - store %(item)s* %tmp.6, %(item)s** %tmp.5 - store %(item)s %value, %(item)s* %tmp.6 - ret %std.list.%(name)s* %tmp.0 -} - -internal %std.list.%(name)s* %std.newlist(%(item)s %v1, %(item)s %v2) { -entry: - %tmp.0 = malloc %std.list.%(name)s - %tmp.3 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 0 - store uint 2, uint* %tmp.3 - %tmp.5 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 1 - %tmp.6 = malloc [2 x %(item)s] - %tmp.6.sub = getelementptr [2 x %(item)s]* %tmp.6, int 0, int 0 - store %(item)s* %tmp.6.sub, %(item)s** %tmp.5 - store %(item)s %v1, %(item)s* %tmp.6.sub - %tmp.16 = getelementptr [2 x %(item)s]* %tmp.6, int 0, int 1 - store %(item)s %v2, %(item)s* %tmp.16 - ret %std.list.%(name)s* %tmp.0 -} - -internal %std.list.%(name)s* %std.newlist(%(item)s %v1, %(item)s %v2, %(item)s %v3) { -entry: - %tmp.0 = malloc %std.list.%(name)s - %tmp.3 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 0 - store uint 3, uint* %tmp.3 - %tmp.5 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 1 - %tmp.6 = malloc [3 x %(item)s] - %tmp.6.sub = getelementptr [3 x %(item)s]* %tmp.6, int 0, int 0 - store %(item)s* %tmp.6.sub, %(item)s** %tmp.5 - store %(item)s %v1, %(item)s* %tmp.6.sub - %tmp.16 = getelementptr [3 x %(item)s]* %tmp.6, int 0, int 1 - store %(item)s %v2, %(item)s* %tmp.16 - %tmp.21 = getelementptr [3 x %(item)s]* %tmp.6, int 0, int 2 - store %(item)s %v3, %(item)s* %tmp.21 - ret %std.list.%(name)s* %tmp.0 -} - -internal %std.list.%(name)s* %std.newlist(%(item)s %v1, %(item)s %v2, %(item)s %v3, %(item)s %v4) { -entry: - %tmp.0 = malloc %std.list.%(name)s - %tmp.3 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 0 - store uint 4, uint* %tmp.3 - %tmp.5 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 1 - %tmp.6 = malloc [4 x %(item)s] - %tmp.6.sub = getelementptr [4 x %(item)s]* %tmp.6, int 0, int 0 - store %(item)s* %tmp.6.sub, %(item)s** %tmp.5 - store %(item)s %v1, %(item)s* %tmp.6.sub - %tmp.16 = getelementptr [4 x %(item)s]* %tmp.6, int 0, int 1 - store %(item)s %v2, %(item)s* %tmp.16 - %tmp.21 = getelementptr [4 x %(item)s]* %tmp.6, int 0, int 2 - store %(item)s %v3, %(item)s* %tmp.21 - %tmp.26 = getelementptr [4 x %(item)s]* %tmp.6, int 0, int 3 - store %(item)s %v4, %(item)s* %tmp.26 - ret %std.list.%(name)s* %tmp.0 -} - -internal %std.list.%(name)s* %std.alloc_and_set(int %length, %(item)s %init) { -entry: - %tmp.0 = malloc %std.list.%(name)s - %tmp.3 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 0 + %tmp.0 = malloc %(name)s + %tmp.3 = getelementptr %(name)s* %tmp.0, int 0, uint 0 %tmp.5 = cast int %length to uint store uint %tmp.5, uint* %tmp.3 - %tmp.7 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 1 + %tmp.7 = getelementptr %(name)s* %tmp.0, int 0, uint 1 %tmp.8 = malloc %(item)s, uint %tmp.5 store %(item)s* %tmp.8, %(item)s** %tmp.7 %tmp.165 = seteq int %length, 0 @@ -139,17 +76,17 @@ br bool %tmp.16, label %no_exit, label %loopexit loopexit: - ret %std.list.%(name)s* %tmp.0 + ret %(name)s* %tmp.0 } -internal %(item)s %std.getitem(%std.list.%(name)s* %l, int %index.1) { +internal %(item)s %std.getitem(%(name)s* %l, int %index.1) { entry: %tmp.1 = setlt int %index.1, 0 - %tmp.11 = getelementptr %std.list.%(name)s* %l, int 0, uint 1 + %tmp.11 = getelementptr %(name)s* %l, int 0, uint 1 br bool %tmp.1, label %then, label %endif then: - %tmp.4 = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.4 = getelementptr %(name)s* %l, int 0, uint 0 %tmp.5 = load uint* %tmp.4 %tmp.5 = cast uint %tmp.5 to int %tmp.9 = add int %tmp.5, %index.1 @@ -165,13 +102,13 @@ ret %(item)s %tmp.15 } -internal %(item)s %std.getitem.exc(%std.list.%(name)s* %l, int %index.1) { +internal %(item)s %std.getitem.exc(%(name)s* %l, int %index.1) { entry: %tmp.1 = setlt int %index.1, 0 br bool %tmp.1, label %then.0, label %endif.0.i then.0: - %tmp.4 = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.4 = getelementptr %(name)s* %l, int 0, uint 0 %tmp.5 = load uint* %tmp.4 %tmp.5 = cast uint %tmp.5 to int %tmp.9 = add int %tmp.5, %index.1 @@ -180,7 +117,7 @@ endif.0.i: %index_addr.0.0 = phi int [ %tmp.9, %then.0 ], [ %index.1, %entry ] - %tmp.1.i.i = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.1.i.i = getelementptr %(name)s* %l, int 0, uint 0 %tmp.2.i.i = load uint* %tmp.1.i.i %tmp.3.i.i = cast uint %tmp.2.i.i to int %tmp.6.i = setgt int %tmp.3.i.i, %index_addr.0.0 @@ -190,7 +127,7 @@ store %std.class* %glb.class.IndexError.object, %std.class** %std.last_exception.type unwind endif.1: - %tmp.19 = getelementptr %std.list.%(name)s* %l, int 0, uint 1 + %tmp.19 = getelementptr %(name)s* %l, int 0, uint 1 %tmp.20 = load %(item)s** %tmp.19 %tmp.22 = getelementptr %(item)s* %tmp.20, int %index_addr.0.0 %tmp.23 = load %(item)s* %tmp.22 @@ -198,14 +135,14 @@ } -internal void %std.setitem(%std.list.%(name)s* %l, int %index.1, %(item)s %value) { +internal void %std.setitem(%(name)s* %l, int %index.1, %(item)s %value) { entry: %tmp.1 = setlt int %index.1, 0 - %tmp.11 = getelementptr %std.list.%(name)s* %l, int 0, uint 1 + %tmp.11 = getelementptr %(name)s* %l, int 0, uint 1 br bool %tmp.1, label %then, label %endif then: - %tmp.4 = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.4 = getelementptr %(name)s* %l, int 0, uint 0 %tmp.5 = load uint* %tmp.4 %tmp.5 = cast uint %tmp.5 to int %tmp.9 = add int %tmp.5, %index.1 @@ -221,13 +158,13 @@ ret void } -internal void %std.setitem.exc(%std.list.%(name)s* %l, int %index.1, %(item)s %value) { +internal void %std.setitem.exc(%(name)s* %l, int %index.1, %(item)s %value) { entry: %tmp.1 = setlt int %index.1, 0 br bool %tmp.1, label %then.0, label %endif.0.i then.0: - %tmp.4 = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.4 = getelementptr %(name)s* %l, int 0, uint 0 %tmp.5 = load uint* %tmp.4 %tmp.5 = cast uint %tmp.5 to int %tmp.9 = add int %tmp.5, %index.1 @@ -236,7 +173,7 @@ endif.0.i: %index_addr.0.0 = phi int [ %tmp.9, %then.0 ], [ %index.1, %entry ] - %tmp.1.i.i = getelementptr %std.list.%(name)s* %l, int 0, uint 0 + %tmp.1.i.i = getelementptr %(name)s* %l, int 0, uint 0 %tmp.2.i.i = load uint* %tmp.1.i.i %tmp.3.i.i = cast uint %tmp.2.i.i to int %tmp.6.i = setgt int %tmp.3.i.i, %index_addr.0.0 @@ -246,27 +183,27 @@ store %std.class* %glb.class.IndexError.object, %std.class** %std.last_exception.type unwind endif.1: - %tmp.17 = getelementptr %std.list.%(name)s* %l, int 0, uint 1 + %tmp.17 = getelementptr %(name)s* %l, int 0, uint 1 %tmp.18 = load %(item)s** %tmp.17 %tmp.20 = getelementptr %(item)s* %tmp.18, int %index_addr.0.0 store %(item)s %value, %(item)s* %tmp.20 ret void } -internal %std.list.%(name)s* %std.add(%std.list.%(name)s* %a, %std.list.%(name)s* %b) { +internal %(name)s* %std.add(%(name)s* %a, %(name)s* %b) { entry: - %tmp.0 = malloc %std.list.%(name)s - %tmp.3 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.0 = malloc %(name)s + %tmp.3 = getelementptr %(name)s* %a, int 0, uint 0 %tmp.4 = load uint* %tmp.3 - %tmp.6 = getelementptr %std.list.%(name)s* %b, int 0, uint 0 + %tmp.6 = getelementptr %(name)s* %b, int 0, uint 0 %tmp.7 = load uint* %tmp.6 %tmp.8 = add uint %tmp.7, %tmp.4 - %tmp.10 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 0 + %tmp.10 = getelementptr %(name)s* %tmp.0, int 0, uint 0 store uint %tmp.8, uint* %tmp.10 - %tmp.13 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 1 + %tmp.13 = getelementptr %(name)s* %tmp.0, int 0, uint 1 %tmp.14 = malloc %(item)s, uint %tmp.8 store %(item)s* %tmp.14, %(item)s** %tmp.13 - %tmp.19 = getelementptr %std.list.%(name)s* %a, int 0, uint 1 + %tmp.19 = getelementptr %(name)s* %a, int 0, uint 1 %tmp.20 = load %(item)s** %tmp.19 %tmp.2.i14 = seteq uint %tmp.4, 0 br bool %tmp.2.i14, label %copy.entry, label %no_exit.i @@ -282,7 +219,7 @@ br bool %tmp.2.i, label %no_exit.i, label %copy.entry copy.entry: - %tmp.28 = getelementptr %std.list.%(name)s* %b, int 0, uint 1 + %tmp.28 = getelementptr %(name)s* %b, int 0, uint 1 %tmp.29 = load %(item)s** %tmp.28 %tmp.42 = sub uint %tmp.8, %tmp.4 %tmp.2.i319 = seteq uint %tmp.8, %tmp.4 @@ -300,26 +237,26 @@ br bool %tmp.2.i3, label %no_exit.i4, label %copy.entry9 copy.entry9: - ret %std.list.%(name)s* %tmp.0 + ret %(name)s* %tmp.0 } -internal %std.list.%(name)s* %std.mul(%std.list.%(name)s* %a, int %times) { +internal %(name)s* %std.mul(%(name)s* %a, int %times) { entry: - %tmp.0 = malloc %std.list.%(name)s - %tmp.3 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.0 = malloc %(name)s + %tmp.3 = getelementptr %(name)s* %a, int 0, uint 0 %tmp.4 = load uint* %tmp.3 %tmp.6 = cast int %times to uint %tmp.7 = mul uint %tmp.4, %tmp.6 - %tmp.9 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 0 + %tmp.9 = getelementptr %(name)s* %tmp.0, int 0, uint 0 store uint %tmp.7, uint* %tmp.9 - %tmp.12 = getelementptr %std.list.%(name)s* %tmp.0, int 0, uint 1 + %tmp.12 = getelementptr %(name)s* %tmp.0, int 0, uint 1 %tmp.13 = malloc %(item)s, uint %tmp.7 store %(item)s* %tmp.13, %(item)s** %tmp.12 %tmp.194 = setgt int %times, 0 br bool %tmp.194, label %no_exit.preheader, label %loopexit no_exit.preheader: - %tmp.22 = getelementptr %std.list.%(name)s* %a, int 0, uint 1 + %tmp.22 = getelementptr %(name)s* %a, int 0, uint 1 br label %no_exit no_exit: @@ -350,18 +287,18 @@ br bool %tmp.19, label %no_exit, label %loopexit loopexit: - ret %std.list.%(name)s* %tmp.0 + ret %(name)s* %tmp.0 } -internal %std.list.%(name)s* %std.inplace_add(%std.list.%(name)s* %a, %std.list.%(name)s* %b) { +internal %(name)s* %std.inplace_add(%(name)s* %a, %(name)s* %b) { entry: - %tmp.2 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.2 = getelementptr %(name)s* %a, int 0, uint 0 %tmp.3 = load uint* %tmp.2 - %tmp.5 = getelementptr %std.list.%(name)s* %b, int 0, uint 0 + %tmp.5 = getelementptr %(name)s* %b, int 0, uint 0 %tmp.6 = load uint* %tmp.5 %tmp.7 = add uint %tmp.6, %tmp.3 %tmp.0 = malloc %(item)s, uint %tmp.7 - %tmp.11 = getelementptr %std.list.%(name)s* %a, int 0, uint 1 + %tmp.11 = getelementptr %(name)s* %a, int 0, uint 1 %tmp.12 = load %(item)s** %tmp.11 %tmp.2.i14 = seteq uint %tmp.3, 0 br bool %tmp.2.i14, label %copy.entry, label %no_exit.i @@ -377,7 +314,7 @@ br bool %tmp.2.i, label %no_exit.i, label %copy.entry copy.entry: - %tmp.18 = getelementptr %std.list.%(name)s* %b, int 0, uint 1 + %tmp.18 = getelementptr %(name)s* %b, int 0, uint 1 %tmp.19 = load %(item)s** %tmp.18 %tmp.2.i319 = seteq uint %tmp.6, 0 br bool %tmp.2.i319, label %copy.entry9, label %no_exit.i4 @@ -397,18 +334,18 @@ store uint %tmp.7, uint* %tmp.2 free %(item)s* %tmp.12 store %(item)s* %tmp.0, %(item)s** %tmp.11 - ret %std.list.%(name)s* %a + ret %(name)s* %a } -internal void %std.append(%std.list.%(name)s* %a, %(item)s %value) { +internal void %std.append(%(name)s* %a, %(item)s %value) { entry: - %tmp.2 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.2 = getelementptr %(name)s* %a, int 0, uint 0 %tmp.3 = load uint* %tmp.2 %tmp.3-off = add uint %tmp.3, 1 %tmp.0 = malloc %(item)s, uint %tmp.3-off %tmp.12 = getelementptr %(item)s* %tmp.0, uint %tmp.3 store %(item)s %value, %(item)s* %tmp.12 - %tmp.15 = getelementptr %std.list.%(name)s* %a, int 0, uint 1 + %tmp.15 = getelementptr %(name)s* %a, int 0, uint 1 %tmp.16 = load %(item)s** %tmp.15 %tmp.2.i5 = seteq uint %tmp.3, 0 br bool %tmp.2.i5, label %copy.entry, label %no_exit.i @@ -430,13 +367,13 @@ ret void } -internal %(item)s %std.pop(%std.list.%(name)s* %a, int %index.1) { +internal %(item)s %std.pop(%(name)s* %a, int %index.1) { entry: %tmp.1 = setlt int %index.1, 0 br bool %tmp.1, label %then, label %endif then: - %tmp.4 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.4 = getelementptr %(name)s* %a, int 0, uint 0 %tmp.5 = load uint* %tmp.4 %tmp.5 = cast uint %tmp.5 to int %tmp.9 = add int %tmp.5, %index.1 @@ -444,11 +381,11 @@ endif: %index_addr.0 = phi int [ %tmp.9, %then ], [ %index.1, %entry ] - %tmp.11 = getelementptr %std.list.%(name)s* %a, int 0, uint 1 + %tmp.11 = getelementptr %(name)s* %a, int 0, uint 1 %tmp.12 = load %(item)s** %tmp.11 %tmp.14 = getelementptr %(item)s* %tmp.12, int %index_addr.0 %tmp.15 = load %(item)s* %tmp.14 - %tmp.18 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.18 = getelementptr %(name)s* %a, int 0, uint 0 %tmp.19 = load uint* %tmp.18 %tmp.19-off = add uint %tmp.19, 1073741823 %tmp.16 = malloc %(item)s, uint %tmp.19-off @@ -493,13 +430,13 @@ ret %(item)s %tmp.15 } -internal %(item)s %std.pop.exc(%std.list.%(name)s* %a, int %index.1) { +internal %(item)s %std.pop.exc(%(name)s* %a, int %index.1) { entry: %tmp.1 = setlt int %index.1, 0 br bool %tmp.1, label %then.0, label %endif.0.i then.0: - %tmp.4 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.4 = getelementptr %(name)s* %a, int 0, uint 0 %tmp.5 = load uint* %tmp.4 %tmp.5 = cast uint %tmp.5 to int %tmp.9 = add int %tmp.5, %index.1 @@ -508,7 +445,7 @@ endif.0.i: %index_addr.0.0 = phi int [ %tmp.9, %then.0 ], [ %index.1, %entry ] - %tmp.1.i.i = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.1.i.i = getelementptr %(name)s* %a, int 0, uint 0 %tmp.2.i.i = load uint* %tmp.1.i.i %tmp.3.i.i = cast uint %tmp.2.i.i to int %tmp.6.i = setgt int %tmp.3.i.i, %index_addr.0.0 @@ -518,7 +455,7 @@ store %std.class* %glb.class.IndexError.object, %std.class** %std.last_exception.type unwind endif.1: - %tmp.19 = getelementptr %std.list.%(name)s* %a, int 0, uint 1 + %tmp.19 = getelementptr %(name)s* %a, int 0, uint 1 %tmp.20 = load %(item)s** %tmp.19 %tmp.22 = getelementptr %(item)s* %tmp.20, int %index_addr.0.0 %tmp.23 = load %(item)s* %tmp.22 @@ -565,25 +502,25 @@ ret %(item)s %tmp.23 } -internal %(item)s %std.pop(%std.list.%(name)s* %a) { +internal %(item)s %std.pop(%(name)s* %a) { entry: - %tmp.3 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.3 = getelementptr %(name)s* %a, int 0, uint 0 %tmp.4 = load uint* %tmp.3 %tmp.4 = cast uint %tmp.4 to int %tmp.6 = add int %tmp.4, -1 - %tmp.0 = call %(item)s %std.pop( %std.list.%(name)s* %a, int %tmp.6 ) + %tmp.0 = call %(item)s %std.pop( %(name)s* %a, int %tmp.6 ) ret %(item)s %tmp.0 } -internal void %std.reverse(%std.list.%(name)s* %a) { +internal void %std.reverse(%(name)s* %a) { entry: - %tmp.1 = getelementptr %std.list.%(name)s* %a, int 0, uint 0 + %tmp.1 = getelementptr %(name)s* %a, int 0, uint 0 %tmp.2 = load uint* %tmp.1 %tmp.610 = seteq uint %tmp.2, 1 br bool %tmp.610, label %return, label %no_exit.preheader no_exit.preheader: - %tmp.9 = getelementptr %std.list.%(name)s* %a, int 0, uint 1 + %tmp.9 = getelementptr %(name)s* %a, int 0, uint 1 br label %no_exit no_exit: Modified: pypy/dist/pypy/translator/llvm/make_runtime.py ============================================================================== --- pypy/dist/pypy/translator/llvm/make_runtime.py (original) +++ pypy/dist/pypy/translator/llvm/make_runtime.py Tue Apr 26 21:45:20 2005 @@ -118,7 +118,7 @@ def make_list_template(): code = get_llvm_code("list.c") code = cleanup_code(code) - code = code.replace("%struct.list", "%std.list.%(name)s") + code = code.replace("%struct.list", "%(name)s") code = code.replace("%struct.item*", "%(item)s") f = open(autopath.this_dir + "/list_template.ll", "w") print (autopath.this_dir + "/list_template.ll") Modified: pypy/dist/pypy/translator/llvm/pbcrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/pbcrepr.py (original) +++ pypy/dist/pypy/translator/llvm/pbcrepr.py Tue Apr 26 21:45:20 2005 @@ -16,7 +16,7 @@ from pypy.translator.llvm.funcrepr import VirtualMethodRepr from pypy.translator.llvm.memorylayout import MemoryLayout -debug = True +debug = False class PBCTypeRepr(TypeRepr): def get(obj, gen): Modified: pypy/dist/pypy/translator/llvm/seqrepr.py ============================================================================== --- pypy/dist/pypy/translator/llvm/seqrepr.py (original) +++ pypy/dist/pypy/translator/llvm/seqrepr.py Tue Apr 26 21:45:20 2005 @@ -7,7 +7,7 @@ from pypy.translator.llvm.representation import debug, LLVMRepr from pypy.translator.llvm.typerepr import TypeRepr, IntTypeRepr -from pypy.translator.llvm.typerepr import PointerTypeRepr +from pypy.translator.llvm.typerepr import SimpleTypeRepr, PointerTypeRepr from pypy.translator.llvm.funcrepr import BoundMethodRepr @@ -89,13 +89,20 @@ def __init__(self, obj, gen): if debug: - print "ListTypeRepr: %s, %s" % (obj, listitem(obj)) + print "ListTypeRepr:" + self.obj = obj self.gen = gen - self.l_itemtype = gen.get_repr(listitem(obj)) - self.dependencies = sets.Set([self.l_itemtype]) + self.dependencies = sets.Set() + self.name = self.gen.get_global_tmp("list") + + + lazy_attributes = ['definition', 'l_itemtype'] + + def setup(self): + self.l_itemtype = self.gen.get_repr(listitem(self.obj)) + self.dependencies.add(self.l_itemtype) itemtype = self.l_itemtype.typename() - self.name = "%%std.list.%s" % itemtype.strip("%").replace("*", "") - self.definition = self.name + " = type {uint, %s*}" % itemtype + self.definition = self.name + " = type {uint, %s*}" % itemtype def get_functions(self): f = file(autopath.this_dir + "/list_template.ll", "r") @@ -103,7 +110,7 @@ f.close() itemtype = self.l_itemtype.typename() s = s.replace("%(item)s", self.l_itemtype.typename()) - s = s.replace("%(name)s", itemtype.strip("%").replace("*", "")) + s = s.replace("%(name)s", self.name) if isinstance(self.l_itemtype, IntTypeRepr): f1 = file(autopath.this_dir + "/int_list.ll", "r") s += f1.read() @@ -136,6 +143,39 @@ else: raise CompileError, "List method %s not supported." % args[1].value + def t_op_newlist(self, l_target, args, lblock, l_func): + l_args = [self.gen.get_repr(arg) for arg in args] + l_func.dependencies.update(l_args) + lblock.malloc(l_target) + l_ptrarray = self.gen.get_local_tmp(PointerTypeRepr( + self.l_itemtype.typename() + "*", self.gen), l_func) + l_ptrlength = self.gen.get_local_tmp(PointerTypeRepr("uint", self.gen), + l_func) + l_func.dependencies.update([l_ptrlength, l_ptrarray]) + lblock.getelementptr(l_ptrlength, l_target, [0, 0]) + lblock.instruction("store uint %d, uint* %s" % + (len(args), l_ptrlength.llvmname())) + lblock.getelementptr(l_ptrarray, l_target, [0, 1]) + if len(args) == 0: + lblock.instruction("store %s null, %s" % + (l_ptrarray.llvmtype()[:-1], + l_ptrarray.typed_name())) + return + l_arraytype = SimpleTypeRepr( + "[%d x %s]*" % (len(args), self.l_itemtype.typename()), self.gen) + l_array = self.gen.get_local_tmp(l_arraytype, l_func) + l_func.dependencies.update([l_arraytype, l_array]) + lblock.malloc(l_array) + l_ptrs = [self.gen.get_local_tmp( + PointerTypeRepr(self.l_itemtype.typename(), self.gen), l_func) + for a in args] + l_func.dependencies.update(l_ptrs) + for i, l_a in enumerate(l_args): + lblock.getelementptr(l_ptrs[i], l_array, [0, i]) + if i == 0: + lblock.store(l_ptrs[i], l_ptrarray) + lblock.store(l_a, l_ptrs[i]) + class TupleRepr(LLVMRepr): def get(obj, gen): Modified: pypy/dist/pypy/translator/llvm/test/llvmsnippet.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/llvmsnippet.py (original) +++ pypy/dist/pypy/translator/llvm/test/llvmsnippet.py Tue Apr 26 21:45:20 2005 @@ -59,6 +59,9 @@ def call_list_default_argument(i1): return list_default_argument(i1) +def return_none(): + pass + #float snippets def float_f1(x): @@ -143,6 +146,14 @@ a = [0, 1, 2, 3] return a.pop() + len(a) + a[i] +def newlist_zero_arg(i): + a = [] + a.append(i) + return len(a) + a[0] + +def big_array(i): + return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17][i] + glob_array = [[i] * 5 for i in range(5)] def access_global_array(x, y, z): @@ -150,6 +161,14 @@ glob_array[x][y] = z return result +def circular_list(n): + lst = [] + i = 0 + while i < n: + i += 1 + lst = [lst] + return len(lst) + #class snippets @@ -218,6 +237,27 @@ ggg.a = x return previous + d + previous1 +def degrading_func(obj): + if isinstance(obj, C): + return obj.a + obj.b + elif isinstance(obj, B): + return obj.a + return -90 + +def call_degrading_func(flag): + if flag: + return degrading_func(C(-37)) + else: + return degrading_func(B()) + +circular_instance = GGG() +circular_instance.x = circular_instance +circular_instance.b = 10 + +def circular_classdef(): + return circular_instance.x.x.x.x.x.x.x.b + + #simple inheritance snippets class AAA(object): def __init__(self): Added: pypy/dist/pypy/translator/llvm/test/test_class.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/test/test_class.py Tue Apr 26 21:45:20 2005 @@ -0,0 +1,76 @@ +from __future__ import division +import autopath +import py + +from pypy.translator.translator import Translator +from pypy.translator.llvm.genllvm import LLVMGenerator +from pypy.translator.llvm.test import llvmsnippet +from pypy.translator.llvm.test.test_genllvm import compile_function, is_on_path +from pypy.objspace.flow.model import Constant, Variable + +def setup_module(mod): + mod.llvm_found = is_on_path("llvm-as") + + +class TestClass(object): + def setup_method(self, method): + if not llvm_found: + py.test.skip("llvm-as not found on path.") + + def test_classsimple(self): + f = compile_function(llvmsnippet.class_simple, []) + assert f() == 14 + + def test_classsimple1(self): + f = compile_function(llvmsnippet.class_simple1, [int]) + assert f(2) == 10 + + def test_id_int(self): + f = compile_function(llvmsnippet.id_int, [int]) + for i in range(1, 20): + assert f(i) == i + + def test_classsimple2(self): + f = compile_function(llvmsnippet.class_simple2, [int]) + assert f(2) == 10 + + def test_method_of_base_class(self): + f = compile_function(llvmsnippet.method_of_base_class, []) + assert f() == 14 + + def test_attribute_from_base_class(self): + f = compile_function(llvmsnippet.attribute_from_base_class, []) + assert f() == 4 + + def test_direct_call_of_virtual_method(self): + f = compile_function(llvmsnippet.direct_call_of_virtual_method, []) + assert f() == 14 + + def test_flow_type(self): + f = compile_function(llvmsnippet.flow_type, []) + assert f() == 16 + + def test_merge_class(self): + f = compile_function(llvmsnippet.merge_classes, [bool]) + assert f(True) == 1 + assert f(False) == 2 + + def test_attribute_instance(self): + f = compile_function(llvmsnippet.attribute_instance, [bool]) + assert f(True) == 1 + assert f(False) == 2 + + def test_global_instance(self): + f = compile_function(llvmsnippet.global_instance, [int]) + assert f(-1) == 41 + for i in range(20): + assert f(i) == 2 * i + + def test_call_degrading_func(self): + f = compile_function(llvmsnippet.call_degrading_func, [bool]) + assert f(True) == -36 + assert f(False) == 14 + + def test_circular_classdef(self): + f = compile_function(llvmsnippet.circular_classdef, []) + assert f() == 10 Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py ============================================================================== --- pypy/dist/pypy/translator/llvm/test/test_genllvm.py (original) +++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py Tue Apr 26 21:45:20 2005 @@ -2,12 +2,9 @@ import autopath import py -import StringIO - from pypy.translator.translator import Translator from pypy.translator.llvm.genllvm import LLVMGenerator from pypy.translator.llvm.test import llvmsnippet -from pypy.translator.test import snippet as test from pypy.objspace.flow.model import Constant, Variable def setup_module(mod): @@ -34,24 +31,13 @@ if not llvm_found: py.test.skip("llvm-as not found on path") - def DONOT_test_simple1(self): + def test_simple1(self): t = Translator(llvmsnippet.simple1) a = t.annotate([]) gen = LLVMGenerator(t) l_repr = gen.get_repr(t.getflowgraph().startblock.exits[0].args[0]) assert l_repr.llvmname() == "1" assert l_repr.typed_name() == "int 1" - print gen.l_entrypoint.get_functions() - assert gen.l_entrypoint.get_functions() == """\ -int %simple1() { -block0: -\tbr label %block1 -block1: -\t%v0 = phi int [1, %block0] -\tret int %v0 -} - -""" def test_simple2(self): t = Translator(llvmsnippet.simple2) @@ -63,26 +49,6 @@ assert l_repr.llvmname() == "false" assert l_repr.typed_name() == "bool false" - def DONOT_test_typerepr(self): - t = Translator(llvmsnippet.simple1) - a = t.annotate([]) - gen = LLVMGenerator(t) - l_repr = gen.get_repr(str) - assert l_repr.llvmname() == "%std.string*" - - def DONOT_test_stringrepr(self): - t = Translator(llvmsnippet.simple3) - a = t.annotate([]) - gen = LLVMGenerator(t) - l_repr1 = gen.get_repr(t.getflowgraph().startblock.exits[0].args[0]) - l_repr2 = gen.get_repr(t.getflowgraph().startblock.exits[0].args[0]) - assert l_repr1 is l_repr2 - assert l_repr1.typed_name() == "%std.string* %glb.StringRepr.2" - assert l_repr2.get_globals() == """%glb.StringRepr.1 = \ -internal constant [13 x sbyte] c"Hello, Stars!" -%glb.StringRepr.2 = internal constant %std.string {uint 13,\ -sbyte* getelementptr ([13 x sbyte]* %glb.StringRepr.1, uint 0, uint 0)}""" - class TestGenLLVM(object): def setup_method(self,method): if not llvm_found: @@ -127,6 +93,10 @@ for i in range(20): assert f(i) == llvmsnippet.call_list_default_argument(i) + def test_return_none(self): + f = compile_function(llvmsnippet.return_none, []) + assert f() is None + class TestFloat(object): def setup_method(self, method): if not llvm_found: @@ -140,136 +110,7 @@ f = compile_function(llvmsnippet.float_int_bool, [float]) assert f(3.0) == 9.0 -class TestLLVMArray(object): - def setup_method(self, method): - if not llvm_found: - py.test.skip("llvm-as not found on path.") - - def test_array(self): - f = compile_function(llvmsnippet.array_simple, []) - assert f() == 42 - - def test_array1(self): - f = compile_function(llvmsnippet.array_simple1, [int]) - assert f(1) == 10 - assert f(-42) == -420 - - def test_array_setitem(self): - f = compile_function(llvmsnippet.array_setitem, [int]) - print f(1), f(2), f(3) - assert f(1) == 12 - assert f(2) == 13 - assert f(3) == 3 - - def test_array_add(self): - f = compile_function(llvmsnippet.array_add, [int, int, int, int, int]) - assert f(1,2,3,4,0) == 1 - assert f(1,2,3,4,1) == 2 - assert f(1,2,3,4,2) == 3 - assert f(1,2,5,6,3) == 6 - - def test_array_double(self): - f = compile_function(llvmsnippet.double_array, []) - assert f() == 15 - - def test_bool_array(self): - f = compile_function(llvmsnippet.bool_array, []) - assert f() == 1 - - def test_array_arg(self): - f = compile_function(llvmsnippet.array_arg, [int]) - assert f(5) == 0 - - def test_array_len(self): - f = compile_function(llvmsnippet.array_len, []) - assert f() == 10 - - def test_array_append(self): - f = compile_function(llvmsnippet.array_append, [int]) - for i in range(3): - assert f(i) == 0 - assert f(3) == 10 - - def test_array_reverse(self): - f = compile_function(llvmsnippet.array_reverse, [int]) - assert f(0) == 1 - assert f(1) == 0 - - def test_range(self): - f = compile_function(llvmsnippet.rangetest, [int]) - for i in range(10): - assert f(i) == i - - def test_array_pop(self): - f = compile_function(llvmsnippet.array_pop, [int]) - assert f(0) == 6 - assert f(1) == 7 - assert f(2) == 8 - - def test_access_global_array(self): - f = compile_function(llvmsnippet.access_global_array, [int, int, int]) - for i in range(5): - for j in range(5): - assert f(i, j, i + j) == i - for i in range(5): - for j in range(5): - assert f(i, j, 0) == i + j - - -class TestClass(object): - def setup_method(self, method): - if not llvm_found: - py.test.skip("llvm-as not found on path.") - - def test_classsimple(self): - f = compile_function(llvmsnippet.class_simple, []) - assert f() == 14 - - def test_classsimple1(self): - f = compile_function(llvmsnippet.class_simple1, [int]) - assert f(2) == 10 - - def test_id_int(self): - f = compile_function(llvmsnippet.id_int, [int]) - for i in range(1, 20): - assert f(i) == i - - def test_classsimple2(self): - f = compile_function(llvmsnippet.class_simple2, [int]) - assert f(2) == 10 - - def test_method_of_base_class(self): - f = compile_function(llvmsnippet.method_of_base_class, []) - assert f() == 14 - - def test_attribute_from_base_class(self): - f = compile_function(llvmsnippet.attribute_from_base_class, []) - assert f() == 4 - def test_direct_call_of_virtual_method(self): - f = compile_function(llvmsnippet.direct_call_of_virtual_method, []) - assert f() == 14 - - def test_flow_type(self): - f = compile_function(llvmsnippet.flow_type, []) - assert f() == 16 - - def test_merge_class(self): - f = compile_function(llvmsnippet.merge_classes, [bool]) - assert f(True) == 1 - assert f(False) == 2 - - def test_attribute_instance(self): - f = compile_function(llvmsnippet.attribute_instance, [bool]) - assert f(True) == 1 - assert f(False) == 2 - - def test_global_instance(self): - f = compile_function(llvmsnippet.global_instance, [int]) - assert f(-1) == 41 - for i in range(20): - assert f(i) == 2 * i - class TestString(object): def setup_method(self, method): if not llvm_found: @@ -279,26 +120,6 @@ f = compile_function(llvmsnippet.string_f2, [int, int]) assert chr(f(1, 0)) == "a" -class TestTuple(object): - def setup_method(self, method): - if not llvm_found: - py.test.skip("llvm-as not found on path.") - - def test_f1(self): - f = compile_function(llvmsnippet.tuple_f1, [int]) - assert f(10) == 10 - assert f(15) == 15 - - def test_f3(self): - f = compile_function(llvmsnippet.tuple_f3, [int]) - assert f(10) == 10 - assert f(15) == 15 - assert f(30) == 30 - - def test_constant_tuple(self): - f = compile_function(llvmsnippet.constant_tuple, [int]) - for i in range(3, 7): - assert f(i) == i + 3 class TestException(object): def setup_method(self,method): @@ -355,91 +176,3 @@ assert f(2) == 17 assert f(3) == 19 -class TestSnippet(object): - def setup_method(self, method): - if not llvm_found: - py.test.skip("llvm-as not found on path.") - - def test_if_then_else(self): - f = compile_function(test.if_then_else, [int, int, int]) - assert f(0, 12, 13) == 13 - assert f(13, 12, 13) == 12 - - def test_my_gcd(self): - f = compile_function(test.my_gcd, [int, int]) - assert f(15, 5) == 5 - assert f(18, 42) == 6 - - def test_is_perfect_number(self): - f = compile_function(test.is_perfect_number, [int]) - assert f(28) == 1 - assert f(123) == 0 - assert f(496) == 1 - - def test_my_bool(self): - f = compile_function(test.my_bool, [int]) - assert f(10) == 1 - assert f(1) == 1 - assert f(0) == 0 - - def test_two_plus_two(self): - f = compile_function(test.two_plus_two, []) - assert f() == 4 - - def test_sieve_of_eratosthenes(self): - f = compile_function(test.sieve_of_eratosthenes, []) - assert f() == 1028 - - def test_simple_func(self): - f = compile_function(test.simple_func, [int]) - assert f(1027) == 1028 - - def test_while_func(self): - while_func = compile_function(test.while_func, [int]) - assert while_func(10) == 55 - - def test_time_waster(self): - f = compile_function(test.time_waster, [int]) - assert f(1) == 1 - assert f(2) == 2 - assert f(3) == 6 - assert f(4) == 12 - - def test_int_id(self): - f = compile_function(test.int_id, [int]) - assert f(1027) == 1027 - - def test_factorial2(self): - factorial2 = compile_function(test.factorial2, [int]) - assert factorial2(5) == 120 - - def test_factorial(self): - factorial = compile_function(test.factorial, [int]) - assert factorial(5) == 120 - - def test_set_attr(self): - set_attr = compile_function(test.set_attr, []) - assert set_attr() == 2 - - def test_try_raise_choose(self): - try_raise_choose = compile_function(test.try_raise_choose, [int]) - for i in [-1, 0, 1, 2]: - assert try_raise_choose(i) == i - - def test_merge_setattr(self): - merge_setattr = compile_function(test.merge_setattr, [bool]) - assert merge_setattr(1) == 1 - - def test_simple_method(self): - simple_method = compile_function(test.simple_method, [int]) - assert simple_method(65) == 65 - - def test_with_init(self): - with_init = compile_function(test.with_init, [int]) - assert with_init(42) == 42 - - def DONOT_test_with_more_init(self): - with_more_init = compile_function(test.with_more_init, [int, bool]) - assert with_more_init(42, True) == 42 - assert with_more_init(42, False) == -42 - Added: pypy/dist/pypy/translator/llvm/test/test_seq.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/test/test_seq.py Tue Apr 26 21:45:20 2005 @@ -0,0 +1,128 @@ +from __future__ import division +import autopath +import py + +from pypy.translator.translator import Translator +from pypy.translator.llvm.genllvm import LLVMGenerator +from pypy.translator.llvm.test import llvmsnippet +from pypy.translator.llvm.test.test_genllvm import compile_function, is_on_path +from pypy.objspace.flow.model import Constant, Variable + +def setup_module(mod): + mod.llvm_found = is_on_path("llvm-as") + + +class TestLLVMArray(object): + def setup_method(self, method): + if not llvm_found: + py.test.skip("llvm-as not found on path.") + + def test_array(self): + f = compile_function(llvmsnippet.array_simple, []) + assert f() == 42 + + def test_array1(self): + f = compile_function(llvmsnippet.array_simple1, [int]) + assert f(1) == 10 + assert f(-42) == -420 + + def test_array_setitem(self): + f = compile_function(llvmsnippet.array_setitem, [int]) + print f(1), f(2), f(3) + assert f(1) == 12 + assert f(2) == 13 + assert f(3) == 3 + + def test_array_add(self): + f = compile_function(llvmsnippet.array_add, [int, int, int, int, int]) + assert f(1,2,3,4,0) == 1 + assert f(1,2,3,4,1) == 2 + assert f(1,2,3,4,2) == 3 + assert f(1,2,5,6,3) == 6 + + def test_array_double(self): + f = compile_function(llvmsnippet.double_array, []) + assert f() == 15 + + def test_bool_array(self): + f = compile_function(llvmsnippet.bool_array, []) + assert f() == 1 + + def test_array_arg(self): + f = compile_function(llvmsnippet.array_arg, [int]) + assert f(5) == 0 + + def test_array_len(self): + f = compile_function(llvmsnippet.array_len, []) + assert f() == 10 + + def test_array_append(self): + f = compile_function(llvmsnippet.array_append, [int]) + for i in range(3): + assert f(i) == 0 + assert f(3) == 10 + + def test_array_reverse(self): + f = compile_function(llvmsnippet.array_reverse, [int]) + assert f(0) == 1 + assert f(1) == 0 + + def test_range(self): + f = compile_function(llvmsnippet.rangetest, [int]) + for i in range(10): + assert f(i) == i + + def test_array_pop(self): + f = compile_function(llvmsnippet.array_pop, [int]) + assert f(0) == 6 + assert f(1) == 7 + assert f(2) == 8 + + def test_newlist_zero_arg(self): + f = compile_function(llvmsnippet.newlist_zero_arg, [int]) + assert f(10) == 11 + assert f(-41) == -40 + + def test_big_array(self): + f = compile_function(llvmsnippet.big_array, [int]) + for i in range(18): + assert f(i) == i + + + def test_access_global_array(self): + f = compile_function(llvmsnippet.access_global_array, [int, int, int]) + for i in range(5): + for j in range(5): + assert f(i, j, i + j) == i + for i in range(5): + for j in range(5): + assert f(i, j, 0) == i + j + + def test_circular_list(self): + f = compile_function(llvmsnippet.circular_list, [int]) + assert f(0) == 0 + assert f(1) == 1 + assert f(10) == 1 + + +class TestTuple(object): + def setup_method(self, method): + if not llvm_found: + py.test.skip("llvm-as not found on path.") + + def test_f1(self): + f = compile_function(llvmsnippet.tuple_f1, [int]) + assert f(10) == 10 + assert f(15) == 15 + + def test_f3(self): + f = compile_function(llvmsnippet.tuple_f3, [int]) + assert f(10) == 10 + assert f(15) == 15 + assert f(30) == 30 + + def test_constant_tuple(self): + f = compile_function(llvmsnippet.constant_tuple, [int]) + for i in range(3, 7): + assert f(i) == i + 3 + Added: pypy/dist/pypy/translator/llvm/test/test_snippet.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/translator/llvm/test/test_snippet.py Tue Apr 26 21:45:20 2005 @@ -0,0 +1,102 @@ +from __future__ import division +import autopath +import py + +from pypy.translator.translator import Translator +from pypy.translator.llvm.genllvm import LLVMGenerator +from pypy.translator.llvm.test import llvmsnippet +from pypy.translator.llvm.test.test_genllvm import compile_function, is_on_path +from pypy.translator.test import snippet as test +from pypy.objspace.flow.model import Constant, Variable + +def setup_module(mod): + mod.llvm_found = is_on_path("llvm-as") + +class TestSnippet(object): + def setup_method(self, method): + if not llvm_found: + py.test.skip("llvm-as not found on path.") + + def test_if_then_else(self): + f = compile_function(test.if_then_else, [int, int, int]) + assert f(0, 12, 13) == 13 + assert f(13, 12, 13) == 12 + + def test_my_gcd(self): + f = compile_function(test.my_gcd, [int, int]) + assert f(15, 5) == 5 + assert f(18, 42) == 6 + + def test_is_perfect_number(self): + f = compile_function(test.is_perfect_number, [int]) + assert f(28) == 1 + assert f(123) == 0 + assert f(496) == 1 + + def test_my_bool(self): + f = compile_function(test.my_bool, [int]) + assert f(10) == 1 + assert f(1) == 1 + assert f(0) == 0 + + def test_two_plus_two(self): + f = compile_function(test.two_plus_two, []) + assert f() == 4 + + def test_sieve_of_eratosthenes(self): + f = compile_function(test.sieve_of_eratosthenes, []) + assert f() == 1028 + + def test_simple_func(self): + f = compile_function(test.simple_func, [int]) + assert f(1027) == 1028 + + def test_while_func(self): + while_func = compile_function(test.while_func, [int]) + assert while_func(10) == 55 + + def test_time_waster(self): + f = compile_function(test.time_waster, [int]) + assert f(1) == 1 + assert f(2) == 2 + assert f(3) == 6 + assert f(4) == 12 + + def test_int_id(self): + f = compile_function(test.int_id, [int]) + assert f(1027) == 1027 + + def test_factorial2(self): + factorial2 = compile_function(test.factorial2, [int]) + assert factorial2(5) == 120 + + def test_factorial(self): + factorial = compile_function(test.factorial, [int]) + assert factorial(5) == 120 + + def test_set_attr(self): + set_attr = compile_function(test.set_attr, []) + assert set_attr() == 2 + + def test_try_raise_choose(self): + try_raise_choose = compile_function(test.try_raise_choose, [int]) + for i in [-1, 0, 1, 2]: + assert try_raise_choose(i) == i + + def test_merge_setattr(self): + merge_setattr = compile_function(test.merge_setattr, [bool]) + assert merge_setattr(1) == 1 + + def test_simple_method(self): + simple_method = compile_function(test.simple_method, [int]) + assert simple_method(65) == 65 + + def test_with_init(self): + with_init = compile_function(test.with_init, [int]) + assert with_init(42) == 42 + + def DONOT_test_with_more_init(self): + with_more_init = compile_function(test.with_more_init, [int, bool]) + assert with_more_init(42, True) == 42 + assert with_more_init(42, False) == -42 + From hpk at codespeak.net Tue Apr 26 23:00:55 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 26 Apr 2005 23:00:55 +0200 (CEST) Subject: [pypy-svn] r11493 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050426210055.AA26827B43@code1.codespeak.net> Author: hpk Date: Tue Apr 26 23:00:55 2005 New Revision: 11493 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: enabled test_cmath.py as it passes both with py.test and pypy directly. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Tue Apr 26 23:00:55 2005 @@ -146,13 +146,21 @@ class RunningModule(OpErrorModule): def run(self): - return [] - #return [self.fspath.purebasename] + return ['apprun'] - #def join(self, name): - # name = self.fspath.purebasename - # space = getmyspace() - # run_file(str(self.fspath.join(name)), space=space) + def join(self, name): + if name == 'apprun': + return RunAppFileItem(name, parent=self, fspath=self.fspath) + +class RunAppFileItem(py.test.Item): + def __init__(self, name, parent, fspath): + super(RunAppFileItem, self).__init__(name, parent) + self.fspath = fspath + + def run(self): + fspath = self.fspath + space = getmyspace() + run_file(str(fspath), space) class UnknownTestModule(OpErrorModule): def run(self): @@ -320,7 +328,7 @@ 'test_charmapcodec.py' : TestDecl(True, UTModuleMainTest), 'test_cl.py' : TestDecl(False, UnknownTestModule), 'test_class.py' : TestDecl(False, OutputTestModule), - 'test_cmath.py' : TestDecl(False, RunningModule), + 'test_cmath.py' : TestDecl(True, RunningModule), 'test_codeccallbacks.py' : TestDecl(False, UTModuleMainTest), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser From hpk at codespeak.net Wed Apr 27 00:36:04 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 00:36:04 +0200 (CEST) Subject: [pypy-svn] r11495 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050426223604.7CC4527B52@code1.codespeak.net> Author: hpk Date: Wed Apr 27 00:36:04 2005 New Revision: 11495 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: towards running all tests: - turned all unknown test modules into simple runnable test modules (some tests might not be like that, though) - added a new command line option '--withdisabled' which will now run all tests (certainly with lots of failures) we might want to flag the 'language feature tests' tests somehow, btw. - refactored things a bit but some OperationErrors don't get nice app-level tracebacks (for example, test_aepack.py). Don't know why yet. Armin, can you have a look at e.g. test_aepack.py and see why "pypy test_aepack.py" shows a somewhat nice failure but pytestsupport fails at getting that? Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 00:36:04 2005 @@ -21,6 +21,14 @@ # type="string", dest="listpassing", # help="just display the list of expected-to-pass tests.") +Option = py.test.Config.Option +option = py.test.Config.addoptions("compliance testing options", + Option('-D', '--withdisabled', action="store_true", + default=False, dest="withdisabled", + help="include all disabled tests in the test run."), +) + + mydir = py.magic.autopath().dirpath() pypydir = py.path.local(pypy.__file__).dirpath() @@ -44,7 +52,8 @@ except OperationError, e: if e.match(space, space.w_KeyboardInterrupt): raise KeyboardInterrupt - raise + raise py.test.Item.Failed( + excinfo=pytestsupport.AppExceptionInfo(space, e)) w_testlist = None @@ -97,54 +106,30 @@ def __init__(self, fspath, parent, testdecl): super(py.test.collect.Module, self).__init__(fspath, parent) self.testdecl = testdecl + + space = property(lambda x: getmyspace()) def tryiter(self, stopitems=()): try: for x in super(OpErrorModule, self).tryiter(stopitems): yield x except OperationError, e: - space = getattr(self, 'space', None) + space = self.space if space and e.match(space, space.w_KeyboardInterrupt): raise Keyboardinterrupt + appexcinfo = pytestsupport.AppExceptionInfo(space, e) + if appexcinfo.traceback: + raise self.Failed(excinfo=appexcinfo) raise class OutputTestModule(OpErrorModule): def run(self): - return [self.fspath.purebasename] + return ['apprunoutput'] def join(self, name): - if name == self.fspath.purebasename: - return OutputTestItem(name, parent=self) + if name == 'apprunoutput': + return OutputTestItem(name, parent=self, fspath=self.fspath) -class OutputTestItem(py.test.Item): - def run(self): - outputpath = self.fspath.dirpath('output', self.name) - if not outputpath.check(): - py.test.fail("expected outputfile at %s" %(outputpath,)) - if self.parent.testdecl.modified: - fspath = pypydir.join('lib', 'test2', self.fspath.basename) - else: - fspath = self.fspath # unmodified regrtest - space = getmyspace() - try: - oldsysout = sys.stdout - sys.stdout = capturesysout = py.std.cStringIO.StringIO() - try: - print self.fspath.purebasename - run_file(str(fspath), space=space) - finally: - sys.stdout = oldsysout - except OperationError, e: - raise self.Failed( - excinfo=pytestsupport.AppExceptionInfo(space, e)) - else: - # we want to compare outputs - result = capturesysout.getvalue() - expected = outputpath.read(mode='r') - if result != expected: - reportdiff(expected, result) - py.test.fail("output check failed: %s" % (self.fspath.basename,)) - -class RunningModule(OpErrorModule): +class SimpleRunModule(OpErrorModule): def run(self): return ['apprun'] @@ -153,24 +138,67 @@ return RunAppFileItem(name, parent=self, fspath=self.fspath) class RunAppFileItem(py.test.Item): + """ simple run a module file at app level, fail the test + if running the appfile results in an OperationError. + """ def __init__(self, name, parent, fspath): super(RunAppFileItem, self).__init__(name, parent) self.fspath = fspath + self.space = getmyspace() + + def getfspath(self): + if self.parent.testdecl.modified: + return pypydir.join('lib', 'test2', self.fspath.basename) + else: + return self.fspath # unmodified regrtest def run(self): - fspath = self.fspath - space = getmyspace() - run_file(str(fspath), space) + fspath = self.getfspath() + try: + run_file(str(fspath), self.space) + except OperationError, e: + space = self.space + if space and e.match(space, space.w_KeyboardInterrupt): + raise Keyboardinterrupt + appexcinfo = pytestsupport.AppExceptionInfo(space, e) + if appexcinfo.traceback: + raise self.Failed(excinfo=appexcinfo) + raise -class UnknownTestModule(OpErrorModule): +class OutputTestItem(RunAppFileItem): + """ Run a module file and compare its output + to the expected output in the output/ directory. + """ def run(self): - py.test.skip("missing test type for: %s" %(self.fspath.basename)) - -class UTModuleMainTest(OpErrorModule): + outputpath = self.fspath.dirpath('output', self.name) + if not outputpath.check(): + py.test.fail("expected outputfile at %s" %(outputpath,)) + + oldsysout = sys.stdout + sys.stdout = capturesysout = py.std.cStringIO.StringIO() + try: + super(OutputTestItem, self).run() + finally: + sys.stdout = oldsysout + # we want to compare outputs + result = capturesysout.getvalue() + expected = outputpath.read(mode='r') + if result != expected: + reportdiff(expected, result) + py.test.fail("output check failed: %s" % (self.fspath.basename,)) + else: + print result + +# +class UTTestMainModule(OpErrorModule): + """ special handling for tests with a proper 'def test_main(): ' + definition invoking test_support.run_unittest (XXX and + test_support.run_doctest). + """ def _prepare(self): if hasattr(self, '_testcases'): return - self.space = space = getmyspace() + space = self.space def f(): w_mod = make_module(space, 'unittest', mydir.join('pypy_unittest.py')) self.w_TestCase = space.getattr(w_mod, space.wrap('TestCase')) @@ -273,327 +301,336 @@ def execute(self): self.space.call_function(self.w_method) +# ________________________________________________________________________ +# +# classification of all tests files (this is ongoing work) +# + class TestDecl: - """ Test Declaration. """ + """ Test Declaration.""" def __init__(self, enabled, testclass, modified=False): + """ if modified is True, the actual test item + needs to be taken from the pypy/lib/test2 + hierarchy. + """ self.enabled = enabled self.testclass = testclass self.modified = modified testmap = { 'test_MimeWriter.py' : TestDecl(False, OutputTestModule), - 'test_StringIO.py' : TestDecl(True, UTModuleMainTest), - 'test___all__.py' : TestDecl(False, UTModuleMainTest), - 'test___future__.py' : TestDecl(False, UnknownTestModule), - 'test_aepack.py' : TestDecl(False, UTModuleMainTest), - 'test_al.py' : TestDecl(False, UnknownTestModule), - 'test_anydbm.py' : TestDecl(False, UTModuleMainTest), - 'test_array.py' : TestDecl(False, UTModuleMainTest), + 'test_StringIO.py' : TestDecl(True, UTTestMainModule), + 'test___all__.py' : TestDecl(False, UTTestMainModule), + 'test___future__.py' : TestDecl(False, SimpleRunModule), + 'test_aepack.py' : TestDecl(False, UTTestMainModule), + 'test_al.py' : TestDecl(False, SimpleRunModule), + 'test_anydbm.py' : TestDecl(False, UTTestMainModule), + 'test_array.py' : TestDecl(False, UTTestMainModule), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser 'test_asynchat.py' : TestDecl(False, OutputTestModule), - 'test_atexit.py' : TestDecl(False, UnknownTestModule), - 'test_audioop.py' : TestDecl(False, UnknownTestModule), + 'test_atexit.py' : TestDecl(False, SimpleRunModule), + 'test_audioop.py' : TestDecl(False, SimpleRunModule), 'test_augassign.py' : TestDecl(False, OutputTestModule), - 'test_base64.py' : TestDecl(True, UTModuleMainTest), - 'test_bastion.py' : TestDecl(False, UnknownTestModule), - 'test_binascii.py' : TestDecl(False, UTModuleMainTest), + 'test_base64.py' : TestDecl(True, UTTestMainModule), + 'test_bastion.py' : TestDecl(False, SimpleRunModule), + 'test_binascii.py' : TestDecl(False, UTTestMainModule), #rev 10840: 2 of 8 tests fail - 'test_binhex.py' : TestDecl(False, UTModuleMainTest), + 'test_binhex.py' : TestDecl(False, UTTestMainModule), #rev 10840: 1 of 1 test fails - 'test_binop.py' : TestDecl(True, UTModuleMainTest), - 'test_bisect.py' : TestDecl(True, UTModuleMainTest), - 'test_bool.py' : TestDecl(False, UTModuleMainTest), + 'test_binop.py' : TestDecl(True, UTTestMainModule), + 'test_bisect.py' : TestDecl(True, UTTestMainModule), + 'test_bool.py' : TestDecl(False, UTTestMainModule), #rev 10840: Infinite recursion in DescrOperation.is_true - 'test_bsddb.py' : TestDecl(False, UTModuleMainTest), - 'test_bsddb185.py' : TestDecl(False, UTModuleMainTest), - 'test_bsddb3.py' : TestDecl(False, UTModuleMainTest), - 'test_bufio.py' : TestDecl(False, UnknownTestModule), - 'test_builtin.py' : TestDecl(True, UTModuleMainTest), - 'test_bz2.py' : TestDecl(False, UTModuleMainTest), - 'test_calendar.py' : TestDecl(True, UTModuleMainTest), - 'test_call.py' : TestDecl(True, UTModuleMainTest), - 'test_capi.py' : TestDecl(False, UnknownTestModule), - 'test_cd.py' : TestDecl(False, UnknownTestModule), - 'test_cfgparser.py' : TestDecl(False, UTModuleMainTest), + 'test_bsddb.py' : TestDecl(False, UTTestMainModule), + 'test_bsddb185.py' : TestDecl(False, UTTestMainModule), + 'test_bsddb3.py' : TestDecl(False, UTTestMainModule), + 'test_bufio.py' : TestDecl(False, SimpleRunModule), + 'test_builtin.py' : TestDecl(True, UTTestMainModule), + 'test_bz2.py' : TestDecl(False, UTTestMainModule), + 'test_calendar.py' : TestDecl(True, UTTestMainModule), + 'test_call.py' : TestDecl(True, UTTestMainModule), + 'test_capi.py' : TestDecl(False, SimpleRunModule), + 'test_cd.py' : TestDecl(False, SimpleRunModule), + 'test_cfgparser.py' : TestDecl(False, UTTestMainModule), #rev 10840: Uncaught interp-level exception: #File "pypy/objspace/std/fake.py", line 133, in setfastscope #raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) #pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > 'test_cgi.py' : TestDecl(False, OutputTestModule), - 'test_charmapcodec.py' : TestDecl(True, UTModuleMainTest), - 'test_cl.py' : TestDecl(False, UnknownTestModule), + 'test_charmapcodec.py' : TestDecl(True, UTTestMainModule), + 'test_cl.py' : TestDecl(False, SimpleRunModule), 'test_class.py' : TestDecl(False, OutputTestModule), - 'test_cmath.py' : TestDecl(True, RunningModule), - 'test_codeccallbacks.py' : TestDecl(False, UTModuleMainTest), + 'test_cmath.py' : TestDecl(True, SimpleRunModule), + 'test_codeccallbacks.py' : TestDecl(False, UTTestMainModule), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_codecs.py' : TestDecl(False, UTModuleMainTest), + 'test_codecs.py' : TestDecl(False, UTTestMainModule), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_codeop.py' : TestDecl(True, UTModuleMainTest), + 'test_codeop.py' : TestDecl(True, UTTestMainModule), 'test_coercion.py' : TestDecl(False, OutputTestModule), - 'test_commands.py' : TestDecl(True, UTModuleMainTest), + 'test_commands.py' : TestDecl(True, UTTestMainModule), 'test_compare.py' : TestDecl(True, OutputTestModule), - 'test_compile.py' : TestDecl(True, UTModuleMainTest), - 'test_complex.py' : TestDecl(False, UTModuleMainTest), + 'test_compile.py' : TestDecl(True, UTTestMainModule), + 'test_complex.py' : TestDecl(False, UTTestMainModule), #rev 10840: at least one test fails, after several hours I gave up waiting for the rest - 'test_contains.py' : TestDecl(False, UnknownTestModule), + 'test_contains.py' : TestDecl(False, SimpleRunModule), 'test_cookie.py' : TestDecl(False, OutputTestModule), - 'test_copy.py' : TestDecl(True, UTModuleMainTest), - 'test_copy_reg.py' : TestDecl(True, UTModuleMainTest), - 'test_cpickle.py' : TestDecl(False, UTModuleMainTest), - 'test_crypt.py' : TestDecl(False, UnknownTestModule), - 'test_csv.py' : TestDecl(False, UTModuleMainTest), + 'test_copy.py' : TestDecl(True, UTTestMainModule), + 'test_copy_reg.py' : TestDecl(True, UTTestMainModule), + 'test_cpickle.py' : TestDecl(False, UTTestMainModule), + 'test_crypt.py' : TestDecl(False, SimpleRunModule), + 'test_csv.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: _csv - 'test_curses.py' : TestDecl(False, UnknownTestModule), - 'test_datetime.py' : TestDecl(True, UTModuleMainTest), - 'test_dbm.py' : TestDecl(False, UnknownTestModule), - 'test_descr.py' : TestDecl(False, UTModuleMainTest), - 'test_descrtut.py' : TestDecl(False, UTModuleMainTest), + 'test_curses.py' : TestDecl(False, SimpleRunModule), + 'test_datetime.py' : TestDecl(True, UTTestMainModule), + 'test_dbm.py' : TestDecl(False, SimpleRunModule), + 'test_descr.py' : TestDecl(False, UTTestMainModule), + 'test_descrtut.py' : TestDecl(False, UTTestMainModule), #rev 10840: 19 of 96 tests fail - 'test_difflib.py' : TestDecl(False, UnknownTestModule), - 'test_dircache.py' : TestDecl(True, UTModuleMainTest), - 'test_dis.py' : TestDecl(True, UTModuleMainTest), - 'test_dl.py' : TestDecl(False, UnknownTestModule), - 'test_doctest.py' : TestDecl(False, UnknownTestModule), - 'test_doctest2.py' : TestDecl(True, UTModuleMainTest), - 'test_dumbdbm.py' : TestDecl(False, UTModuleMainTest), + 'test_difflib.py' : TestDecl(False, SimpleRunModule), + 'test_dircache.py' : TestDecl(True, UTTestMainModule), + 'test_dis.py' : TestDecl(True, UTTestMainModule), + 'test_dl.py' : TestDecl(False, SimpleRunModule), + 'test_doctest.py' : TestDecl(False, SimpleRunModule), + 'test_doctest2.py' : TestDecl(True, UTTestMainModule), + 'test_dumbdbm.py' : TestDecl(False, UTTestMainModule), #rev 10840: 5 of 7 tests fail - 'test_dummy_thread.py' : TestDecl(True, UTModuleMainTest), - 'test_dummy_threading.py': TestDecl(False, UnknownTestModule), - 'test_email.py' : TestDecl(False, UTModuleMainTest), + 'test_dummy_thread.py' : TestDecl(True, UTTestMainModule), + 'test_dummy_threading.py': TestDecl(False, SimpleRunModule), + 'test_email.py' : TestDecl(False, UTTestMainModule), #rev 10840: Uncaught interp-level exception - 'test_email_codecs.py' : TestDecl(False, UnknownTestModule), - 'test_enumerate.py' : TestDecl(False, UTModuleMainTest), + 'test_email_codecs.py' : TestDecl(False, SimpleRunModule), + 'test_enumerate.py' : TestDecl(False, UTTestMainModule), #rev 10840: fails because enumerate is a type in CPy: the test tries to subclass it - 'test_eof.py' : TestDecl(False, UTModuleMainTest), + 'test_eof.py' : TestDecl(False, UTTestMainModule), #rev 10840: some error strings differ slightly XXX - 'test_errno.py' : TestDecl(False, UnknownTestModule), + 'test_errno.py' : TestDecl(False, SimpleRunModule), 'test_exceptions.py' : TestDecl(False, OutputTestModule), 'test_extcall.py' : TestDecl(False, OutputTestModule), - 'test_fcntl.py' : TestDecl(False, UnknownTestModule), - 'test_file.py' : TestDecl(False, UnknownTestModule), - 'test_filecmp.py' : TestDecl(False, UTModuleMainTest), - 'test_fileinput.py' : TestDecl(False, UnknownTestModule), - 'test_fnmatch.py' : TestDecl(True, UTModuleMainTest), - 'test_fork1.py' : TestDecl(False, UnknownTestModule), - 'test_format.py' : TestDecl(False, UnknownTestModule), - 'test_fpformat.py' : TestDecl(True, UTModuleMainTest), + 'test_fcntl.py' : TestDecl(False, SimpleRunModule), + 'test_file.py' : TestDecl(False, SimpleRunModule), + 'test_filecmp.py' : TestDecl(False, UTTestMainModule), + 'test_fileinput.py' : TestDecl(False, SimpleRunModule), + 'test_fnmatch.py' : TestDecl(True, UTTestMainModule), + 'test_fork1.py' : TestDecl(False, SimpleRunModule), + 'test_format.py' : TestDecl(False, SimpleRunModule), + 'test_fpformat.py' : TestDecl(True, UTTestMainModule), 'test_frozen.py' : TestDecl(False, OutputTestModule), - 'test_funcattrs.py' : TestDecl(False, UnknownTestModule), + 'test_funcattrs.py' : TestDecl(False, SimpleRunModule), 'test_future.py' : TestDecl(False, OutputTestModule), - 'test_future1.py' : TestDecl(False, UnknownTestModule), - 'test_future2.py' : TestDecl(False, UnknownTestModule), - 'test_future3.py' : TestDecl(True, UTModuleMainTest), - 'test_gc.py' : TestDecl(False, UnknownTestModule), - 'test_gdbm.py' : TestDecl(False, UnknownTestModule), - 'test_generators.py' : TestDecl(False, UTModuleMainTest), + 'test_future1.py' : TestDecl(False, SimpleRunModule), + 'test_future2.py' : TestDecl(False, SimpleRunModule), + 'test_future3.py' : TestDecl(True, UTTestMainModule), + 'test_gc.py' : TestDecl(False, SimpleRunModule), + 'test_gdbm.py' : TestDecl(False, SimpleRunModule), + 'test_generators.py' : TestDecl(False, UTTestMainModule), #rev 10840: 30 of 152 tests fail - 'test_getargs.py' : TestDecl(False, UnknownTestModule), - 'test_getargs2.py' : TestDecl(False, UTModuleMainTest), + 'test_getargs.py' : TestDecl(False, SimpleRunModule), + 'test_getargs2.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: _testcapi - 'test_getopt.py' : TestDecl(False, UnknownTestModule), - 'test_gettext.py' : TestDecl(False, UTModuleMainTest), + 'test_getopt.py' : TestDecl(False, SimpleRunModule), + 'test_gettext.py' : TestDecl(False, UTTestMainModule), #rev 10840: 28 of 28 tests fail - 'test_gl.py' : TestDecl(False, UnknownTestModule), - 'test_glob.py' : TestDecl(True, UTModuleMainTest), + 'test_gl.py' : TestDecl(False, SimpleRunModule), + 'test_glob.py' : TestDecl(True, UTTestMainModule), 'test_global.py' : TestDecl(False, OutputTestModule), 'test_grammar.py' : TestDecl(False, OutputTestModule), - 'test_grp.py' : TestDecl(False, UTModuleMainTest), + 'test_grp.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: grp - 'test_gzip.py' : TestDecl(False, UnknownTestModule), - 'test_hash.py' : TestDecl(True, UTModuleMainTest), - 'test_heapq.py' : TestDecl(True, UTModuleMainTest), - 'test_hexoct.py' : TestDecl(True, UTModuleMainTest), - 'test_hmac.py' : TestDecl(True, UTModuleMainTest), - 'test_hotshot.py' : TestDecl(False, UTModuleMainTest), + 'test_gzip.py' : TestDecl(False, SimpleRunModule), + 'test_hash.py' : TestDecl(True, UTTestMainModule), + 'test_heapq.py' : TestDecl(True, UTTestMainModule), + 'test_hexoct.py' : TestDecl(True, UTTestMainModule), + 'test_hmac.py' : TestDecl(True, UTTestMainModule), + 'test_hotshot.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: _hotshot - 'test_htmllib.py' : TestDecl(True, UTModuleMainTest), - 'test_htmlparser.py' : TestDecl(True, UTModuleMainTest), + 'test_htmllib.py' : TestDecl(True, UTTestMainModule), + 'test_htmlparser.py' : TestDecl(True, UTTestMainModule), 'test_httplib.py' : TestDecl(False, OutputTestModule), - 'test_imageop.py' : TestDecl(False, UnknownTestModule), - 'test_imaplib.py' : TestDecl(False, UnknownTestModule), - 'test_imgfile.py' : TestDecl(False, UnknownTestModule), - 'test_imp.py' : TestDecl(False, UTModuleMainTest), - 'test_import.py' : TestDecl(False, UnknownTestModule), - 'test_importhooks.py' : TestDecl(False, UTModuleMainTest), - 'test_inspect.py' : TestDecl(False, UnknownTestModule), - 'test_ioctl.py' : TestDecl(False, UTModuleMainTest), - 'test_isinstance.py' : TestDecl(True, UTModuleMainTest), - 'test_iter.py' : TestDecl(False, UTModuleMainTest), + 'test_imageop.py' : TestDecl(False, SimpleRunModule), + 'test_imaplib.py' : TestDecl(False, SimpleRunModule), + 'test_imgfile.py' : TestDecl(False, SimpleRunModule), + 'test_imp.py' : TestDecl(False, UTTestMainModule), + 'test_import.py' : TestDecl(False, SimpleRunModule), + 'test_importhooks.py' : TestDecl(False, UTTestMainModule), + 'test_inspect.py' : TestDecl(False, SimpleRunModule), + 'test_ioctl.py' : TestDecl(False, UTTestMainModule), + 'test_isinstance.py' : TestDecl(True, UTTestMainModule), + 'test_iter.py' : TestDecl(False, UTTestMainModule), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_itertools.py' : TestDecl(True, UTModuleMainTest, modified=True), + 'test_itertools.py' : TestDecl(True, UTTestMainModule, modified=True), # modified version in pypy/lib/test2 - 'test_largefile.py' : TestDecl(False, UnknownTestModule), + 'test_largefile.py' : TestDecl(False, SimpleRunModule), 'test_linuxaudiodev.py' : TestDecl(False, OutputTestModule), - 'test_locale.py' : TestDecl(False, UnknownTestModule), + 'test_locale.py' : TestDecl(False, SimpleRunModule), 'test_logging.py' : TestDecl(False, OutputTestModule), - 'test_long.py' : TestDecl(True, UnknownTestModule), # takes hours - 'test_long_future.py' : TestDecl(False, UnknownTestModule), + 'test_long.py' : TestDecl(True, SimpleRunModule), # takes hours + 'test_long_future.py' : TestDecl(False, SimpleRunModule), 'test_longexp.py' : TestDecl(False, OutputTestModule), - 'test_macfs.py' : TestDecl(False, UTModuleMainTest), - 'test_macostools.py' : TestDecl(False, UTModuleMainTest), - 'test_macpath.py' : TestDecl(False, UTModuleMainTest), - 'test_mailbox.py' : TestDecl(True, UTModuleMainTest), - 'test_marshal.py' : TestDecl(False, UnknownTestModule), + 'test_macfs.py' : TestDecl(False, UTTestMainModule), + 'test_macostools.py' : TestDecl(False, UTTestMainModule), + 'test_macpath.py' : TestDecl(False, UTTestMainModule), + 'test_mailbox.py' : TestDecl(True, UTTestMainModule), + 'test_marshal.py' : TestDecl(False, SimpleRunModule), 'test_math.py' : TestDecl(False, OutputTestModule), 'test_md5.py' : TestDecl(False, OutputTestModule), - 'test_mhlib.py' : TestDecl(True, UTModuleMainTest), - 'test_mimetools.py' : TestDecl(True, UTModuleMainTest), - 'test_mimetypes.py' : TestDecl(True, UTModuleMainTest), - 'test_minidom.py' : TestDecl(False, UnknownTestModule), + 'test_mhlib.py' : TestDecl(True, UTTestMainModule), + 'test_mimetools.py' : TestDecl(True, UTTestMainModule), + 'test_mimetypes.py' : TestDecl(True, UTTestMainModule), + 'test_minidom.py' : TestDecl(False, SimpleRunModule), 'test_mmap.py' : TestDecl(False, OutputTestModule), - 'test_module.py' : TestDecl(False, UnknownTestModule), - 'test_mpz.py' : TestDecl(False, UnknownTestModule), - 'test_multifile.py' : TestDecl(True, UTModuleMainTest), - 'test_mutants.py' : TestDecl(False, UnknownTestModule), - 'test_netrc.py' : TestDecl(True, UTModuleMainTest), + 'test_module.py' : TestDecl(False, SimpleRunModule), + 'test_mpz.py' : TestDecl(False, SimpleRunModule), + 'test_multifile.py' : TestDecl(True, UTTestMainModule), + 'test_mutants.py' : TestDecl(False, SimpleRunModule), + 'test_netrc.py' : TestDecl(True, UTTestMainModule), 'test_new.py' : TestDecl(False, OutputTestModule), 'test_nis.py' : TestDecl(False, OutputTestModule), - 'test_normalization.py' : TestDecl(False, UTModuleMainTest), - 'test_ntpath.py' : TestDecl(False, UnknownTestModule), + 'test_normalization.py' : TestDecl(False, UTTestMainModule), + 'test_ntpath.py' : TestDecl(False, SimpleRunModule), 'test_opcodes.py' : TestDecl(False, OutputTestModule), 'test_openpty.py' : TestDecl(False, OutputTestModule), 'test_operations.py' : TestDecl(False, OutputTestModule), - 'test_operator.py' : TestDecl(True, UTModuleMainTest), - 'test_optparse.py' : TestDecl(False, UTModuleMainTest), - 'test_os.py' : TestDecl(True, UTModuleMainTest), + 'test_operator.py' : TestDecl(True, UTTestMainModule), + 'test_optparse.py' : TestDecl(False, UTTestMainModule), + 'test_os.py' : TestDecl(True, UTTestMainModule), 'test_ossaudiodev.py' : TestDecl(False, OutputTestModule), - 'test_parser.py' : TestDecl(True, UTModuleMainTest), + 'test_parser.py' : TestDecl(True, UTTestMainModule), #rev 10840: 18 of 18 tests fail - 'test_pep247.py' : TestDecl(False, UnknownTestModule), - 'test_pep263.py' : TestDecl(False, UnknownTestModule), - 'test_pep277.py' : TestDecl(False, UTModuleMainTest), - 'test_pickle.py' : TestDecl(False, UTModuleMainTest), - 'test_pickletools.py' : TestDecl(False, UnknownTestModule), + 'test_pep247.py' : TestDecl(False, SimpleRunModule), + 'test_pep263.py' : TestDecl(False, SimpleRunModule), + 'test_pep277.py' : TestDecl(False, UTTestMainModule), + 'test_pickle.py' : TestDecl(False, UTTestMainModule), + 'test_pickletools.py' : TestDecl(False, SimpleRunModule), 'test_pkg.py' : TestDecl(False, OutputTestModule), - 'test_pkgimport.py' : TestDecl(True, UTModuleMainTest), - 'test_plistlib.py' : TestDecl(False, UTModuleMainTest), + 'test_pkgimport.py' : TestDecl(True, UTTestMainModule), + 'test_plistlib.py' : TestDecl(False, UTTestMainModule), 'test_poll.py' : TestDecl(False, OutputTestModule), 'test_popen.py' : TestDecl(False, OutputTestModule), 'test_popen2.py' : TestDecl(False, OutputTestModule), - 'test_posix.py' : TestDecl(True, UTModuleMainTest), - 'test_posixpath.py' : TestDecl(True, UTModuleMainTest), - 'test_pow.py' : TestDecl(True, UTModuleMainTest), - 'test_pprint.py' : TestDecl(True, UTModuleMainTest), + 'test_posix.py' : TestDecl(True, UTTestMainModule), + 'test_posixpath.py' : TestDecl(True, UTTestMainModule), + 'test_pow.py' : TestDecl(True, UTTestMainModule), + 'test_pprint.py' : TestDecl(True, UTTestMainModule), 'test_profile.py' : TestDecl(True, OutputTestModule), - 'test_profilehooks.py' : TestDecl(True, UTModuleMainTest), + 'test_profilehooks.py' : TestDecl(True, UTTestMainModule), 'test_pty.py' : TestDecl(False, OutputTestModule), - 'test_pwd.py' : TestDecl(False, UTModuleMainTest), + 'test_pwd.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: pwd - 'test_pyclbr.py' : TestDecl(False, UTModuleMainTest), + 'test_pyclbr.py' : TestDecl(False, UTTestMainModule), 'test_pyexpat.py' : TestDecl(False, OutputTestModule), - 'test_queue.py' : TestDecl(False, UnknownTestModule), - 'test_quopri.py' : TestDecl(False, UTModuleMainTest), - 'test_random.py' : TestDecl(False, UTModuleMainTest), + 'test_queue.py' : TestDecl(False, SimpleRunModule), + 'test_quopri.py' : TestDecl(False, UTTestMainModule), + 'test_random.py' : TestDecl(False, UTTestMainModule), #rev 10840: Uncaught app-level exception: #class WichmannHill_TestBasicOps(TestBasicOps): #File "test_random.py", line 125 in WichmannHill_TestBasicOps #gen = random.WichmannHill() #AttributeError: 'module' object has no attribute 'WichmannHill' - 'test_re.py' : TestDecl(False, UTModuleMainTest), + 'test_re.py' : TestDecl(False, UTTestMainModule), #rev 10840: 7 of 47 tests fail 'test_regex.py' : TestDecl(False, OutputTestModule), - 'test_repr.py' : TestDecl(False, UTModuleMainTest), + 'test_repr.py' : TestDecl(False, UTTestMainModule), #rev 10840: 6 of 12 tests fail. Always minor stuff like #'' != '' 'test_resource.py' : TestDecl(False, OutputTestModule), - 'test_rfc822.py' : TestDecl(True, UTModuleMainTest), + 'test_rfc822.py' : TestDecl(True, UTTestMainModule), 'test_rgbimg.py' : TestDecl(False, OutputTestModule), - 'test_richcmp.py' : TestDecl(False, UTModuleMainTest), + 'test_richcmp.py' : TestDecl(False, UTTestMainModule), #rev 10840: 1 of 11 test fails. The failing one had an infinite recursion. - 'test_robotparser.py' : TestDecl(True, UTModuleMainTest), + 'test_robotparser.py' : TestDecl(True, UTTestMainModule), 'test_rotor.py' : TestDecl(False, OutputTestModule), - 'test_sax.py' : TestDecl(False, UnknownTestModule), + 'test_sax.py' : TestDecl(False, SimpleRunModule), 'test_scope.py' : TestDecl(False, OutputTestModule), - 'test_scriptpackages.py' : TestDecl(False, UTModuleMainTest), - 'test_select.py' : TestDecl(False, UnknownTestModule), - 'test_sets.py' : TestDecl(True, UTModuleMainTest), - 'test_sgmllib.py' : TestDecl(True, UTModuleMainTest), - 'test_sha.py' : TestDecl(True, UTModuleMainTest, modified=True), + 'test_scriptpackages.py' : TestDecl(False, UTTestMainModule), + 'test_select.py' : TestDecl(False, SimpleRunModule), + 'test_sets.py' : TestDecl(True, UTTestMainModule), + 'test_sgmllib.py' : TestDecl(True, UTTestMainModule), + 'test_sha.py' : TestDecl(True, UTTestMainModule, modified=True), # one test is taken out (too_slow_test_case_3), rest passses - 'test_shelve.py' : TestDecl(True, UTModuleMainTest), - 'test_shlex.py' : TestDecl(True, UTModuleMainTest), - 'test_shutil.py' : TestDecl(True, UTModuleMainTest), + 'test_shelve.py' : TestDecl(True, UTTestMainModule), + 'test_shlex.py' : TestDecl(True, UTTestMainModule), + 'test_shutil.py' : TestDecl(True, UTTestMainModule), 'test_signal.py' : TestDecl(False, OutputTestModule), - 'test_slice.py' : TestDecl(False, UnknownTestModule), - 'test_socket.py' : TestDecl(False, UTModuleMainTest), + 'test_slice.py' : TestDecl(False, SimpleRunModule), + 'test_socket.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: thread - 'test_socket_ssl.py' : TestDecl(False, UTModuleMainTest), - 'test_socketserver.py' : TestDecl(False, UTModuleMainTest), + 'test_socket_ssl.py' : TestDecl(False, UTTestMainModule), + 'test_socketserver.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: thread - 'test_softspace.py' : TestDecl(False, UnknownTestModule), - 'test_sort.py' : TestDecl(False, UnknownTestModule), - 'test_str.py' : TestDecl(False, UTModuleMainTest), + 'test_softspace.py' : TestDecl(False, SimpleRunModule), + 'test_sort.py' : TestDecl(False, SimpleRunModule), + 'test_str.py' : TestDecl(False, UTTestMainModule), #rev 10840: at least two tests fail, after several hours I gave up waiting for the rest - 'test_strftime.py' : TestDecl(False, UnknownTestModule), - 'test_string.py' : TestDecl(True, UTModuleMainTest), - 'test_stringprep.py' : TestDecl(False, UnknownTestModule), - 'test_strop.py' : TestDecl(False, UTModuleMainTest), + 'test_strftime.py' : TestDecl(False, SimpleRunModule), + 'test_string.py' : TestDecl(True, UTTestMainModule), + 'test_stringprep.py' : TestDecl(False, SimpleRunModule), + 'test_strop.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: strop - 'test_strptime.py' : TestDecl(False, UTModuleMainTest), + 'test_strptime.py' : TestDecl(False, UTTestMainModule), #rev 10840: 1 of 42 test fails: seems to be some regex problem - 'test_struct.py' : TestDecl(False, UnknownTestModule), - 'test_structseq.py' : TestDecl(False, UnknownTestModule), - 'test_sunaudiodev.py' : TestDecl(False, UnknownTestModule), - 'test_sundry.py' : TestDecl(False, UnknownTestModule), - 'test_support.py' : TestDecl(False, UnknownTestModule), - 'test_symtable.py' : TestDecl(False, UnknownTestModule), - 'test_syntax.py' : TestDecl(True, UTModuleMainTest), - 'test_sys.py' : TestDecl(True, UTModuleMainTest), - 'test_tarfile.py' : TestDecl(False, UTModuleMainTest), + 'test_struct.py' : TestDecl(False, SimpleRunModule), + 'test_structseq.py' : TestDecl(False, SimpleRunModule), + 'test_sunaudiodev.py' : TestDecl(False, SimpleRunModule), + 'test_sundry.py' : TestDecl(False, SimpleRunModule), + 'test_support.py' : TestDecl(False, SimpleRunModule), + 'test_symtable.py' : TestDecl(False, SimpleRunModule), + 'test_syntax.py' : TestDecl(True, UTTestMainModule), + 'test_sys.py' : TestDecl(True, UTTestMainModule), + 'test_tarfile.py' : TestDecl(False, UTTestMainModule), #rev 10840: 13 of 13 test fail - 'test_tempfile.py' : TestDecl(False, UTModuleMainTest), + 'test_tempfile.py' : TestDecl(False, UTTestMainModule), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_textwrap.py' : TestDecl(True, UTModuleMainTest), + 'test_textwrap.py' : TestDecl(True, UTTestMainModule), 'test_thread.py' : TestDecl(False, OutputTestModule), - 'test_threaded_import.py': TestDecl(False, UTModuleMainTest), + 'test_threaded_import.py': TestDecl(False, UTTestMainModule), 'test_threadedtempfile.py': TestDecl(False, OutputTestModule), #rev 10840: ImportError: thread - 'test_threading.py' : TestDecl(False, UnknownTestModule), + 'test_threading.py' : TestDecl(False, SimpleRunModule), #rev 10840: ImportError: thread - 'test_time.py' : TestDecl(True, UTModuleMainTest), - 'test_timeout.py' : TestDecl(False, UTModuleMainTest), + 'test_time.py' : TestDecl(True, UTTestMainModule), + 'test_timeout.py' : TestDecl(False, UTTestMainModule), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_timing.py' : TestDecl(False, UnknownTestModule), + 'test_timing.py' : TestDecl(False, SimpleRunModule), 'test_tokenize.py' : TestDecl(False, OutputTestModule), - 'test_trace.py' : TestDecl(True, UTModuleMainTest), - 'test_traceback.py' : TestDecl(False, UTModuleMainTest), + 'test_trace.py' : TestDecl(True, UTTestMainModule), + 'test_traceback.py' : TestDecl(False, UTTestMainModule), #rev 10840: 2 of 2 tests fail 'test_types.py' : TestDecl(False, OutputTestModule, modified=True), @@ -602,59 +639,65 @@ # > (application-level) TypeError: an integer is required # [/home/hpk/pypy-dist/pypy/lib/test2/test_types.py:217] - 'test_ucn.py' : TestDecl(False, UTModuleMainTest), - 'test_unary.py' : TestDecl(True, UTModuleMainTest), - 'test_unicode.py' : TestDecl(False, UTModuleMainTest), + 'test_ucn.py' : TestDecl(False, UTTestMainModule), + 'test_unary.py' : TestDecl(True, UTTestMainModule), + 'test_unicode.py' : TestDecl(False, UTTestMainModule), 'test_unicode_file.py' : TestDecl(False, OutputTestModule), - 'test_unicodedata.py' : TestDecl(False, UTModuleMainTest), - 'test_univnewlines.py' : TestDecl(True, UTModuleMainTest), - 'test_unpack.py' : TestDecl(False, UnknownTestModule), - 'test_urllib.py' : TestDecl(True, UTModuleMainTest), + 'test_unicodedata.py' : TestDecl(False, UTTestMainModule), + 'test_univnewlines.py' : TestDecl(True, UTTestMainModule), + 'test_unpack.py' : TestDecl(False, SimpleRunModule), + 'test_urllib.py' : TestDecl(True, UTTestMainModule), #rev 10840: 10 of 10 tests fail - 'test_urllib2.py' : TestDecl(False, UnknownTestModule), - 'test_urllibnet.py' : TestDecl(False, UTModuleMainTest), - 'test_urlparse.py' : TestDecl(True, UTModuleMainTest), - 'test_userdict.py' : TestDecl(True, UTModuleMainTest), + 'test_urllib2.py' : TestDecl(False, SimpleRunModule), + 'test_urllibnet.py' : TestDecl(False, UTTestMainModule), + 'test_urlparse.py' : TestDecl(True, UTTestMainModule), + 'test_userdict.py' : TestDecl(True, UTTestMainModule), #rev 10840: 5 of 25 tests fail - 'test_userlist.py' : TestDecl(False, UTModuleMainTest), + 'test_userlist.py' : TestDecl(False, UTTestMainModule), #rev 10840: at least two tests fail, after several hours I gave up waiting for the rest - 'test_userstring.py' : TestDecl(False, UTModuleMainTest), - 'test_uu.py' : TestDecl(False, UTModuleMainTest), + 'test_userstring.py' : TestDecl(False, UTTestMainModule), + 'test_uu.py' : TestDecl(False, UTTestMainModule), #rev 10840: 1 of 9 test fails - 'test_warnings.py' : TestDecl(True, UTModuleMainTest), - 'test_wave.py' : TestDecl(False, UnknownTestModule), - 'test_weakref.py' : TestDecl(False, UTModuleMainTest), + 'test_warnings.py' : TestDecl(True, UTTestMainModule), + 'test_wave.py' : TestDecl(False, SimpleRunModule), + 'test_weakref.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: _weakref - 'test_whichdb.py' : TestDecl(False, UTModuleMainTest), + 'test_whichdb.py' : TestDecl(False, UTTestMainModule), 'test_winreg.py' : TestDecl(False, OutputTestModule), - 'test_winsound.py' : TestDecl(False, UTModuleMainTest), - 'test_xmllib.py' : TestDecl(False, UTModuleMainTest), - 'test_xmlrpc.py' : TestDecl(False, UTModuleMainTest), + 'test_winsound.py' : TestDecl(False, UTTestMainModule), + 'test_xmllib.py' : TestDecl(False, UTTestMainModule), + 'test_xmlrpc.py' : TestDecl(False, UTTestMainModule), #rev 10840: 2 of 5 tests fail - 'test_xpickle.py' : TestDecl(False, UTModuleMainTest), + 'test_xpickle.py' : TestDecl(False, UTTestMainModule), 'test_xreadline.py' : TestDecl(False, OutputTestModule), - 'test_zipfile.py' : TestDecl(False, UnknownTestModule), - 'test_zipimport.py' : TestDecl(False, UTModuleMainTest), + 'test_zipfile.py' : TestDecl(False, SimpleRunModule), + 'test_zipimport.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: zlib - 'test_zlib.py' : TestDecl(False, UTModuleMainTest), + 'test_zlib.py' : TestDecl(False, UTTestMainModule), #rev 10840: ImportError: zlib } class RegrDirectory(py.test.collect.Directory): + """ A special collector for the compliance tests + of CPython. Basically we work off the above 'testmap' + which describes for all test modules their specific + type. XXX If you find errors in the classification + please correct them! + """ testmap = testmap def run(self): l = [] items = self.testmap.items() items.sort(lambda x,y: cmp(x[0].lower(), y[0].lower())) for name, testdecl in items: - if testdecl.enabled: + if option.withdisabled or testdecl.enabled: l.append(name) return l @@ -663,8 +706,6 @@ testdecl = self.testmap[name] fspath = self.fspath.join(name) return testdecl.testclass(fspath, parent=self, testdecl=testdecl) - else: - raise ValueError("no test type specified for %s" %(name,)) Directory = RegrDirectory From hpk at codespeak.net Wed Apr 27 00:52:50 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 00:52:50 +0200 (CEST) Subject: [pypy-svn] r11496 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050426225250.63B2427B52@code1.codespeak.net> Author: hpk Date: Wed Apr 27 00:52:50 2005 New Revision: 11496 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: fix construction of output-path to check against Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 00:52:50 2005 @@ -170,7 +170,7 @@ to the expected output in the output/ directory. """ def run(self): - outputpath = self.fspath.dirpath('output', self.name) + outputpath = self.fspath.dirpath('output', self.fspath.purebasename) if not outputpath.check(): py.test.fail("expected outputfile at %s" %(outputpath,)) From hpk at codespeak.net Wed Apr 27 01:19:00 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 01:19:00 +0200 (CEST) Subject: [pypy-svn] r11497 - in pypy/dist: lib-python-2.3.4/test pypy/objspace/std Message-ID: <20050426231900.0015227B53@code1.codespeak.net> Author: hpk Date: Wed Apr 27 01:19:00 2005 New Revision: 11497 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py pypy/dist/pypy/objspace/std/objspace.py Log: - extend test declarations to allow specification oldstyle=True, first example: test_compare.py specifying oldstyle=True will let a test run with a default metaclass implementing oldstyle classes by default tests are run with all new style. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 01:19:00 2005 @@ -137,7 +137,16 @@ if name == 'apprun': return RunAppFileItem(name, parent=self, fspath=self.fspath) -class RunAppFileItem(py.test.Item): +class TestDeclMixin(object): + def testdecl(self): + current = self.parent + while current is not None: + if hasattr(current, 'testdecl'): + return current.testdecl + current = self.sparent + testdecl = property(testdecl) + +class RunAppFileItem(py.test.Item, TestDeclMixin): """ simple run a module file at app level, fail the test if running the appfile results in an OperationError. """ @@ -146,16 +155,26 @@ self.fspath = fspath self.space = getmyspace() + def getfspath(self): if self.parent.testdecl.modified: return pypydir.join('lib', 'test2', self.fspath.basename) else: return self.fspath # unmodified regrtest + def run_file(self, fspath): + space = self.space + if self.testdecl.oldstyle: + space.enable_old_style_classes_as_default_metaclass() + try: + run_file(str(fspath), space) + finally: + space.enable_new_style_classes_as_default_metaclass() + def run(self): fspath = self.getfspath() try: - run_file(str(fspath), self.space) + self.run_file(fspath) except OperationError, e: space = self.space if space and e.match(space, space.w_KeyboardInterrupt): @@ -216,7 +235,13 @@ fspath = pypydir.join('lib', 'test2', self.fspath.basename) else: fspath = self.fspath - w_mod = make_module(space, name, fspath) + + if self.testdecl.oldstyle: + space.enable_old_style_classes_as_default_metaclass() + try: + w_mod = make_module(space, name, fspath) + finally: + space.enable_new_style_classes_as_default_metaclass() # hack out testcases space.appexec([w_mod, w_testlist], """ @@ -308,7 +333,7 @@ class TestDecl: """ Test Declaration.""" - def __init__(self, enabled, testclass, modified=False): + def __init__(self, enabled, testclass, modified=False, oldstyle=False): """ if modified is True, the actual test item needs to be taken from the pypy/lib/test2 hierarchy. @@ -316,6 +341,7 @@ self.enabled = enabled self.testclass = testclass self.modified = modified + self.oldstyle = True testmap = { 'test_MimeWriter.py' : TestDecl(False, OutputTestModule), @@ -375,7 +401,7 @@ 'test_codeop.py' : TestDecl(True, UTTestMainModule), 'test_coercion.py' : TestDecl(False, OutputTestModule), 'test_commands.py' : TestDecl(True, UTTestMainModule), - 'test_compare.py' : TestDecl(True, OutputTestModule), + 'test_compare.py' : TestDecl(True, OutputTestModule, oldstyle=True), 'test_compile.py' : TestDecl(True, UTTestMainModule), 'test_complex.py' : TestDecl(False, UTTestMainModule), #rev 10840: at least one test fails, after several hours I gave up waiting for the rest Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Wed Apr 27 01:19:00 2005 @@ -98,6 +98,14 @@ def enable_old_style_classes_as_default_metaclass(self): self.setitem(self.builtin.w_dict, self.wrap('__metaclass__'), self.w_classobj) + def enable_new_style_classes_as_default_metaclass(self): + space = self + try: + self.delitem(self.builtin.w_dict, self.wrap('__metaclass__')) + except OperationError, e: + if not e.match(space, space.w_KeyError): + raise + def setup_old_style_classes(self): """NOT_RPYTHON""" from pypy.module import classobjinterp From hpk at codespeak.net Wed Apr 27 01:38:56 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 01:38:56 +0200 (CEST) Subject: [pypy-svn] r11498 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050426233856.96CAF27B55@code1.codespeak.net> Author: hpk Date: Wed Apr 27 01:38:56 2005 New Revision: 11498 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: respect global --oldstyle commandline option as well Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 01:38:56 2005 @@ -8,7 +8,7 @@ from pypy.interpreter.main import run_string, run_file # the following adds command line options as a side effect! -from pypy.conftest import gettestobjspace, option +from pypy.conftest import gettestobjspace, option as pypy_option from test.regrtest import reportdiff # @@ -164,12 +164,13 @@ def run_file(self, fspath): space = self.space - if self.testdecl.oldstyle: + if self.testdecl.oldstyle or pypy_option.oldstyle: space.enable_old_style_classes_as_default_metaclass() try: run_file(str(fspath), space) finally: - space.enable_new_style_classes_as_default_metaclass() + if not pypy_option.oldstyle: + space.enable_new_style_classes_as_default_metaclass() def run(self): fspath = self.getfspath() @@ -236,12 +237,13 @@ else: fspath = self.fspath - if self.testdecl.oldstyle: + if self.testdecl.oldstyle or pypy_option.oldstyle: space.enable_old_style_classes_as_default_metaclass() try: w_mod = make_module(space, name, fspath) finally: - space.enable_new_style_classes_as_default_metaclass() + if not pypy_option.oldstyle: + space.enable_new_style_classes_as_default_metaclass() # hack out testcases space.appexec([w_mod, w_testlist], """ From pedronis at codespeak.net Wed Apr 27 02:34:25 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 02:34:25 +0200 (CEST) Subject: [pypy-svn] r11499 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050427003425.DB6CE27B55@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 02:34:25 2005 New Revision: 11499 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: output of output tests has test name prepended, need to add it before comparison Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 02:34:25 2005 @@ -201,7 +201,7 @@ finally: sys.stdout = oldsysout # we want to compare outputs - result = capturesysout.getvalue() + result = self.fspath.purebasename+"\n"+capturesysout.getvalue() # regrtest itself had the test_name at the top of captured output expected = outputpath.read(mode='r') if result != expected: reportdiff(expected, result) From pedronis at codespeak.net Wed Apr 27 02:35:11 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 02:35:11 +0200 (CEST) Subject: [pypy-svn] r11500 - in pypy/dist/pypy: lib module Message-ID: <20050427003511.1DABF27B55@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 02:35:10 2005 New Revision: 11500 Modified: pypy/dist/pypy/lib/_classobj.py pypy/dist/pypy/module/classobjinterp.py Log: fixes => test_compare passes Modified: pypy/dist/pypy/lib/_classobj.py ============================================================================== --- pypy/dist/pypy/lib/_classobj.py (original) +++ pypy/dist/pypy/lib/_classobj.py Wed Apr 27 02:35:10 2005 @@ -412,7 +412,7 @@ return func(other) return NotImplemented else: - return %(opref)s(self, other) + return %(opref)s(coerced[0], coerced[1]) def __r%(op)s__(self, other): coerced = _coerce(self, other) @@ -422,7 +422,7 @@ return func(other) return NotImplemented else: - return %(opref)s(other, self) + return %(opref)s(coerced[1], coerced[0]) """, {"op": op, "opref": opref}) del op, opref @@ -451,7 +451,7 @@ return func(other) return NotImplemented else: - return operator.pow(self, other, None) + return operator.pow(coerced[0], coerced[1], None) else: # CPython also doesn't try coercion in this case func = instance_getattr1(self, '__pow__', False) @@ -469,7 +469,7 @@ return func(other) return NotImplemented else: - return operator.pow(other, self, None) + return operator.pow(coerced[1], coerced[0], None) else: # CPython also doesn't try coercion in this case func = instance_getattr1(self, '__rpow__', False) @@ -556,7 +556,7 @@ return 0 raise TypeError,"__cmp__ must return int" if isinstance(w, instance): - func = instance_getattr1(v, '__cmp__', False) + func = instance_getattr1(w, '__cmp__', False) if func: res = func(v) if isinstance(res, int): Modified: pypy/dist/pypy/module/classobjinterp.py ============================================================================== --- pypy/dist/pypy/module/classobjinterp.py (original) +++ pypy/dist/pypy/module/classobjinterp.py Wed Apr 27 02:35:10 2005 @@ -30,6 +30,7 @@ w_1 = w_0 goto = 5 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_2, w_3 = e.w_type, e.w_value goto = 2 @@ -134,7 +135,7 @@ while True: if goto == 1: - w_0 = space.call_function(space.w_type, w_v) + w_0 = space.type(w_v) w_1 = space.getattr(w_0, gs___name__) w_2 = space.newtuple([w_arg, w_expected, w_1]) w_3 = space.mod(gs_argument__s_must_be__s__not__s, w_2) @@ -174,24 +175,28 @@ v0 = space.is_true(w_0) if v0 == True: w_cls_1, w_name_1 = w_cls, w_name - goto = 2 + goto = 3 else: assert v0 == False - (w_etype, w_evalue) = (space.w_TypeError, - gs___name___must_be_a_string_object) - goto = 3 + goto = 2 if goto == 2: - w_1 = space.getattr(gdescriptor_classobj__name, gs___set__) - w_2 = space.call_function(w_1, w_cls_1, w_name_1) - w_3 = space.w_None + w_1 = space.call_function(space.w_TypeError, gs___name___must_be_a_string_object) + w_2 = space.type(w_1) + w_etype, w_evalue = w_2, w_1 goto = 4 if goto == 3: - raise gOperationError(w_etype, w_evalue) + w_3 = space.getattr(gdescriptor_classobj__name, gs___set__) + w_4 = space.call_function(w_3, w_cls_1, w_name_1) + w_5 = space.w_None + goto = 5 if goto == 4: - return w_3 + raise gOperationError(w_etype, w_evalue) + + if goto == 5: + return w_5 fastf_set_name = set_name @@ -225,53 +230,62 @@ v0 = space.is_true(w_0) if v0 == True: w_cls_1, w_bases_1 = w_cls, w_bases - goto = 2 + goto = 3 else: assert v0 == False - (w_etype, w_evalue) = (space.w_TypeError, - gs___bases___must_be_a_tuple_object) - goto = 6 + goto = 2 if goto == 2: - w_1 = space.iter(w_bases_1) - w_cls_2, w_bases_2, w_2 = w_cls_1, w_bases_1, w_1 - goto = 3 + w_1 = space.call_function(space.w_TypeError, gs___bases___must_be_a_tuple_object) + w_2 = space.type(w_1) + w_etype, w_evalue = w_2, w_1 + goto = 8 if goto == 3: + w_3 = space.iter(w_bases_1) + w_cls_2, w_bases_2, w_4 = w_cls_1, w_bases_1, w_3 + goto = 4 + + if goto == 4: try: - w_3 = space.next(w_2) - w_cls_3, w_bases_3, w_4, w_5 = w_cls_2, w_bases_2, w_2, w_3 - goto = 4 + w_5 = space.next(w_4) + w_cls_3, w_bases_3, w_6, w_7 = w_cls_2, w_bases_2, w_4, w_5 + goto = 5 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_StopIteration)): w_cls_4, w_bases_4 = w_cls_2, w_bases_2 - goto = 5 + goto = 7 else:raise # unhandled case, should not happen - if goto == 4: - w_6 = space.isinstance(w_5, gcls_classobj) - v1 = space.is_true(w_6) + if goto == 5: + w_8 = space.isinstance(w_7, gcls_classobj) + v1 = space.is_true(w_8) if v1 == True: - w_cls_2, w_bases_2, w_2 = w_cls_3, w_bases_3, w_4 - goto = 3 + w_cls_2, w_bases_2, w_4 = w_cls_3, w_bases_3, w_6 + goto = 4 continue else: assert v1 == False - (w_etype, w_evalue) = (space.w_TypeError, - gs___bases___items_must_be_classes) goto = 6 - if goto == 5: - w_7 = space.getattr(gdescriptor_classobj__bases, gs___set__) - w_8 = space.call_function(w_7, w_cls_4, w_bases_4) - w_9 = space.w_None - goto = 7 - if goto == 6: - raise gOperationError(w_etype, w_evalue) + w_9 = space.call_function(space.w_TypeError, gs___bases___items_must_be_classes) + w_10 = space.type(w_9) + w_etype, w_evalue = w_10, w_9 + goto = 8 if goto == 7: - return w_9 + w_11 = space.getattr(gdescriptor_classobj__bases, gs___set__) + w_12 = space.call_function(w_11, w_cls_4, w_bases_4) + w_13 = space.w_None + goto = 9 + + if goto == 8: + raise gOperationError(w_etype, w_evalue) + + if goto == 9: + return w_13 fastf_set_bases = set_bases @@ -302,23 +316,27 @@ v0 = space.is_true(w_0) if v0 == True: w_1, w_2 = w_cls, w_dic - goto = 2 + goto = 3 else: assert v0 == False - (w_etype, w_evalue) = (space.w_TypeError, - gs___dict___must_be_a_dictionary_ob) - goto = 3 + goto = 2 if goto == 2: - w_3 = space.call_function(gdescriptor_object___setattr__, w_1, gs___dict__, w_2) - w_4 = space.w_None + w_3 = space.call_function(space.w_TypeError, gs___dict___must_be_a_dictionary_ob) + w_4 = space.type(w_3) + w_etype, w_evalue = w_4, w_3 goto = 4 if goto == 3: - raise gOperationError(w_etype, w_evalue) + w_5 = space.call_function(gdescriptor_object___setattr__, w_1, gs___dict__, w_2) + w_6 = space.w_None + goto = 5 if goto == 4: - return w_4 + raise gOperationError(w_etype, w_evalue) + + if goto == 5: + return w_6 fastf_set_dict = set_dict @@ -349,17 +367,53 @@ try: w_1 = space.getitem(w_0, w_attr) w_2 = w_1 - goto = 3 + goto = 7 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_KeyError)): - w_etype, w_evalue = space.w_AttributeError, w_attr - goto = 2 + w_3 = w_attr + goto = 3 else:raise # unhandled case, should not happen if goto == 2: - raise gOperationError(w_etype, w_evalue) + w_4 = space.call_function(space.w_AttributeError, ) + w_5 = space.type(w_4) + w_etype, w_evalue = w_5, w_4 + goto = 6 if goto == 3: + w_6 = space.is_(w_3, space.w_None) + v0 = space.is_true(w_6) + if v0 == True: + goto = 2 + continue + else: + assert v0 == False + w_7 = w_3 + goto = 4 + + if goto == 4: + w_8 = space.type(w_7) + w_9 = space.issubtype(w_8, space.w_AttributeError) + v1 = space.is_true(w_9) + if v1 == True: + w_etype, w_evalue = w_8, w_7 + goto = 6 + else: + assert v1 == False + w_10 = w_7 + goto = 5 + + if goto == 5: + w_11 = space.call_function(space.w_AttributeError, w_10) + w_12 = space.type(w_11) + w_etype, w_evalue = w_12, w_11 + goto = 6 + + if goto == 6: + raise gOperationError(w_etype, w_evalue) + + if goto == 7: return w_2 fastf_retrieve = retrieve @@ -391,6 +445,7 @@ w_1, w_2 = w_0, w_cls goto = 2 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_cls_1, w_attr_1, w_3, w_4 = w_cls, w_attr, e.w_type, e.w_value goto = 3 @@ -436,6 +491,7 @@ w_attr_5, w_16, w_17 = w_attr_4, w_14, w_15 goto = 7 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_StopIteration)): w_6 = g2tuple_1 goto = 11 @@ -509,6 +565,7 @@ w_mod = w_0 goto = 3 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_1, w_2 = e.w_type, e.w_value goto = 2 @@ -578,54 +635,92 @@ while True: if goto == 1: - w_0 = space.call_function(space.w_type, w_v) try: - w_1 = space.getattr(w_0, gs___mro__) - w_name_1, w_2 = w_name, w_1 + w_0 = space.type(w_v) + w_name_1, w_1 = w_name, w_0 goto = 2 except gOperationError, e: - if space.is_true(space.issubtype(e.w_type, space.w_AttributeError)): - w_3 = space.w_None - goto = 6 + e.normalize_exception(space) + if space.is_true(space.issubtype(e.w_type, space.w_Exception)): + w_2, w_3 = e.w_type, e.w_value + goto = 3 else:raise # unhandled case, should not happen if goto == 2: - w_4 = space.iter(w_2) - w_name_2, w_5 = w_name_1, w_4 - goto = 3 - - if goto == 3: try: - w_6 = space.next(w_5) - w_name_3, w_x, w_7 = w_name_2, w_6, w_5 - goto = 4 + w_4 = space.getattr(w_1, gs___mro__) + w_name_2, w_5 = w_name_1, w_4 + goto = 5 except gOperationError, e: - if space.is_true(space.issubtype(e.w_type, space.w_StopIteration)): - w_3 = space.w_None - goto = 6 + e.normalize_exception(space) + if space.is_true(space.issubtype(e.w_type, space.w_AttributeError)): + w_6 = space.w_None + goto = 10 else:raise # unhandled case, should not happen - if goto == 4: - w_8 = space.getattr(w_x, gs___dict__) - w_9 = space.contains(w_8, w_name_3) - v0 = space.is_true(w_9) + if goto == 3: + w_7 = space.is_(w_2, space.w_AttributeError) + v0 = space.is_true(w_7) if v0 == True: - w_name_4, w_10 = w_name_3, w_x - goto = 5 + w_6 = space.w_None + goto = 10 else: assert v0 == False - w_name_2, w_5 = w_name_3, w_7 - goto = 3 - continue + w_8, w_9 = w_2, w_3 + goto = 4 + + if goto == 4: + w_10 = space.issubtype(w_8, space.w_AttributeError) + v1 = space.is_true(w_10) + if v1 == True: + w_6 = space.w_None + goto = 10 + else: + assert v1 == False + w_etype, w_evalue = w_8, w_9 + goto = 9 if goto == 5: - w_11 = space.getattr(w_10, gs___dict__) - w_12 = space.getitem(w_11, w_name_4) - w_3 = w_12 + w_11 = space.iter(w_5) + w_name_3, w_12 = w_name_2, w_11 goto = 6 if goto == 6: - return w_3 + try: + w_13 = space.next(w_12) + w_name_4, w_x, w_14 = w_name_3, w_13, w_12 + goto = 7 + except gOperationError, e: + e.normalize_exception(space) + if space.is_true(space.issubtype(e.w_type, space.w_StopIteration)): + w_6 = space.w_None + goto = 10 + else:raise # unhandled case, should not happen + + if goto == 7: + w_15 = space.getattr(w_x, gs___dict__) + w_16 = space.contains(w_15, w_name_4) + v2 = space.is_true(w_16) + if v2 == True: + w_name_5, w_17 = w_name_4, w_x + goto = 8 + else: + assert v2 == False + w_name_3, w_12 = w_name_4, w_14 + goto = 6 + continue + + if goto == 8: + w_18 = space.getattr(w_17, gs___dict__) + w_19 = space.getitem(w_18, w_name_5) + w_6 = w_19 + goto = 10 + + if goto == 9: + raise gOperationError(w_etype, w_evalue) + + if goto == 10: + return w_6 fastf_mro_lookup = mro_lookup @@ -678,238 +773,302 @@ if goto == 2: w_2 = fastf_type_err(space, gs_name, gs_string, w_1) w_3 = space.type(w_2) - w_etype, w_evalue = w_3, w_2 - goto = 25 - - if goto == 3: - w_4 = space.is_(w_bases_1, space.w_None) + w_4 = space.issubtype(w_3, space.w_type) v1 = space.is_true(w_4) if v1 == True: - w_name_2, w_bases_2, w_dic_2 = w_name_1, g0tuple, w_dic_1 - goto = 4 + w_5 = w_2 + goto = 6 else: assert v1 == False - w_name_2, w_bases_2, w_dic_2 = w_name_1, w_bases_1, w_dic_1 - goto = 4 + w_6 = w_2 + goto = 5 - if goto == 4: - w_5 = space.isinstance(w_bases_2, space.w_tuple) - v2 = space.is_true(w_5) + if goto == 3: + w_7 = space.is_(w_bases_1, space.w_None) + v2 = space.is_true(w_7) if v2 == True: - w_name_3, w_bases_3, w_dic_3 = w_name_2, w_bases_2, w_dic_2 - goto = 6 + w_name_2, w_bases_2, w_dic_2 = w_name_1, g0tuple, w_dic_1 + goto = 4 else: assert v2 == False - w_6 = w_bases_2 - goto = 5 - - if goto == 5: - w_7 = fastf_type_err(space, gs_bases, gs_tuple, w_6) - w_8 = space.type(w_7) - w_etype, w_evalue = w_8, w_7 - goto = 25 + w_name_2, w_bases_2, w_dic_2 = w_name_1, w_bases_1, w_dic_1 + goto = 4 - if goto == 6: - w_9 = space.isinstance(w_dic_3, space.w_dict) - v3 = space.is_true(w_9) + if goto == 4: + w_8 = space.isinstance(w_bases_2, space.w_tuple) + v3 = space.is_true(w_8) if v3 == True: - w_name_4, w_bases_4, w_dic_4 = w_name_3, w_bases_3, w_dic_3 + w_name_3, w_bases_3, w_dic_3 = w_name_2, w_bases_2, w_dic_2 goto = 8 else: assert v3 == False - w_10 = w_dic_3 + w_9 = w_bases_2 goto = 7 - if goto == 7: - w_11 = fastf_type_err(space, gs_dict, gs_dict, w_10) + if goto == 5: + w_10 = space.type(w_6) + w_etype, w_evalue = w_10, w_6 + goto = 32 + + if goto == 6: + w_11 = space.call_function(w_5, ) w_12 = space.type(w_11) w_etype, w_evalue = w_12, w_11 - goto = 25 + goto = 32 + + if goto == 7: + w_13 = fastf_type_err(space, gs_bases, gs_tuple, w_9) + w_14 = space.type(w_13) + w_15 = space.issubtype(w_14, space.w_type) + v4 = space.is_true(w_15) + if v4 == True: + w_16 = w_13 + goto = 10 + else: + assert v4 == False + w_17 = w_13 + goto = 9 if goto == 8: + w_18 = space.isinstance(w_dic_3, space.w_dict) + v5 = space.is_true(w_18) + if v5 == True: + w_name_4, w_bases_4, w_dic_4 = w_name_3, w_bases_3, w_dic_3 + goto = 12 + else: + assert v5 == False + w_19 = w_dic_3 + goto = 11 + + if goto == 9: + w_20 = space.type(w_17) + w_etype, w_evalue = w_20, w_17 + goto = 32 + + if goto == 10: + w_21 = space.call_function(w_16, ) + w_22 = space.type(w_21) + w_etype, w_evalue = w_22, w_21 + goto = 32 + + if goto == 11: + w_23 = fastf_type_err(space, gs_dict, gs_dict, w_19) + w_24 = space.type(w_23) + w_25 = space.issubtype(w_24, space.w_type) + v6 = space.is_true(w_25) + if v6 == True: + w_26 = w_23 + goto = 16 + else: + assert v6 == False + w_27 = w_23 + goto = 15 + + if goto == 12: try: - w_13 = space.getitem(w_dic_4, gs___doc__) + w_28 = space.getitem(w_dic_4, gs___doc__) w_name_5, w_bases_5, w_dic_5 = w_name_4, w_bases_4, w_dic_4 - goto = 10 + goto = 14 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_KeyError)): w_name_6, w_bases_6, w_dic_6 = w_name_4, w_bases_4, w_dic_4 - goto = 9 + goto = 13 else:raise # unhandled case, should not happen - if goto == 9: - w_14 = space.setitem(w_dic_6, gs___doc__, space.w_None) + if goto == 13: + w_29 = space.setitem(w_dic_6, gs___doc__, space.w_None) w_name_5, w_bases_5, w_dic_5 = w_name_6, w_bases_6, w_dic_6 - goto = 10 + goto = 14 - if goto == 10: + if goto == 14: try: - w_15 = space.getitem(w_dic_5, gs___module__) + w_30 = space.getitem(w_dic_5, gs___module__) w_name_7, w_bases_7, w_dic_7 = w_name_5, w_bases_5, w_dic_5 - goto = 19 + goto = 25 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_KeyError)): (w_name_8, w_bases_8, w_dic_8, w_i) = (w_name_5, w_bases_5, w_dic_5, gi_0) - goto = 11 + goto = 17 else:raise # unhandled case, should not happen - if goto == 11: + if goto == 15: + w_31 = space.type(w_27) + w_etype, w_evalue = w_31, w_27 + goto = 32 + + if goto == 16: + w_32 = space.call_function(w_26, ) + w_33 = space.type(w_32) + w_etype, w_evalue = w_33, w_32 + goto = 32 + + if goto == 17: try: - w_16 = space.call_function((space.sys.get(space.str_w(gs__getframe))), w_i) - (w_name_9, w_bases_9, w_dic_9, w_i_1, w_17) = (w_name_8, - w_bases_8, w_dic_8, w_i, w_16) - goto = 12 + w_34 = space.call_function((space.sys.get(space.str_w(gs__getframe))), w_i) + (w_name_9, w_bases_9, w_dic_9, w_i_1, w_35) = (w_name_8, + w_bases_8, w_dic_8, w_i, w_34) + goto = 18 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): - (w_name_10, w_bases_10, w_dic_10, w_18, w_19) = (w_name_8, + (w_name_10, w_bases_10, w_dic_10, w_36, w_37) = (w_name_8, w_bases_8, w_dic_8, e.w_type, e.w_value) - goto = 15 + goto = 21 else:raise # unhandled case, should not happen - if goto == 12: - w_20 = space.getattr(w_17, gs_f_globals) - w_21 = space.getattr(w_20, gs_get) + if goto == 18: + w_38 = space.getattr(w_35, gs_f_globals) + w_39 = space.getattr(w_38, gs_get) try: - w_22 = space.call_function(w_21, gs_OLD_STYLE_CLASSES_IMPL, space.w_None) - (w_name_11, w_bases_11, w_dic_11, w_g, w_i_2, w_23) = (w_name_9, - w_bases_9, w_dic_9, w_20, w_i_1, w_22) - goto = 13 + w_40 = space.call_function(w_39, gs_OLD_STYLE_CLASSES_IMPL, space.w_None) + (w_name_11, w_bases_11, w_dic_11, w_g, w_i_2, w_41) = (w_name_9, + w_bases_9, w_dic_9, w_38, w_i_1, w_40) + goto = 19 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): - (w_name_10, w_bases_10, w_dic_10, w_18, w_19) = (w_name_9, + (w_name_10, w_bases_10, w_dic_10, w_36, w_37) = (w_name_9, w_bases_9, w_dic_9, e.w_type, e.w_value) - goto = 15 + goto = 21 else:raise # unhandled case, should not happen - if goto == 13: - w_24 = space.is_(w_23, g_object) - v4 = space.is_true(w_24) - if v4 == True: - (w_name_12, w_bases_12, w_dic_12, w_25) = (w_name_11, w_bases_11, + if goto == 19: + w_42 = space.is_(w_41, g_object) + v7 = space.is_true(w_42) + if v7 == True: + (w_name_12, w_bases_12, w_dic_12, w_43) = (w_name_11, w_bases_11, w_dic_11, w_i_2) - goto = 14 + goto = 20 else: - assert v4 == False - (w_name_13, w_bases_13, w_dic_13, w_26) = (w_name_11, w_bases_11, + assert v7 == False + (w_name_13, w_bases_13, w_dic_13, w_44) = (w_name_11, w_bases_11, w_dic_11, w_g) - goto = 17 + goto = 23 - if goto == 14: - w_27 = space.inplace_add(w_25, gi_1) + if goto == 20: + w_45 = space.inplace_add(w_43, gi_1) (w_name_8, w_bases_8, w_dic_8, w_i) = (w_name_12, w_bases_12, - w_dic_12, w_27) - goto = 11 + w_dic_12, w_45) + goto = 17 continue - if goto == 15: - w_28 = space.is_(w_18, space.w_ValueError) - v5 = space.is_true(w_28) - if v5 == True: + if goto == 21: + w_46 = space.is_(w_36, space.w_ValueError) + v8 = space.is_true(w_46) + if v8 == True: w_name_7, w_bases_7, w_dic_7 = w_name_10, w_bases_10, w_dic_10 - goto = 19 + goto = 25 else: - assert v5 == False - (w_name_14, w_bases_14, w_dic_14, w_29, w_30) = (w_name_10, - w_bases_10, w_dic_10, w_18, w_19) - goto = 16 + assert v8 == False + (w_name_14, w_bases_14, w_dic_14, w_47, w_48) = (w_name_10, + w_bases_10, w_dic_10, w_36, w_37) + goto = 22 - if goto == 16: - w_31 = space.issubtype(w_29, space.w_ValueError) - v6 = space.is_true(w_31) - if v6 == True: + if goto == 22: + w_49 = space.issubtype(w_47, space.w_ValueError) + v9 = space.is_true(w_49) + if v9 == True: w_name_7, w_bases_7, w_dic_7 = w_name_14, w_bases_14, w_dic_14 - goto = 19 - else: - assert v6 == False - w_etype, w_evalue = w_29, w_30 goto = 25 - - if goto == 17: - w_32 = space.getattr(w_26, gs_get) - w_33 = space.call_function(w_32, gs___name__, space.w_None) - w_34 = space.is_(w_33, space.w_None) - v7 = space.is_true(w_34) - if v7 == True: + else: + assert v9 == False + w_etype, w_evalue = w_47, w_48 + goto = 32 + + if goto == 23: + w_50 = space.getattr(w_44, gs_get) + w_51 = space.call_function(w_50, gs___name__, space.w_None) + w_52 = space.is_(w_51, space.w_None) + v10 = space.is_true(w_52) + if v10 == True: w_name_7, w_bases_7, w_dic_7 = w_name_13, w_bases_13, w_dic_13 - goto = 19 + goto = 25 else: - assert v7 == False - (w_name_15, w_bases_15, w_dic_15, w_35) = (w_name_13, w_bases_13, - w_dic_13, w_33) - goto = 18 + assert v10 == False + (w_name_15, w_bases_15, w_dic_15, w_53) = (w_name_13, w_bases_13, + w_dic_13, w_51) + goto = 24 - if goto == 18: - w_36 = space.setitem(w_dic_15, gs___module__, w_35) + if goto == 24: + w_54 = space.setitem(w_dic_15, gs___module__, w_53) w_name_7, w_bases_7, w_dic_7 = w_name_15, w_bases_15, w_dic_15 - goto = 19 + goto = 25 - if goto == 19: - w_37 = space.iter(w_bases_7) - (w_name_16, w_bases_16, w_dic_16, w_38) = (w_name_7, w_bases_7, - w_dic_7, w_37) - goto = 20 + if goto == 25: + w_55 = space.iter(w_bases_7) + (w_name_16, w_bases_16, w_dic_16, w_56) = (w_name_7, w_bases_7, + w_dic_7, w_55) + goto = 26 - if goto == 20: + if goto == 26: try: - w_39 = space.next(w_38) - (w_name_17, w_bases_17, w_dic_17, w_b, w_40) = (w_name_16, - w_bases_16, w_dic_16, w_39, w_38) - goto = 21 + w_57 = space.next(w_56) + (w_name_17, w_bases_17, w_dic_17, w_b, w_58) = (w_name_16, + w_bases_16, w_dic_16, w_57, w_56) + goto = 27 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_StopIteration)): w_name_18, w_bases_18, w_dic_18 = w_name_16, w_bases_16, w_dic_16 - goto = 24 + goto = 31 else:raise # unhandled case, should not happen - if goto == 21: - w_41 = space.isinstance(w_b, gcls_classobj) - v8 = space.is_true(w_41) - if v8 == True: - (w_name_16, w_bases_16, w_dic_16, w_38) = (w_name_17, w_bases_17, - w_dic_17, w_40) - goto = 20 + if goto == 27: + w_59 = space.isinstance(w_b, gcls_classobj) + v11 = space.is_true(w_59) + if v11 == True: + (w_name_16, w_bases_16, w_dic_16, w_56) = (w_name_17, w_bases_17, + w_dic_17, w_58) + goto = 26 continue else: - assert v8 == False + assert v11 == False (w_name_19, w_bases_19, w_dic_19, w_b_1) = (w_name_17, w_bases_17, w_dic_17, w_b) - goto = 22 + goto = 28 - if goto == 22: - w_42 = space.call_function(space.w_type, w_b_1) - w_43 = space.call_function((space.builtin.get(space.str_w(gs_callable))), w_42) - v9 = space.is_true(w_43) - if v9 == True: - (w_name_20, w_bases_20, w_dic_20, w_44) = (w_name_19, w_bases_19, + if goto == 28: + w_60 = space.type(w_b_1) + w_61 = space.call_function((space.builtin.get(space.str_w(gs_callable))), w_60) + v12 = space.is_true(w_61) + if v12 == True: + (w_name_20, w_bases_20, w_dic_20, w_62) = (w_name_19, w_bases_19, w_dic_19, w_b_1) - goto = 23 + goto = 29 else: - assert v9 == False - w_etype, w_evalue = space.w_TypeError, gs_base_must_be_class - goto = 25 - - if goto == 23: - w_45 = space.call_function(space.w_type, w_44) - w_46 = space.call_function(w_45, w_name_20, w_bases_20, w_dic_20) - w_47 = w_46 - goto = 26 + assert v12 == False + goto = 30 - if goto == 24: - w_48 = space.call_function(gbltinmethod___new__, gcls_classobj) - w_49 = space.call_function(gdescriptor_object___setattr__, w_48, gs___dict__, w_dic_18) - w_50 = space.getattr(gdescriptor_classobj__name, gs___set__) - w_51 = space.call_function(w_50, w_48, w_name_18) - w_52 = space.getattr(gdescriptor_classobj__bases, gs___set__) - w_53 = space.call_function(w_52, w_48, w_bases_18) - w_47 = w_48 - goto = 26 + if goto == 29: + w_63 = space.type(w_62) + w_64 = space.call_function(w_63, w_name_20, w_bases_20, w_dic_20) + w_65 = w_64 + goto = 33 + + if goto == 30: + w_66 = space.call_function(space.w_TypeError, gs_base_must_be_class) + w_67 = space.type(w_66) + w_etype, w_evalue = w_67, w_66 + goto = 32 + + if goto == 31: + w_68 = space.call_function(gbltinmethod___new__, gcls_classobj) + w_69 = space.call_function(gdescriptor_object___setattr__, w_68, gs___dict__, w_dic_18) + w_70 = space.getattr(gdescriptor_classobj__name, gs___set__) + w_71 = space.call_function(w_70, w_68, w_name_18) + w_72 = space.getattr(gdescriptor_classobj__bases, gs___set__) + w_73 = space.call_function(w_72, w_68, w_bases_18) + w_65 = w_68 + goto = 33 - if goto == 25: + if goto == 32: raise gOperationError(w_etype, w_evalue) - if goto == 26: - return w_47 + if goto == 33: + return w_65 fastf___new__ = __new__ @@ -1084,7 +1243,7 @@ if goto == 2: w_2 = space.call_function(gdescriptor_object___getattribute__, w_1, gs___dict__) w_3 = w_2 - goto = 13 + goto = 16 if goto == 3: w_4 = space.eq(w_attr_1, gs___name__) @@ -1101,7 +1260,7 @@ w_5 = space.getattr(gdescriptor_classobj__name, gs___get__) w_6 = space.call_function(w_5, w_self_2) w_3 = w_6 - goto = 13 + goto = 16 if goto == 5: w_7 = space.eq(w_attr_2, gs___bases__) @@ -1118,7 +1277,7 @@ w_8 = space.getattr(gdescriptor_classobj__bases, gs___get__) w_9 = space.call_function(w_8, w_self_4) w_3 = w_9 - goto = 13 + goto = 16 if goto == 7: w_10 = space.getitem(w_11, gi_0) @@ -1144,36 +1303,66 @@ else: assert v4 == False w_etype, w_evalue = space.w_ValueError, space.w_None - goto = 12 + goto = 15 if goto == 9: w_17 = space.getattr(w_13, gs___name__) w_18 = space.newtuple([w_17, w_attr_5]) w_19 = space.mod(gs_class__s_has_no_attribute__s, w_18) - w_etype, w_evalue = space.w_AttributeError, w_19 - goto = 12 + w_20 = space.is_(w_19, space.w_None) + v5 = space.is_true(w_20) + if v5 == True: + goto = 11 + else: + assert v5 == False + w_21 = w_19 + goto = 13 if goto == 10: - w_20 = fastf_mro_lookup(space, w_v, gs___get__) - w_21 = space.is_(w_20, space.w_None) - v5 = space.is_true(w_21) - if v5 == True: + w_22 = fastf_mro_lookup(space, w_v, gs___get__) + w_23 = space.is_(w_22, space.w_None) + v6 = space.is_true(w_23) + if v6 == True: w_3 = w_v - goto = 13 + goto = 16 else: - assert v5 == False - w_22, w_23, w_24 = w_20, w_v, w_self_7 - goto = 11 + assert v6 == False + w_24, w_25, w_26 = w_22, w_v, w_self_7 + goto = 12 if goto == 11: - w_25 = space.call_function(w_22, w_23, space.w_None, w_24) - w_3 = w_25 - goto = 13 + w_27 = space.call_function(space.w_AttributeError, ) + w_28 = space.type(w_27) + w_etype, w_evalue = w_28, w_27 + goto = 15 if goto == 12: - raise gOperationError(w_etype, w_evalue) + w_29 = space.call_function(w_24, w_25, space.w_None, w_26) + w_3 = w_29 + goto = 16 if goto == 13: + w_30 = space.type(w_21) + w_31 = space.issubtype(w_30, space.w_AttributeError) + v7 = space.is_true(w_31) + if v7 == True: + w_etype, w_evalue = w_30, w_21 + goto = 15 + else: + assert v7 == False + w_32 = w_21 + goto = 14 + + if goto == 14: + w_33 = space.call_function(space.w_AttributeError, w_32) + w_34 = space.type(w_33) + w_etype, w_evalue = w_34, w_33 + goto = 15 + + if goto == 15: + raise gOperationError(w_etype, w_evalue) + + if goto == 16: return w_3 fastf_classobj___getattribute__ = __getattribute__ @@ -1304,7 +1493,7 @@ else: assert v0 == False w_7 = w_0 - goto = 5 + goto = 7 if goto == 2: _args = gateway.Arguments.fromshape(space, (0, (), True, True), [w_5, w_6]) @@ -1313,20 +1502,39 @@ v1 = space.is_true(w_9) if v1 == True: w_7 = w_inst - goto = 5 + goto = 7 else: assert v1 == False goto = 3 if goto == 3: w_10 = space.call_function(space.w_TypeError, gs___init_____should_return_None) - w_etype, w_evalue = space.w_TypeError, w_10 - goto = 4 + w_11 = space.type(w_10) + w_12 = space.issubtype(w_11, space.w_type) + v2 = space.is_true(w_12) + if v2 == True: + w_13 = w_10 + goto = 5 + else: + assert v2 == False + w_14 = w_10 + goto = 4 if goto == 4: - raise gOperationError(w_etype, w_evalue) + w_15 = space.type(w_14) + w_etype, w_evalue = w_15, w_14 + goto = 6 if goto == 5: + w_16 = space.call_function(w_13, ) + w_17 = space.type(w_16) + w_etype, w_evalue = w_17, w_16 + goto = 6 + + if goto == 6: + raise gOperationError(w_etype, w_evalue) + + if goto == 7: return w_7 fastf_classobj___call__ = __call__ @@ -1367,7 +1575,7 @@ if goto == 2: w_3 = space.call_function(gdescriptor_object___getattribute__, w_1, w_2) w_4 = w_3 - goto = 15 + goto = 18 if goto == 3: w_5 = space.eq(w_name_1, gs___class__) @@ -1384,7 +1592,7 @@ w_6 = space.getattr(gdescriptor_instance__class, gs___get__) w_7 = space.call_function(w_6, w_inst_2) w_4 = w_7 - goto = 15 + goto = 18 if goto == 5: w_8 = space.issubtype(w_9, space.w_AttributeError) @@ -1395,14 +1603,15 @@ else: assert v2 == False w_etype, w_evalue = w_9, w_10 - goto = 14 + goto = 17 if goto == 6: try: w_11 = fastf_retrieve(space, w_inst_3, w_name_2) w_4 = w_11 - goto = 15 + goto = 18 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): (w_inst_6, w_name_5, w_exc_5, w_12, w_13) = (w_inst_3, w_name_2, w_exc_2, e.w_type, e.w_value) @@ -1436,7 +1645,7 @@ else: assert v4 == False w_etype, w_evalue = space.w_ValueError, space.w_None - goto = 14 + goto = 17 if goto == 9: w_21 = space.getitem(w_20, gi_0) @@ -1444,7 +1653,7 @@ v5 = space.is_true(w_22) if v5 == True: w_inst_8, w_v, w_cls_1 = w_inst_7, w_21, w_cls - goto = 12 + goto = 15 else: assert v5 == False w_name_7, w_cls_2, w_23 = w_name_6, w_cls, w_exc_6 @@ -1458,36 +1667,66 @@ else: assert v6 == False w_4 = space.w_None - goto = 15 + goto = 18 if goto == 11: w_25 = space.getattr(w_24, gs___name__) w_26 = space.newtuple([w_25, w_name_8]) w_27 = space.mod(gs__s_instance_has_no_attribute__s, w_26) - w_etype, w_evalue = space.w_AttributeError, w_27 - goto = 14 - - if goto == 12: - w_28 = fastf_mro_lookup(space, w_v, gs___get__) - w_29 = space.is_(w_28, space.w_None) - v7 = space.is_true(w_29) + w_28 = space.is_(w_27, space.w_None) + v7 = space.is_true(w_28) if v7 == True: - w_4 = w_v - goto = 15 + goto = 12 else: assert v7 == False - w_30, w_31, w_32, w_33 = w_28, w_v, w_inst_8, w_cls_1 + w_29 = w_27 goto = 13 + if goto == 12: + w_30 = space.call_function(space.w_AttributeError, ) + w_31 = space.type(w_30) + w_etype, w_evalue = w_31, w_30 + goto = 17 + if goto == 13: - w_34 = space.call_function(w_30, w_31, w_32, w_33) - w_4 = w_34 - goto = 15 + w_32 = space.type(w_29) + w_33 = space.issubtype(w_32, space.w_AttributeError) + v8 = space.is_true(w_33) + if v8 == True: + w_etype, w_evalue = w_32, w_29 + goto = 17 + else: + assert v8 == False + w_34 = w_29 + goto = 14 if goto == 14: - raise gOperationError(w_etype, w_evalue) + w_35 = space.call_function(space.w_AttributeError, w_34) + w_36 = space.type(w_35) + w_etype, w_evalue = w_36, w_35 + goto = 17 if goto == 15: + w_37 = fastf_mro_lookup(space, w_v, gs___get__) + w_38 = space.is_(w_37, space.w_None) + v9 = space.is_true(w_38) + if v9 == True: + w_4 = w_v + goto = 18 + else: + assert v9 == False + w_39, w_40, w_41, w_42 = w_37, w_v, w_inst_8, w_cls_1 + goto = 16 + + if goto == 16: + w_43 = space.call_function(w_39, w_40, w_41, w_42) + w_4 = w_43 + goto = 18 + + if goto == 17: + raise gOperationError(w_etype, w_evalue) + + if goto == 18: return w_4 fastf_instance_getattr1 = instance_getattr1 @@ -1519,6 +1758,7 @@ w_1 = w_0 goto = 7 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): (w_self_1, w_name_1, w_2, w_3) = (w_self, w_name, e.w_type, e.w_value) @@ -1607,53 +1847,91 @@ if goto == 2: w_1 = space.call_function(space.w_TypeError, gs_instance___first_arg_must_be_cla) - w_etype, w_evalue = space.w_TypeError, w_1 - goto = 8 + w_2 = space.type(w_1) + w_3 = space.issubtype(w_2, space.w_type) + v1 = space.is_true(w_3) + if v1 == True: + w_4 = w_1 + goto = 6 + else: + assert v1 == False + w_5 = w_1 + goto = 5 if goto == 3: - w_2 = space.is_(w_dic_1, space.w_None) - v1 = space.is_true(w_2) - if v1 == True: + w_6 = space.is_(w_dic_1, space.w_None) + v2 = space.is_true(w_6) + if v2 == True: w_klass_2 = w_klass_1 goto = 4 else: - assert v1 == False + assert v2 == False w_klass_3, w_dic_2 = w_klass_1, w_dic_1 - goto = 5 + goto = 7 if goto == 4: - w_3 = space.newdict([]) - w_klass_4, w_dic_3 = w_klass_2, w_3 - goto = 7 + w_7 = space.newdict([]) + w_klass_4, w_dic_3 = w_klass_2, w_7 + goto = 9 if goto == 5: - w_4 = space.isinstance(w_dic_2, space.w_dict) - v2 = space.is_true(w_4) - if v2 == True: - w_klass_4, w_dic_3 = w_klass_3, w_dic_2 - goto = 7 - else: - assert v2 == False - goto = 6 + w_8 = space.type(w_5) + w_etype, w_evalue = w_8, w_5 + goto = 12 if goto == 6: - w_5 = space.call_function(space.w_TypeError, gs_instance___second_arg_must_be_di) - w_etype, w_evalue = space.w_TypeError, w_5 - goto = 8 + w_9 = space.call_function(w_4, ) + w_10 = space.type(w_9) + w_etype, w_evalue = w_10, w_9 + goto = 12 if goto == 7: - w_6 = space.call_function(gbltinmethod___new__, gcls_instance) - w_7 = space.getattr(gdescriptor_instance__class, gs___set__) - w_8 = space.call_function(w_7, w_6, w_klass_4) - w_9 = space.call_function(gdescriptor_object___setattr__, w_6, gs___dict__, w_dic_3) - w_10 = w_6 - goto = 9 + w_11 = space.isinstance(w_dic_2, space.w_dict) + v3 = space.is_true(w_11) + if v3 == True: + w_klass_4, w_dic_3 = w_klass_3, w_dic_2 + goto = 9 + else: + assert v3 == False + goto = 8 if goto == 8: - raise gOperationError(w_etype, w_evalue) + w_12 = space.call_function(space.w_TypeError, gs_instance___second_arg_must_be_di) + w_13 = space.type(w_12) + w_14 = space.issubtype(w_13, space.w_type) + v4 = space.is_true(w_14) + if v4 == True: + w_15 = w_12 + goto = 11 + else: + assert v4 == False + w_16 = w_12 + goto = 10 if goto == 9: - return w_10 + w_17 = space.call_function(gbltinmethod___new__, gcls_instance) + w_18 = space.getattr(gdescriptor_instance__class, gs___set__) + w_19 = space.call_function(w_18, w_17, w_klass_4) + w_20 = space.call_function(gdescriptor_object___setattr__, w_17, gs___dict__, w_dic_3) + w_21 = w_17 + goto = 13 + + if goto == 10: + w_22 = space.type(w_16) + w_etype, w_evalue = w_22, w_16 + goto = 12 + + if goto == 11: + w_23 = space.call_function(w_15, ) + w_24 = space.type(w_23) + w_etype, w_evalue = w_24, w_23 + goto = 12 + + if goto == 12: + raise gOperationError(w_etype, w_evalue) + + if goto == 13: + return w_21 fastf___new___1 = __new__ @@ -1702,85 +1980,123 @@ if goto == 3: w_4 = space.call_function(space.w_TypeError, gs___dict___must_be_set_to_a_dictio) - w_etype, w_evalue = space.w_TypeError, w_4 - goto = 12 + w_5 = space.type(w_4) + w_6 = space.issubtype(w_5, space.w_type) + v2 = space.is_true(w_6) + if v2 == True: + w_7 = w_4 + goto = 10 + else: + assert v2 == False + w_8 = w_4 + goto = 9 if goto == 4: - w_5 = space.call_function(gdescriptor_object___setattr__, w_2, gs___dict__, w_3) - w_6 = space.w_None - goto = 13 + w_9 = space.call_function(gdescriptor_object___setattr__, w_2, gs___dict__, w_3) + w_10 = space.w_None + goto = 17 if goto == 5: - w_7 = space.eq(w_name_1, gs___class__) - v2 = space.is_true(w_7) - if v2 == True: + w_11 = space.eq(w_name_1, gs___class__) + v3 = space.is_true(w_11) + if v3 == True: w_self_3, w_value_3 = w_self_2, w_value_2 goto = 6 else: - assert v2 == False + assert v3 == False w_self_4, w_name_2, w_value_4 = w_self_2, w_name_1, w_value_2 - goto = 9 + goto = 13 if goto == 6: - w_8 = space.isinstance(w_value_3, gcls_classobj) - v3 = space.is_true(w_8) - if v3 == True: + w_12 = space.isinstance(w_value_3, gcls_classobj) + v4 = space.is_true(w_12) + if v4 == True: w_self_5, w_value_5 = w_self_3, w_value_3 goto = 8 else: - assert v3 == False + assert v4 == False goto = 7 if goto == 7: - w_9 = space.call_function(space.w_TypeError, gs___class___must_be_set_to_a_class) - w_etype, w_evalue = space.w_TypeError, w_9 - goto = 12 + w_13 = space.call_function(space.w_TypeError, gs___class___must_be_set_to_a_class) + w_14 = space.type(w_13) + w_15 = space.issubtype(w_14, space.w_type) + v5 = space.is_true(w_15) + if v5 == True: + w_16 = w_13 + goto = 12 + else: + assert v5 == False + w_17 = w_13 + goto = 11 if goto == 8: - w_10 = space.getattr(gdescriptor_instance__class, gs___set__) - w_11 = space.call_function(w_10, w_self_5, w_value_5) - w_6 = space.w_None - goto = 13 + w_18 = space.getattr(gdescriptor_instance__class, gs___set__) + w_19 = space.call_function(w_18, w_self_5, w_value_5) + w_10 = space.w_None + goto = 17 if goto == 9: - _args = gateway.Arguments.fromshape(space, (2, ('exc',), False, False), [w_self_4, gs___setattr__, space.w_False]) - w_12 = space.call_args(gfunc_instance_getattr1, _args) - w_13 = space.is_(w_12, space.w_None) - v4 = space.is_true(w_13) - if v4 == True: - w_name_3, w_14, w_15 = w_name_2, w_value_4, w_self_4 - goto = 11 - else: - assert v4 == False - w_16, w_17, w_18 = w_12, w_name_2, w_value_4 - goto = 10 + w_20 = space.type(w_8) + w_etype, w_evalue = w_20, w_8 + goto = 16 if goto == 10: - w_19 = space.call_function(w_16, w_17, w_18) - w_6 = space.w_None - goto = 13 + w_21 = space.call_function(w_7, ) + w_22 = space.type(w_21) + w_etype, w_evalue = w_22, w_21 + goto = 16 if goto == 11: - w_20 = space.getattr(w_15, gs___dict__) - w_21 = space.setitem(w_20, w_name_3, w_14) - w_6 = space.w_None - goto = 13 + w_23 = space.type(w_17) + w_etype, w_evalue = w_23, w_17 + goto = 16 if goto == 12: - raise gOperationError(w_etype, w_evalue) + w_24 = space.call_function(w_16, ) + w_25 = space.type(w_24) + w_etype, w_evalue = w_25, w_24 + goto = 16 if goto == 13: - return w_6 + _args = gateway.Arguments.fromshape(space, (2, ('exc',), False, False), [w_self_4, gs___setattr__, space.w_False]) + w_26 = space.call_args(gfunc_instance_getattr1, _args) + w_27 = space.is_(w_26, space.w_None) + v6 = space.is_true(w_27) + if v6 == True: + w_name_3, w_28, w_29 = w_name_2, w_value_4, w_self_4 + goto = 15 + else: + assert v6 == False + w_30, w_31, w_32 = w_26, w_name_2, w_value_4 + goto = 14 - fastf_instance___setattr__ = __setattr__ + if goto == 14: + w_33 = space.call_function(w_30, w_31, w_32) + w_10 = space.w_None + goto = 17 -##SECTION## -## filename 'lib/_classobj.py' -## function '__delattr__' -## firstlineno 294 -##SECTION## -# global declarations -# global object g2tuple_2 + if goto == 15: + w_34 = space.getattr(w_29, gs___dict__) + w_35 = space.setitem(w_34, w_name_3, w_28) + w_10 = space.w_None + goto = 17 + + if goto == 16: + raise gOperationError(w_etype, w_evalue) + + if goto == 17: + return w_10 + + fastf_instance___setattr__ = __setattr__ + +##SECTION## +## filename 'lib/_classobj.py' +## function '__delattr__' +## firstlineno 294 +##SECTION## +# global declarations +# global object g2tuple_2 # global object gs__s_instance_has_no_attribute___s def __delattr__(space, __args__): @@ -1810,7 +2126,7 @@ if goto == 2: w_3 = fastf_instance___setattr__(space, w_1, w_2, space.w_None) w_4 = space.w_None - goto = 8 + goto = 10 if goto == 3: _args = gateway.Arguments.fromshape(space, (2, ('exc',), False, False), [w_self_1, gs___delattr__, space.w_False]) @@ -1828,15 +2144,16 @@ if goto == 4: w_9 = space.call_function(w_7, w_8) w_4 = space.w_None - goto = 8 + goto = 10 if goto == 5: w_10 = space.getattr(w_self_2, gs___dict__) try: w_11 = space.delitem(w_10, w_name_2) w_4 = space.w_None - goto = 8 + goto = 10 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_KeyError)): w_name_3, w_12 = w_name_2, w_self_2 goto = 6 @@ -1848,13 +2165,32 @@ w_15 = space.newtuple([w_14, w_name_3]) w_16 = space.mod(gs__s_instance_has_no_attribute___s, w_15) w_17 = space.call_function(space.w_AttributeError, w_16) - w_etype, w_evalue = space.w_AttributeError, w_17 - goto = 7 + w_18 = space.type(w_17) + w_19 = space.issubtype(w_18, space.w_type) + v2 = space.is_true(w_19) + if v2 == True: + w_20 = w_17 + goto = 8 + else: + assert v2 == False + w_21 = w_17 + goto = 7 if goto == 7: - raise gOperationError(w_etype, w_evalue) + w_22 = space.type(w_21) + w_etype, w_evalue = w_22, w_21 + goto = 9 if goto == 8: + w_23 = space.call_function(w_20, ) + w_24 = space.type(w_23) + w_etype, w_evalue = w_24, w_23 + goto = 9 + + if goto == 9: + raise gOperationError(w_etype, w_evalue) + + if goto == 10: return w_4 fastf_instance___delattr__ = __delattr__ @@ -1886,6 +2222,7 @@ w_1 = w_0 goto = 4 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_self_1, w_2, w_3 = w_self, e.w_type, e.w_value goto = 2 @@ -1961,6 +2298,7 @@ w_1 = w_0 goto = 4 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_self_1, w_2, w_3 = w_self, e.w_type, e.w_value goto = 2 @@ -2035,82 +2373,111 @@ w_2 = space.call_function(gfunc_instance_getattr1, w_self, gs___hash__, space.w_False) v0 = space.is_true(w_0) if v0 == True: - w_self_1, w__hash, w_3 = w_self, w_2, w_0 - goto = 2 + w_self_1, w__hash = w_self, w_2 + goto = 3 else: assert v0 == False - w_self_1, w__hash, w_3 = w_self, w_2, w_1 + w_self_2, w__hash_1, w_3 = w_self, w_2, w_1 goto = 2 if goto == 2: v1 = space.is_true(w_3) if v1 == True: - w_self_2, w__hash_1 = w_self_1, w__hash + w_self_1, w__hash = w_self_2, w__hash_1 goto = 3 else: assert v1 == False - w_self_3, w__hash_2, w_4 = w_self_1, w__hash, w_3 - goto = 4 + w_self_3, w__hash_2 = w_self_2, w__hash_1 + goto = 5 if goto == 3: - v2 = space.is_true(w__hash_1) + v2 = space.is_true(w__hash) if v2 == True: - w_self_4, w__hash_3 = w_self_2, w__hash_1 - goto = 6 + w_self_3, w__hash_2 = w_self_1, w__hash + goto = 5 else: assert v2 == False - goto = 5 + goto = 4 if goto == 4: - v3 = space.is_true(w_4) + w_4 = space.call_function(space.w_TypeError, gs_unhashable_instance) + w_5 = space.type(w_4) + w_6 = space.issubtype(w_5, space.w_type) + v3 = space.is_true(w_6) if v3 == True: - goto = 5 + w_7 = w_4 + goto = 8 else: assert v3 == False - w_self_4, w__hash_3 = w_self_3, w__hash_2 - goto = 6 + w_8 = w_4 + goto = 7 if goto == 5: - w_5 = space.call_function(space.w_TypeError, gs_unhashable_instance) - w_etype, w_evalue = space.w_TypeError, w_5 - goto = 10 - - if goto == 6: - v4 = space.is_true(w__hash_3) + v4 = space.is_true(w__hash_2) if v4 == True: - w_6 = w__hash_3 - goto = 7 + w_9 = w__hash_2 + goto = 6 else: assert v4 == False - w_7 = w_self_4 - goto = 9 + w_10 = w_self_3 + goto = 12 - if goto == 7: - w_8 = space.call_function(w_6, ) - w_9 = space.isinstance(w_8, space.w_int) - v5 = space.is_true(w_9) + if goto == 6: + w_11 = space.call_function(w_9, ) + w_12 = space.isinstance(w_11, space.w_int) + v5 = space.is_true(w_12) if v5 == True: - w_10 = w_8 - goto = 11 + w_13 = w_11 + goto = 14 else: assert v5 == False - goto = 8 + goto = 9 + + if goto == 7: + w_14 = space.type(w_8) + w_etype, w_evalue = w_14, w_8 + goto = 13 if goto == 8: - w_11 = space.call_function(space.w_TypeError, gs___hash_____should_return_an_int) - w_etype, w_evalue = space.w_TypeError, w_11 - goto = 10 + w_15 = space.call_function(w_7, ) + w_16 = space.type(w_15) + w_etype, w_evalue = w_16, w_15 + goto = 13 if goto == 9: - w_12 = space.id(w_7) - w_10 = w_12 - goto = 11 + w_17 = space.call_function(space.w_TypeError, gs___hash_____should_return_an_int) + w_18 = space.type(w_17) + w_19 = space.issubtype(w_18, space.w_type) + v6 = space.is_true(w_19) + if v6 == True: + w_20 = w_17 + goto = 11 + else: + assert v6 == False + w_21 = w_17 + goto = 10 if goto == 10: - raise gOperationError(w_etype, w_evalue) + w_22 = space.type(w_21) + w_etype, w_evalue = w_22, w_21 + goto = 13 if goto == 11: - return w_10 + w_23 = space.call_function(w_20, ) + w_24 = space.type(w_23) + w_etype, w_evalue = w_24, w_23 + goto = 13 + + if goto == 12: + w_25 = space.id(w_10) + w_13 = w_25 + goto = 14 + + if goto == 13: + raise gOperationError(w_etype, w_evalue) + + if goto == 14: + return w_13 fastf_instance___hash__ = __hash__ @@ -2146,7 +2513,7 @@ goto = 2 else: assert v0 == False - goto = 4 + goto = 8 if goto == 2: w_3 = space.lt(w_ret, gi_0) @@ -2156,22 +2523,62 @@ else: assert v1 == False w_4 = w_ret - goto = 6 + goto = 10 if goto == 3: w_5 = space.call_function(space.w_ValueError, gs___len_____should_return____0) - w_etype, w_evalue = space.w_ValueError, w_5 - goto = 5 + w_6 = space.type(w_5) + w_7 = space.issubtype(w_6, space.w_type) + v2 = space.is_true(w_7) + if v2 == True: + w_8 = w_5 + goto = 7 + else: + assert v2 == False + w_9 = w_5 + goto = 6 if goto == 4: - w_6 = space.call_function(space.w_TypeError, gs___len_____should_return_an_int) - w_etype, w_evalue = space.w_TypeError, w_6 - goto = 5 + w_10 = space.type(w_11) + w_etype, w_evalue = w_10, w_11 + goto = 9 if goto == 5: - raise gOperationError(w_etype, w_evalue) + w_13 = space.call_function(w_12, ) + w_14 = space.type(w_13) + w_etype, w_evalue = w_14, w_13 + goto = 9 if goto == 6: + w_15 = space.type(w_9) + w_etype, w_evalue = w_15, w_9 + goto = 9 + + if goto == 7: + w_16 = space.call_function(w_8, ) + w_17 = space.type(w_16) + w_etype, w_evalue = w_17, w_16 + goto = 9 + + if goto == 8: + w_18 = space.call_function(space.w_TypeError, gs___len_____should_return_an_int) + w_19 = space.type(w_18) + w_20 = space.issubtype(w_19, space.w_type) + v3 = space.is_true(w_20) + if v3 == True: + w_12 = w_18 + goto = 5 + continue + else: + assert v3 == False + w_11 = w_18 + goto = 4 + continue + + if goto == 9: + raise gOperationError(w_etype, w_evalue) + + if goto == 10: return w_4 fastf_instance___len__ = __len__ @@ -2205,51 +2612,47 @@ goto = 2 else: assert v0 == False - w_self_2, w_key_2, w_1 = w_self, w_key, w_0 - goto = 3 + w_key_2, w_1 = w_key, w_self + goto = 5 if goto == 2: w_2 = space.getattr(w_key_1, gs_step) w_3 = space.is_(w_2, space.w_None) - w_self_2, w_key_2, w_1 = w_self_1, w_key_1, w_3 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_1) + v1 = space.is_true(w_3) if v1 == True: - w_self_3, w_key_3 = w_self_2, w_key_2 - goto = 4 + w_self_2, w_key_3 = w_self_1, w_key_1 + goto = 3 else: assert v1 == False - w_key_4, w_4 = w_key_2, w_self_2 - goto = 6 + w_key_2, w_1 = w_key_1, w_self_1 + goto = 5 - if goto == 4: - w_5 = space.call_function(gfunc_instance_getattr1, w_self_3, gs___getslice__, space.w_False) - v2 = space.is_true(w_5) + if goto == 3: + w_4 = space.call_function(gfunc_instance_getattr1, w_self_2, gs___getslice__, space.w_False) + v2 = space.is_true(w_4) if v2 == True: - w_key_5, w_6 = w_key_3, w_5 - goto = 5 + w_key_4, w_5 = w_key_3, w_4 + goto = 4 else: assert v2 == False - w_key_4, w_4 = w_key_3, w_self_3 - goto = 6 + w_key_2, w_1 = w_key_3, w_self_2 + goto = 5 + + if goto == 4: + w_6 = space.getattr(w_key_4, gs_start) + w_7 = space.getattr(w_key_4, gs_stop) + w_8 = space.call_function(w_5, w_6, w_7) + w_9 = w_8 + goto = 6 if goto == 5: - w_7 = space.getattr(w_key_5, gs_start) - w_8 = space.getattr(w_key_5, gs_stop) - w_9 = space.call_function(w_6, w_7, w_8) - w_10 = w_9 - goto = 7 + w_10 = space.call_function(gfunc_instance_getattr1, w_1, gs___getitem__) + w_11 = space.call_function(w_10, w_key_2) + w_9 = w_11 + goto = 6 if goto == 6: - w_11 = space.call_function(gfunc_instance_getattr1, w_4, gs___getitem__) - w_12 = space.call_function(w_11, w_key_4) - w_10 = w_12 - goto = 7 - - if goto == 7: - return w_10 + return w_9 fastf_instance___getitem__ = __getitem__ @@ -2285,53 +2688,48 @@ goto = 2 else: assert v0 == False - w_self_2, w_key_2, w_value_2, w_1 = w_self, w_key, w_value, w_0 - goto = 3 + w_key_2, w_value_2, w_1 = w_key, w_value, w_self + goto = 5 if goto == 2: w_2 = space.getattr(w_key_1, gs_step) w_3 = space.is_(w_2, space.w_None) - (w_self_2, w_key_2, w_value_2, w_1) = (w_self_1, w_key_1, - w_value_1, w_3) - goto = 3 - - if goto == 3: - v1 = space.is_true(w_1) + v1 = space.is_true(w_3) if v1 == True: - w_self_3, w_key_3, w_value_3 = w_self_2, w_key_2, w_value_2 - goto = 4 + w_self_2, w_key_3, w_value_3 = w_self_1, w_key_1, w_value_1 + goto = 3 else: assert v1 == False - w_key_4, w_value_4, w_4 = w_key_2, w_value_2, w_self_2 - goto = 6 + w_key_2, w_value_2, w_1 = w_key_1, w_value_1, w_self_1 + goto = 5 - if goto == 4: - w_5 = space.call_function(gfunc_instance_getattr1, w_self_3, gs___setslice__, space.w_False) - v2 = space.is_true(w_5) + if goto == 3: + w_4 = space.call_function(gfunc_instance_getattr1, w_self_2, gs___setslice__, space.w_False) + v2 = space.is_true(w_4) if v2 == True: - (w_self_4, w_key_5, w_value_5, w_6) = (w_self_3, w_key_3, - w_value_3, w_5) - goto = 5 + (w_self_3, w_key_4, w_value_4, w_5) = (w_self_2, w_key_3, + w_value_3, w_4) + goto = 4 else: assert v2 == False - w_key_4, w_value_4, w_4 = w_key_3, w_value_3, w_self_3 - goto = 6 + w_key_2, w_value_2, w_1 = w_key_3, w_value_3, w_self_2 + goto = 5 + + if goto == 4: + w_6 = space.getattr(w_key_4, gs_start) + w_7 = space.getattr(w_key_4, gs_stop) + w_8 = space.call_function(w_5, w_6, w_7, w_value_4) + w_key_2, w_value_2, w_1 = w_key_4, w_value_4, w_self_3 + goto = 5 if goto == 5: - w_7 = space.getattr(w_key_5, gs_start) - w_8 = space.getattr(w_key_5, gs_stop) - w_9 = space.call_function(w_6, w_7, w_8, w_value_5) - w_key_4, w_value_4, w_4 = w_key_5, w_value_5, w_self_4 + w_9 = space.call_function(gfunc_instance_getattr1, w_1, gs___setitem__) + w_10 = space.call_function(w_9, w_key_2, w_value_2) + w_11 = space.w_None goto = 6 if goto == 6: - w_10 = space.call_function(gfunc_instance_getattr1, w_4, gs___setitem__) - w_11 = space.call_function(w_10, w_key_4, w_value_4) - w_12 = space.w_None - goto = 7 - - if goto == 7: - return w_12 + return w_11 fastf_instance___setitem__ = __setitem__ @@ -2364,51 +2762,47 @@ goto = 2 else: assert v0 == False - w_self_2, w_key_2, w_1 = w_self, w_key, w_0 - goto = 3 + w_key_2, w_1 = w_key, w_self + goto = 5 if goto == 2: w_2 = space.getattr(w_key_1, gs_step) w_3 = space.is_(w_2, space.w_None) - w_self_2, w_key_2, w_1 = w_self_1, w_key_1, w_3 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_1) + v1 = space.is_true(w_3) if v1 == True: - w_self_3, w_key_3 = w_self_2, w_key_2 - goto = 4 + w_self_2, w_key_3 = w_self_1, w_key_1 + goto = 3 else: assert v1 == False - w_key_4, w_4 = w_key_2, w_self_2 - goto = 6 + w_key_2, w_1 = w_key_1, w_self_1 + goto = 5 - if goto == 4: - w_5 = space.call_function(gfunc_instance_getattr1, w_self_3, gs___delslice__, space.w_False) - v2 = space.is_true(w_5) + if goto == 3: + w_4 = space.call_function(gfunc_instance_getattr1, w_self_2, gs___delslice__, space.w_False) + v2 = space.is_true(w_4) if v2 == True: - w_self_4, w_key_5, w_6 = w_self_3, w_key_3, w_5 - goto = 5 + w_self_3, w_key_4, w_5 = w_self_2, w_key_3, w_4 + goto = 4 else: assert v2 == False - w_key_4, w_4 = w_key_3, w_self_3 - goto = 6 + w_key_2, w_1 = w_key_3, w_self_2 + goto = 5 + + if goto == 4: + w_6 = space.getattr(w_key_4, gs_start) + w_7 = space.getattr(w_key_4, gs_stop) + w_8 = space.call_function(w_5, w_6, w_7) + w_key_2, w_1 = w_key_4, w_self_3 + goto = 5 if goto == 5: - w_7 = space.getattr(w_key_5, gs_start) - w_8 = space.getattr(w_key_5, gs_stop) - w_9 = space.call_function(w_6, w_7, w_8) - w_key_4, w_4 = w_key_5, w_self_4 + w_9 = space.call_function(gfunc_instance_getattr1, w_1, gs___delitem__) + w_10 = space.call_function(w_9, w_key_2) + w_11 = space.w_None goto = 6 if goto == 6: - w_10 = space.call_function(gfunc_instance_getattr1, w_4, gs___delitem__) - w_11 = space.call_function(w_10, w_key_4) - w_12 = space.w_None - goto = 7 - - if goto == 7: - return w_12 + return w_11 fastf_instance___delitem__ = __delitem__ @@ -2443,7 +2837,7 @@ if goto == 2: w_4 = space.call_function(w_1, w_2) - w_5 = space.call_function(space.w_bool, w_4) + w_5 = space.nonzero(w_4) w_6 = w_5 goto = 6 @@ -2458,6 +2852,7 @@ w_obj_3, w_10, w_11 = w_obj_2, w_8, w_9 goto = 5 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_StopIteration)): w_6 = space.w_False goto = 6 @@ -2803,52 +3198,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___add__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___add__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.add(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.add(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___add__ = __add__ @@ -2875,52 +3268,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___and__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___and__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.and_(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.and_(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___and__ = __and__ @@ -2947,52 +3338,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___div__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___div__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.div(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.div(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___div__ = __div__ @@ -3019,52 +3408,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___divmod__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___divmod__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.divmod(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.divmod(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___divmod__ = __divmod__ @@ -3091,52 +3478,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___floordiv__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___floordiv__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.floordiv(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.floordiv(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___floordiv__ = __floordiv__ @@ -3163,52 +3548,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___lshift__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___lshift__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.lshift(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.lshift(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___lshift__ = __lshift__ @@ -3235,52 +3618,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___mod__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___mod__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.mod(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.mod(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___mod__ = __mod__ @@ -3307,52 +3688,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___mul__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___mul__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.mul(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.mul(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___mul__ = __mul__ @@ -3379,52 +3758,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___or__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___or__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.or_(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.or_(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___or__ = __or__ @@ -3451,52 +3828,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rshift__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rshift__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.rshift(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.rshift(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rshift__ = __rshift__ @@ -3523,52 +3898,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___sub__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___sub__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.sub(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.sub(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___sub__ = __sub__ @@ -3595,52 +3968,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___truediv__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___truediv__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.truediv(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.truediv(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___truediv__ = __truediv__ @@ -3670,52 +4041,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_self_1, w_other_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___xor__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___xor__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_0) + w_11 = space.getitem(w_coerced_1, gi_1) + w_12 = space.xor(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.xor(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___xor__ = __xor__ @@ -3742,52 +4111,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___radd__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___radd__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.add(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.add(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___radd__ = __radd__ @@ -3814,52 +4181,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rand__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rand__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.and_(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.and_(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rand__ = __rand__ @@ -3886,52 +4251,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rdiv__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rdiv__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.div(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.div(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rdiv__ = __rdiv__ @@ -3958,52 +4321,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rdivmod__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rdivmod__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.divmod(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.divmod(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rdivmod__ = __rdivmod__ @@ -4030,52 +4391,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rfloordiv__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rfloordiv__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.floordiv(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.floordiv(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rfloordiv__ = __rfloordiv__ @@ -4102,52 +4461,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rlshift__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rlshift__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.lshift(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.lshift(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rlshift__ = __rlshift__ @@ -4174,52 +4531,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rmod__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rmod__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.mod(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.mod(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rmod__ = __rmod__ @@ -4246,52 +4601,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rmul__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rmul__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.mul(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.mul(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rmul__ = __rmul__ @@ -4318,52 +4671,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___ror__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___ror__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.or_(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.or_(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___ror__ = __ror__ @@ -4390,52 +4741,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rrshift__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rrshift__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.rshift(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.rshift(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rrshift__ = __rrshift__ @@ -4462,52 +4811,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rsub__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rsub__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.sub(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.sub(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rsub__ = __rsub__ @@ -4534,52 +4881,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rtruediv__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rtruediv__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 + + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.truediv(w_10, w_11) + w_8 = w_12 + goto = 6 if goto == 6: - w_14 = space.truediv(w_7, w_8) - w_12 = w_14 - goto = 7 - - if goto == 7: - return w_12 + return w_8 fastf_instance___rtruediv__ = __rtruediv__ @@ -4606,52 +4951,50 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_self_1, w_other_1, w_2 = w_self, w_other, w_1 + w_other_1, w_2 = w_other, w_self goto = 3 else: assert v0 == False - w_self_2, w_other_2, w_3 = w_self, w_other, w_0 + w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 goto = 2 if goto == 2: - w_4 = space.getitem(w_3, gi_0) - w_5 = space.is_(w_4, w_self_2) - w_self_1, w_other_1, w_2 = w_self_2, w_other_2, w_5 - goto = 3 - - if goto == 3: - v1 = space.is_true(w_2) + w_3 = space.getitem(w_coerced, gi_0) + w_4 = space.is_(w_3, w_self_1) + v1 = space.is_true(w_4) if v1 == True: - w_other_3, w_6 = w_other_1, w_self_1 - goto = 4 + w_other_1, w_2 = w_other_2, w_self_1 + goto = 3 else: assert v1 == False - w_7, w_8 = w_other_1, w_self_1 - goto = 6 + w_coerced_1 = w_coerced + goto = 5 - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_6, gs___rxor__, space.w_False) - v2 = space.is_true(w_9) + if goto == 3: + w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rxor__, space.w_False) + v2 = space.is_true(w_5) if v2 == True: - w_10, w_11 = w_9, w_other_3 - goto = 5 + w_6, w_7 = w_5, w_other_1 + goto = 4 else: assert v2 == False - w_12 = space.w_NotImplemented - goto = 7 + w_8 = space.w_NotImplemented + goto = 6 - if goto == 5: - w_13 = space.call_function(w_10, w_11) - w_12 = w_13 - goto = 7 + if goto == 4: + w_9 = space.call_function(w_6, w_7) + w_8 = w_9 + goto = 6 - if goto == 6: - w_14 = space.xor(w_7, w_8) - w_12 = w_14 - goto = 7 + if goto == 5: + w_10 = space.getitem(w_coerced_1, gi_1) + w_11 = space.getitem(w_coerced_1, gi_0) + w_12 = space.xor(w_10, w_11) + w_8 = w_12 + goto = 6 - if goto == 7: - return w_12 + if goto == 6: + return w_8 fastf_instance___rxor__ = __rxor__ @@ -5189,75 +5532,73 @@ else: assert v0 == False w_other_2, w_modulo_1, w_1 = w_other, w_modulo, w_self - goto = 8 + goto = 7 if goto == 2: w_2 = fastf__coerce(space, w_self_1, w_other_1) w_3 = space.is_(w_2, space.w_None) v1 = space.is_true(w_3) if v1 == True: - w_self_2, w_other_3, w_4 = w_self_1, w_other_1, w_3 + w_other_3, w_4 = w_other_1, w_self_1 goto = 4 else: assert v1 == False - w_self_3, w_other_4, w_5 = w_self_1, w_other_1, w_2 + w_self_2, w_other_4, w_coerced = w_self_1, w_other_1, w_2 goto = 3 if goto == 3: - w_6 = space.getitem(w_5, gi_0) - w_7 = space.is_(w_6, w_self_3) - w_self_2, w_other_3, w_4 = w_self_3, w_other_4, w_7 - goto = 4 - - if goto == 4: - v2 = space.is_true(w_4) + w_5 = space.getitem(w_coerced, gi_0) + w_6 = space.is_(w_5, w_self_2) + v2 = space.is_true(w_6) if v2 == True: - w_other_5, w_8 = w_other_3, w_self_2 - goto = 5 + w_other_3, w_4 = w_other_4, w_self_2 + goto = 4 else: assert v2 == False - w_9, w_10 = w_self_2, w_other_3 - goto = 7 + w_coerced_1 = w_coerced + goto = 6 - if goto == 5: - w_11 = space.call_function(gfunc_instance_getattr1, w_8, gs___pow__, space.w_False) - v3 = space.is_true(w_11) + if goto == 4: + w_7 = space.call_function(gfunc_instance_getattr1, w_4, gs___pow__, space.w_False) + v3 = space.is_true(w_7) if v3 == True: - w_12, w_13 = w_11, w_other_5 - goto = 6 + w_8, w_9 = w_7, w_other_3 + goto = 5 else: assert v3 == False - w_14 = space.w_NotImplemented - goto = 10 + w_10 = space.w_NotImplemented + goto = 9 + + if goto == 5: + w_11 = space.call_function(w_8, w_9) + w_10 = w_11 + goto = 9 if goto == 6: - w_15 = space.call_function(w_12, w_13) - w_14 = w_15 - goto = 10 + w_12 = space.getitem(w_coerced_1, gi_0) + w_13 = space.getitem(w_coerced_1, gi_1) + w_14 = space.pow(w_12, w_13, space.w_None) + w_10 = w_14 + goto = 9 if goto == 7: - w_16 = space.pow(w_9, w_10, space.w_None) - w_14 = w_16 - goto = 10 - - if goto == 8: - w_17 = space.call_function(gfunc_instance_getattr1, w_1, gs___pow__, space.w_False) - v4 = space.is_true(w_17) + w_15 = space.call_function(gfunc_instance_getattr1, w_1, gs___pow__, space.w_False) + v4 = space.is_true(w_15) if v4 == True: - w_18, w_19, w_20 = w_17, w_other_2, w_modulo_1 - goto = 9 + w_16, w_17, w_18 = w_15, w_other_2, w_modulo_1 + goto = 8 else: assert v4 == False - w_14 = space.w_NotImplemented - goto = 10 + w_10 = space.w_NotImplemented + goto = 9 - if goto == 9: - w_21 = space.call_function(w_18, w_19, w_20) - w_14 = w_21 - goto = 10 + if goto == 8: + w_19 = space.call_function(w_16, w_17, w_18) + w_10 = w_19 + goto = 9 - if goto == 10: - return w_14 + if goto == 9: + return w_10 fastf_instance___pow__ = __pow__ @@ -5288,75 +5629,73 @@ else: assert v0 == False w_other_2, w_modulo_1, w_1 = w_other, w_modulo, w_self - goto = 8 + goto = 7 if goto == 2: w_2 = fastf__coerce(space, w_self_1, w_other_1) w_3 = space.is_(w_2, space.w_None) v1 = space.is_true(w_3) if v1 == True: - w_self_2, w_other_3, w_4 = w_self_1, w_other_1, w_3 + w_other_3, w_4 = w_other_1, w_self_1 goto = 4 else: assert v1 == False - w_self_3, w_other_4, w_5 = w_self_1, w_other_1, w_2 + w_self_2, w_other_4, w_coerced = w_self_1, w_other_1, w_2 goto = 3 if goto == 3: - w_6 = space.getitem(w_5, gi_0) - w_7 = space.is_(w_6, w_self_3) - w_self_2, w_other_3, w_4 = w_self_3, w_other_4, w_7 - goto = 4 - - if goto == 4: - v2 = space.is_true(w_4) + w_5 = space.getitem(w_coerced, gi_0) + w_6 = space.is_(w_5, w_self_2) + v2 = space.is_true(w_6) if v2 == True: - w_other_5, w_8 = w_other_3, w_self_2 - goto = 5 + w_other_3, w_4 = w_other_4, w_self_2 + goto = 4 else: assert v2 == False - w_9, w_10 = w_other_3, w_self_2 - goto = 7 + w_coerced_1 = w_coerced + goto = 6 - if goto == 5: - w_11 = space.call_function(gfunc_instance_getattr1, w_8, gs___rpow__, space.w_False) - v3 = space.is_true(w_11) + if goto == 4: + w_7 = space.call_function(gfunc_instance_getattr1, w_4, gs___rpow__, space.w_False) + v3 = space.is_true(w_7) if v3 == True: - w_12, w_13 = w_11, w_other_5 - goto = 6 + w_8, w_9 = w_7, w_other_3 + goto = 5 else: assert v3 == False - w_14 = space.w_NotImplemented - goto = 10 + w_10 = space.w_NotImplemented + goto = 9 + + if goto == 5: + w_11 = space.call_function(w_8, w_9) + w_10 = w_11 + goto = 9 if goto == 6: - w_15 = space.call_function(w_12, w_13) - w_14 = w_15 - goto = 10 + w_12 = space.getitem(w_coerced_1, gi_1) + w_13 = space.getitem(w_coerced_1, gi_0) + w_14 = space.pow(w_12, w_13, space.w_None) + w_10 = w_14 + goto = 9 if goto == 7: - w_16 = space.pow(w_9, w_10, space.w_None) - w_14 = w_16 - goto = 10 - - if goto == 8: - w_17 = space.call_function(gfunc_instance_getattr1, w_1, gs___rpow__, space.w_False) - v4 = space.is_true(w_17) + w_15 = space.call_function(gfunc_instance_getattr1, w_1, gs___rpow__, space.w_False) + v4 = space.is_true(w_15) if v4 == True: - w_18, w_19, w_20 = w_17, w_other_2, w_modulo_1 - goto = 9 + w_16, w_17, w_18 = w_15, w_other_2, w_modulo_1 + goto = 8 else: assert v4 == False - w_14 = space.w_NotImplemented - goto = 10 + w_10 = space.w_NotImplemented + goto = 9 - if goto == 9: - w_21 = space.call_function(w_18, w_19, w_20) - w_14 = w_21 - goto = 10 + if goto == 8: + w_19 = space.call_function(w_16, w_17, w_18) + w_10 = w_19 + goto = 9 - if goto == 10: - return w_14 + if goto == 9: + return w_10 fastf_instance___rpow__ = __rpow__ @@ -5402,7 +5741,7 @@ else: assert v1 == False w_4 = space.w_True - goto = 9 + goto = 13 if goto == 3: w_5 = space.call_function(w_1, ) @@ -5413,7 +5752,7 @@ goto = 4 else: assert v2 == False - goto = 7 + goto = 11 if goto == 4: w_7 = space.lt(w_ret, gi_0) @@ -5423,27 +5762,67 @@ else: assert v3 == False w_8 = w_ret - goto = 6 + goto = 10 if goto == 5: w_9 = space.call_function(space.w_ValueError, gs___nonzero_____should_return____0) - w_etype, w_evalue = space.w_ValueError, w_9 - goto = 8 + w_10 = space.type(w_9) + w_11 = space.issubtype(w_10, space.w_type) + v4 = space.is_true(w_11) + if v4 == True: + w_12 = w_9 + goto = 9 + else: + assert v4 == False + w_13 = w_9 + goto = 8 if goto == 6: - w_10 = space.gt(w_8, gi_0) - w_4 = w_10 - goto = 9 + w_14 = space.type(w_15) + w_etype, w_evalue = w_14, w_15 + goto = 12 if goto == 7: - w_11 = space.call_function(space.w_TypeError, gs___nonzero_____should_return_an_i) - w_etype, w_evalue = space.w_TypeError, w_11 - goto = 8 + w_17 = space.call_function(w_16, ) + w_18 = space.type(w_17) + w_etype, w_evalue = w_18, w_17 + goto = 12 if goto == 8: - raise gOperationError(w_etype, w_evalue) + w_19 = space.type(w_13) + w_etype, w_evalue = w_19, w_13 + goto = 12 if goto == 9: + w_20 = space.call_function(w_12, ) + w_21 = space.type(w_20) + w_etype, w_evalue = w_21, w_20 + goto = 12 + + if goto == 10: + w_22 = space.gt(w_8, gi_0) + w_4 = w_22 + goto = 13 + + if goto == 11: + w_23 = space.call_function(space.w_TypeError, gs___nonzero_____should_return_an_i) + w_24 = space.type(w_23) + w_25 = space.issubtype(w_24, space.w_type) + v5 = space.is_true(w_25) + if v5 == True: + w_16 = w_23 + goto = 7 + continue + else: + assert v5 == False + w_15 = w_23 + goto = 6 + continue + + if goto == 12: + raise gOperationError(w_etype, w_evalue) + + if goto == 13: return w_4 fastf_instance___nonzero__ = __nonzero__ @@ -5474,7 +5853,7 @@ v0 = space.is_true(w_0) if v0 == True: w_1, w_2, w_3 = w_0, w_args, w_kwds - goto = 3 + goto = 6 else: assert v0 == False w_4 = w_self @@ -5484,20 +5863,50 @@ w_5 = space.getattr(w_4, gs___class__) w_6 = space.getattr(w_5, gs___name__) w_7 = space.mod(gs__s_instance_has_no___call___meth, w_6) - w_etype, w_evalue = space.w_AttributeError, w_7 - goto = 4 + w_8 = space.is_(w_7, space.w_None) + v1 = space.is_true(w_8) + if v1 == True: + goto = 3 + else: + assert v1 == False + w_9 = w_7 + goto = 4 if goto == 3: - _args = gateway.Arguments.fromshape(space, (0, (), True, True), [w_2, w_3]) - w_8 = space.call_args(w_1, _args) - w_9 = w_8 - goto = 5 + w_10 = space.call_function(space.w_AttributeError, ) + w_11 = space.type(w_10) + w_etype, w_evalue = w_11, w_10 + goto = 7 if goto == 4: - raise gOperationError(w_etype, w_evalue) + w_12 = space.type(w_9) + w_13 = space.issubtype(w_12, space.w_AttributeError) + v2 = space.is_true(w_13) + if v2 == True: + w_etype, w_evalue = w_12, w_9 + goto = 7 + else: + assert v2 == False + w_14 = w_9 + goto = 5 if goto == 5: - return w_9 + w_15 = space.call_function(space.w_AttributeError, w_14) + w_16 = space.type(w_15) + w_etype, w_evalue = w_16, w_15 + goto = 7 + + if goto == 6: + _args = gateway.Arguments.fromshape(space, (0, (), True, True), [w_2, w_3]) + w_17 = space.call_args(w_1, _args) + w_18 = w_17 + goto = 8 + + if goto == 7: + raise gOperationError(w_etype, w_evalue) + + if goto == 8: + return w_18 fastf_instance___call__ = __call__ @@ -5525,6 +5934,7 @@ w_1, w_2 = w_0, w_other goto = 2 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5536,6 +5946,7 @@ w_6 = w_5 goto = 6 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5595,6 +6006,7 @@ w_1, w_2 = w_0, w_other goto = 2 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5606,6 +6018,7 @@ w_6 = w_5 goto = 6 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5665,6 +6078,7 @@ w_1, w_2 = w_0, w_other goto = 2 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5676,6 +6090,7 @@ w_6 = w_5 goto = 6 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5735,6 +6150,7 @@ w_1, w_2 = w_0, w_other goto = 2 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5746,6 +6162,7 @@ w_6 = w_5 goto = 6 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5805,6 +6222,7 @@ w_1, w_2 = w_0, w_other goto = 2 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5816,6 +6234,7 @@ w_6 = w_5 goto = 6 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5875,6 +6294,7 @@ w_1, w_2 = w_0, w_other goto = 2 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5886,6 +6306,7 @@ w_6 = w_5 goto = 6 except gOperationError, e: + e.normalize_exception(space) if space.is_true(space.issubtype(e.w_type, space.w_Exception)): w_3, w_4 = e.w_type, e.w_value goto = 3 @@ -5952,7 +6373,7 @@ else: assert v0 == False w_self_1 = w_self - goto = 4 + goto = 7 if goto == 2: w_2 = space.call_function(w_1, ) @@ -5960,40 +6381,74 @@ v1 = space.is_true(w_3) if v1 == True: w_4 = w_2 - goto = 7 + goto = 11 else: assert v1 == False w_5 = w_2 goto = 3 if goto == 3: - w_6 = space.call_function(space.w_type, w_5) + w_6 = space.type(w_5) w_7 = space.getattr(w_6, gs___name__) w_8 = space.mod(gs___iter___returned_non_iterator_o, w_7) - w_etype, w_evalue = space.w_TypeError, w_8 - goto = 6 - - if goto == 4: - w_9 = space.call_function(gfunc_instance_getattr1, w_self_1, gs___getitem__, space.w_False) + w_9 = space.is_(w_8, space.w_None) v2 = space.is_true(w_9) if v2 == True: - w_10 = w_self_1 - goto = 5 + goto = 4 else: assert v2 == False - (w_etype, w_evalue) = (space.w_TypeError, - gs_iteration_over_non_sequence) - goto = 6 + w_10 = w_8 + goto = 5 + + if goto == 4: + w_11 = space.call_function(space.w_TypeError, ) + w_12 = space.type(w_11) + w_etype, w_evalue = w_12, w_11 + goto = 10 if goto == 5: - w_11 = space.call_function(space.builtin.get('_seqiter'), w_10) - w_4 = w_11 - goto = 7 + w_13 = space.type(w_10) + w_14 = space.issubtype(w_13, space.w_TypeError) + v3 = space.is_true(w_14) + if v3 == True: + w_etype, w_evalue = w_13, w_10 + goto = 10 + else: + assert v3 == False + w_15 = w_10 + goto = 6 if goto == 6: - raise gOperationError(w_etype, w_evalue) + w_16 = space.call_function(space.w_TypeError, w_15) + w_17 = space.type(w_16) + w_etype, w_evalue = w_17, w_16 + goto = 10 if goto == 7: + w_18 = space.call_function(gfunc_instance_getattr1, w_self_1, gs___getitem__, space.w_False) + v4 = space.is_true(w_18) + if v4 == True: + w_19 = w_self_1 + goto = 9 + else: + assert v4 == False + goto = 8 + + if goto == 8: + w_20 = space.call_function(space.w_TypeError, gs_iteration_over_non_sequence) + w_21 = space.type(w_20) + w_etype, w_evalue = w_21, w_20 + goto = 10 + + if goto == 9: + w_22 = space.call_function(space.builtin.get('_seqiter'), w_19) + w_4 = w_22 + goto = 11 + + if goto == 10: + raise gOperationError(w_etype, w_evalue) + + if goto == 11: return w_4 fastf_instance___iter__ = __iter__ @@ -6024,23 +6479,27 @@ v0 = space.is_true(w_0) if v0 == True: w_1 = w_0 - goto = 2 + goto = 3 else: assert v0 == False - (w_etype, w_evalue) = (space.w_TypeError, - gs_instance_has_no_next___method) - goto = 3 + goto = 2 if goto == 2: - w_2 = space.call_function(w_1, ) - w_3 = w_2 + w_2 = space.call_function(space.w_TypeError, gs_instance_has_no_next___method) + w_3 = space.type(w_2) + w_etype, w_evalue = w_3, w_2 goto = 4 if goto == 3: - raise gOperationError(w_etype, w_evalue) + w_4 = space.call_function(w_1, ) + w_5 = w_4 + goto = 5 if goto == 4: - return w_3 + raise gOperationError(w_etype, w_evalue) + + if goto == 5: + return w_5 fastf_instance_next = next @@ -6050,8 +6509,8 @@ ## firstlineno 537 ##SECTION## # global declarations -# global object gs___cmp___must_return_int # global object gi_minus_1 +# global object gs___cmp___must_return_int def __cmp__(space, __args__): funcname = "__cmp__" @@ -6105,7 +6564,7 @@ if goto == 4: w_8 = space.cmp(w_6, w_7) w_9 = w_8 - goto = 16 + goto = 18 if goto == 5: w_10 = space.isinstance(w_v, gcls_instance) @@ -6115,114 +6574,124 @@ goto = 6 else: assert v3 == False - w_v_3, w_11 = w_v, w_w - goto = 10 + w_w_3, w_v_3 = w_w, w_v + goto = 11 if goto == 6: - w_12 = space.call_function(gfunc_instance_getattr1, w_v_2, gs___cmp__, space.w_False) - v4 = space.is_true(w_12) + w_11 = space.call_function(gfunc_instance_getattr1, w_v_2, gs___cmp__, space.w_False) + v4 = space.is_true(w_11) if v4 == True: - w_13, w_14 = w_12, w_w_2 + w_12, w_13 = w_11, w_w_2 goto = 7 else: assert v4 == False - w_v_3, w_11 = w_v_2, w_w_2 - goto = 10 + w_w_3, w_v_3 = w_w_2, w_v_2 + goto = 11 if goto == 7: - w_15 = space.call_function(w_13, w_14) - w_16 = space.isinstance(w_15, space.w_int) - v5 = space.is_true(w_16) + w_14 = space.call_function(w_12, w_13) + w_15 = space.isinstance(w_14, space.w_int) + v5 = space.is_true(w_15) if v5 == True: - w_res = w_15 + w_res = w_14 goto = 8 else: assert v5 == False - w_etype, w_evalue = space.w_TypeError, gs___cmp___must_return_int - goto = 15 + goto = 10 if goto == 8: - w_17 = space.gt(w_res, gi_0) - v6 = space.is_true(w_17) + w_16 = space.gt(w_res, gi_0) + v6 = space.is_true(w_16) if v6 == True: w_9 = gi_1 - goto = 16 + goto = 18 else: assert v6 == False - w_18 = w_res + w_17 = w_res goto = 9 if goto == 9: - w_19 = space.lt(w_18, gi_0) - v7 = space.is_true(w_19) + w_18 = space.lt(w_17, gi_0) + v7 = space.is_true(w_18) if v7 == True: w_9 = gi_minus_1 - goto = 16 + goto = 18 else: assert v7 == False w_9 = gi_0 - goto = 16 + goto = 18 if goto == 10: - w_20 = space.isinstance(w_11, gcls_instance) - v8 = space.is_true(w_20) + w_19 = space.call_function(space.w_TypeError, gs___cmp___must_return_int) + w_20 = space.type(w_19) + w_etype, w_evalue = w_20, w_19 + goto = 17 + + if goto == 11: + w_21 = space.isinstance(w_w_3, gcls_instance) + v8 = space.is_true(w_21) if v8 == True: - w_v_4 = w_v_3 - goto = 11 + w_v_4, w_22 = w_v_3, w_w_3 + goto = 12 else: assert v8 == False w_9 = space.w_NotImplemented - goto = 16 + goto = 18 - if goto == 11: - w_21 = space.call_function(gfunc_instance_getattr1, w_v_4, gs___cmp__, space.w_False) - v9 = space.is_true(w_21) + if goto == 12: + w_23 = space.call_function(gfunc_instance_getattr1, w_22, gs___cmp__, space.w_False) + v9 = space.is_true(w_23) if v9 == True: - w_22, w_23 = w_21, w_v_4 - goto = 12 + w_24, w_25 = w_23, w_v_4 + goto = 13 else: assert v9 == False w_9 = space.w_NotImplemented - goto = 16 + goto = 18 - if goto == 12: - w_24 = space.call_function(w_22, w_23) - w_25 = space.isinstance(w_24, space.w_int) - v10 = space.is_true(w_25) + if goto == 13: + w_26 = space.call_function(w_24, w_25) + w_27 = space.isinstance(w_26, space.w_int) + v10 = space.is_true(w_27) if v10 == True: - w_res_1 = w_24 - goto = 13 + w_res_1 = w_26 + goto = 14 else: assert v10 == False - w_etype, w_evalue = space.w_TypeError, gs___cmp___must_return_int - goto = 15 + goto = 16 - if goto == 13: - w_26 = space.gt(w_res_1, gi_0) - v11 = space.is_true(w_26) + if goto == 14: + w_28 = space.gt(w_res_1, gi_0) + v11 = space.is_true(w_28) if v11 == True: w_9 = gi_1 - goto = 16 + goto = 18 else: assert v11 == False - w_27 = w_res_1 - goto = 14 + w_29 = w_res_1 + goto = 15 - if goto == 14: - w_28 = space.lt(w_27, gi_0) - v12 = space.is_true(w_28) + if goto == 15: + w_30 = space.lt(w_29, gi_0) + v12 = space.is_true(w_30) if v12 == True: w_9 = gi_minus_1 - goto = 16 + goto = 18 else: assert v12 == False w_9 = gi_0 - goto = 16 + goto = 18 - if goto == 15: + if goto == 16: + w_31 = space.call_function(space.w_TypeError, gs___cmp___must_return_int) + w_32 = space.type(w_31) + w_etype, w_evalue = w_32, w_31 + goto = 17 + + if goto == 17: raise gOperationError(w_etype, w_evalue) - if goto == 16: + if goto == 18: return w_9 fastf_instance___cmp__ = __cmp__ @@ -6712,20 +7181,24 @@ gfunc_set_bases = space.wrap(gateway.interp2app(f_set_bases, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) gfunc_set_dict = space.wrap(gateway.interp2app(f_set_dict, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) gdescriptor_object___setattr__ = space.getattr(space.w_object, gs___setattr__) - gs___dict___must_be_a_dictionary_ob = space.wrap('__dict__ must be a dictionary object') - gs___bases___must_be_a_tuple_object = space.wrap('__bases__ must be a tuple object') - gs___bases___items_must_be_classes = space.wrap('__bases__ items must be classes') + gs___dict___must_be_a_dictionary_ob = space.wrap( +"""__dict__ must be a dictionary object""") + gs___bases___must_be_a_tuple_object = space.wrap( +"""__bases__ must be a tuple object""") + gs___bases___items_must_be_classes = space.wrap( +"""__bases__ items must be classes""") gdescriptor_classobj__bases = space.getattr(gcls_classobj, gs__bases) gs___set__ = space.wrap('__set__') - gs___name___must_be_a_string_object = space.wrap('__name__ must be a string object') + gs___name___must_be_a_string_object = space.wrap( +"""__name__ must be a string object""") gdescriptor_classobj__name = space.getattr(gcls_classobj, gs__name) gfunc_uid = space.wrap(gateway.interp2app(f_uid, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) gs__class__s__s_at_0x_x_ = space.wrap('') - gi_0 = space.newint(0) + gi_0 = space.wrap(0) glong_0x7fffffffL = space.wrap(0x7fffffffL) # XXX implement long! - gi_2 = space.newint(2) + gi_2 = space.wrap(2) gs___get__ = space.wrap('__get__') - gi_1 = space.newint(1) + gi_1 = space.wrap(1) gfunc_lookup = space.wrap(gateway.interp2app(f_lookup, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) gs_class__s_has_no_attribute__s = space.wrap('class %s has no attribute %s') gfunc_mro_lookup = space.wrap(gateway.interp2app(f_mro_lookup, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) @@ -6739,34 +7212,46 @@ gs___init__ = space.wrap('__init__') gs___init_____should_return_None = space.wrap('__init__() should return None') gs___class__ = space.wrap('__class__') - gs__s_instance_has_no_attribute__s = space.wrap('%s instance has no attribute %s') + gs__s_instance_has_no_attribute__s = space.wrap( +"""%s instance has no attribute %s""") gs_instance_has_no_next___method = space.wrap('instance has no next() method') gfunc__coerce = space.wrap(gateway.interp2app(f__coerce, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) gs_step = space.wrap('step') gs___setslice__ = space.wrap('__setslice__') gs_start = space.wrap('start') gs_stop = space.wrap('stop') - gs___dict___must_be_set_to_a_dictio = space.wrap('__dict__ must be set to a dictionary') - gs___class___must_be_set_to_a_class = space.wrap('__class__ must be set to a class') + gs___dict___must_be_set_to_a_dictio = space.wrap( +"""__dict__ must be set to a dictionary""") + gs___class___must_be_set_to_a_class = space.wrap( +"""__class__ must be set to a class""") gs___s__s_instance_at_0x_x_ = space.wrap('<%s.%s instance at 0x%x>') - gs___nonzero_____should_return____0 = space.wrap('__nonzero__() should return >= 0') - gs___nonzero_____should_return_an_i = space.wrap('__nonzero__() should return an int') + gs___nonzero_____should_return____0 = space.wrap( +"""__nonzero__() should return >= 0""") + gs___nonzero_____should_return_an_i = space.wrap( +"""__nonzero__() should return an int""") gs___len_____should_return____0 = space.wrap('__len__() should return >= 0') - gs___len_____should_return_an_int = space.wrap('__len__() should return an int') - gs___iter___returned_non_iterator_o = space.wrap('__iter__ returned non-iterator of type %s') + gs___len_____should_return_an_int = space.wrap( +"""__len__() should return an int""") + gs___iter___returned_non_iterator_o = space.wrap( +"""__iter__ returned non-iterator of type %s""") gs_iteration_over_non_sequence = space.wrap('iteration over non-sequence') gs_unhashable_instance = space.wrap('unhashable instance') - gs___hash_____should_return_an_int = space.wrap('__hash__() should return an int') + gs___hash_____should_return_an_int = space.wrap( +"""__hash__() should return an int""") gs___getslice__ = space.wrap('__getslice__') gs___getattr__ = space.wrap('__getattr__') gs___delslice__ = space.wrap('__delslice__') g2tuple_2 = space.newtuple([gs___dict__, gs___class__]) - gs__s_instance_has_no_attribute___s = space.wrap("%s instance has no attribute '%s'") + gs__s_instance_has_no_attribute___s = space.wrap( +"""%s instance has no attribute '%s'""") + gi_minus_1 = space.wrap(-1) gs___cmp___must_return_int = space.wrap('__cmp__ must return int') - gi_minus_1 = space.newint(-1) - gs__s_instance_has_no___call___meth = space.wrap('%s instance has no __call__ method') - gs_instance___first_arg_must_be_cla = space.wrap('instance() first arg must be class') - gs_instance___second_arg_must_be_di = space.wrap('instance() second arg must be dictionary or None') + gs__s_instance_has_no___call___meth = space.wrap( +"""%s instance has no __call__ method""") + gs_instance___first_arg_must_be_cla = space.wrap( +"""instance() first arg must be class""") + gs_instance___second_arg_must_be_di = space.wrap( +"""instance() second arg must be dictionary or None""") gfunc_type_err = space.wrap(gateway.interp2app(f_type_err, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) gs_name = space.wrap('name') gs_string = space.wrap('string') @@ -6783,6 +7268,7 @@ g_object = space.call(space.w_object, _tup) gs_callable = space.wrap('callable') gs_base_must_be_class = space.wrap('base must be class') - gs_argument__s_must_be__s__not__s = space.wrap('argument %s must be %s, not %s') + gs_argument__s_must_be__s__not__s = space.wrap( +"""argument %s must be %s, not %s""") return g3tuple From pedronis at codespeak.net Wed Apr 27 02:37:05 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 02:37:05 +0200 (CEST) Subject: [pypy-svn] r11501 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050427003705.D9A2727B55@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 02:37:05 2005 New Revision: 11501 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: oops, fix comment Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 02:37:05 2005 @@ -201,7 +201,7 @@ finally: sys.stdout = oldsysout # we want to compare outputs - result = self.fspath.purebasename+"\n"+capturesysout.getvalue() # regrtest itself had the test_name at the top of captured output + result = self.fspath.purebasename+"\n"+capturesysout.getvalue() # regrtest itself prepends the test_name to the captured output expected = outputpath.read(mode='r') if result != expected: reportdiff(expected, result) From ac at codespeak.net Wed Apr 27 10:46:08 2005 From: ac at codespeak.net (ac at codespeak.net) Date: Wed, 27 Apr 2005 10:46:08 +0200 (CEST) Subject: [pypy-svn] r11502 - pypy/branch/non-fake-unicode Message-ID: <20050427084608.311B927B58@code1.codespeak.net> Author: ac Date: Wed Apr 27 10:46:07 2005 New Revision: 11502 Added: pypy/branch/non-fake-unicode/ - copied from r11501, pypy/dist/ Log: Crating a branch for developing a non faked unicode. From ac at codespeak.net Wed Apr 27 10:47:34 2005 From: ac at codespeak.net (ac at codespeak.net) Date: Wed, 27 Apr 2005 10:47:34 +0200 (CEST) Subject: [pypy-svn] r11503 - pypy/branch/non-fake-unicode/pypy/objspace/std Message-ID: <20050427084734.EAF4E27B58@code1.codespeak.net> Author: ac Date: Wed Apr 27 10:47:34 2005 New Revision: 11503 Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/floattype.py pypy/branch/non-fake-unicode/pypy/objspace/std/inttype.py pypy/branch/non-fake-unicode/pypy/objspace/std/longtype.py pypy/branch/non-fake-unicode/pypy/objspace/std/objspace.py pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py Log: Slightly less faked unicode. Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/floattype.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/floattype.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/floattype.py Wed Apr 27 10:47:34 2005 @@ -9,6 +9,14 @@ except ValueError, e: raise OperationError(space.w_ValueError, space.wrap(str(e))) + elif space.is_true(space.isinstance(w_value, space.w_unicode)): + try: + # XXX can produce unwrapped long + from unicodeobject import unicode_to_decimal_w + value = float(unicode_to_decimal_w(space, w_value)) + except ParseStringError, e: + raise OperationError(space.w_ValueError, + space.wrap(e.msg)) else: w_obj = space.float(w_value) if space.is_true(space.is_(w_floattype, space.w_float)): Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/inttype.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/inttype.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/inttype.py Wed Apr 27 10:47:34 2005 @@ -16,6 +16,14 @@ except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) + elif space.is_true(space.isinstance(w_value, space.w_unicode)): + try: + # XXX can produce unwrapped long + from unicodeobject import unicode_to_decimal_w + value = string_to_int(unicode_to_decimal_w(space, w_value)) + except ParseStringError, e: + raise OperationError(space.w_ValueError, + space.wrap(e.msg)) else: # otherwise, use the __int__() method w_obj = space.int(w_value) Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/longtype.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/longtype.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/longtype.py Wed Apr 27 10:47:34 2005 @@ -17,6 +17,14 @@ except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) + elif space.is_true(space.isinstance(w_value, space.w_unicode)): + try: + # XXX can produce unwrapped long + from unicodeobject import unicode_to_decimal_w + value = string_to_long(unicode_to_decimal_w(space, w_value)) + except ParseStringError, e: + raise OperationError(space.w_ValueError, + space.wrap(e.msg)) else: # otherwise, use the __long__() method w_obj = space.long(w_value) Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/objspace.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/objspace.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/objspace.py Wed Apr 27 10:47:34 2005 @@ -186,6 +186,8 @@ return W_IntObject(self, x) if isinstance(x, str): return W_StringObject(self, x) + if isinstance(x, unicode): + return W_UnicodeObject(self, x) if isinstance(x, dict): items_w = [(self.wrap(k), self.wrap(v)) for (k, v) in x.iteritems()] return W_DictObject(self, items_w) Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py Wed Apr 27 10:47:34 2005 @@ -1,25 +1,45 @@ from pypy.objspace.std.objspace import * -from pypy.objspace.std.fake import fake_type, wrap_exception +from pypy.objspace.std.fake import wrap_exception from pypy.objspace.std.stringobject import W_StringObject +from pypy.objspace.std.noneobject import W_NoneObject +from pypy.objspace.std.sliceobject import W_SliceObject +from pypy.objspace.std import slicetype from pypy.objspace.std.strutil import string_to_int, string_to_long, ParseStringError -W_UnicodeObject = fake_type(unicode) +class W_UnicodeObject(W_Object): + from pypy.objspace.std.unicodetype import unicode_typedef as typedef + + def __init__(w_self, space, unicodechars): + W_Object.__init__(w_self, space) + w_self._value = unicodechars + w_self.w_hash = None + + def __repr__(w_self): + """ representation for debugging purposes """ + return "%s(%r)" % (w_self.__class__.__name__, w_self._value) + + def unwrap(w_self): + return w_self._value # This is maybe not right + +registerimplementation(W_UnicodeObject) # Helper for converting int/long import unicodedata def unicode_to_decimal_w(space, w_unistr): - result = [] - for uchr in space.unwrap(w_unistr): + unistr = space.unwrap(w_unistr) + result = [' '] * len(unistr) + for i in xrange(len(unistr)): + uchr = unistr[i] if uchr.isspace(): - result.append(' ') + result[i] = ' ' continue try: - result.append(chr(ord('0') + unicodedata.decimal(uchr))) + result[i] = chr(ord('0') + unicodedata.decimal(uchr)) continue except ValueError: ch = ord(uchr) if 0 < ch < 256: - result.append(chr(ch)) + result[i] = chr(ch) continue raise OperationError(space.w_UnicodeEncodeError, space.wrap('invalid decimal Unicode string')) return ''.join(result) @@ -27,100 +47,141 @@ # string-to-unicode delegation def delegate_String2Unicode(w_str): space = w_str.space - return W_UnicodeObject(space, unicode(space.str_w(w_str))) + return space.call_function(space.w_unicode, w_str) def str_w__Unicode(space, w_uni): - return space.str_w(space.call_method(w_uni, 'encode')) + return space.str_w(space.str(w_uni)) -def eq__Unicode_ANY(space, w_uni, w_other): +def repr__Unicode(space, w_uni): + return space.wrap(repr(w_uni._value)) + +def str__Unicode(space, w_uni): + return space.call_method(w_uni, 'encode') + +def cmp__Unicode_ANY(space, w_uni, w_other): try: - return space.newbool(space.unwrap(w_uni) == space.unwrap(w_other)) + return space.newbool(cmp(space.unwrap(w_uni), space.unwrap(w_other))) except: wrap_exception(space) - -def ne__Unicode_ANY(space, w_uni, w_other): + +def ord__Unicode(space, w_uni): try: - return space.newbool(space.unwrap(w_uni) != space.unwrap(w_other)) + return space.wrap(ord(w_uni._value)) except: wrap_exception(space) +def add__Unicode_Unicode(space, w_left, w_right): + return space.wrap(space.unwrap(w_left) + space.unwrap(w_right)) +def add__String_Unicode(space, w_left, w_right): + return space.wrap(space.str_w(w_left) + space.unwrap(w_right)) +def add__Unicode_String(space, w_left, w_right): + return space.wrap(space.unwrap(w_left) + space.str_w(w_right)) -def lt__Unicode_ANY(space, w_uni, w_other): +def contains__String_Unicode(space, w_left, w_right): try: - return space.newbool(space.unwrap(w_uni) < space.unwrap(w_other)) + return space.wrap(space.unwrap(w_right) in space.unwrap(w_left)) except: wrap_exception(space) -def gt__Unicode_ANY(space, w_uni, w_other): - try: - return space.newbool(space.unwrap(w_uni) > space.unwrap(w_other)) - except: - wrap_exception(space) +def contains__Unicode_Unicode(space, w_left, w_right): + return space.wrap(space.unwrap(w_right) in space.unwrap(w_left)) -def le__Unicode_ANY(space, w_uni, w_other): - try: - return space.newbool(space.unwrap(w_uni) <= space.unwrap(w_other)) - except: - wrap_exception(space) +def unicode_join__Unicode_ANY(space, w_self, w_list): + list = space.unpackiterable(w_list) + self = w_self._value + for i in range(len(list)): + list[i] = space.unwrap(space.call_function(space.w_unicode, list[i])) + return space.wrap(self.join(list)) -def ge__Unicode_ANY(space, w_uni, w_other): +def unicode_encode__Unicode_String_String(space, w_self, w_encoding, w_errors): try: - return space.newbool(space.unwrap(w_uni) >= space.unwrap(w_other)) + return space.wrap(w_self._value.encode(space.str_w(w_encoding), space.str_w(w_errors))) except: wrap_exception(space) - -def ord__Unicode(space, w_uni): +def unicode_encode__Unicode_String_None(space, w_self, w_encoding, w_none): try: - return space.wrap(ord(space.unwrap(w_uni))) + return space.wrap(w_self._value.encode(space.str_w(w_encoding))) except: wrap_exception(space) -def float__Unicode(space, w_uni): +def unicode_encode__Unicode_None_None(space, w_self, w_encoding, w_errors): try: - return space.wrap(float(unicode_to_decimal_w(space, w_uni))) + return space.wrap(w_self._value.encode()) except: wrap_exception(space) -def int__Unicode(space, w_uni): - try: - return space.wrap(string_to_int(unicode_to_decimal_w(space, w_uni))) - except ParseStringError, e: - raise OperationError(space.w_ValueError, space.wrap(e.msg)) - except: - wrap_exception(space) +def hash__Unicode(space, w_uni): + if w_uni.w_hash is None: + w_uni.w_hash = space.wrap(hash(w_uni._value)) + return w_uni.w_hash -def long__Unicode(space, w_uni): - try: - return space.wrap(string_to_long(unicode_to_decimal_w(space, w_uni))) - except ParseStringError, e: - raise OperationError(space.w_ValueError, space.wrap(e.msg)) - except: - wrap_exception(space) +def len__Unicode(space, w_uni): + return space.wrap(len(w_uni._value)) -def add__Unicode_Unicode(space, w_left, w_right): - return space.wrap(space.unwrap(w_left) + space.unwrap(w_right)) +def getitem__Unicode_ANY(space, w_uni, w_index): + ival = space.int_w(w_index) + uni = w_uni._value + ulen = len(uni) + if ival < 0: + ival += ulen + if ival < 0 or ival >= ulen: + exc = space.call_function(space.w_IndexError, + space.wrap("unicode index out of range")) + raise OperationError(space.w_IndexError, exc) + return W_UnicodeObject(space, uni[ival]) -def contains__String_Unicode(space, w_left, w_right): - try: - return space.wrap(space.unwrap(w_right) in space.unwrap(w_left)) - except: - wrap_exception(space) +def getitem__Unicode_Slice(space, w_uni, w_slice): + uni = w_uni._value + length = len(uni) + start, stop, step, sl = slicetype.indices4(space, w_slice, length) + if step == 1: + return space.wrap(uni[start:stop]) + r = [uni[start + i*step] for i in range(sl)] + return space.wrap(u''.join(r)) -def contains__Unicode_Unicode(space, w_left, w_right): - return space.wrap(space.unwrap(w_right) in space.unwrap(w_left)) +def mul__Unicode_ANY(space, w_uni, w_times): + return space.wrap(w_uni._value * space.int_w(w_times)) -# str.strip(unicode) needs to convert self to unicode and call unicode.strip -def str_strip__String_Unicode(space, w_self, w_chars ): - self = w_self._value - return space.wrap( unicode(self).strip( space.unwrap(w_chars) ) ) -def str_lstrip__String_Unicode(space, w_self, w_chars ): - self = w_self._value - return space.wrap( unicode(self).lstrip( space.unwrap(w_chars) ) ) -def str_rstrip__String_Unicode(space, w_self, w_chars ): - self = w_self._value - return space.wrap( unicode(self).rstrip( space.unwrap(w_chars) ) ) -# we use the following magic to register strip_string_unicode as a String multimethod -import stringtype +def mul__ANY_Unicode(space, w_times, w_uni): + return space.wrap(w_uni._value * space.int_w(w_times)) + +def unicode_strip__Unicode_None(space, w_self, w_chars): + return space.wrap(w_self._value.strip()) +def unicode_strip__Unicode_String(space, w_self, w_chars): + return space.wrap(w_self._value.strip(space.str_w(w_chars))) +def unicode_strip__Unicode_Unicode(space, w_self, w_chars): + return space.wrap(w_self._value.strip(w_chars._value)) + +def unicode_lstrip__Unicode_None(space, w_self, w_chars): + return space.wrap(w_self._value.lstrip()) +def unicode_lstrip__Unicode_String(space, w_self, w_chars): + return space.wrap(w_self._value.lstrip(space.str_w(w_chars))) +def unicode_lstrip__Unicode_Unicode(space, w_self, w_chars): + return space.wrap(w_self._value.lstrip(w_chars._value)) +def unicode_rstrip__Unicode_None(space, w_self, w_chars): + return space.wrap(w_self._value.rstrip()) +def unicode_rstrip__Unicode_String(space, w_self, w_chars): + return space.wrap(w_self._value.rstrip(space.str_w(w_chars))) +def unicode_rstrip__Unicode_Unicode(space, w_self, w_chars): + return space.wrap(w_self._value.rstrip(w_chars._value)) -register_all(vars(), stringtype) +import unicodetype +register_all(vars(), unicodetype) + +# str.strip(unicode) needs to convert self to unicode and call unicode.strip +# we use the following magic to register strip_string_unicode as a String multimethod. +class str_methods: + import stringtype + W_UnicodeObject = W_UnicodeObject + from pypy.objspace.std.stringobject import W_StringObject + def str_strip__String_Unicode(space, w_self, w_chars ): + self = w_self._value + return space.wrap( unicode(self).strip( space.unwrap(w_chars) ) ) + def str_lstrip__String_Unicode(space, w_self, w_chars ): + self = w_self._value + return space.wrap( unicode(self).lstrip( space.unwrap(w_chars) ) ) + def str_rstrip__String_Unicode(space, w_self, w_chars ): + self = w_self._value + return space.wrap( unicode(self).rstrip( space.unwrap(w_chars) ) ) + register_all(vars(), stringtype) Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py Wed Apr 27 10:47:34 2005 @@ -1,3 +1,78 @@ -from pypy.objspace.std.fake import fake_type +from pypy.objspace.std.stdtypedef import * +from pypy.objspace.std.basestringtype import basestring_typedef +from pypy.interpreter.error import OperationError -unicode_typedef = fake_type(unicode).typedef +from sys import maxint + +unicode_capitalize = MultiMethod('capitalize', 1) +unicode_center = MultiMethod('center', 2, ) +unicode_count = MultiMethod('count', 4, defaults=(0, maxint)) +unicode_encode = MultiMethod('encode', 3, defaults=(None, None)) +unicode_endswith = MultiMethod('endswith', 2) #[optional arguments not supported now] +unicode_expandtabs = MultiMethod('expandtabs', 2, defaults=(8,)) +unicode_find = MultiMethod('find', 4, defaults=(0, maxint)) +unicode_index = MultiMethod('index', 4, defaults=(0, maxint)) +unicode_isalnum = MultiMethod('isalnum', 1) +unicode_isalpha = MultiMethod('isalpha', 1) +unicode_isdecimal = MultiMethod('isdecimal', 1) +unicode_isdigit = MultiMethod('isdigit', 1) +unicode_islower = MultiMethod('islower', 1) +unicode_isnumeric = MultiMethod('isnumeric', 1) +unicode_isspace = MultiMethod('isspace', 1) +unicode_istitle = MultiMethod('istitle', 1) +unicode_isupper = MultiMethod('isupper', 1) +unicode_join = MultiMethod('join', 2) +unicode_ljust = MultiMethod('ljust', 2) +unicode_lower = MultiMethod('lower', 1) +unicode_lstrip = MultiMethod('lstrip', 2, defaults=(None,)) +unicode_replace = MultiMethod('replace', 4, defaults=(-1,)) +unicode_rfind = MultiMethod('rfind', 4, defaults=(0, maxint)) +unicode_rindex = MultiMethod('rindex', 4, defaults=(0, maxint)) +unicode_rjust = MultiMethod('rjust', 2) +unicode_rstrip = MultiMethod('rstrip', 2, defaults=(None,)) +unicode_split = MultiMethod('split', 3, defaults=(None,-1)) +unicode_splitlines = MultiMethod('splitlines', 2, defaults=(0,)) +unicode_startswith = MultiMethod('startswith', 3, defaults=(0,)) +unicode_strip = MultiMethod('strip', 2, defaults=(None,)) +unicode_swapcase = MultiMethod('swapcase', 1) +unicode_title = MultiMethod('title', 1) +unicode_translate = MultiMethod('translate', 3, defaults=('',)) +unicode_upper = MultiMethod('upper', 1) +unicode_zfill = MultiMethod('zfill', 2) + +# ____________________________________________________________ +def descr__new__(space, w_unicodetype, w_obj=None, w_encoding=None, w_errors=None): + from pypy.objspace.std.unicodeobject import W_UnicodeObject + w_obj_type = space.type(w_obj) + + if space.is_w(w_obj_type, space.w_unicode): + if space.is_w(w_unicodetype, space.w_unicode): + return w_obj + value = space.unwrap(w_obj) + elif space.is_w(w_obj, space.w_None): + value = u'' + elif space.is_true(space.isinstance(w_obj, space.w_unicode)): + value = w_obj._value + elif space.is_w(w_obj_type, space.w_str): + try: + if space.is_w(w_encoding, space.w_None): + value = unicode(space.str_w(w_obj)) + elif space.is_w(w_errors, space.w_None): + value = unicode(space.str_w(w_obj), space.str_w(w_encoding)) + else: + value = unicode(space.str_w(w_obj), space.str_w(w_encoding), + space.str_w(w_errors)) + except UnicodeDecodeError, e: + raise OperationError(space.w_UnicodeDecodeError, space.wrap(e.reason)) + else: + raise OperationError(space.w_ValueError, space.wrap('Can not create unicode from other than strings (is %r)'%w_obj_type)) + w_newobj = space.allocate_instance(W_UnicodeObject, w_unicodetype) + w_newobj.__init__(space, value) + return w_newobj + +# ____________________________________________________________ + +unicode_typedef = StdTypeDef("unicode", basestring_typedef, + __new__ = newmethod(descr__new__), + ) +unicode_typedef.registermethods(globals()) From hpk at codespeak.net Wed Apr 27 12:13:30 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 12:13:30 +0200 (CEST) Subject: [pypy-svn] r11508 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050427101330.DAED627B58@code1.codespeak.net> Author: hpk Date: Wed Apr 27 12:13:30 2005 New Revision: 11508 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: ignore doctests and tests coming from a test_support.run_suite() invocation for now. Did i say ARGL recently? Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 12:13:30 2005 @@ -52,20 +52,38 @@ except OperationError, e: if e.match(space, space.w_KeyboardInterrupt): raise KeyboardInterrupt - raise py.test.Item.Failed( - excinfo=pytestsupport.AppExceptionInfo(space, e)) + appexcinfo=pytestsupport.AppExceptionInfo(space, e) + if appexcinfo.traceback: + print "appexcinfo.traceback:" + py.std.pprint.pprint(appexcinfo.traceback) + raise py.test.Item.Failed(excinfo=appexcinfo) + raise -w_testlist = None +w_utestlist = None +w_doctestmodules = None def hack_test_support(space): - global w_testlist - w_testlist = space.newlist([]) - space.appexec([w_testlist], """ - (testlist): + global w_utestlist, w_doctestmodules + w_utestlist = space.newlist([]) + w_doctestmodules = space.newlist([]) + w_mod = make_module(space, 'unittest', mydir.join('pypy_unittest.py')) + #self.w_TestCase = space.getattr(w_mod, space.wrap('TestCase')) + space.appexec([w_utestlist, w_doctestmodules], """ + (testlist, doctestmodules): + from test import test_support # humpf + def hack_run_unittest(*classes): testlist.extend(list(classes)) - from test import test_support # humpf test_support.run_unittest = hack_run_unittest + + def hack_run_doctest(module, verbose=None): + doctestmodules.append(module) + test_support.run_doctest = hack_run_doctest + + def hack_run_suite(suite, testclass=None): + pass # XXX + test_support.run_suite = hack_run_doctest + """) def getmyspace(): @@ -73,7 +91,7 @@ # we once and for all want to patch run_unittest # to get us the list of intended unittest-TestClasses # from each regression test - if w_testlist is None: + if w_utestlist is None: callex(space, hack_test_support, space) return space @@ -219,11 +237,7 @@ if hasattr(self, '_testcases'): return space = self.space - def f(): - w_mod = make_module(space, 'unittest', mydir.join('pypy_unittest.py')) - self.w_TestCase = space.getattr(w_mod, space.wrap('TestCase')) - self._testcases = self.get_testcases() - callex(space, f) + self._testcases = callex(self.space, self.get_testcases) def run(self): self._prepare() @@ -246,14 +260,14 @@ space.enable_new_style_classes_as_default_metaclass() # hack out testcases - space.appexec([w_mod, w_testlist], """ + space.appexec([w_mod, w_utestlist], """ (mod, classlist): classlist[:] = [] mod.test_main() """) res = [] - #print w_testlist - for w_class in space.unpackiterable(w_testlist): + #print w_utestlist + for w_class in space.unpackiterable(w_utestlist): w_name = space.getattr(w_class, space.wrap('__name__')) res.append((space.str_w(w_name), w_class )) res.sort() From hpk at codespeak.net Wed Apr 27 14:22:37 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 14:22:37 +0200 (CEST) Subject: [pypy-svn] r11511 - pypy/dist/pypy/interpreter Message-ID: <20050427122237.2AA8327B7B@code1.codespeak.net> Author: hpk Date: Wed Apr 27 14:22:36 2005 New Revision: 11511 Modified: pypy/dist/pypy/interpreter/py.py Log: - return a minimum-useful exitstatus != 0 from invocations of py.py Modified: pypy/dist/pypy/interpreter/py.py ============================================================================== --- pypy/dist/pypy/interpreter/py.py (original) +++ pypy/dist/pypy/interpreter/py.py Wed Apr 27 14:22:36 2005 @@ -55,6 +55,9 @@ from pypy.tool import tb_server args = option.process_options(get_main_options(), Options, argv[1:]) space = None + exit_status = 1 # until proven otherwise + # XXX should review what CPython's policy is for + # the exit status code try: space = option.objspace() space._starttime = starttime @@ -77,6 +80,7 @@ space.call_method(space.sys.get('argv'), 'append', space.wrap('')) go_interactive = 1 banner = None + exit_status = 0 except error.OperationError, operationerr: if Options.verbose: operationerr.print_detailed_traceback(space) @@ -100,8 +104,10 @@ else: sys.excepthook(exc_type, value, tb) tb_server.wait_until_interrupt() + exit_status = 1 tb_server.stop() + return exit_status if __name__ == '__main__': try: @@ -111,4 +117,4 @@ if hasattr(sys, 'setrecursionlimit'): # for running "python -i py.py -Si -- py.py -Si" sys.setrecursionlimit(3000) - main_(sys.argv) + sys.exit(main_(sys.argv)) From hpk at codespeak.net Wed Apr 27 14:28:10 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 14:28:10 +0200 (CEST) Subject: [pypy-svn] r11513 - in pypy/dist: lib-python-2.3.4/test lib-python-2.3.4/test/result pypy/tool Message-ID: <20050427122810.AAFA227B7B@code1.codespeak.net> Author: hpk Date: Wed Apr 27 14:28:10 2005 New Revision: 11513 Added: pypy/dist/lib-python-2.3.4/test/result/ pypy/dist/pypy/tool/alarm.py Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: - introduce a new test running mechanism that invokes compliance tests (those in lib-python-2.3.4/test and pypy/lib/test2) in a subprocess run by PyPy. The output is recorded into files in result/*.txt together with system and failure information Note that currently such test runs time out after 15*60 seconds by default (see the new '-T seconds' option). - also we now run this subprocess/pypy test run mode by default until we have catched up with extracting tests properly to have more fine grained information about which tests failed and how many we pass alltogether ... - you can get back to the old "extract the tests" behaviour with the '-E' or '--extracttests' option (Armin, Holger) Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 14:28:10 2005 @@ -26,7 +26,13 @@ Option('-D', '--withdisabled', action="store_true", default=False, dest="withdisabled", help="include all disabled tests in the test run."), -) + Option('-E', '--extracttests', action="store_true", + default=False, dest="extracttests", + help="try to extract single tests and run them via py.test/PyPy"), + Option('-T', '--timeout', action="store", type="int", + default=15*60, dest="timeout", + help="timeout running of a test module (default 15*60 seconds)"), + ) mydir = py.magic.autopath().dirpath() @@ -91,7 +97,7 @@ # we once and for all want to patch run_unittest # to get us the list of intended unittest-TestClasses # from each regression test - if w_utestlist is None: + if w_utestlist is None and option.extracttests: callex(space, hack_test_support, space) return space @@ -176,6 +182,9 @@ def getfspath(self): if self.parent.testdecl.modified: + # we have to use a modified test ... (this could probably + # be done by just looking for the according test file + # but i found this more explicit) return pypydir.join('lib', 'test2', self.fspath.basename) else: return self.fspath # unmodified regrtest @@ -727,8 +736,8 @@ } class RegrDirectory(py.test.collect.Directory): - """ A special collector for the compliance tests - of CPython. Basically we work off the above 'testmap' + """ The central hub for gathering CPython's compliance tests + Basically we work off the above 'testmap' which describes for all test modules their specific type. XXX If you find errors in the classification please correct them! @@ -747,7 +756,82 @@ if name in self.testmap: testdecl = self.testmap[name] fspath = self.fspath.join(name) - return testdecl.testclass(fspath, parent=self, testdecl=testdecl) + if option.extracttests: + return testdecl.testclass(fspath, parent=self, testdecl=testdecl) + else: + return RunFileExternal(fspath, parent=self, testdecl=testdecl) Directory = RegrDirectory + +def getrev(path): + try: + return py.path.svnwc(mydir).info().rev + except: + return 'unknown' # on windows people not always have 'svn' in their path + +class RunFileExternal(OpErrorModule): + # a Module shows more nicely with the session reporting + # (i know this needs to become nicer) + def tryiter(self, stopitems=()): + return [] + def run(self): + return ['pypy-ext'] + def join(self, name): + if name == 'pypy-ext': + return ReallyRunFileExternal(name, parent=self, fspath=self.fspath) + +class ReallyRunFileExternal(RunAppFileItem): + + def run(self): + """ invoke a subprocess running the test file via PyPy. + record its output into the 'result' subdirectory. + (we might want to create subdirectories for + each user, because we will probably all produce + such result runs and they will not be the same + i am afraid. + """ + import os + import time + import socket + import getpass + fspath = self.getfspath() + python = sys.executable + pypy_dir = py.path.local(pypy.__file__).dirpath() + pypy_script = pypy_dir.join('interpreter', 'py.py') + alarm_script = pypy_dir.join('tool', 'alarm.py') + TIMEOUT = option.timeout + cmd = "%s %s %d %s %s" %(python, alarm_script, TIMEOUT, pypy_script, fspath) + resultfilename = mydir.join('result', fspath.new(ext='.txt').basename) + resultfile = resultfilename.open('w') + + try: + username = getpass.getuser() + except: + username = 'unknown' + print >> resultfile, "command:", cmd + print >> resultfile, "run by: %s@%s" % (username, socket.gethostname()) + print >> resultfile, "sys.platform:", sys.platform + print >> resultfile, "sys.version_info:", sys.version_info + print >> resultfile, "startdate:", time.ctime() + print >> resultfile, 'pypy-revision:', getrev(pypydir) + print >> resultfile, '='*60 + print "executing", cmd + starttime = time.time() + resultfile.close() + + status = os.system("%s >>%s 2>&1" %(cmd, resultfilename) ) + if os.WIFEXITED(status): + status = os.WEXITSTATUS(status) + else: + status = 'abnormal termination 0x%x' % status + + resultfile = resultfilename.open('a') + print >> resultfile, '='*26, 'closed', '='*26 + print >> resultfile, 'execution time:', time.time() - starttime, 'seconds' + print >> resultfile, 'exit status:', status + resultfile.close() + if status != 0: + time.sleep(0.5) # time for a Ctrl-C to reach us :-) + #print output + assert status == 0, "exitstatus is %d" %(status,) Added: pypy/dist/pypy/tool/alarm.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/tool/alarm.py Wed Apr 27 14:28:10 2005 @@ -0,0 +1,24 @@ + +import traceback + +def _main_with_alarm(): + import sys, os + import time + import thread + + + def timeout_thread(timeout): + stderr = sys.stderr + interrupt_main = thread.interrupt_main + time.sleep(timeout) + stderr.write("="*26 + "timeout" + "="*26 + "\n") + interrupt_main() + + + timeout = float(sys.argv[1]) + thread.start_new_thread(timeout_thread, (timeout,)) + del sys.argv[:2] + sys.path.insert(0, os.path.dirname(sys.argv[0])) + return sys.argv[0] + +execfile(_main_with_alarm()) From hpk at codespeak.net Wed Apr 27 15:00:49 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 15:00:49 +0200 (CEST) Subject: [pypy-svn] r11515 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050427130049.B76B927B7B@code1.codespeak.net> Author: hpk Date: Wed Apr 27 15:00:49 2005 New Revision: 11515 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: respect oldstyle specification in testmap for new subprocess runner Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 15:00:49 2005 @@ -572,6 +572,9 @@ 'test_pep247.py' : TestDecl(False, SimpleRunModule), 'test_pep263.py' : TestDecl(False, SimpleRunModule), 'test_pep277.py' : TestDecl(False, UTTestMainModule), + # XXX this test is _also_ an output test, damn it + # seems to be the only one that invokes run_unittest + # and is an unittest 'test_pickle.py' : TestDecl(False, UTTestMainModule), 'test_pickletools.py' : TestDecl(False, SimpleRunModule), 'test_pkg.py' : TestDecl(False, OutputTestModule), @@ -800,8 +803,12 @@ pypy_dir = py.path.local(pypy.__file__).dirpath() pypy_script = pypy_dir.join('interpreter', 'py.py') alarm_script = pypy_dir.join('tool', 'alarm.py') + pypy_options = [] + if self.testdecl.oldstyle: + pypy_options.append('--oldstyle') + sopt = " ".join(pypy_options) TIMEOUT = option.timeout - cmd = "%s %s %d %s %s" %(python, alarm_script, TIMEOUT, pypy_script, fspath) + cmd = "%s %s %d %s %s %s" %(python, alarm_script, TIMEOUT, pypy_script, sopt, fspath) resultfilename = mydir.join('result', fspath.new(ext='.txt').basename) resultfile = resultfilename.open('w') From tismer at codespeak.net Wed Apr 27 15:14:49 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 27 Apr 2005 15:14:49 +0200 (CEST) Subject: [pypy-svn] r11516 - pypy/dist/pypy/annotation Message-ID: <20050427131449.E8CE527B7B@code1.codespeak.net> Author: tismer Date: Wed Apr 27 15:14:49 2005 New Revision: 11516 Modified: pypy/dist/pypy/annotation/binaryop.py Log: fixed a hard to find typo Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Wed Apr 27 15:14:49 2005 @@ -166,7 +166,7 @@ def and_((int1, int2)): unsigned = int1.unsigned or int2.unsigned - return SomeInteger(nonneg = unsigned or int1.nonneg or int1.nonneg, + return SomeInteger(nonneg = unsigned or int1.nonneg or int2.nonneg, unsigned = unsigned) def lshift((int1, int2)): From arigo at codespeak.net Wed Apr 27 15:25:20 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 15:25:20 +0200 (CEST) Subject: [pypy-svn] r11518 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050427132520.8E1E727B7B@code1.codespeak.net> Author: arigo Date: Wed Apr 27 15:25:20 2005 New Revision: 11518 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: Compare the output of output tests. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 15:25:20 2005 @@ -811,6 +811,13 @@ cmd = "%s %s %d %s %s %s" %(python, alarm_script, TIMEOUT, pypy_script, sopt, fspath) resultfilename = mydir.join('result', fspath.new(ext='.txt').basename) resultfile = resultfilename.open('w') + if issubclass(self.testdecl.testclass, OutputTestModule): + outputfilename = resultfilename.new(ext='.out') + outputfile = outputfilename.open('w') + print >> outputfile, self.fspath.purebasename + outputfile.close() + else: + outputfilename = None try: username = getpass.getuser() @@ -822,12 +829,19 @@ print >> resultfile, "sys.version_info:", sys.version_info print >> resultfile, "startdate:", time.ctime() print >> resultfile, 'pypy-revision:', getrev(pypydir) + if outputfilename: + print >> resultfile, "OUTPUT TEST" + print >> resultfile, "see output in:", str(outputfilename) print >> resultfile, '='*60 print "executing", cmd starttime = time.time() resultfile.close() - status = os.system("%s >>%s 2>&1" %(cmd, resultfilename) ) + if outputfilename: + status = os.system("%s >>%s 2>>%s" %(cmd, outputfilename, + resultfilename) ) + else: + status = os.system("%s >>%s 2>&1" %(cmd, resultfilename) ) if os.WIFEXITED(status): status = os.WEXITSTATUS(status) else: @@ -842,3 +856,11 @@ time.sleep(0.5) # time for a Ctrl-C to reach us :-) #print output assert status == 0, "exitstatus is %d" %(status,) + + if outputfilename: + expectedfilename = mydir.join('output', self.fspath.purebasename) + expected = expectedfilename.read(mode='r') + result = outputfilename.read(mode='r') + if result != expected: + reportdiff(expected, result) + py.test.fail("output check failed: %s" % (self.fspath.basename,)) From ludal at codespeak.net Wed Apr 27 15:45:15 2005 From: ludal at codespeak.net (ludal at codespeak.net) Date: Wed, 27 Apr 2005 15:45:15 +0200 (CEST) Subject: [pypy-svn] r11520 - pypy/dist/pypy/module/recparser Message-ID: <20050427134515.9F66927B8E@code1.codespeak.net> Author: ludal Date: Wed Apr 27 15:45:15 2005 New Revision: 11520 Added: pypy/dist/pypy/module/recparser/pyparser.py Modified: pypy/dist/pypy/module/recparser/README pypy/dist/pypy/module/recparser/__init__.py Log: * first attempt at making the recursive parser a pypy module * most code taken and adapted from its sibling DFA parser module Modified: pypy/dist/pypy/module/recparser/README ============================================================================== --- pypy/dist/pypy/module/recparser/README (original) +++ pypy/dist/pypy/module/recparser/README Wed Apr 27 15:45:15 2005 @@ -6,3 +6,8 @@ This should change once we figure out how to integrate properly with pypy and add an option to switch between the two parsers + +to enable the module in py.py change : +baseobjspace.py:89 +pypy/interpreter/baseobjspace.py:89 +setbuiltinmodule( "parser", "recparser" ) Modified: pypy/dist/pypy/module/recparser/__init__.py ============================================================================== --- pypy/dist/pypy/module/recparser/__init__.py (original) +++ pypy/dist/pypy/module/recparser/__init__.py Wed Apr 27 15:45:15 2005 @@ -1 +1,43 @@ -# emtpy +from pypy.interpreter.error import OperationError, debug_print +from pypy.interpreter import module +from pypy.interpreter.lazymodule import LazyModule + + +import pythonutil + +debug_print( "Loading grammar %s" % pythonutil.PYTHON_GRAMMAR ) +PYTHON_PARSER = pythonutil.python_grammar() + +class Module(LazyModule): + """The builtin parser module. + """ + + + appleveldefs = { + # 'ParserError' : 'app_class.ParserError', + } + interpleveldefs = { + '__name__' : '(space.wrap("parser"))', + '__doc__' : '(space.wrap("parser (recparser version) module"))', + + 'suite' : 'pyparser.suite', + 'expr' : 'pyparser.expr', + 'STType' : 'pyparser.STType', +# 'ASTType' : 'pyparser.STType', + # 'sequence2st' : 'pyparser.sequence2st', + #'eval_input' : 'pyparser.eval_input', + #'file_input' : 'pyparser.file_input', + #'compileast' : 'pyparser.compileast', + #'st2tuple' : 'pyparser.st2tuple', + #'st2list' : 'pyparser.st2list', + #'issuite' : 'pyparser.issuite', + #'ast2tuple' : 'pyparser.ast2tuple', + #'tuple2st' : 'pyparser.tuple2st', + #'isexpr' : 'pyparser.isexpr', + #'ast2list' : 'pyparser.ast2list', + #'sequence2ast' : 'pyparser.sequence2ast', + #'tuple2ast' : 'pyparser.tuple2ast', + #'_pickler' : 'pyparser._pickler', + #'compilest' : 'pyparser.compilest', + } + Added: pypy/dist/pypy/module/recparser/pyparser.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/module/recparser/pyparser.py Wed Apr 27 15:45:15 2005 @@ -0,0 +1,112 @@ +# Emulation layer for the recparser module +# make it so that pyparser matches the 'parser' module interface + +from pypy.interpreter.baseobjspace import ObjSpace, Wrappable, W_Root +from pypy.interpreter.gateway import interp2app, applevel +from pypy.interpreter.error import OperationError +from pypy.interpreter.typedef import TypeDef +from pypy.interpreter.typedef import interp_attrproperty, GetSetProperty +from pypy.interpreter.pycode import PyCode +from syntaxtree import SyntaxNode +from pythonparse import parse_python_source +from pypy.module.recparser import PYTHON_PARSER + +__all__ = [ "ASTType", "STType", "suite", "expr" ] + +class STType (Wrappable): + """Class STType + """ + def __init__ (self, space, syntaxnode ): + """STType.__init__() + Wrapper for parse tree data returned by parse_python_source. + This encapsulate the syntaxnode at the head of the syntax tree + """ + self.space = space + self.node = syntaxnode + + def totuple (self, line_info = 0): + """STType.totuple() + Convert the ST object into a tuple representation. + """ + # lineinfo is ignored for now + return self.node.totuple() + + def descr_totuple(self, line_info = 0): + return self.space.wrap(self.totuple(line_info)) + + descr_totuple.unwrap_spec=['self', int] + + def tolist (self, line_info = 0): + """STType.tolist() + Convert the ST object into a list representation. + """ + return self.node.tolist() + + def isexpr (self): + """STType.isexpr() + Returns true if the root node in the syntax tree is an expr node, + false otherwise. + """ + return self.node.name == "eval_input" + + def issuite (self): + """STType.issuite() + Returns true if the root node in the syntax tree is a suite node, + false otherwise. + """ + return self.node.name == "file_input" + + def descr_compile (self, w_filename = ""): + """STType.compile() + """ + # We use the compiler module for that + space = self.space + tup = self.totuple(line_info=1) + w_tup = space.wrap(tup) + w_compileAST = mycompile(space, w_tup, w_filename) + if self.isexpr(): + return exprcompile(space, w_compileAST) + else: + return modcompile(space, w_compileAST) + +ASTType = STType + +app = applevel(""" + import compiler + def mycompile(tup, filename): + transformer = compiler.transformer.Transformer() + compileAST = transformer.compile_node(tup) + compiler.misc.set_filename(filename, compileAST) + return compileAST + + def exprcompile(compileAST): + gen = compiler.pycodegen.ExpressionCodeGenerator(compileAST) + return gen.getCode() + + def modcompile(compileAST): + gen = compiler.pycodegen.ModuleCodeGenerator(compileAST) + return gen.getCode() +""", filename=__file__) + +mycompile = app.interphook("mycompile") +exprcompile = app.interphook("exprcompile") +modcompile = app.interphook("modcompile") + +STType.typedef = TypeDef("parser.st", + compile = interp2app(STType.descr_compile), + totuple = interp2app(STType.descr_totuple), +) + +def suite( space, source ): + builder = parse_python_source( source, PYTHON_PARSER, "file_input" ) + return space.wrap( STType(space, builder.stack[-1]) ) + +suite.unwrap_spec = [ObjSpace, str] + +def expr( space, source ): + builder = parse_python_source( source, PYTHON_PARSER, "eval_input" ) + return space.wrap( STType(space, builder.stack[-1]) ) + +expr.unwrap_spec = [ObjSpace, str] + + From ac at codespeak.net Wed Apr 27 15:50:32 2005 From: ac at codespeak.net (ac at codespeak.net) Date: Wed, 27 Apr 2005 15:50:32 +0200 (CEST) Subject: [pypy-svn] r11521 - in pypy/branch/non-fake-unicode/pypy: module/builtin module/recparser/test objspace/std Message-ID: <20050427135032.BBBB227BAC@code1.codespeak.net> Author: ac Date: Wed Apr 27 15:50:32 2005 New Revision: 11521 Modified: pypy/branch/non-fake-unicode/pypy/module/builtin/compiling.py pypy/branch/non-fake-unicode/pypy/module/recparser/test/test_samples.py pypy/branch/non-fake-unicode/pypy/objspace/std/objspace.py pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py Log: Change representation for unicode Modified: pypy/branch/non-fake-unicode/pypy/module/builtin/compiling.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/module/builtin/compiling.py (original) +++ pypy/branch/non-fake-unicode/pypy/module/builtin/compiling.py Wed Apr 27 15:50:32 2005 @@ -11,7 +11,7 @@ def compile(space, w_str_, filename, startstr, supplied_flags=0, dont_inherit=0): if space.is_true(space.isinstance(w_str_, space.w_unicode)): - str_ = space.unwrap(w_str_) # xxx generic unwrap + str_ = u''.join(w_str_._value) # Bad exposing of unicode internals else: str_ = space.str_w(w_str_) #print (str_, filename, startstr, supplied_flags, dont_inherit) Modified: pypy/branch/non-fake-unicode/pypy/module/recparser/test/test_samples.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/module/recparser/test/test_samples.py (original) +++ pypy/branch/non-fake-unicode/pypy/module/recparser/test/test_samples.py Wed Apr 27 15:50:32 2005 @@ -44,7 +44,7 @@ raise AssertionError('Found difference at %s : %s != %s\n' % (curpos, name(elt1), name(elt2) ), curpos) -def test_samples(): +def Xtest_samples(): samples_dir = osp.join(osp.dirname(__file__), 'samples') for fname in os.listdir(samples_dir): if not fname.endswith('.py'): Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/objspace.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/objspace.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/objspace.py Wed Apr 27 15:50:32 2005 @@ -187,7 +187,7 @@ if isinstance(x, str): return W_StringObject(self, x) if isinstance(x, unicode): - return W_UnicodeObject(self, x) + return W_UnicodeObject(self, [u for u in x]) if isinstance(x, dict): items_w = [(self.wrap(k), self.wrap(v)) for (k, v) in x.iteritems()] return W_DictObject(self, items_w) Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py Wed Apr 27 15:50:32 2005 @@ -5,6 +5,7 @@ from pypy.objspace.std.sliceobject import W_SliceObject from pypy.objspace.std import slicetype from pypy.objspace.std.strutil import string_to_int, string_to_long, ParseStringError +from pypy.tool.rarithmetic import intmask class W_UnicodeObject(W_Object): from pypy.objspace.std.unicodetype import unicode_typedef as typedef @@ -12,29 +13,30 @@ def __init__(w_self, space, unicodechars): W_Object.__init__(w_self, space) w_self._value = unicodechars - w_self.w_hash = None - + if len(unicodechars) == 0: + w_self.w_hash = space.wrap(0) + else: + w_self.w_hash = None def __repr__(w_self): """ representation for debugging purposes """ return "%s(%r)" % (w_self.__class__.__name__, w_self._value) - def unwrap(w_self): - return w_self._value # This is maybe not right - registerimplementation(W_UnicodeObject) # Helper for converting int/long import unicodedata def unicode_to_decimal_w(space, w_unistr): - unistr = space.unwrap(w_unistr) - result = [' '] * len(unistr) + unistr = w_unistr._value + result = ['\0'] * len(unistr) + digits = [ '0', '1', '2', '3', '4', + '5', '6', '7', '8', '9'] for i in xrange(len(unistr)): uchr = unistr[i] - if uchr.isspace(): + if _isspace(uchr): result[i] = ' ' continue try: - result[i] = chr(ord('0') + unicodedata.decimal(uchr)) + result[i] = digits[unicodedata.decimal(uchr)] continue except ValueError: ch = ord(uchr) @@ -53,66 +55,124 @@ return space.str_w(space.str(w_uni)) def repr__Unicode(space, w_uni): - return space.wrap(repr(w_uni._value)) + return space.wrap(repr(u''.join(w_uni._value))) def str__Unicode(space, w_uni): return space.call_method(w_uni, 'encode') -def cmp__Unicode_ANY(space, w_uni, w_other): - try: - return space.newbool(cmp(space.unwrap(w_uni), space.unwrap(w_other))) - except: - wrap_exception(space) - +def cmp__Unicode_Unicode(space, w_left, w_right): + left = w_left._value + right = w_right._value + for i in range(min(len(left), len(right))): + test = ord(left[i]) - ord(right[i]) + if test < 0: + return space.wrap(-1) + if test > 0: + return space.wrap(1) + + test = len(left) - len(right) + if test < 0: + return space.wrap(-1) + if test > 0: + return space.wrap(1) + return space.wrap(0) + def ord__Unicode(space, w_uni): - try: - return space.wrap(ord(w_uni._value)) - except: - wrap_exception(space) + if len(w_uni._value) != 1: + raise OperationError(space.w_TypeError, space.wrap('ord() expected a character')) + return space.wrap(ord(w_uni._value[0])) def add__Unicode_Unicode(space, w_left, w_right): - return space.wrap(space.unwrap(w_left) + space.unwrap(w_right)) + left = w_left._value + right = w_right._value + leftlen = len(left) + rightlen = len(right) + result = [u'\0'] * (leftlen + rightlen) + for i in range(leftlen): + result[i] = left[i] + for i in range(rightlen): + result[i + leftlen] = right[i] + return W_UnicodeObject(space, result) + def add__String_Unicode(space, w_left, w_right): - return space.wrap(space.str_w(w_left) + space.unwrap(w_right)) + return space.add(space.call_function(space.w_unicode, w_left) , w_right) + def add__Unicode_String(space, w_left, w_right): - return space.wrap(space.unwrap(w_left) + space.str_w(w_right)) + return space.add(w_left, space.call_function(space.w_unicode, w_right)) -def contains__String_Unicode(space, w_left, w_right): - try: - return space.wrap(space.unwrap(w_right) in space.unwrap(w_left)) - except: - wrap_exception(space) +def contains__String_Unicode(space, w_container, w_item): + return space.contains(space.call_function(space.w_unicode, w_container), w_item ) -def contains__Unicode_Unicode(space, w_left, w_right): - return space.wrap(space.unwrap(w_right) in space.unwrap(w_left)) +def contains__Unicode_Unicode(space, w_container, w_item): + item = w_item._value + container = w_container._value + if len(item) == 0: + return space.w_True + for i in range(len(container) - len(item) + 1): + for j in range(len(item)): + if container[i + j] != item[j]: + break + else: + return space.w_True + return space.w_False def unicode_join__Unicode_ANY(space, w_self, w_list): list = space.unpackiterable(w_list) - self = w_self._value + delim = w_self._value + totlen = 0 + if len(list) == 0: + return W_UnicodeObject(space, []) + if len(list) == 1: + return space.call_function(space.w_unicode, list[0]) for i in range(len(list)): - list[i] = space.unwrap(space.call_function(space.w_unicode, list[i])) - return space.wrap(self.join(list)) + list[i] = space.call_function(space.w_unicode, list[i])._value + totlen += len(list[i]) + totlen += len(delim) * (len(list) - 1) + # Allocate result + result = [u'\0'] * totlen + first = list[0] + for i in range(len(first)): + result[i] = first[i] + offset = len(first) + for i in range(1, len(list)): + item = list[i] + # Add delimiter + for j in range(len(delim)): + result[offset + j] = delim[j] + offset += len(delim) + # Add item from list + for j in range(len(item)): + result[offset + j] = item[j] + offset += len(item) + return W_UnicodeObject(space, result) def unicode_encode__Unicode_String_String(space, w_self, w_encoding, w_errors): try: - return space.wrap(w_self._value.encode(space.str_w(w_encoding), space.str_w(w_errors))) + return space.wrap(u''.join(w_self._value).encode(space.str_w(w_encoding), space.str_w(w_errors))) except: wrap_exception(space) def unicode_encode__Unicode_String_None(space, w_self, w_encoding, w_none): try: - return space.wrap(w_self._value.encode(space.str_w(w_encoding))) + return space.wrap(u''.join(w_self._value).encode(space.str_w(w_encoding))) except: wrap_exception(space) def unicode_encode__Unicode_None_None(space, w_self, w_encoding, w_errors): try: - return space.wrap(w_self._value.encode()) + return space.wrap(u''.join(w_self._value).encode()) except: wrap_exception(space) def hash__Unicode(space, w_uni): if w_uni.w_hash is None: - w_uni.w_hash = space.wrap(hash(w_uni._value)) + chars = w_uni._value + x = ord(chars[0]) << 7 + for c in chars: + x = intmask((1000003 * x) ^ ord(c)) + h = intmask(x ^ len(chars)) + if h == -1: + h = -2 + w_uni.w_hash = space.wrap(h) return w_uni.w_hash def len__Unicode(space, w_uni): @@ -128,43 +188,103 @@ exc = space.call_function(space.w_IndexError, space.wrap("unicode index out of range")) raise OperationError(space.w_IndexError, exc) - return W_UnicodeObject(space, uni[ival]) + return W_UnicodeObject(space, [uni[ival]]) def getitem__Unicode_Slice(space, w_uni, w_slice): uni = w_uni._value length = len(uni) start, stop, step, sl = slicetype.indices4(space, w_slice, length) - if step == 1: - return space.wrap(uni[start:stop]) r = [uni[start + i*step] for i in range(sl)] - return space.wrap(u''.join(r)) + return W_UnicodeObject(space, r) def mul__Unicode_ANY(space, w_uni, w_times): - return space.wrap(w_uni._value * space.int_w(w_times)) + chars = w_uni._value + charlen = len(chars) + times = space.int_w(w_times) + if times <= 0 or charlen == 0: + return W_UnicodeObject(space, []) + if times == 1: + return w_uni + if charlen == 1: + return W_UnicodeObject(space, [w_uni._value[0]] * times) + + result = [u'\0'] * (charlen * times) + for i in range(times): + offset = i * charlen + for j in range(charlen): + result[offset + j] = chars[j] + return W_UnicodeObject(space, result) def mul__ANY_Unicode(space, w_times, w_uni): - return space.wrap(w_uni._value * space.int_w(w_times)) + return space.mul(w_uni, w_times) + +def _isspace(uchar): + return uchar.isspace() + +def _strip(space, w_self, w_chars, left, right): + "internal function called by str_xstrip methods" + u_self = w_self._value + u_chars = w_chars._value + + lpos = 0 + rpos = len(u_self) + + if left: + while lpos < rpos and u_self[lpos] in u_chars: + lpos += 1 + + if right: + while rpos > lpos and u_self[rpos - 1] in u_chars: + rpos -= 1 + + result = [u'\0'] * (rpos - lpos) + for i in range(rpos - lpos): + result[i] = u_self[lpos + i] + return W_UnicodeObject(space, result) + +def _strip_none(space, w_self, left, right): + "internal function called by str_xstrip methods" + u_self = w_self._value + + lpos = 0 + rpos = len(u_self) + + if left: + while lpos < rpos and _isspace(u_self[lpos]): + lpos += 1 + + if right: + while rpos > lpos and _isspace(u_self[rpos - 1]): + rpos -= 1 + + result = [u'\0'] * (rpos - lpos) + for i in range(rpos - lpos): + result[i] = u_self[lpos + i] + return W_UnicodeObject(space, result) def unicode_strip__Unicode_None(space, w_self, w_chars): - return space.wrap(w_self._value.strip()) -def unicode_strip__Unicode_String(space, w_self, w_chars): - return space.wrap(w_self._value.strip(space.str_w(w_chars))) + return _strip_none(space, w_self, 1, 1) def unicode_strip__Unicode_Unicode(space, w_self, w_chars): - return space.wrap(w_self._value.strip(w_chars._value)) + return _strip(space, w_self, w_chars, 1, 1) +def unicode_strip__Unicode_String(space, w_self, w_chars): + return space.call_method(w_self, 'strip', + space.call_function(space.w_unicode, w_chars)) def unicode_lstrip__Unicode_None(space, w_self, w_chars): - return space.wrap(w_self._value.lstrip()) -def unicode_lstrip__Unicode_String(space, w_self, w_chars): - return space.wrap(w_self._value.lstrip(space.str_w(w_chars))) + return _strip_none(space, w_self, 1, 0) def unicode_lstrip__Unicode_Unicode(space, w_self, w_chars): - return space.wrap(w_self._value.lstrip(w_chars._value)) + return _strip(space, w_self, w_chars, 1, 0) +def unicode_lstrip__Unicode_String(space, w_self, w_chars): + return space.call_method(w_self, 'lstrip', + space.call_function(space.w_unicode, w_chars)) def unicode_rstrip__Unicode_None(space, w_self, w_chars): - return space.wrap(w_self._value.rstrip()) -def unicode_rstrip__Unicode_String(space, w_self, w_chars): - return space.wrap(w_self._value.rstrip(space.str_w(w_chars))) + return _strip_none(space, w_self, 0, 1) def unicode_rstrip__Unicode_Unicode(space, w_self, w_chars): - return space.wrap(w_self._value.rstrip(w_chars._value)) + return _strip(space, w_self, w_chars, 0, 1) +def unicode_rstrip__Unicode_String(space, w_self, w_chars): + return space.call_method(w_self, 'rstrip', + space.call_function(space.w_unicode, w_chars)) import unicodetype register_all(vars(), unicodetype) @@ -176,12 +296,14 @@ W_UnicodeObject = W_UnicodeObject from pypy.objspace.std.stringobject import W_StringObject def str_strip__String_Unicode(space, w_self, w_chars ): - self = w_self._value - return space.wrap( unicode(self).strip( space.unwrap(w_chars) ) ) + return space.call_method(space.call_function(space.w_unicode, w_self), + 'strip', w_chars) def str_lstrip__String_Unicode(space, w_self, w_chars ): + return space.call_method(space.call_function(space.w_unicode, w_self), + 'lstrip', w_chars) self = w_self._value - return space.wrap( unicode(self).lstrip( space.unwrap(w_chars) ) ) def str_rstrip__String_Unicode(space, w_self, w_chars ): - self = w_self._value - return space.wrap( unicode(self).rstrip( space.unwrap(w_chars) ) ) + return space.call_method(space.call_function(space.w_unicode, w_self), + 'rstrip', w_chars) + register_all(vars(), stringtype) Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py Wed Apr 27 15:50:32 2005 @@ -48,24 +48,29 @@ if space.is_w(w_obj_type, space.w_unicode): if space.is_w(w_unicodetype, space.w_unicode): return w_obj - value = space.unwrap(w_obj) + value = w_obj._value elif space.is_w(w_obj, space.w_None): - value = u'' + value = [] elif space.is_true(space.isinstance(w_obj, space.w_unicode)): value = w_obj._value elif space.is_w(w_obj_type, space.w_str): try: if space.is_w(w_encoding, space.w_None): - value = unicode(space.str_w(w_obj)) + value = [ u for u in unicode(space.str_w(w_obj)) ] elif space.is_w(w_errors, space.w_None): - value = unicode(space.str_w(w_obj), space.str_w(w_encoding)) + value = [ u for u in unicode(space.str_w(w_obj), + space.str_w(w_encoding)) ] else: - value = unicode(space.str_w(w_obj), space.str_w(w_encoding), - space.str_w(w_errors)) + value = [u for u in unicode(space.str_w(w_obj), + space.str_w(w_encoding), + space.str_w(w_errors)) ] except UnicodeDecodeError, e: - raise OperationError(space.w_UnicodeDecodeError, space.wrap(e.reason)) + raise OperationError(space.w_UnicodeDecodeError, + space.wrap(e.reason)) else: - raise OperationError(space.w_ValueError, space.wrap('Can not create unicode from other than strings (is %r)'%w_obj_type)) + # try with __unicode__ + raise OperationError(space.w_ValueError, + space.wrap('Can not create unicode from other than strings'%w_obj_type)) w_newobj = space.allocate_instance(W_UnicodeObject, w_unicodetype) w_newobj.__init__(space, value) return w_newobj From arigo at codespeak.net Wed Apr 27 17:03:22 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 17:03:22 +0200 (CEST) Subject: [pypy-svn] r11524 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050427150322.B947527B8E@code1.codespeak.net> Author: arigo Date: Wed Apr 27 17:03:22 2005 New Revision: 11524 Added: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: A quick reporting tool, showing the exit status and last line of each test. Added: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 17:03:22 2005 @@ -0,0 +1,47 @@ +import sys; sys.path.insert(0, '../../..') +import py, re + +mydir = py.magic.autopath().dirpath() + +r_end = re.compile(r"""(.+)\s*========================== closed ========================== +execution time: (.+) seconds +exit status: (.+) +$""") + +r_timeout = re.compile(r"""==========================timeout========================== +""") + +class Result: + name = '?' + exit_status = '?' + execution_time = '?' + timeout = False + finalline = '' + + def read(self, fn): + self.name = fn.purebasename + data = fn.read(mode='r') + match = r_end.search(data) + assert match + self.finalline = match.group(1) + self.execution_time = float(match.group(2)) + self.exit_status = match.group(3) + self.timeout = bool(r_timeout.match(data)) + + def __str__(self): + return '%-17s %3s %5s %s' % ( + self.name, + self.exit_status, + self.timeout and 'timeout' or str(self.execution_time)[:5], + self.finalline) + + +files = mydir.listdir("*.txt") +files.sort() +for fn in files: + result = Result() + try: + result.read(fn) + except AssertionError: + pass + print result From arigo at codespeak.net Wed Apr 27 17:33:17 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 17:33:17 +0200 (CEST) Subject: [pypy-svn] r11526 - in pypy/dist/lib-python-2.3.4/test: . result Message-ID: <20050427153317.6467927BA7@code1.codespeak.net> Author: arigo Date: Wed Apr 27 17:33:17 2005 New Revision: 11526 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: - write an OK or FAILED at the end of the .txt files associated with output tests. - improved quickreport.py. It tries to categorize the results in Ok, ERR, or blank if it looks like an expected failure, or T/O for time-out. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 17:33:17 2005 @@ -847,20 +847,25 @@ else: status = 'abnormal termination 0x%x' % status + failure = None resultfile = resultfilename.open('a') - print >> resultfile, '='*26, 'closed', '='*26 - print >> resultfile, 'execution time:', time.time() - starttime, 'seconds' - print >> resultfile, 'exit status:', status - resultfile.close() - if status != 0: - time.sleep(0.5) # time for a Ctrl-C to reach us :-) - #print output - assert status == 0, "exitstatus is %d" %(status,) - if outputfilename: expectedfilename = mydir.join('output', self.fspath.purebasename) expected = expectedfilename.read(mode='r') result = outputfilename.read(mode='r') if result != expected: reportdiff(expected, result) - py.test.fail("output check failed: %s" % (self.fspath.basename,)) + failure = "output check failed: %s" % (self.fspath.basename,) + print >> resultfile, 'FAILED: test output differs' + else: + print >> resultfile, 'OK' + print >> resultfile, '='*26, 'closed', '='*26 + print >> resultfile, 'execution time:', time.time() - starttime, 'seconds' + print >> resultfile, 'exit status:', status + resultfile.close() + if status != 0: + failure = "exitstatus is %d" %(status,) + #print output + if failure: + time.sleep(0.5) # time for a Ctrl-C to reach us :-) + py.test.fail(failure) Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 17:33:17 2005 @@ -1,3 +1,5 @@ +#! /usr/bin/env python + import sys; sys.path.insert(0, '../../..') import py, re @@ -11,7 +13,27 @@ r_timeout = re.compile(r"""==========================timeout========================== """) +r_importerror = re.compile(r"ImportError: (\w+)") + +# Linux list below. May need to add a few ones for Windows... +IGNORE_MODULES = """ + array datetime md5 regex _testcapi + audioop dbm mmap resource time + binascii dl mpz rgbimg timing + _bsddb fcntl nis rotor _tkinter + bz2 gdbm operator select unicodedata + cmath grp ossaudiodev sha _weakref + cPickle _hotshot parser _socket xreadlines + crypt imageop pcre _ssl zlib + cStringIO itertools pwd strop + _csv linuxaudiodev pyexpat struct + _curses_panel _locale _random syslog + _curses math readline termios +""".split() + + class Result: + pts = '?' name = '?' exit_status = '?' execution_time = '?' @@ -21,20 +43,45 @@ def read(self, fn): self.name = fn.purebasename data = fn.read(mode='r') + self.timeout = bool(r_timeout.search(data)) match = r_end.search(data) assert match - self.finalline = match.group(1) self.execution_time = float(match.group(2)) self.exit_status = match.group(3) - self.timeout = bool(r_timeout.match(data)) + if self.exit_status == '0': + self.pts = 'Ok' + elif not self.timeout: + self.finalline = match.group(1) + self.pts = 'ERR' + match1 = r_importerror.match(self.finalline) + if match1: + module = match1.group(1) + if module in IGNORE_MODULES: + self.pts = '' # doesn't count in our total + elif self.finalline.startswith('TestSkipped: '): + self.pts = '' + else: + self.finalline = 'TIME OUT' + self.pts = 'T/O' def __str__(self): - return '%-17s %3s %5s %s' % ( + return '%-3s %-17s %3s %5s %s' % ( + self.pts, self.name, self.exit_status, - self.timeout and 'timeout' or str(self.execution_time)[:5], + str(self.execution_time)[:5], self.finalline) +header = Result() +header.pts = 'res' +header.name = 'name' +header.exit_status = 'err' +header.execution_time = 'time' +header.finalline = ' last output line' +print +print header +print + files = mydir.listdir("*.txt") files.sort() @@ -45,3 +92,5 @@ except AssertionError: pass print result + +print From arigo at codespeak.net Wed Apr 27 17:53:43 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 17:53:43 +0200 (CEST) Subject: [pypy-svn] r11532 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050427155343.5DC2027B9E@code1.codespeak.net> Author: arigo Date: Wed Apr 27 17:53:43 2005 New Revision: 11532 Modified: pypy/dist/pypy/objspace/std/test/test_typeobject.py pypy/dist/pypy/objspace/std/typeobject.py Log: Made the app-level abstract_mro() sufficiently RPythonic. This prevented new-style classes from inheriting from old-style ones (added a test for that). Modified: pypy/dist/pypy/objspace/std/test/test_typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_typeobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_typeobject.py Wed Apr 27 17:53:43 2005 @@ -155,6 +155,15 @@ assert getattr(B_mro, 'a', None) == None assert getattr(B_mro(), 'a', None) == None + def test_abstract_mro(self): + class A1: + __metaclass__ = _classobj + class A2(A1): + pass + class A3(A2, object): + __metaclass__ = type + assert A3.__mro__ == (A3, A2, A1, object) + def test_nodoc(self): class NoDoc(object): pass Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Wed Apr 27 17:53:43 2005 @@ -282,14 +282,13 @@ abstract_mro = gateway.applevel(""" def abstract_mro(klass): # abstract/classic mro - mro = [] - def fill_mro(klass): - if klass not in mro: - mro.append(klass) - assert isinstance(klass.__bases__, tuple) + mro = [klass] + for klass in mro: + if not isinstance(klass.__bases__, tuple): + raise TypeError, '__bases__ must be a tuple' for base in klass.__bases__: - fill_mro(base) - fill_mro(klass) + if base not in mro: + mro.append(base) return mro """, filename=__file__).interphook("abstract_mro") From arigo at codespeak.net Wed Apr 27 17:55:04 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 17:55:04 +0200 (CEST) Subject: [pypy-svn] r11533 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050427155504.9905F27BA7@code1.codespeak.net> Author: arigo Date: Wed Apr 27 17:55:04 2005 New Revision: 11533 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: Sort tests in the same way as conftest.py. Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 17:55:04 2005 @@ -84,7 +84,7 @@ files = mydir.listdir("*.txt") -files.sort() +files.sort(key=lambda x: str(x).lower()) for fn in files: result = Result() try: From arigo at codespeak.net Wed Apr 27 17:57:21 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 17:57:21 +0200 (CEST) Subject: [pypy-svn] r11534 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050427155721.BECA327BB0@code1.codespeak.net> Author: arigo Date: Wed Apr 27 17:57:21 2005 New Revision: 11534 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: - fixed this Python2.4-ism, sorry. - list 'thread' as an expected missing module for now. Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 17:57:21 2005 @@ -29,6 +29,9 @@ _csv linuxaudiodev pyexpat struct _curses_panel _locale _random syslog _curses math readline termios + + thread + """.split() @@ -84,7 +87,7 @@ files = mydir.listdir("*.txt") -files.sort(key=lambda x: str(x).lower()) +files.sort(lambda x,y: cmp(str(x).lower(), str(y).lower())) for fn in files: result = Result() try: From arigo at codespeak.net Wed Apr 27 18:11:13 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 18:11:13 +0200 (CEST) Subject: [pypy-svn] r11535 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050427161113.876C627B9C@code1.codespeak.net> Author: arigo Date: Wed Apr 27 18:11:13 2005 New Revision: 11535 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: Search facility. See the comments in the script itself. Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 18:11:13 2005 @@ -1,5 +1,22 @@ #! /usr/bin/env python +""" +A quick reporting tool, showing the exit status and last line of each test. + +In the first column, quickreport attempts to categorize the test result: + + Ok passed. + ERR failed. + (blank) ImportError, one of the known-missing modules listed below. + ? parse error, maybe the test is currently running. + T/O time out. + +When called with arguments, quickreport prints the name of the tests that +match them. The first argument is the category (ok, err, t/o) and the +optional following arguments are searched for in the last column of the +table. +""" + import sys; sys.path.insert(0, '../../..') import py, re @@ -75,25 +92,42 @@ str(self.execution_time)[:5], self.finalline) -header = Result() -header.pts = 'res' -header.name = 'name' -header.exit_status = 'err' -header.execution_time = 'time' -header.finalline = ' last output line' -print -print header -print - - -files = mydir.listdir("*.txt") -files.sort(lambda x,y: cmp(str(x).lower(), str(y).lower())) -for fn in files: - result = Result() - try: - result.read(fn) - except AssertionError: - pass - print result -print +def allresults(): + files = mydir.listdir("*.txt") + files.sort(lambda x,y: cmp(str(x).lower(), str(y).lower())) + for fn in files: + result = Result() + try: + result.read(fn) + except AssertionError: + pass + yield result + + +def report_table(): + header = Result() + header.pts = 'res' + header.name = 'name' + header.exit_status = 'err' + header.execution_time = 'time' + header.finalline = ' last output line' + print + print header + print + for result in allresults(): + print result + print + + +if __name__ == '__main__': + if len(sys.argv) <= 1: + report_table() + else: + match_pts = sys.argv[1].upper() + match_finalline = '\s+'.join([re.escape(s) for s in sys.argv[2:]]) + r_match_finalline = re.compile(match_finalline) + for result in allresults(): + if result.pts.upper() == match_pts: + if r_match_finalline.search(result.finalline): + print result.name From pedronis at codespeak.net Wed Apr 27 18:33:16 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 18:33:16 +0200 (CEST) Subject: [pypy-svn] r11537 - pypy/dist/pypy/translator Message-ID: <20050427163316.C149A27BA0@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 18:33:16 2005 New Revision: 11537 Modified: pypy/dist/pypy/translator/geninterplevel.py Log: strutil is at interplevel and is undergoing a refactoring because string_to_int could return a Python long, and code depended on that behavior, this is at odds with annotation and translation Modified: pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- pypy/dist/pypy/translator/geninterplevel.py (original) +++ pypy/dist/pypy/translator/geninterplevel.py Wed Apr 27 18:33:16 2005 @@ -1363,11 +1363,6 @@ except ZeroDivisionError: return 42 -def test_strutil(): - from pypy.objspace.std import strutil - return (strutil.string_to_int("42"), - strutil.string_to_long("12345678901234567890")) - def test_struct(): from pypy.appspace import struct import struct as stru @@ -1423,7 +1418,6 @@ test_iter, test_loop, test_exc, - test_strutil, test_struct, exceptions_helper, make_class_instance_helper, From arigo at codespeak.net Wed Apr 27 18:36:56 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 18:36:56 +0200 (CEST) Subject: [pypy-svn] r11538 - in pypy/dist/pypy/objspace: . test Message-ID: <20050427163656.A830927BA8@code1.codespeak.net> Author: arigo Date: Wed Apr 27 18:36:56 2005 New Revision: 11538 Modified: pypy/dist/pypy/objspace/descroperation.py pypy/dist/pypy/objspace/test/test_descroperation.py Log: __getslice__()&co should not receive None arguments, but 0 or sys.maxint. Added tests and fixed. Modified: pypy/dist/pypy/objspace/descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/descroperation.py (original) +++ pypy/dist/pypy/objspace/descroperation.py Wed Apr 27 18:36:56 2005 @@ -1,4 +1,4 @@ -import operator +import operator, sys from pypy.interpreter.error import OperationError from pypy.interpreter.baseobjspace import ObjSpace, W_Root, BaseWrappable from pypy.interpreter.function import Function @@ -180,14 +180,23 @@ space.wrap("iterator has no next() method")) return space.get_and_call_function(w_descr, w_obj) + def _oldstyle_slice_range(space, w_key): + w_start = space.getattr(w_key, space.wrap('start')) + w_stop = space.getattr(w_key, space.wrap('stop')) + if space.is_w(w_start, space.w_None): + w_start = space.wrap(0) + if space.is_w(w_stop, space.w_None): + w_stop = space.wrap(sys.maxint) + return w_start, w_stop + def getitem(space, w_obj, w_key): if space.is_true(space.isinstance(w_key, space.w_slice)): if space.is_w(space.getattr(w_key, space.wrap('step')), space.w_None): w_descr = space.lookup(w_obj, '__getslice__') if w_descr is not None: + w_start, w_stop = space._oldstyle_slice_range(w_key) return space.get_and_call_function(w_descr, w_obj, - space.getattr(w_key, space.wrap('start')), - space.getattr(w_key, space.wrap('stop'))) + w_start, w_stop) w_descr = space.lookup(w_obj, '__getitem__') if w_descr is None: raise OperationError(space.w_TypeError, @@ -199,9 +208,9 @@ if space.is_w(space.getattr(w_key, space.wrap('step')), space.w_None): w_descr = space.lookup(w_obj, '__setslice__') if w_descr is not None: + w_start, w_stop = space._oldstyle_slice_range(w_key) return space.get_and_call_function(w_descr, w_obj, - space.getattr(w_key, space.wrap('start')), - space.getattr(w_key, space.wrap('stop')), + w_start, w_stop, w_val) w_descr = space.lookup(w_obj, '__setitem__') if w_descr is None: @@ -214,9 +223,9 @@ if space.is_w(space.getattr(w_key, space.wrap('step')), space.w_None): w_descr = space.lookup(w_obj, '__delslice__') if w_descr is not None: + w_start, w_stop = space._oldstyle_slice_range(w_key) return space.get_and_call_function(w_descr, w_obj, - space.getattr(w_key, space.wrap('start')), - space.getattr(w_key, space.wrap('stop'))) + w_start, w_stop) w_descr = space.lookup(w_obj, '__delitem__') if w_descr is None: raise OperationError(space.w_TypeError, Modified: pypy/dist/pypy/objspace/test/test_descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/test/test_descroperation.py (original) +++ pypy/dist/pypy/objspace/test/test_descroperation.py Wed Apr 27 18:36:56 2005 @@ -13,6 +13,56 @@ sq = Sq() assert sq[1:3] == (1,3) + import sys + assert sq[1:] == (1, sys.maxint) + assert sq[:3] == (0, 3) + assert sq[:] == (0, sys.maxint) + + def test_setslice(self): + class Sq(object): + def __setslice__(self, start, stop, sequence): + ops.append((start, stop, sequence)) + + def __setitem__(self, key, value): + raise AssertionError, key + + sq = Sq() + ops = [] + sq[-5:3] = 'hello' + sq[12:] = 'world' + sq[:-1] = 'spam' + sq[:] = 'egg' + + import sys + assert ops == [ + (-5, 3, 'hello'), + (12, sys.maxint, 'world'), + (0, -1, 'spam'), + (0, sys.maxint, 'egg'), + ] + + def test_delslice(self): + class Sq(object): + def __delslice__(self, start, stop): + ops.append((start, stop)) + + def __delitem__(self, key): + raise AssertionError, key + + sq = Sq() + ops = [] + del sq[5:-3] + del sq[-12:] + del sq[:1] + del sq[:] + + import sys + assert ops == [ + (5, -3), + (-12, sys.maxint), + (0, 1), + (0, sys.maxint), + ] def test_ipow(self): x = 2 From arigo at codespeak.net Wed Apr 27 18:46:14 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 18:46:14 +0200 (CEST) Subject: [pypy-svn] r11539 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050427164614.DA0FA27BAC@code1.codespeak.net> Author: arigo Date: Wed Apr 27 18:46:14 2005 New Revision: 11539 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: Miscategorized failing output tests as successes. Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 18:46:14 2005 @@ -68,7 +68,8 @@ assert match self.execution_time = float(match.group(2)) self.exit_status = match.group(3) - if self.exit_status == '0': + if (self.exit_status == '0' and + not match.group(1).lower().startswith('fail')): self.pts = 'Ok' elif not self.timeout: self.finalline = match.group(1) From arigo at codespeak.net Wed Apr 27 18:55:56 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 18:55:56 +0200 (CEST) Subject: [pypy-svn] r11540 - in pypy/dist/pypy/objspace: . test Message-ID: <20050427165556.4145527BB0@code1.codespeak.net> Author: arigo Date: Wed Apr 27 18:55:56 2005 New Revision: 11540 Modified: pypy/dist/pypy/objspace/descroperation.py pypy/dist/pypy/objspace/test/test_descroperation.py Log: More __getslice__() support. Modified: pypy/dist/pypy/objspace/descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/descroperation.py (original) +++ pypy/dist/pypy/objspace/descroperation.py Wed Apr 27 18:55:56 2005 @@ -180,13 +180,20 @@ space.wrap("iterator has no next() method")) return space.get_and_call_function(w_descr, w_obj) - def _oldstyle_slice_range(space, w_key): + def _oldstyle_slice_range(space, w_obj, w_key): w_start = space.getattr(w_key, space.wrap('start')) w_stop = space.getattr(w_key, space.wrap('stop')) if space.is_w(w_start, space.w_None): w_start = space.wrap(0) + elif space.is_true(space.lt(w_start, space.wrap(0))): + w_start = space.add(w_start, space.len(w_obj)) + # NB. the language ref is inconsistent with the new-style class + # behavior when w_obj doesn't implement __len__(), so we just + # ignore this case. if space.is_w(w_stop, space.w_None): w_stop = space.wrap(sys.maxint) + elif space.is_true(space.lt(w_stop, space.wrap(0))): + w_stop = space.add(w_stop, space.len(w_obj)) return w_start, w_stop def getitem(space, w_obj, w_key): @@ -194,7 +201,7 @@ if space.is_w(space.getattr(w_key, space.wrap('step')), space.w_None): w_descr = space.lookup(w_obj, '__getslice__') if w_descr is not None: - w_start, w_stop = space._oldstyle_slice_range(w_key) + w_start, w_stop = space._oldstyle_slice_range(w_obj, w_key) return space.get_and_call_function(w_descr, w_obj, w_start, w_stop) w_descr = space.lookup(w_obj, '__getitem__') @@ -208,7 +215,7 @@ if space.is_w(space.getattr(w_key, space.wrap('step')), space.w_None): w_descr = space.lookup(w_obj, '__setslice__') if w_descr is not None: - w_start, w_stop = space._oldstyle_slice_range(w_key) + w_start, w_stop = space._oldstyle_slice_range(w_obj, w_key) return space.get_and_call_function(w_descr, w_obj, w_start, w_stop, w_val) @@ -223,7 +230,7 @@ if space.is_w(space.getattr(w_key, space.wrap('step')), space.w_None): w_descr = space.lookup(w_obj, '__delslice__') if w_descr is not None: - w_start, w_stop = space._oldstyle_slice_range(w_key) + w_start, w_stop = space._oldstyle_slice_range(w_obj, w_key) return space.get_and_call_function(w_descr, w_obj, w_start, w_stop) w_descr = space.lookup(w_obj, '__delitem__') Modified: pypy/dist/pypy/objspace/test/test_descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/test/test_descroperation.py (original) +++ pypy/dist/pypy/objspace/test/test_descroperation.py Wed Apr 27 18:55:56 2005 @@ -6,9 +6,10 @@ class Sq(object): def __getslice__(self, start, stop): return (start, stop) - def __getitem__(self, key): return "booh" + def __len__(self): + return 100 sq = Sq() @@ -17,14 +18,19 @@ assert sq[1:] == (1, sys.maxint) assert sq[:3] == (0, 3) assert sq[:] == (0, sys.maxint) + # negative indices + assert sq[-1:3] == (99, 3) + assert sq[1:-3] == (1, 97) + assert sq[-1:-3] == (99, 97) def test_setslice(self): class Sq(object): def __setslice__(self, start, stop, sequence): ops.append((start, stop, sequence)) - def __setitem__(self, key, value): raise AssertionError, key + def __len__(self): + return 100 sq = Sq() ops = [] @@ -35,9 +41,9 @@ import sys assert ops == [ - (-5, 3, 'hello'), + (95, 3, 'hello'), (12, sys.maxint, 'world'), - (0, -1, 'spam'), + (0, 99, 'spam'), (0, sys.maxint, 'egg'), ] @@ -45,9 +51,10 @@ class Sq(object): def __delslice__(self, start, stop): ops.append((start, stop)) - def __delitem__(self, key): raise AssertionError, key + def __len__(self): + return 100 sq = Sq() ops = [] @@ -58,8 +65,8 @@ import sys assert ops == [ - (5, -3), - (-12, sys.maxint), + (5, 97), + (88, sys.maxint), (0, 1), (0, sys.maxint), ] From pedronis at codespeak.net Wed Apr 27 20:00:46 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 20:00:46 +0200 (CEST) Subject: [pypy-svn] r11541 - pypy/dist/pypy/lib/test2 Message-ID: <20050427180046.D44B327B9C@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 20:00:46 2005 New Revision: 11541 Modified: pypy/dist/pypy/lib/test2/conftest.py Log: avoid running in slow-mode when running all of PyPy own tests Modified: pypy/dist/pypy/lib/test2/conftest.py ============================================================================== --- pypy/dist/pypy/lib/test2/conftest.py (original) +++ pypy/dist/pypy/lib/test2/conftest.py Wed Apr 27 20:00:46 2005 @@ -31,6 +31,7 @@ libtestdir = pypydir.dirpath('lib-python-2.3.4', 'test') libconftest = libtestdir.join('conftest.py').getpymodule() # read()) +libconftest.option.extracttests = True testlist = None doctestmodulelist = None From pedronis at codespeak.net Wed Apr 27 20:06:00 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 20:06:00 +0200 (CEST) Subject: [pypy-svn] r11542 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050427180600.5B55D27B9C@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 20:06:00 2005 New Revision: 11542 Modified: pypy/dist/pypy/objspace/std/inttype.py pypy/dist/pypy/objspace/std/longtype.py pypy/dist/pypy/objspace/std/objspace.py pypy/dist/pypy/objspace/std/strutil.py pypy/dist/pypy/objspace/std/test/test_strutil.py pypy/dist/pypy/objspace/std/unicodeobject.py Log: - introduced a brain-dead newlong taking just a r_uint for now - strutil.string_to_int now raises a exception if an overflow occurs - strutil.string_to_long has become string_to_w_long and returns a wrapped space long - changed tests to reflect this - reworked inttype.descr__new__ and longtype.descr__new__ to not depend anymore on string_to_int falling back to Python longs (which would defeat the annotator) and to use string_to_w_long - reworked some of unicodeobject related xxx code Modified: pypy/dist/pypy/objspace/std/inttype.py ============================================================================== --- pypy/dist/pypy/objspace/std/inttype.py (original) +++ pypy/dist/pypy/objspace/std/inttype.py Wed Apr 27 20:06:00 2005 @@ -1,21 +1,24 @@ from pypy.objspace.std.stdtypedef import * -from pypy.objspace.std.strutil import string_to_int, ParseStringError +from pypy.objspace.std.strutil import string_to_int, string_to_w_long, ParseStringError, ParseStringOverflowError from pypy.interpreter.error import OperationError from pypy.interpreter.gateway import NoneNotWrapped def descr__new__(space, w_inttype, w_value=0, w_base=NoneNotWrapped): from pypy.objspace.std.intobject import W_IntObject + w_longval = None if w_base is None: # check for easy cases if isinstance(w_value, W_IntObject): value = w_value.intval elif space.is_true(space.isinstance(w_value, space.w_str)): try: - # XXX can produce unwrapped long - value = string_to_int(space.str_w(w_value)) + value = string_to_int(space, space.str_w(w_value)) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) + except ParseStringOverflowError, e: + e.parser.rewind() + w_longval = string_to_w_long(space, None, base=0, parser=e.parser) else: # otherwise, use the __int__() method w_obj = space.int(w_value) @@ -46,22 +49,20 @@ space.wrap("int() can't convert non-string " "with explicit base")) try: - # XXX can produce unwrapped long, need real long impl to know - # what to do - value = string_to_int(s, base) + value = string_to_int(space, s, base) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) + except ParseStringOverflowError, e: + e.parser.rewind() + w_longval = string_to_w_long(space, None, base, parser=e.parser) - if isinstance(value, long): + if w_longval is not None: if not space.is_true(space.is_(w_inttype, space.w_int)): raise OperationError(space.w_OverflowError, space.wrap( "long int too large to convert to int")) - from pypy.objspace.std.longobject import W_LongObject, args_from_long - w_obj = space.allocate_instance(W_LongObject, space.w_long) - w_obj.__init__(space, *args_from_long(value)) - return w_obj + return w_longval else: w_obj = space.allocate_instance(W_IntObject, w_inttype) w_obj.__init__(space, value) Modified: pypy/dist/pypy/objspace/std/longtype.py ============================================================================== --- pypy/dist/pypy/objspace/std/longtype.py (original) +++ pypy/dist/pypy/objspace/std/longtype.py Wed Apr 27 20:06:00 2005 @@ -1,5 +1,5 @@ from pypy.objspace.std.stdtypedef import * -from pypy.objspace.std.strutil import string_to_long, ParseStringError +from pypy.objspace.std.strutil import string_to_w_long, ParseStringError from pypy.interpreter.error import OperationError from pypy.objspace.std.inttype import int_typedef from pypy.interpreter.gateway import NoneNotWrapped @@ -9,11 +9,10 @@ if w_base is None: # check for easy cases if isinstance(w_value, W_LongObject): - value = w_value.longval() + pass elif space.is_true(space.isinstance(w_value, space.w_str)): try: - # XXX value can be unwrapped long - value = string_to_long(space.str_w(w_value)) + w_value = string_to_w_long(space, space.str_w(w_value)) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) @@ -23,12 +22,21 @@ # 'long(x)' should return whatever x.__long__() returned if space.is_true(space.is_(w_longtype, space.w_long)): return w_obj - value = space.unwrap(w_obj) # XXX value can be unwrapped long - if isinstance(value, int): # XXX typechecking in unwrap! - value = long(value) - if not isinstance(value, long): + if space.is_true(space.isinstance(w_obj, w_long)): + w_value = w_obj + elif space.is_true(space.isinstance(w_obj, w_int)): + intval = space.int_w(w_obj) + # xxx this logic needs to be put in 1 place + if intval < 0: + sign = -1 + elif intval > 0: + sign = 1 + else: + sign = 0 + w_value = W_LongObject(space, [r_uint(abs(intval))], sign) + else: raise OperationError(space.w_ValueError, - space.wrap("value can't be converted to long")) + space.wrap("value can't be converted to long")) else: base = space.int_w(w_base) @@ -43,14 +51,13 @@ space.wrap("long() can't convert non-string " "with explicit base")) try: - # XXX value can be unwrapped long - value = string_to_long(s, base) + w_value = string_to_w_long(space, s, base) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) -#XXX + w_obj = space.allocate_instance(W_LongObject, w_longtype) - w_obj.__init__(space, *args_from_long(value)) + w_obj.__init__(space, w_value.digits, w_value.sign) return w_obj # ____________________________________________________________ Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Wed Apr 27 20:06:00 2005 @@ -242,6 +242,13 @@ def newfloat(self, floatval): return W_FloatObject(self, floatval) + def newlong(self, uint): # for now just take a r_uint + if uint == 0: + sign = 0 + else: + sign = 1 + return W_LongObject(self, [uint], sign) + def newtuple(self, list_w): assert isinstance(list_w, list) return W_TupleObject(self, list_w) Modified: pypy/dist/pypy/objspace/std/strutil.py ============================================================================== --- pypy/dist/pypy/objspace/std/strutil.py (original) +++ pypy/dist/pypy/objspace/std/strutil.py Wed Apr 27 20:06:00 2005 @@ -2,6 +2,8 @@ Pure Python implementation of string utilities. """ +from pypy.tool.rarithmetic import r_uint, ovfcheck + # XXX factor more functions out of stringobject.py. # This module is independent from PyPy. @@ -15,38 +17,59 @@ q -= 1 return s[p:q] -class InvalidLiteral(Exception): - pass - class ParseStringError(Exception): def __init__(self, msg): self.msg = msg -def _parse_string(s, literal, base, fname): - # internal utility for string_to_int() and string_to_long(). - sign = 1 - if s.startswith('-'): - sign = -1 - s = strip_spaces(s[1:]) - elif s.startswith('+'): - s = strip_spaces(s[1:]) - if base == 0: - if s.startswith('0x') or s.startswith('0X'): - base = 16 - elif s.startswith('0'): - base = 8 +class ParseStringOverflowError(Exception): + def __init__(self, parser): + self.parser = parser + +# iterator-like class +class NumberStringParser: + + def error(self): + if self.literal: + raise ParseStringError, 'invalid literal for %s(): %s' % (self.fname, self.literal) else: - base = 10 - elif base < 2 or base > 36: - raise ParseStringError, "%s() base must be >= 2 and <= 36" % (fname,) - try: + raise ParseStringError, 'empty literal for %s()' % (self.fname,) + + def __init__(self, s, literal, base, fname): + self.literal = literal + self.fname = fname + sign = 1 + if s.startswith('-'): + sign = -1 + s = strip_spaces(s[1:]) + elif s.startswith('+'): + s = strip_spaces(s[1:]) + self.sign = sign + + if base == 0: + if s.startswith('0x') or s.startswith('0X'): + base = 16 + elif s.startswith('0'): + base = 8 + else: + base = 10 + elif base < 2 or base > 36: + raise ParseStringError, "%s() base must be >= 2 and <= 36" % (fname,) + self.base = base + if not s: - raise InvalidLiteral + self.error() if base == 16 and (s.startswith('0x') or s.startswith('0X')): s = s[2:] - # XXX uses int-to-long overflow so far - result = 0 - for c in s: + self.s = s + self.n = len(s) + self.i = 0 + + def rewind(self): + self.i = 0 + + def next_digit(self): # -1 => exhausted + if self.i < self.n: + c = self.s[self.i] digit = ord(c) if '0' <= c <= '9': digit -= ord('0') @@ -55,29 +78,59 @@ elif 'a' <= c <= 'z': digit = (digit - ord('a')) + 10 else: - raise InvalidLiteral - if digit >= base: - raise InvalidLiteral - result = result*base + digit - return result * sign - except InvalidLiteral: - if literal: - raise ParseStringError, 'invalid literal for %s(): %s' % (fname, literal) + self.error() + if digit >= self.base: + self.error() + self.i += 1 + return digit else: - raise ParseStringError, 'empty literal for %s()' % (fname,) + return -1 -def string_to_int(s, base=10): +def string_to_int(space, s, base=10): """Utility to converts a string to an integer (or possibly a long). If base is 0, the proper base is guessed based on the leading characters of 's'. Raises ParseStringError in case of error. """ s = literal = strip_spaces(s) - return _parse_string(s, literal, base, 'int') + p = NumberStringParser(s, literal, base, 'int') + base = p.base + result = 0 + while True: + digit = p.next_digit() + if digit == -1: + try: + result = ovfcheck(p.sign*result) + except OverflowError: + raise ParseStringOverflowError(p) + else: + return result + try: + result = ovfcheck(result*base) + result = ovfcheck(result+digit) + except OverflowError: + raise ParseStringOverflowError(p) -def string_to_long(s, base=10): +def string_to_long(space, s, base=10, parser=None): + return string_to_w_long(space, s, base, parser).longval() + +def string_to_w_long(space, s, base=10, parser=None): """As string_to_int(), but ignores an optional 'l' or 'L' suffix.""" - s = literal = strip_spaces(s) - if (s.endswith('l') or s.endswith('L')) and base < 22: - # in base 22 and above, 'L' is a valid digit! try: long('L',22) - s = s[:-1] - return long(_parse_string(s, literal, base, 'long')) + if parser is None: + s = literal = strip_spaces(s) + if (s.endswith('l') or s.endswith('L')) and base < 22: + # in base 22 and above, 'L' is a valid digit! try: long('L',22) + s = s[:-1] + p = NumberStringParser(s, literal, base, 'long') + else: + p = parser + w_base = space.newlong(r_uint(p.base)) + w_result = space.newlong(r_uint(0)) + while True: + digit = p.next_digit() + if digit == -1: + if p.sign == -1: + return space.neg(w_result) + else: + return w_result + w_result = space.add(space.mul(w_result,w_base),space.newlong(r_uint(digit))) + Modified: pypy/dist/pypy/objspace/std/test/test_strutil.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_strutil.py (original) +++ pypy/dist/pypy/objspace/std/test/test_strutil.py Wed Apr 27 20:06:00 2005 @@ -6,6 +6,7 @@ class TestStrUtil: def test_string_to_int(self): + space = self.space cases = [('0', 0), ('1', 1), ('9', 9), @@ -13,7 +14,6 @@ ('09', 9), ('0000101', 101), # not octal unless base 0 or 8 ('5123', 5123), - ('1891234174197319', 1891234174197319), (' 0', 0), ('0 ', 0), (' \t \n 32313 \f \v \r \n\r ', 32313), @@ -24,10 +24,11 @@ (' -123456789 ', -123456789), ] for s, expected in cases: - assert string_to_int(s) == expected - assert string_to_long(s) == expected + assert string_to_int(space, s) == expected + assert string_to_w_long(space, s).longval() == expected def test_string_to_int_base(self): + space = self.space cases = [('111', 2, 7), ('010', 2, 2), ('102', 3, 11), @@ -53,14 +54,15 @@ ('0X', 16, 0), # " " ] for s, base, expected in cases: - assert string_to_int(s, base) == expected - assert string_to_int('+'+s, base) == expected - assert string_to_int('-'+s, base) == -expected - assert string_to_int(s+'\n', base) == expected - assert string_to_int(' +'+s, base) == expected - assert string_to_int('-'+s+' ', base) == -expected + assert string_to_int(space, s, base) == expected + assert string_to_int(space, '+'+s, base) == expected + assert string_to_int(space, '-'+s, base) == -expected + assert string_to_int(space, s+'\n', base) == expected + assert string_to_int(space, ' +'+s, base) == expected + assert string_to_int(space, '-'+s+' ', base) == -expected def test_string_to_int_error(self): + space = self.space cases = ['0x123', # must use base 0 or 16 ' 0X12 ', '', @@ -76,13 +78,18 @@ '@', ] for s in cases: - raises(ParseStringError, string_to_int, s) - raises(ParseStringError, string_to_int, ' '+s) - raises(ParseStringError, string_to_int, s+' ') - raises(ParseStringError, string_to_int, '+'+s) - raises(ParseStringError, string_to_int, '-'+s) + raises(ParseStringError, string_to_int, space, s) + raises(ParseStringError, string_to_int, space, ' '+s) + raises(ParseStringError, string_to_int, space, s+' ') + raises(ParseStringError, string_to_int, space, '+'+s) + raises(ParseStringError, string_to_int, space, '-'+s) + + def test_string_to_int_overflow(self): + space = self.space + raises(ParseStringOverflowError, string_to_int, space,'1891234174197319') def test_string_to_int_base_error(self): + space = self.space cases = [('1', 1), ('1', 37), ('a', 0), @@ -98,18 +105,20 @@ ('12.3', 16), ] for s, base in cases: - raises(ParseStringError, string_to_int, s, base) - raises(ParseStringError, string_to_int, ' '+s, base) - raises(ParseStringError, string_to_int, s+' ', base) - raises(ParseStringError, string_to_int, '+'+s, base) - raises(ParseStringError, string_to_int, '-'+s, base) - - def test_string_to_long(self): - assert string_to_long('123L') == 123 - assert string_to_long('123L ') == 123 - raises(ParseStringError, string_to_long, 'L') - raises(ParseStringError, string_to_long, 'L ') - assert string_to_long('123L', 4) == 27 - assert string_to_long('123L', 30) == 27000 + 1800 + 90 + 21 - assert string_to_long('123L', 22) == 10648 + 968 + 66 + 21 - assert string_to_long('123L', 21) == 441 + 42 + 3 + raises(ParseStringError, string_to_int, space, s, base) + raises(ParseStringError, string_to_int, space, ' '+s, base) + raises(ParseStringError, string_to_int, space, s+' ', base) + raises(ParseStringError, string_to_int, space, '+'+s, base) + raises(ParseStringError, string_to_int, space, '-'+s, base) + + def test_string_to_w_long(self): + space = self.space + assert string_to_w_long(space, '123L').longval() == 123 + assert string_to_w_long(space, '123L ').longval() == 123 + raises(ParseStringError, string_to_w_long, space, 'L') + raises(ParseStringError, string_to_w_long, space, 'L ') + assert string_to_w_long(space, '123L', 4).longval() == 27 + assert string_to_w_long(space, '123L', 30).longval() == 27000 + 1800 + 90 + 21 + assert string_to_w_long(space, '123L', 22).longval() == 10648 + 968 + 66 + 21 + assert string_to_w_long(space, '123L', 21).longval() == 441 + 42 + 3 + assert string_to_w_long(space, '1891234174197319').longval() == 1891234174197319 Modified: pypy/dist/pypy/objspace/std/unicodeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/unicodeobject.py (original) +++ pypy/dist/pypy/objspace/std/unicodeobject.py Wed Apr 27 20:06:00 2005 @@ -1,7 +1,7 @@ from pypy.objspace.std.objspace import * from pypy.objspace.std.fake import fake_type, wrap_exception from pypy.objspace.std.stringobject import W_StringObject -from pypy.objspace.std.strutil import string_to_int, string_to_long, ParseStringError +from pypy.objspace.std.strutil import string_to_w_long, ParseStringError W_UnicodeObject = fake_type(unicode) @@ -75,23 +75,25 @@ except: wrap_exception(space) +# xxx unicode.__float__ should not exist. For now this approach avoids to deal with unicode in more places def float__Unicode(space, w_uni): try: return space.wrap(float(unicode_to_decimal_w(space, w_uni))) except: wrap_exception(space) - + +# xxx unicode.__int__ should not exist def int__Unicode(space, w_uni): try: - return space.wrap(string_to_int(unicode_to_decimal_w(space, w_uni))) - except ParseStringError, e: - raise OperationError(space.w_ValueError, space.wrap(e.msg)) + s = unicode_to_decimal_w(space, w_uni) except: wrap_exception(space) + return space.call_function(space.w_int, space.wrap(s)) +# xxx unicode.__long__ should not exist def long__Unicode(space, w_uni): try: - return space.wrap(string_to_long(unicode_to_decimal_w(space, w_uni))) + return string_to_w_long(space, unicode_to_decimal_w(space, w_uni)) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) except: From pedronis at codespeak.net Wed Apr 27 20:13:46 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 20:13:46 +0200 (CEST) Subject: [pypy-svn] r11543 - pypy/dist/pypy/interpreter/test Message-ID: <20050427181346.1D0E827B9E@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 20:13:45 2005 New Revision: 11543 Modified: pypy/dist/pypy/interpreter/test/test_gateway.py Log: make test portable Modified: pypy/dist/pypy/interpreter/test/test_gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/test/test_gateway.py (original) +++ pypy/dist/pypy/interpreter/test/test_gateway.py Wed Apr 27 20:13:45 2005 @@ -2,6 +2,7 @@ import autopath from pypy.interpreter import gateway import py +import sys class TestBuiltinCode: def test_signature(self): @@ -184,7 +185,7 @@ w_app_g3_i = space.wrap(app_g3_i) assert space.eq_w(space.call_function(w_app_g3_i,w(1)),w(1)) assert space.eq_w(space.call_function(w_app_g3_i,w(1L)),w(1)) - raises(gateway.OperationError,space.call_function,w_app_g3_i,w(2**32)) + raises(gateway.OperationError,space.call_function,w_app_g3_i,w(sys.maxint*2)) raises(gateway.OperationError,space.call_function,w_app_g3_i,w(None)) raises(gateway.OperationError,space.call_function,w_app_g3_i,w("foo")) raises(gateway.OperationError,space.call_function,w_app_g3_i,w(1.0)) From arigo at codespeak.net Wed Apr 27 20:21:40 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 20:21:40 +0200 (CEST) Subject: [pypy-svn] r11544 - in pypy/dist/pypy: interpreter objspace objspace/flow objspace/std objspace/std/test objspace/test Message-ID: <20050427182140.9E7AB27BA0@code1.codespeak.net> Author: arigo Date: Wed Apr 27 20:21:40 2005 New Revision: 11544 Modified: pypy/dist/pypy/interpreter/baseobjspace.py pypy/dist/pypy/interpreter/pyopcode.py pypy/dist/pypy/objspace/descroperation.py pypy/dist/pypy/objspace/flow/objspace.py pypy/dist/pypy/objspace/std/objspace.py pypy/dist/pypy/objspace/std/sliceobject.py pypy/dist/pypy/objspace/std/test/test_stringobject.py pypy/dist/pypy/objspace/test/test_descroperation.py Log: Clean up of space.newslice(). Now it always takes wrapped Nones. Moved the logic of __getslice__&co into a space.getslice() operation, which by default does just the sane thing, i.e. space.getitem(space.newslice(...)). The standard object space overrides it to look for the deprecated __getslice__ family of methods. Modified: pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/dist/pypy/interpreter/baseobjspace.py (original) +++ pypy/dist/pypy/interpreter/baseobjspace.py Wed Apr 27 20:21:40 2005 @@ -146,6 +146,17 @@ else: return self.w_False + # support for the deprecated __getslice__, __setslice__, __delslice__ + def getslice(self, w_obj, w_start, w_stop): + w_slice = self.newslice(w_start, w_stop, self.w_None) + return self.getitem(w_obj, w_slice) + def setslice(self, w_obj, w_start, w_stop, w_sequence): + w_slice = self.newslice(w_start, w_stop, self.w_None) + self.setitem(w_obj, w_slice, w_sequence) + def delslice(self, w_obj, w_start, w_stop): + w_slice = self.newslice(w_start, w_stop, self.w_None) + self.delitem(w_obj, w_slice) + def interpclass_w(space, w_obj): """ If w_obj is a wrapped internal interpreter class instance unwrap to it, @@ -465,7 +476,7 @@ # newlist([w_1, w_2,...]) -> w_list # newstring([w_1, w_2,...]) -> w_string from ascii numbers (bytes) # newdict([(w_key,w_value),...]) -> w_dict -# newslice(w_start,w_stop,w_step) -> w_slice (any argument may be a real None) +# newslice(w_start,w_stop,w_step) -> w_slice # call_args(w_obj,Arguments()) -> w_result ObjSpace.IrregularOpTable = [ Modified: pypy/dist/pypy/interpreter/pyopcode.py ============================================================================== --- pypy/dist/pypy/interpreter/pyopcode.py (original) +++ pypy/dist/pypy/interpreter/pyopcode.py Wed Apr 27 20:21:40 2005 @@ -201,21 +201,20 @@ INPLACE_OR = binaryoperation("inplace_or") def slice(f, w_start, w_end): - w_slice = f.space.newslice(w_start, w_end, None) w_obj = f.valuestack.pop() - w_result = f.space.getitem(w_obj, w_slice) + w_result = f.space.getslice(w_obj, w_start, w_end) f.valuestack.push(w_result) def SLICE_0(f): - f.slice(None, None) + f.slice(f.space.w_None, f.space.w_None) def SLICE_1(f): w_start = f.valuestack.pop() - f.slice(w_start, None) + f.slice(w_start, f.space.w_None) def SLICE_2(f): w_end = f.valuestack.pop() - f.slice(None, w_end) + f.slice(f.space.w_None, w_end) def SLICE_3(f): w_end = f.valuestack.pop() @@ -223,21 +222,20 @@ f.slice(w_start, w_end) def storeslice(f, w_start, w_end): - w_slice = f.space.newslice(w_start, w_end, None) w_obj = f.valuestack.pop() w_newvalue = f.valuestack.pop() - f.space.setitem(w_obj, w_slice, w_newvalue) + f.space.setslice(w_obj, w_start, w_end, w_newvalue) def STORE_SLICE_0(f): - f.storeslice(None, None) + f.storeslice(f.space.w_None, f.space.w_None) def STORE_SLICE_1(f): w_start = f.valuestack.pop() - f.storeslice(w_start, None) + f.storeslice(w_start, f.space.w_None) def STORE_SLICE_2(f): w_end = f.valuestack.pop() - f.storeslice(None, w_end) + f.storeslice(f.space.w_None, w_end) def STORE_SLICE_3(f): w_end = f.valuestack.pop() @@ -245,20 +243,19 @@ f.storeslice(w_start, w_end) def deleteslice(f, w_start, w_end): - w_slice = f.space.newslice(w_start, w_end, None) w_obj = f.valuestack.pop() - f.space.delitem(w_obj, w_slice) + f.space.delslice(w_obj, w_start, w_end) def DELETE_SLICE_0(f): - f.deleteslice(None, None) + f.deleteslice(f.space.w_None, f.space.w_None) def DELETE_SLICE_1(f): w_start = f.valuestack.pop() - f.deleteslice(w_start, None) + f.deleteslice(w_start, f.space.w_None) def DELETE_SLICE_2(f): w_end = f.valuestack.pop() - f.deleteslice(None, w_end) + f.deleteslice(f.space.w_None, w_end) def DELETE_SLICE_3(f): w_end = f.valuestack.pop() @@ -668,7 +665,7 @@ if numargs == 3: w_step = f.valuestack.pop() elif numargs == 2: - w_step = None + w_step = f.space.w_None else: raise pyframe.BytecodeCorruption w_end = f.valuestack.pop() Modified: pypy/dist/pypy/objspace/descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/descroperation.py (original) +++ pypy/dist/pypy/objspace/descroperation.py Wed Apr 27 20:21:40 2005 @@ -1,4 +1,4 @@ -import operator, sys +import operator from pypy.interpreter.error import OperationError from pypy.interpreter.baseobjspace import ObjSpace, W_Root, BaseWrappable from pypy.interpreter.function import Function @@ -180,30 +180,7 @@ space.wrap("iterator has no next() method")) return space.get_and_call_function(w_descr, w_obj) - def _oldstyle_slice_range(space, w_obj, w_key): - w_start = space.getattr(w_key, space.wrap('start')) - w_stop = space.getattr(w_key, space.wrap('stop')) - if space.is_w(w_start, space.w_None): - w_start = space.wrap(0) - elif space.is_true(space.lt(w_start, space.wrap(0))): - w_start = space.add(w_start, space.len(w_obj)) - # NB. the language ref is inconsistent with the new-style class - # behavior when w_obj doesn't implement __len__(), so we just - # ignore this case. - if space.is_w(w_stop, space.w_None): - w_stop = space.wrap(sys.maxint) - elif space.is_true(space.lt(w_stop, space.wrap(0))): - w_stop = space.add(w_stop, space.len(w_obj)) - return w_start, w_stop - def getitem(space, w_obj, w_key): - if space.is_true(space.isinstance(w_key, space.w_slice)): - if space.is_w(space.getattr(w_key, space.wrap('step')), space.w_None): - w_descr = space.lookup(w_obj, '__getslice__') - if w_descr is not None: - w_start, w_stop = space._oldstyle_slice_range(w_obj, w_key) - return space.get_and_call_function(w_descr, w_obj, - w_start, w_stop) w_descr = space.lookup(w_obj, '__getitem__') if w_descr is None: raise OperationError(space.w_TypeError, @@ -211,14 +188,6 @@ return space.get_and_call_function(w_descr, w_obj, w_key) def setitem(space, w_obj, w_key, w_val): - if space.is_true(space.isinstance(w_key, space.w_slice)): - if space.is_w(space.getattr(w_key, space.wrap('step')), space.w_None): - w_descr = space.lookup(w_obj, '__setslice__') - if w_descr is not None: - w_start, w_stop = space._oldstyle_slice_range(w_obj, w_key) - return space.get_and_call_function(w_descr, w_obj, - w_start, w_stop, - w_val) w_descr = space.lookup(w_obj, '__setitem__') if w_descr is None: raise OperationError(space.w_TypeError, @@ -226,13 +195,6 @@ return space.get_and_call_function(w_descr, w_obj, w_key, w_val) def delitem(space, w_obj, w_key): - if space.is_true(space.isinstance(w_key, space.w_slice)): - if space.is_w(space.getattr(w_key, space.wrap('step')), space.w_None): - w_descr = space.lookup(w_obj, '__delslice__') - if w_descr is not None: - w_start, w_stop = space._oldstyle_slice_range(w_obj, w_key) - return space.get_and_call_function(w_descr, w_obj, - w_start, w_stop) w_descr = space.lookup(w_obj, '__delitem__') if w_descr is None: raise OperationError(space.w_TypeError, Modified: pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/flow/objspace.py (original) +++ pypy/dist/pypy/objspace/flow/objspace.py Wed Apr 27 20:21:40 2005 @@ -103,10 +103,7 @@ return Constant(content) return self.do_operation('newlist', *args_w) - def newslice(self, w_start=None, w_stop=None, w_step=None): - if w_start is None: w_start = self.w_None - if w_stop is None: w_stop = self.w_None - if w_step is None: w_step = self.w_None + def newslice(self, w_start, w_stop, w_step): if self.concrete_mode: return Constant(slice(self.unwrap(w_start), self.unwrap(w_stop), Modified: pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- pypy/dist/pypy/objspace/std/objspace.py (original) +++ pypy/dist/pypy/objspace/std/objspace.py Wed Apr 27 20:21:40 2005 @@ -10,6 +10,7 @@ from pypy.objspace.descroperation import DescrOperation from pypy.objspace.std import stdtypedef import types +import sys def registerimplementation(implcls): @@ -260,9 +261,6 @@ return W_DictObject(self, list_pairs_w) def newslice(self, w_start, w_end, w_step): - # w_step may be a real None - if w_step is None: - w_step = self.w_None return W_SliceObject(self, w_start, w_end, w_step) def newstring(self, chars_w): @@ -320,6 +318,32 @@ else: return DescrOperation.is_true(self, w_obj) + # support for the deprecated __getslice__, __setslice__, __delslice__ + + def getslice(self, w_obj, w_start, w_stop): + w_descr = self.lookup(w_obj, '__getslice__') + if w_descr is not None: + w_start, w_stop = old_slice_range(self, w_obj, w_start, w_stop) + return self.get_and_call_function(w_descr, w_obj, w_start, w_stop) + else: + return ObjSpace.getslice(self, w_obj, w_start, w_stop) + + def setslice(self, w_obj, w_start, w_stop, w_sequence): + w_descr = self.lookup(w_obj, '__setslice__') + if w_descr is not None: + w_start, w_stop = old_slice_range(self, w_obj, w_start, w_stop) + self.get_and_call_function(w_descr, w_obj, w_start, w_stop, + w_sequence) + else: + ObjSpace.setslice(self, w_obj, w_start, w_stop, w_sequence) + + def delslice(self, w_obj, w_start, w_stop): + w_descr = self.lookup(w_obj, '__delslice__') + if w_descr is not None: + w_start, w_stop = old_slice_range(self, w_obj, w_start, w_stop) + self.get_and_call_function(w_descr, w_obj, w_start, w_stop) + else: + ObjSpace.delslice(self, w_obj, w_start, w_stop) class MM: "Container for multimethods." @@ -340,3 +364,20 @@ del mm pow.extras['defaults'] = (None,) + + + +def old_slice_range(space, w_obj, w_start, w_stop): + """Only for backward compatibility for __getslice__()&co methods.""" + if space.is_w(w_start, space.w_None): + w_start = space.wrap(0) + elif space.is_true(space.lt(w_start, space.wrap(0))): + w_start = space.add(w_start, space.len(w_obj)) + # NB. the language ref is inconsistent with the new-style class + # behavior when w_obj doesn't implement __len__(), so we just + # ignore this case. + if space.is_w(w_stop, space.w_None): + w_stop = space.wrap(sys.maxint) + elif space.is_true(space.lt(w_stop, space.wrap(0))): + w_stop = space.add(w_stop, space.len(w_obj)) + return w_start, w_stop Modified: pypy/dist/pypy/objspace/std/sliceobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/sliceobject.py (original) +++ pypy/dist/pypy/objspace/std/sliceobject.py Wed Apr 27 20:21:40 2005 @@ -14,6 +14,9 @@ def __init__(w_self, space, w_start, w_stop, w_step): W_Object.__init__(w_self, space) + assert w_start is not None + assert w_stop is not None + assert w_step is not None w_self.w_start = w_start w_self.w_stop = w_stop w_self.w_step = w_step Modified: pypy/dist/pypy/objspace/std/test/test_stringobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_stringobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_stringobject.py Wed Apr 27 20:21:40 2005 @@ -75,22 +75,22 @@ w = space.wrap w_str = w('abc') - w_slice = space.newslice(w(0), w(0), None) + w_slice = space.newslice(w(0), w(0), space.w_None) assert self.space.eq_w(space.getitem(w_str, w_slice), w('')) - w_slice = space.newslice(w(0), w(1), None) + w_slice = space.newslice(w(0), w(1), space.w_None) assert self.space.eq_w(space.getitem(w_str, w_slice), w('a')) - w_slice = space.newslice(w(0), w(10), None) + w_slice = space.newslice(w(0), w(10), space.w_None) assert self.space.eq_w(space.getitem(w_str, w_slice), w('abc')) - w_slice = space.newslice(space.w_None, space.w_None, None) + w_slice = space.newslice(space.w_None, space.w_None, space.w_None) assert self.space.eq_w(space.getitem(w_str, w_slice), w('abc')) - w_slice = space.newslice(space.w_None, w(-1), None) + w_slice = space.newslice(space.w_None, w(-1), space.w_None) assert self.space.eq_w(space.getitem(w_str, w_slice), w('ab')) - w_slice = space.newslice(w(-1), space.w_None, None) + w_slice = space.newslice(w(-1), space.w_None, space.w_None) assert self.space.eq_w(space.getitem(w_str, w_slice), w('c')) def test_extended_slice(self): Modified: pypy/dist/pypy/objspace/test/test_descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/test/test_descroperation.py (original) +++ pypy/dist/pypy/objspace/test/test_descroperation.py Wed Apr 27 20:21:40 2005 @@ -22,6 +22,8 @@ assert sq[-1:3] == (99, 3) assert sq[1:-3] == (1, 97) assert sq[-1:-3] == (99, 97) + # extended slice syntax always uses __getitem__() + assert sq[::] == "booh" def test_setslice(self): class Sq(object): From arigo at codespeak.net Wed Apr 27 20:51:37 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 20:51:37 +0200 (CEST) Subject: [pypy-svn] r11545 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050427185137.7ED2E27BA0@code1.codespeak.net> Author: arigo Date: Wed Apr 27 20:51:36 2005 New Revision: 11545 Modified: pypy/dist/pypy/objspace/std/listobject.py pypy/dist/pypy/objspace/std/test/test_listobject.py pypy/dist/pypy/objspace/std/test/test_sliceobject.py Log: - fixed a crash with list slice assignments like lst[:-3] = [] - removed an old unittest-ism in test_sliceobject.py Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Wed Apr 27 20:51:36 2005 @@ -279,7 +279,7 @@ newsize = oldsize + delta _list_resize(w_list, newsize) w_list.ob_size = newsize - r = range(stop+delta, newsize) + r = range(start+len2, newsize) if delta > 0: r.reverse() items = w_list.ob_item Modified: pypy/dist/pypy/objspace/std/test/test_listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_listobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_listobject.py Wed Apr 27 20:51:36 2005 @@ -388,6 +388,9 @@ l = range(6) l[1:3] = 'abc' assert l == [0, 'a', 'b', 'c', 3, 4, 5] + l = [] + l[:-3] = [] + assert l == [] def test_recursive_repr(self): l = [] Modified: pypy/dist/pypy/objspace/std/test/test_sliceobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_sliceobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_sliceobject.py Wed Apr 27 20:51:36 2005 @@ -4,22 +4,17 @@ class TestW_SliceObject: - def equal_indices(self, got, expected): - assert len(got) == len(expected) - for g, e in zip(got, expected): - assert g == e - def test_indices(self): from pypy.objspace.std import slicetype space = self.space w = space.wrap w_None = space.w_None w_slice = space.newslice(w_None, w_None, w_None) - self.equal_indices(slicetype.indices3(space, w_slice, 6), (0, 6, 1)) + assert slicetype.indices3(space, w_slice, 6) == (0, 6, 1) w_slice = space.newslice(w(0), w(6), w(1)) - self.equal_indices(slicetype.indices3(space, w_slice, 6), (0, 6, 1)) + assert slicetype.indices3(space, w_slice, 6) == (0, 6, 1) w_slice = space.newslice(w_None, w_None, w(-1)) - self.equal_indices(slicetype.indices3(space, w_slice, 6), (5, -1, -1)) + assert slicetype.indices3(space, w_slice, 6) == (5, -1, -1) def test_indices_fail(self): from pypy.objspace.std import slicetype From tismer at codespeak.net Wed Apr 27 21:14:28 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 27 Apr 2005 21:14:28 +0200 (CEST) Subject: [pypy-svn] r11546 - in pypy/dist/pypy: annotation translator Message-ID: <20050427191428.99A3627BA0@code1.codespeak.net> Author: tismer Date: Wed Apr 27 21:14:28 2005 New Revision: 11546 Modified: pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/translator/annrpython.py Log: - added the special attribute "can_only_throw" to integer binary operations. - changed annrpython to respect this attribute and to not follow exceptions which cannot happen. Both unaryop and binaryop are handled - need to add more of these. unaryop didn't get any entries,yet. Modified: pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- pypy/dist/pypy/annotation/binaryop.py (original) +++ pypy/dist/pypy/annotation/binaryop.py Wed Apr 27 21:14:28 2005 @@ -147,6 +147,14 @@ def coerce((obj1, obj2)): return pair(obj1, obj2).union() # reasonable enough +# cloning a function with identical code, for the can_only_throw attribute +def _clone(f, can_only_throw = None): + newfunc = type(f)(f.func_code, f.func_globals, f.func_name, + f.func_defaults, f.func_closure) + if can_only_throw is not None: + newfunc.can_only_throw = can_only_throw + return newfunc + class __extend__(pairtype(SomeInteger, SomeInteger)): # unsignedness is considered a rare and contagious disease @@ -156,30 +164,35 @@ unsigned=unsigned) - add = mul = div = floordiv = mod = or_ = xor = union + add = mul = or_ = xor = _clone(union, []) + div = floordiv = mod = _clone(union, [ZeroDivisionError]) def truediv((int1, int2)): return SomeFloat() + truediv.can_only_throw = [ZeroDivisionError] def sub((int1, int2)): return SomeInteger(unsigned = int1.unsigned or int2.unsigned) + sub.can_only_throw = [] def and_((int1, int2)): unsigned = int1.unsigned or int2.unsigned return SomeInteger(nonneg = unsigned or int1.nonneg or int2.nonneg, unsigned = unsigned) + and_.can_only_throw = [] def lshift((int1, int2)): if int1.unsigned: return SomeInteger(unsigned=True) return SomeInteger() - + lshift.can_only_throw = [] rshift = lshift def pow((int1, int2), obj3): if int1.unsigned or int2.unsigned or getattr(obj3, 'unsigned', False): return SomeInteger(unsigned=True) return SomeInteger() + pow.can_only_throw = [ZeroDivisionError] class __extend__(pairtype(SomeBool, SomeBool)): Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Wed Apr 27 21:14:28 2005 @@ -397,6 +397,32 @@ if link.exitcase == s_exitswitch.const] knownvars, knownvarvalue = getattr(self.bindings.get(block.exitswitch), "knowntypedata", (None, None)) + + if block.exitswitch == Constant(last_exception): + op = block.operations[-1] + if op.opname in annmodel.BINARY_OPERATIONS: + arg1 = self.binding(op.args[0]) + arg2 = self.binding(op.args[1]) + binop = getattr(pair(arg1, arg2), op.opname, None) + can_only_throw = getattr(binop, "can_only_throw", None) + elif op.opname in annmodel.UNARY_OPERATIONS: + arg1 = self.binding(op.args[0]) + unop = getattr(arg1, op.opname, None) + can_only_throw = getattr(unop, "can_only_throw", None) + else: + can_only_throw = None + if can_only_throw is not None: + exits = [link + for link in exits + if link.exitcase is None + or link.exitcase in can_only_throw ] + print can_only_throw + print exits + print len(exits) + for link in exits: + print link, link.exitcase + print 100*"*" + for link in exits: self.links_followed[link] = True import types From arigo at codespeak.net Wed Apr 27 21:18:25 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 21:18:25 +0200 (CEST) Subject: [pypy-svn] r11547 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050427191825.1075627BA0@code1.codespeak.net> Author: arigo Date: Wed Apr 27 21:18:24 2005 New Revision: 11547 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: Skipping more modules... Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 21:18:24 2005 @@ -30,7 +30,7 @@ r_timeout = re.compile(r"""==========================timeout========================== """) -r_importerror = re.compile(r"ImportError: (\w+)") +r_importerror = re.compile(r"ImportError: (.+)") # Linux list below. May need to add a few ones for Windows... IGNORE_MODULES = """ @@ -42,15 +42,18 @@ cmath grp ossaudiodev sha _weakref cPickle _hotshot parser _socket xreadlines crypt imageop pcre _ssl zlib - cStringIO itertools pwd strop - _csv linuxaudiodev pyexpat struct - _curses_panel _locale _random syslog - _curses math readline termios + cStringIO itertools pwd strop _winreg + _csv linuxaudiodev pyexpat struct winsound + _curses_panel _locale _random syslog aetools + _curses math readline termios sunaudiodev thread + signal """.split() +IGNORE_MODULES.append("no XML parsers available") +IGNORE_MODULES.append("test_support must be imported from the test package") class Result: pts = '?' @@ -81,6 +84,8 @@ self.pts = '' # doesn't count in our total elif self.finalline.startswith('TestSkipped: '): self.pts = '' + elif self.finalline == 'skipping curses': + self.pts = '' else: self.finalline = 'TIME OUT' self.pts = 'T/O' From arigo at codespeak.net Wed Apr 27 21:18:57 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 27 Apr 2005 21:18:57 +0200 (CEST) Subject: [pypy-svn] r11548 - in pypy/dist/pypy: lib module Message-ID: <20050427191857.9C47D27BA0@code1.codespeak.net> Author: arigo Date: Wed Apr 27 21:18:56 2005 New Revision: 11548 Modified: pypy/dist/pypy/lib/_classobj.py pypy/dist/pypy/module/classobjinterp.py Log: Implemented __getslice__&co for old-style instances. Regenerated the monstruous thing that should go out of svn soon. Modified: pypy/dist/pypy/lib/_classobj.py ============================================================================== --- pypy/dist/pypy/lib/_classobj.py (original) +++ pypy/dist/pypy/lib/_classobj.py Wed Apr 27 21:18:56 2005 @@ -347,26 +347,35 @@ raise TypeError("__len__() should return an int") def __getitem__(self, key): - if isinstance(key, slice) and key.step is None: - func = instance_getattr1(self, '__getslice__', False) - if func: - return func(key.start, key.stop) return instance_getattr1(self, '__getitem__')(key) def __setitem__(self, key, value): - if isinstance(key, slice) and key.step is None: - func = instance_getattr1(self, '__setslice__', False) - if func: - func(key.start, key.stop, value) instance_getattr1(self, '__setitem__')(key, value) def __delitem__(self, key): - if isinstance(key, slice) and key.step is None: - func = instance_getattr1(self, '__delslice__', False) - if func: - func(key.start, key.stop) instance_getattr1(self, '__delitem__')(key) + def __getslice__(self, i, j): + func = instance_getattr1(self, '__getslice__', False) + if func: + return func(i, j) + else: + return self[i:j:] + + def __setslice__(self, i, j, sequence): + func = instance_getattr1(self, '__setslice__', False) + if func: + func(i, j, sequence) + else: + self[i:j:] = sequence + + def __delslice__(self, i, j): + func = instance_getattr1(self, '__delslice__', False) + if func: + func(i, j) + else: + del self[i:j:] + def __contains__(self, obj): func = instance_getattr1(self, '__contains__', False) if func: Modified: pypy/dist/pypy/module/classobjinterp.py ============================================================================== --- pypy/dist/pypy/module/classobjinterp.py (original) +++ pypy/dist/pypy/module/classobjinterp.py Wed Apr 27 21:18:56 2005 @@ -2588,9 +2588,6 @@ ## function '__getitem__' ## firstlineno 349 ##SECTION## -# global declaration -# global object gs___getslice__ - def __getitem__(space, __args__): funcname = "__getitem__" signature = ['self', 'key'], None, None @@ -2605,68 +2602,21 @@ while True: if goto == 1: - w_0 = space.isinstance(w_key, space.w_slice) - v0 = space.is_true(w_0) - if v0 == True: - w_self_1, w_key_1 = w_self, w_key - goto = 2 - else: - assert v0 == False - w_key_2, w_1 = w_key, w_self - goto = 5 + w_0 = space.call_function(gfunc_instance_getattr1, w_self, gs___getitem__) + w_1 = space.call_function(w_0, w_key) + w_2 = w_1 + goto = 2 if goto == 2: - w_2 = space.getattr(w_key_1, gs_step) - w_3 = space.is_(w_2, space.w_None) - v1 = space.is_true(w_3) - if v1 == True: - w_self_2, w_key_3 = w_self_1, w_key_1 - goto = 3 - else: - assert v1 == False - w_key_2, w_1 = w_key_1, w_self_1 - goto = 5 - - if goto == 3: - w_4 = space.call_function(gfunc_instance_getattr1, w_self_2, gs___getslice__, space.w_False) - v2 = space.is_true(w_4) - if v2 == True: - w_key_4, w_5 = w_key_3, w_4 - goto = 4 - else: - assert v2 == False - w_key_2, w_1 = w_key_3, w_self_2 - goto = 5 - - if goto == 4: - w_6 = space.getattr(w_key_4, gs_start) - w_7 = space.getattr(w_key_4, gs_stop) - w_8 = space.call_function(w_5, w_6, w_7) - w_9 = w_8 - goto = 6 - - if goto == 5: - w_10 = space.call_function(gfunc_instance_getattr1, w_1, gs___getitem__) - w_11 = space.call_function(w_10, w_key_2) - w_9 = w_11 - goto = 6 - - if goto == 6: - return w_9 + return w_2 fastf_instance___getitem__ = __getitem__ ##SECTION## ## filename 'lib/_classobj.py' ## function '__setitem__' -## firstlineno 356 +## firstlineno 352 ##SECTION## -# global declarations -# global object gs_step -# global object gs___setslice__ -# global object gs_start -# global object gs_stop - def __setitem__(space, __args__): funcname = "__setitem__" signature = ['self', 'key', 'value'], None, None @@ -2681,66 +2631,21 @@ while True: if goto == 1: - w_0 = space.isinstance(w_key, space.w_slice) - v0 = space.is_true(w_0) - if v0 == True: - w_self_1, w_key_1, w_value_1 = w_self, w_key, w_value - goto = 2 - else: - assert v0 == False - w_key_2, w_value_2, w_1 = w_key, w_value, w_self - goto = 5 + w_0 = space.call_function(gfunc_instance_getattr1, w_self, gs___setitem__) + w_1 = space.call_function(w_0, w_key, w_value) + w_2 = space.w_None + goto = 2 if goto == 2: - w_2 = space.getattr(w_key_1, gs_step) - w_3 = space.is_(w_2, space.w_None) - v1 = space.is_true(w_3) - if v1 == True: - w_self_2, w_key_3, w_value_3 = w_self_1, w_key_1, w_value_1 - goto = 3 - else: - assert v1 == False - w_key_2, w_value_2, w_1 = w_key_1, w_value_1, w_self_1 - goto = 5 - - if goto == 3: - w_4 = space.call_function(gfunc_instance_getattr1, w_self_2, gs___setslice__, space.w_False) - v2 = space.is_true(w_4) - if v2 == True: - (w_self_3, w_key_4, w_value_4, w_5) = (w_self_2, w_key_3, - w_value_3, w_4) - goto = 4 - else: - assert v2 == False - w_key_2, w_value_2, w_1 = w_key_3, w_value_3, w_self_2 - goto = 5 - - if goto == 4: - w_6 = space.getattr(w_key_4, gs_start) - w_7 = space.getattr(w_key_4, gs_stop) - w_8 = space.call_function(w_5, w_6, w_7, w_value_4) - w_key_2, w_value_2, w_1 = w_key_4, w_value_4, w_self_3 - goto = 5 - - if goto == 5: - w_9 = space.call_function(gfunc_instance_getattr1, w_1, gs___setitem__) - w_10 = space.call_function(w_9, w_key_2, w_value_2) - w_11 = space.w_None - goto = 6 - - if goto == 6: - return w_11 + return w_2 fastf_instance___setitem__ = __setitem__ ##SECTION## ## filename 'lib/_classobj.py' ## function '__delitem__' -## firstlineno 363 +## firstlineno 355 ##SECTION## -# global declaration -# global object gs___delslice__ - def __delitem__(space, __args__): funcname = "__delitem__" signature = ['self', 'key'], None, None @@ -2755,61 +2660,155 @@ while True: if goto == 1: - w_0 = space.isinstance(w_key, space.w_slice) + w_0 = space.call_function(gfunc_instance_getattr1, w_self, gs___delitem__) + w_1 = space.call_function(w_0, w_key) + w_2 = space.w_None + goto = 2 + + if goto == 2: + return w_2 + + fastf_instance___delitem__ = __delitem__ + +##SECTION## +## filename 'lib/_classobj.py' +## function '__getslice__' +## firstlineno 358 +##SECTION## + def __getslice__(space, __args__): + funcname = "__getslice__" + signature = ['self', 'i', 'j'], None, None + defaults_w = [] + w_self, w_i, w_j = __args__.parse(funcname, signature, defaults_w) + return fastf_instance___getslice__(space, w_self, w_i, w_j) + + f_instance___getslice__ = __getslice__ + + def __getslice__(space, w_self, w_i, w_j): + goto = 1 # startblock + while True: + + if goto == 1: + w_0 = space.call_function(gfunc_instance_getattr1, w_self, gs___getslice__, space.w_False) v0 = space.is_true(w_0) if v0 == True: - w_self_1, w_key_1 = w_self, w_key + w_1, w_2, w_3 = w_0, w_i, w_j goto = 2 else: assert v0 == False - w_key_2, w_1 = w_key, w_self - goto = 5 + w_4, w_5, w_6 = w_self, w_i, w_j + goto = 3 if goto == 2: - w_2 = space.getattr(w_key_1, gs_step) - w_3 = space.is_(w_2, space.w_None) - v1 = space.is_true(w_3) - if v1 == True: - w_self_2, w_key_3 = w_self_1, w_key_1 - goto = 3 - else: - assert v1 == False - w_key_2, w_1 = w_key_1, w_self_1 - goto = 5 + w_7 = space.call_function(w_1, w_2, w_3) + w_8 = w_7 + goto = 4 if goto == 3: - w_4 = space.call_function(gfunc_instance_getattr1, w_self_2, gs___delslice__, space.w_False) - v2 = space.is_true(w_4) - if v2 == True: - w_self_3, w_key_4, w_5 = w_self_2, w_key_3, w_4 - goto = 4 + w_9 = space.newslice(w_5, w_6, space.w_None) + w_10 = space.getitem(w_4, w_9) + w_8 = w_10 + goto = 4 + + if goto == 4: + return w_8 + + fastf_instance___getslice__ = __getslice__ + +##SECTION## +## filename 'lib/_classobj.py' +## function '__setslice__' +## firstlineno 365 +##SECTION## + def __setslice__(space, __args__): + funcname = "__setslice__" + signature = ['self', 'i', 'j', 'sequence'], None, None + defaults_w = [] + w_self, w_i, w_j, w_sequence = __args__.parse(funcname, signature, defaults_w) + return fastf_instance___setslice__(space, w_self, w_i, w_j, w_sequence) + + f_instance___setslice__ = __setslice__ + + def __setslice__(space, w_self, w_i, w_j, w_sequence): + goto = 1 # startblock + while True: + + if goto == 1: + w_0 = space.call_function(gfunc_instance_getattr1, w_self, gs___setslice__, space.w_False) + v0 = space.is_true(w_0) + if v0 == True: + w_1, w_2, w_3, w_4 = w_0, w_i, w_j, w_sequence + goto = 2 else: - assert v2 == False - w_key_2, w_1 = w_key_3, w_self_2 - goto = 5 + assert v0 == False + w_5, w_6, w_7, w_8 = w_sequence, w_self, w_i, w_j + goto = 3 + + if goto == 2: + w_9 = space.call_function(w_1, w_2, w_3, w_4) + w_10 = space.w_None + goto = 4 + + if goto == 3: + w_11 = space.newslice(w_7, w_8, space.w_None) + w_12 = space.setitem(w_6, w_11, w_5) + w_10 = space.w_None + goto = 4 if goto == 4: - w_6 = space.getattr(w_key_4, gs_start) - w_7 = space.getattr(w_key_4, gs_stop) - w_8 = space.call_function(w_5, w_6, w_7) - w_key_2, w_1 = w_key_4, w_self_3 - goto = 5 + return w_10 - if goto == 5: - w_9 = space.call_function(gfunc_instance_getattr1, w_1, gs___delitem__) - w_10 = space.call_function(w_9, w_key_2) - w_11 = space.w_None - goto = 6 + fastf_instance___setslice__ = __setslice__ - if goto == 6: - return w_11 +##SECTION## +## filename 'lib/_classobj.py' +## function '__delslice__' +## firstlineno 372 +##SECTION## + def __delslice__(space, __args__): + funcname = "__delslice__" + signature = ['self', 'i', 'j'], None, None + defaults_w = [] + w_self, w_i, w_j = __args__.parse(funcname, signature, defaults_w) + return fastf_instance___delslice__(space, w_self, w_i, w_j) - fastf_instance___delitem__ = __delitem__ + f_instance___delslice__ = __delslice__ + + def __delslice__(space, w_self, w_i, w_j): + goto = 1 # startblock + while True: + + if goto == 1: + w_0 = space.call_function(gfunc_instance_getattr1, w_self, gs___delslice__, space.w_False) + v0 = space.is_true(w_0) + if v0 == True: + w_1, w_2, w_3 = w_0, w_i, w_j + goto = 2 + else: + assert v0 == False + w_4, w_5, w_6 = w_self, w_i, w_j + goto = 3 + + if goto == 2: + w_7 = space.call_function(w_1, w_2, w_3) + w_8 = space.w_None + goto = 4 + + if goto == 3: + w_9 = space.newslice(w_5, w_6, space.w_None) + w_10 = space.delitem(w_4, w_9) + w_8 = space.w_None + goto = 4 + + if goto == 4: + return w_8 + + fastf_instance___delslice__ = __delslice__ ##SECTION## ## filename 'lib/_classobj.py' ## function '__contains__' -## firstlineno 370 +## firstlineno 379 ##SECTION## def __contains__(space, __args__): funcname = "__contains__" @@ -2878,7 +2877,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__abs__' -## firstlineno 385 +## firstlineno 394 ##SECTION## def __abs__(space, __args__): funcname = "__abs__" @@ -2907,7 +2906,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__float__' -## firstlineno 385 +## firstlineno 394 ##SECTION## def __float__(space, __args__): funcname = "__float__" @@ -2936,7 +2935,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__hex__' -## firstlineno 385 +## firstlineno 394 ##SECTION## def __hex__(space, __args__): funcname = "__hex__" @@ -2965,7 +2964,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__int__' -## firstlineno 385 +## firstlineno 394 ##SECTION## def __int__(space, __args__): funcname = "__int__" @@ -2994,7 +2993,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__invert__' -## firstlineno 385 +## firstlineno 394 ##SECTION## def __invert__(space, __args__): funcname = "__invert__" @@ -3023,7 +3022,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__long__' -## firstlineno 385 +## firstlineno 394 ##SECTION## def __long__(space, __args__): funcname = "__long__" @@ -3052,7 +3051,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__neg__' -## firstlineno 385 +## firstlineno 394 ##SECTION## def __neg__(space, __args__): funcname = "__neg__" @@ -3081,7 +3080,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__oct__' -## firstlineno 385 +## firstlineno 394 ##SECTION## def __oct__(space, __args__): funcname = "__oct__" @@ -3110,7 +3109,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__pos__' -## firstlineno 385 +## firstlineno 394 ##SECTION## def __pos__(space, __args__): funcname = "__pos__" @@ -3139,7 +3138,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__coerce__' -## firstlineno 391 +## firstlineno 400 ##SECTION## def __coerce__(space, __args__): funcname = "__coerce__" @@ -3178,7 +3177,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__add__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __add__(space, __args__): funcname = "__add__" @@ -3248,7 +3247,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__and__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __and__(space, __args__): funcname = "__and__" @@ -3318,7 +3317,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__div__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __div__(space, __args__): funcname = "__div__" @@ -3388,7 +3387,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__divmod__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __divmod__(space, __args__): funcname = "__divmod__" @@ -3458,7 +3457,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__floordiv__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __floordiv__(space, __args__): funcname = "__floordiv__" @@ -3528,7 +3527,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__lshift__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __lshift__(space, __args__): funcname = "__lshift__" @@ -3598,7 +3597,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__mod__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __mod__(space, __args__): funcname = "__mod__" @@ -3668,7 +3667,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__mul__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __mul__(space, __args__): funcname = "__mul__" @@ -3738,7 +3737,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__or__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __or__(space, __args__): funcname = "__or__" @@ -3808,7 +3807,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rshift__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __rshift__(space, __args__): funcname = "__rshift__" @@ -3878,7 +3877,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__sub__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __sub__(space, __args__): funcname = "__sub__" @@ -3948,7 +3947,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__truediv__' -## firstlineno 408 +## firstlineno 417 ##SECTION## def __truediv__(space, __args__): funcname = "__truediv__" @@ -4018,7 +4017,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__xor__' -## firstlineno 408 +## firstlineno 417 ##SECTION## # global declaration # global object gfunc__coerce @@ -4091,7 +4090,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__radd__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __radd__(space, __args__): funcname = "__radd__" @@ -4161,7 +4160,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rand__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rand__(space, __args__): funcname = "__rand__" @@ -4231,7 +4230,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rdiv__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rdiv__(space, __args__): funcname = "__rdiv__" @@ -4301,7 +4300,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rdivmod__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rdivmod__(space, __args__): funcname = "__rdivmod__" @@ -4371,7 +4370,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rfloordiv__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rfloordiv__(space, __args__): funcname = "__rfloordiv__" @@ -4441,7 +4440,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rlshift__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rlshift__(space, __args__): funcname = "__rlshift__" @@ -4511,7 +4510,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rmod__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rmod__(space, __args__): funcname = "__rmod__" @@ -4581,7 +4580,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rmul__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rmul__(space, __args__): funcname = "__rmul__" @@ -4651,7 +4650,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__ror__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __ror__(space, __args__): funcname = "__ror__" @@ -4721,7 +4720,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rrshift__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rrshift__(space, __args__): funcname = "__rrshift__" @@ -4791,7 +4790,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rsub__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rsub__(space, __args__): funcname = "__rsub__" @@ -4861,7 +4860,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rtruediv__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rtruediv__(space, __args__): funcname = "__rtruediv__" @@ -4931,7 +4930,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rxor__' -## firstlineno 418 +## firstlineno 427 ##SECTION## def __rxor__(space, __args__): funcname = "__rxor__" @@ -5001,7 +5000,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__iadd__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __iadd__(space, __args__): funcname = "__iadd__" @@ -5040,7 +5039,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__iand__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __iand__(space, __args__): funcname = "__iand__" @@ -5079,7 +5078,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__idiv__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __idiv__(space, __args__): funcname = "__idiv__" @@ -5118,7 +5117,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__ifloordiv__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __ifloordiv__(space, __args__): funcname = "__ifloordiv__" @@ -5157,7 +5156,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__ilshift__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __ilshift__(space, __args__): funcname = "__ilshift__" @@ -5196,7 +5195,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__imod__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __imod__(space, __args__): funcname = "__imod__" @@ -5235,7 +5234,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__imul__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __imul__(space, __args__): funcname = "__imul__" @@ -5274,7 +5273,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__ior__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __ior__(space, __args__): funcname = "__ior__" @@ -5313,7 +5312,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__ipow__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __ipow__(space, __args__): funcname = "__ipow__" @@ -5352,7 +5351,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__irshift__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __irshift__(space, __args__): funcname = "__irshift__" @@ -5391,7 +5390,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__isub__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __isub__(space, __args__): funcname = "__isub__" @@ -5430,7 +5429,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__itruediv__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __itruediv__(space, __args__): funcname = "__itruediv__" @@ -5469,7 +5468,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__ixor__' -## firstlineno 436 +## firstlineno 445 ##SECTION## def __ixor__(space, __args__): funcname = "__ixor__" @@ -5508,7 +5507,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__pow__' -## firstlineno 445 +## firstlineno 454 ##SECTION## def __pow__(space, __args__): funcname = "__pow__" @@ -5605,7 +5604,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__rpow__' -## firstlineno 463 +## firstlineno 472 ##SECTION## def __rpow__(space, __args__): funcname = "__rpow__" @@ -5702,7 +5701,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__nonzero__' -## firstlineno 481 +## firstlineno 490 ##SECTION## # global declarations # global object gs___nonzero_____should_return____0 @@ -5830,7 +5829,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__call__' -## firstlineno 496 +## firstlineno 505 ##SECTION## # global declaration # global object gs__s_instance_has_no___call___meth @@ -5913,7 +5912,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__eq__' -## firstlineno 507 +## firstlineno 516 ##SECTION## def __eq__(space, __args__): funcname = "__eq__" @@ -5985,7 +5984,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__ge__' -## firstlineno 507 +## firstlineno 516 ##SECTION## def __ge__(space, __args__): funcname = "__ge__" @@ -6057,7 +6056,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__gt__' -## firstlineno 507 +## firstlineno 516 ##SECTION## def __gt__(space, __args__): funcname = "__gt__" @@ -6129,7 +6128,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__le__' -## firstlineno 507 +## firstlineno 516 ##SECTION## def __le__(space, __args__): funcname = "__le__" @@ -6201,7 +6200,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__lt__' -## firstlineno 507 +## firstlineno 516 ##SECTION## def __lt__(space, __args__): funcname = "__lt__" @@ -6273,7 +6272,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__ne__' -## firstlineno 507 +## firstlineno 516 ##SECTION## def __ne__(space, __args__): funcname = "__ne__" @@ -6345,7 +6344,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__iter__' -## firstlineno 516 +## firstlineno 525 ##SECTION## # global declarations # global object gs___iter___returned_non_iterator_o @@ -6456,7 +6455,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function 'next' -## firstlineno 531 +## firstlineno 540 ##SECTION## # global declaration # global object gs_instance_has_no_next___method @@ -6506,7 +6505,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function '__cmp__' -## firstlineno 537 +## firstlineno 546 ##SECTION## # global declarations # global object gi_minus_1 @@ -6699,7 +6698,7 @@ ##SECTION## ## filename 'lib/_classobj.py' ## function 'purify' -## firstlineno 575 +## firstlineno 584 ##SECTION## # global declarations # global object g3tuple @@ -6769,6 +6768,8 @@ # global object gfunc_instance___delattr__ # global object gs___delitem__ # global object gfunc_instance___delitem__ +# global object gs___delslice__ +# global object gfunc_instance___delslice__ # global object gs___div__ # global object gfunc_instance___div__ # global object gs___divmod__ @@ -6785,6 +6786,8 @@ # global object gfunc_instance___getattribute__ # global object gs___getitem__ # global object gfunc_instance___getitem__ +# global object gs___getslice__ +# global object gfunc_instance___getslice__ # global object gs___gt__ # global object gfunc_instance___gt__ # global object gs___hash__ @@ -6887,6 +6890,8 @@ # global object gfunc_instance___setattr__ # global object gs___setitem__ # global object gfunc_instance___setitem__ +# global object gs___setslice__ +# global object gfunc_instance___setslice__ # global object gs___str__ # global object gfunc_instance___str__ # global object gs___sub__ @@ -6965,6 +6970,9 @@ gs___delitem__ = space.wrap('__delitem__') gfunc_instance___delitem__ = space.wrap(gateway.interp2app(f_instance___delitem__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_instance, gs___delitem__, gfunc_instance___delitem__) + gs___delslice__ = space.wrap('__delslice__') + gfunc_instance___delslice__ = space.wrap(gateway.interp2app(f_instance___delslice__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) + space.setattr(gcls_instance, gs___delslice__, gfunc_instance___delslice__) gs___div__ = space.wrap('__div__') gfunc_instance___div__ = space.wrap(gateway.interp2app(f_instance___div__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_instance, gs___div__, gfunc_instance___div__) @@ -6989,6 +6997,9 @@ gs___getitem__ = space.wrap('__getitem__') gfunc_instance___getitem__ = space.wrap(gateway.interp2app(f_instance___getitem__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_instance, gs___getitem__, gfunc_instance___getitem__) + gs___getslice__ = space.wrap('__getslice__') + gfunc_instance___getslice__ = space.wrap(gateway.interp2app(f_instance___getslice__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) + space.setattr(gcls_instance, gs___getslice__, gfunc_instance___getslice__) gs___gt__ = space.wrap('__gt__') gfunc_instance___gt__ = space.wrap(gateway.interp2app(f_instance___gt__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_instance, gs___gt__, gfunc_instance___gt__) @@ -7142,6 +7153,9 @@ gs___setitem__ = space.wrap('__setitem__') gfunc_instance___setitem__ = space.wrap(gateway.interp2app(f_instance___setitem__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_instance, gs___setitem__, gfunc_instance___setitem__) + gs___setslice__ = space.wrap('__setslice__') + gfunc_instance___setslice__ = space.wrap(gateway.interp2app(f_instance___setslice__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) + space.setattr(gcls_instance, gs___setslice__, gfunc_instance___setslice__) gs___str__ = space.wrap('__str__') gfunc_instance___str__ = space.wrap(gateway.interp2app(f_instance___str__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_instance, gs___str__, gfunc_instance___str__) @@ -7216,10 +7230,6 @@ """%s instance has no attribute %s""") gs_instance_has_no_next___method = space.wrap('instance has no next() method') gfunc__coerce = space.wrap(gateway.interp2app(f__coerce, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) - gs_step = space.wrap('step') - gs___setslice__ = space.wrap('__setslice__') - gs_start = space.wrap('start') - gs_stop = space.wrap('stop') gs___dict___must_be_set_to_a_dictio = space.wrap( """__dict__ must be set to a dictionary""") gs___class___must_be_set_to_a_class = space.wrap( @@ -7238,9 +7248,7 @@ gs_unhashable_instance = space.wrap('unhashable instance') gs___hash_____should_return_an_int = space.wrap( """__hash__() should return an int""") - gs___getslice__ = space.wrap('__getslice__') gs___getattr__ = space.wrap('__getattr__') - gs___delslice__ = space.wrap('__delslice__') g2tuple_2 = space.newtuple([gs___dict__, gs___class__]) gs__s_instance_has_no_attribute___s = space.wrap( """%s instance has no attribute '%s'""") From pedronis at codespeak.net Wed Apr 27 21:27:08 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 21:27:08 +0200 (CEST) Subject: [pypy-svn] r11549 - in pypy/dist/pypy: lib module Message-ID: <20050427192708.28D0B27BA0@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 21:27:07 2005 New Revision: 11549 Modified: pypy/dist/pypy/lib/_classobj.py pypy/dist/pypy/module/classobjinterp.py Log: fix __nonzero__ for oldstyle classes Modified: pypy/dist/pypy/lib/_classobj.py ============================================================================== --- pypy/dist/pypy/lib/_classobj.py (original) +++ pypy/dist/pypy/lib/_classobj.py Wed Apr 27 21:27:07 2005 @@ -490,7 +490,7 @@ def __nonzero__(self): func = instance_getattr1(self, '__nonzero__', False) if not func: - func = instance_getattr1(self, '__nonzero__', False) + func = instance_getattr1(self, '__len__', False) if not func: # default to true return True ret = func() Modified: pypy/dist/pypy/module/classobjinterp.py ============================================================================== --- pypy/dist/pypy/module/classobjinterp.py (original) +++ pypy/dist/pypy/module/classobjinterp.py Wed Apr 27 21:27:07 2005 @@ -2373,111 +2373,120 @@ w_2 = space.call_function(gfunc_instance_getattr1, w_self, gs___hash__, space.w_False) v0 = space.is_true(w_0) if v0 == True: - w_self_1, w__hash = w_self, w_2 - goto = 3 + w_self_1, w__hash, w_3 = w_self, w_2, w_0 + goto = 2 else: assert v0 == False - w_self_2, w__hash_1, w_3 = w_self, w_2, w_1 + w_self_1, w__hash, w_3 = w_self, w_2, w_1 goto = 2 if goto == 2: v1 = space.is_true(w_3) if v1 == True: - w_self_1, w__hash = w_self_2, w__hash_1 + w_self_2, w__hash_1 = w_self_1, w__hash goto = 3 else: assert v1 == False - w_self_3, w__hash_2 = w_self_2, w__hash_1 - goto = 5 + w_self_3, w__hash_2, w_4 = w_self_1, w__hash, w_3 + goto = 4 if goto == 3: - v2 = space.is_true(w__hash) + v2 = space.is_true(w__hash_1) if v2 == True: - w_self_3, w__hash_2 = w_self_1, w__hash - goto = 5 + w_self_4, w__hash_3 = w_self_2, w__hash_1 + goto = 6 else: assert v2 == False - goto = 4 + goto = 5 if goto == 4: - w_4 = space.call_function(space.w_TypeError, gs_unhashable_instance) - w_5 = space.type(w_4) - w_6 = space.issubtype(w_5, space.w_type) - v3 = space.is_true(w_6) + v3 = space.is_true(w_4) if v3 == True: - w_7 = w_4 - goto = 8 + goto = 5 else: assert v3 == False - w_8 = w_4 - goto = 7 + w_self_4, w__hash_3 = w_self_3, w__hash_2 + goto = 6 if goto == 5: - v4 = space.is_true(w__hash_2) + w_5 = space.call_function(space.w_TypeError, gs_unhashable_instance) + w_6 = space.type(w_5) + w_7 = space.issubtype(w_6, space.w_type) + v4 = space.is_true(w_7) if v4 == True: - w_9 = w__hash_2 - goto = 6 + w_8 = w_5 + goto = 9 else: assert v4 == False - w_10 = w_self_3 - goto = 12 + w_9 = w_5 + goto = 8 if goto == 6: - w_11 = space.call_function(w_9, ) - w_12 = space.isinstance(w_11, space.w_int) - v5 = space.is_true(w_12) + v5 = space.is_true(w__hash_3) if v5 == True: - w_13 = w_11 - goto = 14 + w_10 = w__hash_3 + goto = 7 else: assert v5 == False - goto = 9 + w_11 = w_self_4 + goto = 13 if goto == 7: - w_14 = space.type(w_8) - w_etype, w_evalue = w_14, w_8 - goto = 13 - - if goto == 8: - w_15 = space.call_function(w_7, ) - w_16 = space.type(w_15) - w_etype, w_evalue = w_16, w_15 - goto = 13 - - if goto == 9: - w_17 = space.call_function(space.w_TypeError, gs___hash_____should_return_an_int) - w_18 = space.type(w_17) - w_19 = space.issubtype(w_18, space.w_type) - v6 = space.is_true(w_19) + w_12 = space.call_function(w_10, ) + w_13 = space.isinstance(w_12, space.w_int) + v6 = space.is_true(w_13) if v6 == True: - w_20 = w_17 - goto = 11 + w_14 = w_12 + goto = 15 else: assert v6 == False - w_21 = w_17 goto = 10 + if goto == 8: + w_15 = space.type(w_9) + w_etype, w_evalue = w_15, w_9 + goto = 14 + + if goto == 9: + w_16 = space.call_function(w_8, ) + w_17 = space.type(w_16) + w_etype, w_evalue = w_17, w_16 + goto = 14 + if goto == 10: - w_22 = space.type(w_21) - w_etype, w_evalue = w_22, w_21 - goto = 13 + w_18 = space.call_function(space.w_TypeError, gs___hash_____should_return_an_int) + w_19 = space.type(w_18) + w_20 = space.issubtype(w_19, space.w_type) + v7 = space.is_true(w_20) + if v7 == True: + w_21 = w_18 + goto = 12 + else: + assert v7 == False + w_22 = w_18 + goto = 11 if goto == 11: - w_23 = space.call_function(w_20, ) - w_24 = space.type(w_23) - w_etype, w_evalue = w_24, w_23 - goto = 13 + w_23 = space.type(w_22) + w_etype, w_evalue = w_23, w_22 + goto = 14 if goto == 12: - w_25 = space.id(w_10) - w_13 = w_25 + w_24 = space.call_function(w_21, ) + w_25 = space.type(w_24) + w_etype, w_evalue = w_25, w_24 goto = 14 if goto == 13: - raise gOperationError(w_etype, w_evalue) + w_26 = space.id(w_11) + w_14 = w_26 + goto = 15 if goto == 14: - return w_13 + raise gOperationError(w_etype, w_evalue) + + if goto == 15: + return w_14 fastf_instance___hash__ = __hash__ @@ -3197,50 +3206,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___add__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___add__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.add(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.add(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___add__ = __add__ @@ -3267,50 +3281,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___and__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___and__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.and_(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.and_(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___and__ = __and__ @@ -3337,50 +3356,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___div__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___div__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.div(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.div(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___div__ = __div__ @@ -3407,50 +3431,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___divmod__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___divmod__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.divmod(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.divmod(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___divmod__ = __divmod__ @@ -3477,50 +3506,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___floordiv__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___floordiv__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.floordiv(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.floordiv(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___floordiv__ = __floordiv__ @@ -3547,50 +3581,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___lshift__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___lshift__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.lshift(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.lshift(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___lshift__ = __lshift__ @@ -3617,50 +3656,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___mod__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___mod__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.mod(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.mod(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___mod__ = __mod__ @@ -3687,50 +3731,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 + + if goto == 3: + v1 = space.is_true(w_2) if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 + w_other_3, w_5 = w_other_1, w_self_1 + goto = 4 else: assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_coerced_2 = w_coerced + goto = 6 - if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___mul__, space.w_False) - v2 = space.is_true(w_5) + if goto == 4: + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___mul__, space.w_False) + v2 = space.is_true(w_6) if v2 == True: - w_6, w_7 = w_5, w_other_1 - goto = 4 + w_7, w_8 = w_6, w_other_3 + goto = 5 else: assert v2 == False - w_8 = space.w_NotImplemented - goto = 6 - - if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.mul(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.mul(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___mul__ = __mul__ @@ -3757,50 +3806,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___or__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___or__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.or_(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.or_(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___or__ = __or__ @@ -3827,50 +3881,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rshift__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rshift__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.rshift(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.rshift(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rshift__ = __rshift__ @@ -3897,50 +3956,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___sub__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___sub__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.sub(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.sub(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___sub__ = __sub__ @@ -3967,50 +4031,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___truediv__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___truediv__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.truediv(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.truediv(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___truediv__ = __truediv__ @@ -4040,50 +4109,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___xor__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___xor__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_0) - w_11 = space.getitem(w_coerced_1, gi_1) - w_12 = space.xor(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_0) + w_12 = space.getitem(w_coerced_2, gi_1) + w_13 = space.xor(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___xor__ = __xor__ @@ -4110,50 +4184,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___radd__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___radd__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.add(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.add(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___radd__ = __radd__ @@ -4180,50 +4259,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rand__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rand__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.and_(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.and_(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rand__ = __rand__ @@ -4250,50 +4334,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rdiv__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rdiv__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.div(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.div(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rdiv__ = __rdiv__ @@ -4320,50 +4409,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rdivmod__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rdivmod__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.divmod(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.divmod(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rdivmod__ = __rdivmod__ @@ -4390,50 +4484,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rfloordiv__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rfloordiv__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.floordiv(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.floordiv(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rfloordiv__ = __rfloordiv__ @@ -4460,50 +4559,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rlshift__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rlshift__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.lshift(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.lshift(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rlshift__ = __rlshift__ @@ -4530,50 +4634,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 - if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + if goto == 2: + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rmod__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rmod__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.mod(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.mod(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rmod__ = __rmod__ @@ -4600,50 +4709,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rmul__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rmul__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.mul(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.mul(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rmul__ = __rmul__ @@ -4670,50 +4784,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___ror__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___ror__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.or_(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.or_(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___ror__ = __ror__ @@ -4740,50 +4859,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rrshift__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rrshift__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.rshift(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.rshift(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rrshift__ = __rrshift__ @@ -4810,50 +4934,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rsub__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rsub__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.sub(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.sub(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rsub__ = __rsub__ @@ -4880,50 +5009,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rtruediv__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rtruediv__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.truediv(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.truediv(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rtruediv__ = __rtruediv__ @@ -4950,50 +5084,55 @@ w_1 = space.is_(w_0, space.w_None) v0 = space.is_true(w_1) if v0 == True: - w_other_1, w_2 = w_other, w_self + w_self_1, w_other_1, w_coerced, w_2 = w_self, w_other, w_0, w_1 goto = 3 else: assert v0 == False - w_self_1, w_other_2, w_coerced = w_self, w_other, w_0 + w_self_2, w_other_2, w_coerced_1 = w_self, w_other, w_0 goto = 2 if goto == 2: - w_3 = space.getitem(w_coerced, gi_0) - w_4 = space.is_(w_3, w_self_1) - v1 = space.is_true(w_4) - if v1 == True: - w_other_1, w_2 = w_other_2, w_self_1 - goto = 3 - else: - assert v1 == False - w_coerced_1 = w_coerced - goto = 5 + w_3 = space.getitem(w_coerced_1, gi_0) + w_4 = space.is_(w_3, w_self_2) + (w_self_1, w_other_1, w_coerced, w_2) = (w_self_2, w_other_2, + w_coerced_1, w_4) + goto = 3 if goto == 3: - w_5 = space.call_function(gfunc_instance_getattr1, w_2, gs___rxor__, space.w_False) - v2 = space.is_true(w_5) - if v2 == True: - w_6, w_7 = w_5, w_other_1 + v1 = space.is_true(w_2) + if v1 == True: + w_other_3, w_5 = w_other_1, w_self_1 goto = 4 else: - assert v2 == False - w_8 = space.w_NotImplemented + assert v1 == False + w_coerced_2 = w_coerced goto = 6 if goto == 4: - w_9 = space.call_function(w_6, w_7) - w_8 = w_9 - goto = 6 + w_6 = space.call_function(gfunc_instance_getattr1, w_5, gs___rxor__, space.w_False) + v2 = space.is_true(w_6) + if v2 == True: + w_7, w_8 = w_6, w_other_3 + goto = 5 + else: + assert v2 == False + w_9 = space.w_NotImplemented + goto = 7 if goto == 5: - w_10 = space.getitem(w_coerced_1, gi_1) - w_11 = space.getitem(w_coerced_1, gi_0) - w_12 = space.xor(w_10, w_11) - w_8 = w_12 - goto = 6 + w_10 = space.call_function(w_7, w_8) + w_9 = w_10 + goto = 7 if goto == 6: - return w_8 + w_11 = space.getitem(w_coerced_2, gi_1) + w_12 = space.getitem(w_coerced_2, gi_0) + w_13 = space.xor(w_11, w_12) + w_9 = w_13 + goto = 7 + + if goto == 7: + return w_9 fastf_instance___rxor__ = __rxor__ @@ -5531,73 +5670,79 @@ else: assert v0 == False w_other_2, w_modulo_1, w_1 = w_other, w_modulo, w_self - goto = 7 + goto = 8 if goto == 2: w_2 = fastf__coerce(space, w_self_1, w_other_1) w_3 = space.is_(w_2, space.w_None) v1 = space.is_true(w_3) if v1 == True: - w_other_3, w_4 = w_other_1, w_self_1 + (w_self_2, w_other_3, w_coerced, w_4) = (w_self_1, w_other_1, w_2, + w_3) goto = 4 else: assert v1 == False - w_self_2, w_other_4, w_coerced = w_self_1, w_other_1, w_2 + w_self_3, w_other_4, w_coerced_1 = w_self_1, w_other_1, w_2 goto = 3 if goto == 3: - w_5 = space.getitem(w_coerced, gi_0) - w_6 = space.is_(w_5, w_self_2) - v2 = space.is_true(w_6) + w_5 = space.getitem(w_coerced_1, gi_0) + w_6 = space.is_(w_5, w_self_3) + (w_self_2, w_other_3, w_coerced, w_4) = (w_self_3, w_other_4, + w_coerced_1, w_6) + goto = 4 + + if goto == 4: + v2 = space.is_true(w_4) if v2 == True: - w_other_3, w_4 = w_other_4, w_self_2 - goto = 4 + w_other_5, w_7 = w_other_3, w_self_2 + goto = 5 else: assert v2 == False - w_coerced_1 = w_coerced - goto = 6 + w_coerced_2 = w_coerced + goto = 7 - if goto == 4: - w_7 = space.call_function(gfunc_instance_getattr1, w_4, gs___pow__, space.w_False) - v3 = space.is_true(w_7) + if goto == 5: + w_8 = space.call_function(gfunc_instance_getattr1, w_7, gs___pow__, space.w_False) + v3 = space.is_true(w_8) if v3 == True: - w_8, w_9 = w_7, w_other_3 - goto = 5 + w_9, w_10 = w_8, w_other_5 + goto = 6 else: assert v3 == False - w_10 = space.w_NotImplemented - goto = 9 - - if goto == 5: - w_11 = space.call_function(w_8, w_9) - w_10 = w_11 - goto = 9 + w_11 = space.w_NotImplemented + goto = 10 if goto == 6: - w_12 = space.getitem(w_coerced_1, gi_0) - w_13 = space.getitem(w_coerced_1, gi_1) - w_14 = space.pow(w_12, w_13, space.w_None) - w_10 = w_14 - goto = 9 + w_12 = space.call_function(w_9, w_10) + w_11 = w_12 + goto = 10 if goto == 7: - w_15 = space.call_function(gfunc_instance_getattr1, w_1, gs___pow__, space.w_False) - v4 = space.is_true(w_15) + w_13 = space.getitem(w_coerced_2, gi_0) + w_14 = space.getitem(w_coerced_2, gi_1) + w_15 = space.pow(w_13, w_14, space.w_None) + w_11 = w_15 + goto = 10 + + if goto == 8: + w_16 = space.call_function(gfunc_instance_getattr1, w_1, gs___pow__, space.w_False) + v4 = space.is_true(w_16) if v4 == True: - w_16, w_17, w_18 = w_15, w_other_2, w_modulo_1 - goto = 8 + w_17, w_18, w_19 = w_16, w_other_2, w_modulo_1 + goto = 9 else: assert v4 == False - w_10 = space.w_NotImplemented - goto = 9 - - if goto == 8: - w_19 = space.call_function(w_16, w_17, w_18) - w_10 = w_19 - goto = 9 + w_11 = space.w_NotImplemented + goto = 10 if goto == 9: - return w_10 + w_20 = space.call_function(w_17, w_18, w_19) + w_11 = w_20 + goto = 10 + + if goto == 10: + return w_11 fastf_instance___pow__ = __pow__ @@ -5628,73 +5773,79 @@ else: assert v0 == False w_other_2, w_modulo_1, w_1 = w_other, w_modulo, w_self - goto = 7 + goto = 8 if goto == 2: w_2 = fastf__coerce(space, w_self_1, w_other_1) w_3 = space.is_(w_2, space.w_None) v1 = space.is_true(w_3) if v1 == True: - w_other_3, w_4 = w_other_1, w_self_1 + (w_self_2, w_other_3, w_coerced, w_4) = (w_self_1, w_other_1, w_2, + w_3) goto = 4 else: assert v1 == False - w_self_2, w_other_4, w_coerced = w_self_1, w_other_1, w_2 + w_self_3, w_other_4, w_coerced_1 = w_self_1, w_other_1, w_2 goto = 3 if goto == 3: - w_5 = space.getitem(w_coerced, gi_0) - w_6 = space.is_(w_5, w_self_2) - v2 = space.is_true(w_6) + w_5 = space.getitem(w_coerced_1, gi_0) + w_6 = space.is_(w_5, w_self_3) + (w_self_2, w_other_3, w_coerced, w_4) = (w_self_3, w_other_4, + w_coerced_1, w_6) + goto = 4 + + if goto == 4: + v2 = space.is_true(w_4) if v2 == True: - w_other_3, w_4 = w_other_4, w_self_2 - goto = 4 + w_other_5, w_7 = w_other_3, w_self_2 + goto = 5 else: assert v2 == False - w_coerced_1 = w_coerced - goto = 6 + w_coerced_2 = w_coerced + goto = 7 - if goto == 4: - w_7 = space.call_function(gfunc_instance_getattr1, w_4, gs___rpow__, space.w_False) - v3 = space.is_true(w_7) + if goto == 5: + w_8 = space.call_function(gfunc_instance_getattr1, w_7, gs___rpow__, space.w_False) + v3 = space.is_true(w_8) if v3 == True: - w_8, w_9 = w_7, w_other_3 - goto = 5 + w_9, w_10 = w_8, w_other_5 + goto = 6 else: assert v3 == False - w_10 = space.w_NotImplemented - goto = 9 - - if goto == 5: - w_11 = space.call_function(w_8, w_9) - w_10 = w_11 - goto = 9 + w_11 = space.w_NotImplemented + goto = 10 if goto == 6: - w_12 = space.getitem(w_coerced_1, gi_1) - w_13 = space.getitem(w_coerced_1, gi_0) - w_14 = space.pow(w_12, w_13, space.w_None) - w_10 = w_14 - goto = 9 + w_12 = space.call_function(w_9, w_10) + w_11 = w_12 + goto = 10 if goto == 7: - w_15 = space.call_function(gfunc_instance_getattr1, w_1, gs___rpow__, space.w_False) - v4 = space.is_true(w_15) + w_13 = space.getitem(w_coerced_2, gi_1) + w_14 = space.getitem(w_coerced_2, gi_0) + w_15 = space.pow(w_13, w_14, space.w_None) + w_11 = w_15 + goto = 10 + + if goto == 8: + w_16 = space.call_function(gfunc_instance_getattr1, w_1, gs___rpow__, space.w_False) + v4 = space.is_true(w_16) if v4 == True: - w_16, w_17, w_18 = w_15, w_other_2, w_modulo_1 - goto = 8 + w_17, w_18, w_19 = w_16, w_other_2, w_modulo_1 + goto = 9 else: assert v4 == False - w_10 = space.w_NotImplemented - goto = 9 - - if goto == 8: - w_19 = space.call_function(w_16, w_17, w_18) - w_10 = w_19 - goto = 9 + w_11 = space.w_NotImplemented + goto = 10 if goto == 9: - return w_10 + w_20 = space.call_function(w_17, w_18, w_19) + w_11 = w_20 + goto = 10 + + if goto == 10: + return w_11 fastf_instance___rpow__ = __rpow__ @@ -5732,7 +5883,7 @@ goto = 2 if goto == 2: - w_3 = space.call_function(gfunc_instance_getattr1, w_2, gs___nonzero__, space.w_False) + w_3 = space.call_function(gfunc_instance_getattr1, w_2, gs___len__, space.w_False) v1 = space.is_true(w_3) if v1 == True: w_1 = w_3 From hpk at codespeak.net Wed Apr 27 22:46:37 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 22:46:37 +0200 (CEST) Subject: [pypy-svn] r11552 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050427204637.7CCFF27BA0@code1.codespeak.net> Author: hpk Date: Wed Apr 27 22:46:37 2005 New Revision: 11552 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: ups! fixed typo which caused all tests to run oldstyle ... Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 22:46:37 2005 @@ -366,7 +366,7 @@ self.enabled = enabled self.testclass = testclass self.modified = modified - self.oldstyle = True + self.oldstyle = oldstyle testmap = { 'test_MimeWriter.py' : TestDecl(False, OutputTestModule), From hpk at codespeak.net Wed Apr 27 22:57:43 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 27 Apr 2005 22:57:43 +0200 (CEST) Subject: [pypy-svn] r11553 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050427205743.88C5F27BA0@code1.codespeak.net> Author: hpk Date: Wed Apr 27 22:57:43 2005 New Revision: 11553 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: add information if we run in oldstyle mode Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Wed Apr 27 22:57:43 2005 @@ -827,6 +827,7 @@ print >> resultfile, "run by: %s@%s" % (username, socket.gethostname()) print >> resultfile, "sys.platform:", sys.platform print >> resultfile, "sys.version_info:", sys.version_info + print >> resultfile, "oldstyle:", self.testdecl.oldstyle and 'yes' or 'no' print >> resultfile, "startdate:", time.ctime() print >> resultfile, 'pypy-revision:', getrev(pypydir) if outputfilename: From pedronis at codespeak.net Wed Apr 27 23:42:38 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 23:42:38 +0200 (CEST) Subject: [pypy-svn] r11554 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050427214238.8F0A027BB2@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 23:42:38 2005 New Revision: 11554 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: start listing ignorable old SGI Irix ext modules Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 23:42:38 2005 @@ -52,6 +52,8 @@ """.split() +IGNORE_MODULES.extend("al cd cl".split()) # old SGI IRIX extensions + IGNORE_MODULES.append("no XML parsers available") IGNORE_MODULES.append("test_support must be imported from the test package") From pedronis at codespeak.net Wed Apr 27 23:56:02 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 23:56:02 +0200 (CEST) Subject: [pypy-svn] r11555 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050427215602.A072727BB2@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 23:56:02 2005 New Revision: 11555 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: more ignorable c exts existing on various platforms Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 23:56:02 2005 @@ -47,13 +47,17 @@ _curses_panel _locale _random syslog aetools _curses math readline termios sunaudiodev + bsddb185 + thread signal """.split() +IGNORE_MODULES.extend("aepack".split()) # Mac ext stuff IGNORE_MODULES.extend("al cd cl".split()) # old SGI IRIX extensions + IGNORE_MODULES.append("no XML parsers available") IGNORE_MODULES.append("test_support must be imported from the test package") From pedronis at codespeak.net Wed Apr 27 23:57:08 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 27 Apr 2005 23:57:08 +0200 (CEST) Subject: [pypy-svn] r11556 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050427215708.C406127BB3@code1.codespeak.net> Author: pedronis Date: Wed Apr 27 23:57:08 2005 New Revision: 11556 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: ws sanity Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Wed Apr 27 23:57:08 2005 @@ -57,7 +57,6 @@ IGNORE_MODULES.extend("aepack".split()) # Mac ext stuff IGNORE_MODULES.extend("al cd cl".split()) # old SGI IRIX extensions - IGNORE_MODULES.append("no XML parsers available") IGNORE_MODULES.append("test_support must be imported from the test package") From ac at codespeak.net Thu Apr 28 09:28:30 2005 From: ac at codespeak.net (ac at codespeak.net) Date: Thu, 28 Apr 2005 09:28:30 +0200 (CEST) Subject: [pypy-svn] r11557 - pypy/branch/non-fake-unicode/pypy/objspace/std Message-ID: <20050428072830.67FD627BBE@code1.codespeak.net> Author: ac Date: Thu Apr 28 09:28:29 2005 New Revision: 11557 Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py Log: Add docstring. Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/unicodetype.py Thu Apr 28 09:28:29 2005 @@ -79,5 +79,10 @@ unicode_typedef = StdTypeDef("unicode", basestring_typedef, __new__ = newmethod(descr__new__), + __doc__ = '''unicode(string [, encoding[, errors]]) -> object + +Create a new Unicode object from the given encoded string. +encoding defaults to the current default string encoding. +errors can be 'strict', 'replace' or 'ignore' and defaults to 'strict'.''' ) unicode_typedef.registermethods(globals()) From pedronis at codespeak.net Thu Apr 7 02:01:09 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 07 Apr 2005 00:01:09 -0000 Subject: [pypy-svn] r10389 - in pypy/dist/pypy: . annotation annotation/test documentation interpreter objspace objspace/flow objspace/flow/test objspace/std tool translator translator/test Message-ID: <20050407000109.3962B27B47@code1.codespeak.net> Author: pedronis Date: Thu Apr 7 02:01:08 2005 New Revision: 10389 Removed: pypy/dist/pypy/TODO pypy/dist/pypy/annotation/binaryop.py pypy/dist/pypy/annotation/bookkeeper.py pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/annotation/model.py pypy/dist/pypy/annotation/test/test_model.py pypy/dist/pypy/annotation/unaryop.py pypy/dist/pypy/documentation/controlflow.txt pypy/dist/pypy/interpreter/baseobjspace.py pypy/dist/pypy/interpreter/error.py pypy/dist/pypy/interpreter/pyframe.py pypy/dist/pypy/interpreter/pyopcode.py pypy/dist/pypy/objspace/dummy.py pypy/dist/pypy/objspace/flow/objspace.py pypy/dist/pypy/objspace/flow/test/test_objspace.py pypy/dist/pypy/objspace/std/objspace.py pypy/dist/pypy/tool/pytestsupport.py pypy/dist/pypy/translator/annrpython.py pypy/dist/pypy/translator/geninterplevel.py pypy/dist/pypy/translator/test/test_annrpython.py Log: pypy-normalize-exception merge: remove files that will be copied in from the branch Deleted: /pypy/dist/pypy/TODO ============================================================================== --- /pypy/dist/pypy/TODO Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,90 +0,0 @@ -General -======= - -* missing pieces currently borrowed from CPython: the bytecode - compiler, a number of C modules, and some types -- as printed - when running py.py: "faking ". - -* mark debugging variables to make our code more readable - -* extend the testing mechanisms to specifically allow: - - running plain CPython regrtests (including outputtests, - unittests, doctests, ...) - - running modified CPython regrtests againat CPython - as well as against PyPy - - running pure app-level py-test style regrtests - - running interp-level py-test style regrtests - - running doctests with py.test modules - -* not all of CPython's exceptions use the same __init__! - -* refactor the cmdline-entrypoints to PyPy aka py.py main.py - interactive.py and traceinteractive.py towards a unified - cmdline tool (py.py) possibly including translator-related - things too. - -* cleanup the contents of the tool directory - -* an oldie: move interpreter/unittest_w.py somewhere more appropriate - and give it a better name. - -* (documentation) remove/retire all web-pages referencing e.g. - AnnSpace or other deprecated stuff - -* review whatever you like - -StdObjSpace -=========== - -* allow CPython's "output-checking" tests to run in a convenient - way over StdObjSpace - -* String formatting is agonizingly slow. - -* Provide an importer that can import packages. (we have a - limited __import__ builtin defined) <---- done now? - - Consider PEP 302, new import hooks. - Try to write as much as possible in app-level. - How would PyPy import CPython extensions? - -* (documentation) generate a nice dot-graph from the structure of PyPy - -* port pypy's testing framework to py.test (probably a sprint topic, - as some discussion how to do it is required) - -* clear out and do a clean implementation of multimethod delegation. - The idea is to give 'kinds' to arguments according to their use, - e.g. 'numeric argument' or 'object whose identity is preserved'. - A 'kind' encapsulates a set of delegation functions. Armin has - already written documentation for the envisioned new multimethod - implementation: - - http://codespeak.net/pypy/index.cgi?doc/objspace/multimethod - - (now irrelevant? not sure... (nowadays, we have the descriptor - mechanism implemented right before EuroPython 2004 for both the - trivial and the stdobjspace)) - -Translator -========== - -* enhance the translator components to accept more of PyPy ... - -Tools -===== - -* add web server thread (!) that allows inspection of e.g. - interpreter-level tracebacks (and stop clogging the user's terminal - with them). --> there is some preliminary working code in - tool/tb_server - -* Interpreter level tracebacks are spectacular in their uselessness, - especially since the advent of descroperation. It should be - possible to construct something like an app-level traceback even - when there's no OperationError. - -* improve traceobjectspace! currently it only catches - calls from outside the space into the space but not - the ones where space operations involve calling more space - operations (the latter are not traced)! (fixed?) Deleted: /pypy/dist/pypy/annotation/binaryop.py ============================================================================== --- /pypy/dist/pypy/annotation/binaryop.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,364 +0,0 @@ -""" -Binary operations between SomeValues. -""" - -from pypy.annotation.pairtype import pair, pairtype -from pypy.annotation.model import SomeObject, SomeInteger, SomeBool -from pypy.annotation.model import SomeString, SomeChar, SomeList, SomeDict -from pypy.annotation.model import SomeTuple, SomeImpossibleValue -from pypy.annotation.model import SomeInstance, SomeBuiltin, SomeIterator -from pypy.annotation.model import SomePBC, SomeSlice -from pypy.annotation.model import unionof, set, setunion, missing_operation -from pypy.annotation.factory import generalize -from pypy.annotation.bookkeeper import getbookkeeper -from pypy.annotation.classdef import isclassdef -from pypy.objspace.flow.model import Constant - -# convenience only! -def immutablevalue(x): - return getbookkeeper().immutablevalue(x) - -# XXX unify this with ObjSpace.MethodTable -BINARY_OPERATIONS = set(['add', 'sub', 'mul', 'div', 'mod', - 'and_', 'or_', 'xor', - 'getitem', 'setitem', - 'inplace_add', 'inplace_sub', - 'lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_', - 'union', 'issubtype', - 'lshift', - ]) - -for opname in BINARY_OPERATIONS: - missing_operation(pairtype(SomeObject, SomeObject), opname) - -class __extend__(pairtype(SomeObject, SomeObject)): - - def union((obj1, obj2)): - if obj1 == obj2: - return obj1 - else: - result = SomeObject() - is_type_of1 = getattr(obj1, 'is_type_of', None) - is_type_of2 = getattr(obj2, 'is_type_of', None) - if is_type_of1 and is_type_of1 == is_type_of2: - result.is_type_of = is_type_of1 - # try to preserve the origin of SomeObjects - if obj1 == result: - return obj1 - elif obj2 == result: - return obj2 - else: - return result - - def inplace_add((obj1, obj2)): - return pair(obj1, obj2).add() # default - - def inplace_sub((obj1, obj2)): - return pair(obj1, obj2).sub() # default - - def lt((obj1, obj2)): - if obj1.is_constant() and obj2.is_constant(): - return immutablevalue(obj1.const < obj2.const) - else: - return SomeBool() - - def le((obj1, obj2)): - if obj1.is_constant() and obj2.is_constant(): - return immutablevalue(obj1.const <= obj2.const) - else: - return SomeBool() - - def eq((obj1, obj2)): - if obj1.is_constant() and obj2.is_constant(): - return immutablevalue(obj1.const == obj2.const) - else: - return SomeBool() - - def ne((obj1, obj2)): - if obj1.is_constant() and obj2.is_constant(): - return immutablevalue(obj1.const != obj2.const) - else: - return SomeBool() - - def gt((obj1, obj2)): - if obj1.is_constant() and obj2.is_constant(): - return immutablevalue(obj1.const > obj2.const) - else: - return SomeBool() - - def ge((obj1, obj2)): - if obj1.is_constant() and obj2.is_constant(): - return immutablevalue(obj1.const >= obj2.const) - else: - return SomeBool() - - def is_((obj1, obj2)): - # XXX assumption: for "X is Y" we for simplification - # assume that X is possibly variable and Y constant - # (and not the other way round) - r = SomeBool() - if obj2.is_constant(): - if obj1.is_constant(): - r.const = obj1.const is obj2.const - # XXX HACK HACK HACK - # XXX HACK HACK HACK - # XXX HACK HACK HACK - bk = getbookkeeper() - if hasattr(obj1,'is_type_of') and obj2.is_constant(): - r.knowntypedata = (obj1.is_type_of, bk.valueoftype(obj2.const)) - return r - fn, block, i = bk.position_key - annotator = bk.annotator - op = block.operations[i] - assert op.opname == "is_" - assert len(op.args) == 2 - assert annotator.binding(op.args[0]) == obj1 - r.knowntypedata = ([op.args[0]], obj2) - return r - -class __extend__(pairtype(SomeInteger, SomeInteger)): - # unsignedness is considered a rare and contagious disease - - def union((int1, int2)): - return SomeInteger(nonneg = int1.nonneg and int2.nonneg, - unsigned = int1.unsigned or int2.unsigned) - - add = mul = div = mod = or_ = xor = union - - def sub((int1, int2)): - return SomeInteger(unsigned = int1.unsigned or int2.unsigned) - - def and_((int1, int2)): - return SomeInteger(nonneg = int1.nonneg or int1.nonneg, - unsigned = int1.unsigned or int2.unsigned) - - def lshift((int1, int2)): - if int1.unsigned: - return SomeInteger(unsigned=True) - return SomeInteger() - -class __extend__(pairtype(SomeBool, SomeBool)): - - def union((boo1, boo2)): - s = SomeBool() - if getattr(boo1, 'const', -1) == getattr(boo2, 'const', -2): - s.const = boo1.const - if hasattr(boo1, 'knowntypedata') and \ - hasattr(boo2, 'knowntypedata') and \ - boo1.knowntypedata[0] == boo2.knowntypedata[0]: - s.knowntypedata = ( - boo1.knowntypedata[0], - unionof(boo1.knowntypedata[1], boo2.knowntypedata[1])) - return s - -class __extend__(pairtype(SomeString, SomeString)): - - def union((str1, str2)): - return SomeString() - - def add((str1, str2)): - return SomeString() - - -class __extend__(pairtype(SomeString, SomeObject)): - - def mod((str, args)): - return SomeString() - - -class __extend__(pairtype(SomeList, SomeList)): - - def union((lst1, lst2)): - return SomeList(setunion(lst1.factories, lst2.factories), - s_item = unionof(lst1.s_item, lst2.s_item)) - - add = union - - -class __extend__(pairtype(SomeList, SomeObject)): - - def inplace_add((lst1, obj2)): - s_iter = obj2.iter() - pair(lst1, SomeInteger()).setitem(s_iter.next()) - return lst1 - - -class __extend__(pairtype(SomeTuple, SomeTuple)): - - def union((tup1, tup2)): - if len(tup1.items) != len(tup2.items): - return SomeObject() - else: - unions = [unionof(x,y) for x,y in zip(tup1.items, tup2.items)] - return SomeTuple(items = unions) - - def add((tup1, tup2)): - return SomeTuple(items = tup1.items + tup2.items) - - -class __extend__(pairtype(SomeDict, SomeDict)): - - def union((dic1, dic2)): - return SomeDict(setunion(dic1.factories, dic2.factories), - unionof(dic1.s_key, dic2.s_key), - unionof(dic1.s_value, dic2.s_value)) - - -class __extend__(pairtype(SomeDict, SomeObject)): - - def getitem((dic1, obj2)): - return dic1.s_value - - def setitem((dic1, obj2), s_value): - generalize(dic1.factories, obj2, s_value) - - -class __extend__(pairtype(SomeSlice, SomeSlice)): - - def union((slic1, slic2)): - return SomeSlice(unionof(slic1.start, slic2.start), - unionof(slic1.stop, slic2.stop), - unionof(slic1.step, slic2.step)) - - -class __extend__(pairtype(SomeTuple, SomeInteger)): - - def getitem((tup1, int2)): - if int2.is_constant(): - try: - return tup1.items[int2.const] - except IndexError: - return SomeImpossibleValue() - else: - return unionof(*tup1.items) - - -class __extend__(pairtype(SomeList, SomeInteger)): - - def mul((lst1, int2)): - return lst1 - - def getitem((lst1, int2)): - return lst1.s_item - - def setitem((lst1, int2), s_value): - generalize(lst1.factories, s_value) - - -class __extend__(pairtype(SomeList, SomeSlice)): - - def getitem((lst, slic)): - return SomeList(lst.factories, lst.s_item) - - -class __extend__(pairtype(SomeString, SomeInteger)): - - def getitem((str1, int2)): - return SomeChar() - - -class __extend__(pairtype(SomeInteger, SomeList)): - - def mul((int1, lst2)): - return lst2 - - -class __extend__(pairtype(SomeInstance, SomeInstance)): - - def union((ins1, ins2)): - basedef = ins1.classdef.commonbase(ins2.classdef) - if basedef is None: - # print warning? - return SomeObject() - return SomeInstance(basedef) - -class __extend__(pairtype(SomeIterator, SomeIterator)): - - def union((iter1, iter2)): - return SomeIterator(unionof(iter1.s_item, iter2.s_item)) - - -class __extend__(pairtype(SomeBuiltin, SomeBuiltin)): - - def union((bltn1, bltn2)): - if bltn1.analyser != bltn2.analyser: - assert False, "merging incompatible builtins == BAD!" - return SomeObject() - else: - s_self = unionof(bltn1.s_self, bltn2.s_self) - return SomeBuiltin(bltn1.analyser, s_self) - -class __extend__(pairtype(SomePBC, SomePBC)): - def union((pbc1, pbc2)): - if len(pbc2.prebuiltinstances) > len(pbc1.prebuiltinstances): - pbc1, pbc2 = pbc2, pbc1 - d = pbc1.prebuiltinstances.copy() - for x, classdef in pbc2.prebuiltinstances.items(): - if x in d: - if bool(isclassdef(classdef)) ^ bool(isclassdef(d[x])): - raise Exception( - "union failed for %r with classdefs %r and %r" % - (x, classdef, d[x])) - if isclassdef(classdef): - classdef2 = classdef - if classdef != d[x]: - classdef = classdef.commonbase(d[x]) - for cand in classdef.getmro(): - if x in cand.cls.__dict__.values(): - break - else: - assert False, ("confused pbc union trying unwarranted" - "moving up of method %s from pair %s %s" % - (x, d[x], classdef2)) - d[x] = classdef - result = SomePBC(d) - return result - -class __extend__(pairtype(SomeImpossibleValue, SomeImpossibleValue)): - def union((imp1, imp2)): - return SomeImpossibleValue(benign=imp1.benign and imp2.benign) - -class __extend__(pairtype(SomeImpossibleValue, SomeObject)): - def union((imp1, obj2)): - return obj2 - -class __extend__(pairtype(SomeObject, SomeImpossibleValue)): - def union((obj1, imp2)): - return obj1 - -class __extend__(pairtype(SomeInstance, SomePBC)): - def union((ins, pbc)): - if pbc.isNone(): - return ins - classdef = ins.classdef.superdef_containing(pbc.knowntype) - if classdef is None: - # print warning? - return SomeObject() - return SomeInstance(classdef) - -class __extend__(pairtype(SomePBC, SomeInstance)): - def union((pbc, ins)): - return pair(ins, pbc).union() - -# let mix lists and None for now -class __extend__(pairtype(SomeList, SomePBC)): - def union((lst, pbc)): - if pbc.isNone(): - return lst - return SomeObject() - -class __extend__(pairtype(SomePBC, SomeList )): - def union((pbc, lst)): - return pair(lst, pbc).union() - - -class __extend__(pairtype(SomeObject, SomePBC)): - def issubtype((obj, pbc)): - s = SomeBool() - if obj.is_constant() and pbc.is_constant(): - s.const = issubclass(obj.const, pbc.const) - if hasattr(obj,'is_type_of') and pbc.is_constant(): - bk = getbookkeeper() - s.knowntypedata = (obj.is_type_of, bk.valueoftype(pbc.const)) - return s - Deleted: /pypy/dist/pypy/annotation/bookkeeper.py ============================================================================== --- /pypy/dist/pypy/annotation/bookkeeper.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,343 +0,0 @@ -""" -The Bookkeeper class. -""" - -from types import FunctionType, ClassType, MethodType -from types import BuiltinMethodType -from pypy.tool.ansi_print import ansi_print -from pypy.annotation.model import * -from pypy.annotation.classdef import ClassDef -from pypy.interpreter.miscutils import getthreadlocals -from pypy.tool.hack import func_with_new_name -from pypy.interpreter.pycode import CO_VARARGS -from pypy.interpreter.pycode import cpython_code_signature -from pypy.interpreter.argument import ArgErr - -import inspect, new - -class Bookkeeper: - """The log of choices that have been made while analysing the operations. - It ensures that the same 'choice objects' will be returned if we ask - again during reflowing. Like ExecutionContext, there is an implicit - Bookkeeper that can be obtained from a thread-local variable. - - Currently used for factories and user-defined classes.""" - - def __init__(self, annotator): - self.annotator = annotator - self.creationpoints = {} # map position-in-a-block to its Factory - self.userclasses = {} # map classes to ClassDefs - self.userclasseslist = []# userclasses.keys() in creation order - self.cachespecializations = {} - self.pbccache = {} - self.pbctypes = {} - self.seen_mutable = {} - # import ordering hack - global BUILTIN_ANALYZERS - from pypy.annotation.builtin import BUILTIN_ANALYZERS - - def enter(self, position_key): - """Start of an operation. - The operation is uniquely identified by the given key.""" - self.position_key = position_key - getthreadlocals().bookkeeper = self - - def leave(self): - """End of an operation.""" - del getthreadlocals().bookkeeper - del self.position_key - - def getfactory(self, factorycls): - """Get the Factory associated with the current position, - or build it if it doesn't exist yet.""" - try: - factory = self.creationpoints[self.position_key] - except KeyError: - factory = factorycls() - factory.bookkeeper = self - factory.position_key = self.position_key - self.creationpoints[self.position_key] = factory - assert isinstance(factory, factorycls) - return factory - - def getclassdef(self, cls): - """Get the ClassDef associated with the given user cls.""" - if cls is object: - return None - try: - return self.userclasses[cls] - except KeyError: - if cls in self.pbctypes: - self.warning("%r gets a ClassDef, but is the type of some PBC" - % (cls,)) - cdef = ClassDef(cls, self) - self.userclasses[cls] = cdef - self.userclasseslist.append(cdef) - return self.userclasses[cls] - - - def immutablevalue(self, x): - """The most precise SomeValue instance that contains the - immutable value x.""" - tp = type(x) - if tp is bool: - result = SomeBool() - elif tp is int: - result = SomeInteger(nonneg = x>=0) - elif tp is str: - result = SomeString() - elif tp is tuple: - result = SomeTuple(items = [self.immutablevalue(e) for e in x]) - elif tp is list: - items_s = [self.immutablevalue(e) for e in x] - result = SomeList({}, unionof(*items_s)) - elif tp is dict: # exactly a dict - keys_s = [self.immutablevalue(e) for e in x.keys()] - values_s = [self.immutablevalue(e) for e in x.values()] - result = SomeDict({}, unionof(*keys_s), unionof(*values_s)) - elif ishashable(x) and x in BUILTIN_ANALYZERS: - result = SomeBuiltin(BUILTIN_ANALYZERS[x]) - elif callable(x) or isinstance(x, staticmethod): # XXX - # maybe 'x' is a method bound to a not-yet-frozen cache? - # fun fun fun. - if hasattr(x, 'im_self') and hasattr(x.im_self, '_freeze_'): - x.im_self._freeze_() - if hasattr(x, '__self__') and x.__self__ is not None: - s_self = self.immutablevalue(x.__self__) - try: - result = s_self.find_method(x.__name__) - except AttributeError: - result = SomeObject() - else: - return self.getpbc(x) - elif hasattr(x, '__class__') \ - and x.__class__.__module__ != '__builtin__': - # user-defined classes can define a method _freeze_(), which - # is called when a prebuilt instance is found. If the method - # returns True, the instance is considered immutable and becomes - # a SomePBC(). Otherwise it's just SomeInstance(). - frozen = hasattr(x, '_freeze_') and x._freeze_() - if frozen: - return self.getpbc(x) - else: - clsdef = self.getclassdef(x.__class__) - - if x not in self.seen_mutable: # avoid circular reflowing, - # see for example test_circular_mutable_getattr - for attr in x.__dict__: - clsdef.add_source_for_attribute(attr, x) # can trigger reflowing - self.seen_mutable[x] = True - return SomeInstance(clsdef) - elif x is None: - return self.getpbc(None) - else: - result = SomeObject() - result.const = x - return result - - def getpbc(self, x): - try: - # this is not just an optimization, but needed to avoid - # infinitely repeated calls to add_source_for_attribute() - return self.pbccache[x] - except KeyError: - result = SomePBC({x: True}) # pre-built inst - #clsdef = self.getclassdef(new_or_old_class(x)) - #for attr in getattr(x, '__dict__', {}): - # clsdef.add_source_for_attribute(attr, x) - self.pbccache[x] = result - cls = new_or_old_class(x) - if cls not in self.pbctypes: - self.pbctypes[cls] = True - if cls in self.userclasses: - self.warning("making some PBC of type %r, which has " - "already got a ClassDef" % (cls,)) - return result - - def valueoftype(self, t): - """The most precise SomeValue instance that contains all - objects of type t.""" - assert isinstance(t, (type, ClassType)) - if t is bool: - return SomeBool() - elif t is int: - return SomeInteger() - elif t is str: - return SomeString() - elif t is list: - return SomeList(factories={}) - # can't do dict, tuple - elif t.__module__ != '__builtin__': - classdef = self.getclassdef(t) - return SomeInstance(classdef) - else: - o = SomeObject() - o.knowntype = t - return o - - def pycall(self, func, args): - if func is None: # consider None as a NULL function pointer - return SomeImpossibleValue() - if isinstance(func, (type, ClassType)) and \ - func.__module__ != '__builtin__': - cls = func - x = getattr(cls, "_specialize_", False) - if x: - if x == "location": - cls = self.specialize_by_key(cls, self.position_key) - else: - raise Exception, \ - "unsupported specialization type '%s'"%(x,) - - classdef = self.getclassdef(cls) - s_instance = SomeInstance(classdef) - # flow into __init__() if the class has got one - init = getattr(cls, '__init__', None) - if init is not None and init != object.__init__: - # don't record the access of __init__ on the classdef - # because it is not a dynamic attribute look-up, but - # merely a static function call - if hasattr(init, 'im_func'): - init = init.im_func - else: - assert isinstance(init, BuiltinMethodType) - s_init = self.immutablevalue(init) - s_init.call(args.prepend(s_instance)) - else: - try: - args.fixedunpack(0) - except ValueError: - raise Exception, "no __init__ found in %r" % (cls,) - return s_instance - if hasattr(func, '__call__') and \ - isinstance(func.__call__, MethodType): - func = func.__call__ - if hasattr(func, 'im_func'): - if func.im_self is not None: - s_self = self.immutablevalue(func.im_self) - args = args.prepend(s_self) - # for debugging only, but useful to keep anyway: - try: - func.im_func.class_ = func.im_class - except AttributeError: - # probably a builtin function, we don't care to preserve - # class information then - pass - func = func.im_func - assert isinstance(func, FunctionType), "[%s] expected function, got %r" % (self.whereami(), func) - # do we need to specialize this function in several versions? - x = getattr(func, '_specialize_', False) - #if not x: - # x = 'argtypes' - if x: - if x == 'argtypes': - key = short_type_name(args) - func = self.specialize_by_key(func, key, - func.__name__+'__'+key) - elif x == "location": - # fully specialize: create one version per call position - func = self.specialize_by_key(func, self.position_key) - else: - raise Exception, "unsupported specialization type '%s'"%(x,) - - elif func.func_code.co_flags & CO_VARARGS: - # calls to *arg functions: create one version per number of args - assert not args.has_keywords(), ( - "keyword forbidden in calls to *arg functions") - nbargs = len(args.arguments_w) - if args.w_stararg is not None: - s_len = args.w_stararg.len() - assert s_len.is_constant(), "calls require known number of args" - nbargs += s_len.const - func = self.specialize_by_key(func, nbargs, - name='%s__%d' % (func.func_name, - nbargs)) - - # parse the arguments according to the function we are calling - signature = cpython_code_signature(func.func_code) - defs_s = [] - if func.func_defaults: - for x in func.func_defaults: - defs_s.append(self.immutablevalue(x)) - try: - inputcells = args.match_signature(signature, defs_s) - except ArgErr, e: - assert False, 'ABOUT TO IGNORE %r' % e # we should take care that we don't end up here anymore - return SomeImpossibleValue() - - return self.annotator.recursivecall(func, self.position_key, inputcells) - - def whereami(self): - return self.annotator.whereami(self.position_key) - - def warning(self, msg): - try: - pos = self.whereami() - except AttributeError: - pos = '?' - ansi_print("*** WARNING: [%s] %s" % (pos, msg), esc="31") # RED - - def specialize_by_key(self, thing, key, name=None): - key = thing, key - try: - thing = self.cachespecializations[key] - except KeyError: - if isinstance(thing, FunctionType): - # XXX XXX XXX HAAAAAAAAAAAACK - # xxx we need a way to let know subsequent phases (the generator) about the specialized function - # the caller flowgraph as it is doesn't. - # This line just avoids that the flowgraph of the original function, which is what will be considered - # and compiled for now will be computed during generation itself - self.annotator.translator.getflowgraph(thing) - # - thing = func_with_new_name(thing, name or thing.func_name) - elif isinstance(thing, (type, ClassType)): - superclasses = iter(inspect.getmro(thing)) - superclasses.next() # skip thing itself - for cls in superclasses: - assert not hasattr(cls, "_specialize_"), "for now specialization only for leaf classes" - - newdict = {} - for attrname,val in thing.__dict__.iteritems(): - if attrname == '_specialize_': # don't copy the marker - continue - if isinstance(val, FunctionType): - fname = val.func_name - if name: - fname = "%s_for_%s" % (fname, name) - newval = func_with_new_name(val, fname) - # xxx more special cases - else: - newval = val - newdict[attrname] = newval - - thing = type(thing)(name or thing.__name__, (thing,), newdict) - else: - raise Exception, "specializing %r?? why??"%thing - self.cachespecializations[key] = thing - return thing - - -def getbookkeeper(): - """Get the current Bookkeeper. - Only works during the analysis of an operation.""" - return getthreadlocals().bookkeeper - -def ishashable(x): - try: - hash(x) - except TypeError: - return False - else: - return True - -def short_type_name(args): - l = [] - shape, args_w = args.flatten() - for x in args_w: - if isinstance(x, SomeInstance) and hasattr(x, 'knowntype'): - name = "SI_" + x.knowntype.__name__ - else: - name = x.__class__.__name__ - l.append(name) - return "__".join(l) Deleted: /pypy/dist/pypy/annotation/builtin.py ============================================================================== --- /pypy/dist/pypy/annotation/builtin.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,227 +0,0 @@ -""" -Built-in functions. -""" - -import types -import sys, math -from pypy.tool.ansi_print import ansi_print -from pypy.annotation.model import SomeInteger, SomeObject, SomeChar, SomeBool -from pypy.annotation.model import SomeList, SomeString, SomeTuple, SomeSlice -from pypy.annotation.bookkeeper import getbookkeeper -from pypy.annotation.factory import ListFactory -from pypy.objspace.flow.model import Constant -import pypy.objspace.std.restricted_int - -# convenience only! -def immutablevalue(x): - return getbookkeeper().immutablevalue(x) - -def builtin_len(s_obj): - return s_obj.len() - -def builtin_range(*args): - factory = getbookkeeper().getfactory(ListFactory) - factory.generalize(SomeInteger()) # XXX nonneg=... - return factory.create() - -def builtin_pow(s_base, s_exponent, *args): - if s_base.knowntype is s_exponent.knowntype is int: - return SomeInteger() - else: - return SomeObject() - -def builtin_int(s_obj): # we can consider 'int' as a function - return SomeInteger() - -def restricted_uint(s_obj): # for r_uint - return SomeInteger(nonneg=True, unsigned=True) - -def builtin_chr(s_int): - return SomeChar() - -def builtin_ord(s_chr): - return SomeInteger(nonneg=True) - -def builtin_id(o): - return SomeInteger() - -def builtin_hex(o): - return SomeString() - -def builtin_oct(o): - return SomeString() - -def builtin_abs(o): - return o.__class__() - -def builtin_divmod(o1, o2): - return SomeTuple([SomeObject(), SomeObject()]) # XXX - -def builtin_unicode(s_obj): - return SomeString() - -def builtin_float(s_obj): - return SomeObject() - -def builtin_long(s_str): - return SomeObject() - -def our_issubclass(cls1, cls2): - """ we're going to try to be less silly in the face of old-style classes""" - return cls2 is object or issubclass(cls1, cls2) - -def builtin_isinstance(s_obj, s_type): - s = SomeBool() - if s_type.is_constant(): - typ = s_type.const - # XXX bit of a hack: - if issubclass(typ, (int, long)): - typ = int - if s_obj.is_constant(): - s.const = isinstance(s_obj.const, typ) - elif our_issubclass(s_obj.knowntype, typ): - s.const = True - elif not our_issubclass(typ, s_obj.knowntype): - s.const = False - # XXX HACK HACK HACK - # XXX HACK HACK HACK - # XXX HACK HACK HACK - bk = getbookkeeper() - fn, block, i = bk.position_key - annotator = bk.annotator - op = block.operations[i] - assert op.opname == "simple_call" - assert len(op.args) == 3 - assert op.args[0] == Constant(isinstance) - assert annotator.binding(op.args[1]) == s_obj - s.knowntypedata = ([op.args[1]], bk.valueoftype(typ)) - return s - -def builtin_issubclass(s_cls1, s_cls2): - if s_cls1.is_constant() and s_cls2.is_constant(): - return immutablevalue(issubclass(s_cls1.const, s_cls2.const)) - else: - return SomeBool() - -def builtin_getattr(s_obj, s_attr, s_default=None): - if not s_attr.is_constant() or not isinstance(s_attr.const, str): - ansi_print("UN-RPYTHONIC-WARNING " + - '[%s] getattr(%r, %r) is not RPythonic enough' % (getbookkeeper().whereami(), - s_obj, s_attr), - esc="31") # RED - return SomeObject() - return s_obj.getattr(s_attr) - -def builtin_hasattr(s_obj, s_attr): - if not s_attr.is_constant() or not isinstance(s_attr.const, str): - ansi_print("UN-RPYTHONIC-WARNING " + - '[%s] hasattr(%r, %r) is not RPythonic enough' % (getbookkeeper().whereami(), - s_obj, s_attr), - esc="31") # RED - return SomeBool() - -def builtin_hash(s_obj): - return SomeInteger() - -def builtin_callable(s_obj): - return SomeBool() - -def builtin_tuple(s_iterable): - if isinstance(s_iterable, SomeTuple): - return s_iterable - return SomeObject() - -def builtin_iter(s_obj): - return s_obj.iter() - -def builtin_type(s_obj, *moreargs): - if moreargs: - raise Exception, 'type() called with more than one argument' - if s_obj.is_constant(): - return immutablevalue(type(s_obj.const)) - r = SomeObject() - # hack info - bk = getbookkeeper() - fn, block, i = bk.position_key - annotator = bk.annotator - op = block.operations[i] - assert op.opname == "simple_call" - assert len(op.args) == 2 - assert op.args[0] == Constant(type) - assert annotator.binding(op.args[1]) == s_obj - r.is_type_of = [op.args[1]] - return r - -def builtin_str(s_obj): - return SomeString() - -def builtin_repr(s_obj): - return SomeString() - -def builtin_list(s_iterable): - factory = getbookkeeper().getfactory(ListFactory) - s_iter = s_iterable.iter() - factory.generalize(s_iter.next()) - return factory.create() - -def builtin_zip(s_iterable1, s_iterable2): - factory = getbookkeeper().getfactory(ListFactory) - s_iter1 = s_iterable1.iter() - s_iter2 = s_iterable2.iter() - s_tup = SomeTuple((s_iter1.next(),s_iter2.next())) - factory.generalize(s_tup) - return factory.create() - -def builtin_apply(*stuff): - print "XXX ignoring apply%r" % (stuff,) - return SomeObject() - -def builtin_compile(*stuff): - s = SomeObject() - s.knowntype = types.CodeType - return s - -def builtin_slice(*args): - bk = getbookkeeper() - if len(args) == 1: - return SomeSlice( - bk.immutablevalue(None), args[0], bk.immutablevalue(None)) - elif len(args) == 2: - return SomeSlice( - args[0], args[1], bk.immutablevalue(None)) - elif len(args) == 3: - return SomeSlice( - args[0], args[1], args[2]) - else: - raise Exception, "bogus call to slice()" - - -def exception_init(s_self, *args): - s_self.setattr(immutablevalue('args'), SomeTuple(args)) - -def builtin_bool(s_obj): - return SomeBool() - -def count(s_obj): - return SomeInteger() - -def math_fmod(x, y): - return SomeObject() - -def math_floor(x): - return SomeObject() - -# collect all functions -import __builtin__ -BUILTIN_ANALYZERS = {} -for name, value in globals().items(): - if name.startswith('builtin_'): - original = getattr(__builtin__, name[8:]) - BUILTIN_ANALYZERS[original] = value - -BUILTIN_ANALYZERS[pypy.objspace.std.restricted_int.r_int] = builtin_int -BUILTIN_ANALYZERS[pypy.objspace.std.restricted_int.r_uint] = restricted_uint -BUILTIN_ANALYZERS[Exception.__init__.im_func] = exception_init -BUILTIN_ANALYZERS[sys.getrefcount] = count -BUILTIN_ANALYZERS[math.fmod] = math_fmod -BUILTIN_ANALYZERS[math.floor] = math_floor Deleted: /pypy/dist/pypy/annotation/model.py ============================================================================== --- /pypy/dist/pypy/annotation/model.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,295 +0,0 @@ -""" -This file defines the 'subset' SomeValue classes. - -An instance of a SomeValue class stands for a Python object that has some -known properties, for example that is known to be a list of non-negative -integers. Each instance can be considered as an object that is only -'partially defined'. Another point of view is that each instance is a -generic element in some specific subset of the set of all objects. - -""" - -# Old terminology still in use here and there: -# SomeValue means one of the SomeXxx classes in this file. -# Cell is an instance of one of these classes. -# -# Think about cells as potato-shaped circles in a diagram: -# ______________________________________________________ -# / SomeObject() \ -# / ___________________________ ______________ \ -# | / SomeInteger(nonneg=False) \____ / SomeString() \ \ -# | / __________________________ \ | | | -# | | / SomeInteger(nonneg=True) \ | | "hello" | | -# | | | 0 42 _________/ | \______________/ | -# | \ -3 \________________/ / | -# \ \ -5 _____/ / -# \ \________________________/ 3.1416 / -# \_____________________________________________________/ -# - - -from types import BuiltinFunctionType, MethodType -import pypy -from pypy.annotation.pairtype import pair, extendabletype -from pypy.objspace.flow.model import Constant -import inspect - - -DEBUG = True # set to False to disable recording of debugging information - - -class SomeObject: - """The set of all objects. Each instance stands - for an arbitrary object about which nothing is known.""" - __metaclass__ = extendabletype - knowntype = object - def __eq__(self, other): - return (self.__class__ is other.__class__ and - self.__dict__ == other.__dict__) - def __ne__(self, other): - return not (self == other) - def __repr__(self): - items = self.__dict__.items() - items.sort() - args = [] - for k, v in items: - m = getattr(self, 'fmt_' + k, repr) - r = m(v) - if r is not None: - args.append('%s=%s'%(k, r)) - kwds = ', '.join(args) - return '%s(%s)' % (self.__class__.__name__, kwds) - - def fmt_knowntype(self, t): - return t.__name__ - - def contains(self, other): - return self == other or pair(self, other).union() == self - - def is_constant(self): - return hasattr(self, 'const') - - # for debugging, record where each instance comes from - # this is disabled if DEBUG is set to False - _coming_from = {} - def __new__(cls, *args, **kw): - self = super(SomeObject, cls).__new__(cls, *args, **kw) - if DEBUG: - try: - bookkeeper = pypy.annotation.bookkeeper.getbookkeeper() - position_key = bookkeeper.position_key - except AttributeError: - pass - else: - SomeObject._coming_from[id(self)] = position_key, None - return self - def origin(self): - return SomeObject._coming_from.get(id(self), (None, None))[0] - origin = property(origin) - def caused_by_merge(self): - return SomeObject._coming_from.get(id(self), (None, None))[1] - def set_caused_by_merge(self, nvalue): - SomeObject._coming_from[id(self)] = self.origin, nvalue - caused_by_merge = property(caused_by_merge, set_caused_by_merge) - del set_caused_by_merge - - -class SomeInteger(SomeObject): - "Stands for an object which is known to be an integer." - knowntype = int - def __init__(self, nonneg=False, unsigned=False): - self.nonneg = nonneg - self.unsigned = unsigned # pypy.objspace.std.restricted_int.r_uint - - -class SomeBool(SomeInteger): - "Stands for true or false." - knowntype = bool - nonneg = True - unsigned = False - def __init__(self): - pass - - -class SomeString(SomeObject): - "Stands for an object which is known to be a string." - knowntype = str - - -class SomeChar(SomeString): - "Stands for an object known to be a string of length 1." - - -class SomeList(SomeObject): - "Stands for a homogenous list of any length." - knowntype = list - def __init__(self, factories, s_item=SomeObject()): - self.factories = factories - self.s_item = s_item # general enough for any element - - -class SomeSlice(SomeObject): - knowntype = slice - def __init__(self, start, stop, step): - self.start = start - self.stop = stop - self.step = step - - -class SomeTuple(SomeObject): - "Stands for a tuple of known length." - knowntype = tuple - def __init__(self, items): - self.items = tuple(items) # tuple of s_xxx elements - for i in items: - if not i.is_constant(): - break - else: - self.const = tuple([i.const for i in items]) - - -class SomeDict(SomeObject): - "Stands for a dict." - knowntype = dict - def __init__(self, factories, s_key, s_value): - self.factories = factories - self.s_key = s_key - self.s_value = s_value - - -class SomeIterator(SomeObject): - "Stands for an iterator returning objects of a known type." - knowntype = type(iter([])) # arbitrarily chose seqiter as the type - def __init__(self, s_item=SomeObject()): - self.s_item = s_item - - -class SomeInstance(SomeObject): - "Stands for an instance of a (user-defined) class." - def __init__(self, classdef): - self.classdef = classdef - self.knowntype = classdef.cls - def fmt_knowntype(self, kt): - return None - def fmt_classdef(self, cd): - return cd.cls.__name__ - -def new_or_old_class(c): - if hasattr(c, '__class__'): - return c.__class__ - else: - return type(c) - - -class SomePBC(SomeObject): - """Stands for a global user instance, built prior to the analysis, - or a set of such instances.""" - def __init__(self, prebuiltinstances): - # prebuiltinstances is a dictionary containing concrete python - # objects as keys. - # if the key is a function, the value can be a classdef to - # indicate that it is really a method. - prebuiltinstances = prebuiltinstances.copy() - self.prebuiltinstances = prebuiltinstances - self.simplify() - if self.isNone(): - self.knowntype = type(None) - else: - self.knowntype = reduce(commonbase, - [new_or_old_class(x) - for x in prebuiltinstances - if x is not None]) - if prebuiltinstances.values() == [True]: - # hack for the convenience of direct callers to SomePBC(): - # only if there is a single object in prebuiltinstances and - # it doesn't have an associated ClassDef - self.const, = prebuiltinstances - def simplify(self): - # We check that the dictionary does not contain at the same time - # a function bound to a classdef, and constant bound method objects - # on that class. - for x, ignored in self.prebuiltinstances.items(): - if isinstance(x, MethodType) and x.im_func in self.prebuiltinstances: - classdef = self.prebuiltinstances[x.im_func] - if isinstance(x.im_self, classdef.cls): - del self.prebuiltinstances[x] - - def isNone(self): - return self.prebuiltinstances == {None:True} - - def fmt_prebuiltinstances(self, pbis): - if hasattr(self, 'const'): - return None - else: - return '{...%s...}'%(len(pbis),) - - def fmt_knowntype(self, kt): - if self.is_constant(): - return None - else: - return kt.__name__ - - -class SomeBuiltin(SomeObject): - "Stands for a built-in function or method with special-cased analysis." - knowntype = BuiltinFunctionType # == BuiltinMethodType - def __init__(self, analyser, s_self=None): - self.analyser = analyser - self.s_self = s_self - - -class SomeImpossibleValue(SomeObject): - """The empty set. Instances are placeholders for objects that - will never show up at run-time, e.g. elements of an empty list.""" - def __init__(self, benign=False): - self.benign = benign - - -def unionof(*somevalues): - "The most precise SomeValue instance that contains all the values." - s1 = SomeImpossibleValue(benign=len(somevalues)>0) - for s2 in somevalues: - if s1 != s2: - s1 = pair(s1, s2).union() - if DEBUG and s1.caused_by_merge is None and len(somevalues) > 1: - s1.caused_by_merge = somevalues - return s1 - -# ____________________________________________________________ -# internal - -def setunion(d1, d2): - "Union of two sets represented as dictionaries." - d = d1.copy() - d.update(d2) - return d - -def set(it): - "Turn an iterable into a set." - d = {} - for x in it: - d[x] = True - return d - -def commonbase(cls1, cls2): # XXX single inheritance only XXX hum - l1 = inspect.getmro(cls1) - l2 = inspect.getmro(cls2) - if l1[-1] != object: - l1 = l1 + (object,) - if l2[-1] != object: - l2 = l2 + (object,) - for x in l1: - if x in l2: - return x - assert 0, "couldn't get to commonbase of %r and %r" % (cls1, cls2) - -def missing_operation(cls, name): - def default_op(*args): - #print '* warning, no type available for %s(%s)' % ( - # name, ', '.join([repr(a) for a in args])) - return SomeObject() - setattr(cls, name, default_op) - -# this has the side-effect of registering the unary and binary operations -from pypy.annotation.unaryop import UNARY_OPERATIONS -from pypy.annotation.binaryop import BINARY_OPERATIONS Deleted: /pypy/dist/pypy/annotation/test/test_model.py ============================================================================== --- /pypy/dist/pypy/annotation/test/test_model.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,63 +0,0 @@ - -import autopath -from pypy.annotation.model import * - - -s1 = SomeObject() -s2 = SomeInteger(nonneg=True) -s3 = SomeInteger(nonneg=False) -s4 = SomeList({}, SomeTuple([SomeInteger(nonneg=True), SomeString()])) -s5 = SomeList({}, SomeTuple([SomeInteger(nonneg=False), SomeString()])) -s6 = SomeImpossibleValue() -slist = [s1,s2,s3,s4,s5,s6] - -def test_equality(): - assert s1 != s2 != s3 != s4 != s5 != s6 - assert s1 == SomeObject() - assert s2 == SomeInteger(nonneg=True) - assert s3 == SomeInteger(nonneg=False) - assert s4 == SomeList({}, SomeTuple([SomeInteger(nonneg=True), SomeString()])) - assert s5 == SomeList({}, SomeTuple([SomeInteger(nonneg=False), SomeString()])) - assert s6 == SomeImpossibleValue() - -def test_contains(): - assert ([(s,t) for s in slist for t in slist if s.contains(t)] == - [(s1,s1), (s1,s2), (s1,s3), (s1,s4), (s1,s5), (s1,s6), - (s2,s2), (s2,s6), - (s3,s2), (s3,s3), (s3,s6), - (s4,s4), (s4,s6), - (s5,s4), (s5,s5), (s5,s6), - (s6,s6)]) - -def test_union(): - assert ([unionof(s,t) for s in slist for t in slist] == - [s1, s1, s1, s1, s1, s1, - s1, s2, s3, s1, s1, s2, - s1, s3, s3, s1, s1, s3, - s1, s1, s1, s4, s5, s4, - s1, s1, s1, s5, s5, s5, - s1, s2, s3, s4, s5, s6]) - -def test_commonbase_simple(): - class A0: - pass - class A1(A0): - pass - class A2(A0): - pass - class B1(object): - pass - class B2(object): - pass - class B3(object, A0): - pass - assert commonbase(A1,A2) is A0 - assert commonbase(A1,A0) is A0 - assert commonbase(A1,A1) is A1 - assert commonbase(A2,B2) is object - assert commonbase(A2,B3) is A0 - -if __name__ == '__main__': - for name, value in globals().items(): - if name.startswith('test_'): - value() Deleted: /pypy/dist/pypy/annotation/unaryop.py ============================================================================== --- /pypy/dist/pypy/annotation/unaryop.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,312 +0,0 @@ -""" -Unary operations on SomeValues. -""" - -from types import FunctionType -from pypy.interpreter.argument import Arguments -from pypy.annotation.pairtype import pair -from pypy.annotation.model import SomeObject, SomeInteger, SomeBool -from pypy.annotation.model import SomeString, SomeChar, SomeList, SomeDict -from pypy.annotation.model import SomeTuple, SomeImpossibleValue -from pypy.annotation.model import SomeInstance, SomeBuiltin -from pypy.annotation.model import SomeIterator, SomePBC, new_or_old_class -from pypy.annotation.model import unionof, set, setunion, missing_operation -from pypy.annotation.factory import BlockedInference, generalize, ListFactory -from pypy.annotation.bookkeeper import getbookkeeper -from pypy.annotation.classdef import isclassdef - -# convenience only! -def immutablevalue(x): - return getbookkeeper().immutablevalue(x) - -UNARY_OPERATIONS = set(['len', 'is_true', 'getattr', 'setattr', - 'simple_call', 'call_args', - 'iter', 'next', 'invert', 'type']) - -for opname in UNARY_OPERATIONS: - missing_operation(SomeObject, opname) - - -class __extend__(SomeObject): - - def type(obj): - if obj.is_constant(): - r = immutablevalue(obj.knowntype) - else: - r = SomeObject() - bk = getbookkeeper() - fn, block, i = bk.position_key - annotator = bk.annotator - op = block.operations[i] - assert op.opname == "type" - assert len(op.args) == 1 - assert annotator.binding(op.args[0]) == obj - r.is_type_of = [op.args[0]] - return r - - def len(obj): - return SomeInteger(nonneg=True) - - def is_true(obj): - if obj.is_constant(): - return immutablevalue(bool(obj.const)) - else: - s_len = obj.len() - if s_len.is_constant(): - return immutablevalue(s_len.const > 0) - else: - return SomeBool() - - def find_method(obj, name): - "Look for a special-case implementation for the named method." - analyser = getattr(obj.__class__, 'method_' + name) - return SomeBuiltin(analyser, obj) - - def getattr(obj, s_attr): - # get a SomeBuiltin if the SomeObject has - # a corresponding method to handle it - if s_attr.is_constant() and isinstance(s_attr.const, str): - attr = s_attr.const - try: - return obj.find_method(attr) - except AttributeError: - pass - # if the SomeObject is itself a constant, allow reading its attrs - if obj.is_constant() and hasattr(obj.const, attr): - return immutablevalue(getattr(obj.const, attr)) - return SomeObject() - - def bindcallables(obj, classdef): - return obj # default unbound __get__ implementation - - def simple_call(obj, *args_s): - space = RPythonCallsSpace() - return obj.call(Arguments(space, args_s)) - - def call_args(obj, s_shape, *args_s): - space = RPythonCallsSpace() - return obj.call(Arguments.fromshape(space, s_shape.const, args_s)) - - def call(obj, args): - #raise Exception, "cannot follow call_args%r" % ((obj, args),) - getbookkeeper().warning("cannot follow call(%r, %r)" % (obj, args)) - return SomeObject() - -class __extend__(SomeInteger): - - def invert(self): - if self.unsigned: - return SomeInteger(unsigned=True) - return SomeInteger() - - -class __extend__(SomeBool): - def is_true(self): - return self - -class __extend__(SomeTuple): - - def len(tup): - return immutablevalue(len(tup.items)) - - def iter(tup): - return SomeIterator(unionof(*tup.items)) - - -class __extend__(SomeList): - - def method_append(lst, s_value): - pair(lst, SomeInteger()).setitem(s_value) - - def method_extend(lst, s_iterable): - s_iter = s_iterable.iter() - pair(lst, SomeInteger()).setitem(s_iter.next()) - - def method_reverse(lst): - pass - - def method_insert(lst, s_index, s_value): - pair(lst, SomeInteger()).setitem(s_value) - - def method_pop(lst, s_index=None): - return lst.s_item - - def iter(lst): - return SomeIterator(lst.s_item) - -class __extend__(SomeDict): - def iter(dct): - return SomeIterator(dct.s_key) - - def method_copy(dct): - return SomeDict(dct.factories, dct.s_key, dct.s_value) - - def method_update(dct1, dct2): - generalize(dct1.factories, dct2.s_key, dct2.s_value) - - def method_keys(dct): - factory = getbookkeeper().getfactory(ListFactory) - factory.generalize(dct.s_key) - return factory.create() - - def method_values(dct): - factory = getbookkeeper().getfactory(ListFactory) - factory.generalize(dct.s_value) - return factory.create() - - def method_items(dct): - factory = getbookkeeper().getfactory(ListFactory) - factory.generalize(SomeTuple((dct.s_key, dct.s_value))) - return factory.create() - - - -class __extend__(SomeString): - - def method_join(str, s_list): - return SomeString() - - def iter(str): - return SomeIterator(SomeChar()) - - -class __extend__(SomeChar): - - def len(chr): - return immutablevalue(1) - - -class __extend__(SomeIterator): - - def next(itr): - return itr.s_item - - -class __extend__(SomeInstance): - - def getattr(ins, s_attr): - if s_attr.is_constant() and isinstance(s_attr.const, str): - attr = s_attr.const - attrdef = ins.classdef.find_attribute(attr) - position = getbookkeeper().position_key - attrdef.read_locations[position] = True - s_result = attrdef.getvalue() - # hack: if s_result is a set of methods, discard the ones - # that can't possibly apply to an instance of ins.classdef. - # XXX do it more nicely - if isinstance(s_result, SomePBC): - s_result = ins.classdef.matching(s_result, attr) - return s_result - return SomeObject() - - def setattr(ins, s_attr, s_value): - if s_attr.is_constant() and isinstance(s_attr.const, str): - attr = s_attr.const - # find the (possibly parent) class where this attr is defined - clsdef = ins.classdef.locate_attribute(attr) - attrdef = clsdef.attrs[attr] - attrdef.readonly = False - - # if the attrdef is new, this must fail - if attrdef.getvalue().contains(s_value): - return - # create or update the attribute in clsdef - clsdef.generalize_attr(attr, s_value) - - -class __extend__(SomeBuiltin): - def simple_call(bltn, *args): - if bltn.s_self is not None: - return bltn.analyser(bltn.s_self, *args) - else: - return bltn.analyser(*args) - - def call(bltn, args): - args, kw = args.unpack() - assert not kw, "don't call builtins with keywords arguments" - if bltn.s_self is not None: - return bltn.analyser(bltn.s_self, *args) - else: - return bltn.analyser(*args) - - -class __extend__(SomePBC): - - def getattr(pbc, s_attr): - bookkeeper = getbookkeeper() - assert s_attr.is_constant() - attr = s_attr.const - actuals = [] - for c in pbc.prebuiltinstances: - if hasattr(c, attr): - # force the attribute to be considered on the class - ##classdef = bookkeeper.getclassdef(new_or_old_class(c)) - ##classdef.find_attribute(attr).getvalue() - # but only return the more precise result getattr(c, attr) - actuals.append(immutablevalue(getattr(c, attr))) - return unionof(*actuals) - - def setattr(pbc, s_attr, s_value): - getbookkeeper().warning("setattr not wanted on %r" % (pbc,)) - - def call(pbc, args): - bookkeeper = getbookkeeper() - results = [] - for func, classdef in pbc.prebuiltinstances.items(): - if isclassdef(classdef): - s_self = SomeInstance(classdef) - args1 = args.prepend(s_self) - else: - args1 = args - results.append(bookkeeper.pycall(func, args1)) - return unionof(*results) - - def bindcallables(pbc, classdef): - """ turn the callables in the given SomeCallable 'cal' - into bound versions. - """ - d = {} - for func, value in pbc.prebuiltinstances.items(): - if isinstance(func, FunctionType): - if isclassdef(value): - getbookkeeper().warning("rebinding an already bound " - "method %r with %r" % (func, value)) - d[func] = classdef - elif isinstance(func, staticmethod): - d[func.__get__(43)] = value - else: - d[func] = value - return SomePBC(d) - - def is_true(pbc): - outcome = None - for c in pbc.prebuiltinstances: - if outcome is None: - outcome = bool(c) - else: - if outcome != bool(c): - return SomeBool() - return immutablevalue(outcome) - - -class RPythonCallsSpace: - """Pseudo Object Space providing almost no real operation. - For the Arguments class: if it really needs other operations, it means - that the call pattern is too complex for R-Python. - """ - def newtuple(self, items_s): - return SomeTuple(items_s) - - def newdict(self, stuff): - raise CallPatternTooComplex, "'**' argument" - - def unpackiterable(self, s_obj, expected_length=None): - if isinstance(s_obj, SomeTuple): - if (expected_length is not None and - expected_length != len(s_obj.items)): - raise ValueError - return s_obj.items - raise CallPatternTooComplex, "'*' argument must be SomeTuple" - -class CallPatternTooComplex(Exception): - pass Deleted: /pypy/dist/pypy/documentation/controlflow.txt ============================================================================== --- /pypy/dist/pypy/documentation/controlflow.txt Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,102 +0,0 @@ -FlowObjSpace -============ - -Introduction ------------- - -The FlowObjSpace generates a control-flow graph from a function. This graph also contains a trace of the individual operations, so that it is actually just an alternate representation for the function. - -The FlowObjSpace is an object space, which means that it exports the standard object space interface and it is driven by the interpreter. - -The basic idea is that if the interpreter is given a function, e.g.:: - - def f(n): - return 3*n+2 - -it will do whatever bytecode dispatching and stack-shuffling needed, during which it issues a sequence of calls to the object space. The FlowObjSpace merely records these calls (corresponding to "operations") in a structure called a basic block. To track which value goes where, the FlowObjSpace invents placeholder "wrapped objects" and give them to the interpreter, so that they appear in some next operation. - -For example, if the placeholder ``v1`` is given as the argument to the above function, the interpreter will call ``v2 = space.mul(space.wrap(3), v1)`` and then ``v3 = space.add(v2, space.wrap(2))`` and return ``v3`` as the result. During these calls the FlowObjSpace will record a basic block:: - - Block(v1): # input argument - v2 = mul(Constant(3), v1) - v3 = add(v2, Constant(2)) - - -The Flow model --------------- - -``pypy.objspace.flow.model`` defines the data model used by the flow graphs, as created by the FlowObjSpace, manipulated by ``pypy.translator.simplify`` and ``pypy.translator.transform``, and in general read by almost all the modules in ``pypy.translator``. - -It is recommended to play with ``python translator.py`` on a few examples to get an idea of the structure of flow graphs. Here is a short summary of the non-obvious parts. - - -FunctionGraph - A container for one graph (corresponding to one function). - - :startblock: the first block. It is where the control goes when the function is called. The input arguments of the startblock are the function's arguments. If the function takes a ``*args`` argument, the ``args`` tuple is given as the last input argument of the startblock. - :returnblock: the (unique) block that performs a function return. It is empty, not actually containing any ``return`` operation; the return is implicit. The returned value is the unique input variable of the returnblock. - :exceptblock: the (unique) block that raises an exception out of the function. The two input variables are the exception class and the exception value, respectively. (No other block will actually link to the exceptblock if the function does not explicitely raise exceptions.) - - -Block - A basic block, containing a list of operations and ending in jumps to other basic blocks. All the values that are "live" during the execution of the block are stored in Variables. Each basic block uses its own distinct Variables. - - :inputargs: list of fresh, distinct Variables that represent all the values that can enter this block from any of the previous blocks. - :operations: list of SpaceOperations. - :exitswitch: see below - :exits: list of Links representing possible jumps from the end of this basic block to the beginning of other basic blocks. - - Each Block ends in one of the following ways: - - * unconditional jump: exitswitch is None, exits contains a single Link. - * conditional jump: exitswitch is one of the Variables that appear in the Block, and exits contains one or more Links (usually 2). Each Link's exitcase gives a concrete value. This is the equivalent of a "switch": the control follows the Link whose exitcase matches the run-time value of the exitswitch Variable. It is a run-time error if the Variable doesn't match any exitcase. (Currently only used with 2 Links whose exitcase are False and True, respectively.) - * exception catching: exitswitch is ``Constant(last_exception)``. The first Link has exitcase set to None and represents the non-exceptional path. The next Links have exitcase set to a subclass of Exception, and are taken when the *last* operation of the basic block raises a matching exception. (Thus the basic block must not be empty, and only the last operation is protected by the handler.) - * return or except: the returnblock and the exceptblock have operations set to an empty tuple, exitswitch to None, and exits empty. - - -Link - A link from one basic block to another. - - :prevblock: the Block that this Link is an exit of. - :target: the target Block to which this Link points to. - :args: a list of Variables and Constants, of the same size as the target Block's inputargs, which gives all the values passed into the next block. (Note that each Variable used in the prevblock may appear zero, one or more times in the ``args`` list.) - :exitcase: see above. - - Note that ``args`` uses Variables from the prevblock, which are matched to the target block's ``inputargs`` by position, as in a tuple assignment or function call would do. - - -SpaceOperation - A recorded (or otherwise generated) basic operation. - - :opname: the name of the operation. Generally one from the list in ``pypy.interpreter.baseobjspace``. - :args: list of arguments. Each one is a Constant or a Variable seen previously in the basic block. - :result: a *new* Variable into which the result is to be stored. - - Note that operations usually cannot implicitely raise exceptions at run-time; so for example, code generators can assume that a ``getitem`` operation on a list is safe and can be performed without bound checking. The exceptions to this rule are: (1) if the operation is the last in the block, which ends with ``exitswitch == Constant(last_exception)``, then the implicit exceptions must be checked for, generated, and caught appropriately; (2) calls to other functions, as per ``simple_call`` or ``call_args``, can always raise whatever the called function can raise --- and such exceptions must be passed through to the parent unless they are caught as above. - - -Variable - A placeholder for a run-time value. There is mostly debugging stuff here. - - :name: it is good style to use the Variable object itself instead of its ``name`` attribute to reference a value, although the ``name`` is guaranteed unique. - - -Constant - A constant value used as argument to a SpaceOperation, or as value to pass across a Link to initialize an input Variable in the target Block. - - :value: the concrete value represented by this Constant. - :key: a hashable object representing the value. - - A Constant can occasionally store a mutable Python object. It represents a static, pre-initialized, read-only version of that object. The flow graph should not attempt to actually mutate such Constants. - - -How the FlowObjSpace works --------------------------- - -The FlowObjSpace works by recording all operations issued by the interpreter into basic blocks. A basic block ends in one of two cases: when the interpreters calls ``is_true()``, or when a joinpoint is reached. - -* A joinpoint occurs when the next operation is about to be recorded into the current block, but there is already another block that records an operation for the same bytecode position. This means that the interpreter has closed a loop and is interpreting already-seen code again. In this situation, we interrupt the interpreter and we make a link from the end of the current block back to the previous block, thus closing the loop in the flow graph as well. (Note that this occurs only when an operation is about to be recorded, which allows some amount of constant-folding.) - -* If the interpreter calls ``is_true()``, the FlowObjSpace doesn't generally know if the answer should be True or False, so it puts a conditional jump and generates two successor blocks for the current basic block. There is some trickery involved so that the interpreter is fooled into thinking that ``is_true()`` first returns False (and the subsequent operations are recorded in the first successor block), and later the *same* call to ``is_true()`` also returns True (and the subsequent operations go this time to the other successor block). - -(This section to be extended...) Deleted: /pypy/dist/pypy/interpreter/baseobjspace.py ============================================================================== --- /pypy/dist/pypy/interpreter/baseobjspace.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,477 +0,0 @@ -from pypy.interpreter.executioncontext import ExecutionContext -from pypy.interpreter.error import OperationError -from pypy.interpreter.miscutils import getthreadlocals -from pypy.interpreter.argument import Arguments -from pypy.tool.cache import Cache - -__all__ = ['ObjSpace', 'OperationError', 'Wrappable', 'BaseWrappable', - 'W_Root'] - - -class W_Root: - """This is the abstract root class of all wrapped objects that live - in a 'normal' object space like StdObjSpace.""" - def getdict(self): - return None - - def getdictvalue(self, space, attr): - w_dict = self.getdict() - if w_dict is not None: - try: - return space.getitem(w_dict, space.wrap(attr)) - except OperationError, e: - if not e.match(space, space.w_KeyError): - raise - return None - - - def getclass(self, space): - return space.gettypeobject(self.typedef) - -class BaseWrappable(W_Root): - """A subclass of BaseWrappable is an internal, interpreter-level class - that can nevertheless be exposed at application-level by space.wrap().""" - def __spacebind__(self, space): - return self - -class Wrappable(BaseWrappable, object): - """Same as BaseWrappable, just new-style instead.""" - - -class ObjSpace(object): - """Base class for the interpreter-level implementations of object spaces. - http://codespeak.net/moin/pypy/moin.cgi/ObjectSpace""" - - full_exceptions = True # full support for exceptions (normalization & more) - - def __init__(self): - "NOT_RPYTHON: Basic initialization of objects." - self._gatewaycache = Cache() - self._codecache = Cache() - # set recursion limit - # sets all the internal descriptors - self.initialize() - - def __repr__(self): - return self.__class__.__name__ - - def setbuiltinmodule(self, name, importname=None): - """NOT_RPYTHON. load a lazy pypy/module and put it into sys.modules""" - if importname is None: - importname = name - Module = __import__("pypy.module.%s" % importname, - None, None, ["Module"]).Module - w_name = self.wrap(name) - w_mod = self.wrap(Module(self, w_name)) - w_modules = self.sys.get('modules') - self.setitem(w_modules, w_name, w_mod) - - def make_builtins(self): - "NOT_RPYTHON: only for initializing the space." - - from pypy.module.sys2 import Module - w_name = self.wrap('sys') - self.sys = Module(self, w_name) - w_modules = self.sys.get('modules') - self.setitem(w_modules, w_name, self.wrap(self.sys)) - - from pypy.module.builtin import Module - w_name = self.wrap('__builtin__') - self.builtin = Module(self, w_name) - w_builtin = self.wrap(self.builtin) - self.setitem(w_modules, w_name, w_builtin) - self.setitem(self.builtin.w_dict, self.wrap('__builtins__'), w_builtin) - - # XXX we need to resolve unwrapping issues to - # make this the default _sre module - #self.setbuiltinmodule("_sre", "_sre_pypy") - - self.setbuiltinmodule('parser') - - # initialize with "bootstrap types" from objspace (e.g. w_None) - for name, value in self.__dict__.items(): - if name.startswith('w_') and not name.endswith('Type'): - name = name[2:] - #print "setitem: space instance %-20s into builtins" % name - self.setitem(self.builtin.w_dict, self.wrap(name), value) - - def initialize(self): - """NOT_RPYTHON: Abstract method that should put some minimal - content into the w_builtins.""" - - def loadfromcache(self, key, builder, cache): - return cache.getorbuild(key, builder, self) - loadfromcache._specialize_ = "location" - - - def get_ec_state_dict(self): - "Return the 'state dict' from the active execution context." - return self.getexecutioncontext().get_state_dict() - - def getexecutioncontext(self): - "Return what we consider to be the active execution context." - ec = getthreadlocals().executioncontext - if ec is None: - ec = self.createexecutioncontext() - return ec - - def createexecutioncontext(self): - "Factory function for execution contexts." - return ExecutionContext(self) - - # Following is a friendly interface to common object space operations - # that can be defined in term of more primitive ones. Subclasses - # may also override specific functions for performance. - - #def is_(self, w_x, w_y): -- not really useful. Must be subclassed - # "'x is y'." - # w_id_x = self.id(w_x) - # w_id_y = self.id(w_y) - # return self.eq(w_id_x, w_id_y) - - def not_(self, w_obj): - return self.wrap(not self.is_true(w_obj)) - - def eq_w(self, w_obj1, w_obj2): - """shortcut for space.is_true(space.eq(w_obj1, w_obj2))""" - return self.is_true(self.eq(w_obj1, w_obj2)) - - def is_w(self, w_obj1, w_obj2): - """shortcut for space.is_true(space.is_(w_obj1, w_obj2))""" - return self.is_true(self.is_(w_obj1, w_obj2)) - - def newbool(self, b): - if b: - return self.w_True - else: - return self.w_False - - def interpclass_w(space, w_obj): - """ - If w_obj is a wrapped internal interpreter class instance unwrap to it, - otherwise return None - """ - if isinstance(w_obj, BaseWrappable): - return w_obj - return None - - def unpackiterable(self, w_iterable, expected_length=-1): - """Unpack an iterable object into a real (interpreter-level) list. - Raise a real ValueError if the length is wrong.""" - w_iterator = self.iter(w_iterable) - items = [] - while True: - try: - w_item = self.next(w_iterator) - except OperationError, e: - if not e.match(self, self.w_StopIteration): - raise - break # done - if expected_length != -1 and len(items) == expected_length: - raise ValueError, "too many values to unpack" - items.append(w_item) - if expected_length != -1 and len(items) < expected_length: - i = len(items) - if i == 1: - plural = "" - else: - plural = "s" - raise ValueError, "need more than %d value%s to unpack" % (i, plural) - return items - - def unpacktuple(self, w_tuple, expected_length=None): - """Same as unpackiterable(), but only for tuples. - Only use for bootstrapping or performance reasons.""" - tuple_length = self.int_w(self.len(w_tuple)) - if expected_length is not None and tuple_length != expected_length: - raise ValueError, "got a tuple of length %d instead of %d" % ( - tuple_length, expected_length) - items = [ - self.getitem(w_tuple, self.wrap(i)) for i in range(tuple_length)] - return items - - def exception_match(self, w_exc_type, w_check_class): - """Checks if the given exception type matches 'w_check_class'.""" - check_list = [w_check_class] - while check_list: - w_item = check_list.pop() - # Match identical items. - if self.is_true(self.is_(w_exc_type, w_item)): - return True - try: - # Match subclasses. - if self.is_true(self.abstract_issubclass(w_exc_type, w_item, failhard=True)): - return True - except OperationError: - # Assume that this is a TypeError: w_item not a type, - # and assume that w_item is then actually a tuple. - try: - exclst = self.unpackiterable(w_item) - except OperationError: - # hum, maybe it is not a tuple after all, and w_exc_type - # was not a type at all (string exceptions). Give up. - continue - check_list.extend(exclst) - return False - - def normalize_exception(self, w_type, w_value, w_tb): - from pypy.interpreter import pyframe - return pyframe.normalize_exception(self, w_type,w_value, w_tb) - - def call(self, w_callable, w_args, w_kwds=None): - args = Arguments.frompacked(self, w_args, w_kwds) - return self.call_args(w_callable, args) - - def call_function(self, w_func, *args_w): - args = Arguments(self, list(args_w)) - return self.call_args(w_func, args) - - def call_method(self, w_obj, methname, *arg_w): - w_meth = self.getattr(w_obj, self.wrap(methname)) - return self.call_function(w_meth, *arg_w) - - def isinstance(self, w_obj, w_type): - w_objtype = self.type(w_obj) - return self.issubtype(w_objtype, w_type) - - def abstract_issubclass(self, w_obj, w_cls, failhard=False): - try: - return self.issubtype(w_obj, w_cls) - except OperationError: - try: - self.getattr(w_cls, self.wrap('__bases__')) # type sanity check - return self.recursive_issubclass(w_obj, w_cls) - except OperationError: - if failhard: - raise - else: - return self.w_False - - def recursive_issubclass(self, w_obj, w_cls): - if self.is_w(w_obj, w_cls): - return self.w_True - for w_base in self.unpackiterable(self.getattr(w_obj, - self.wrap('__bases__'))): - if self.is_true(self.recursive_issubclass(w_base, w_cls)): - return self.w_True - return self.w_False - - def abstract_isinstance(self, w_obj, w_cls): - try: - return self.isinstance(w_obj, w_cls) - except OperationError: - try: - w_objcls = self.getattr(w_obj, self.wrap('__class__')) - return self.abstract_issubclass(w_objcls, w_cls) - except OperationError: - return self.w_False - - - def eval(self, expression, w_globals, w_locals): - "NOT_RPYTHON: For internal debugging." - import types - from pypy.interpreter.pycode import PyCode - if isinstance(expression, str): - expression = compile(expression, '?', 'eval') - if isinstance(expression, types.CodeType): - expression = PyCode(self)._from_code(expression) - if not isinstance(expression, PyCode): - raise TypeError, 'space.eval(): expected a string, code or PyCode object' - return expression.exec_code(self, w_globals, w_locals) - - def exec_(self, statement, w_globals, w_locals): - "NOT_RPYTHON: For internal debugging." - import types - from pypy.interpreter.pycode import PyCode - if isinstance(statement, str): - statement = compile(statement, '?', 'exec') - if isinstance(statement, types.CodeType): - statement = PyCode(self)._from_code(statement) - if not isinstance(statement, PyCode): - raise TypeError, 'space.exec_(): expected a string, code or PyCode object' - w_key = self.wrap('__builtins__') - if not self.is_true(self.contains(w_globals, w_key)): - self.setitem(w_globals, w_key, self.wrap(self.builtin)) - return statement.exec_code(self, w_globals, w_locals) - - def appexec(self, posargs_w, source): - """ return value from executing given source at applevel. - EXPERIMENTAL. The source must look like - '''(x, y): - do_stuff... - return result - ''' - """ - w_func = self.loadfromcache(source, buildappexecfunc, self._codecache) - args = Arguments(self, posargs_w) - return self.call_args(w_func, args) - -def buildappexecfunc(source, space): - """ NOT_RPYTHON """ - # XXX will change once we have our own compiler - from pypy.interpreter.pycode import PyCode - from pypy.tool.pytestsupport import py # aehem - source = source.lstrip() - assert source.startswith('('), "incorrect header in:\n%s" % (source,) - source = py.code.Source("def anonymous%s\n" % source) - w_glob = space.newdict([]) - space.exec_(source.compile(), w_glob, w_glob) - return space.getitem(w_glob, space.wrap('anonymous')) - -## Table describing the regular part of the interface of object spaces, -## namely all methods which only take w_ arguments and return a w_ result -## (if any). XXX Maybe we should say that these methods must be accessed -## as 'space.op.xxx()' instead of directly 'space.xxx()'. - -ObjSpace.MethodTable = [ -# method name # symbol # number of arguments # special method name(s) - ('is_', 'is', 2, []), - ('id', 'id', 1, []), - ('type', 'type', 1, []), - ('issubtype', 'issubtype', 2, []), # not for old-style classes - ('repr', 'repr', 1, ['__repr__']), - ('str', 'str', 1, ['__str__']), - ('len', 'len', 1, ['__len__']), - ('hash', 'hash', 1, ['__hash__']), - ('getattr', 'getattr', 2, ['__getattribute__']), - ('setattr', 'setattr', 3, ['__setattr__']), - ('delattr', 'delattr', 2, ['__delattr__']), - ('getitem', 'getitem', 2, ['__getitem__']), - ('setitem', 'setitem', 3, ['__setitem__']), - ('delitem', 'delitem', 2, ['__delitem__']), - ('pos', 'pos', 1, ['__pos__']), - ('neg', 'neg', 1, ['__neg__']), - ('nonzero', 'truth', 1, ['__nonzero__']), - ('abs' , 'abs', 1, ['__abs__']), - ('hex', 'hex', 1, ['__hex__']), - ('oct', 'oct', 1, ['__oct__']), - ('round', 'round', 2, []), - ('ord', 'ord', 1, []), - ('invert', '~', 1, ['__invert__']), - ('add', '+', 2, ['__add__', '__radd__']), - ('sub', '-', 2, ['__sub__', '__rsub__']), - ('mul', '*', 2, ['__mul__', '__rmul__']), - ('truediv', '/', 2, ['__truediv__', '__rtruediv__']), - ('floordiv', '//', 2, ['__floordiv__', '__rfloordiv__']), - ('div', 'div', 2, ['__div__', '__rdiv__']), - ('mod', '%', 2, ['__mod__', '__rmod__']), - ('divmod', 'divmod', 2, ['__divmod__', '__rdivmod__']), - ('pow', '**', 3, ['__pow__', '__rpow__']), - ('lshift', '<<', 2, ['__lshift__', '__rlshift__']), - ('rshift', '>>', 2, ['__rshift__', '__rrshift__']), - ('and_', '&', 2, ['__and__', '__rand__']), - ('or_', '|', 2, ['__or__', '__ror__']), - ('xor', '^', 2, ['__xor__', '__rxor__']), - ('int', 'int', 1, ['__int__']), - ('float', 'float', 1, ['__float__']), - ('long', 'long', 1, ['__long__']), - ('inplace_add', '+=', 2, ['__iadd__']), - ('inplace_sub', '-=', 2, ['__isub__']), - ('inplace_mul', '*=', 2, ['__imul__']), - ('inplace_truediv', '/=', 2, ['__itruediv__']), - ('inplace_floordiv','//=', 2, ['__ifloordiv__']), - ('inplace_div', 'div=', 2, ['__idiv__']), - ('inplace_mod', '%=', 2, ['__imod__']), - ('inplace_pow', '**=', 2, ['__ipow__']), - ('inplace_lshift', '<<=', 2, ['__ilshift__']), - ('inplace_rshift', '>>=', 2, ['__irshift__']), - ('inplace_and', '&=', 2, ['__iand__']), - ('inplace_or', '|=', 2, ['__ior__']), - ('inplace_xor', '^=', 2, ['__ixor__']), - ('lt', '<', 2, ['__lt__', '__gt__']), - ('le', '<=', 2, ['__le__', '__ge__']), - ('eq', '==', 2, ['__eq__', '__eq__']), - ('ne', '!=', 2, ['__ne__', '__ne__']), - ('gt', '>', 2, ['__gt__', '__lt__']), - ('ge', '>=', 2, ['__ge__', '__le__']), - ('cmp', 'cmp', 2, ['__cmp__']), # rich cmps preferred - ('coerce', 'coerce', 2, ['__coerce__', '__coerce__']), - ('contains', 'contains', 2, ['__contains__']), - ('iter', 'iter', 1, ['__iter__']), - ('next', 'next', 1, ['next']), -# ('call', 'call', 3, ['__call__']), - ('get', 'get', 3, ['__get__']), - ('set', 'set', 3, ['__set__']), - ('delete', 'delete', 2, ['__delete__']), - ('userdel', 'del', 2, ['__del__']), - ] - -ObjSpace.BuiltinModuleTable = [ - '__builtin__', - 'sys', - ] - -ObjSpace.ConstantTable = [ - 'None', - 'False', - 'True', - 'Ellipsis', - 'NotImplemented', - ] - -ObjSpace.ExceptionTable = [ - 'ArithmeticError', - 'AssertionError', - 'AttributeError', - 'EOFError', - 'EnvironmentError', - 'Exception', - 'FloatingPointError', - 'IOError', - 'ImportError', - 'IndentationError', - 'IndexError', - 'KeyError', - 'KeyboardInterrupt', - 'LookupError', - 'MemoryError', - 'NameError', - 'NotImplementedError', - 'OSError', - 'OverflowError', - 'ReferenceError', - 'RuntimeError', - 'StandardError', - 'StopIteration', - 'SyntaxError', - 'SystemError', - 'SystemExit', - 'TabError', - 'TypeError', - 'UnboundLocalError', - 'UnicodeError', - 'ValueError', - 'ZeroDivisionError', - ] - -## Irregular part of the interface: -# -# wrap(x) -> w_x -# str_w(w_str) -> str -# int_w(w_ival or w_long_ival) -> ival -# float_w(w_floatval) -> floatval -#interpclass_w(w_interpclass_inst or w_obj) -> interpclass_inst|w_obj -# unwrap(w_x) -> x -# is_true(w_x) -> True or False -# newtuple([w_1, w_2,...]) -> w_tuple -# newlist([w_1, w_2,...]) -> w_list -# newstring([w_1, w_2,...]) -> w_string from ascii numbers (bytes) -# newdict([(w_key,w_value),...]) -> w_dict -# newslice(w_start,w_stop,w_step) -> w_slice (any argument may be a real None) -# call_args(w_obj,Arguments()) -> w_result - -ObjSpace.IrregularOpTable = [ - 'wrap', - 'str_w', - 'int_w', - 'float_w', - 'interpclass_w', - 'unwrap', - 'is_true', - 'newtuple', - 'newlist', - 'newdict', - 'newslice', - 'call_args' - ] - Deleted: /pypy/dist/pypy/interpreter/error.py ============================================================================== --- /pypy/dist/pypy/interpreter/error.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,143 +0,0 @@ -import autopath -import os, sys - -AUTO_DEBUG = os.getenv('PYPY_DEBUG') - - -class OperationError(Exception): - """Interpreter-level exception that signals an exception that should be - sent to the application level. - - OperationError instances have three public attributes (and no .args), - w_type, w_value and application_traceback, which contain the wrapped - type and value describing the exception, and the unwrapped list of - (frame, instruction_position) making the application-level traceback. - """ - - def __init__(self, w_type, w_value, tb=None): - assert w_type is not None, w_value - self.w_type = w_type - self.w_value = w_value - self.application_traceback = tb - self.debug_excs = [] - - def clear(self, space): - # for sys.exc_clear() - self.w_type = space.w_None - self.w_value = space.w_None - self.application_traceback = None - - def match(self, space, w_check_class): - "Check if this application-level exception matches 'w_check_class'." - return space.exception_match(self.w_type, w_check_class) - - def __str__(self): - "NOT_RPYTHON: Convenience for tracebacks." - return '[%s: %s]' % (self.w_type, self.w_value) - - def errorstr(self, space): - "NOT_RPYTHON: The exception class and value, as a string." - if space is None: - exc_typename = str(self.w_type) - exc_value = self.w_value - else: - w = space.wrap - if space.is_true(space.is_(space.type(self.w_type), space.w_str)): - exc_typename = space.str_w(self.w_type) - else: - exc_typename = space.str_w( - space.getattr(self.w_type, w('__name__'))) - if self.w_value == space.w_None: - exc_value = None - else: - exc_value = space.str_w(space.str(self.w_value)) - if not exc_value: - return exc_typename - else: - return '%s: %s' % (exc_typename, exc_value) - - def getframe(self): - "The frame this exception was raised in, or None." - if self.application_traceback: - return self.application_traceback.frame - else: - return None - - def record_interpreter_traceback(self): - """NOT_RPYTHON: Records the current traceback inside the interpreter. - This traceback is only useful to debug the interpreter, not the - application.""" - self.debug_excs.append(sys.exc_info()) - - def print_application_traceback(self, space, file=None): - "NOT_RPYTHON: Dump a standard application-level traceback." - if file is None: file = sys.stderr - self.print_app_tb_only(file) - print >> file, self.errorstr(space) - - def print_app_tb_only(self, file): - "NOT_RPYTHON" - tb = self.application_traceback - if tb: - import linecache - print >> file, "Traceback (application-level):" - while tb is not None: - co = tb.frame.code - lineno = tb.lineno - fname = co.co_filename - if fname.startswith('\n'): - lines = fname.split('\n') - fname = lines[0].strip() - try: - l = lines[lineno] - except IndexError: - l = '' - else: - l = linecache.getline(fname, lineno) - print >> file, " File \"%s\"," % fname, - print >> file, "line", lineno, "in", co.co_name - if l: - if l.endswith('\n'): - l = l[:-1] - print >> file, l - tb = tb.next - - def print_detailed_traceback(self, space=None, file=None): - """NOT_RPYTHON: Dump a nice detailed interpreter- and - application-level traceback, useful to debug the interpreter.""" - import traceback, cStringIO - if file is None: file = sys.stderr - f = cStringIO.StringIO() - for i in range(len(self.debug_excs)-1, -1, -1): - print >> f, "Traceback (interpreter-level):" - traceback.print_tb(self.debug_excs[i][2], file=f) - f.seek(0) - debug_print(''.join(['|| ' + line for line in f.readlines()]), file) - if self.debug_excs: - from pypy.tool import tb_server - tb_server.publish_exc(self.debug_excs[-1]) - self.print_app_tb_only(file) - print >> file, '(application-level)', self.errorstr(space) - if AUTO_DEBUG: - import debug - debug.fire(self) - - -# Utilities -from pypy.tool.ansi_print import ansi_print - -def debug_print(text, file=None): - ansi_print(text, esc="31", file=file) # ANSI color code "red" - -### installing the excepthook for OperationErrors -##def operr_excepthook(exctype, value, traceback): -## if issubclass(exctype, OperationError): -## value.debug_excs.append((exctype, value, traceback)) -## value.print_detailed_traceback() -## else: -## old_excepthook(exctype, value, traceback) -## from pypy.tool import tb_server -## tb_server.publish_exc((exctype, value, traceback)) - -##old_excepthook = sys.excepthook -##sys.excepthook = operr_excepthook Deleted: /pypy/dist/pypy/interpreter/pyframe.py ============================================================================== --- /pypy/dist/pypy/interpreter/pyframe.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,591 +0,0 @@ -""" PyFrame class implementation with the interpreter main loop. -""" - -from pypy.interpreter import eval, baseobjspace, gateway -from pypy.interpreter.miscutils import Stack -from pypy.interpreter.error import OperationError -from pypy.interpreter import pytraceback -import opcode - -# Define some opcodes used -g = globals() -for op in '''DUP_TOP POP_TOP SETUP_LOOP SETUP_EXCEPT SETUP_FINALLY -POP_BLOCK END_FINALLY'''.split(): - g[op] = opcode.opmap[op] -HAVE_ARGUMENT = opcode.HAVE_ARGUMENT - -import __future__ -compiler_flags = 0 -for fname in __future__.all_feature_names: - compiler_flags |= getattr(__future__, fname).compiler_flag - - -def cpython_tb(): - """NOT_RPYTHON""" - import sys - return sys.exc_info()[2] - -class PyFrame(eval.Frame): - """Represents a frame for a regular Python function - that needs to be interpreted. - - See also pyopcode.PyStandardFrame and pynestedscope.PyNestedScopeFrame. - - Public fields: - * 'space' is the object space this frame is running in - * 'code' is the PyCode object this frame runs - * 'w_locals' is the locals dictionary to use - * 'w_globals' is the attached globals dictionary - * 'builtin' is the attached built-in module - * 'valuestack', 'blockstack', 'next_instr' control the interpretation - """ - - def __init__(self, space, code, w_globals, closure): - eval.Frame.__init__(self, space, code, w_globals, code.co_nlocals) - self.valuestack = Stack() - self.blockstack = Stack() - self.last_exception = None - self.next_instr = 0 - self.builtin = space.builtin.pick_builtin(w_globals) - # regular functions always have CO_OPTIMIZED and CO_NEWLOCALS. - # class bodies only have CO_NEWLOCALS. - if code.dictscope_needed(): - self.w_locals = space.newdict([]) # set to None by Frame.__init__ - - self.fastlocals_w = [None]*self.numlocals - self.w_f_trace = None - self.last_instr = -1 - self.f_back = None - self.f_lineno = self.code.co_firstlineno - - # For tracing - self.instr_lb = 0 - self.instr_ub = -1 - - def getfastscope(self): - "Get the fast locals as a list." - return self.fastlocals_w - - def setfastscope(self, scope_w): - """Initialize the fast locals from a list of values, - where the order is according to self.code.signature().""" - if len(scope_w) > len(self.fastlocals_w): - raise ValueError, "new fastscope is longer than the allocated area" - self.fastlocals_w[:len(scope_w)] = scope_w - - def getclosure(self): - return None - - def get_compile_flags(self): - return self.code.co_flags & compiler_flags - - def eval(self, executioncontext): - "Interpreter main loop!" - try: - executioncontext.call_trace(self) - self.last_instr = -1 - while True: - try: - try: - try: - while True: - # fetch and dispatch the next opcode - # dispatch() is abstract, see pyopcode. - self.last_instr = self.next_instr - executioncontext.bytecode_trace(self) - self.next_instr = self.last_instr - self.dispatch() - # catch asynchronous exceptions and turn them - # into OperationErrors - except KeyboardInterrupt: - tb = cpython_tb() - raise OperationError, OperationError(self.space.w_KeyboardInterrupt, - self.space.w_None), tb - except MemoryError: - tb = cpython_tb() - raise OperationError, OperationError(self.space.w_MemoryError, - self.space.w_None), tb - except RuntimeError, e: - tb = cpython_tb() - raise OperationError, OperationError(self.space.w_RuntimeError, - self.space.wrap("internal error: " + str(e))), tb - - except OperationError, e: - pytraceback.record_application_traceback( - self.space, e, self, self.last_instr) - executioncontext.exception_trace(self, e) - # convert an OperationError into a control flow - # exception - raise SApplicationException(e) - - except ControlFlowException, ctlflowexc: - # we have a reason to change the control flow - # (typically unroll the stack) - ctlflowexc.action(self, self.last_instr, executioncontext) - - except ExitFrame, e: - # leave that frame - w_exitvalue = e.args[0] - executioncontext.return_trace(self, w_exitvalue) - return w_exitvalue - - ### line numbers ### - - def fget_f_lineno(space, w_self): - "Returns the line number of the instruction currently being executed." - self = space.interpclass_w(w_self) - if self.w_f_trace is None: - return space.wrap(self.get_last_lineno()) - else: - return space.wrap(self.f_lineno) - - def fset_f_lineno(space, w_self, w_new_lineno): - "Returns the line number of the instruction currently being executed." - try: - new_lineno = space.int_w(w_new_lineno) - except OperationError, e: - raise OperationError(space.w_ValueError, - space.wrap("lineno must be an integer")) - - self = space.interpclass_w(w_self) - if self.w_f_trace is None: - raise OperationError(space.w_ValueError, - space.wrap("f_lineo can only be set by a trace function.")) - - if new_lineno < self.code.co_firstlineno: - raise OperationError(space.w_ValueError, - space.wrap("line %d comes before the current code." % new_lineno)) - code = self.code.co_code - addr = 0 - line = self.code.co_firstlineno - new_lasti = -1 - offset = 0 - lnotab = self.code.co_lnotab - for offset in xrange(0, len(lnotab), 2): - addr += ord(lnotab[offset]) - line += ord(lnotab[offset + 1]) - if line >= new_lineno: - new_lasti = addr - new_lineno = line - break - - if new_lasti == -1: - raise OperationError(space.w_ValueError, - space.wrap("line %d comes after the current code." % new_lineno)) - - # Don't jump to a line with an except in it. - if ord(code[new_lasti]) in (DUP_TOP, POP_TOP): - raise OperationError(space.w_ValueError, - space.wrap("can't jump to 'except' line as there's no exception")) - - # Don't jump into or out of a finally block. - f_lasti_setup_addr = -1 - new_lasti_setup_addr = -1 - blockstack = Stack() - addr = 0 - while addr < len(code): - op = ord(code[addr]) - if op in (SETUP_LOOP, SETUP_EXCEPT, SETUP_FINALLY): - blockstack.push([addr, False]) - elif op == POP_BLOCK: - setup_op = ord(code[blockstack.top()[0]]) - if setup_op == SETUP_FINALLY: - blockstack.top()[1] = True - else: - blockstack.pop() - elif op == END_FINALLY: - if not blockstack.empty(): - setup_op = ord(code[blockstack.top()[0]]) - if setup_op == SETUP_FINALLY: - blockstack.pop() - - if addr == new_lasti or addr == self.last_instr: - for ii in range(blockstack.depth()): - setup_addr, in_finally = blockstack.top(ii) - if in_finally: - if addr == new_lasti: - new_lasti_setup_addr = setup_addr - if addr == self.last_instr: - f_lasti_setup_addr = setup_addr - break - - if op >= HAVE_ARGUMENT: - addr += 3 - else: - addr += 1 - - assert blockstack.empty() - - if new_lasti_setup_addr != f_lasti_setup_addr: - raise OperationError(space.w_ValueError, - space.wrap("can't jump into or out of a 'finally' block %d -> %d" % - (f_lasti_setup_addr, new_lasti_setup_addr))) - - if new_lasti < self.last_instr: - min_addr = new_lasti - max_addr = self.last_instr - else: - min_addr = self.last_instr - max_addr = new_lasti - - delta_iblock = min_delta_iblock = 0 - addr = min_addr - while addr < max_addr: - op = ord(code[addr]) - - if op in (SETUP_LOOP, SETUP_EXCEPT, SETUP_FINALLY): - delta_iblock += 1; - elif op == POP_BLOCK: - delta_iblock -= 1 - if delta_iblock < min_delta_iblock: - min_delta_iblock = delta_iblock - - if op >= opcode.HAVE_ARGUMENT: - addr += 3 - else: - addr += 1 - - f_iblock = self.blockstack.depth() - min_iblock = f_iblock + min_delta_iblock - if new_lasti > self.last_instr: - new_iblock = f_iblock + delta_iblock - else: - new_iblock = f_iblock - delta_iblock - - if new_iblock > min_iblock: - raise OperationError(space.w_ValueError, - space.wrap("can't jump into the middle of a block")) - - while f_iblock > new_iblock: - block = self.blockstack.pop() - block.cleanup(self) - f_iblock -= 1 - - self.f_lineno = new_lineno - self.last_instr = new_lasti - - def get_last_lineno(self): - "Returns the line number of the instruction currently being executed." - return pytraceback.offset2lineno(self.code, self.next_instr-1) - - def get_next_lineno(self): - "Returns the line number of the next instruction to execute." - return pytraceback.offset2lineno(self.code, self.next_instr) - - def fget_f_builtins(space, w_self): - self = space.interpclass_w(w_self) - return self.builtin.getdict() - - def fget_f_back(space, w_self): - self = space.interpclass_w(w_self) - return self.space.wrap(self.f_back) - - def fget_f_lasti(space, w_self): - self = space.interpclass_w(w_self) - return self.space.wrap(self.last_instr) - - def fget_f_trace(space, w_self): - self = space.interpclass_w(w_self) - return self.w_f_trace - - def fset_f_trace(space, w_self, w_trace): - self = space.interpclass_w(w_self) - if space.is_true(space.is_(w_trace, space.w_None)): - self.w_f_trace = None - else: - self.w_f_trace = w_trace - self.f_lineno = self.get_last_lineno() - - def fget_f_exc_type(space, w_self): - self = space.interpclass_w(w_self) - if self.last_exception is not None: - f = self.f_back - while f is not None and f.last_exception is None: - f = f.f_back - if f is not None: - return f.last_exception.w_type - return space.w_None - - def fget_f_exc_value(space, w_self): - self = space.interpclass_w(w_self) - if self.last_exception is not None: - f = self.f_back - while f is not None and f.last_exception is None: - f = f.f_back - if f is not None: - return f.last_exception.w_value - return space.w_None - - def fget_f_exc_traceback(space, w_self): - self = space.interpclass_w(w_self) - if self.last_exception is not None: - f = self.f_back - while f is not None and f.last_exception is None: - f = f.f_back - if f is not None: - return space.wrap(f.last_exception.application_traceback) - return space.w_None - - def fget_f_restricted(space, w_self): - self = space.interpclass_w(w_self) - return space.wrap(self.builtin is not space.builtin) - -### Frame Blocks ### - -class FrameBlock: - - """Abstract base class for frame blocks from the blockstack, - used by the SETUP_XXX and POP_BLOCK opcodes.""" - - def __init__(self, frame, handlerposition): - self.handlerposition = handlerposition - self.valuestackdepth = frame.valuestack.depth() - - def __eq__(self, other): - return (self.__class__ is other.__class__ and - self.handlerposition == other.handlerposition and - self.valuestackdepth == other.valuestackdepth) - - def __ne__(self, other): - return not (self == other) - - def __hash__(self): - return hash((self.handlerposition, self.valuestackdepth)) - - def cleanupstack(self, frame): - for i in range(self.valuestackdepth, frame.valuestack.depth()): - frame.valuestack.pop() - - def cleanup(self, frame): - "Clean up a frame when we normally exit the block." - self.cleanupstack(frame) - - def unroll(self, frame, unroller): - "Clean up a frame when we abnormally exit the block." - self.cleanupstack(frame) - return False # continue to unroll - - -class LoopBlock(FrameBlock): - """A loop block. Stores the end-of-loop pointer in case of 'break'.""" - - def unroll(self, frame, unroller): - if isinstance(unroller, SContinueLoop): - # re-push the loop block without cleaning up the value stack, - # and jump to the beginning of the loop, stored in the - # exception's argument - frame.blockstack.push(self) - jump_to = unroller.args[0] - frame.next_instr = jump_to - return True # stop unrolling - self.cleanupstack(frame) - if isinstance(unroller, SBreakLoop): - # jump to the end of the loop - frame.next_instr = self.handlerposition - return True # stop unrolling - return False - - -class ExceptBlock(FrameBlock): - """An try:except: block. Stores the position of the exception handler.""" - - def unroll(self, frame, unroller): - self.cleanupstack(frame) - if isinstance(unroller, SApplicationException): - # push the exception to the value stack for inspection by the - # exception handler (the code after the except:) - operationerr = unroller.args[0] - w_type = operationerr.w_type - w_value = operationerr.w_value - w_normalized = frame.space.normalize_exception(w_type, w_value, - frame.space.w_None) - w_type, w_value, w_tb = frame.space.unpacktuple(w_normalized, 3) - # save the normalized exception back into the OperationError - # -- in particular it makes sure that sys.exc_info() etc see - # normalized exception. - operationerr.w_type = w_type - operationerr.w_value = w_value - # the stack setup is slightly different than in CPython: - # instead of the traceback, we store the unroller object, - # wrapped. - frame.valuestack.push(frame.space.wrap(unroller)) - frame.valuestack.push(w_value) - frame.valuestack.push(w_type) - frame.next_instr = self.handlerposition # jump to the handler - return True # stop unrolling - return False - -# make the following flowable: need _classobj -import types, __builtin__ -__builtin__._classobj = types.ClassType - -app = gateway.applevel(''' - def normalize_exception(etype, value, tb): - """Normalize an (exc_type, exc_value) pair: - exc_value will be an exception instance and exc_type its class. - """ - # mistakes here usually show up as infinite recursion, which is fun. - while isinstance(etype, tuple): - etype = etype[0] - ## if isinstance(etype, (type, _classobj)): - ## isinstance with tuple argument doesn't map to space.isinstance, yet - if isinstance(etype, type) or isinstance(etype, _classobj): - if not isinstance(value, etype): - if value is None: - # raise Type: we assume we have to instantiate Type - value = etype() - elif isinstance(value, tuple): - # raise Type, Tuple: assume Tuple contains the constructor args - value = etype(*value) - else: - # raise Type, X: assume X is the constructor argument - value = etype(value) - # raise Type, Instance: let etype be the exact type of value - etype = value.__class__ - elif type(etype) is str: - # XXX warn -- deprecated - if value is not None and type(value) is not str: - raise TypeError("string exceptions can only have a string value") - else: - # raise X: we assume that X is an already-built instance - if value is not None: - raise TypeError("instance exception may not have a separate value") - value = etype - etype = value.__class__ - # for the sake of language consistency we should not allow - # things like 'raise 1', but it is probably fine (i.e. - # not ambiguous) to allow them in the explicit form 'raise int, 1' - if not hasattr(value, '__dict__') and not hasattr(value, '__slots__'): - raise TypeError("raising built-in objects can be ambiguous, " - "use 'raise type, value' instead") - return etype, value, tb -''') -normalize_exception = app.interphook("normalize_exception") - - -class FinallyBlock(FrameBlock): - """A try:finally: block. Stores the position of the exception handler.""" - - def cleanup(self, frame): - # upon normal entry into the finally: part, the standard Python - # bytecode pushes a single None for END_FINALLY. In our case we - # always push three values into the stack: the wrapped ctlflowexc, - # the exception value and the exception type (which are all None - # here). - self.cleanupstack(frame) - # one None already pushed by the bytecode - frame.valuestack.push(frame.space.w_None) - frame.valuestack.push(frame.space.w_None) - - def unroll(self, frame, unroller): - # any abnormal reason for unrolling a finally: triggers the end of - # the block unrolling and the entering the finally: handler. - # see comments in cleanup(). - self.cleanupstack(frame) - frame.valuestack.push(frame.space.wrap(unroller)) - frame.valuestack.push(frame.space.w_None) - frame.valuestack.push(frame.space.w_None) - frame.next_instr = self.handlerposition # jump to the handler - return True # stop unrolling - - -### Internal exceptions that change the control flow ### -### and (typically) unroll the block stack ### - -class ControlFlowException(Exception, baseobjspace.BaseWrappable): - """Abstract base class for interpreter-level exceptions that - instruct the interpreter to change the control flow and the - block stack. - - The concrete subclasses correspond to the various values WHY_XXX - values of the why_code enumeration in ceval.c: - - WHY_NOT, OK, not this one :-) - WHY_EXCEPTION, SApplicationException - WHY_RERAISE, we don't think this is needed - WHY_RETURN, SReturnValue - WHY_BREAK, SBreakLoop - WHY_CONTINUE, SContinueLoop - WHY_YIELD SYieldValue - - """ - def action(self, frame, last_instr, executioncontext): - "Default unroller implementation." - while not frame.blockstack.empty(): - block = frame.blockstack.pop() - if block.unroll(frame, self): - break - else: - self.emptystack(frame) - - def emptystack(self, frame): - "Default behavior when the block stack is exhausted." - # could occur e.g. when a BREAK_LOOP is not actually within a loop - raise BytecodeCorruption, "block stack exhausted" - - # for the flow object space, a way to "pickle" and "unpickle" the - # ControlFlowException by enumerating the Variables it contains. - def state_unpack_variables(self, space): - return [] # by default, overridden below - def state_pack_variables(self, space, *values_w): - assert len(values_w) == 0 - -class SApplicationException(ControlFlowException): - """Unroll the stack because of an application-level exception - (i.e. an OperationException).""" - - def action(self, frame, last_instr, executioncontext): - e = self.args[0] - frame.last_exception = e - - ControlFlowException.action(self, frame, - last_instr, executioncontext) - - def emptystack(self, frame): - # propagate the exception to the caller - if len(self.args) == 2: - operationerr, tb = self.args - raise operationerr.__class__, operationerr, tb - else: - operationerr = self.args[0] - raise operationerr - - def state_unpack_variables(self, space): - e = self.args[0] - assert isinstance(e, OperationError) - return [e.w_type, e.w_value] - def state_pack_variables(self, space, w_type, w_value): - self.args = (OperationError(w_type, w_value),) - -class SBreakLoop(ControlFlowException): - """Signals a 'break' statement.""" - -class SContinueLoop(ControlFlowException): - """Signals a 'continue' statement. - Argument is the bytecode position of the beginning of the loop.""" - - def state_unpack_variables(self, space): - jump_to = self.args[0] - return [space.wrap(jump_to)] - def state_pack_variables(self, space, w_jump_to): - self.args = (space.int_w(w_jump_to),) - -class SReturnValue(ControlFlowException): - """Signals a 'return' statement. - Argument is the wrapped object to return.""" - def emptystack(self, frame): - w_returnvalue = self.args[0] - raise ExitFrame(w_returnvalue) - - def state_unpack_variables(self, space): - w_returnvalue = self.args[0] - return [w_returnvalue] - def state_pack_variables(self, space, w_returnvalue): - self.args = (w_returnvalue,) - -class ExitFrame(Exception): - """Signals the end of the frame execution. - The argument is the returned or yielded value, already wrapped.""" - -class BytecodeCorruption(ValueError): - """Detected bytecode corruption. Never caught; it's an error.""" Deleted: /pypy/dist/pypy/interpreter/pyopcode.py ============================================================================== --- /pypy/dist/pypy/interpreter/pyopcode.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,869 +0,0 @@ -""" -Implementation of a part of the standard Python opcodes. -The rest, dealing with variables in optimized ways, is in -pyfastscope.py and pynestedscope.py. -""" - -from pypy.interpreter.baseobjspace import OperationError, BaseWrappable -from pypy.interpreter import gateway, function -from pypy.interpreter import pyframe, pytraceback -from pypy.interpreter.miscutils import InitializedClass -from pypy.interpreter.argument import Arguments -from pypy.interpreter.pycode import PyCode -from pypy.tool import hack - -def unaryoperation(operationname): - """NOT_RPYTHON""" - def opimpl(f): - operation = getattr(f.space, operationname) - w_1 = f.valuestack.pop() - w_result = operation(w_1) - f.valuestack.push(w_result) - - return hack.func_with_new_name(opimpl, "opcode_impl_for_%s" % operationname) - -def binaryoperation(operationname): - """NOT_RPYTHON""" - def opimpl(f): - operation = getattr(f.space, operationname) - w_2 = f.valuestack.pop() - w_1 = f.valuestack.pop() - w_result = operation(w_1, w_2) - f.valuestack.push(w_result) - - return hack.func_with_new_name(opimpl, "opcode_impl_for_%s" % operationname) - - -class PyInterpFrame(pyframe.PyFrame): - """A PyFrame that knows about interpretation of standard Python opcodes - minus the ones related to nested scopes.""" - - ### opcode dispatch ### - - # 'opcode_has_arg' is a class attribute: list of True/False whether opcode takes arg - # 'dispatch_table_no_arg: list of functions/None - # 'dispatch_table_w_arg: list of functions/None - # Currently, they are always setup in pyopcode.py - # but it could be a custom table. - - def dispatch(self): - opcode = self.nextop() - if self.opcode_has_arg[opcode]: - fn = self.dispatch_table_w_arg[opcode] - oparg = self.nextarg() - fn(self, oparg) - else: - fn = self.dispatch_table_no_arg[opcode] - fn(self) - - def nextop(self): - c = self.code.co_code[self.next_instr] - self.next_instr += 1 - return ord(c) - - def nextarg(self): - lo = self.nextop() - hi = self.nextop() - return (hi<<8) + lo - - ### accessor functions ### - - def getlocalvarname(self, index): - return self.code.co_varnames[index] - - def getconstant_w(self, index): - return self.code.co_consts_w[index] - - def getname(self, index): - return self.code.co_names[index] - - def getname_w(self, index): - return self.space.wrap(self.code.co_names[index]) - - - ################################################################ - ## Implementation of the "operational" opcodes - ## See also pyfastscope.py and pynestedscope.py for the rest. - ## - - # the 'self' argument of opcode implementations is called 'f' - # for historical reasons - - def NOP(f): - pass - - def LOAD_FAST(f, varindex): - # access a local variable directly - w_value = f.fastlocals_w[varindex] - if w_value is None: - varname = f.getlocalvarname(varindex) - message = "local variable '%s' referenced before assignment" % varname - raise OperationError(f.space.w_UnboundLocalError, f.space.wrap(message)) - f.valuestack.push(w_value) - - def LOAD_CONST(f, constindex): - w_const = f.getconstant_w(constindex) - f.valuestack.push(w_const) - - def STORE_FAST(f, varindex): - w_newvalue = f.valuestack.pop() - f.fastlocals_w[varindex] = w_newvalue - #except: - # print "exception: got index error" - # print " varindex:", varindex - # print " len(locals_w)", len(f.locals_w) - # import dis - # print dis.dis(f.code) - # print "co_varnames", f.code.co_varnames - # print "co_nlocals", f.code.co_nlocals - # raise - - def POP_TOP(f): - f.valuestack.pop() - - def ROT_TWO(f): - w_1 = f.valuestack.pop() - w_2 = f.valuestack.pop() - f.valuestack.push(w_1) - f.valuestack.push(w_2) - - def ROT_THREE(f): - w_1 = f.valuestack.pop() - w_2 = f.valuestack.pop() - w_3 = f.valuestack.pop() - f.valuestack.push(w_1) - f.valuestack.push(w_3) - f.valuestack.push(w_2) - - def ROT_FOUR(f): - w_1 = f.valuestack.pop() - w_2 = f.valuestack.pop() - w_3 = f.valuestack.pop() - w_4 = f.valuestack.pop() - f.valuestack.push(w_1) - f.valuestack.push(w_4) - f.valuestack.push(w_3) - f.valuestack.push(w_2) - - def DUP_TOP(f): - w_1 = f.valuestack.top() - f.valuestack.push(w_1) - - def DUP_TOPX(f, itemcount): - assert 1 <= itemcount <= 5, "limitation of the current interpreter" - for i in range(itemcount): - w_1 = f.valuestack.top(itemcount-1) - f.valuestack.push(w_1) - - UNARY_POSITIVE = unaryoperation("pos") - UNARY_NEGATIVE = unaryoperation("neg") - UNARY_NOT = unaryoperation("not_") - UNARY_CONVERT = unaryoperation("repr") - UNARY_INVERT = unaryoperation("invert") - - def BINARY_POWER(f): - w_2 = f.valuestack.pop() - w_1 = f.valuestack.pop() - w_result = f.space.pow(w_1, w_2, f.space.w_None) - f.valuestack.push(w_result) - - BINARY_MULTIPLY = binaryoperation("mul") - BINARY_TRUE_DIVIDE = binaryoperation("truediv") - BINARY_FLOOR_DIVIDE = binaryoperation("floordiv") - BINARY_DIVIDE = binaryoperation("div") - BINARY_MODULO = binaryoperation("mod") - BINARY_ADD = binaryoperation("add") - BINARY_SUBTRACT = binaryoperation("sub") - BINARY_SUBSCR = binaryoperation("getitem") - BINARY_LSHIFT = binaryoperation("lshift") - BINARY_RSHIFT = binaryoperation("rshift") - BINARY_AND = binaryoperation("and_") - BINARY_XOR = binaryoperation("xor") - BINARY_OR = binaryoperation("or_") - - def INPLACE_POWER(f): - w_2 = f.valuestack.pop() - w_1 = f.valuestack.pop() - w_result = f.space.inplace_pow(w_1, w_2) - f.valuestack.push(w_result) - - INPLACE_MULTIPLY = binaryoperation("inplace_mul") - INPLACE_TRUE_DIVIDE = binaryoperation("inplace_truediv") - INPLACE_FLOOR_DIVIDE = binaryoperation("inplace_floordiv") - INPLACE_DIVIDE = binaryoperation("inplace_div") - INPLACE_MODULO = binaryoperation("inplace_mod") - INPLACE_ADD = binaryoperation("inplace_add") - INPLACE_SUBTRACT = binaryoperation("inplace_sub") - INPLACE_LSHIFT = binaryoperation("inplace_lshift") - INPLACE_RSHIFT = binaryoperation("inplace_rshift") - INPLACE_AND = binaryoperation("inplace_and") - INPLACE_XOR = binaryoperation("inplace_xor") - INPLACE_OR = binaryoperation("inplace_or") - - def slice(f, w_start, w_end): - w_slice = f.space.newslice(w_start, w_end, None) - w_obj = f.valuestack.pop() - w_result = f.space.getitem(w_obj, w_slice) - f.valuestack.push(w_result) - - def SLICE_0(f): - f.slice(None, None) - - def SLICE_1(f): - w_start = f.valuestack.pop() - f.slice(w_start, None) - - def SLICE_2(f): - w_end = f.valuestack.pop() - f.slice(None, w_end) - - def SLICE_3(f): - w_end = f.valuestack.pop() - w_start = f.valuestack.pop() - f.slice(w_start, w_end) - - def storeslice(f, w_start, w_end): - w_slice = f.space.newslice(w_start, w_end, None) - w_obj = f.valuestack.pop() - w_newvalue = f.valuestack.pop() - f.space.setitem(w_obj, w_slice, w_newvalue) - - def STORE_SLICE_0(f): - f.storeslice(None, None) - - def STORE_SLICE_1(f): - w_start = f.valuestack.pop() - f.storeslice(w_start, None) - - def STORE_SLICE_2(f): - w_end = f.valuestack.pop() - f.storeslice(None, w_end) - - def STORE_SLICE_3(f): - w_end = f.valuestack.pop() - w_start = f.valuestack.pop() - f.storeslice(w_start, w_end) - - def deleteslice(f, w_start, w_end): - w_slice = f.space.newslice(w_start, w_end, None) - w_obj = f.valuestack.pop() - f.space.delitem(w_obj, w_slice) - - def DELETE_SLICE_0(f): - f.deleteslice(None, None) - - def DELETE_SLICE_1(f): - w_start = f.valuestack.pop() - f.deleteslice(w_start, None) - - def DELETE_SLICE_2(f): - w_end = f.valuestack.pop() - f.deleteslice(None, w_end) - - def DELETE_SLICE_3(f): - w_end = f.valuestack.pop() - w_start = f.valuestack.pop() - f.deleteslice(w_start, w_end) - - def STORE_SUBSCR(f): - "obj[subscr] = newvalue" - w_subscr = f.valuestack.pop() - w_obj = f.valuestack.pop() - w_newvalue = f.valuestack.pop() - f.space.setitem(w_obj, w_subscr, w_newvalue) - - def DELETE_SUBSCR(f): - "del obj[subscr]" - w_subscr = f.valuestack.pop() - w_obj = f.valuestack.pop() - f.space.delitem(w_obj, w_subscr) - - def PRINT_EXPR(f): - w_expr = f.valuestack.pop() - print_expr(f.space, w_expr) - - def PRINT_ITEM_TO(f): - w_stream = f.valuestack.pop() - w_item = f.valuestack.pop() - if w_stream == f.space.w_None: - w_stream = sys_stdout(f.space) # grumble grumble special cases - print_item_to(f.space, w_item, w_stream) - - def PRINT_ITEM(f): - w_item = f.valuestack.pop() - print_item_to(f.space, w_item, sys_stdout(f.space)) - - def PRINT_NEWLINE_TO(f): - w_stream = f.valuestack.pop() - if w_stream == f.space.w_None: - w_stream = sys_stdout(f.space) # grumble grumble special cases - print_newline_to(f.space, w_stream) - - def PRINT_NEWLINE(f): - print_newline_to(f.space, sys_stdout(f.space)) - - def BREAK_LOOP(f): - raise pyframe.SBreakLoop - - def CONTINUE_LOOP(f, startofloop): - raise pyframe.SContinueLoop(startofloop) - - def RAISE_VARARGS(f, nbargs): - # we use the .app.py file to prepare the exception/value/traceback - # but not to actually raise it, because we cannot use the 'raise' - # statement to implement RAISE_VARARGS - if nbargs == 0: - operror = f.space.getexecutioncontext().sys_exc_info() - if operror is None: - raise OperationError(f.space.w_TypeError, - f.space.wrap("raise: no active exception to re-raise")) - # re-raise, no new traceback obj will be attached - raise pyframe.SApplicationException(operror) - w_value = w_traceback = f.space.w_None - if nbargs >= 3: w_traceback = f.valuestack.pop() - if nbargs >= 2: w_value = f.valuestack.pop() - if 1: w_type = f.valuestack.pop() - w_resulttuple = f.space.normalize_exception(w_type, w_value, - w_traceback) - w_type, w_value, w_traceback = f.space.unpacktuple(w_resulttuple, 3) - if w_traceback is not f.space.w_None: - tb = f.space.interpclass_w(w_traceback) - if not isinstance(tb,pytraceback.PyTraceback): - raise OperationError(f.space.w_TypeError, - f.space.wrap("raise: arg 3 must be a traceback or None")) - operror = OperationError(w_type,w_value,tb) - # re-raise, no new traceback obj will be attached - raise pyframe.SApplicationException(operror) - else: - # common-case - raise OperationError(w_type, w_value) - - def LOAD_LOCALS(f): - f.valuestack.push(f.w_locals) - - def RETURN_VALUE(f): - w_returnvalue = f.valuestack.pop() - raise pyframe.SReturnValue(w_returnvalue) - - def EXEC_STMT(f): - w_locals = f.valuestack.pop() - w_globals = f.valuestack.pop() - w_prog = f.valuestack.pop() - w_compile_flags = f.space.wrap(f.get_compile_flags()) - w_resulttuple = prepare_exec(f.space, f.space.wrap(f), w_prog, w_globals, w_locals, - w_compile_flags, f.space.wrap(f.builtin)) - w_prog, w_globals, w_locals = f.space.unpacktuple(w_resulttuple, 3) - - plain = f.space.is_true(f.space.is_(w_locals, f.w_locals)) - if plain: - w_locals = f.getdictscope() - pycode = f.space.interpclass_w(w_prog) - assert isinstance(pycode, PyCode) - pycode.exec_code(f.space, w_globals, w_locals) - if plain: - f.setdictscope(w_locals) - - def POP_BLOCK(f): - block = f.blockstack.pop() - block.cleanup(f) # the block knows how to clean up the value stack - - def END_FINALLY(f): - # unlike CPython, when we reach this opcode the value stack has - # always been set up as follows (topmost first): - # [exception type or None] - # [exception value or None] - # [wrapped stack unroller ] - f.valuestack.pop() # ignore the exception type - f.valuestack.pop() # ignore the exception value - w_unroller = f.valuestack.pop() - if w_unroller is not f.space.w_None: - # re-raise the unroller, if any - raise f.space.interpclass_w(w_unroller) - - def BUILD_CLASS(f): - w_methodsdict = f.valuestack.pop() - w_bases = f.valuestack.pop() - w_name = f.valuestack.pop() - w_metaclass = find_metaclass(f.space, w_bases, - w_methodsdict, f.w_globals, - f.space.wrap(f.builtin)) - w_newclass = f.space.call_function(w_metaclass, w_name, - w_bases, w_methodsdict) - f.valuestack.push(w_newclass) - - def STORE_NAME(f, varindex): - w_varname = f.getname_w(varindex) - w_newvalue = f.valuestack.pop() - f.space.setitem(f.w_locals, w_varname, w_newvalue) - - def DELETE_NAME(f, varindex): - w_varname = f.getname_w(varindex) - try: - f.space.delitem(f.w_locals, w_varname) - except OperationError, e: - # catch KeyErrors and turn them into NameErrors - if not e.match(f.space, f.space.w_KeyError): - raise - message = "name '%s' is not defined" % f.space.str_w(w_varname) - raise OperationError(f.space.w_NameError, f.space.wrap(message)) - - def UNPACK_SEQUENCE(f, itemcount): - w_iterable = f.valuestack.pop() - try: - items = f.space.unpackiterable(w_iterable, itemcount) - except ValueError, e: - raise OperationError(f.space.w_ValueError, f.space.wrap(str(e))) - items.reverse() - for item in items: - f.valuestack.push(item) - - def STORE_ATTR(f, nameindex): - "obj.attributename = newvalue" - w_attributename = f.getname_w(nameindex) - w_obj = f.valuestack.pop() - w_newvalue = f.valuestack.pop() - f.space.setattr(w_obj, w_attributename, w_newvalue) - - def DELETE_ATTR(f, nameindex): - "del obj.attributename" - w_attributename = f.getname_w(nameindex) - w_obj = f.valuestack.pop() - f.space.delattr(w_obj, w_attributename) - - def STORE_GLOBAL(f, nameindex): - w_varname = f.getname_w(nameindex) - w_newvalue = f.valuestack.pop() - f.space.setitem(f.w_globals, w_varname, w_newvalue) - - def DELETE_GLOBAL(f, nameindex): - w_varname = f.getname_w(nameindex) - f.space.delitem(f.w_globals, w_varname) - - def LOAD_NAME(f, nameindex): - if f.w_locals is not f.w_globals: - w_varname = f.getname_w(nameindex) - try: - w_value = f.space.getitem(f.w_locals, w_varname) - except OperationError, e: - if not e.match(f.space, f.space.w_KeyError): - raise - else: - f.valuestack.push(w_value) - return - f.LOAD_GLOBAL(nameindex) # fall-back - - def LOAD_GLOBAL(f, nameindex): - w_varname = f.getname_w(nameindex) - try: - w_value = f.space.getitem(f.w_globals, w_varname) - except OperationError, e: - # catch KeyErrors - if not e.match(f.space, f.space.w_KeyError): - raise - # we got a KeyError, now look in the built-ins - varname = f.getname(nameindex) - w_value = f.builtin.getdictvalue(f.space, varname) - if w_value is None: - message = "global name '%s' is not defined" % varname - raise OperationError(f.space.w_NameError, - f.space.wrap(message)) - f.valuestack.push(w_value) - - def DELETE_FAST(f, varindex): - if f.fastlocals_w[varindex] is None: - varname = f.getlocalvarname(varindex) - message = "local variable '%s' referenced before assignment" % varname - raise OperationError(f.space.w_UnboundLocalError, f.space.wrap(message)) - f.fastlocals_w[varindex] = None - - - def BUILD_TUPLE(f, itemcount): - items = [f.valuestack.pop() for i in range(itemcount)] - items.reverse() - w_tuple = f.space.newtuple(items) - f.valuestack.push(w_tuple) - - def BUILD_LIST(f, itemcount): - items = [f.valuestack.pop() for i in range(itemcount)] - items.reverse() - w_list = f.space.newlist(items) - f.valuestack.push(w_list) - - def BUILD_MAP(f, zero): - if zero != 0: - raise pyframe.BytecodeCorruption - w_dict = f.space.newdict([]) - f.valuestack.push(w_dict) - - def LOAD_ATTR(f, nameindex): - "obj.attributename" - w_attributename = f.getname_w(nameindex) - w_obj = f.valuestack.pop() - w_value = f.space.getattr(w_obj, w_attributename) - f.valuestack.push(w_value) - - def cmp_lt(f, w_1, w_2): return f.space.lt(w_1, w_2) - def cmp_le(f, w_1, w_2): return f.space.le(w_1, w_2) - def cmp_eq(f, w_1, w_2): return f.space.eq(w_1, w_2) - def cmp_ne(f, w_1, w_2): return f.space.ne(w_1, w_2) - def cmp_gt(f, w_1, w_2): return f.space.gt(w_1, w_2) - def cmp_ge(f, w_1, w_2): return f.space.ge(w_1, w_2) - - def cmp_in(f, w_1, w_2): - return f.space.contains(w_2, w_1) - def cmp_not_in(f, w_1, w_2): - return f.space.not_(f.space.contains(w_2, w_1)) - def cmp_is(f, w_1, w_2): - return f.space.is_(w_1, w_2) - def cmp_is_not(f, w_1, w_2): - return f.space.not_(f.space.is_(w_1, w_2)) - def cmp_exc_match(f, w_1, w_2): - return f.space.newbool(f.space.exception_match(w_1, w_2)) - - compare_dispatch_table = { - 0: cmp_lt, # "<" - 1: cmp_le, # "<=" - 2: cmp_eq, # "==" - 3: cmp_ne, # "!=" - 4: cmp_gt, # ">" - 5: cmp_ge, # ">=" - 6: cmp_in, - 7: cmp_not_in, - 8: cmp_is, - 9: cmp_is_not, - 10: cmp_exc_match, - } - def COMPARE_OP(f, testnum): - w_2 = f.valuestack.pop() - w_1 = f.valuestack.pop() - try: - testfn = f.compare_dispatch_table[testnum] - except KeyError: - raise pyframe.BytecodeCorruption, "bad COMPARE_OP oparg" - w_result = testfn(f, w_1, w_2) - f.valuestack.push(w_result) - - def IMPORT_NAME(f, nameindex): - space = f.space - w_modulename = f.getname_w(nameindex) - modulename = f.space.str_w(w_modulename) - w_fromlist = f.valuestack.pop() - w_import = f.builtin.getdictvalue(f.space, '__import__') - if w_import is None: - raise OperationError(space.w_ImportError, - space.wrap("__import__ not found")) - w_locals = f.w_locals - if w_locals is None: # CPython does this - w_locals = space.w_None - w_obj = space.call_function(w_import, space.wrap(modulename), - f.w_globals, w_locals, w_fromlist) - f.valuestack.push(w_obj) - - def IMPORT_STAR(f): - w_module = f.valuestack.pop() - w_locals = f.getdictscope() - import_all_from(f.space, w_module, w_locals) - f.setdictscope(w_locals) - - def IMPORT_FROM(f, nameindex): - w_name = f.getname_w(nameindex) - w_module = f.valuestack.top() - try: - w_obj = f.space.getattr(w_module, w_name) - except OperationError, e: - if not e.match(f.space, f.space.w_AttributeError): - raise - raise OperationError(f.space.w_ImportError, - f.space.wrap("cannot import name '%s'" % f.space.str_w(w_name) )) - f.valuestack.push(w_obj) - - def JUMP_FORWARD(f, stepby): - f.next_instr += stepby - - def JUMP_IF_FALSE(f, stepby): - w_cond = f.valuestack.top() - if not f.space.is_true(w_cond): - f.next_instr += stepby - - def JUMP_IF_TRUE(f, stepby): - w_cond = f.valuestack.top() - if f.space.is_true(w_cond): - f.next_instr += stepby - - def JUMP_ABSOLUTE(f, jumpto): - f.next_instr = jumpto - - def GET_ITER(f): - w_iterable = f.valuestack.pop() - w_iterator = f.space.iter(w_iterable) - f.valuestack.push(w_iterator) - - def FOR_ITER(f, jumpby): - w_iterator = f.valuestack.top() - try: - w_nextitem = f.space.next(w_iterator) - except OperationError, e: - if not e.match(f.space, f.space.w_StopIteration): - raise - # iterator exhausted - f.valuestack.pop() - f.next_instr += jumpby - else: - f.valuestack.push(w_nextitem) - - def FOR_LOOP(f, oparg): - raise pyframe.BytecodeCorruption, "old opcode, no longer in use" - - def SETUP_LOOP(f, offsettoend): - block = pyframe.LoopBlock(f, f.next_instr + offsettoend) - f.blockstack.push(block) - - def SETUP_EXCEPT(f, offsettoend): - block = pyframe.ExceptBlock(f, f.next_instr + offsettoend) - f.blockstack.push(block) - - def SETUP_FINALLY(f, offsettoend): - block = pyframe.FinallyBlock(f, f.next_instr + offsettoend) - f.blockstack.push(block) - - def CALL_FUNCTION(f, oparg, w_star=None, w_starstar=None): - n_arguments = oparg & 0xff - n_keywords = (oparg>>8) & 0xff - keywords = {} - for i in range(n_keywords): - w_value = f.valuestack.pop() - w_key = f.valuestack.pop() - key = f.space.str_w(w_key) - keywords[key] = w_value - arguments = [f.valuestack.pop() for i in range(n_arguments)] - arguments.reverse() - args = Arguments(f.space, arguments, keywords, w_star, w_starstar) - w_function = f.valuestack.pop() - w_result = f.space.call_args(w_function, args) - f.valuestack.push(w_result) - - def CALL_FUNCTION_VAR(f, oparg): - w_varargs = f.valuestack.pop() - f.CALL_FUNCTION(oparg, w_varargs) - - def CALL_FUNCTION_KW(f, oparg): - w_varkw = f.valuestack.pop() - f.CALL_FUNCTION(oparg, None, w_varkw) - - def CALL_FUNCTION_VAR_KW(f, oparg): - w_varkw = f.valuestack.pop() - w_varargs = f.valuestack.pop() - f.CALL_FUNCTION(oparg, w_varargs, w_varkw) - - def MAKE_FUNCTION(f, numdefaults): - w_codeobj = f.valuestack.pop() - codeobj = f.space.interpclass_w(w_codeobj) - assert isinstance(codeobj, PyCode) - defaultarguments = [f.valuestack.pop() for i in range(numdefaults)] - defaultarguments.reverse() - fn = function.Function(f.space, codeobj, f.w_globals, defaultarguments) - f.valuestack.push(f.space.wrap(fn)) - - def BUILD_SLICE(f, numargs): - if numargs == 3: - w_step = f.valuestack.pop() - elif numargs == 2: - w_step = None - else: - raise pyframe.BytecodeCorruption - w_end = f.valuestack.pop() - w_start = f.valuestack.pop() - w_slice = f.space.newslice(w_start, w_end, w_step) - f.valuestack.push(w_slice) - - def LIST_APPEND(f): - w = f.valuestack.pop() - v = f.valuestack.pop() - f.space.call_method(v, 'append', w) - - def SET_LINENO(f, lineno): - pass - - def EXTENDED_ARG(f, oparg): - opcode = f.nextop() - oparg = oparg<<16 | f.nextarg() - fn = f.dispatch_table_w_arg[opcode] - if fn is None: - raise pyframe.BytecodeCorruption - fn(f, oparg) - - def MISSING_OPCODE(f, oparg=None): - raise pyframe.BytecodeCorruption, "unknown opcode" - - ### dispatch_table ### - - # 'opcode_has_arg' is a class attribute: list of True/False whether opcode takes arg - # 'dispatch_table_no_arg: list of functions/None - # 'dispatch_table_w_arg: list of functions/None - - __metaclass__ = InitializedClass - def __initclass__(cls): - "NOT_RPYTHON" - # create the 'cls.dispatch_table' attribute - import dis - opcode_has_arg = [] - dispatch_table_no_arg = [] - dispatch_table_w_arg = [] - missing_opcode = cls.MISSING_OPCODE - for i in range(256): - opname = dis.opname[i].replace('+', '_') - fn = getattr(cls, opname, missing_opcode) - fn = getattr(fn, 'im_func',fn) - has_arg = i >= dis.HAVE_ARGUMENT - #if fn is missing_opcode and not opname.startswith('<') and i>0: - # import warnings - # warnings.warn("* Warning, missing opcode %s" % opname) - opcode_has_arg.append(has_arg) - if has_arg: - dispatch_table_w_arg.append(fn) - dispatch_table_no_arg.append(None) - else: - dispatch_table_no_arg.append(fn) - dispatch_table_w_arg.append(None) - - cls.opcode_has_arg = opcode_has_arg - cls.dispatch_table_no_arg = dispatch_table_no_arg - cls.dispatch_table_w_arg = dispatch_table_w_arg - - -### helpers written at the application-level ### -# Some of these functions are expected to be generally useful if other -# parts of the code needs to do the same thing as a non-trivial opcode, -# like finding out which metaclass a new class should have. -# This is why they are not methods of PyInterpFrame. -# There are also a couple of helpers that are methods, defined in the -# class above. - -app = gateway.applevel(r''' - # NOT_RPYTHON (but should be, soon) - - import sys - - def sys_stdout(): - try: - return sys.stdout - except AttributeError: - raise RuntimeError("lost sys.stdout") - - def print_expr(obj): - try: - displayhook = sys.displayhook - except AttributeError: - raise RuntimeError("lost sys.displayhook") - displayhook(obj) - - def print_item_to(x, stream): - if file_softspace(stream, False): - stream.write(" ") - stream.write(str(x)) - - # add a softspace unless we just printed a string which ends in a '\t' - # or '\n' -- or more generally any whitespace character but ' ' - if isinstance(x, str) and x and x[-1].isspace() and x[-1]!=' ': - return - # XXX add unicode handling - file_softspace(stream, True) - - def print_newline_to(stream): - stream.write("\n") - file_softspace(stream, False) - - def file_softspace(file, newflag): - try: - softspace = file.softspace - except AttributeError: - softspace = 0 - try: - file.softspace = newflag - except AttributeError: - pass - return softspace - - def find_metaclass(bases, namespace, globals, builtin): - if '__metaclass__' in namespace: - return namespace['__metaclass__'] - elif len(bases) > 0: - base = bases[0] - if hasattr(base, '__class__'): - return base.__class__ - else: - return type(base) - elif '__metaclass__' in globals: - return globals['__metaclass__'] - else: - try: - return builtin.__metaclass__ - except AttributeError: - return type - - def import_all_from(module, into_locals): - try: - all = module.__all__ - except AttributeError: - try: - dict = module.__dict__ - except AttributeError: - raise ImportError("from-import-* object has no __dict__ " - "and no __all__") - all = dict.keys() - skip_leading_underscores = True - else: - skip_leading_underscores = False - for name in all: - if skip_leading_underscores and name[0]=='_': - continue - into_locals[name] = getattr(module, name) - - def prepare_exec(f, prog, globals, locals, compile_flags, builtin): - """Manipulate parameters to exec statement to (codeobject, dict, dict). - """ - # XXX INCOMPLETE - if (globals is None and locals is None and - isinstance(prog, tuple) and - (len(prog) == 2 or len(prog) == 3)): - globals = prog[1] - if len(prog) == 3: - locals = prog[2] - prog = prog[0] - if globals is None: - globals = f.f_globals - if locals is None: - locals = f.f_locals - if locals is None: - locals = globals - if not isinstance(globals, dict): - raise TypeError("exec: arg 2 must be a dictionary or None") - elif not globals.has_key('__builtins__'): - globals['__builtins__'] = builtin - if not isinstance(locals, dict): - raise TypeError("exec: arg 3 must be a dictionary or None") - # XXX - HACK to check for code object - co = compile('1','','eval') - if isinstance(prog, type(co)): - return (prog, globals, locals) - if not isinstance(prog, str): - ## if not (isinstance(prog, types.StringTypes) or - ## isinstance(prog, types.FileType)): - raise TypeError("exec: arg 1 must be a string, file, " - "or code object") - ## if isinstance(prog, types.FileType): - ## co = compile(prog.read(),prog.name,'exec',comple_flags,1) - ## return (co,globals,locals) - else: # prog is a string - co = compile(prog,'','exec', compile_flags, 1) - return (co, globals, locals) -''') - -sys_stdout = app.interphook('sys_stdout') -print_expr = app.interphook('print_expr') -print_item_to = app.interphook('print_item_to') -print_newline_to= app.interphook('print_newline_to') -file_softspace = app.interphook('file_softspace') -find_metaclass = app.interphook('find_metaclass') -import_all_from = app.interphook('import_all_from') -prepare_exec = app.interphook('prepare_exec') Deleted: /pypy/dist/pypy/objspace/dummy.py ============================================================================== --- /pypy/dist/pypy/objspace/dummy.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,143 +0,0 @@ -from pypy.interpreter.baseobjspace import ObjSpace, W_Root, BaseWrappable -from pypy.interpreter.module import Module -from pypy.interpreter.error import OperationError - -from pypy.tool.cache import Cache - -class W_Obj(W_Root): - - def is_true(self): - return True - - def str_w(self, space): - raise OperationError(space.w_TypeError,space.wrap("!")) - - def int_w(self, space): - raise OperationError(space.w_TypeError,space.wrap("!")) - - def float_w(self, space): - raise OperationError(space.w_TypeError,space.wrap("!")) - - def unwrap(self, space): - raise OperationError(space.w_TypeError,space.wrap("!")) - -class W_Str(W_Obj): - def __init__(self, s): - self.s = s - - def is_true(self): - return self.s != "" - - def str_w(self, space): - return self.s - - def unwrap(self, space): - return self.s - -class W_Int(W_Obj): - def __init__(self, i): - self.i = i - - def is_true(self): - return self.i != 0 - - def int_w(self, space): - return self.i - - def unwrap(self, space): - return self.i - -class W_None(W_Obj): - - def unwrap(self, space): - return None - -class W_Special(W_Obj): - def __init__(self, spec): - self.spec = spec - -class BuiltinModule(Module): - def __init__(self, space): - Module.__init__(self, space, space.wrap('__builtin__'), space.wrap({})) - - def pick_builtin(self, w_globals): - return self - -class DummyObjSpace(ObjSpace): - - def __init__(self): - """NOT_RPYTHON""" - self.builtin = BuiltinModule(self) - - self.sys = Module(self, self.wrap('sys'), self.wrap({})) - self.sys.recursionlimit = 1000 - - self.w_None = W_None() - self.w_NotImplemented = W_Special(NotImplemented) - self.w_Ellpisis = W_Special(Ellipsis) - self.w_False = self.wrap(0) - self.w_True = self.wrap(1) - - for en in ObjSpace.ExceptionTable: - setattr(self, 'w_'+en, self.wrap(en)) - - self._gatewaycache = Cache() - - for n, symbol, arity, ign in ObjSpace.MethodTable+[('newdict',"",1,[]), ('newlist',"",1,[]), - ('newtuple',"",1,[]), ('newslice',"",3,[]), ]: - source = ("""if 1: - def %s(self, %s): - return W_Root() -""" % (n, ', '.join(["w_a%d" % i for i in range(arity)]))) - #print source - exec source - - del n, symbol, arity, ign, i - - def wrap(self, obj): - if obj is None: - return self.w_None - if isinstance(obj, str): - return W_Str(obj) - if isinstance(obj, int): - return W_Int(obj) - return W_Root() - wrap._specialize_ = "argtypes" - - def call_args(self, w_obj, args): - return W_Root() - - def is_true(self, w_obj): - if isinstance(w_obj, W_Obj): - return w_obj.is_true() - return True - - def str_w(self, w_obj): - if not isinstance(w_obj, W_Obj): - w_obj = self.w_None - - return w_obj.str_w(self) - - def int_w(self, w_obj): - if not isinstance(w_obj, W_Obj): - w_obj = self.w_None - - return w_obj.int_w(self) - - def float_w(self, w_obj): - if not isinstance(w_obj, W_Obj): - w_obj = self.w_None - - return w_obj.float_w(self) - - def unwrap(self, w_obj): - if isinstance(w_obj, BaseWrappable): - return w_obj - return w_obj.unwrap() - - def _freeze_(self): - return True - -if __name__ == '__main__': - dummy_space = DummyObjSpace() - print dummy_space.eval("a+b",dummy_space.wrap({'a': 1,'b': 2}),dummy_space.wrap({})) Deleted: /pypy/dist/pypy/objspace/flow/objspace.py ============================================================================== --- /pypy/dist/pypy/objspace/flow/objspace.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,535 +0,0 @@ -# ______________________________________________________________________ -import sys, operator, types -from pypy.interpreter.baseobjspace import ObjSpace, BaseWrappable -from pypy.interpreter.pycode import PyCode -from pypy.interpreter.module import Module -from pypy.interpreter.error import OperationError -from pypy.objspace.flow.model import * -from pypy.objspace.flow import flowcontext - -debug = 0 - -class UnwrapException(Exception): - "Attempted to unwrap a Variable." - -class WrapException(Exception): - """Attempted wrapping of a type that cannot sanely appear in flow graph or during its construction""" - -# method-wrappers -method_wrapper = type(complex.real.__get__) - - -# ______________________________________________________________________ -class FlowObjSpace(ObjSpace): - """NOT_RPYTHON. - The flow objspace space is used to produce a flow graph by recording - the space operations that the interpreter generates when it interprets - (the bytecode of) some function. - """ - - full_exceptions = False - - builtins_can_raise_exceptions = False - - do_imports_immediately = True # overridden in geninterplevel - - def initialize(self): - import __builtin__ - self.concrete_mode = 0 - self.builtin = Module(self, Constant('__builtin__'), Constant(__builtin__.__dict__)) - def pick_builtin(w_globals): - return self.builtin - self.builtin.pick_builtin = pick_builtin - self.sys = Module(self, Constant('sys'), Constant(sys.__dict__)) - self.sys.recursionlimit = 100 - self.w_None = Constant(None) - self.w_False = Constant(False) - self.w_True = Constant(True) - for exc in [KeyError, ValueError, IndexError, StopIteration, - AssertionError]: - clsname = exc.__name__ - setattr(self, 'w_'+clsname, Constant(exc)) - # the following exceptions are the ones that should not show up - # during flow graph construction; they are triggered by - # non-R-Pythonic constructs or real bugs like typos. - for exc in [NameError, UnboundLocalError]: - clsname = exc.__name__ - setattr(self, 'w_'+clsname, None) - self.specialcases = {} - #self.make_builtins() - #self.make_sys() - - def loadfromcache(self, key, builder, cache): - # when populating the caches, the flow space switches to - # "concrete mode". In this mode, only Constants are allowed - # and no SpaceOperation is recorded. - def my_builder(key, stuff): - previous_recorder = self.executioncontext.recorder - self.executioncontext.recorder = flowcontext.ConcreteNoOp() - self.concrete_mode += 1 - try: - return builder(key, stuff) - finally: - self.executioncontext.recorder = previous_recorder - self.concrete_mode -= 1 - return super(FlowObjSpace, self).loadfromcache(key, my_builder, cache) - - def newdict(self, items_w): - if self.concrete_mode: - content = [(self.unwrap(w_key), self.unwrap(w_value)) - for w_key, w_value in items_w] - return Constant(dict(content)) - flatlist_w = [] - for w_key, w_value in items_w: - flatlist_w.append(w_key) - flatlist_w.append(w_value) - return self.do_operation('newdict', *flatlist_w) - - def newtuple(self, args_w): - try: - content = [self.unwrap(w_arg) for w_arg in args_w] - except UnwrapException: - return self.do_operation('newtuple', *args_w) - else: - return Constant(tuple(content)) - - def newlist(self, args_w): - if self.concrete_mode: - content = [self.unwrap(w_arg) for w_arg in args_w] - return Constant(content) - return self.do_operation('newlist', *args_w) - - def newslice(self, w_start=None, w_stop=None, w_step=None): - if w_start is None: w_start = self.w_None - if w_stop is None: w_stop = self.w_None - if w_step is None: w_step = self.w_None - if self.concrete_mode: - return Constant(slice(self.unwrap(w_start), - self.unwrap(w_stop), - self.unwrap(w_step))) - return self.do_operation('newslice', w_start, w_stop, w_step) - - def wrap(self, obj): - if isinstance(obj, (Variable, Constant)): - raise TypeError("already wrapped: " + repr(obj)) - # method-wrapper have ill-defined comparison and introspection - # to appear in a flow graph - if type(obj) is method_wrapper: - raise WrapException - return Constant(obj) - - def int_w(self, w_obj): - if isinstance(w_obj, Constant): - val = w_obj.value - if type(val) not in (int,long): - raise TypeError("expected integer: " + repr(w_obj)) - return val - return self.unwrap(w_obj) - - def str_w(self, w_obj): - if isinstance(w_obj, Constant): - val = w_obj.value - if type(val) is not str: - raise TypeError("expected string: " + repr(w_obj)) - return val - return self.unwrap(w_obj) - - def float_w(self, w_obj): - if isinstance(w_obj, Constant): - val = w_obj.value - if type(val) is not float: - raise TypeError("expected float: " + repr(w_obj)) - return val - return self.unwrap(w_obj) - - def unwrap(self, w_obj): - if isinstance(w_obj, Variable): - raise UnwrapException - elif isinstance(w_obj, Constant): - return w_obj.value - else: - raise TypeError("not wrapped: " + repr(w_obj)) - - def unwrap_for_computation(self, w_obj): - obj = self.unwrap(w_obj) - to_check = obj - if hasattr(to_check, 'im_self'): - to_check = to_check.im_self - if (not isinstance(to_check, (type, types.ClassType)) and # classes/types are assumed immutable - hasattr(to_check, '__class__') and to_check.__class__.__module__ != '__builtin__'): - frozen = hasattr(to_check, '_freeze_') and to_check._freeze_() - if not frozen: - if self.concrete_mode: - # xxx do we want some warning? notice that some stuff is harmless - # like setitem(dict, 'n', mutable) - pass - else: # cannot count on it not mutating at runtime! - raise UnwrapException - return obj - - def interpclass_w(self, w_obj): - obj = self.unwrap(w_obj) - if isinstance(obj, BaseWrappable): - return obj - return None - - def getexecutioncontext(self): - return self.executioncontext - - def setup_executioncontext(self, ec): - self.executioncontext = ec - from pypy.objspace.flow import specialcase - specialcase.setup(self) - - def exception_match(self, w_exc_type, w_check_class): - self.executioncontext.recorder.crnt_block.exc_handler = True - try: - check_class = self.unwrap(w_check_class) - except UnwrapException: - raise Exception, "non-constant except guard" - if not isinstance(check_class, tuple): - # the simple case - return ObjSpace.exception_match(self, w_exc_type, w_check_class) - # checking a tuple of classes - for w_klass in self.unpacktuple(w_check_class): - if ObjSpace.exception_match(self, w_exc_type, w_klass): - return True - return False - - def getconstclass(space, w_cls): - try: - ecls = space.unwrap(w_cls) - except UnwrapException: - pass - else: - if isinstance(ecls, (type, types.ClassType)): - return ecls - return None - - def normalize_exception(space, w_arg1, w_arg2, w_tb): - """Special-case for 'raise' statements. Case-by-case analysis: - - * raise Class - - with a constant Class, it is easy to recognize. - But we don't normalize: the associated value is None. - - * raise Class(...) - - when the class is instantiated in-place, we can figure that out - - * raise Instance - - assumes that it's not a class, and raises an exception whose class - is variable and whose value is Instance. - - * raise Class, Arg - - assumes that Arg is the value you want for the exception, and - that Class is exactly the exception class. No check or normalization. - """ - - # w_arg3 (the traceback) is ignored and replaced with None - # if it is a Variable, because pyopcode.py tries to unwrap it. - # It means that we ignore the 'tb' argument of 'raise' in most cases. - if not isinstance(w_tb, Constant): - w_tb = space.w_None - - if w_arg2 != space.w_None: - # raise Class, Arg: no normalization - return (w_arg1, w_arg2, w_tb) - - etype = space.getconstclass(w_arg1) - if etype is not None: - # raise Class - return (w_arg1, space.w_None, w_tb) - - # raise Class(..)? We need a hack to figure out of which class it is. - # Normally, Instance should have been created by the previous operation - # which should be a simple_call(, ...). - # Fetch the out of there. (This doesn't work while replaying) - # XXX this case is likely not triggered anymore, because the instance creation op - # is walled off in a different block by the surrounding it with exception - # handling logic that is always put in place for calls. - # We may want to make this more clever! - operations = space.executioncontext.recorder.crnt_block.operations - if operations: - spaceop = operations[-1] - if (spaceop.opname == 'simple_call' and - spaceop.result is w_arg1): - w_type = spaceop.args[0] - return (w_type, w_arg1, w_tb) - - # raise Instance. Fall-back. - w_type = space.do_operation('type', w_arg1) - return (w_type, w_arg1, w_tb) - # this function returns a real tuple that can be handled - # by FlowObjSpace.unpacktuple() - - - def build_flow(self, func, constargs={}): - """ - """ - if func.func_doc and func.func_doc.lstrip().startswith('NOT_RPYTHON'): - raise Exception, "%r is tagged as NOT_RPYTHON" % (func,) - code = func.func_code - code = PyCode(self)._from_code(code) - if func.func_closure is None: - closure = None - else: - closure = [extract_cell_content(c) for c in func.func_closure] - # CallableFactory.pycall may add class_ to functions that are methods - name = func.func_name - class_ = getattr(func, 'class_', None) - if class_ is not None: - name = '%s.%s' % (class_.__name__, name) - for c in "<>&!": - name = name.replace(c, '_') - ec = flowcontext.FlowExecutionContext(self, code, func.func_globals, - constargs, closure, name) - self.setup_executioncontext(ec) - ec.build_flow() - checkgraph(ec.graph) - return ec.graph - - def unpacktuple(self, w_tuple, expected_length=None): - # special case to accept either Constant tuples - # or real tuples of Variables/Constants - if isinstance(w_tuple, tuple): - result = w_tuple - else: - unwrapped = self.unwrap(w_tuple) - result = tuple([Constant(x) for x in unwrapped]) - if expected_length is not None and len(result) != expected_length: - raise ValueError, "got a tuple of length %d instead of %d" % ( - len(result), expected_length) - return result - - def unpackiterable(self, w_iterable, expected_length=None): - if isinstance(w_iterable, Variable) and expected_length is None: - raise UnwrapException, ("cannot unpack a Variable iterable" - "without knowing its length") -## # XXX TEMPORARY HACK XXX TEMPORARY HACK XXX TEMPORARY HACK -## print ("*** cannot unpack a Variable iterable " -## "without knowing its length,") -## print " assuming a list or tuple with up to 7 items" -## items = [] -## w_len = self.len(w_iterable) -## i = 0 -## while True: -## w_i = self.wrap(i) -## w_cond = self.eq(w_len, w_i) -## if self.is_true(w_cond): -## break # done -## if i == 7: -## # too many values -## raise OperationError(self.w_AssertionError, self.w_None) -## w_item = self.do_operation('getitem', w_iterable, w_i) -## items.append(w_item) -## i += 1 -## return items -## # XXX TEMPORARY HACK XXX TEMPORARY HACK XXX TEMPORARY HACK - elif expected_length is not None: - w_len = self.len(w_iterable) - w_correct = self.eq(w_len, self.wrap(expected_length)) - if not self.is_true(w_correct): - raise OperationError(self.w_ValueError, self.w_None) - return [self.do_operation('getitem', w_iterable, self.wrap(i)) - for i in range(expected_length)] - return ObjSpace.unpackiterable(self, w_iterable, expected_length) - - # ____________________________________________________________ - def do_operation(self, name, *args_w): - spaceop = SpaceOperation(name, args_w, Variable()) - if hasattr(self, 'executioncontext'): # not here during bootstrapping - spaceop.offset = self.executioncontext.crnt_offset - self.executioncontext.recorder.append(spaceop) - return spaceop.result - - def is_true(self, w_obj): - try: - obj = self.unwrap_for_computation(w_obj) - except UnwrapException: - pass - else: - return bool(obj) - w_truthvalue = self.do_operation('is_true', w_obj) - context = self.getexecutioncontext() - return context.guessbool(w_truthvalue) - - def next(self, w_iter): - w_item = self.do_operation("next", w_iter) - context = self.getexecutioncontext() - outcome, w_exc_cls, w_exc_value = context.guessexception(StopIteration) - if outcome is StopIteration: - raise OperationError(self.w_StopIteration, self.w_None) - else: - return w_item - - def call_args(self, w_callable, args): - try: - fn = self.unwrap(w_callable) - sc = self.specialcases[fn] # TypeError if 'fn' not hashable - except (UnwrapException, KeyError, TypeError): - pass - else: - return sc(self, fn, args) - - try: - args_w, kwds_w = args.unpack() - except UnwrapException: - args_w, kwds_w = '?', '?' - if not kwds_w: - # simple case - w_res = self.do_operation('simple_call', w_callable, *args_w) - else: - # general case - shape, args_w = args.flatten() - w_res = self.do_operation('call_args', w_callable, Constant(shape), - *args_w) - - # maybe the call has generated an exception (any one) - # but, let's say, not if we are calling a built-in class or function - # because this gets in the way of the special-casing of - # - # raise SomeError(x) - # - # as shown by test_objspace.test_raise3. - - exceptions = [Exception] # *any* exception by default - if isinstance(w_callable, Constant): - c = w_callable.value - if isinstance(c, (types.BuiltinFunctionType, - types.BuiltinMethodType)): - if not self.builtins_can_raise_exceptions: - exceptions = None - elif (isinstance(c, (type, types.ClassType)) and - c.__module__ in ['__builtin__', 'exceptions']): - exceptions = None - self.handle_implicit_exceptions(exceptions) - return w_res - - def handle_implicit_exceptions(self, exceptions): - if exceptions: - # catch possible exceptions implicitly. If the OperationError - # below is not caught in the same function, it will produce an - # exception-raising return block in the flow graph. The special - # value 'wrap(last_exception)' is used as a marker for this kind - # of implicit exceptions, and simplify.py will remove it as per - # the RPython definition: implicit exceptions not explicitly - # caught in the same function are assumed not to occur. - context = self.getexecutioncontext() - outcome, w_exc_cls, w_exc_value = context.guessexception(*exceptions) - if outcome is not None: - # we assume that the caught exc_cls will be exactly the - # one specified by 'outcome', and not a subclass of it, - # unless 'outcome' is Exception. - if outcome is not Exception: - w_exc_cls = Constant(outcome, last_exception=True) - raise OperationError(w_exc_cls, w_exc_value) - -# ______________________________________________________________________ - -implicit_exceptions = { - 'getitem': [IndexError, KeyError], - 'delitem': [IndexError, KeyError], - 'getattr': [AttributeError], - 'delattr': [AttributeError], - 'iter' : [TypeError], - 'coerce' : [TypeError], - } -# continuing like above, but in a more programmatic style. -def _add_exceptions(names, exc): - for name in names.split(): - lis = implicit_exceptions.setdefault(name, []) - if exc in lis: - raise ValueError, "your list is causing duplication!" - lis.append(exc) - -_add_exceptions("""div mod divmod truediv floordiv pow - inplace_div inplace_mod inplace_divmod inplace_truediv - inplace_floordiv inplace_pow""", ZeroDivisionError) -_add_exceptions("""pos neg abs invert add sub mul truediv - floordiv div mod divmod pow lshift - inplace_add inplace_sub inplace_mul inplace_truediv - inplace_floordiv inplace_div inplace_mod inplace_pow - inplace_lshift""", OverflowError) -_add_exceptions("""pow inplace_pow""", ValueError) -_add_exceptions("""add sub mul truediv floordiv div mod divmod pow - inplace_add inplace_sub inplace_mul inplace_truediv - inplace_floordiv inplace_div inplace_mod inplace_divmod - inplace_pow""", FloatingPointError) -del _add_exceptions - -def extract_cell_content(c): - """Get the value contained in a CPython 'cell', as read through - the func_closure of a function object.""" - # yuk! this is all I could come up with that works in Python 2.2 too - class X(object): - def __eq__(self, other): - self.other = other - x = X() - x_cell, = (lambda: x).func_closure - x_cell == c - return x.other - -def make_op(name, symbol, arity, specialnames): - if hasattr(FlowObjSpace, name): - return # Shouldn't do it - - if name == 'pow': - op = pow - else: - op = getattr(operator, name, None) - if not op: - #if name == 'call': - # op = apply - if name == 'issubtype': - op = issubclass - elif name == 'is_': - op = lambda x, y: x is y - elif name == 'getattr': - op = getattr - else: - if debug: print >> sys.stderr, "XXX missing operator:", name - - exceptions = implicit_exceptions.get(name) - - def generic_operator(self, *args_w): - assert len(args_w) == arity, name+" got the wrong number of arguments" - if op: - args = [] - for w_arg in args_w: - try: - arg = self.unwrap_for_computation(w_arg) - except UnwrapException: - break - else: - args.append(arg) - else: - # All arguments are constants: call the operator now - #print >> sys.stderr, 'Constant operation', op - try: - result = op(*args) - except: - etype, evalue, etb = sys.exc_info() - msg = "generated by a constant operation: %s%r" % ( - name, tuple(args)) - raise flowcontext.OperationThatShouldNotBePropagatedError( - self.wrap(etype), self.wrap(msg)) - else: - try: - return self.wrap(result) - except WrapException: - # type cannot sanely appear in flow graph, - # store operation with variable result instead - pass - - #print >> sys.stderr, 'Variable operation', name, args_w - w_result = self.do_operation(name, *args_w) - self.handle_implicit_exceptions(exceptions) - return w_result - - setattr(FlowObjSpace, name, generic_operator) - -for line in ObjSpace.MethodTable: - make_op(*line) - -# ______________________________________________________________________ -# End of objspace.py Deleted: /pypy/dist/pypy/objspace/flow/test/test_objspace.py ============================================================================== --- /pypy/dist/pypy/objspace/flow/test/test_objspace.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,467 +0,0 @@ -import autopath -from pypy.objspace.flow.model import Constant, Block, Link, Variable, traverse -from pypy.interpreter.argument import Arguments -from pypy.translator.simplify import simplify_graph - -objspacename = 'flow' - -import operator -is_operator = getattr(operator, 'is_', operator.eq) # it's not there 2.2 - -class TestFlowObjSpace: - def codetest(self, func): - import inspect - try: - func = func.im_func - except AttributeError: - pass - #name = func.func_name - graph = self.space.build_flow(func) - graph.source = inspect.getsource(func) - return graph - - def reallyshow(self, x): - x.show() - #import os - #from pypy.translator.tool.make_dot import make_dot - #dest = make_dot(x.name, x) - #os.system('gv %s' % str(dest)) - - def show(self, x): - pass # or self.reallyshow(x) - - #__________________________________________________________ - def nothing(): - pass - - def test_nothing(self): - x = self.codetest(self.nothing) - assert len(x.startblock.exits) == 1 - link, = x.startblock.exits - assert link.target == x.returnblock - self.show(x) - - #__________________________________________________________ - def simplebranch(i, j): - if i < 0: - return i - return j - - def test_simplebranch(self): - x = self.codetest(self.simplebranch) - self.show(x) - - #__________________________________________________________ - def ifthenelse(i, j): - if i < 0: - i = j - return g(i) + 1 - - def test_ifthenelse(self): - x = self.codetest(self.simplebranch) - self.show(x) - - #__________________________________________________________ - def print_(i): - print i - - def test_print(self): - x = self.codetest(self.print_) - self.show(x) - - #__________________________________________________________ - def while_(i): - while i > 0: - i = i - 1 - - def test_while(self): - x = self.codetest(self.while_) - self.show(x) - - #__________________________________________________________ - def union_easy(i): - if i: - pass - else: - i = 5 - return i - - def test_union_easy(self): - x = self.codetest(self.union_easy) - self.show(x) - - #__________________________________________________________ - def union_hard(i): - if i: - i = 5 - return i - - def test_union_hard(self): - x = self.codetest(self.union_hard) - self.show(x) - - #__________________________________________________________ - def while_union(i): - total = 0 - while i > 0: - total += i - i = i - 1 - return total - - def test_while_union(self): - x = self.codetest(self.while_union) - self.show(x) - - #__________________________________________________________ - def simple_for(lst): - total = 0 - for i in lst: - total += i - return total - - def test_simple_for(self): - x = self.codetest(self.simple_for) - self.show(x) - - #__________________________________________________________ - def nested_whiles(i, j): - s = '' - z = 5 - while z > 0: - z = z - 1 - u = i - while u < j: - u = u + 1 - s = s + '.' - s = s + '!' - return s - - def test_nested_whiles(self): - x = self.codetest(self.nested_whiles) - self.show(x) - - #__________________________________________________________ - def break_continue(x): - result = [] - i = 0 - while 1: - i = i + 1 - try: - if i&1: - continue - if i >= x: - break - finally: - result.append(i) - i = i + 1 - return result - - def test_break_continue(self): - x = self.codetest(self.break_continue) - self.show(x) - - #__________________________________________________________ - def unpack_tuple(lst): - a, b, c = lst - - def test_unpack_tuple(self): - x = self.codetest(self.unpack_tuple) - self.show(x) - - #__________________________________________________________ - def reverse_3(lst): - try: - a, b, c = lst - except: - return 0, 0, 0 - else: - return c, b, a - - def test_reverse_3(self): - x = self.codetest(self.reverse_3) - self.show(x) - - #__________________________________________________________ - def finallys(lst): - x = 1 - try: - x = 2 - try: - x = 3 - a, = lst - x = 4 - except KeyError: - return 5 - except ValueError: - return 6 - b, = lst - x = 7 - finally: - x = 8 - return x - - def test_finallys(self): - x = self.codetest(self.finallys) - self.show(x) - - #__________________________________________________________ - def const_pow(): - return 2 ** 5 - - def test_const_pow(self): - x = self.codetest(self.const_pow) - self.show(x) - - #__________________________________________________________ - def implicitIndexError(lst): - try: - x = lst[5] - except IndexError: - return 'catch' - return lst[3] # not caught - - def test_implicitIndexError(self): - x = self.codetest(self.implicitIndexError) - self.show(x) - - #__________________________________________________________ - def freevar(self, x): - def adder(y): - return x+y - return adder - - def test_freevar(self): - x = self.codetest(self.freevar(3)) - self.show(x) - - #__________________________________________________________ - def raise1(msg): - raise IndexError - - def test_raise1(self): - x = self.codetest(self.raise1) - self.show(x) - assert len(x.startblock.operations) == 0 - assert x.startblock.exits[0].args == [ - Constant(IndexError), - Constant(None)] # no normalization - assert x.startblock.exits[0].target is x.exceptblock - - #__________________________________________________________ - def raise2(msg): - raise IndexError, msg - - def test_raise2(self): - x = self.codetest(self.raise2) - self.show(x) - assert len(x.startblock.operations) == 0 - assert x.startblock.exits[0].args == [ - Constant(IndexError), - x.startblock.inputargs[0]] - assert x.startblock.exits[0].target is x.exceptblock - - #__________________________________________________________ - def raise3(msg): - raise IndexError(msg) - - def test_raise3(self): - x = self.codetest(self.raise3) - self.show(x) - simplify_graph(x) - assert len(x.startblock.operations) == 1 - assert x.startblock.operations[0].opname == 'simple_call' - assert list(x.startblock.operations[0].args) == [ - Constant(IndexError), - x.startblock.inputargs[0]] - assert x.startblock.exits[0].args == [ - Constant(IndexError), - x.startblock.operations[0].result] - assert x.startblock.exits[0].target is x.exceptblock - - #__________________________________________________________ - def raise4(stuff): - raise stuff - - def test_raise4(self): - x = self.codetest(self.raise4) - self.show(x) - - #__________________________________________________________ - def raise_and_catch_1(exception_instance): - try: - raise exception_instance - except IndexError: - return -1 - return 0 - - def test_raise_and_catch_1(self): - x = self.codetest(self.raise_and_catch_1) - self.show(x) - - #__________________________________________________________ - def catch_simple_call(): - try: - user_defined_function() - except IndexError: - return -1 - return 0 - - def test_catch_simple_call(self): - x = self.codetest(self.catch_simple_call) - self.show(x) - - #__________________________________________________________ - def dellocal(): - x = 1 - del x - for i in range(10): - pass - - def test_dellocal(self): - x = self.codetest(self.dellocal) - self.show(x) - - #__________________________________________________________ - def globalconstdict(name): - x = DATA['x'] - z = DATA[name] - return x, z - - def test_globalconstdict(self): - x = self.codetest(self.globalconstdict) - self.show(x) - - #__________________________________________________________ - - def specialcases(): - import operator - operator.lt(2,3) - operator.le(2,3) - operator.eq(2,3) - operator.ne(2,3) - operator.gt(2,3) - operator.ge(2,3) - is_operator(2,3) - operator.__lt__(2,3) - operator.__le__(2,3) - operator.__eq__(2,3) - operator.__ne__(2,3) - operator.__gt__(2,3) - operator.__ge__(2,3) - - def test_specialcases(self): - x = self.codetest(self.specialcases) - from pypy.translator.simplify import join_blocks - join_blocks(x) - assert len(x.startblock.operations) == 13 - for op in x.startblock.operations: - assert op.opname in ['lt', 'le', 'eq', 'ne', - 'gt', 'ge', 'is_'] - assert len(op.args) == 2 - assert op.args[0].value == 2 - assert op.args[1].value == 3 - - #__________________________________________________________ - def jump_target_specialization(x): - if x: - n = 5 - else: - n = 6 - return n*2 - - def test_jump_target_specialization(self): - x = self.codetest(self.jump_target_specialization) - self.show(x) - def visitor(node): - if isinstance(node, Block): - for op in node.operations: - assert op.opname != 'mul', "mul should have disappeared" - traverse(visitor, x) - - #__________________________________________________________ - def test_unfrozen_user_class1(self): - class C: - def __nonzero__(self): - return True - c = C() - def f(): - if c: - return 1 - else: - return 2 - graph = self.codetest(f) - - results = [] - def visit(link): - if isinstance(link, Link): - if link.target == graph.returnblock: - results.extend(link.args) - traverse(visit, graph) - assert len(results) == 2 - - def test_unfrozen_user_class2(self): - class C: - def __add__(self, other): - return 4 - c = C() - d = C() - def f(): - return c+d - graph = self.codetest(f) - - results = [] - def visit(link): - if isinstance(link, Link): - if link.target == graph.returnblock: - results.extend(link.args) - traverse(visit, graph) - assert not isinstance(results[0], Constant) - - def test_frozen_user_class1(self): - class C: - def __nonzero__(self): - return True - def _freeze_(self): - return True - c = C() - def f(): - if c: - return 1 - else: - return 2 - - graph = self.codetest(f) - - results = [] - def visit(link): - if isinstance(link, Link): - if link.target == graph.returnblock: - results.extend(link.args) - traverse(visit, graph) - assert len(results) == 1 - - def test_frozen_user_class2(self): - class C: - def __add__(self, other): - return 4 - def _freeze_(self): - return True - c = C() - d = C() - def f(): - return c+d - graph = self.codetest(f) - - results = [] - def visit(link): - if isinstance(link, Link): - if link.target == graph.returnblock: - results.extend(link.args) - traverse(visit, graph) - assert results == [Constant(4)] - -DATA = {'x': 5, - 'y': 6} - -def user_defined_function(): - pass Deleted: /pypy/dist/pypy/objspace/std/objspace.py ============================================================================== --- /pypy/dist/pypy/objspace/std/objspace.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,311 +0,0 @@ -from pypy.objspace.std.register_all import register_all -from pypy.interpreter.baseobjspace import ObjSpace, BaseWrappable -from pypy.interpreter.error import OperationError -from pypy.interpreter.typedef import get_unique_interplevel_subclass -from pypy.interpreter.typedef import instantiate -from pypy.tool.cache import Cache -from pypy.objspace.std.model import W_Object, UnwrapError -from pypy.objspace.std.model import W_ANY, MultiMethod, StdTypeModel -from pypy.objspace.std.multimethod import FailedToImplement -from pypy.objspace.descroperation import DescrOperation -from pypy.objspace.std import stdtypedef -import types - - -def registerimplementation(implcls): - # this function should ultimately register the implementation class somewhere - # it may be modified to take 'typedef' instead of requiring it to be - # stored in 'implcls' itself - assert issubclass(implcls, W_Object) - - -################################################################## - -class StdObjSpace(ObjSpace, DescrOperation): - """The standard object space, implementing a general-purpose object - library in Restricted Python.""" - - PACKAGE_PATH = 'objspace.std' - - def _freeze_(self): - return True - - def initialize(self): - "NOT_RPYTHON: only for initializing the space." - self._typecache = Cache() - - # Import all the object types and implementations - self.model = StdTypeModel() - - # install all the MultiMethods into the space instance - for name, mm in self.MM.__dict__.items(): - if isinstance(mm, MultiMethod) and not hasattr(self, name): - if name.endswith('_w'): # int_w, str_w...: these do not return a wrapped object - func = mm.install_not_sliced(self.model.typeorder, baked_perform_call=True) - else: - exprargs, expr, miniglobals, fallback = ( - mm.install_not_sliced(self.model.typeorder, baked_perform_call=False)) - - func = stdtypedef.make_perform_trampoline('__mm_'+name, - exprargs, expr, miniglobals, - mm) - - # e.g. add(space, w_x, w_y) - boundmethod = func.__get__(self) # bind the 'space' argument - setattr(self, name, boundmethod) # store into 'space' instance - - # hack to avoid imports in the time-critical functions below - for cls in self.model.typeorder: - globals()[cls.__name__] = cls - - # singletons - self.w_None = W_NoneObject(self) - self.w_False = W_BoolObject(self, False) - self.w_True = W_BoolObject(self, True) - from pypy.interpreter.special import NotImplemented, Ellipsis - self.w_NotImplemented = self.wrap(NotImplemented(self)) - self.w_Ellipsis = self.wrap(Ellipsis(self)) - - # types - self.types_w = {} - for typedef in self.model.pythontypes: - w_type = self.gettypeobject(typedef) - setattr(self, 'w_' + typedef.name, w_type) - - # exceptions & builtins - mod = self.setup_exceptions() - self.make_builtins() - self.sys.setmodule(self.wrap(mod)) - - # dummy old-style classes types - self.w_classobj = W_TypeObject(self, 'classobj', [self.w_object], {}) - self.w_instance = W_TypeObject(self, 'instance', [self.w_object], {}) - - # fix up a problem where multimethods apparently don't - # like to define this at interp-level - self.appexec([self.w_dict], """ - (dict): - def fromkeys(cls, seq, value=None): - r = cls() - for s in seq: - r[s] = value - return r - dict.fromkeys = classmethod(fromkeys) - """) - # old-style classes - self.setup_old_style_classes() - - def enable_old_style_classes_as_default_metaclass(self): - self.setitem(self.builtin.w_dict, self.wrap('__metaclass__'), self.w_classobj) - - def setup_old_style_classes(self): - """NOT_RPYTHON""" - from pypy.module import classobjinterp - # sanity check that this approach is working and is not too late - assert not self.is_true(self.contains(self.builtin.w_dict,self.wrap('_classobj'))),"app-level code has seen dummy old style classes" - w_setup = classobjinterp.initclassobj(self) - w_classobj, w_instance, w_purify = self.unpackiterable(w_setup) - self.call_function(w_purify) - self.w_classobj = w_classobj - self.w_instance = w_instance - - def setup_exceptions(self): - """NOT_RPYTHON""" - ## hacking things in - from pypy.module import exceptionsinterp as ex - def call(w_type, w_args): - space = self - # too early for unpackiterable as well :-( - name = space.unwrap(space.getitem(w_args, space.wrap(0))) - bases = space.unpacktuple(space.getitem(w_args, space.wrap(1))) - dic = space.unwrap(space.getitem(w_args, space.wrap(2))) - dic = dict([(key,space.wrap(value)) for (key, value) in dic.items()]) - bases = list(bases) - if not bases: - bases = [space.w_object] - res = W_TypeObject(space, name, bases, dic) - return res - try: - # note that we hide the real call method by an instance variable! - self.call = call - w_dic = ex.initexceptions(self) - - self.w_IndexError = self.getitem(w_dic, self.wrap("IndexError")) - self.w_StopIteration = self.getitem(w_dic, self.wrap("StopIteration")) - finally: - del self.call # revert - - names_w = self.unpackiterable(self.call_function(self.getattr(w_dic, self.wrap("keys")))) - - for w_name in names_w: - name = self.str_w(w_name) - if not name.startswith('__'): - excname = name - w_exc = self.getitem(w_dic, w_name) - setattr(self, "w_"+excname, w_exc) - - # XXX refine things, clean up, create a builtin module... - # but for now, we do a regular one. - from pypy.interpreter.module import Module - return Module(self, self.wrap("exceptions"), w_dic) - - def gettypeobject(self, typedef): - # types_w maps each StdTypeDef instance to its - # unique-for-this-space W_TypeObject instance - return self.loadfromcache(typedef, - stdtypedef.buildtypeobject, - self._typecache) - - def wrap(self, x): - "Wraps the Python value 'x' into one of the wrapper classes." - if x is None: - return self.w_None - if isinstance(x, W_Object): - raise TypeError, "attempt to wrap already wrapped object: %s"%(x,) - if isinstance(x, OperationError): - raise TypeError, ("attempt to wrap already wrapped exception: %s"% - (x,)) - if isinstance(x, int): - if isinstance(bool, type) and isinstance(x, bool): - return self.newbool(x) - return W_IntObject(self, x) - if isinstance(x, str): - return W_StringObject(self, x) - if isinstance(x, dict): - items_w = [(self.wrap(k), self.wrap(v)) for (k, v) in x.iteritems()] - return W_DictObject(self, items_w) - if isinstance(x, float): - return W_FloatObject(self, x) - if isinstance(x, tuple): - wrappeditems = [self.wrap(item) for item in x] - return W_TupleObject(self, wrappeditems) - if isinstance(x, list): - wrappeditems = [self.wrap(item) for item in x] - return W_ListObject(self, wrappeditems) - if isinstance(x, long): - return W_LongObject(self, x) - if isinstance(x, complex): - # XXX is this right? YYY no, this is wrong right now (CT) - # ZZZ hum, seems necessary for complex literals in co_consts (AR) - c = self.builtin.get('complex') - return self.call_function(c, - self.wrap(x.real), - self.wrap(x.imag)) - if isinstance(x, BaseWrappable): - w_result = x.__spacebind__(self) - #print 'wrapping', x, '->', w_result - return w_result - # anything below this line is implicitly XXX'ed - if isinstance(x, type(Exception)) and issubclass(x, Exception): - if hasattr(self, 'w_' + x.__name__): - w_result = getattr(self, 'w_' + x.__name__) - assert isinstance(w_result, W_TypeObject) - return w_result - from fake import fake_type - if isinstance(x, type): - ft = fake_type(x) - return self.gettypeobject(ft.typedef) - ft = fake_type(type(x)) - return ft(self, x) - wrap._specialize_ = "argtypes" - - def unwrap(self, w_obj): - if isinstance(w_obj, BaseWrappable): - return w_obj - if isinstance(w_obj, W_Object): - return w_obj.unwrap() - raise UnwrapError, "cannot unwrap: %r" % w_obj - - - def newint(self, intval): - return W_IntObject(self, intval) - - def newfloat(self, floatval): - return W_FloatObject(self, floatval) - - def newtuple(self, list_w): - assert isinstance(list_w, list) - return W_TupleObject(self, list_w) - - def newlist(self, list_w): - return W_ListObject(self, list_w) - - def newdict(self, list_pairs_w): - return W_DictObject(self, list_pairs_w) - - def newslice(self, w_start, w_end, w_step): - # w_step may be a real None - if w_step is None: - w_step = self.w_None - return W_SliceObject(self, w_start, w_end, w_step) - - def newstring(self, chars_w): - try: - chars = [chr(self.int_w(w_c)) for w_c in chars_w] - except ValueError: # chr(out-of-range) - raise OperationError(self.w_ValueError, - self.wrap("character code not in range(256)")) - return W_StringObject(self, ''.join(chars)) - - def newseqiter(self, w_obj): - return W_SeqIterObject(self, w_obj) - - def type(self, w_obj): - return w_obj.getclass(self) - - def lookup(self, w_obj, name): - w_type = w_obj.getclass(self) - return w_type.lookup(name) - - def allocate_instance(self, cls, w_subtype): - """Allocate the memory needed for an instance of an internal or - user-defined type, without actually __init__ializing the instance.""" - w_type = self.gettypeobject(cls.typedef) - if self.is_true(self.is_(w_type, w_subtype)): - return instantiate(cls) - else: - w_type.check_user_subclass(w_subtype) - subcls = get_unique_interplevel_subclass(cls, w_subtype.hasdict, w_subtype.nslots != 0) - instance = instantiate(subcls) - instance.user_setup(self, w_subtype, w_subtype.nslots) - return instance - - def unpacktuple(self, w_tuple, expected_length=None): - assert isinstance(w_tuple, W_TupleObject) - t = w_tuple.wrappeditems - if expected_length is not None and expected_length != len(t): - raise ValueError, "got a tuple of length %d instead of %d" % ( - len(t), expected_length) - return t - - def is_(self, w_one, w_two): - # XXX a bit of hacking to gain more speed - if w_one is w_two: - return self.w_True - return self.w_False - - def is_true(self, w_obj): - # XXX don't look! - if isinstance(w_obj, W_DictObject): - return not not w_obj.used - else: - return DescrOperation.is_true(self, w_obj) - - - class MM: - "Container for multimethods." - call = MultiMethod('call', 1, ['__call__'], general__args__=True) - init = MultiMethod('__init__', 1, general__args__=True) - # special visible multimethods - int_w = MultiMethod('int_w', 1, []) # returns an unwrapped int - str_w = MultiMethod('str_w', 1, []) # returns an unwrapped string - float_w = MultiMethod('float_w', 1, []) # returns an unwrapped float - - # add all regular multimethods here - for _name, _symbol, _arity, _specialnames in ObjSpace.MethodTable: - if _name not in locals(): - mm = MultiMethod(_symbol, _arity, _specialnames) - locals()[_name] = mm - del mm - - pow.extras['defaults'] = (None,) Deleted: /pypy/dist/pypy/tool/pytestsupport.py ============================================================================== --- /pypy/dist/pypy/tool/pytestsupport.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,186 +0,0 @@ -from __future__ import generators -import autopath -import py -from py.__impl__.magic import exprinfo -from pypy.interpreter import gateway -from pypy.interpreter.error import OperationError - -# ____________________________________________________________ - -class AppFrame(py.code.Frame): - - def __init__(self, pyframe): - self.code = py.code.Code(pyframe.code) - self.lineno = pyframe.get_last_lineno() - 1 - self.space = pyframe.space - self.w_globals = pyframe.w_globals - self.w_locals = pyframe.getdictscope() - self.f_locals = self.w_locals # for py.test's recursion detection - - def eval(self, code, **vars): - space = self.space - for key, w_value in vars.items(): - space.setitem(self.w_locals, space.wrap(key), w_value) - return space.eval(code, self.w_globals, self.w_locals) - - def exec_(self, code, **vars): - space = self.space - for key, w_value in vars.items(): - space.setitem(self.w_locals, space.wrap(key), w_value) - space.exec_(code, self.w_globals, self.w_locals) - - def repr(self, w_value): - return self.space.unwrap(self.space.repr(w_value)) - - def is_true(self, w_value): - return self.space.is_true(w_value) - -class AppExceptionInfo(py.code.ExceptionInfo): - """An ExceptionInfo object representing an app-level exception.""" - - def __init__(self, space, operr): - self.space = space - self.operr = operr - self.traceback = AppTraceback(self.operr.application_traceback) - - def __str__(self): - return '(application-level) ' + self.operr.errorstr(self.space) - -class AppTracebackEntry(py.code.Traceback.Entry): - exprinfo = None - - def __init__(self, tb): - self.frame = AppFrame(tb.frame) - self.lineno = tb.lineno - 1 - - def reinterpret(self): - # XXX we need to solve a general problem: how to prevent - # reinterpretation from generating a different exception? - # This problem includes the fact that exprinfo will generate - # its own long message that looks like - # OperationError: << [: W_StringObj... - # which is much less nice than the one produced by str(self). - # XXX this reinterpret() is only here to prevent reinterpretation. - return self.exprinfo - -class AppTraceback(py.code.Traceback): - Entry = AppTracebackEntry - - def __init__(self, apptb): - l = [] - while apptb is not None: - l.append(self.Entry(apptb)) - apptb = apptb.next - list.__init__(self, l) - -# ____________________________________________________________ - -def build_pytest_assertion(space): - def my_init(space, w_self, __args__): - "Our new AssertionError.__init__()." - w_parent_init = space.getattr(w_BuiltinAssertionError, - space.wrap('__init__')) - space.call_args(w_parent_init, __args__.prepend(w_self)) - framestack = space.getexecutioncontext().framestack - frame = framestack.top(0) - # Argh! we may see app-level helpers in the frame stack! - # that's very probably very bad... - if frame.code.co_name == 'normalize_exception': - frame = framestack.top(1) - - # if the assertion provided a message, don't do magic - args_w, kwargs_w = __args__.unpack() - if args_w: - w_msg = args_w[0] - else: - runner = AppFrame(frame) - try: - source = runner.statement - source = str(source).strip() - except py.error.ENOENT: - source = None - if source and not py.test.config.option.nomagic: - msg = exprinfo.interpret(source, runner, should_fail=True) - space.setattr(w_self, space.wrap('args'), - space.newtuple([space.wrap(msg)])) - w_msg = space.wrap(msg) - else: - w_msg = space.w_None - space.setattr(w_self, space.wrap('msg'), w_msg) - - # build a new AssertionError class to replace the original one. - w_BuiltinAssertionError = space.getitem(space.builtin.w_dict, - space.wrap('AssertionError')) - w_metaclass = space.type(w_BuiltinAssertionError) - w_init = space.wrap(gateway.interp2app_temp(my_init, - unwrap_spec=[gateway.ObjSpace, - gateway.W_Root, - gateway.Arguments])) - w_dict = space.newdict([]) - space.setitem(w_dict, space.wrap('__init__'), w_init) - return space.call_function(w_metaclass, - space.wrap('AssertionError'), - space.newtuple([w_BuiltinAssertionError]), - w_dict) - -def pypyraises(space, w_ExpectedException, w_expr, __args__): - """A built-in function providing the equivalent of py.test.raises().""" - args_w, kwds_w = __args__.unpack() - if space.is_true(space.isinstance(w_expr, space.w_str)): - if args_w: - raise OperationError(space.w_TypeError, - space.wrap("raises() takes no argument " - "after a string expression")) - expr = space.unwrap(w_expr) - source = py.code.Source(expr) - frame = space.getexecutioncontext().framestack.top() - w_locals = frame.getdictscope() - w_locals = space.call_method(w_locals, 'copy') - for key, w_value in kwds_w.items(): - space.setitem(w_locals, space.wrap(key), w_value) - try: - space.call_method(space.w_builtin, 'eval', - space.wrap(str(source)), - frame.w_globals, - w_locals) - except OperationError, e: - if e.match(space, w_ExpectedException): - return space.sys.call('exc_info') - raise - else: - try: - space.call_args(w_expr, __args__) - except OperationError, e: - if e.match(space, w_ExpectedException): - return space.sys.call('exc_info') - raise - raise OperationError(space.w_AssertionError, - space.wrap("DID NOT RAISE")) - -app_raises = gateway.interp2app_temp(pypyraises, - unwrap_spec=[gateway.ObjSpace, - gateway.W_Root, - gateway.W_Root, - gateway.Arguments]) - -def pypyskip(space, w_message): - """skip a test at app-level. """ - msg = space.unwrap(w_message) - py.test.skip(msg) - -app_skip = gateway.interp2app_temp(pypyskip) - -def raises_w(space, w_ExpectedException, *args, **kwds): - try: - excinfo = py.test.raises(OperationError, *args, **kwds) - type, value, tb = excinfo._excinfo - if not value.match(space, w_ExpectedException): - raise type, value, tb - return excinfo - except py.test.Item.ExceptionFailure, e: - e.tbindex = getattr(e, 'tbindex', -1) - 1 - raise - -def eq_w(space, w_obj1, w_obj2): - """ return interp-level boolean of eq(w_obj1, w_obj2). """ - return space.is_true(space.eq(w_obj1, w_obj2)) Deleted: /pypy/dist/pypy/translator/annrpython.py ============================================================================== --- /pypy/dist/pypy/translator/annrpython.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,489 +0,0 @@ -from __future__ import generators - -from types import FunctionType, ClassType -from pypy.tool.ansi_print import ansi_print -from pypy.annotation import model as annmodel -from pypy.annotation.model import pair -from pypy.annotation.factory import ListFactory, DictFactory, BlockedInference -from pypy.annotation.bookkeeper import Bookkeeper -from pypy.objspace.flow.model import Variable, Constant, undefined_value -from pypy.objspace.flow.model import SpaceOperation, FunctionGraph -from pypy.objspace.flow.model import last_exception, last_exc_value - -class AnnotatorError(Exception): - pass - - -class RPythonAnnotator: - """Block annotator for RPython. - See description in doc/translation/annotation.txt.""" - - def __init__(self, translator=None, overrides={}): - self.translator = translator - self.pendingblocks = {} # map {block: function} - self.bindings = {} # map Variables to SomeValues - self.annotated = {} # set of blocks already seen - self.links_followed = {} # set of links that have ever been followed - self.notify = {} # {block: {positions-to-reflow-from-when-done}} - # --- the following information is recorded for debugging only --- - # --- and only if annotation.model.DEBUG is kept to True - self.why_not_annotated = {} # {block: (exc_type, exc_value, traceback)} - # records the location of BlockedInference - # exceptions that blocked some blocks. - self.blocked_functions = {} # set of functions that have blocked blocks - self.bindingshistory = {}# map Variables to lists of SomeValues - self.binding_caused_by = {} # map Variables to position_keys - # records the caller position that caused bindings of inputargs - # to be updated - self.binding_cause_history = {} # map Variables to lists of positions - # history of binding_caused_by, kept in sync with - # bindingshistory - self.return_bindings = {} # map return Variables to functions - # user-supplied annotation logic for functions we don't want to flow into - self.overrides = overrides - # --- end of debugging information --- - self.bookkeeper = Bookkeeper(self) - - - def _register_returnvar(self, flowgraph, func): - if annmodel.DEBUG: - self.return_bindings[flowgraph.getreturnvar()] = func - - #___ convenience high-level interface __________________ - - def getflowgraph(self, func, called_by=None, call_tag=None): - flowgraph = self.translator.getflowgraph(func, called_by=called_by, call_tag=call_tag) - self._register_returnvar(flowgraph, func) - return flowgraph - - - def build_types(self, func_or_flowgraph, input_arg_types, func=None): - """Recursively build annotations about the specific entry point.""" - if isinstance(func_or_flowgraph, FunctionGraph): - flowgraph = func_or_flowgraph - self._register_returnvar(flowgraph, func) - else: - func = func_or_flowgraph - if self.translator is None: - from pypy.translator.translator import Translator - self.translator = Translator(func, simplifying=True) - self.translator.annotator = self - flowgraph = self.getflowgraph(func) - # make input arguments and set their type - input_arg_types = list(input_arg_types) - nbarg = len(flowgraph.getargs()) - while len(input_arg_types) < nbarg: - input_arg_types.append(object) - inputcells = [] - for t in input_arg_types: - if not isinstance(t, annmodel.SomeObject): - t = self.bookkeeper.valueoftype(t) - inputcells.append(t) - - # register the entry point - self.addpendingblock(func, flowgraph.startblock, inputcells) - # recursively proceed until no more pending block is left - self.complete() - return self.binding(flowgraph.getreturnvar(), extquery=True) - - def gettype(self, variable): - """Return the known type of a control flow graph variable, - defaulting to 'object'.""" - if isinstance(variable, Constant): - return type(variable.value) - elif isinstance(variable, Variable): - cell = self.bindings.get(variable) - if cell: - return cell.knowntype - else: - return object - else: - raise TypeError, ("Variable or Constant instance expected, " - "got %r" % (variable,)) - - def getuserclasses(self): - """Return a set of known user classes.""" - return self.bookkeeper.userclasses - - def getuserclassdefinitions(self): - """Return a list of ClassDefs.""" - return self.bookkeeper.userclasseslist - - def getuserattributes(self, cls): - """Enumerate the attributes of the given user class, as Variable()s.""" - clsdef = self.bookkeeper.userclasses[cls] - for attr, s_value in clsdef.attrs.items(): - v = Variable(name=attr) - self.bindings[v] = s_value - yield v - - #___ medium-level interface ____________________________ - - def addpendingblock(self, fn, block, cells, called_from=None): - """Register an entry point into block with the given input cells.""" - assert self.translator is None or fn in self.translator.flowgraphs - for a in cells: - assert isinstance(a, annmodel.SomeObject) - if block not in self.annotated: - self.bindinputargs(block, cells, called_from) - else: - self.mergeinputargs(block, cells, called_from) - if not self.annotated[block]: - self.pendingblocks[block] = fn - - def complete(self): - """Process pending blocks until none is left.""" - while self.pendingblocks: - block, fn = self.pendingblocks.popitem() - self.processblock(fn, block) - if False in self.annotated.values(): - if annmodel.DEBUG: - for block in self.annotated: - if self.annotated[block] is False: - fn = self.why_not_annotated[block][1].break_at[0] - self.blocked_functions[fn] = True - import traceback - print '-+' * 30 - print 'BLOCKED block at:', - print self.whereami(self.why_not_annotated[block][1].break_at) - print 'because of:' - traceback.print_exception(*self.why_not_annotated[block]) - print '-+' * 30 - print - print "++-" * 20 - print ('%d blocks are still blocked' % - self.annotated.values().count(False)) - print "continuing anyway ...." - print "++-" * 20 - - - def binding(self, arg, extquery=False): - "Gives the SomeValue corresponding to the given Variable or Constant." - if isinstance(arg, Variable): - try: - return self.bindings[arg] - except KeyError: - if extquery: - return None - else: - raise - elif isinstance(arg, Constant): - if arg.value is undefined_value: # undefined local variables - return annmodel.SomeImpossibleValue() - assert not arg.value is last_exception and not arg.value is last_exc_value - return self.bookkeeper.immutablevalue(arg.value) - else: - raise TypeError, 'Variable or Constant expected, got %r' % (arg,) - - def setbinding(self, arg, s_value, called_from=None): - if arg in self.bindings: - assert s_value.contains(self.bindings[arg]) - # for debugging purposes, record the history of bindings that - # have been given to this variable - if annmodel.DEBUG: - history = self.bindingshistory.setdefault(arg, []) - history.append(self.bindings[arg]) - cause_history = self.binding_cause_history.setdefault(arg, []) - cause_history.append(self.binding_caused_by[arg]) - self.bindings[arg] = s_value - if annmodel.DEBUG: - if arg in self.return_bindings: - ansi_print("%s -> %s" % (self.whereami((self.return_bindings[arg], - None, None)), - s_value), - esc="1") # bold - - if arg in self.return_bindings and s_value == annmodel.SomeObject(): - ansi_print("*** WARNING: %s result degenerated to SomeObject" % - self.whereami((self.return_bindings[arg],None, None)), - esc="31") # RED - - self.binding_caused_by[arg] = called_from - - - #___ interface for annotator.factory _______ - - def recursivecall(self, func, position_key, inputcells): - override = self.overrides.get(func, None) - if override is not None: - return override(*inputcells) - parent_fn, parent_block, parent_index = position_key - graph = self.getflowgraph(func, parent_fn, position_key) - # self.notify[graph.returnblock] is a dictionary of call - # points to this func which triggers a reflow whenever the - # return block of this graph has been analysed. - callpositions = self.notify.setdefault(graph.returnblock, {}) - callpositions[position_key] = True - - # generalize the function's input arguments - self.addpendingblock(func, graph.startblock, inputcells, position_key) - - # get the (current) return value - v = graph.getreturnvar() - try: - return self.bindings[v] - except KeyError: - # let's see if the graph only has exception returns - if graph.hasonlyexceptionreturns(): - # XXX for functions with exceptions what to - # do anyway? - #return self.bookkeeper.immutablevalue(None) - return annmodel.SomeImpossibleValue(benign=True) - return annmodel.SomeImpossibleValue() - - def reflowfromposition(self, position_key): - fn, block, index = position_key - self.reflowpendingblock(fn, block) - - - #___ simplification (should be moved elsewhere?) _______ - - # it should be! - # now simplify_calls is moved to transform.py. - # i kept reverse_binding here for future(?) purposes though. --sanxiyn - - def reverse_binding(self, known_variables, cell): - """This is a hack.""" - # In simplify_calls, when we are trying to create the new - # SpaceOperation, all we have are SomeValues. But SpaceOperations take - # Variables, not SomeValues. Trouble is, we don't always have a - # Variable that just happens to be bound to the given SomeValue. - # A typical example would be if the tuple of arguments was created - # from another basic block or even another function. Well I guess - # there is no clean solution, short of making the transformations - # more syntactic (e.g. replacing a specific sequence of SpaceOperations - # with another one). This is a real hack because we have to use - # the identity of 'cell'. - if cell.is_constant(): - return Constant(cell.const) - else: - for v in known_variables: - if self.bindings[v] is cell: - return v - else: - raise CannotSimplify - - def simplify(self): - # Generic simplifications - from pypy.translator import transform - transform.transform_graph(self) - from pypy.translator import simplify - for graph in self.translator.flowgraphs.values(): - simplify.eliminate_empty_blocks(graph) - - - #___ flowing annotations in blocks _____________________ - - def processblock(self, fn, block): - # Important: this is not called recursively. - # self.flowin() can only issue calls to self.addpendingblock(). - # The analysis of a block can be in three states: - # * block not in self.annotated: - # never seen the block. - # * self.annotated[block] == False: - # the input variables of the block are in self.bindings but we - # still have to consider all the operations in the block. - # * self.annotated[block] == True or : - # analysis done (at least until we find we must generalize the - # input variables). - - #print '* processblock', block, cells - self.annotated[block] = fn or True - try: - self.flowin(fn, block) - except BlockedInference, e: - #print '_'*60 - #print 'Blocked at %r:' % (e.break_at,) - #import traceback, sys - #traceback.print_tb(sys.exc_info()[2]) - self.annotated[block] = False # failed, hopefully temporarily - if annmodel.DEBUG: - import sys - self.why_not_annotated[block] = sys.exc_info() - except Exception, e: - # hack for debug tools only - if not hasattr(e, '__annotator_block'): - setattr(e, '__annotator_block', block) - raise - - def reflowpendingblock(self, fn, block): - self.pendingblocks[block] = fn - assert block in self.annotated - self.annotated[block] = False # must re-flow - - def bindinputargs(self, block, inputcells, called_from=None): - # Create the initial bindings for the input args of a block. - assert len(block.inputargs) == len(inputcells) - for a, cell in zip(block.inputargs, inputcells): - self.setbinding(a, cell, called_from) - self.annotated[block] = False # must flowin. - - def mergeinputargs(self, block, inputcells, called_from=None): - # Merge the new 'cells' with each of the block's existing input - # variables. - oldcells = [self.binding(a) for a in block.inputargs] - unions = [annmodel.unionof(c1,c2) for c1, c2 in zip(oldcells,inputcells)] - # if the merged cells changed, we must redo the analysis - if unions != oldcells: - self.bindinputargs(block, unions, called_from) - - def whereami(self, position_key): - fn, block, i = position_key - mod = getattr(fn, '__module__', None) - if mod is None: - mod = '?' - name = getattr(fn, '__name__', None) - if name is not None: - firstlineno = fn.func_code.co_firstlineno - else: - name = 'UNKNOWN' - firstlineno = -1 - blk = "" - if block: - at = block.at() - if at: - blk = " block"+at - opid="" - if i is not None: - opid = " op=%d" % i - return "(%s:%d) %s%s%s" % (mod, firstlineno, name, blk, opid) - - def flowin(self, fn, block): - #print 'Flowing', block, [self.binding(a) for a in block.inputargs] - for i in range(len(block.operations)): - try: - self.bookkeeper.enter((fn, block, i)) - self.consider_op(block.operations[i]) - finally: - self.bookkeeper.leave() - # dead code removal: don't follow all exits if the exitswitch is known - exits = block.exits - if isinstance(block.exitswitch, Variable): - s_exitswitch = self.bindings[block.exitswitch] - if s_exitswitch.is_constant(): - exits = [link for link in exits - if link.exitcase == s_exitswitch.const] - knownvars, knownvarvalue = getattr(self.bindings.get(block.exitswitch), - "knowntypedata", (None, None)) - for link in exits: - self.links_followed[link] = True - import types - in_except_block = False - if isinstance(link.exitcase, (types.ClassType, type)) \ - and issubclass(link.exitcase, Exception): - last_exception_object = annmodel.SomeObject() - if link.exitcase is Exception: - last_exc_value_object = annmodel.SomeObject() - else: - last_exc_value_object = self.bookkeeper.valueoftype(link.exitcase) - last_exc_value_vars = [] - in_except_block = True - last_exception_unknown = True - last_exception_unused = True - - cells = [] - renaming = dict(zip(link.args,link.target.inputargs)) - for a,v in zip(link.args,link.target.inputargs): - if a == Constant(last_exception): - assert in_except_block - assert last_exception_unknown - cells.append(last_exception_object) - last_exception_unused = False - elif a == Constant(last_exc_value): - assert in_except_block - cells.append(last_exc_value_object) - last_exc_value_vars.append(v) - elif isinstance(a, Constant) and a.has_flag('last_exception'): - assert in_except_block - assert last_exception_unused - if last_exception_unknown: - # this modeling should be good enough - # the exc type is not seen by user code - last_exception_object.const = a.value - cell = last_exception_object - cells.append(cell) - last_exception_unknown = False - else: - cell = self.binding(a) - if link.exitcase is True and knownvars is not None and a in knownvars \ - and not knownvarvalue.contains(cell): - cell = knownvarvalue - if hasattr(cell,'is_type_of'): - renamed_is_type_of = [] - for v in cell.is_type_of: - new_v = renaming.get(v,None) - if new_v is not None: - renamed_is_type_of.append(new_v) - cell = annmodel.SomeObject() - cell.is_type_of = renamed_is_type_of - cells.append(cell) - - if in_except_block: - last_exception_object.is_type_of = last_exc_value_vars - - self.addpendingblock(fn, link.target, cells) - if block in self.notify: - # reflow from certain positions when this block is done - for position_key in self.notify[block]: - self.reflowfromposition(position_key) - - - #___ creating the annotations based on operations ______ - - def consider_op(self,op): - argcells = [self.binding(a) for a in op.args] - consider_meth = getattr(self,'consider_op_'+op.opname, - self.default_consider_op) - resultcell = consider_meth(*argcells) - if resultcell is None: - resultcell = annmodel.SomeImpossibleValue() # no return value - elif resultcell == annmodel.SomeImpossibleValue(): - raise BlockedInference(info=op) # the operation cannot succeed - assert isinstance(resultcell, annmodel.SomeObject) - assert isinstance(op.result, Variable) - self.setbinding(op.result, resultcell) # bind resultcell to op.result - - def default_consider_op(self, *args): - return annmodel.SomeObject() - - def _registeroperations(loc): - # All unary operations - for opname in annmodel.UNARY_OPERATIONS: - exec """ -def consider_op_%s(self, arg, *args): - return arg.%s(*args) -""" % (opname, opname) in globals(), loc - # All binary operations - for opname in annmodel.BINARY_OPERATIONS: - exec """ -def consider_op_%s(self, arg1, arg2, *args): - return pair(arg1,arg2).%s(*args) -""" % (opname, opname) in globals(), loc - - _registeroperations(locals()) - del _registeroperations - - # XXX "contains" clash with SomeObject method - def consider_op_contains(self, seq, elem): - return annmodel.SomeBool() - - def consider_op_newtuple(self, *args): - return annmodel.SomeTuple(items = args) - - def consider_op_newlist(self, *args): - factory = self.bookkeeper.getfactory(ListFactory) - for a in args: - factory.generalize(a) - return factory.create() - - def consider_op_newdict(self, *args): - assert not args, "XXX only supports newdict([])" - factory = self.bookkeeper.getfactory(DictFactory) - return factory.create() - - def consider_op_newslice(self, start, stop, step): - return annmodel.SomeSlice(start, stop, step) - - -class CannotSimplify(Exception): - pass Deleted: /pypy/dist/pypy/translator/geninterplevel.py ============================================================================== --- /pypy/dist/pypy/translator/geninterplevel.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,1545 +0,0 @@ -""" -Implementation of a translator from application Python to interpreter level RPython. - -The idea is that we can automatically transform app-space implementations -of methods into some equivalent representation at interpreter level. -Then, the RPython to C translation might hopefully spit out some -more efficient code than always interpreting these methods. - -Note that the appspace functions are treated as rpythonic, in a sense -that globals are constants, for instance. This definition is not -exact and might change. - -Integration of this module will be done half-automatically -using a simple caching mechanism. The generated files are -not meant to be checked into svn, although this currently -still happens. -""" - -from __future__ import generators -import autopath, os, sys, exceptions, inspect, types -import cPickle as pickle, __builtin__ -from pypy.objspace.flow.model import Variable, Constant, SpaceOperation -from pypy.objspace.flow.model import FunctionGraph, Block, Link -from pypy.objspace.flow.model import last_exception, last_exc_value -from pypy.objspace.flow.model import traverse, uniqueitems, checkgraph -from pypy.interpreter.pycode import CO_VARARGS, CO_VARKEYWORDS -from pypy.annotation import model as annmodel -from types import FunctionType, CodeType, ModuleType -from pypy.interpreter.error import OperationError -from pypy.interpreter.argument import Arguments -from pypy.objspace.std.restricted_int import r_int, r_uint - -from pypy.translator.translator import Translator -from pypy.objspace.flow import FlowObjSpace - -from pypy.interpreter.gateway import app2interp, interp2app - -from pypy.tool.sourcetools import render_docstr - -from pypy.translator.gensupp import ordered_blocks, UniqueList, builtin_base, \ - c_string, uniquemodulename, C_IDENTIFIER, NameManager - -import pypy # __path__ -import py.path -# ____________________________________________________________ - -def eval_helper(self, typename, expr): - name = self.uniquename("gtype_%s" % typename) - unique = self.uniquenameofprebuilt("eval_helper", eval_helper) - self.initcode.append1( - 'def %s(expr):\n' - ' dic = space.newdict([])\n' - ' if "types." in expr:\n' - ' space.exec_("import types", dic, dic)\n' - ' else:\n' - ' space.exec_("", dic, dic)\n' - ' return space.eval(expr, dic, dic)' % (unique, )) - self.initcode.append1('%s = %s(%r)' % (name, unique, expr)) - return name - -def unpickle_helper(self, name, value): - unique = self.uniquenameofprebuilt("unpickle_helper", unpickle_helper) - self.initcode.append1( - 'def %s(value):\n' - ' dic = space.newdict([])\n' - ' space.exec_("import cPickle as pickle", dic, dic)\n' - ' return space.eval("pickle.loads(%%r)" %% value, dic, dic)' % unique) - self.initcode.append1('%s = %s(%r)' % ( - name, unique, pickle.dumps(value, 2)) ) - -# hey, for longs we can do even easier: -def long_helper(self, name, value): - unique = self.uniquenameofprebuilt("long_helper", long_helper) - self.initcode.append1( - 'def %s(value):\n' - ' dic = space.newdict([])\n' - ' space.exec_("", dic, dic) # init __builtins__\n' - ' return space.eval("long(%%r, 16)" %% value, dic, dic)' % unique) - self.initcode.append1('%s = %s(%r)' % ( - name, unique, hex(value)[2:-1] ) ) - -class GenRpy: - def __init__(self, translator, entrypoint=None, modname=None, moddict=None): - self.translator = translator - if entrypoint is None: - entrypoint = translator.entrypoint - self.entrypoint = entrypoint - self.modname = self.trans_funcname(modname or - uniquemodulename(entrypoint)) - self.moddict = moddict # the dict if we translate a module - - def late_OperationError(): - self.initcode.append1( - 'from pypy.interpreter.error import OperationError as gOperationError') - return 'gOperationError' - def late_Arguments(): - self.initcode.append1('from pypy.interpreter import gateway') - return 'gateway.Arguments' - - self.rpynames = {Constant(None).key: 'space.w_None', - Constant(False).key: 'space.w_False', - Constant(True).key: 'space.w_True', - Constant(OperationError).key: late_OperationError, - Constant(Arguments).key: late_Arguments, - } - u = UniqueList - self.initcode = u() # list of lines for the module's initxxx() - self.latercode = u() # list of generators generating extra lines - # for later in initxxx() -- for recursive - # objects - self.namespace = NameManager() - self.namespace.make_reserved_names('__doc__ __args__ space goto') - self.globaldecl = [] - self.globalobjects = [] - self.pendingfunctions = [] - self.currentfunc = None - self.debugstack = () # linked list of nested nameof() - - # special constructors: - self.has_listarg = {} - for name in "newtuple newlist newdict newstring".split(): - self.has_listarg[name] = name - - # catching all builtins in advance, to avoid problems - # with modified builtins - - # add a dummy _issubtype() to builtins - def _issubtype(cls1, cls2): - raise TypeError, "this dummy should *not* be reached" - __builtin__._issubtype = _issubtype - - class bltinstub: - def __init__(self, name): - self.__name__ = name - def __repr__(self): - return '<%s>' % self.__name__ - - self.builtin_ids = dict( [ - (id(value), bltinstub(key)) - for key, value in __builtin__.__dict__.items() - if callable(value) and type(value) not in [type(Exception), type] ] ) - - self.space = FlowObjSpace() # for introspection - - self.use_fast_call = True - self.specialize_goto = False - self._labeltable = {} # unique label names, reused per func - - self._space_arities = None - - def expr(self, v, localscope, wrapped = True): - if isinstance(v, Variable): - return localscope.localname(v.name, wrapped) - elif isinstance(v, Constant): - return self.nameof(v.value, - debug=('Constant in the graph of', self.currentfunc)) - else: - raise TypeError, "expr(%r)" % (v,) - - def arglist(self, args, localscope): - res = [self.expr(arg, localscope) for arg in args] - return ", ".join(res) - - def oper(self, op, localscope): - if op.opname == "simple_call": - v = op.args[0] - space_shortcut = self.try_space_shortcut_for_builtin(v, len(op.args)-1) - if space_shortcut is not None: - # space method call - exv = space_shortcut - fmt = "%(res)s = %(func)s(%(args)s)" - else: - exv = self.expr(v, localscope) - # default for a spacecall: - fmt = "%(res)s = space.call_function(%(func)s, %(args)s)" - # see if we can optimize for a fast call. - # we just do the very simple ones. - if self.use_fast_call and (isinstance(v, Constant) - and exv.startswith('gfunc_')): - func = v.value - if (not func.func_code.co_flags & CO_VARARGS) and ( - func.func_defaults is None): - fmt = "%(res)s = fastf_%(func)s(space, %(args)s)" - exv = exv[6:] - return fmt % {"res" : self.expr(op.result, localscope), - "func": exv, - "args": self.arglist(op.args[1:], localscope) } - if op.opname == "call_args": - v = op.args[0] - exv = self.expr(v, localscope) - fmt = ( - "_args = %(Arg)s.fromshape(space, %(shape)s, [%(data_w)s])\n" - "%(res)s = space.call_args(%(func)s, _args)") - assert isinstance(op.args[1], Constant) - shape = op.args[1].value - return fmt % {"res": self.expr(op.result, localscope), - "func": exv, - "shape": repr(shape), - "data_w": self.arglist(op.args[2:], localscope), - 'Arg': self.nameof(Arguments) } - if op.opname in self.has_listarg: - fmt = "%s = %s([%s])" - else: - fmt = "%s = %s(%s)" - # special case is_true - wrapped = op.opname != "is_true" - oper = "space.%s" % op.opname - return fmt % (self.expr(op.result, localscope, wrapped), oper, - self.arglist(op.args, localscope)) - - def large_assignment(self, left, right, margin=65): - expr = "(%s) = (%s)" % (", ".join(left), ", ".join(right)) - pieces = expr.split(",") - res = [pieces.pop(0)] - for piece in pieces: - if len(res[-1])+len(piece)+1 > margin: - res[-1] += "," - res.append(piece) - else: - res[-1] += (","+piece) - return res - - def large_initialize(self, vars, margin=65): - res = [] - nonestr = "None" - margin -= len(nonestr) - for var in vars: - ass = var+"=" - if not res or len(res[-1]) >= margin: - res.append(ass) - else: - res[-1] += ass - res = [line + nonestr for line in res] - return res - - def mklabel(self, blocknum): - if self.specialize_goto: - lbname = self._labeltable.get(blocknum) - if not lbname: - self.initcode.append1( - 'from pypy.objspace.flow.framestate import SpecTag') - lbname = self.uniquename("glabel_%d" % blocknum) - self._labeltable[blocknum] = lbname - self.initcode.append1('%s = SpecTag()' % lbname) - return lbname - else: - return repr(blocknum) - - def gen_link(self, link, localscope, blocknum, block, linklocalvars=None): - "Generate the code to jump across the given Link." - linklocalvars = linklocalvars or {} - left, right = [], [] - for a1, a2 in zip(link.args, link.target.inputargs): - if a1 in linklocalvars: - src = linklocalvars[a1] - else: - src = self.expr(a1, localscope) - left.append(self.expr(a2, localscope)) - right.append(src) - if left: # anything at all? - txt = "%s = %s" % (", ".join(left), ", ".join(right)) - if len(txt) <= 65: # arbitrary - yield txt - else: - for line in self.large_assignment(left, right): - yield line - goto = blocknum[link.target] - yield 'goto = %s' % self.mklabel(goto) - if goto <= blocknum[block]: - yield 'continue' - - def register_early(self, obj, name): - # this was needed for recursive lists. - # note that self.latercode led to too late initialization. - key = Constant(obj).key - self.rpynames[key] = name - - def nameof(self, obj, debug=None, namehint=None): - key = Constant(obj).key - try: - txt = self.rpynames[key] - if type(txt) is not str: - # this is a predefined constant, initialized on first use - func = txt - txt = func() - self.rpynames[key] = txt - return txt - - except KeyError: - if debug: - stackentry = debug, obj - else: - stackentry = obj - self.debugstack = (self.debugstack, stackentry) - obj_builtin_base = builtin_base(obj) - if obj_builtin_base in (object, int, long) and type(obj) is not obj_builtin_base: - # assume it's a user defined thingy - name = self.nameof_instance(obj) - else: - # shortcutting references to __builtin__ - if id(obj) in self.builtin_ids: - func = self.builtin_ids[id(obj)] - name = "(space.builtin.get(space.str_w(%s)))" % self.nameof(func.__name__) - else: - for cls in type(obj).__mro__: - meth = getattr(self, - 'nameof_' + cls.__name__.replace(' ', ''), - None) - if meth: - break - else: - raise Exception, "nameof(%r)" % (obj,) - - code = meth.im_func.func_code - if namehint and 'namehint' in code.co_varnames[:code.co_argcount]: - name = meth(obj, namehint=namehint) - else: - name = meth(obj) - self.debugstack, x = self.debugstack - assert x is stackentry - self.rpynames[key] = name - return name - - def uniquename(self, basename): - name = self.namespace.uniquename(basename) - self.globalobjects.append(name) - self.globaldecl.append('# global object %s' % (name,)) - return name - - def uniquenameofprebuilt(self, basename, obj): - # identifying an object and giving it a name, - # without the attempt to render it. - key = Constant(obj).key - try: - txt = self.rpynames[key] - except KeyError: - self.rpynames[key] = txt = self.uniquename(basename) - return txt - - - def nameof_NotImplementedType(self, value): - return "space.w_NotImplemented" - - def nameof_object(self, value): - if type(value) is not object: - # try to just wrap it? - name = self.uniquename('g_%sinst_%r' % (type(value).__name__, value)) - self.initcode.append1('%s = space.wrap(%r)' % (name, value)) - return name - name = self.uniquename('g_object') - self.initcode.append('_tup = space.newtuple([])\n' - '%s = space.call(space.w_object, _tup)' - % name) - return name - - def nameof_module(self, value): - #assert value is os or not hasattr(value, "__file__") or \ - # not (value.__file__.endswith('.pyc') or - # value.__file__.endswith('.py') or - # value.__file__.endswith('.pyo')), \ - # "%r is not a builtin module (probably :)"%value - # assume that we get a faked module - name = self.uniquename('mod_%s' % value.__name__) - self.initcode.append1('import %s as _tmp' % value.__name__) - self.initcode.append1('%s = space.wrap(_tmp)' % (name)) - return name - - - def nameof_int(self, value): - if value >= 0: - name = 'gi_%d' % value - else: - # make sure that the type ident is completely described by - # the prefixbefore the initial '_' for easy postprocessing - name = 'gi_minus_%d' % abs(value) - name = self.uniquename(name) - self.initcode.append1('%s = space.newint(%d)' % (name, value)) - return name - - def nameof_long(self, value): - # assume we want them in hex most of the time - if value < 256L: - s = "%dL" % value - else: - s = "0x%08xL" % value - if value >= 0: - name = 'glong_%s' % s - else: - # mae sure that the type ident is completely described by - # the prefix before the initial '_' - name = 'glong_minus_%d' % abs(value) - name = self.uniquename(name) - # allow literally short longs only, meaning they - # must fit into a machine word. - if (sys.maxint*2+1)&value == value: - self.initcode.append1('%s = space.wrap(%s) # XXX implement long!' % (name, s)) - else: - long_helper(self, name, value) - return name - - def nameof_float(self, value): - name = 'gfloat_%s' % value - name = (name.replace('-', 'minus') - .replace('.', 'dot')) - name = self.uniquename(name) - self.initcode.append1('%s = space.newfloat(%r)' % (name, value)) - return name - - def nameof_str(self, value): - if [c for c in value if c<' ' or c>'~' or c=='"' or c=='\\']: - # non-printable string - namestr = repr(value)[1:-1] - else: - # printable string - namestr = value - if not namestr: - namestr = "_emptystr_" - name = self.uniquename('gs_' + namestr[:32]) - # self.initcode.append1('%s = space.newstring(%r)' % (name, value)) - # ick! very unhandy - self.initcode.append1('%s = space.wrap(%r)' % (name, value)) - return name - - def skipped_function(self, func): - # debugging only! Generates a placeholder for missing functions - # that raises an exception when called. - name = self.uniquename('gskippedfunc_' + func.__name__) - self.globaldecl.append('# global decl %s' % (name, )) - self.initcode.append1('# build func %s' % name) - return name - - def skipped_class(self, cls): - # debugging only! Generates a placeholder for missing classes - # that raises an exception when called. - name = self.uniquename('gskippedclass_' + cls.__name__) - self.globaldecl.append('# global decl %s' % (name, )) - self.initcode.append1('# build class %s' % name) - return name - - def trans_funcname(self, s): - return s.translate(C_IDENTIFIER) - - def nameof_function(self, func, namehint=''): - if hasattr(func, 'geninterplevel_name'): - return func.geninterplevel_name(self) - - printable_name = '(%s:%d) %s' % ( - self.trans_funcname(func.func_globals.get('__name__', '?')), - func.func_code.co_firstlineno, - func.__name__) - if self.translator.frozen: - if func not in self.translator.flowgraphs: - print "NOT GENERATING", printable_name - return self.skipped_function(func) - else: - if (func.func_doc and - func.func_doc.lstrip().startswith('NOT_RPYTHON')): - print "skipped", printable_name - return self.skipped_function(func) - name = self.uniquename('gfunc_' + self.trans_funcname( - namehint + func.__name__)) - f_name = 'f_' + name[6:] - self.initcode.append1('from pypy.interpreter import gateway') - self.initcode.append1('%s = space.wrap(gateway.interp2app(%s, unwrap_spec=[gateway.ObjSpace, gateway.Arguments]))' % (name, f_name)) - self.pendingfunctions.append(func) - return name - - def nameof_staticmethod(self, sm): - # XXX XXX XXXX - func = sm.__get__(42.5) - name = self.uniquename('gsm_' + func.__name__) - functionname = self.nameof(func) - self.initcode.append1('%s = space.wrap(%s)' % (name, functionname)) - return name - - def nameof_instancemethod(self, meth): - if meth.im_self is None: - # no error checking here - return self.nameof(meth.im_func, namehint="%s_" % meth.im_class.__name__) - else: - ob = self.nameof(meth.im_self) - func = self.nameof(meth.im_func) - typ = self.nameof(meth.im_class) - name = self.uniquename('gmeth_' + meth.im_func.__name__) - funcname = self.nameof(meth.im_func.__name__) - self.initcode.append1( - '%s = space.getattr(%s, %s)' % (name, ob, funcname)) - return name - - def should_translate_attr(self, pbc, attr): - ann = self.translator.annotator - if ann is None: - ignore = getattr(pbc.__class__, 'NOT_RPYTHON_ATTRIBUTES', []) - if attr in ignore: - return False - else: - return "probably" # True - classdef = ann.getuserclasses().get(pbc.__class__) - if classdef and classdef.about_attribute(attr) is not None: - return True - return False - - def later(self, gen): - self.latercode.append1((gen, self.debugstack)) - - def nameof_instance(self, instance): - klass = instance.__class__ - name = self.uniquename('ginst_' + klass.__name__) - cls = self.nameof(klass) - if hasattr(klass, '__base__'): - base_class = builtin_base(instance) - base = self.nameof(base_class) - else: - base_class = None - base = cls - def initinstance(): - content = instance.__dict__.items() - content.sort() - for key, value in content: - if self.should_translate_attr(instance, key): - try: - yield 'space.setattr(%s, %s, %s)' % ( - name, self.nameof(key), self.nameof(value)) - except: - print >> sys.stderr, "Problem while generating %s of %r" % ( - name, instance) - raise - self.initcode.append1("%s = space.call_method(%s, '__new__', %s)" % ( - name, cls, cls)) - self.later(initinstance()) - return name - - def space_arities(self): - if self._space_arities is None: - arities = self._space_arities = {} - for name, sym, arity, specnames in self.space.MethodTable: - arities[name] = arity - arities['isinstance'] = 2 - return self._space_arities - - def try_space_shortcut_for_builtin(self, v, nargs): - if isinstance(v, Constant) and id(v.value) in self.builtin_ids: - name = self.builtin_ids[id(v.value)].__name__ - if hasattr(self.space, name): - if self.space_arities().get(name, -1) == nargs: - return "space.%s" % name - return None - - def nameof_builtin_function_or_method(self, func): - if func.__self__ is None: - # builtin function - if id(func) in self.builtin_ids: - func = self.builtin_ids[id(func)] - return "(space.builtin.get(space.str_w(%s)))" % self.nameof(func.__name__) - # where does it come from? Python2.2 doesn't have func.__module__ - for modname, module in sys.modules.items(): - if hasattr(module, '__file__'): - if (module.__file__.endswith('.py') or - module.__file__.endswith('.pyc') or - module.__file__.endswith('.pyo')): - continue # skip non-builtin modules - if func is getattr(module, func.__name__, None): - break - else: - raise Exception, '%r not found in any built-in module' % (func,) - if modname == '__builtin__': - # be lazy - return "(space.builtin.get(space.str_w(%s)))" % self.nameof(func.__name__) - elif modname == 'sys': - # be lazy - return "(space.sys.get(space.str_w(%s)))" % self.nameof(func.__name__) - else: - name = self.uniquename('gbltin_' + func.__name__) - self.initcode.append1('%s = space.getattr(%s, %s)' % ( - name, self.nameof(module), self.nameof(func.__name__))) - else: - # builtin (bound) method - name = self.uniquename('gbltinmethod_' + func.__name__) - self.initcode.append1('%s = space.getattr(%s, %s)' % ( - name, self.nameof(func.__self__), self.nameof(func.__name__))) - return name - - def nameof_classobj(self, cls): - printable_name = cls.__name__ - if cls.__doc__ and cls.__doc__.lstrip().startswith('NOT_RPYTHON'): - #raise Exception, "%r should never be reached" % (cls,) - print "skipped class", printable_name - return self.skipped_class(cls) - - metaclass = "space.w_type" - name = self.uniquename('gcls_' + cls.__name__) - - if issubclass(cls, Exception): - # if cls.__module__ == 'exceptions': - # don't rely on this, py.magic redefines AssertionError - if getattr(__builtin__,cls.__name__,None) is cls: - # exception are defined on the space - return 'space.w_%s' % cls.__name__ - - if not isinstance(cls, type): - assert type(cls) is type(Exception) - # do *not* change metaclass, but leave the - # decision to what PyPy thinks is correct. - # metaclass = 'space.w_classobj' - - basenames = [self.nameof(base) for base in cls.__bases__] - - def initclassobj(): - content = cls.__dict__.items() - content.sort() - for key, value in content: - if key.startswith('__'): - if key in ['__module__', '__doc__', '__dict__', - '__weakref__', '__metaclass__', '__slots__','__new__']: - continue - - # redirect value through class interface, in order to - # get methods instead of functions. - value = getattr(cls, key) - - if isinstance(value, staticmethod) and value.__get__(1) not in self.translator.flowgraphs and self.translator.frozen: - print "skipped staticmethod:", value - continue - if isinstance(value, FunctionType) and value not in self.translator.flowgraphs and self.translator.frozen: - print "skipped function:", value - continue - - yield 'space.setattr(%s, %s, %s)' % ( - name, self.nameof(key), self.nameof(value)) - - baseargs = ", ".join(basenames) - self.initcode.append('_dic = space.newdict([])') - for key, value in cls.__dict__.items(): - if key.startswith('__'): - if key in ['__module__', '__metaclass__', '__slots__','__new__']: - keyname = self.nameof(key) - valname = self.nameof(value) - self.initcode.append("space.setitem(_dic, %s, %s)" % ( - keyname, valname)) - - if cls.__doc__ is not None: - sdoc = self.nameof("__doc__") - docstr = render_docstr(cls, "_doc = space.wrap(", ")") - self.initcode.append1((docstr,)) # not splitted - self.initcode.append("space.setitem(_dic, %s, _doc)" % ( - self.nameof("__doc__"),)) - self.initcode.append1('_bases = space.newtuple([%(bases)s])\n' - '_args = space.newtuple([%(name)s, _bases, _dic])\n' - '%(klass)s = space.call(%(meta)s, _args)' - % {"bases": baseargs, - "klass": name, - "name" : self.nameof(cls.__name__), - "meta" : metaclass} ) - - self.later(initclassobj()) - return name - - nameof_class = nameof_classobj # for Python 2.2 - - typename_mapping = { - object: 'space.w_object', - int: 'space.w_int', - long: 'space.w_long', - bool: 'space.w_bool', - list: 'space.w_list', - tuple: 'space.w_tuple', - dict: 'space.w_dict', - str: 'space.w_str', - float: 'space.w_float', - slice: 'space.w_slice', - type(Exception()): 'space.wrap(types.InstanceType)', - type: 'space.w_type', - complex:'space.wrap(types.ComplexType)', - unicode:'space.w_unicode', - file: (eval_helper, 'file', 'file'), - type(None): (eval_helper, 'NoneType', 'type(None)'), - CodeType: (eval_helper, 'code', 'type((lambda:42).func_code)'), - ModuleType: (eval_helper, 'ModuleType', 'types.ModuleType'), - xrange: (eval_helper, 'xrange', 'xrange'), - - ##r_int: 'space.w_int', - ##r_uint: 'space.w_int', - - type(len): (eval_helper, 'FunctionType', 'type(lambda:42)'), - # type 'method_descriptor': - # XXX small problem here: - # XXX with space.eval, we get - # XXX but with wrap, we get - type(list.append): (eval_helper, "method_descriptor", "type(list.append)"), - # type 'wrapper_descriptor': - type(type(None).__repr__): (eval_helper, "wrapper_descriptor", - "type(type(None).__repr__)"), - # type 'getset_descriptor': - # XXX here we get , - # while eval gives us - type(type.__dict__['__dict__']): (eval_helper, "getset_descriptor", - "type(type.__dict__[\'__dict__\'])"), - # type 'member_descriptor': - # XXX this does not work in eval! - # type(type.__dict__['__basicsize__']): "cannot eval type(type.__dict__['__basicsize__'])", - # XXX there seems to be no working support for member descriptors ??? - type(types.GeneratorType.gi_frame): - (eval_helper, "member_descriptor", 'type(property.fdel)'), - types.ClassType: 'space.w_classobj', - types.MethodType: (eval_helper, "instancemethod", - "type((lambda:42).__get__(42))"), - property: (eval_helper, "property", 'property'), - } - - def nameof_type(self, cls): - if cls in self.typename_mapping: - ret = self.typename_mapping[cls] - if type(ret) is tuple: - ret = ret[0](self, ret[1], ret[2]) - return ret - assert cls.__module__ != '__builtin__', ( - "built-in class %r not found in typename_mapping " - "while compiling %s" % (cls, self.currentfunc and - self.currentfunc.__name__ or "*no function at all*")) - return self.nameof_classobj(cls) - - def nameof_tuple(self, tup): - name = self.uniquename('g%dtuple' % len(tup)) - args = [self.nameof(x) for x in tup] - args = ', '.join(args) - self.initcode.append1('%s = space.newtuple([%s])' % (name, args)) - return name - - def nameof_list(self, lis): - name = self.uniquename('g%dlist' % len(lis)) - # note that self.latercode led to too late initialization. - self.register_early(lis, name) - self.initcode.append('%s = space.newlist([space.w_None])' % (name,)) - self.initcode.append('%s = space.mul(%s, %s)' % (name, name, self.nameof(len(lis)))) - for i in range(len(lis)): - item = self.nameof(lis[i]) - self.initcode.append('space.setitem(%s, %s, %s);' % ( - name, self.nameof(i), item)) - return name - - def nameof_dict(self, dic): - assert dic is not __builtins__ - assert '__builtins__' not in dic, 'Seems to be the globals of %s' % ( - dic.get('__name__', '?'),) - name = self.uniquename('g%ddict' % len(dic)) - self.register_early(dic, name) - self.initcode.append('%s = space.newdict([])' % (name,)) - for k in dic: - self.initcode.append('space.setitem(%s, %s, %s)'%( - name, self.nameof(k), self.nameof(dic[k]))) - return name - - # strange prebuilt instances below, don't look too closely - # XXX oh well. - def nameof_member_descriptor(self, md): - name = self.uniquename('gdescriptor_%s_%s' % ( - md.__objclass__.__name__, md.__name__)) - cls = self.nameof(md.__objclass__) - # do I need to take the dict and then getitem??? - self.initcode.append1('%s = space.getattr(%s, %s)' % - (name, cls, self.nameof(md.__name__))) - return name - nameof_getset_descriptor = nameof_member_descriptor - nameof_method_descriptor = nameof_member_descriptor - nameof_wrapper_descriptor = nameof_member_descriptor - - def nameof_file(self, fil): - if fil is sys.stdin: - return 'PySys_GetObject("stdin")' - if fil is sys.stdout: - return 'PySys_GetObject("stdout")' - if fil is sys.stderr: - return 'PySys_GetObject("stderr")' - raise Exception, 'Cannot translate an already-open file: %r' % (fil,) - - def gen_source(self, fname, ftmpname=None, file=file): - self.fname = fname - self.ftmpname = ftmpname - - # generate unordered source file, first. - # I prefer this over ordering everything in memory. - fname = self.fname - if self.ftmpname: - fname = self.ftmpname - f = file(fname, "w") - # generate ordered source file - try: - self.f = f - self.gen_source_temp() - finally: - f.close() - - def copyfile(source, target): - file(target, "w").write(file(source).read()) - - def order_sections(fname): - sep = "\n##SECTION##\n" - txt = file(fname).read() - pieces = txt.split(sep) - prelude = pieces.pop(0) - postlude = pieces.pop() - dic = {} - while pieces: - func = pieces.pop() - head = pieces.pop() - key = makekey(head, len(pieces)) - dic[key] = head + sep + func - lis = dic.items() - lis.sort() - lis = [prelude] + [func for head, func in lis] + [postlude] - txt = sep.join(lis) - file(fname, "w").write(txt) - - def makekey(txt, uniqueno): - dic = {} - for line in txt.split("\n"): - ign, name, value = line.split(None, 2) - dic[name] = eval(value, {}) - key = (dic["filename"], dic["firstlineno"], - dic["function"], uniqueno) - return key - - order_sections(fname) - if self.ftmpname: - copyfile(self.ftmpname, self.fname) - - def gen_source_temp(self): - f = self.f - info = { - 'modname': self.modname, - # the side-effects of this is kick-start the process - 'entrypoint': self.nameof(self.entrypoint), - } - # header - print >> f, self.RPY_HEADER - print >> f - - # doc - if self.moddict and self.moddict.get("__doc__"): - doc = self.moddict["__doc__"] - print >> f, render_docstr(doc) - print >> f - # make sure it is not rendered again - key = Constant(doc).key - self.rpynames[key] = "__doc__" - self.initcode.append("__doc__ = space.wrap('__doc__')") - - # header """def initmodule(space):""" - print >> f, self.RPY_INIT_HEADER % info - - # function implementations - while self.pendingfunctions or self.latercode: - if self.pendingfunctions: - func = self.pendingfunctions.pop() - self.currentfunc = func - self.gen_rpyfunction(func) - # collect more of the latercode after each function - while self.latercode: - gen, self.debugstack = self.latercode.pop() - #self.initcode.extend(gen) -- eats TypeError! bad CPython! - for line in gen: - self.initcode.append1(line) - self.debugstack = () - self.gen_global_declarations() - - # set the final splitter - print >> f, "##SECTION##" - # footer, init code - for codelines in self.initcode: - # keep docstrings unindented - indent = " " - if type(codelines) is tuple: - codelines = codelines[0].split("\n", 1) - codelines[0] = indent + codelines[0] - indent = "" - else: - codelines = codelines.split("\n") - for codeline in codelines: - print >> f, indent + codeline - - self.gen_trailer(info, " ") - # do not close the file here! - - def gen_trailer(self, info, indent): - if self.moddict: - # we are generating a module, no __main__ etc. - print >> self.f, indent + "return %s" % self.nameof(self.entrypoint) - print >> self.f - else: - # we should have an entrypoint function - info['entrypointname'] = self.trans_funcname(self.entrypoint.__name__) - print >> self.f, self.RPY_INIT_FOOTER % info - - def gen_global_declarations(self): - g = self.globaldecl - if g: - f = self.f - print >> f, '# global declaration%s' % ('s'*(len(g)>1)) - for line in g: - print >> f, line - print >> f - del g[:] - g = self.globalobjects - for name in g: - pass # self.initcode.append1('# REGISTER_GLOBAL(%s)' % (name,)) - del g[:] - - def rel_filename(self, name): - # try to find a name relative to pypy and unify. - # if not possible, stick with the original. - ref = py.path.local(pypy.__path__[0]) - rel = py.path.local(name).relto(ref) - if rel: - # make it os independent - return rel.replace('\\', '/') - return name # no success - - def gen_rpyfunction(self, func): - - f = self.f - print >> f, "##SECTION##" # simple to split, afterwards - print >> f, ("## filename %r\n" - "## function %r\n" - "## firstlineno %d") % ( - self.rel_filename(func.func_code.co_filename), - func.func_code.co_name, - func.func_code.co_firstlineno) - print >> f, "##SECTION##" - localscope = self.namespace.localScope() - body = list(self.rpyfunction_body(func, localscope)) - name_of_defaults = [self.nameof(x, debug=('Default argument of', func)) - for x in (func.func_defaults or ())] - self.gen_global_declarations() - - # print header - docstr = render_docstr(func, " ") - cname = self.nameof(func) - assert cname.startswith('gfunc_') - f_name = 'f_' + cname[6:] - - # collect all the local variables - graph = self.translator.getflowgraph(func) - localslst = [] - def visit(node): - if isinstance(node, Block): - localslst.extend(node.getvariables()) - traverse(visit, graph) - localnames = [self.expr(a, localscope) for a in uniqueitems(localslst)] - - # collect all the arguments - vararg = varkw = None - varargname = varkwname = None - all_args = graph.getargs() - p = len(all_args) - if func.func_code.co_flags & CO_VARKEYWORDS: - p -= 1 - varkw = graph.getargs()[p] - varkwname = func.func_code.co_varnames[p] - if func.func_code.co_flags & CO_VARARGS: - p -= 1 - vararg = graph.getargs()[p] - varargname = func.func_code.co_varnames[p] - positional_args = all_args[:p] - - fast_args = [self.expr(a, localscope) for a in positional_args] - if vararg is not None: - vararg = self.expr(vararg, localscope) - fast_args.append(vararg) - if varkw is not None: - varkw = self.expr(varkw, localscope) - fast_args.append(varkw) - fast_name = 'fast' + f_name - - fast_set = dict(zip(fast_args, fast_args)) - - # create function declaration - name = self.trans_funcname(func.__name__) # for - argstr = ", ".join(['space'] + fast_args) - fast_function_header = (' def %s(%s):' - % (name, argstr)) - - def install_func(f_name, name): - yield '' - yield ' %s = %s' % (f_name, name) - #import __builtin__ - #dic = __builtin__.__dict__ - #if dic.get(name): - # yield 'del %s # hiding a builtin!' % name - #else: - # self.initcode.append1('del m.%s' % (name,)) - - print >> f, ' def %s(space, __args__):' % (name,) - if docstr is not None: - print >> f, docstr - print >> f - def tupstr(seq): - if len(seq) == 1: - fmt = '%s,' - else: - fmt = '%s' - return fmt % ', '.join(seq) - def tupassstr(seq): - if not seq: - return "" - else: - return tupstr(seq) + " = " - - print >> f, ' funcname = "%s"' % func.__name__ - - kwlist = list(func.func_code.co_varnames[:func.func_code.co_argcount]) - signature = ' signature = %r' % kwlist - signature = ", ".join([signature, repr(varargname), repr(varkwname)]) - print >> f, signature - - print >> f, ' defaults_w = [%s]' % ", ".join(name_of_defaults) - - print >> f, ' %s__args__.parse(funcname, signature, defaults_w)' % ( - tupassstr(fast_args),) - print >> f, ' return %s(%s)' % (fast_name, ', '.join(["space"]+fast_args)) - - for line in install_func(f_name, name): - print >> f, line - - print >> f - print >> f, fast_function_header - if docstr is not None: - print >> f, docstr - - fast_locals = [arg for arg in localnames if arg not in fast_set] -## # if goto is specialized, the false detection of -## # uninitialized variables goes away. -## if fast_locals and not self.specialize_goto: -## print >> f -## for line in self.large_initialize(fast_locals): -## print >> f, " %s" % line -## print >> f - - # print the body - for line in body: - print >> f, line - for line in install_func("fast"+f_name, name): - print >> f, line - print >> f - - # print the PyMethodDef - # skipped - - if not self.translator.frozen: - # this is only to keep the RAM consumption under control - del self.translator.flowgraphs[func] - Variable.instances.clear() - - def rpyfunction_body(self, func, localscope): - try: - graph = self.translator.getflowgraph(func) - except Exception, e: - print 20*"*", e - print func - raise - # not needed, we use tuple assignment! - # remove_direct_loops(graph) - checkgraph(graph) - - allblocks = [] - - f = self.f - t = self.translator - #t.simplify(func) - graph = t.getflowgraph(func) - - - start = graph.startblock - allblocks = ordered_blocks(graph) - nblocks = len(allblocks) - - blocknum = {} - for block in allblocks: - blocknum[block] = len(blocknum)+1 - - yield " goto = %s # startblock" % self.mklabel(blocknum[start]) - yield " while True:" - - def render_block(block): - catch_exception = block.exitswitch == Constant(last_exception) - regular_op = len(block.operations) - catch_exception - # render all but maybe the last op - for op in block.operations[:regular_op]: - for line in self.oper(op, localscope).split("\n"): - yield "%s" % line - # render the last op if it is exception handled - for op in block.operations[regular_op:]: - yield "try:" - for line in self.oper(op, localscope).split("\n"): - yield " %s" % line - - if len(block.exits) == 0: - if len(block.inputargs) == 2: # exc_cls, exc_value - # exceptional return block - exc_cls = self.expr(block.inputargs[0], localscope) - exc_val = self.expr(block.inputargs[1], localscope) - yield "raise %s(%s, %s)" % (self.nameof(OperationError), - exc_cls, exc_val) - else: - # regular return block - retval = self.expr(block.inputargs[0], localscope) - yield "return %s" % retval - return - elif block.exitswitch is None: - # single-exit block - assert len(block.exits) == 1 - for op in self.gen_link(block.exits[0], localscope, blocknum, block): - yield "%s" % op - elif catch_exception: - # block catching the exceptions raised by its last operation - # we handle the non-exceptional case first - link = block.exits[0] - assert link.exitcase is None - for op in self.gen_link(link, localscope, blocknum, block): - yield " %s" % op - # we must catch the exception raised by the last operation, - # which goes to the last err%d_%d label written above. - # Since we only have OperationError, we need to select: - yield "except %s, e:" % (self.nameof(OperationError),) - yield " e.w_type, e.w_value, _ign = space.unpacktuple(" - yield " space.normalize_exception(e.w_type, e.w_value, space.w_None), 3)" - q = "if" - for link in block.exits[1:]: - assert issubclass(link.exitcase, Exception) - # Exeption classes come unwrapped in link.exitcase - yield " %s space.is_true(space.issubtype(e.w_type, %s)):" % (q, - self.nameof(link.exitcase)) - q = "elif" - for op in self.gen_link(link, localscope, blocknum, block, { - Constant(last_exception): 'e.w_type', - Constant(last_exc_value): 'e.w_value'}): - yield " %s" % op - yield " else:raise # unhandled case, should not happen" - else: - # block ending in a switch on a value - exits = list(block.exits) - if len(exits) == 2 and ( - exits[0].exitcase is False and exits[1].exitcase is True): - # order these guys like Python does - exits.reverse() - q = "if" - for link in exits[:-1]: - yield "%s %s == %s:" % (q, self.expr(block.exitswitch, - localscope), - link.exitcase) - for op in self.gen_link(link, localscope, blocknum, block): - yield " %s" % op - q = "elif" - link = exits[-1] - yield "else:" - yield " assert %s == %s" % (self.expr(block.exitswitch, - localscope), - link.exitcase) - for op in self.gen_link(exits[-1], localscope, blocknum, block): - yield " %s" % op - - cmpop = ('==', 'is') [self.specialize_goto] - for block in allblocks: - blockno = blocknum[block] - yield "" - yield " if goto %s %s:" % (cmpop, self.mklabel(blockno)) - for line in render_block(block): - yield " %s" % line - -# ____________________________________________________________ - - RPY_HEADER = '''#!/bin/env python -# -*- coding: LATIN-1 -*-''' - - RPY_SEP = "#*************************************************************" - - RPY_INIT_HEADER = RPY_SEP + ''' - -def init%(modname)s(space): - """NOT_RPYTHON""" -''' - - RPY_INIT_FOOTER = ''' -# entry point: %(entrypointname)s, %(entrypoint)s -if __name__ == "__main__": - from pypy.objspace.std import StdObjSpace - from pypy.objspace.std.model import UnwrapError - space = StdObjSpace() - init%(modname)s(space) - ret = space.call(%(entrypoint)s, space.newtuple([])) - try: - print space.unwrap(ret) - except UnwrapError: - print "cannot unwrap, here the wrapped result:" - print ret -''' - -# _____________________________________________________________________ - -## this should go into some test file - -def somefunc(arg): - pass - -# XXX problem with local functions: -def randint(low, high, seed = 1234567): # really not a real random - return (seed % (high-low)) + low - -def small_loop(): - ''' this is a test for small loops. - How would we generate small blocks which call - each other? Hey, and """ is a doc string test """ - ''' - #from random import randint - # does not work. flowspace really complains on random. - # XXX we also seem to have problems with local functions - #def randint(low, high, seed = 1234567): # really not a real random - # return (seed % (high-low)) + low - - for i in range(10000): - r = randint(0, 10000) - if r > 9000: - return r - -def f(a,b): -## print "start" - a = [] - a.append(3) - for i in range(3): - pass#print i - if a > b: - try: - if b == 123: - raise ValueError - elif b == 321: - raise IndexError - return 123 - except ValueError: - raise TypeError - else: - dummy = somefunc(23) - return 42 - -class TestClass:pass - -def ff(a, b, c=3,*rest): - """ this is - some - docstring -""" - try: - try: - if rest: - raise SystemError, 42 - return a+b - finally: - a = 7 - if rest: - return len(rest),c - except TypeError: - print "eek" - -glob = 100 -def fff(): - global glob - return 42+glob - -def app_mod__String_ANY(format, values): - import _formatting - if isinstance(values, tuple): - return _formatting.format(format, values, None) - else: - if hasattr(values, 'keys'): - return _formatting.format(format, (values,), values) - else: - return _formatting.format(format, (values,), None) - -def app_str_decode__String_ANY_ANY(str, encoding=None, errors=None): - if encoding is None and errors is None: - return unicode(str) - elif errors is None: - return unicode(str, encoding) - else: - return unicode(str, encoding, errors) - - -def test_md5(): - #import md5 - # how do I avoid the builtin module? - from pypy.appspace import md5 - digest = md5.new("hello").hexdigest() - return digest - -def test_mod(): - return app_mod__String_ANY("-%s-", ["hallo"]) - -def test_join(): - return " ".join(["hi", "there"]) - -# cannot nest local classes, yet -# this appears to be a problem in flow space. -class AnIterClass(object): - def __init__(self): - self.lis = [c for c in "test"] - def next(self): - if self.lis: - return self.lis.pop() - raise StopIteration - def __iter__(self): - return self - -def test_iter(): - res = [] - for i in "hallo": - res.append(i) - for i in AnIterClass(): - res.append(i) - return res - -def test_loop(): - res = [] - i = 0 - while 1: - i += 1 - res.append(i) - if i == 42: - break - res.append(-i) - return res - -def test_exc(a=5): - try: - b = 0 - return a / b - except ZeroDivisionError: - return 42 - -def test_strutil(): - from pypy.objspace.std import strutil - return (strutil.string_to_int("42"), - strutil.string_to_long("12345678901234567890")) - -def test_struct(): - from pypy.appspace import struct - import struct as stru - res1 = stru.pack('f',1.23), struct.pack('f',1.23) - res2 = struct.unpack('f', struct.pack('f',1.23)) - return res1, res2 - -def exceptions_helper(): - import pypy - prefix = os.path.dirname(pypy.__file__) - libdir = os.path.join(prefix, "lib") - fname = "_exceptions.py" - fpath = os.path.join(libdir, fname) - dic = {"__name__": "exceptions"} - execfile(fpath, dic) - del dic["__builtins__"] - def test_exceptions(): - """ enumerate all exceptions """ - return dic.keys() - #return [thing for thing in _exceptions.__dict__.values()] - return dic, test_exceptions - -def make_class_instance_helper(): - import pypy - prefix = os.path.dirname(pypy.__file__) - libdir = os.path.join(prefix, "lib") - hold = sys.path - sys.path.insert(0, libdir) - import _classobj - sys.path = hold - def make_class_instance(): - return _classobj.classobj, _classobj.instance - return None, make_class_instance - -def test_complex(): - return 1j - -def test_NoneType(): - return types.NoneType - -def all_entries(): - res = [func() for func in entrypoints[:-1]] - return res - -entrypoints = (small_loop, - lambda: f(2, 3), - lambda: ff(2, 3, 5), - fff, - lambda: app_str_decode__String_ANY_ANY("hugo"), - test_mod, - test_md5, - test_join, - test_iter, - test_loop, - test_exc, - test_strutil, - test_struct, - exceptions_helper, - make_class_instance_helper, - test_complex, - test_NoneType, - all_entries) -entrypoint = entrypoints[5] - -if False and __name__ == "__main__": - # XXX TODO: - # extract certain stuff like a general module maker - # and put this into tools/compile_exceptions, maybe??? - dic, entrypoint = exceptions_helper() - t = Translator(None, verbose=False, simplifying=True, - builtins_can_raise_exceptions=True, - do_imports_immediately=False) - gen = GenRpy(t, entrypoint) - gen.moddict = dic - gen.gen_source('/tmp/look.py') - - _oldcodetogointotestcases = ''' - import os, sys - from pypy.interpreter import autopath - srcdir = os.path.dirname(autopath.pypydir) - appdir = os.path.join(autopath.pypydir, 'appspace') - - if appdir not in sys.path: - sys.path.insert(0, appdir) - - dic = None - if entrypoint.__name__.endswith("_helper"): - dic, entrypoint = entrypoint() - t = Translator(entrypoint, verbose=False, simplifying=True, builtins_can_raise_exceptions=True) - gen = GenRpy(t) - gen.use_fast_call = True - if dic: gen.moddict = dic - import pypy.appspace.generated as tmp - pth = os.path.dirname(tmp.__file__) - ftmpname = "/tmp/look.py" - fname = os.path.join(pth, gen.modname+".py") - gen.gen_source(fname, ftmpname) - ''' - -def crazy_test(): - """ this thingy is generating the whole interpreter in itself""" - dic = {"__builtins__": __builtins__, "__name__": "__main__"} - execfile("/tmp/look.py", dic) - - entrypoint = dic[gen.entrypoint] - def test(): - entrypoint() - - t = Translator(test, verbose=False, simplifying=True, - builtins_can_raise_exceptions=True, - do_imports_immediately=False) - gen2 = GenRpy(t) - gen2.gen_source("/tmp/look2.py") - - -import py.code -import cStringIO as StringIO - -class memfile(object): - _storage = {} - def __init__(self, name, mode="r"): - if mode == "w": - self._storage[name] = StringIO.StringIO() - elif mode == "r": - try: - data = self._storage[name].getvalue() - except IndexError: - data = file(name).read() - self._storage[name] = StringIO.StringIO(data) - else: - raise ValueError, "mode %s not supported" % mode - self._file = self._storage[name] - def __getattr__(self, name): - return getattr(self._file, name) - def close(self): - pass - -def translate_as_module(sourcetext, filename=None, modname="app2interpexec", - do_imports=False, tmpname=None): - """ compile sourcetext as a module, translating to interp level. - The result is the init function that creates the wrapped module dict. - This init function needs a space as argument. - tmpname can be passed for debugging purposes. - - Example: - - initfunc = translate_as_module(text) - from pypy.objspace.std import Space - space = Space() - dic = ini(space) - # and now use the members of the dict - """ - # create something like a module - # the following code will be removed when app_descriptor works - ##print 80*"T", sourcetext - if "class property" in sourcetext: - # debugging app_descriptor.py - tmpname = "/tmp/look.py" - if filename is None: - code = py.code.Source(sourcetext).compile() - else: - code = compile(sourcetext, filename, 'exec') - dic = {'__name__': modname} - exec code in dic - del dic['__builtins__'] - entrypoint = dic - t = Translator(None, verbose=False, simplifying=True, - builtins_can_raise_exceptions=True, - do_imports_immediately=do_imports) - hold = sys.path - sys.path.insert(0, os.path.join(pypy.__path__[0], "lib")) - gen = GenRpy(t, entrypoint, modname, dic) - sys.path = hold - if tmpname: - _file = file - else: - _file = memfile - tmpname = "nada" - out = _file(tmpname, 'w') - gen.f = out - gen.gen_source(tmpname, file=_file) - out.close() - newsrc = _file(tmpname).read() - code = py.code.Source(newsrc).compile() - dic = {'__name__': modname} - exec code in dic - # now we just need to return the init function, - # which then needs to be called with the space to return the dict. - return dic['init%s' % modname] - -#___________________________________________________________________ - -# some testing code - -testcode = """ -def f(a, b): - return a + b - -def g(): - return f(f(1, 2), f(4, 8)) -""" - -if __name__ == '__main__': - res = translate_as_module(testcode, tmpname='/tmp/look.py') Deleted: /pypy/dist/pypy/translator/test/test_annrpython.py ============================================================================== --- /pypy/dist/pypy/translator/test/test_annrpython.py Thu Apr 7 02:01:08 2005 +++ (empty file) @@ -1,691 +0,0 @@ - -import autopath -import py.test -from pypy.tool.udir import udir - -from pypy.translator.annrpython import RPythonAnnotator, annmodel -from pypy.translator.translator import Translator -from pypy.objspace.flow.model import * - -from pypy.translator.test import snippet - -class TestAnnonateTestCase: - objspacename = 'flow' - - def make_fun(self, func): - import inspect - try: - func = func.im_func - except AttributeError: - pass - name = func.func_name - funcgraph = self.space.build_flow(func) - funcgraph.source = inspect.getsource(func) - return funcgraph - - def reallyshow(self, graph): - import os - from pypy.translator.tool.make_dot import make_dot - dest = make_dot('b', graph) - os.system('gv %s' % str(dest)) - - def test_simple_func(self): - """ - one test source: - def f(x): - return x+1 - """ - x = Variable("x") - result = Variable("result") - op = SpaceOperation("add", [x, Constant(1)], result) - block = Block([x]) - fun = FunctionGraph("f", block) - block.operations.append(op) - block.closeblock(Link([result], fun.returnblock)) - a = RPythonAnnotator() - a.build_types(fun, [int]) - assert a.gettype(fun.getreturnvar()) == int - - def test_while(self): - """ - one test source: - def f(i): - while i > 0: - i = i - 1 - return i - """ - i = Variable("i") - conditionres = Variable("conditionres") - conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) - decop = SpaceOperation("add", [i, Constant(-1)], i) - headerblock = Block([i]) - whileblock = Block([i]) - - fun = FunctionGraph("f", headerblock) - headerblock.operations.append(conditionop) - headerblock.exitswitch = conditionres - headerblock.closeblock(Link([i], fun.returnblock, False), - Link([i], whileblock, True)) - whileblock.operations.append(decop) - whileblock.closeblock(Link([i], headerblock)) - - a = RPythonAnnotator() - a.build_types(fun, [int]) - assert a.gettype(fun.getreturnvar()) == int - - def test_while_sum(self): - """ - one test source: - def f(i): - sum = 0 - while i > 0: - sum = sum + i - i = i - 1 - return sum - """ - i = Variable("i") - sum = Variable("sum") - - conditionres = Variable("conditionres") - conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) - decop = SpaceOperation("add", [i, Constant(-1)], i) - addop = SpaceOperation("add", [i, sum], sum) - startblock = Block([i]) - headerblock = Block([i, sum]) - whileblock = Block([i, sum]) - - fun = FunctionGraph("f", startblock) - startblock.closeblock(Link([i, Constant(0)], headerblock)) - headerblock.operations.append(conditionop) - headerblock.exitswitch = conditionres - headerblock.closeblock(Link([sum], fun.returnblock, False), - Link([i, sum], whileblock, True)) - whileblock.operations.append(addop) - whileblock.operations.append(decop) - whileblock.closeblock(Link([i, sum], headerblock)) - - a = RPythonAnnotator() - a.build_types(fun, [int]) - assert a.gettype(fun.getreturnvar()) == int - - def test_f_calls_g(self): - a = RPythonAnnotator() - s = a.build_types(f_calls_g, [int]) - # result should be an integer - assert s.knowntype == int - - def test_lists(self): - a = RPythonAnnotator() - end_cell = a.build_types(snippet.poor_man_rev_range, [int]) - # result should be a list of integers - assert end_cell.knowntype == list - assert end_cell.s_item.knowntype == int - - def test_factorial(self): - a = RPythonAnnotator() - s = a.build_types(snippet.factorial, [int]) - # result should be an integer - assert s.knowntype == int - - def test_factorial2(self): - a = RPythonAnnotator() - s = a.build_types(snippet.factorial2, [int]) - # result should be an integer - assert s.knowntype == int - - def test_build_instance(self): - a = RPythonAnnotator() - s = a.build_types(snippet.build_instance, []) - # result should be a snippet.C instance - assert s.knowntype == snippet.C - - def test_set_attr(self): - a = RPythonAnnotator() - s = a.build_types(snippet.set_attr, []) - # result should be an integer - assert s.knowntype == int - - def test_merge_setattr(self): - a = RPythonAnnotator() - s = a.build_types(snippet.merge_setattr, [int]) - # result should be an integer - assert s.knowntype == int - - def test_inheritance1(self): - a = RPythonAnnotator() - s = a.build_types(snippet.inheritance1, []) - # result should be exactly: - assert s == annmodel.SomeTuple([ - a.bookkeeper.immutablevalue(()), - annmodel.SomeInteger() - ]) - - def test_inheritance2(self): - a = RPythonAnnotator() - s = a.build_types(snippet._inheritance_nonrunnable, []) - # result should be exactly: - assert s == annmodel.SomeTuple([ - annmodel.SomeInteger(), - annmodel.SomeObject() - ]) - - def test_poor_man_range(self): - a = RPythonAnnotator() - s = a.build_types(snippet.poor_man_range, [int]) - # result should be a list of integers - assert s.knowntype == list - assert s.s_item.knowntype == int - - def test_methodcall1(self): - a = RPythonAnnotator() - s = a.build_types(snippet._methodcall1, [int]) - # result should be a tuple of (C, positive_int) - assert s.knowntype == tuple - assert len(s.items) == 2 - assert s.items[0].knowntype == snippet.C - assert s.items[1].knowntype == int - assert s.items[1].nonneg == True - - def test_classes_methodcall1(self): - a = RPythonAnnotator() - a.build_types(snippet._methodcall1, [int]) - # the user classes should have the following attributes: - classes = a.bookkeeper.userclasses - assert classes[snippet.F].attrs.keys() == ['m'] - assert classes[snippet.G].attrs.keys() == ['m2'] - assert classes[snippet.H].attrs.keys() == ['attr'] - assert classes[snippet.H].about_attribute('attr') == ( - a.bookkeeper.immutablevalue(1)) - - def DISABLED_test_knownkeysdict(self): - # disabled, SomeDict() is now a general {s_key: s_value} dict - a = RPythonAnnotator() - s = a.build_types(snippet.knownkeysdict, [int]) - # result should be an integer - assert s.knowntype == int - - def test_generaldict(self): - a = RPythonAnnotator() - s = a.build_types(snippet.generaldict, [str, int, str, int]) - # result should be an integer - assert s.knowntype == int - - def test_somebug1(self): - a = RPythonAnnotator() - s = a.build_types(snippet._somebug1, [int]) - # result should be a built-in method - assert isinstance(s, annmodel.SomeBuiltin) - - def test_with_init(self): - a = RPythonAnnotator() - s = a.build_types(snippet.with_init, [int]) - # result should be an integer - assert s.knowntype == int - - def test_with_more_init(self): - a = RPythonAnnotator() - s = a.build_types(snippet.with_more_init, [int, bool]) - # the user classes should have the following attributes: - classes = a.bookkeeper.userclasses - # XXX on which class should the attribute 'a' appear? We only - # ever flow WithInit.__init__ with a self which is an instance - # of WithMoreInit, so currently it appears on WithMoreInit. - assert classes[snippet.WithMoreInit].about_attribute('a') == ( - annmodel.SomeInteger()) - assert classes[snippet.WithMoreInit].about_attribute('b') == ( - annmodel.SomeBool()) - - def test_global_instance(self): - a = RPythonAnnotator() - s = a.build_types(snippet.global_instance, []) - # currently this returns the constant 42. - # XXX not sure this is the best behavior... - assert s == a.bookkeeper.immutablevalue(42) - - def test_call_five(self): - a = RPythonAnnotator() - s = a.build_types(snippet.call_five, []) - # returns should be a list of constants (= 5) - assert isinstance(s, annmodel.SomeList) - assert s.s_item == a.bookkeeper.immutablevalue(5) - - def test_call_five_six(self): - a = RPythonAnnotator() - s = a.build_types(snippet.call_five_six, []) - # returns should be a list of positive integers - assert isinstance(s, annmodel.SomeList) - assert s.s_item == annmodel.SomeInteger(nonneg=True) - - def test_constant_result(self): - a = RPythonAnnotator() - s = a.build_types(snippet.constant_result, []) - #a.translator.simplify() - # must return "yadda" - assert s == a.bookkeeper.immutablevalue("yadda") - keys = a.translator.flowgraphs.keys() - keys.sort() - expected = [snippet.constant_result, - snippet.forty_two, - # and not snippet.never_called - ] - expected.sort() - assert keys == expected - a.simplify() - #a.translator.view() - - def test_call_pbc(self): - a = RPythonAnnotator() - s = a.build_types(snippet.call_cpbc, []) - assert s == a.bookkeeper.immutablevalue(42) - - def test_flow_type_info(self): - a = RPythonAnnotator() - s = a.build_types(snippet.flow_type_info, [object]) - a.translator.simplify() - a.simplify() - #a.translator.view() - assert s.knowntype == int - - def test_flow_type_info_2(self): - a = RPythonAnnotator() - s = a.build_types(snippet.flow_type_info, - [annmodel.SomeInteger(nonneg=True)]) - # this checks that isinstance(i, int) didn't loose the - # actually more precise information that i is non-negative - assert s == annmodel.SomeInteger(nonneg=True) - - def test_flow_usertype_info(self): - a = RPythonAnnotator() - s = a.build_types(snippet.flow_usertype_info, [object]) - #a.translator.view() - assert s.knowntype == snippet.WithInit - - def test_flow_usertype_info2(self): - a = RPythonAnnotator() - s = a.build_types(snippet.flow_usertype_info, [snippet.WithMoreInit]) - #a.translator.view() - assert s.knowntype == snippet.WithMoreInit - - def test_flow_identity_info(self): - a = RPythonAnnotator() - s = a.build_types(snippet.flow_identity_info, [object, object]) - a.translator.simplify() - a.simplify() - #a.translator.view() - assert s == a.bookkeeper.immutablevalue((None, None)) - - def test_mergefunctions(self): - a = RPythonAnnotator() - s = a.build_types(snippet.mergefunctions, [int]) - # the test is mostly that the above line hasn't blown up - # but let's at least check *something* - assert isinstance(s, annmodel.SomePBC) - - def test_func_calls_func_which_just_raises(self): - a = RPythonAnnotator() - s = a.build_types(snippet.funccallsex, []) - # the test is mostly that the above line hasn't blown up - # but let's at least check *something* - #self.assert_(isinstance(s, SomeCallable)) - - def test_tuple_unpack_from_const_tuple_with_different_types(self): - a = RPythonAnnotator() - s = a.build_types(snippet.func_arg_unpack, []) - assert isinstance(s, annmodel.SomeInteger) - assert s.const == 3 - - def test_pbc_attr_preserved_on_instance(self): - a = RPythonAnnotator() - s = a.build_types(snippet.preserve_pbc_attr_on_instance, [bool]) - #a.simplify() - #a.translator.view() - assert s == annmodel.SomeInteger(nonneg=True) - #self.assertEquals(s.__class__, annmodel.SomeInteger) - - def test_is_and_knowntype_data(self): - a = RPythonAnnotator() - s = a.build_types(snippet.is_and_knowntype, [bool]) - #a.simplify() - #a.translator.view() - assert s == a.bookkeeper.immutablevalue(None) - - def test_isinstance_and_knowntype_data(self): - a = RPythonAnnotator() - x = annmodel.SomePBC({snippet.apbc: True}) - s = a.build_types(snippet.isinstance_and_knowntype, [x]) - #a.simplify() - #a.translator.view() - assert s == x - - def test_somepbc_simplify(self): - a = RPythonAnnotator() - # this example used to trigger an AssertionError - a.build_types(snippet.somepbc_simplify, []) - - def test_builtin_methods(self): - a = RPythonAnnotator() - iv = a.bookkeeper.immutablevalue - # this checks that some built-in methods are really supported by - # the annotator (it doesn't check that they operate property, though) - for example, methname, s_example in [ - ('', 'join', annmodel.SomeString()), - ([], 'append', annmodel.SomeList({})), - ([], 'extend', annmodel.SomeList({})), - ([], 'reverse', annmodel.SomeList({})), - ([], 'insert', annmodel.SomeList({})), - ([], 'pop', annmodel.SomeList({})), - ]: - constmeth = getattr(example, methname) - s_constmeth = iv(constmeth) - assert isinstance(s_constmeth, annmodel.SomeBuiltin) - s_meth = s_example.getattr(iv(methname)) - assert isinstance(s_constmeth, annmodel.SomeBuiltin) - - def test_simple_slicing0(self): - a = RPythonAnnotator() - s = a.build_types(snippet.simple_slice, [list]) - g = a.translator.getflowgraph(snippet.simple_slice) - for thing in flatten(g): - if isinstance(thing, Block): - for op in thing.operations: - if op.opname == "newslice": - assert isinstance(a.binding(op.result), - annmodel.SomeSlice) - - def test_simple_slicing(self): - a = RPythonAnnotator() - s = a.build_types(snippet.simple_slice, [list]) - assert isinstance(s, annmodel.SomeList) - - def test_simple_iter_list(self): - a = RPythonAnnotator() - s = a.build_types(snippet.simple_iter, [list]) - assert isinstance(s, annmodel.SomeIterator) - - def test_simple_iter_dict(self): - a = RPythonAnnotator() - t = annmodel.SomeDict({}, annmodel.SomeInteger(), annmodel.SomeInteger()) - s = a.build_types(snippet.simple_iter, [t]) - assert isinstance(s, annmodel.SomeIterator) - - def test_simple_zip(self): - a = RPythonAnnotator() - x = annmodel.SomeList({}, annmodel.SomeInteger()) - y = annmodel.SomeList({}, annmodel.SomeString()) - s = a.build_types(snippet.simple_zip, [x,y]) - assert s.knowntype == list - assert s.s_item.knowntype == tuple - assert s.s_item.items[0].knowntype == int - assert s.s_item.items[1].knowntype == str - - def test_dict_copy(self): - a = RPythonAnnotator() - t = annmodel.SomeDict({}, annmodel.SomeInteger(), annmodel.SomeInteger()) - s = a.build_types(snippet.dict_copy, [t]) - assert isinstance(s, annmodel.SomeDict) - assert isinstance(s.s_key, annmodel.SomeInteger) - assert isinstance(s.s_value, annmodel.SomeInteger) - - def test_dict_update(self): - a = RPythonAnnotator() - s = a.build_types(snippet.dict_update, [int]) - assert isinstance(s, annmodel.SomeDict) - assert isinstance(s.s_key, annmodel.SomeInteger) - assert isinstance(s.s_value, annmodel.SomeInteger) - - a = RPythonAnnotator() - s = a.build_types(snippet.dict_update, [str]) - assert isinstance(s, annmodel.SomeDict) - assert not isinstance(s.s_key, annmodel.SomeString) - assert not isinstance(s.s_value, annmodel.SomeString) - - def test_dict_keys(self): - a = RPythonAnnotator() - s = a.build_types(snippet.dict_keys, []) - assert isinstance(s, annmodel.SomeList) - assert isinstance(s.s_item, annmodel.SomeString) - - def test_dict_keys2(self): - a = RPythonAnnotator() - s = a.build_types(snippet.dict_keys2, []) - assert isinstance(s, annmodel.SomeList) - assert not isinstance(s.s_item, annmodel.SomeString) - - def test_dict_values(self): - a = RPythonAnnotator() - s = a.build_types(snippet.dict_values, []) - assert isinstance(s, annmodel.SomeList) - assert isinstance(s.s_item, annmodel.SomeString) - - def test_dict_values2(self): - a = RPythonAnnotator() - s = a.build_types(snippet.dict_values2, []) - assert isinstance(s, annmodel.SomeList) - assert not isinstance(s.s_item, annmodel.SomeString) - - def test_dict_items(self): - a = RPythonAnnotator() - s = a.build_types(snippet.dict_items, []) - assert isinstance(s, annmodel.SomeList) - assert isinstance(s.s_item, annmodel.SomeTuple) - s_key, s_value = s.s_item.items - assert isinstance(s_key, annmodel.SomeString) - assert isinstance(s_value, annmodel.SomeInteger) - - def test_exception_deduction(self): - a = RPythonAnnotator() - s = a.build_types(snippet.exception_deduction, []) - assert isinstance(s, annmodel.SomeInstance) - assert s.knowntype is snippet.Exc - - def test_exception_deduction_we_are_dumb(self): - a = RPythonAnnotator() - s = a.build_types(snippet.exception_deduction_we_are_dumb, []) - assert isinstance(s, annmodel.SomeInstance) - assert s.knowntype is snippet.Exc - - def test_nested_exception_deduction(self): - a = RPythonAnnotator() - s = a.build_types(snippet.nested_exception_deduction, []) - assert isinstance(s, annmodel.SomeTuple) - assert isinstance(s.items[0], annmodel.SomeInstance) - assert isinstance(s.items[1], annmodel.SomeInstance) - assert s.items[0].knowntype is snippet.Exc - assert s.items[1].knowntype is snippet.Exc2 - - def test_exc_deduction_our_exc_plus_others(self): - a = RPythonAnnotator() - s = a.build_types(snippet.exc_deduction_our_exc_plus_others, []) - assert isinstance(s, annmodel.SomeInteger) - - def test_exc_deduction_our_excs_plus_others(self): - a = RPythonAnnotator() - s = a.build_types(snippet.exc_deduction_our_excs_plus_others, []) - assert isinstance(s, annmodel.SomeInteger) - - def test_slice_union(self): - a = RPythonAnnotator() - s = a.build_types(snippet.slice_union, [int]) - assert isinstance(s, annmodel.SomeSlice) - - def test_bltin_code_frame_confusion(self): - a = RPythonAnnotator() - a.build_types(snippet.bltin_code_frame_confusion,[]) - f_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_f) - g_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_g) - # annotator confused by original bltin code/frame setup, we just get SomeObject here - assert a.binding(f_flowgraph.getreturnvar()).__class__ is annmodel.SomeObject - assert a.binding(g_flowgraph.getreturnvar()).__class__ is annmodel.SomeObject - - def test_bltin_code_frame_reorg(self): - a = RPythonAnnotator() - a.build_types(snippet.bltin_code_frame_reorg,[]) - f_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_f) - g_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_g) - assert isinstance(a.binding(f_flowgraph.getreturnvar()), - annmodel.SomeInteger) - assert isinstance(a.binding(g_flowgraph.getreturnvar()), - annmodel.SomeString) - - def test_propagation_of_fresh_instances_through_attrs(self): - a = RPythonAnnotator() - s = a.build_types(snippet.propagation_of_fresh_instances_through_attrs, [int]) - assert s is not None - - def test_propagation_of_fresh_instances_through_attrs_rec_0(self): - a = RPythonAnnotator() - s = a.build_types(snippet.make_r, [int]) - assert s.knowntype == snippet.R - Rdef = a.getuserclasses()[snippet.R] - assert Rdef.attrs['r'].s_value.knowntype == snippet.R - assert Rdef.attrs['n'].s_value.knowntype == int - assert Rdef.attrs['m'].s_value.knowntype == int - - - def test_propagation_of_fresh_instances_through_attrs_rec_eo(self): - a = RPythonAnnotator() - s = a.build_types(snippet.make_eo, [int]) - assert s.knowntype == snippet.B - Even_def = a.getuserclasses()[snippet.Even] - Odd_def = a.getuserclasses()[snippet.Odd] - assert Even_def.attrs['x'].s_value.s_item.knowntype == snippet.Odd - assert Even_def.attrs['y'].s_value.s_item.knowntype == snippet.Even - assert Odd_def.attrs['x'].s_value.s_item.knowntype == snippet.Even - assert Odd_def.attrs['y'].s_value.s_item.knowntype == snippet.Odd - - def test_flow_rev_numbers(self): - a = RPythonAnnotator() - s = a.build_types(snippet.flow_rev_numbers, []) - assert s.knowntype == int - assert not s.is_constant() # ! - - def test_methodcall_is_precise(self): - a = RPythonAnnotator() - s = a.build_types(snippet.methodcall_is_precise, []) - classes = a.bookkeeper.userclasses - assert 'x' not in classes[snippet.CBase].attrs - assert (classes[snippet.CSub1].attrs['x'].s_value == - a.bookkeeper.immutablevalue(42)) - assert (classes[snippet.CSub2].attrs['x'].s_value == - a.bookkeeper.immutablevalue('world')) - assert s == a.bookkeeper.immutablevalue(42) - - def test_class_spec(self): - a = RPythonAnnotator() - s = a.build_types(snippet.class_spec, []) - assert s.items[0].knowntype == int - assert s.items[1].knowntype == str - - def test_exception_deduction_with_raise1(self): - a = RPythonAnnotator() - s = a.build_types(snippet.exception_deduction_with_raise1, [bool]) - assert isinstance(s, annmodel.SomeInstance) - assert s.knowntype is snippet.Exc - - - def test_exception_deduction_with_raise2(self): - a = RPythonAnnotator() - s = a.build_types(snippet.exception_deduction_with_raise2, [bool]) - assert isinstance(s, annmodel.SomeInstance) - assert s.knowntype is snippet.Exc - - def test_exception_deduction_with_raise3(self): - a = RPythonAnnotator() - s = a.build_types(snippet.exception_deduction_with_raise3, [bool]) - assert isinstance(s, annmodel.SomeInstance) - assert s.knowntype is snippet.Exc - - def test_type_is(self): - class C(object): - pass - def f(x): - if type(x) is C: - return x - raise Exception - a = RPythonAnnotator() - s = a.build_types(f, [object]) - assert s.knowntype is C - - def test_implicit_exc(self): - def f(l): - try: - l[0] - except (KeyError, IndexError),e: - return e - return None - - a = RPythonAnnotator() - s = a.build_types(f, [list]) - assert s.knowntype is LookupError - - def test_overrides(self): - import sys - excs = [] - def record_exc(e): - """NOT_RPYTHON""" - excs.append(sys.exc_info) - def g(): - pass - def f(): - try: - g() - except Exception, e: - record_exc(e) - def ann_record_exc(s_e): - return a.bookkeeper.immutablevalue(None) - a = RPythonAnnotator(overrides={record_exc: ann_record_exc}) - s = a.build_types(f, []) - assert s.const is None - - def test_freeze_protocol(self): - class Stuff: - def __init__(self, flag): - self.called = False - self.flag = flag - def _freeze_(self): - self.called = True - return self.flag - myobj = Stuff(True) - a = RPythonAnnotator() - s = a.build_types(lambda: myobj, []) - assert myobj.called - assert s == annmodel.SomePBC({myobj: True}) - myobj = Stuff(False) - a = RPythonAnnotator() - s = a.build_types(lambda: myobj, []) - assert myobj.called - assert s == annmodel.SomeInstance(a.bookkeeper.getclassdef(Stuff)) - - def test_circular_mutable_getattr(self): - class C: - pass - c = C() - c.x = c - def f(): - return c.x - a = RPythonAnnotator() - s = a.build_types(f, []) - assert s.knowntype == C - - def DONT_YET_test_circular_list_type(self): - def f(n): - lst = [] - for i in range(n): - lst = [lst] - return lst - a = RPythonAnnotator() - s = a.build_types(f, [int]) - assert isinstance(s, annmodel.SomeList) - assert s.s_item == s - -def g(n): - return [0,1,2,n] - -def f_calls_g(n): - total = 0 - lst = g(n) - i = 0 - while i < len(lst): - total += i - i += 1 - return total From arigo at codespeak.net Thu Apr 28 11:35:23 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 28 Apr 2005 11:35:23 +0200 (CEST) Subject: [pypy-svn] r11562 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050428093523.3FA9227BBF@code1.codespeak.net> Author: arigo Date: Thu Apr 28 11:35:20 2005 New Revision: 11562 Added: pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.out pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt pypy/dist/lib-python-2.3.4/test/result/test___all__.txt pypy/dist/lib-python-2.3.4/test/result/test___future__.txt pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt pypy/dist/lib-python-2.3.4/test/result/test_al.txt pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt pypy/dist/lib-python-2.3.4/test/result/test_array.txt pypy/dist/lib-python-2.3.4/test/result/test_asynchat.out pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt pypy/dist/lib-python-2.3.4/test/result/test_augassign.out pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt pypy/dist/lib-python-2.3.4/test/result/test_base64.txt pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt pypy/dist/lib-python-2.3.4/test/result/test_binop.txt pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt pypy/dist/lib-python-2.3.4/test/result/test_bool.txt pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt pypy/dist/lib-python-2.3.4/test/result/test_call.txt pypy/dist/lib-python-2.3.4/test/result/test_capi.txt pypy/dist/lib-python-2.3.4/test/result/test_cd.txt pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt pypy/dist/lib-python-2.3.4/test/result/test_cgi.out pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt pypy/dist/lib-python-2.3.4/test/result/test_cl.txt pypy/dist/lib-python-2.3.4/test/result/test_class.out pypy/dist/lib-python-2.3.4/test/result/test_class.txt pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt pypy/dist/lib-python-2.3.4/test/result/test_coercion.out pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt pypy/dist/lib-python-2.3.4/test/result/test_commands.txt pypy/dist/lib-python-2.3.4/test/result/test_compare.out pypy/dist/lib-python-2.3.4/test/result/test_compare.txt pypy/dist/lib-python-2.3.4/test/result/test_compile.txt pypy/dist/lib-python-2.3.4/test/result/test_complex.txt pypy/dist/lib-python-2.3.4/test/result/test_contains.txt pypy/dist/lib-python-2.3.4/test/result/test_cookie.out pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt pypy/dist/lib-python-2.3.4/test/result/test_copy.txt pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt pypy/dist/lib-python-2.3.4/test/result/test_csv.txt pypy/dist/lib-python-2.3.4/test/result/test_curses.txt pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt pypy/dist/lib-python-2.3.4/test/result/test_descr.txt pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt pypy/dist/lib-python-2.3.4/test/result/test_dis.txt pypy/dist/lib-python-2.3.4/test/result/test_dl.txt pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt pypy/dist/lib-python-2.3.4/test/result/test_email.txt pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt pypy/dist/lib-python-2.3.4/test/result/test_eof.txt pypy/dist/lib-python-2.3.4/test/result/test_errno.txt pypy/dist/lib-python-2.3.4/test/result/test_exceptions.out pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt pypy/dist/lib-python-2.3.4/test/result/test_extcall.out pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt pypy/dist/lib-python-2.3.4/test/result/test_file.txt pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt pypy/dist/lib-python-2.3.4/test/result/test_format.txt pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt pypy/dist/lib-python-2.3.4/test/result/test_frozen.out pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt pypy/dist/lib-python-2.3.4/test/result/test_future.out pypy/dist/lib-python-2.3.4/test/result/test_future.txt pypy/dist/lib-python-2.3.4/test/result/test_future1.txt pypy/dist/lib-python-2.3.4/test/result/test_future2.txt pypy/dist/lib-python-2.3.4/test/result/test_future3.txt pypy/dist/lib-python-2.3.4/test/result/test_gc.txt pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt pypy/dist/lib-python-2.3.4/test/result/test_generators.txt pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt pypy/dist/lib-python-2.3.4/test/result/test_gl.txt pypy/dist/lib-python-2.3.4/test/result/test_glob.txt pypy/dist/lib-python-2.3.4/test/result/test_global.out pypy/dist/lib-python-2.3.4/test/result/test_global.txt pypy/dist/lib-python-2.3.4/test/result/test_grammar.out pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt pypy/dist/lib-python-2.3.4/test/result/test_grp.txt pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt pypy/dist/lib-python-2.3.4/test/result/test_hash.txt pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt pypy/dist/lib-python-2.3.4/test/result/test_httplib.out pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt pypy/dist/lib-python-2.3.4/test/result/test_imp.txt pypy/dist/lib-python-2.3.4/test/result/test_import.txt pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt pypy/dist/lib-python-2.3.4/test/result/test_iter.txt pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.out pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/test_locale.txt pypy/dist/lib-python-2.3.4/test/result/test_logging.out pypy/dist/lib-python-2.3.4/test/result/test_logging.txt pypy/dist/lib-python-2.3.4/test/result/test_long.txt pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt pypy/dist/lib-python-2.3.4/test/result/test_longexp.out pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt pypy/dist/lib-python-2.3.4/test/result/test_math.out pypy/dist/lib-python-2.3.4/test/result/test_math.txt pypy/dist/lib-python-2.3.4/test/result/test_md5.out pypy/dist/lib-python-2.3.4/test/result/test_md5.txt pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt pypy/dist/lib-python-2.3.4/test/result/test_mmap.out pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt pypy/dist/lib-python-2.3.4/test/result/test_module.txt pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt pypy/dist/lib-python-2.3.4/test/result/test_mutants.txt pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt pypy/dist/lib-python-2.3.4/test/result/test_new.out pypy/dist/lib-python-2.3.4/test/result/test_new.txt pypy/dist/lib-python-2.3.4/test/result/test_nis.out pypy/dist/lib-python-2.3.4/test/result/test_nis.txt pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt pypy/dist/lib-python-2.3.4/test/result/test_opcodes.out pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt pypy/dist/lib-python-2.3.4/test/result/test_openpty.out pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt pypy/dist/lib-python-2.3.4/test/result/test_operations.out pypy/dist/lib-python-2.3.4/test/result/test_operations.txt pypy/dist/lib-python-2.3.4/test/result/test_operator.txt pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt pypy/dist/lib-python-2.3.4/test/result/test_os.txt pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.out pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/test_parser.txt pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt pypy/dist/lib-python-2.3.4/test/result/test_pkg.out pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt pypy/dist/lib-python-2.3.4/test/result/test_poll.out pypy/dist/lib-python-2.3.4/test/result/test_poll.txt pypy/dist/lib-python-2.3.4/test/result/test_popen.out pypy/dist/lib-python-2.3.4/test/result/test_popen.txt pypy/dist/lib-python-2.3.4/test/result/test_popen2.out pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt pypy/dist/lib-python-2.3.4/test/result/test_posix.txt pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt pypy/dist/lib-python-2.3.4/test/result/test_pow.txt pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt pypy/dist/lib-python-2.3.4/test/result/test_profile.out pypy/dist/lib-python-2.3.4/test/result/test_profile.txt pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt pypy/dist/lib-python-2.3.4/test/result/test_pty.out pypy/dist/lib-python-2.3.4/test/result/test_pty.txt pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.out pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt pypy/dist/lib-python-2.3.4/test/result/test_queue.txt pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt pypy/dist/lib-python-2.3.4/test/result/test_random.txt pypy/dist/lib-python-2.3.4/test/result/test_re.txt pypy/dist/lib-python-2.3.4/test/result/test_regex.out pypy/dist/lib-python-2.3.4/test/result/test_regex.txt pypy/dist/lib-python-2.3.4/test/result/test_repr.txt pypy/dist/lib-python-2.3.4/test/result/test_resource.out pypy/dist/lib-python-2.3.4/test/result/test_resource.txt pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.out pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt pypy/dist/lib-python-2.3.4/test/result/test_rotor.out pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt pypy/dist/lib-python-2.3.4/test/result/test_sax.txt pypy/dist/lib-python-2.3.4/test/result/test_scope.out pypy/dist/lib-python-2.3.4/test/result/test_scope.txt pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt pypy/dist/lib-python-2.3.4/test/result/test_select.txt pypy/dist/lib-python-2.3.4/test/result/test_sets.txt pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_sha.txt pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt pypy/dist/lib-python-2.3.4/test/result/test_signal.out pypy/dist/lib-python-2.3.4/test/result/test_signal.txt pypy/dist/lib-python-2.3.4/test/result/test_slice.txt pypy/dist/lib-python-2.3.4/test/result/test_socket.txt pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt pypy/dist/lib-python-2.3.4/test/result/test_sort.txt pypy/dist/lib-python-2.3.4/test/result/test_str.txt pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt pypy/dist/lib-python-2.3.4/test/result/test_string.txt pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt pypy/dist/lib-python-2.3.4/test/result/test_strop.txt pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt pypy/dist/lib-python-2.3.4/test/result/test_struct.txt pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt pypy/dist/lib-python-2.3.4/test/result/test_support.txt pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt pypy/dist/lib-python-2.3.4/test/result/test_sys.txt pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt pypy/dist/lib-python-2.3.4/test/result/test_thread.out pypy/dist/lib-python-2.3.4/test/result/test_thread.txt pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.out pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt pypy/dist/lib-python-2.3.4/test/result/test_threading.txt pypy/dist/lib-python-2.3.4/test/result/test_time.txt pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt pypy/dist/lib-python-2.3.4/test/result/test_timing.txt pypy/dist/lib-python-2.3.4/test/result/test_tokenize.out pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt pypy/dist/lib-python-2.3.4/test/result/test_trace.txt pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt pypy/dist/lib-python-2.3.4/test/result/test_types.out pypy/dist/lib-python-2.3.4/test/result/test_types.txt pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt pypy/dist/lib-python-2.3.4/test/result/test_unary.txt pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.out pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt pypy/dist/lib-python-2.3.4/test/result/test_uu.txt pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt pypy/dist/lib-python-2.3.4/test/result/test_wave.txt pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt pypy/dist/lib-python-2.3.4/test/result/test_winreg.out pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt pypy/dist/lib-python-2.3.4/test/result/test_xreadline.out pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt Log: First check-in of test results. Note that the following tests at least might have been fixed in the meantime, and should be re-run: test_types.py test_xreadline.py test_winreg.py test_unicode_file.py test_types.py test_tokenize.py test_threadedtempfile.py test_thread.py test_signal.py test_userlist.py test_userdict.py Added: pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,110 @@ +test_MimeWriter +From: bwarsaw at cnri.reston.va.us +Date: Mon Feb 12 17:21:48 EST 1996 +To: kss-submit at cnri.reston.va.us +MIME-Version: 1.0 +Content-Type: multipart/knowbot; + boundary="801spam999"; + version="0.1" + +This is a multi-part message in MIME format. + +--801spam999 +Content-Type: multipart/knowbot-metadata; + boundary="802spam999" + + +--802spam999 +Content-Type: message/rfc822 +KP-Metadata-Type: simple +KP-Access: read-only + +KPMD-Interpreter: python +KPMD-Interpreter-Version: 1.3 +KPMD-Owner-Name: Barry Warsaw +KPMD-Owner-Rendezvous: bwarsaw at cnri.reston.va.us +KPMD-Home-KSS: kss.cnri.reston.va.us +KPMD-Identifier: hdl://cnri.kss/my_first_knowbot +KPMD-Launch-Date: Mon Feb 12 16:39:03 EST 1996 + +--802spam999 +Content-Type: text/isl +KP-Metadata-Type: complex +KP-Metadata-Key: connection +KP-Access: read-only +KP-Connection-Description: Barry's Big Bass Business +KP-Connection-Id: B4 +KP-Connection-Direction: client + +INTERFACE Seller-1; + +TYPE Seller = OBJECT + DOCUMENTATION "A simple Seller interface to test ILU" + METHODS + price():INTEGER, + END; + +--802spam999 +Content-Type: message/external-body; + access-type="URL"; + URL="hdl://cnri.kss/generic-knowbot" + +Content-Type: text/isl +KP-Metadata-Type: complex +KP-Metadata-Key: generic-interface +KP-Access: read-only +KP-Connection-Description: Generic Interface for All Knowbots +KP-Connection-Id: generic-kp +KP-Connection-Direction: client + + +--802spam999-- + +--801spam999 +Content-Type: multipart/knowbot-code; + boundary="803spam999" + + +--803spam999 +Content-Type: text/plain +KP-Module-Name: BuyerKP + +class Buyer: + def __setup__(self, maxprice): + self._maxprice = maxprice + + def __main__(self, kos): + """Entry point upon arrival at a new KOS.""" + broker = kos.broker() + # B4 == Barry's Big Bass Business :-) + seller = broker.lookup('Seller_1.Seller', 'B4') + if seller: + price = seller.price() + print 'Seller wants $', price, '... ' + if price > self._maxprice: + print 'too much!' + else: + print "I'll take it!" + else: + print 'no seller found here' + +--803spam999-- + +--801spam999 +Content-Type: multipart/knowbot-state; + boundary="804spam999" +KP-Main-Module: main + + +--804spam999 +Content-Type: text/plain +KP-Module-Name: main + +# instantiate a buyer instance and put it in a magic place for the KOS +# to find. +__kp__ = Buyer() +__kp__.__setup__(500) + +--804spam999-- + +--801spam999-- Added: pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,17 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_MimeWriter.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:23:46 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_MimeWriter.out +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 12.537391901 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,46 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_StringIO.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:31:37 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_closed_flag (__main__.TestStringIO) ... ok +test_iterator (__main__.TestStringIO) ... ok +test_reads (__main__.TestStringIO) ... ok +test_truncate (__main__.TestStringIO) ... ok +test_unicode (__main__.TestStringIO) ... ok +test_writelines (__main__.TestStringIO) ... ok +test_writes (__main__.TestStringIO) ... ok +test_closed_flag (__main__.TestcStringIO) ... ok +test_iterator (__main__.TestcStringIO) ... ok +test_reads (__main__.TestcStringIO) ... ok +test_truncate (__main__.TestcStringIO) ... ok +test_writelines (__main__.TestcStringIO) ... ok +test_writes (__main__.TestcStringIO) ... ok +test_closed_flag (__main__.TestBufferStringIO) ... ok +test_iterator (__main__.TestBufferStringIO) ... ok +test_reads (__main__.TestBufferStringIO) ... ok +test_truncate (__main__.TestBufferStringIO) ... ok +test_unicode (__main__.TestBufferStringIO) ... ok +test_writelines (__main__.TestBufferStringIO) ... ok +test_writes (__main__.TestBufferStringIO) ... ok +test_closed_flag (__main__.TestBuffercStringIO) ... ok +test_iterator (__main__.TestBuffercStringIO) ... ok +test_reads (__main__.TestBuffercStringIO) ... ok +test_truncate (__main__.TestBuffercStringIO) ... ok +test_writelines (__main__.TestBuffercStringIO) ... ok +test_writes (__main__.TestBuffercStringIO) ... ok + +---------------------------------------------------------------------- +Ran 26 tests in 41.869s + +OK +========================== closed ========================== +execution time: 59.4854989052 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test___all__.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test___all__.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,62 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:13:53 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py", line 205 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py", line 202 in test_main + test_support.run_unittest(AllTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py", line 120 in test_all + self.check_all("mimify") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py", line 21 in check_all + exec "import %s" % modname in names + File "", line 1 in ? + File "/home/arigo/pypysrc/lib-python-2.3.4/mimify.py", line 35 in ? +base64_re = re.compile('^content-transfer-encoding:\\s*base64', re.I) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 179 in compile + return _compile(pattern, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile + p = sre_compile.compile(pattern, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 467 in compile + p = sre_parse.parse(p, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 624 in parse + p = _parse_sub(source, pattern, 0) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 392 in _parse + subpattern.append((LITERAL, ord(this))) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 146 in append + self.data.append(code) +KeyboardInterrupt +test_all (__main__.AllTest) ... ========================== closed ========================== +execution time: 900.358663082 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test___future__.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test___future__.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,18 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test___future__.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:13:45 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Checking __future__ nested_scopes value _Feature((2, 1, 0, 'beta', 1), (2, 2, 0, 'alpha', 0), 16) +Checking __future__ generators value _Feature((2, 2, 0, 'alpha', 1), (2, 3, 0, 'final', 0), 4096) +Checking __future__ division value _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192) +========================== closed ========================== +execution time: 7.98354697227 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_aepack.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:13:39 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_aepack.py", line 4 in ? +import aepack +ImportError: aepack +========================== closed ========================== +execution time: 5.29398584366 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_al.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_al.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_al.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:13:38 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_al.py", line 5 in ? +import al +ImportError: al +========================== closed ========================== +execution time: 0.858690977097 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,28 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_anydbm.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:12:49 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_anydbm_creation (__main__.AnyDBMTestCase) ... ok +test_anydbm_keys (__main__.AnyDBMTestCase) ... ok +test_anydbm_modification (__main__.AnyDBMTestCase) ... ok +test_anydbm_read (__main__.AnyDBMTestCase) ... ok + +---------------------------------------------------------------------- +Ran 4 tests in 34.893s + +OK +========================== closed ========================== +execution time: 48.8308150768 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_array.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_array.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,239 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_array.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:11:21 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +test_constructor (__main__.BadConstructorTest) ... ok +test_add (__main__.CharacterTest) ... ok +test_buffer (__main__.CharacterTest) ... ERROR +test_buffer_info (__main__.CharacterTest) ... ok +test_byteswap (__main__.CharacterTest) ... ok +test_cmp (__main__.CharacterTest) ... FAIL +test_constructor (__main__.CharacterTest) ... ok +test_count (__main__.CharacterTest) ... ok +test_coveritertraverse (__main__.CharacterTest) ... ok +test_delitem (__main__.CharacterTest) ... ok +test_extend (__main__.CharacterTest) ... ok +test_getitem (__main__.CharacterTest) ... ok +test_getslice (__main__.CharacterTest) ... ok +test_iadd (__main__.CharacterTest) ... FAIL +test_imul (__main__.CharacterTest) ... FAIL +test_index (__main__.CharacterTest) ... ok +test_insert (__main__.CharacterTest) ... ok +test_len (__main__.CharacterTest) ... ok +test_mul (__main__.CharacterTest) ... ok +test_nounicode (__main__.CharacterTest) ... ok +test_pop (__main__.CharacterTest) ... ok +test_remove (__main__.CharacterTest) ... ok +test_repr (__main__.CharacterTest) ... ok +test_reverse (__main__.CharacterTest) ... ok +test_setitem (__main__.CharacterTest) ... ok +test_setslice (__main__.CharacterTest) ... ok +test_str (__main__.CharacterTest) ... ok +test_subbclassing (__main__.CharacterTest) ... ok +test_tofromfile (__main__.CharacterTest) ... Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 644, in CALL_FUNCTION_VAR + f.CALL_FUNCTION(oparg, w_varargs) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW + f.CALL_FUNCTION(oparg, w_varargs, w_varkw) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + frame.setfastscope(scope_w) + File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) +pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > +========================== closed ========================== +execution time: 87.0289859772 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_asynchat.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_asynchat.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_asynchat Added: pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,18 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_asynchat.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:11:20 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_asynchat.out +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_asynchat.py", line 3 in ? +import thread # If this fails, we can't test this module +ImportError: thread +========================== closed ========================== +execution time: 0.944401025772 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_atexit.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:11:12 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_atexit.py", line 37 in ? +""") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 194 in vereq + raise TestFailed, "%r == %r" % (a, b) +TestFailed: '' == "handler2 (7,) {'kw': 'abc'}\nhandler2 () {}\nhandler1\n" +========================== closed ========================== +execution time: 7.03922986984 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_audioop.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:11:11 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_audioop.py", line 2 in ? +import audioop +ImportError: audioop +========================== closed ========================== +execution time: 0.879395008087 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_augassign.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_augassign.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,51 @@ +test_augassign +6 +[6] +6 +[1, 2, 3, 4, 1, 2, 3, 4] +[1, 2, 1, 2, 3] +True +True +True +11 +True +12 +True +True +13 +__add__ called +__radd__ called +__iadd__ called +__sub__ called +__rsub__ called +__isub__ called +__mul__ called +__rmul__ called +__imul__ called +__div__ called +__rdiv__ called +__idiv__ called +__floordiv__ called +__rfloordiv__ called +__ifloordiv__ called +__mod__ called +__rmod__ called +__imod__ called +__pow__ called +__rpow__ called +__ipow__ called +__or__ called +__ror__ called +__ior__ called +__and__ called +__rand__ called +__iand__ called +__xor__ called +__rxor__ called +__ixor__ called +__rshift__ called +__rrshift__ called +__irshift__ called +__lshift__ called +__rlshift__ called +__ilshift__ called Added: pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_augassign.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:11:06 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_augassign.out +============================================================ +faking +faking +faking +========================== closed ========================== +execution time: 5.25186896324 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_base64.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_base64.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,22 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_base64.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:10:57 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_decodestring (__main__.Base64TestCase) ... ok +test_encodestring (__main__.Base64TestCase) ... ok + +---------------------------------------------------------------------- +Ran 2 tests in 0.884s + +OK +========================== closed ========================== +execution time: 8.38066196442 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,12 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bastion.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:10:57 2005 +pypy-revision: 11518 +============================================================ +faking +faking +========================== closed ========================== +execution time: 0.851797103882 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,56 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:09:56 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py", line 155 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py", line 152 in test_main + test_support.run_unittest(BinASCIITest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred in __main__.BinASCIITest +test_base64invalid (__main__.BinASCIITest) ... ok +test_base64valid (__main__.BinASCIITest) ... ok +test_crc32 (__main__.BinASCIITest) ... ok +test_exceptions (__main__.BinASCIITest) ... ERROR +test_functions (__main__.BinASCIITest) ... ok +test_hex (__main__.BinASCIITest) ... ok +test_qp (__main__.BinASCIITest) ... ok +test_uu (__main__.BinASCIITest) ... ERROR + +====================================================================== +ERROR: test_exceptions (__main__.BinASCIITest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py", line 17, in test_exceptions + self.assert_(issubclass(binascii.Error, Exception)) +TypeError: arg 1 must be a class or type + +====================================================================== +ERROR: test_uu (__main__.BinASCIITest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py", line 102, in test_uu + self.assertRaises(binascii.Error, binascii.a2b_uu, "\xff\x00") +TypeError: instance exception may not have a separate value + +---------------------------------------------------------------------- +Ran 8 tests in 50.609s + +FAILED (errors=2) +========================== closed ========================== +execution time: 60.0292649269 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,67 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:09:43 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py", line 49 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py", line 45 in test_main + test_support.run_unittest(BinHexTestCase) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py", line 33, in test_binhex + binhex.binhex(self.fname1, self.fname2) + File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 260, in binhex + ofp = BinHex(finfo, out) + File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 196, in __init__ + self._writeinfo(name, finfo) + File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 212, in _writeinfo + self._writecrc() + File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 221, in _writecrc + self.ofp.write(struct.pack('>h', self.crc)) + File "/home/arigo/pypysrc/pypy/lib/struct.py", line 293, in pack + result += [format['pack'](var,format['size'],endianness)] + File "/home/arigo/pypysrc/pypy/lib/struct.py", line 111, in pack_signed_int + raise OverflowError,"Number:%i to large to convert" % number +OverflowError: Number:51917 to large to convert + +test_binhex (__main__.BinHexTestCase) ... ERROR + +====================================================================== +ERROR: test_binhex (__main__.BinHexTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py", line 33, in test_binhex + binhex.binhex(self.fname1, self.fname2) + File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 260, in binhex + ofp = BinHex(finfo, out) + File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 196, in __init__ + self._writeinfo(name, finfo) + File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 212, in _writeinfo + self._writecrc() + File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 221, in _writecrc + self.ofp.write(struct.pack('>h', self.crc)) + File "/home/arigo/pypysrc/pypy/lib/struct.py", line 293, in pack + result += [format['pack'](var,format['size'],endianness)] + File "/home/arigo/pypysrc/pypy/lib/struct.py", line 111, in pack_signed_int + raise OverflowError,"Number:%i to large to convert" % number +OverflowError: Number:51917 to large to convert + +---------------------------------------------------------------------- +Ran 1 test in 4.243s + +FAILED (errors=1) +========================== closed ========================== +execution time: 12.7835309505 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_binop.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_binop.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,29 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_binop.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:09:16 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_add (__main__.RatTestCase) ... ok +test_constructor (__main__.RatTestCase) ... ok +test_div (__main__.RatTestCase) ... ok +test_eq (__main__.RatTestCase) ... ok +test_floordiv (__main__.RatTestCase) ... ok +test_future_div (__main__.RatTestCase) ... ok +test_gcd (__main__.RatTestCase) ... ok +test_mul (__main__.RatTestCase) ... ok +test_sub (__main__.RatTestCase) ... ok + +---------------------------------------------------------------------- +Ran 9 tests in 18.806s + +OK +========================== closed ========================== +execution time: 26.5153589249 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,31 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bisect.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 05:00:30 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_backcompatibility (__main__.TestBisect) ... ok +test_optionalSlicing (__main__.TestBisect) ... ok +test_precomputed (__main__.TestBisect) ... ok +test_random (__main__.TestBisect) ... ok +test_backcompatibility (__main__.TestInsort) ... ok +test_vsListSort (__main__.TestInsort) ... ok + +---------------------------------------------------------------------- +Ran 6 tests in 140.836s + +OK +doctest (test.test_bisect) ... 14 tests with zero failures +========================== closed ========================== +execution time: 526.357240915 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_bool.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_bool.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,76 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:59:20 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 348 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 345 in test_main + test_support.run_unittest(BoolTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 331, in test_convert_to_bool + check(Foo()) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 327, in + check = lambda o: self.assertRaises(TypeError, bool, o) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + callableObj(*args, **kwargs) +RuntimeError: internal errormaximum recursion depth exceeded + +test_boolean (__main__.BoolTest) ... ok +test_callable (__main__.BoolTest) ... ok +test_convert (__main__.BoolTest) ... ok +test_convert_to_bool (__main__.BoolTest) ... ERROR +test_cpickle (__main__.BoolTest) ... ok +test_fileclosed (__main__.BoolTest) ... ok +test_hasattr (__main__.BoolTest) ... ok +test_haskey (__main__.BoolTest) ... ok +test_int (__main__.BoolTest) ... ok +test_isinstance (__main__.BoolTest) ... ok +test_issubclass (__main__.BoolTest) ... ok +test_marshal (__main__.BoolTest) ... ok +test_math (__main__.BoolTest) ... ok +test_mixedpickle (__main__.BoolTest) ... ok +test_operator (__main__.BoolTest) ... ok +test_pickle (__main__.BoolTest) ... ok +test_picklevalues (__main__.BoolTest) ... ok +test_print (__main__.BoolTest) ... ok +test_repr (__main__.BoolTest) ... ok +test_str (__main__.BoolTest) ... ok +test_string (__main__.BoolTest) ... ok +test_subclass (__main__.BoolTest) ... ok + +====================================================================== +ERROR: test_convert_to_bool (__main__.BoolTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 331, in test_convert_to_bool + check(Foo()) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 327, in + check = lambda o: self.assertRaises(TypeError, bool, o) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + callableObj(*args, **kwargs) +RuntimeError: internal errormaximum recursion depth exceeded + +---------------------------------------------------------------------- +Ran 22 tests in 60.683s + +FAILED (errors=1) +========================== closed ========================== +execution time: 69.3459248543 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:59:15 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb.py", line 6 in ? +import bsddb + File "/home/arigo/pypysrc/lib-python-2.3.4/bsddb/__init__.py", line 40 in ? + import _bsddb +ImportError: _bsddb +========================== closed ========================== +execution time: 4.26038885117 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb185.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:59:09 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb185.py", line 9 in ? +import bsddb185 +ImportError: bsddb185 +========================== closed ========================== +execution time: 5.5461909771 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb3.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:59:02 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb3.py", line 58 in ? + from bsddb import db + File "/home/arigo/pypysrc/lib-python-2.3.4/bsddb/__init__.py", line 40 in ? + import _bsddb +ImportError: _bsddb +========================== closed ========================== +execution time: 6.08635902405 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bufio.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:45:02 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 840.088413954 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,102 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:31:35 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +/home/arigo/pypysrc/pypy/objspace/std/intobject.py:442: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up + ret = "0x%lx" % x +/home/arigo/pypysrc/pypy/objspace/std/intobject.py:430: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up + ret = "0%lo" % x +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py", line 1161 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py", line 1158 in test_main + test.test_support.run_unittest(BuiltinTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py", line 151, in test_callable + self.assert_(not callable(x)) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError + +test_abs (__main__.BuiltinTest) ... ok +test_apply (__main__.BuiltinTest) ... ok +test_callable (__main__.BuiltinTest) ... FAIL +test_chr (__main__.BuiltinTest) ... ok +test_cmp (__main__.BuiltinTest) ... ok +test_coerce (__main__.BuiltinTest) ... ok +test_compile (__main__.BuiltinTest) ... ok +test_delattr (__main__.BuiltinTest) ... ok +test_dir (__main__.BuiltinTest) ... ok +test_divmod (__main__.BuiltinTest) ... ok +test_eval (__main__.BuiltinTest) ... ok +test_execfile (__main__.BuiltinTest) ... ok +test_filter (__main__.BuiltinTest) ... ok +test_filter_subclasses (__main__.BuiltinTest) ... ok +test_float (__main__.BuiltinTest) ... ok +test_getattr (__main__.BuiltinTest) ... ok +test_hasattr (__main__.BuiltinTest) ... ok +test_hash (__main__.BuiltinTest) ... ok +test_hex (__main__.BuiltinTest) ... ok +test_id (__main__.BuiltinTest) ... ok +test_import (__main__.BuiltinTest) ... ok +test_input_and_raw_input (__main__.BuiltinTest) ... ok +test_int (__main__.BuiltinTest) ... ok +test_intern (__main__.BuiltinTest) ... ok +test_isinstance (__main__.BuiltinTest) ... ok +test_issubclass (__main__.BuiltinTest) ... ok +test_iter (__main__.BuiltinTest) ... ok +test_len (__main__.BuiltinTest) ... ok +test_list (__main__.BuiltinTest) ... ok +test_long (__main__.BuiltinTest) ... ok +test_map (__main__.BuiltinTest) ... ok +test_max (__main__.BuiltinTest) ... ok +test_min (__main__.BuiltinTest) ... ok +test_oct (__main__.BuiltinTest) ... ok +test_open (__main__.BuiltinTest) ... ok +test_ord (__main__.BuiltinTest) ... ok +test_pow (__main__.BuiltinTest) ... ok +test_range (__main__.BuiltinTest) ... ok +test_reduce (__main__.BuiltinTest) ... ok +test_reload (__main__.BuiltinTest) ... ok +test_repr (__main__.BuiltinTest) ... ok +test_round (__main__.BuiltinTest) ... ok +test_setattr (__main__.BuiltinTest) ... ok +test_str (__main__.BuiltinTest) ... ok +test_sum (__main__.BuiltinTest) ... ok +test_tuple (__main__.BuiltinTest) ... ok +test_type (__main__.BuiltinTest) ... ok +test_unichr (__main__.BuiltinTest) ... ok +test_vars (__main__.BuiltinTest) ... ok +test_zip (__main__.BuiltinTest) ... ok + +====================================================================== +FAIL: test_callable (__main__.BuiltinTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py", line 151, in test_callable + self.assert_(not callable(x)) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError + +---------------------------------------------------------------------- +Ran 50 tests in 749.880s + +FAILED (failures=1) +========================== closed ========================== +execution time: 806.528295994 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bz2.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:31:26 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bz2.py", line 11 in ? +import bz2 +ImportError: bz2 +========================== closed ========================== +execution time: 8.71124315262 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,26 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_calendar.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:29:46 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +test_days (__main__.CalendarTestCase) ... ok +test_enumerateweekdays (__main__.CalendarTestCase) ... ok +test_isleap (__main__.CalendarTestCase) ... ok +test_months (__main__.CalendarTestCase) ... ok +test_setfirstweekday (__main__.CalendarTestCase) ... ok + +---------------------------------------------------------------------- +Ran 5 tests in 82.565s + +OK +========================== closed ========================== +execution time: 100.287414074 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_call.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_call.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,47 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_call.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:29:15 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_oldargs0_0 (__main__.CFunctionCalls) ... ok +test_oldargs0_0_ext (__main__.CFunctionCalls) ... ok +test_oldargs0_0_kw (__main__.CFunctionCalls) ... ok +test_oldargs0_1 (__main__.CFunctionCalls) ... ok +test_oldargs0_1_ext (__main__.CFunctionCalls) ... ok +test_oldargs0_1_kw (__main__.CFunctionCalls) ... ok +test_oldargs0_2 (__main__.CFunctionCalls) ... ok +test_oldargs0_2_ext (__main__.CFunctionCalls) ... ok +test_oldargs0_2_kw (__main__.CFunctionCalls) ... ok +test_oldargs1_0 (__main__.CFunctionCalls) ... ok +test_oldargs1_0_ext (__main__.CFunctionCalls) ... ok +test_oldargs1_0_kw (__main__.CFunctionCalls) ... ok +test_oldargs1_1 (__main__.CFunctionCalls) ... ok +test_oldargs1_1_ext (__main__.CFunctionCalls) ... ok +test_oldargs1_1_kw (__main__.CFunctionCalls) ... ok +test_oldargs1_2 (__main__.CFunctionCalls) ... ok +test_oldargs1_2_ext (__main__.CFunctionCalls) ... ok +test_oldargs1_2_kw (__main__.CFunctionCalls) ... ok +test_varargs0 (__main__.CFunctionCalls) ... ok +test_varargs0_ext (__main__.CFunctionCalls) ... ok +test_varargs0_kw (__main__.CFunctionCalls) ... ok +test_varargs1 (__main__.CFunctionCalls) ... ok +test_varargs1_ext (__main__.CFunctionCalls) ... ok +test_varargs1_kw (__main__.CFunctionCalls) ... ok +test_varargs2 (__main__.CFunctionCalls) ... ok +test_varargs2_ext (__main__.CFunctionCalls) ... ok +test_varargs2_kw (__main__.CFunctionCalls) ... ok + +---------------------------------------------------------------------- +Ran 27 tests in 17.272s + +OK +========================== closed ========================== +execution time: 30.9581329823 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_capi.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_capi.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_capi.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:29:01 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_capi.py", line 6 in ? +import _testcapi +ImportError: _testcapi +========================== closed ========================== +execution time: 11.5215249062 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_cd.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_cd.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cd.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:28:58 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cd.py", line 5 in ? +import cd +ImportError: cd +========================== closed ========================== +execution time: 2.56447100639 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,297 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cfgparser.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:23:56 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_basic (__main__.ConfigParserTestCase) ... ok +test_boolean (__main__.ConfigParserTestCase) ... ok +test_case_sensitivity (__main__.ConfigParserTestCase) ... ok +test_interpolation (__main__.ConfigParserTestCase) ... ok +test_interpolation_missing_value (__main__.ConfigParserTestCase) ... ok +test_items (__main__.ConfigParserTestCase) ... ok +test_parse_errors (__main__.ConfigParserTestCase) ... ok +test_query_errors (__main__.ConfigParserTestCase) ... ok +test_weird_errors (__main__.ConfigParserTestCase) ... ok +test_write (__main__.ConfigParserTestCase) ... ok +test_basic (__main__.RawConfigParserTestCase) ... ok +test_boolean (__main__.RawConfigParserTestCase) ... ok +test_case_sensitivity (__main__.RawConfigParserTestCase) ... ok +test_interpolation (__main__.RawConfigParserTestCase) ... ok +test_items (__main__.RawConfigParserTestCase) ... ok +test_parse_errors (__main__.RawConfigParserTestCase) ... ok +test_query_errors (__main__.RawConfigParserTestCase) ... ok +test_weird_errors (__main__.RawConfigParserTestCase) ... ok +test_write (__main__.RawConfigParserTestCase) ... ok +test_basic (__main__.SafeConfigParserTestCase) ... ok +test_boolean (__main__.SafeConfigParserTestCase) ... ok +test_case_sensitivity (__main__.SafeConfigParserTestCase) ... ok +test_interpolation (__main__.SafeConfigParserTestCase) ... Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 499, in LOAD_ATTR + w_value = f.space.getattr(w_obj, w_attributename) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 126, in getattr + return space.get_and_call_function(w_descr, w_obj, w_name) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 87, in get_and_call_function + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_ObjSpace_Arguments + File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 1747, in __getattribute__ + return fastf_instance___getattribute__(space, w_self, w_name) + File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 1757, in __getattribute__ + w_0 = space.call_function(gfunc_instance_getattr1, w_self, w_name) + File "/home/arigo/pypysrc/pypy/interpreter/baseobjspace.py", line 234, in call_function + return self.call_args(w_func, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_ObjSpace_Arguments + File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 1556, in instance_getattr1 + return fastf_instance_getattr1(space, w_inst, w_name, w_exc) + File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 1722, in instance_getattr1 + w_43 = space.call_function(w_39, w_40, w_41, w_42) + File "/home/arigo/pypysrc/pypy/interpreter/baseobjspace.py", line 234, in call_function + return self.call_args(w_func, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + frame.setfastscope(scope_w) + File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) +pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > +========================== closed ========================== +execution time: 300.988641024 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_cgi.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_cgi.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,29 @@ +test_cgi +'' +'&' +'&&' +';' +';&;' +'=' +'=&=' +'=;=' +'=a' +'&=a' +'=a&' +'=&a' +'b=a' +'b+=a' +'a=b=a' +'a=+b=a' +'&b=a' +'b&=a' +'a=a+b&b=b+c' +'a=a+b&a=b+a' +'x=1&y=2.0&z=2-3.%2b0' +'x=1;y=2.0&z=2-3.%2b0' +'x=1;y=2.0;z=2-3.%2b0' +'Hbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=env' +'group_id=5470&set=custom&_assigned_to=31392&_status=1&_category=100&SUBMIT=Browse' +Testing log +Testing initlog 1 +Testing log 2 Added: pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,20 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cgi.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:18:55 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_cgi.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 301.199226141 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,68 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:18:22 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 45 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 42 in test_main + test.test_support.run_unittest(CharmapCodecTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred in __main__.CharmapCodecTest +test_constructorx (__main__.CharmapCodecTest) ... ERROR +test_constructory (__main__.CharmapCodecTest) ... ERROR +test_encodex (__main__.CharmapCodecTest) ... ERROR +test_maptoundefined (__main__.CharmapCodecTest) ... ERROR + +====================================================================== +ERROR: test_constructorx (__main__.CharmapCodecTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 19, in test_constructorx + self.assertEquals(unicode('abc', codecname), u'abc') +LookupError: unknown encoding: test.testcodec + +====================================================================== +ERROR: test_constructory (__main__.CharmapCodecTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 33, in test_constructory + self.assertEquals(unicode('ydef', codecname), u'def') +LookupError: unknown encoding: test.testcodec + +====================================================================== +ERROR: test_encodex (__main__.CharmapCodecTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 26, in test_encodex + self.assertEquals(u'abc'.encode(codecname), 'abc') +LookupError: unknown encoding: test.testcodec + +====================================================================== +ERROR: test_maptoundefined (__main__.CharmapCodecTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 39, in test_maptoundefined + self.assertRaises(UnicodeError, unicode, 'abc\001', codecname) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + callableObj(*args, **kwargs) +LookupError: unknown encoding: test.testcodec + +---------------------------------------------------------------------- +Ran 4 tests in 8.493s + +FAILED (errors=4) +========================== closed ========================== +execution time: 32.0733180046 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_cl.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_cl.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cl.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:18:20 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cl.py", line 5 in ? +import cl +ImportError: cl +========================== closed ========================== +execution time: 1.98149299622 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_class.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_class.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,70 @@ +test_class +__init__: () +__coerce__: (1,) +__add__: (1,) +__coerce__: (1,) +__radd__: (1,) +__coerce__: (1,) +__sub__: (1,) +__coerce__: (1,) +__rsub__: (1,) +__coerce__: (1,) +__mul__: (1,) +__coerce__: (1,) +__rmul__: (1,) +__coerce__: (1,) +__div__: (1,) +__coerce__: (1,) +__rdiv__: (1,) +__coerce__: (1,) +__mod__: (1,) +__coerce__: (1,) +__rmod__: (1,) +__coerce__: (1,) +__divmod__: (1,) +__coerce__: (1,) +__rdivmod__: (1,) +__coerce__: (1,) +__pow__: (1,) +__coerce__: (1,) +__rpow__: (1,) +__coerce__: (1,) +__rshift__: (1,) +__coerce__: (1,) +__rrshift__: (1,) +__coerce__: (1,) +__lshift__: (1,) +__coerce__: (1,) +__rlshift__: (1,) +__coerce__: (1,) +__and__: (1,) +__coerce__: (1,) +__rand__: (1,) +__coerce__: (1,) +__or__: (1,) +__coerce__: (1,) +__ror__: (1,) +__coerce__: (1,) +__xor__: (1,) +__coerce__: (1,) +__rxor__: (1,) +__contains__: (1,) +__getitem__: (1,) +__setitem__: (1, 1) +__delitem__: (1,) +__getslice__: (0, 42) +__setslice__: (0, 42, 'The Answer') +__delslice__: (0, 42) +__getitem__: (slice(2, 1024, 10),) +__setitem__: (slice(2, 1024, 10), 'A lot') +__delitem__: (slice(2, 1024, 10),) +__getitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),) +__setitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100), 'Strange') +__delitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),) +__getitem__: (slice(0, 42, None),) +__setitem__: (slice(0, 42, None), 'The Answer') +__delitem__: (slice(0, 42, None),) +__neg__: () +__pos__: () +__abs__: () +__int__: () Added: pypy/dist/lib-python-2.3.4/test/result/test_class.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_class.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,22 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_class.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:17:23 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_class.out +============================================================ +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_class.py", line 199 in ? + int(testme) +TypeError: __int__ returned non-int (type NoneType) +========================== closed ========================== +execution time: 56.4155960083 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,33 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cmath.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:16:36 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Calling sinh(1.000000) = 1.175201 +Calling asin(1.000000) = 1.570796 +Calling asinh(1.000000) = 0.881373 +Calling log(1.000000) = 0.000000 +Calling atan(0.200000) = 0.197395 +Calling tanh(1.000000) = 0.761594 +Calling atanh(0.200000) = 0.202732 +Calling cos(1.000000) = 0.540302 +Calling sqrt(1.000000) = 1.000000 +Calling cosh(1.000000) = 1.543080 +Calling exp(1.000000) = 2.718281 +Calling acosh(1.000000) = 0.000000 +Calling acos(1.000000) = 0.000000 +Calling log10(1.000000) = 0.000000 +Calling sin(1.000000) = 0.841470 +Calling tan(1.000000) = 1.557407 +PI = 3.14159265358 +E = 2.71828182845 +========================== closed ========================== +execution time: 47.0223078728 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,194 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_codeccallbacks.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:15:34 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_backslashescape (__main__.CodecCallbackTest) ... ok +test_badandgoodbackslashreplaceexceptions (__main__.CodecCallbackTest) ... Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW + f.CALL_FUNCTION(oparg, w_varargs, w_varkw) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + frame.setfastscope(scope_w) + File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) +pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > +========================== closed ========================== +execution time: 61.0466151237 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,169 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_codecs.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:15:02 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +test_only_one_bom (__main__.UTF16Test) ... Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + frame.setfastscope(scope_w) + File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) +pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > +========================== closed ========================== +execution time: 31.93232584 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_codeop.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 04:14:34 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_filename (__main__.CodeopTests) ... ok +test_incomplete (__main__.CodeopTests) ... ok +test_invalid (__main__.CodeopTests) ... ok +test_valid (__main__.CodeopTests) ... ok + +---------------------------------------------------------------------- +Ran 4 tests in 9.212s + +OK +========================== closed ========================== +execution time: 27.4823389053 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_coercion.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_coercion.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,902 @@ +test_coercion +2 + 2 = 4 +2 += 2 => 4 +2 - 2 = 0 +2 -= 2 => 0 +2 * 2 = 4 +2 *= 2 => 4 +2 / 2 = 1 +2 /= 2 => 1 +2 ** 2 = 4 +2 **= 2 => 4 +2 % 2 = 0 +2 %= 2 => 0 +2 + 4.0 = 6.0 +2 += 4.0 => 6.0 +2 - 4.0 = -2.0 +2 -= 4.0 => -2.0 +2 * 4.0 = 8.0 +2 *= 4.0 => 8.0 +2 / 4.0 = 0.5 +2 /= 4.0 => 0.5 +2 ** 4.0 = 16.0 +2 **= 4.0 => 16.0 +2 % 4.0 = 2.0 +2 %= 4.0 => 2.0 +2 + 2 = 4 +2 += 2 => 4 +2 - 2 = 0 +2 -= 2 => 0 +2 * 2 = 4 +2 *= 2 => 4 +2 / 2 = 1 +2 /= 2 => 1 +2 ** 2 = 4 +2 **= 2 => 4 +2 % 2 = 0 +2 %= 2 => 0 +2 + (2+0j) = (4+0j) +2 += (2+0j) => (4+0j) +2 - (2+0j) = 0j +2 -= (2+0j) => 0j +2 * (2+0j) = (4+0j) +2 *= (2+0j) => (4+0j) +2 / (2+0j) = (1+0j) +2 /= (2+0j) => (1+0j) +2 ** (2+0j) = (4+0j) +2 **= (2+0j) => (4+0j) +2 % (2+0j) = 0j +2 %= (2+0j) => 0j +2 + [1] ... +2 += [1] ... +2 - [1] ... +2 -= [1] ... +2 * [1] = [1, 1] +2 *= [1] => [1, 1] +2 / [1] ... +2 /= [1] ... +2 ** [1] ... +2 **= [1] ... +2 % [1] ... +2 %= [1] ... +2 + (2,) ... +2 += (2,) ... +2 - (2,) ... +2 -= (2,) ... +2 * (2,) = (2, 2) +2 *= (2,) => (2, 2) +2 / (2,) ... +2 /= (2,) ... +2 ** (2,) ... +2 **= (2,) ... +2 % (2,) ... +2 %= (2,) ... +2 + None ... +2 += None ... +2 - None ... +2 -= None ... +2 * None ... +2 *= None ... +2 / None ... +2 /= None ... +2 ** None ... +2 **= None ... +2 % None ... +2 %= None ... +2 + = 3 +2 += => 3 +2 - = 1 +2 -= => 1 +2 * = 2 +2 *= => 2 +2 / = 2 +2 /= => 2 +2 ** = 2 +2 **= => 2 +2 % = 0 +2 %= => 0 +2 + = 4 +2 += => 4 +2 - = 0 +2 -= => 0 +2 * = 4 +2 *= => 4 +2 / = 1 +2 /= => 1 +2 ** = 4 +2 **= => 4 +2 % = 0 +2 %= => 0 +4.0 + 2 = 6.0 +4.0 += 2 => 6.0 +4.0 - 2 = 2.0 +4.0 -= 2 => 2.0 +4.0 * 2 = 8.0 +4.0 *= 2 => 8.0 +4.0 / 2 = 2.0 +4.0 /= 2 => 2.0 +4.0 ** 2 = 16.0 +4.0 **= 2 => 16.0 +4.0 % 2 = 0.0 +4.0 %= 2 => 0.0 +4.0 + 4.0 = 8.0 +4.0 += 4.0 => 8.0 +4.0 - 4.0 = 0.0 +4.0 -= 4.0 => 0.0 +4.0 * 4.0 = 16.0 +4.0 *= 4.0 => 16.0 +4.0 / 4.0 = 1.0 +4.0 /= 4.0 => 1.0 +4.0 ** 4.0 = 256.0 +4.0 **= 4.0 => 256.0 +4.0 % 4.0 = 0.0 +4.0 %= 4.0 => 0.0 +4.0 + 2 = 6.0 +4.0 += 2 => 6.0 +4.0 - 2 = 2.0 +4.0 -= 2 => 2.0 +4.0 * 2 = 8.0 +4.0 *= 2 => 8.0 +4.0 / 2 = 2.0 +4.0 /= 2 => 2.0 +4.0 ** 2 = 16.0 +4.0 **= 2 => 16.0 +4.0 % 2 = 0.0 +4.0 %= 2 => 0.0 +4.0 + (2+0j) = (6+0j) +4.0 += (2+0j) => (6+0j) +4.0 - (2+0j) = (2+0j) +4.0 -= (2+0j) => (2+0j) +4.0 * (2+0j) = (8+0j) +4.0 *= (2+0j) => (8+0j) +4.0 / (2+0j) = (2+0j) +4.0 /= (2+0j) => (2+0j) +4.0 ** (2+0j) = (16+0j) +4.0 **= (2+0j) => (16+0j) +4.0 % (2+0j) = 0j +4.0 %= (2+0j) => 0j +4.0 + [1] ... +4.0 += [1] ... +4.0 - [1] ... +4.0 -= [1] ... +4.0 * [1] ... +4.0 *= [1] ... +4.0 / [1] ... +4.0 /= [1] ... +4.0 ** [1] ... +4.0 **= [1] ... +4.0 % [1] ... +4.0 %= [1] ... +4.0 + (2,) ... +4.0 += (2,) ... +4.0 - (2,) ... +4.0 -= (2,) ... +4.0 * (2,) ... +4.0 *= (2,) ... +4.0 / (2,) ... +4.0 /= (2,) ... +4.0 ** (2,) ... +4.0 **= (2,) ... +4.0 % (2,) ... +4.0 %= (2,) ... +4.0 + None ... +4.0 += None ... +4.0 - None ... +4.0 -= None ... +4.0 * None ... +4.0 *= None ... +4.0 / None ... +4.0 /= None ... +4.0 ** None ... +4.0 **= None ... +4.0 % None ... +4.0 %= None ... +4.0 + = 5.0 +4.0 += => 5.0 +4.0 - = 3.0 +4.0 -= => 3.0 +4.0 * = 4.0 +4.0 *= => 4.0 +4.0 / = 4.0 +4.0 /= => 4.0 +4.0 ** = 4.0 +4.0 **= => 4.0 +4.0 % = 0.0 +4.0 %= => 0.0 +4.0 + = 6.0 +4.0 += => 6.0 +4.0 - = 2.0 +4.0 -= => 2.0 +4.0 * = 8.0 +4.0 *= => 8.0 +4.0 / = 2.0 +4.0 /= => 2.0 +4.0 ** = 16.0 +4.0 **= => 16.0 +4.0 % = 0.0 +4.0 %= => 0.0 +2 + 2 = 4 +2 += 2 => 4 +2 - 2 = 0 +2 -= 2 => 0 +2 * 2 = 4 +2 *= 2 => 4 +2 / 2 = 1 +2 /= 2 => 1 +2 ** 2 = 4 +2 **= 2 => 4 +2 % 2 = 0 +2 %= 2 => 0 +2 + 4.0 = 6.0 +2 += 4.0 => 6.0 +2 - 4.0 = -2.0 +2 -= 4.0 => -2.0 +2 * 4.0 = 8.0 +2 *= 4.0 => 8.0 +2 / 4.0 = 0.5 +2 /= 4.0 => 0.5 +2 ** 4.0 = 16.0 +2 **= 4.0 => 16.0 +2 % 4.0 = 2.0 +2 %= 4.0 => 2.0 +2 + 2 = 4 +2 += 2 => 4 +2 - 2 = 0 +2 -= 2 => 0 +2 * 2 = 4 +2 *= 2 => 4 +2 / 2 = 1 +2 /= 2 => 1 +2 ** 2 = 4 +2 **= 2 => 4 +2 % 2 = 0 +2 %= 2 => 0 +2 + (2+0j) = (4+0j) +2 += (2+0j) => (4+0j) +2 - (2+0j) = 0j +2 -= (2+0j) => 0j +2 * (2+0j) = (4+0j) +2 *= (2+0j) => (4+0j) +2 / (2+0j) = (1+0j) +2 /= (2+0j) => (1+0j) +2 ** (2+0j) = (4+0j) +2 **= (2+0j) => (4+0j) +2 % (2+0j) = 0j +2 %= (2+0j) => 0j +2 + [1] ... +2 += [1] ... +2 - [1] ... +2 -= [1] ... +2 * [1] = [1, 1] +2 *= [1] => [1, 1] +2 / [1] ... +2 /= [1] ... +2 ** [1] ... +2 **= [1] ... +2 % [1] ... +2 %= [1] ... +2 + (2,) ... +2 += (2,) ... +2 - (2,) ... +2 -= (2,) ... +2 * (2,) = (2, 2) +2 *= (2,) => (2, 2) +2 / (2,) ... +2 /= (2,) ... +2 ** (2,) ... +2 **= (2,) ... +2 % (2,) ... +2 %= (2,) ... +2 + None ... +2 += None ... +2 - None ... +2 -= None ... +2 * None ... +2 *= None ... +2 / None ... +2 /= None ... +2 ** None ... +2 **= None ... +2 % None ... +2 %= None ... +2 + = 3 +2 += => 3 +2 - = 1 +2 -= => 1 +2 * = 2 +2 *= => 2 +2 / = 2 +2 /= => 2 +2 ** = 2 +2 **= => 2 +2 % = 0 +2 %= => 0 +2 + = 4 +2 += => 4 +2 - = 0 +2 -= => 0 +2 * = 4 +2 *= => 4 +2 / = 1 +2 /= => 1 +2 ** = 4 +2 **= => 4 +2 % = 0 +2 %= => 0 +(2+0j) + 2 = (4+0j) +(2+0j) += 2 => (4+0j) +(2+0j) - 2 = 0j +(2+0j) -= 2 => 0j +(2+0j) * 2 = (4+0j) +(2+0j) *= 2 => (4+0j) +(2+0j) / 2 = (1+0j) +(2+0j) /= 2 => (1+0j) +(2+0j) ** 2 = (4+0j) +(2+0j) **= 2 => (4+0j) +(2+0j) % 2 = 0j +(2+0j) %= 2 => 0j +(2+0j) + 4.0 = (6+0j) +(2+0j) += 4.0 => (6+0j) +(2+0j) - 4.0 = (-2+0j) +(2+0j) -= 4.0 => (-2+0j) +(2+0j) * 4.0 = (8+0j) +(2+0j) *= 4.0 => (8+0j) +(2+0j) / 4.0 = (0.5+0j) +(2+0j) /= 4.0 => (0.5+0j) +(2+0j) ** 4.0 = (16+0j) +(2+0j) **= 4.0 => (16+0j) +(2+0j) % 4.0 = (2+0j) +(2+0j) %= 4.0 => (2+0j) +(2+0j) + 2 = (4+0j) +(2+0j) += 2 => (4+0j) +(2+0j) - 2 = 0j +(2+0j) -= 2 => 0j +(2+0j) * 2 = (4+0j) +(2+0j) *= 2 => (4+0j) +(2+0j) / 2 = (1+0j) +(2+0j) /= 2 => (1+0j) +(2+0j) ** 2 = (4+0j) +(2+0j) **= 2 => (4+0j) +(2+0j) % 2 = 0j +(2+0j) %= 2 => 0j +(2+0j) + (2+0j) = (4+0j) +(2+0j) += (2+0j) => (4+0j) +(2+0j) - (2+0j) = 0j +(2+0j) -= (2+0j) => 0j +(2+0j) * (2+0j) = (4+0j) +(2+0j) *= (2+0j) => (4+0j) +(2+0j) / (2+0j) = (1+0j) +(2+0j) /= (2+0j) => (1+0j) +(2+0j) ** (2+0j) = (4+0j) +(2+0j) **= (2+0j) => (4+0j) +(2+0j) % (2+0j) = 0j +(2+0j) %= (2+0j) => 0j +(2+0j) + [1] ... +(2+0j) += [1] ... +(2+0j) - [1] ... +(2+0j) -= [1] ... +(2+0j) * [1] ... +(2+0j) *= [1] ... +(2+0j) / [1] ... +(2+0j) /= [1] ... +(2+0j) ** [1] ... +(2+0j) **= [1] ... +(2+0j) % [1] ... +(2+0j) %= [1] ... +(2+0j) + (2,) ... +(2+0j) += (2,) ... +(2+0j) - (2,) ... +(2+0j) -= (2,) ... +(2+0j) * (2,) ... +(2+0j) *= (2,) ... +(2+0j) / (2,) ... +(2+0j) /= (2,) ... +(2+0j) ** (2,) ... +(2+0j) **= (2,) ... +(2+0j) % (2,) ... +(2+0j) %= (2,) ... +(2+0j) + None ... +(2+0j) += None ... +(2+0j) - None ... +(2+0j) -= None ... +(2+0j) * None ... +(2+0j) *= None ... +(2+0j) / None ... +(2+0j) /= None ... +(2+0j) ** None ... +(2+0j) **= None ... +(2+0j) % None ... +(2+0j) %= None ... +(2+0j) + = (3+0j) +(2+0j) += => (3+0j) +(2+0j) - = (1+0j) +(2+0j) -= => (1+0j) +(2+0j) * = (2+0j) +(2+0j) *= => (2+0j) +(2+0j) / = (2+0j) +(2+0j) /= => (2+0j) +(2+0j) ** = (2+0j) +(2+0j) **= => (2+0j) +(2+0j) % = 0j +(2+0j) %= => 0j +(2+0j) + = (4+0j) +(2+0j) += => (4+0j) +(2+0j) - = 0j +(2+0j) -= => 0j +(2+0j) * = (4+0j) +(2+0j) *= => (4+0j) +(2+0j) / = (1+0j) +(2+0j) /= => (1+0j) +(2+0j) ** = (4+0j) +(2+0j) **= => (4+0j) +(2+0j) % = 0j +(2+0j) %= => 0j +[1] + 2 ... +[1] += 2 ... +[1] - 2 ... +[1] -= 2 ... +[1] * 2 = [1, 1] +[1] *= 2 => [1, 1] +[1] / 2 ... +[1] /= 2 ... +[1] ** 2 ... +[1] **= 2 ... +[1] % 2 ... +[1] %= 2 ... +[1] + 4.0 ... +[1] += 4.0 ... +[1] - 4.0 ... +[1] -= 4.0 ... +[1] * 4.0 ... +[1] *= 4.0 ... +[1] / 4.0 ... +[1] /= 4.0 ... +[1] ** 4.0 ... +[1] **= 4.0 ... +[1] % 4.0 ... +[1] %= 4.0 ... +[1] + 2 ... +[1] += 2 ... +[1] - 2 ... +[1] -= 2 ... +[1] * 2 = [1, 1] +[1] *= 2 => [1, 1] +[1] / 2 ... +[1] /= 2 ... +[1] ** 2 ... +[1] **= 2 ... +[1] % 2 ... +[1] %= 2 ... +[1] + (2+0j) ... +[1] += (2+0j) ... +[1] - (2+0j) ... +[1] -= (2+0j) ... +[1] * (2+0j) ... +[1] *= (2+0j) ... +[1] / (2+0j) ... +[1] /= (2+0j) ... +[1] ** (2+0j) ... +[1] **= (2+0j) ... +[1] % (2+0j) ... +[1] %= (2+0j) ... +[1] + [1] = [1, 1] +[1] += [1] => [1, 1] +[1] - [1] ... +[1] -= [1] ... +[1] * [1] ... +[1] *= [1] ... +[1] / [1] ... +[1] /= [1] ... +[1] ** [1] ... +[1] **= [1] ... +[1] % [1] ... +[1] %= [1] ... +[1] + (2,) ... +[1] += (2,) => [1, 2] +[1] - (2,) ... +[1] -= (2,) ... +[1] * (2,) ... +[1] *= (2,) ... +[1] / (2,) ... +[1] /= (2,) ... +[1] ** (2,) ... +[1] **= (2,) ... +[1] % (2,) ... +[1] %= (2,) ... +[1] + None ... +[1] += None ... +[1] - None ... +[1] -= None ... +[1] * None ... +[1] *= None ... +[1] / None ... +[1] /= None ... +[1] ** None ... +[1] **= None ... +[1] % None ... +[1] %= None ... +[1] + ... +[1] += ... +[1] - ... +[1] -= ... +[1] * ... +[1] *= ... +[1] / ... +[1] /= ... +[1] ** ... +[1] **= ... +[1] % ... +[1] %= ... +[1] + ... +[1] += ... +[1] - ... +[1] -= ... +[1] * ... +[1] *= ... +[1] / ... +[1] /= ... +[1] ** ... +[1] **= ... +[1] % ... +[1] %= ... +(2,) + 2 ... +(2,) += 2 ... +(2,) - 2 ... +(2,) -= 2 ... +(2,) * 2 = (2, 2) +(2,) *= 2 => (2, 2) +(2,) / 2 ... +(2,) /= 2 ... +(2,) ** 2 ... +(2,) **= 2 ... +(2,) % 2 ... +(2,) %= 2 ... +(2,) + 4.0 ... +(2,) += 4.0 ... +(2,) - 4.0 ... +(2,) -= 4.0 ... +(2,) * 4.0 ... +(2,) *= 4.0 ... +(2,) / 4.0 ... +(2,) /= 4.0 ... +(2,) ** 4.0 ... +(2,) **= 4.0 ... +(2,) % 4.0 ... +(2,) %= 4.0 ... +(2,) + 2 ... +(2,) += 2 ... +(2,) - 2 ... +(2,) -= 2 ... +(2,) * 2 = (2, 2) +(2,) *= 2 => (2, 2) +(2,) / 2 ... +(2,) /= 2 ... +(2,) ** 2 ... +(2,) **= 2 ... +(2,) % 2 ... +(2,) %= 2 ... +(2,) + (2+0j) ... +(2,) += (2+0j) ... +(2,) - (2+0j) ... +(2,) -= (2+0j) ... +(2,) * (2+0j) ... +(2,) *= (2+0j) ... +(2,) / (2+0j) ... +(2,) /= (2+0j) ... +(2,) ** (2+0j) ... +(2,) **= (2+0j) ... +(2,) % (2+0j) ... +(2,) %= (2+0j) ... +(2,) + [1] ... +(2,) += [1] ... +(2,) - [1] ... +(2,) -= [1] ... +(2,) * [1] ... +(2,) *= [1] ... +(2,) / [1] ... +(2,) /= [1] ... +(2,) ** [1] ... +(2,) **= [1] ... +(2,) % [1] ... +(2,) %= [1] ... +(2,) + (2,) = (2, 2) +(2,) += (2,) => (2, 2) +(2,) - (2,) ... +(2,) -= (2,) ... +(2,) * (2,) ... +(2,) *= (2,) ... +(2,) / (2,) ... +(2,) /= (2,) ... +(2,) ** (2,) ... +(2,) **= (2,) ... +(2,) % (2,) ... +(2,) %= (2,) ... +(2,) + None ... +(2,) += None ... +(2,) - None ... +(2,) -= None ... +(2,) * None ... +(2,) *= None ... +(2,) / None ... +(2,) /= None ... +(2,) ** None ... +(2,) **= None ... +(2,) % None ... +(2,) %= None ... +(2,) + ... +(2,) += ... +(2,) - ... +(2,) -= ... +(2,) * ... +(2,) *= ... +(2,) / ... +(2,) /= ... +(2,) ** ... +(2,) **= ... +(2,) % ... +(2,) %= ... +(2,) + ... +(2,) += ... +(2,) - ... +(2,) -= ... +(2,) * ... +(2,) *= ... +(2,) / ... +(2,) /= ... +(2,) ** ... +(2,) **= ... +(2,) % ... +(2,) %= ... +None + 2 ... +None += 2 ... +None - 2 ... +None -= 2 ... +None * 2 ... +None *= 2 ... +None / 2 ... +None /= 2 ... +None ** 2 ... +None **= 2 ... +None % 2 ... +None %= 2 ... +None + 4.0 ... +None += 4.0 ... +None - 4.0 ... +None -= 4.0 ... +None * 4.0 ... +None *= 4.0 ... +None / 4.0 ... +None /= 4.0 ... +None ** 4.0 ... +None **= 4.0 ... +None % 4.0 ... +None %= 4.0 ... +None + 2 ... +None += 2 ... +None - 2 ... +None -= 2 ... +None * 2 ... +None *= 2 ... +None / 2 ... +None /= 2 ... +None ** 2 ... +None **= 2 ... +None % 2 ... +None %= 2 ... +None + (2+0j) ... +None += (2+0j) ... +None - (2+0j) ... +None -= (2+0j) ... +None * (2+0j) ... +None *= (2+0j) ... +None / (2+0j) ... +None /= (2+0j) ... +None ** (2+0j) ... +None **= (2+0j) ... +None % (2+0j) ... +None %= (2+0j) ... +None + [1] ... +None += [1] ... +None - [1] ... +None -= [1] ... +None * [1] ... +None *= [1] ... +None / [1] ... +None /= [1] ... +None ** [1] ... +None **= [1] ... +None % [1] ... +None %= [1] ... +None + (2,) ... +None += (2,) ... +None - (2,) ... +None -= (2,) ... +None * (2,) ... +None *= (2,) ... +None / (2,) ... +None /= (2,) ... +None ** (2,) ... +None **= (2,) ... +None % (2,) ... +None %= (2,) ... +None + None ... +None += None ... +None - None ... +None -= None ... +None * None ... +None *= None ... +None / None ... +None /= None ... +None ** None ... +None **= None ... +None % None ... +None %= None ... +None + ... +None += ... +None - ... +None -= ... +None * ... +None *= ... +None / ... +None /= ... +None ** ... +None **= ... +None % ... +None %= ... +None + ... +None += ... +None - ... +None -= ... +None * ... +None *= ... +None / ... +None /= ... +None ** ... +None **= ... +None % ... +None %= ... + + 2 = 3 + += 2 => 3 + - 2 = -1 + -= 2 => -1 + * 2 = 2 + *= 2 => 2 + / 2 = 0 + /= 2 => 0 + ** 2 = 1 + **= 2 => 1 + % 2 = 1 + %= 2 => 1 + + 4.0 = 5.0 + += 4.0 => 5.0 + - 4.0 = -3.0 + -= 4.0 => -3.0 + * 4.0 = 4.0 + *= 4.0 => 4.0 + / 4.0 = 0.25 + /= 4.0 => 0.25 + ** 4.0 = 1.0 + **= 4.0 => 1.0 + % 4.0 = 1.0 + %= 4.0 => 1.0 + + 2 = 3 + += 2 => 3 + - 2 = -1 + -= 2 => -1 + * 2 = 2 + *= 2 => 2 + / 2 = 0 + /= 2 => 0 + ** 2 = 1 + **= 2 => 1 + % 2 = 1 + %= 2 => 1 + + (2+0j) = (3+0j) + += (2+0j) => (3+0j) + - (2+0j) = (-1+0j) + -= (2+0j) => (-1+0j) + * (2+0j) = (2+0j) + *= (2+0j) => (2+0j) + / (2+0j) = (0.5+0j) + /= (2+0j) => (0.5+0j) + ** (2+0j) = (1+0j) + **= (2+0j) => (1+0j) + % (2+0j) = (1+0j) + %= (2+0j) => (1+0j) + + [1] ... + += [1] ... + - [1] ... + -= [1] ... + * [1] = [1] + *= [1] => [1] + / [1] ... + /= [1] ... + ** [1] ... + **= [1] ... + % [1] ... + %= [1] ... + + (2,) ... + += (2,) ... + - (2,) ... + -= (2,) ... + * (2,) = (2,) + *= (2,) => (2,) + / (2,) ... + /= (2,) ... + ** (2,) ... + **= (2,) ... + % (2,) ... + %= (2,) ... + + None ... + += None ... + - None ... + -= None ... + * None ... + *= None ... + / None ... + /= None ... + ** None ... + **= None ... + % None ... + %= None ... + + = 2 + += => 2 + - = 0 + -= => 0 + * = 1 + *= => 1 + / = 1 + /= => 1 + ** = 1 + **= => 1 + % = 0 + %= => 0 + + = 3 + += => 3 + - = -1 + -= => -1 + * = 2 + *= => 2 + / = 0 + /= => 0 + ** = 1 + **= => 1 + % = 1 + %= => 1 + + 2 = 4 + += 2 => 4 + - 2 = 0 + -= 2 => 0 + * 2 = 4 + *= 2 => 4 + / 2 = 1 + /= 2 => 1 + ** 2 = 4 + **= 2 => 4 + % 2 = 0 + %= 2 => 0 + + 4.0 = 6.0 + += 4.0 => 6.0 + - 4.0 = -2.0 + -= 4.0 => -2.0 + * 4.0 = 8.0 + *= 4.0 => 8.0 + / 4.0 = 0.5 + /= 4.0 => 0.5 + ** 4.0 = 16.0 + **= 4.0 => 16.0 + % 4.0 = 2.0 + %= 4.0 => 2.0 + + 2 = 4 + += 2 => 4 + - 2 = 0 + -= 2 => 0 + * 2 = 4 + *= 2 => 4 + / 2 = 1 + /= 2 => 1 + ** 2 = 4 + **= 2 => 4 + % 2 = 0 + %= 2 => 0 + + (2+0j) = (4+0j) Added: pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,39 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:59:33 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_coercion.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py:0: DeprecationWarning: complex divmod(), // and % are deprecated +/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py:1: DeprecationWarning: complex divmod(), // and % are deprecated + import copy +/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py:63: DeprecationWarning: complex divmod(), // and % are deprecated + return other % self.arg +/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py:60: DeprecationWarning: complex divmod(), // and % are deprecated + return self.arg % other +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py", line 117 in ? +do_infix_binops() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py", line 88 in do_infix_binops + z = copy.copy(a) + File "/home/arigo/pypysrc/lib-python-2.3.4/copy.py", line 75 in copy + return copier(x) + File "/home/arigo/pypysrc/lib-python-2.3.4/copy.py", line 140 in _copy_inst + if hasattr(x, '__copy__'): +KeyboardInterrupt +========================== closed ========================== +execution time: 900.308280945 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_commands.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_commands.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,26 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_commands.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:58:28 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_getoutput (__main__.CommandTests) ... ok +test_getstatus (__main__.CommandTests) ... ok + +---------------------------------------------------------------------- +Ran 2 tests in 54.851s + +OK +========================== closed ========================== +execution time: 65.4368319511 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_compare.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_compare.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,101 @@ +test_compare +2 == 2 +2 == 2.0 +2 == 2 +2 == (2+0j) +2 != [1] +2 != (3,) +2 != None +2 != +2 == +2 == +2.0 == 2 +2.0 == 2.0 +2.0 == 2 +2.0 == (2+0j) +2.0 != [1] +2.0 != (3,) +2.0 != None +2.0 != +2.0 == +2.0 == +2 == 2 +2 == 2.0 +2 == 2 +2 == (2+0j) +2 != [1] +2 != (3,) +2 != None +2 != +2 == +2 == +(2+0j) == 2 +(2+0j) == 2.0 +(2+0j) == 2 +(2+0j) == (2+0j) +(2+0j) != [1] +(2+0j) != (3,) +(2+0j) != None +(2+0j) != +(2+0j) == +(2+0j) == +[1] != 2 +[1] != 2.0 +[1] != 2 +[1] != (2+0j) +[1] == [1] +[1] != (3,) +[1] != None +[1] != +[1] != +[1] != +(3,) != 2 +(3,) != 2.0 +(3,) != 2 +(3,) != (2+0j) +(3,) != [1] +(3,) == (3,) +(3,) != None +(3,) != +(3,) != +(3,) != +None != 2 +None != 2.0 +None != 2 +None != (2+0j) +None != [1] +None != (3,) +None == None +None != +None != +None != + != 2 + != 2.0 + != 2 + != (2+0j) + != [1] + != (3,) + != None + == + != + != + == 2 + == 2.0 + == 2 + == (2+0j) + != [1] + != (3,) + != None + != + == + == + == 2 + == 2.0 + == 2 + == (2+0j) + != [1] + != (3,) + != None + != + == + == Added: pypy/dist/lib-python-2.3.4/test/result/test_compare.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_compare.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_compare.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:56:38 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_compare.out +============================================================ +faking +faking +faking +========================== closed ========================== +execution time: 110.46966815 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_compile.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_compile.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,35 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_compile.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:56:12 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +:0: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:0: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +test_argument_handling (__main__.TestSpecifics) ... ok +test_argument_order (__main__.TestSpecifics) ... ok +test_complex_args (__main__.TestSpecifics) ... ok +test_debug_assignment (__main__.TestSpecifics) ... ok +test_duplicate_global_local (__main__.TestSpecifics) ... ok +test_float_literals (__main__.TestSpecifics) ... ok +test_indentation (__main__.TestSpecifics) ... ok +test_literals_with_leading_zeroes (__main__.TestSpecifics) ... ok +test_sequence_unpacking_error (__main__.TestSpecifics) ... ok +test_syntax_error (__main__.TestSpecifics) ... ok +test_unary_minus (__main__.TestSpecifics) ... ok + +---------------------------------------------------------------------- +Ran 11 tests in 17.815s + +OK +========================== closed ========================== +execution time: 25.7041759491 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_complex.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_complex.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,45 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:41:11 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py", line 316 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py", line 313 in test_main + test_support.run_unittest(ComplexTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py", line 75 in test_div + self.check_div(x, y) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py", line 58 in check_div + q = z.__div__(x) +KeyboardInterrupt +test_abs (__main__.ComplexTest) ... ok +test_boolcontext (__main__.ComplexTest) ... ok +test_coerce (__main__.ComplexTest) ... ok +test_conjugate (__main__.ComplexTest) ... ok +test_constructor (__main__.ComplexTest) ... ERROR +test_div (__main__.ComplexTest) ... ========================== closed ========================== +execution time: 900.152910948 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_contains.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_contains.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_contains.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:40:57 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 13.7012701035 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_cookie.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_cookie.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,323 @@ +test_cookie + +Set-Cookie: chips=ahoy; +Set-Cookie: vienna=finger; + chips 'ahoy' 'ahoy' +Set-Cookie: chips=ahoy; + vienna 'finger' 'finger' +Set-Cookie: vienna=finger; + +Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"; + keebler 'E=mc2; L="Loves"; fudge=\n;' 'E=mc2; L="Loves"; fudge=\n;' +Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"; + +Set-Cookie: keebler=E=mc2; + keebler 'E=mc2' 'E=mc2' +Set-Cookie: keebler=E=mc2; +Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme; + + + + + + +If anything blows up after this line, it's from Cookie's doctest. +Running Cookie.__doc__ +Trying: import Cookie +Expecting: nothing +ok +Trying: C = Cookie.SimpleCookie() +Expecting: nothing +ok +Trying: C = Cookie.SerialCookie() +Expecting: nothing +ok +Trying: C = Cookie.SmartCookie() +Expecting: nothing +ok +Trying: C = Cookie.SmartCookie() +Expecting: nothing +ok +Trying: C["fig"] = "newton" +Expecting: nothing +ok +Trying: C["sugar"] = "wafer" +Expecting: nothing +ok +Trying: print C +Expecting: +Set-Cookie: fig=newton; +Set-Cookie: sugar=wafer; +ok +Trying: C = Cookie.SmartCookie() +Expecting: nothing +ok +Trying: C["rocky"] = "road" +Expecting: nothing +ok +Trying: C["rocky"]["path"] = "/cookie" +Expecting: nothing +ok +Trying: print C.output(header="Cookie:") +Expecting: Cookie: rocky=road; Path=/cookie; +ok +Trying: print C.output(attrs=[], header="Cookie:") +Expecting: Cookie: rocky=road; +ok +Trying: C = Cookie.SmartCookie() +Expecting: nothing +ok +Trying: C.load("chips=ahoy; vienna=finger") +Expecting: nothing +ok +Trying: print C +Expecting: +Set-Cookie: chips=ahoy; +Set-Cookie: vienna=finger; +ok +Trying: C = Cookie.SmartCookie() +Expecting: nothing +ok +Trying: C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=\\012;";') +Expecting: nothing +ok +Trying: print C +Expecting: Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=\012;"; +ok +Trying: C = Cookie.SmartCookie() +Expecting: nothing +ok +Trying: C["oreo"] = "doublestuff" +Expecting: nothing +ok +Trying: C["oreo"]["path"] = "/" +Expecting: nothing +ok +Trying: print C +Expecting: Set-Cookie: oreo=doublestuff; Path=/; +ok +Trying: C = Cookie.SmartCookie() +Expecting: nothing +ok +Trying: C["twix"] = "none for you" +Expecting: nothing +ok +Trying: C["twix"].value +Expecting: 'none for you' +ok +Trying: C = Cookie.SimpleCookie() +Expecting: nothing +ok +Trying: C["number"] = 7 +Expecting: nothing +ok +Trying: C["string"] = "seven" +Expecting: nothing +ok +Trying: C["number"].value +Expecting: '7' +ok +Trying: C["string"].value +Expecting: 'seven' +ok +Trying: print C +Expecting: +Set-Cookie: number=7; +Set-Cookie: string=seven; +ok +Trying: C = Cookie.SerialCookie() +Expecting: nothing +ok +Trying: C["number"] = 7 +Expecting: nothing +ok +Trying: C["string"] = "seven" +Expecting: nothing +ok +Trying: C["number"].value +Expecting: 7 +ok +Trying: C["string"].value +Expecting: 'seven' +ok +Trying: print C +Expecting: +Set-Cookie: number="I7\012."; +Set-Cookie: string="S'seven'\012p1\012."; +***************************************************************** +Failure in example: print C +from line #126 of Cookie +Expected: +Set-Cookie: number="I7\012."; +Set-Cookie: string="S'seven'\012p1\012."; +Got: +Set-Cookie: number="I7\012."; +Set-Cookie: string="S'seven'\012p0\012."; +Trying: C = Cookie.SmartCookie() +Expecting: nothing +ok +Trying: C["number"] = 7 +Expecting: nothing +ok +Trying: C["string"] = "seven" +Expecting: nothing +ok +Trying: C["number"].value +Expecting: 7 +ok +Trying: C["string"].value +Expecting: 'seven' +ok +Trying: print C +Expecting: +Set-Cookie: number="I7\012."; +Set-Cookie: string=seven; +ok +Trying: C = Cookie.Cookie() +Expecting: nothing +ok +Trying: print C.__class__.__name__ +Expecting: SmartCookie +ok +1 of 46 examples failed in Cookie.__doc__ +Running Cookie.BaseCookie.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.__doc__ +Running Cookie.BaseCookie._BaseCookie__ParseString.__doc__ +0 of 0 examples failed in Cookie.BaseCookie._BaseCookie__ParseString.__doc__ +Running Cookie.BaseCookie._BaseCookie__set.__doc__ +0 of 0 examples failed in Cookie.BaseCookie._BaseCookie__set.__doc__ +Running Cookie.BaseCookie.__init__.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.__init__.__doc__ +Running Cookie.BaseCookie.__repr__.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.__repr__.__doc__ +Running Cookie.BaseCookie.__setitem__.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.__setitem__.__doc__ +Running Cookie.BaseCookie.__str__.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.__str__.__doc__ +Running Cookie.BaseCookie.js_output.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.js_output.__doc__ +Running Cookie.BaseCookie.load.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.load.__doc__ +Running Cookie.BaseCookie.output.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.output.__doc__ +Running Cookie.BaseCookie.value_decode.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.value_decode.__doc__ +Running Cookie.BaseCookie.value_encode.__doc__ +0 of 0 examples failed in Cookie.BaseCookie.value_encode.__doc__ +Running Cookie.Cookie.__doc__ +0 of 0 examples failed in Cookie.Cookie.__doc__ +Running Cookie.Cookie.__init__.__doc__ +0 of 0 examples failed in Cookie.Cookie.__init__.__doc__ +Running Cookie.Cookie.value_decode.__doc__ +0 of 0 examples failed in Cookie.Cookie.value_decode.__doc__ +Running Cookie.Cookie.value_encode.__doc__ +0 of 0 examples failed in Cookie.Cookie.value_encode.__doc__ +Running Cookie.CookieError.__doc__ +0 of 0 examples failed in Cookie.CookieError.__doc__ +Running Cookie.Morsel.__doc__ +0 of 0 examples failed in Cookie.Morsel.__doc__ +Running Cookie.Morsel.OutputString.__doc__ +0 of 0 examples failed in Cookie.Morsel.OutputString.__doc__ +Running Cookie.Morsel.__init__.__doc__ +0 of 0 examples failed in Cookie.Morsel.__init__.__doc__ +Running Cookie.Morsel.__repr__.__doc__ +0 of 0 examples failed in Cookie.Morsel.__repr__.__doc__ +Running Cookie.Morsel.__setitem__.__doc__ +0 of 0 examples failed in Cookie.Morsel.__setitem__.__doc__ +Running Cookie.Morsel.__str__.__doc__ +0 of 0 examples failed in Cookie.Morsel.__str__.__doc__ +Running Cookie.Morsel.isReservedKey.__doc__ +0 of 0 examples failed in Cookie.Morsel.isReservedKey.__doc__ +Running Cookie.Morsel.js_output.__doc__ +0 of 0 examples failed in Cookie.Morsel.js_output.__doc__ +Running Cookie.Morsel.output.__doc__ +0 of 0 examples failed in Cookie.Morsel.output.__doc__ +Running Cookie.Morsel.set.__doc__ +0 of 0 examples failed in Cookie.Morsel.set.__doc__ +Running Cookie.SerialCookie.__doc__ +0 of 0 examples failed in Cookie.SerialCookie.__doc__ +Running Cookie.SerialCookie.__init__.__doc__ +0 of 0 examples failed in Cookie.SerialCookie.__init__.__doc__ +Running Cookie.SerialCookie.value_decode.__doc__ +0 of 0 examples failed in Cookie.SerialCookie.value_decode.__doc__ +Running Cookie.SerialCookie.value_encode.__doc__ +0 of 0 examples failed in Cookie.SerialCookie.value_encode.__doc__ +Running Cookie.SimpleCookie.__doc__ +0 of 0 examples failed in Cookie.SimpleCookie.__doc__ +Running Cookie.SimpleCookie.value_decode.__doc__ +0 of 0 examples failed in Cookie.SimpleCookie.value_decode.__doc__ +Running Cookie.SimpleCookie.value_encode.__doc__ +0 of 0 examples failed in Cookie.SimpleCookie.value_encode.__doc__ +Running Cookie.SmartCookie.__doc__ +0 of 0 examples failed in Cookie.SmartCookie.__doc__ +Running Cookie.SmartCookie.__init__.__doc__ +0 of 0 examples failed in Cookie.SmartCookie.__init__.__doc__ +Running Cookie.SmartCookie.value_decode.__doc__ +0 of 0 examples failed in Cookie.SmartCookie.value_decode.__doc__ +Running Cookie.SmartCookie.value_encode.__doc__ +0 of 0 examples failed in Cookie.SmartCookie.value_encode.__doc__ +Running Cookie._getdate.__doc__ +0 of 0 examples failed in Cookie._getdate.__doc__ +Running Cookie._quote.__doc__ +0 of 0 examples failed in Cookie._quote.__doc__ +Running Cookie._test.__doc__ +0 of 0 examples failed in Cookie._test.__doc__ +Running Cookie._unquote.__doc__ +0 of 0 examples failed in Cookie._unquote.__doc__ +42 items had no tests: + Cookie.BaseCookie + Cookie.BaseCookie._BaseCookie__ParseString + Cookie.BaseCookie._BaseCookie__set + Cookie.BaseCookie.__init__ + Cookie.BaseCookie.__repr__ + Cookie.BaseCookie.__setitem__ + Cookie.BaseCookie.__str__ + Cookie.BaseCookie.js_output + Cookie.BaseCookie.load + Cookie.BaseCookie.output + Cookie.BaseCookie.value_decode + Cookie.BaseCookie.value_encode + Cookie.Cookie + Cookie.Cookie.__init__ + Cookie.Cookie.value_decode + Cookie.Cookie.value_encode + Cookie.CookieError + Cookie.Morsel + Cookie.Morsel.OutputString + Cookie.Morsel.__init__ + Cookie.Morsel.__repr__ + Cookie.Morsel.__setitem__ + Cookie.Morsel.__str__ + Cookie.Morsel.isReservedKey + Cookie.Morsel.js_output + Cookie.Morsel.output + Cookie.Morsel.set + Cookie.SerialCookie + Cookie.SerialCookie.__init__ + Cookie.SerialCookie.value_decode + Cookie.SerialCookie.value_encode + Cookie.SimpleCookie + Cookie.SimpleCookie.value_decode + Cookie.SimpleCookie.value_encode + Cookie.SmartCookie + Cookie.SmartCookie.__init__ + Cookie.SmartCookie.value_decode + Cookie.SmartCookie.value_encode + Cookie._getdate + Cookie._quote + Cookie._test + Cookie._unquote +***************************************************************** +1 items had failures: + 1 of 46 in Cookie +46 tests in 43 items. +45 passed and 1 failed. +***Test Failed*** 1 failures. Added: pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,27 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cookie.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:32:12 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_cookie.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cookie.py", line 52 in ? +run_doctest(Cookie) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest + raise TestFailed("%d of %d doctests failed" % (f, t)) +TestFailed: 1 of 46 doctests failed +========================== closed ========================== +execution time: 525.243942022 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_copy.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_copy.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,74 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_copy.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:31:27 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_copy_atomic (__main__.TestCopy) ... ok +test_copy_basic (__main__.TestCopy) ... ok +test_copy_cant (__main__.TestCopy) ... ok +test_copy_copy (__main__.TestCopy) ... ok +test_copy_dict (__main__.TestCopy) ... ok +test_copy_inst_copy (__main__.TestCopy) ... ok +test_copy_inst_getinitargs (__main__.TestCopy) ... ok +test_copy_inst_getstate (__main__.TestCopy) ... ok +test_copy_inst_getstate_setstate (__main__.TestCopy) ... ok +test_copy_inst_setstate (__main__.TestCopy) ... ok +test_copy_inst_vanilla (__main__.TestCopy) ... ok +test_copy_list (__main__.TestCopy) ... ok +test_copy_list_subclass (__main__.TestCopy) ... ok +test_copy_reduce (__main__.TestCopy) ... ok +test_copy_reduce_ex (__main__.TestCopy) ... ok +test_copy_registry (__main__.TestCopy) ... ok +test_copy_slots (__main__.TestCopy) ... ok +test_copy_tuple (__main__.TestCopy) ... ok +test_copy_tuple_subclass (__main__.TestCopy) ... ok +test_deepcopy_atomic (__main__.TestCopy) ... ok +test_deepcopy_basic (__main__.TestCopy) ... ok +test_deepcopy_cant (__main__.TestCopy) ... ok +test_deepcopy_deepcopy (__main__.TestCopy) ... ok +test_deepcopy_dict (__main__.TestCopy) ... ok +test_deepcopy_inst_deepcopy (__main__.TestCopy) ... ok +test_deepcopy_inst_getinitargs (__main__.TestCopy) ... ok +test_deepcopy_inst_getstate (__main__.TestCopy) ... ok +test_deepcopy_inst_getstate_setstate (__main__.TestCopy) ... ok +test_deepcopy_inst_setstate (__main__.TestCopy) ... ok +test_deepcopy_inst_vanilla (__main__.TestCopy) ... ok +test_deepcopy_issubclass (__main__.TestCopy) ... ok +test_deepcopy_keepalive (__main__.TestCopy) ... ok +test_deepcopy_list (__main__.TestCopy) ... ok +test_deepcopy_list_subclass (__main__.TestCopy) ... ok +test_deepcopy_memo (__main__.TestCopy) ... ok +test_deepcopy_reduce (__main__.TestCopy) ... ok +test_deepcopy_reduce_ex (__main__.TestCopy) ... ok +test_deepcopy_reflexive_dict (__main__.TestCopy) ... ok +test_deepcopy_reflexive_inst (__main__.TestCopy) ... ok +test_deepcopy_reflexive_list (__main__.TestCopy) ... ok +test_deepcopy_reflexive_tuple (__main__.TestCopy) ... ok +test_deepcopy_registry (__main__.TestCopy) ... ok +test_deepcopy_slots (__main__.TestCopy) ... ok +test_deepcopy_tuple (__main__.TestCopy) ... ok +test_deepcopy_tuple_subclass (__main__.TestCopy) ... ok +test_exceptions (__main__.TestCopy) ... ok +test_getstate_exc (__main__.TestCopy) ... ok +test_reconstruct_nostate (__main__.TestCopy) ... ok +test_reconstruct_reflexive (__main__.TestCopy) ... ok +test_reconstruct_state (__main__.TestCopy) ... ok +test_reconstruct_state_setstate (__main__.TestCopy) ... ok +test_reconstruct_string (__main__.TestCopy) ... ok +test_reduce_4tuple (__main__.TestCopy) ... ok +test_reduce_5tuple (__main__.TestCopy) ... ok + +---------------------------------------------------------------------- +Ran 54 tests in 35.532s + +OK +========================== closed ========================== +execution time: 44.4596099854 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,29 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_copy_reg.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:30:59 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_bool (__main__.CopyRegTestCase) ... ok +test_class (__main__.CopyRegTestCase) ... ok +test_extension_registry (__main__.CopyRegTestCase) ... ok +test_noncallable_constructor (__main__.CopyRegTestCase) ... ok +test_noncallable_reduce (__main__.CopyRegTestCase) ... ok + +---------------------------------------------------------------------- +Ran 5 tests in 4.166s + +OK +========================== closed ========================== +execution time: 27.7843389511 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,56 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cpickle.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:15:59 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cpickle.py", line 103 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cpickle.py", line 99 in test_main + cPickleFastPicklerTests + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "pickletester.py", line 776 in test_dict_chunking + s = self.dumps(x, proto) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 1386 in dumps + Pickler(file, protocol, bin).dump(obj) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 231 in dump + self.save(obj) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save + f(self, obj) # Call unbound method with explicit self + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 663 in save_dict + self._batch_setitems(obj.iteritems()) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 677 in _batch_setitems + save(v) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save + f(self, obj) # Call unbound method with explicit self + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 441 in save_none + self.write(NONE) + File "/home/arigo/pypysrc/lib-python-2.3.4/StringIO.py", line 165 in write + self.len = self.pos = self.pos + len(s) +KeyboardInterrupt +test_dict_chunking (__main__.cPickleTests) ... ========================== closed ========================== +execution time: 900.230950117 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_crypt.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:15:53 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_crypt.py", line 7 in ? +import crypt +ImportError: crypt +========================== closed ========================== +execution time: 5.54157614708 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_csv.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_csv.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_csv.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:15:45 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_csv.py", line 8 in ? +import csv + File "/home/arigo/pypysrc/lib-python-2.3.4/csv.py", line 7 in ? +from _csv import Error, __version__, writer, reader, register_dialect, \ +ImportError: _csv +========================== closed ========================== +execution time: 7.3782081604 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_curses.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_curses.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_curses.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:15:43 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_curses.py", line 11 in ? +import curses, sys, tempfile + File "/home/arigo/pypysrc/lib-python-2.3.4/curses/__init__.py", line 15 in ? +from _curses import * +ImportError: _curses +========================== closed ========================== +execution time: 0.982558012009 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,106 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_datetime.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:00:43 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_datetime.py", line 3113 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_datetime.py", line 3096 in test_main + test_support.run_suite(thesuite) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_datetime.py", line 1385 in test_extract + self.assertEqual(dt.time(), time(18, 45, 3, 1234)) + File "/home/arigo/pypysrc/pypy/lib/datetime.py", line 1479 in time + return time(self.hour, self.minute, self.second, self.microsecond) + File "/home/arigo/pypysrc/pypy/lib/datetime.py", line 1099 in __new__ + if isinstance(hour, str): +KeyboardInterrupt +test_constants (__main__.TestModule) ... ok +test_non_abstractness (__main__.TestTZInfo) ... ok +test_normal (__main__.TestTZInfo) ... ok +test_pickling_base (__main__.TestTZInfo) ... ok +test_pickling_subclass (__main__.TestTZInfo) ... ok +test_subclass_must_override (__main__.TestTZInfo) ... ok +test_basic_attributes (__main__.TestTimeDelta) ... ok +test_bool (__main__.TestTimeDelta) ... ok +test_carries (__main__.TestTimeDelta) ... ok +test_compare (__main__.TestTimeDelta) ... ok +test_computations (__main__.TestTimeDelta) ... ok +test_constructor (__main__.TestTimeDelta) ... ok +test_disallowed_computations (__main__.TestTimeDelta) ... ok +test_harmful_mixed_comparison (__main__.TestTimeDelta) ... ok +test_harmless_mixed_comparison (__main__.TestTimeDelta) ... ok +test_hash_equality (__main__.TestTimeDelta) ... ok +test_massive_normalization (__main__.TestTimeDelta) ... ok +test_microsecond_rounding (__main__.TestTimeDelta) ... ok +test_overflow (__main__.TestTimeDelta) ... ok +test_pickling (__main__.TestTimeDelta) ... ok +test_resolution_info (__main__.TestTimeDelta) ... ok +test_roundtrip (__main__.TestTimeDelta) ... ok +test_str (__main__.TestTimeDelta) ... ok +test_subclass_timedelta (__main__.TestTimeDelta) ... ok +test_delta_non_days_ignored (__main__.TestDateOnly) ... ok +test_bad_constructor_arguments (__main__.TestDate) ... ok +test_basic_attributes (__main__.TestDate) ... ok +test_bool (__main__.TestDate) ... ok +test_compare (__main__.TestDate) ... ok +test_computations (__main__.TestDate) ... ok +test_ctime (__main__.TestDate) ... ok +test_extreme_ordinals (__main__.TestDate) ... ok +test_extreme_timedelta (__main__.TestDate) ... ok +test_fromtimestamp (__main__.TestDate) ... ok +test_harmful_mixed_comparison (__main__.TestDate) ... ok +test_harmless_mixed_comparison (__main__.TestDate) ... ok +test_hash_equality (__main__.TestDate) ... ok +test_iso_long_years (__main__.TestDate) ... ok +test_isocalendar (__main__.TestDate) ... ok +test_isoformat (__main__.TestDate) ... ok +test_mixed_compare (__main__.TestDate) ... ok +test_ordinal_conversions (__main__.TestDate) ... ok +test_overflow (__main__.TestDate) ... ok +test_pickling (__main__.TestDate) ... ok +test_replace (__main__.TestDate) ... ok +test_resolution_info (__main__.TestDate) ... ok +test_roundtrip (__main__.TestDate) ... ok +test_srftime_out_of_range (__main__.TestDate) ... ok +test_strftime (__main__.TestDate) ... ok +test_subclass_date (__main__.TestDate) ... ok +test_timetuple (__main__.TestDate) ... ok +test_today (__main__.TestDate) ... ok +test_weekday (__main__.TestDate) ... ok +test_astimezone (__main__.TestDateTime) ... ok +test_bad_constructor_arguments (__main__.TestDateTime) ... ok +test_basic_attributes (__main__.TestDateTime) ... ok +test_basic_attributes_nonzero (__main__.TestDateTime) ... ok +test_bool (__main__.TestDateTime) ... ok +test_combine (__main__.TestDateTime) ... ok +test_compare (__main__.TestDateTime) ... ok +test_computations (__main__.TestDateTime) ... ok +test_ctime (__main__.TestDateTime) ... ok +test_extract (__main__.TestDateTime) ... ========================== closed ========================== +execution time: 900.215548992 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dbm.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:00:37 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_dbm.py", line 7 in ? +import dbm +ImportError: dbm +========================== closed ========================== +execution time: 5.21238517761 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_descr.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_descr.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,28 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_descr.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 03:00:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descr.py", line 4050 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descr.py", line 3956 in test_main + weakref_segfault() # Must be first, somehow + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descr.py", line 3924 in weakref_segfault + import weakref + File "/home/arigo/pypysrc/lib-python-2.3.4/weakref.py", line 14 in ? +from _weakref import \ +ImportError: _weakref +Testing weakref segfault... +========================== closed ========================== +execution time: 28.1001598835 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,181 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_descrtut.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:52:18 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +***************************************************************** +Failure in example: print defaultdict # show our type +from line #4 of test.test_descrtut.__test__.tut1 +Expected: +Got: +***************************************************************** +Failure in example: print type(defaultdict) # its metatype +from line #6 of test.test_descrtut.__test__.tut1 +Expected: +Got: +***************************************************************** +Failure in example: print type(a) # show its type +from line #11 of test.test_descrtut.__test__.tut1 +Expected: +Got: +***************************************************************** +Failure in example: print a.__class__ # show its class +from line #13 of test.test_descrtut.__test__.tut1 +Expected: +Got: +***************************************************************** +Failure in example: print sorted(a.keys()) +from line #40 of test.test_descrtut.__test__.tut1 +Expected: [1, 2, '__builtins__', 'x'] +Got: ['__builtins__', 'x', 1, 2] +***************************************************************** +Failure in example: exec "print foo" in a +from line #49 of test.test_descrtut.__test__.tut1 +Expected: +Traceback (most recent call last): + File "", line 1, in ? + File "", line 1, in ? +NameError: name 'foo' is not defined +Got: 0.0 +***************************************************************** +Failure in example: type([]) +from line #6 of test.test_descrtut.__test__.tut3 +Expected: +Got: +***************************************************************** +Failure in example: [].__class__ +from line #8 of test.test_descrtut.__test__.tut3 +Expected: +Got: +***************************************************************** +Failure in example: list +from line #10 of test.test_descrtut.__test__.tut3 +Expected: +Got: +***************************************************************** +Failure in example: +pprint.pprint(dir(list)) # like list.__dict__.keys(), but sorted +from line #30 of test.test_descrtut.__test__.tut3 +Expected: +['__add__', + '__class__', + '__contains__', + '__delattr__', + '__delitem__', + '__delslice__', + '__doc__', + '__eq__', + '__ge__', + '__getattribute__', + '__getitem__', + '__getslice__', + '__gt__', + '__hash__', + '__iadd__', + '__imul__', + '__init__', + '__iter__', + '__le__', + '__len__', + '__lt__', + '__mul__', + '__ne__', + '__new__', + '__reduce__', + '__reduce_ex__', + '__repr__', + '__rmul__', + '__setattr__', + '__setitem__', + '__setslice__', + '__str__', + 'append', + 'count', + 'extend', + 'index', + 'insert', + 'pop', + 'remove', + 'reverse', + 'sort'] +Got: +['__add__', + '__class__', + '__contains__', + '__delattr__', + '__delitem__', + '__eq__', + '__ge__', + '__getattribute__', + '__getitem__', + '__gt__', + '__hash__', + '__iadd__', + '__imul__', + '__init__', + '__iter__', + '__le__', + '__len__', + '__lt__', + '__mul__', + '__ne__', + '__new__', + '__radd__', + '__reduce__', + '__reduce_ex__', + '__repr__', + '__reversed__', + '__rmul__', + '__setattr__', + '__setitem__', + '__str__', + 'append', + 'count', + 'extend', + 'index', + 'insert', + 'pop', + 'remove', + 'reverse', + 'sort'] +***************************************************************** +Failure in example: property +from line #50 of test.test_descrtut.__test__.tut5 +Expected: +Got: +***************************************************************** +Failure in example: C().foo() +from line #15 of test.test_descrtut.__test__.tut8 +Expected: +TypeError: unbound method foo() must be called with B instance as first argument (got C instance instead) +Got: +TypeError: unbound method must be called with instance as first argument +***************************************************************** +4 items had failures: + 6 of 30 in test.test_descrtut.__test__.tut1 + 4 of 1Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descrtut.py", line 503 in ? + test_main(1) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descrtut.py", line 499 in test_main + test_support.run_doctest(test_descrtut, verbose) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest + raise TestFailed("%d of %d doctests failed" % (f, t)) +TestFailed: 12 of 96 doctests failed +3 in test.test_descrtut.__test__.tut3 + 1 of 15 in test.test_descrtut.__test__.tut5 + 1 of 6 in test.test_descrtut.__test__.tut8 +***Test Failed*** 12 failures. +========================== closed ========================== +execution time: 470.132879972 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,76 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_difflib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:37:17 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_difflib.py", line 17 in ? +test_support.run_unittest(TestSFbugs, Doctests) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 423 in runTest + self.__testFunc() + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 1359 in runit + _utest(tester, name, doc, filename, lineno) + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 1298 in _utest + failures, tries = tester.runstring(doc, name) + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 743 in runstring + self.compileflags, self.optionflags) + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 510 in _run_examples + optionflags) + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442 in _run_examples_inner + compileflags, 1) in globs + File "", line 1 in ? + File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 54 in pprint + printer.pprint(object) + File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 105 in pprint + self._stream.write(self.pformat(object) + "\n") + File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 109 in pformat + self._format(object, sio, 0, 0, {}, 0) + File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 127 in _format + rep = self._repr(object, context, level - 1) + File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 191 in _repr + self._depth, level) + File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 203 in format + return _safe_repr(object, context, maxlevels, level) + File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 277 in _safe_repr + orepr, oreadable, orecur = _safe_repr(o, context, maxlevels, level) + File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 277 in _safe_repr + orepr, oreadable, orecur = _safe_repr(o, context, maxlevels, level) + File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 268 in _safe_repr + if objid in context: +KeyboardInterrupt +test_ratio_for_null_seqn (__main__.TestSFbugs) ... ok +doctest of difflib.Differ ... ok +doctest of difflib.Differ._fancy_replace ... ok +doctest of difflib.Differ._qformat ... ok +doctest of difflib.Differ.compare ... ok +doctest of difflib.IS_CHARACTER_JUNK ... ok +doctest of difflib.IS_LINE_JUNK ... ok +doctest of difflib.SequenceMatcher ... ok +doctest of difflib.SequenceMatcher.find_longest_match ... ok +doctest of difflib.SequenceMatcher.get_grouped_opcodes ... ========================== closed ========================== +execution time: 900.179348946 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,22 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dircache.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:37:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_annotate (__main__.DircacheTests) ... ok +test_listdir (__main__.DircacheTests) ... ok + +---------------------------------------------------------------------- +Ran 2 tests in 1.882s + +OK +========================== closed ========================== +execution time: 9.47014212608 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_dis.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_dis.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,28 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dis.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:36:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +test_boundaries (__main__.DisTests) ... ok +test_bug_708901 (__main__.DisTests) ... ok +test_dis (__main__.DisTests) ... ok +test_opmap (__main__.DisTests) ... ok +test_opname (__main__.DisTests) ... ok + +---------------------------------------------------------------------- +Ran 5 tests in 50.453s + +OK +========================== closed ========================== +execution time: 59.9506599903 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_dl.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_dl.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dl.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:36:06 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_dl.py", line 6 in ? +import dl +ImportError: dl +========================== closed ========================== +execution time: 0.862523078918 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,474 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_doctest.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:27:43 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +Running doctest.__doc__ +Trying: [1, 2, 3].remove(42) +Expecting: +Traceback (most recent call last): + File "", line 1, in ? +ValueError: list.remove(x): x not in list +ok +Trying: x = 12 +Expecting: nothing +ok +Trying: x +Expecting: 12 +ok +Trying: +if x == 13: + print "yes" +else: + print "no" + print "NO" + print "NO!!!" +Expecting: +no +NO +NO!!! +ok +Trying: +if "yes" == \ + "y" + \ + "es": # in the source code you'll see the doubled backslashes + print 'yes' +Expecting: yes +ok +Trying: assert "Easy!" +Expecting: nothing +ok +Trying: import math +Expecting: nothing +ok +Trying: math.floor(1.9) +Expecting: 1.0 +ok +0 of 8 examples failed in doctest.__doc__ +Running doctest.DocTestSuite.__doc__ +0 of 0 examples failed in doctest.DocTestSuite.__doc__ +Running doctest.DocTestTestFailure.__doc__ +0 of 0 examples failed in doctest.DocTestTestFailure.__doc__ +Running doctest.Tester.__doc__ +Trying: from doctest import Tester +Expecting: nothing +ok +Trying: t = Tester(globs={'x': 42}, verbose=0) +Expecting: nothing +ok +Trying: +t.runstring(r''' + >>> x = x * 2 + >>> print x + 42 +''', 'XYZ') +Expecting: +***************************************************************** +Failure in example: print x +from line #2 of XYZ +Expected: 42 +Got: 84 +(1, 2) +ok +Trying: t.runstring(">>> x = x * 2\n>>> print x\n84\n", 'example2') +Expecting: (0, 2) +ok +Trying: t.summarize() +Expecting: +***************************************************************** +1 items had failures: + 1 of 2 in XYZ +***Test Failed*** 1 failures. +(1, 4) +ok +Trying: t.summarize(verbose=1) +Expecting: +1 items passed all tests: + 2 tests in example2 +***************************************************************** +1 items had failures: + 1 of 2 in XYZ +4 tests in 2 items. +3 passed and 1 failed. +***Test Failed*** 1 failures. +(1, 4) +ok +0 of 6 examples failed in doctest.Tester.__doc__ +Running doctest.Tester._Tester__record_outcome.__doc__ +0 of 0 examples failed in doctest.Tester._Tester__record_outcome.__doc__ +Running doctest.Tester._Tester__runone.__doc__ +0 of 0 examples failed in doctest.Tester._Tester__runone.__doc__ +Running doctest.Tester.__init__.__doc__ +0 of 0 examples failed in doctest.Tester.__init__.__doc__ +Running doctest.Tester.merge.__doc__ +Trying: from doctest import Tester +Expecting: nothing +ok +Trying: t1 = Tester(globs={}, verbose=0) +Expecting: nothing +ok +Trying: +t1.runstring(''' +>>> x = 12 +>>> print x +12 +''', "t1example") +Expecting: (0, 2) +ok +Trying: t2 = Tester(globs={}, verbose=0) +Expecting: nothing +ok +Trying: +t2.runstring(''' +>>> x = 13 +>>> print x +13 +''', "t2example") +Expecting: (0, 2) +ok +Trying: common = ">>> assert 1 + 2 == 3\n" +Expecting: nothing +ok +Trying: t1.runstring(common, "common") +Expecting: (0, 1) +ok +Trying: t2.runstring(common, "common") +Expecting: (0, 1) +ok +Trying: t1.merge(t2) +Expecting: *** Tester.merge: 'common' in both testers; summing outcomes. +ok +Trying: t1.summarize(1) +Expecting: +3 items passed all tests: + 2 tests in common + 2 tests in t1example + 2 tests in t2example +6 tests in 3 items. +6 passed and 0 failed. +Test passed. +(0, 6) +ok +0 of 10 examples failed in doctest.Tester.merge.__doc__ +Running doctest.Tester.run__test__.__doc__ +0 of 0 examples failed in doctest.Tester.run__test__.__doc__ +Running doctest.Tester.rundict.__doc__ +Trying: import new +Expecting: nothing +ok +Trying: m1 = new.module('_m1') +Expecting: nothing +ok +Trying: m2 = new.module('_m2') +Expecting: nothing +ok +Trying: +test_data = """ +def _f(): + '''>>> assert 1 == 1 + ''' +def g(): + '''>>> assert 2 != 1 + ''' +class H: + '''>>> assert 2 > 1 + ''' + def bar(self): + '''>>> assert 1 < 2 + ''' +""" +Expecting: nothing +ok +Trying: exec test_data in m1.__dict__ +Expecting: nothing +ok +Trying: exec test_data in m2.__dict__ +Expecting: nothing +ok +Trying: m1.__dict__.update({"f2": m2._f, "g2": m2.g, "h2": m2.H}) +Expecting: nothing +ok +Trying: t = Tester(globs={}, verbose=0, isprivate=is_private) +Expecting: nothing +ok +Trying: +t.rundict(m1.__dict__, "rundict_test", m1) # _f, f2 and g2 and h2 skipped +Expecting: (0, 3) +ok +Trying: t = Tester(globs={}, verbose=0) +Expecting: nothing +ok +Trying: +t.rundict(m1.__dict__, "rundict_test_pvt", m1) # Only f2, g2 and h2 skipped +Expecting: (0, 4) +ok +Trying: t = Tester(globs={}, verbose=0) +Expecting: nothing +ok +Trying: t.rundict(m1.__dict__, "rundict_test_pvt") # None are skipped. +Expecting: (0, 8) +ok +Trying: testmod(m1, isprivate=is_private) +Expecting: (0, 3) +ok +0 of 14 examples failed in doctest.Tester.rundict.__doc__ +Running doctest.Tester.rundoc.__doc__ +Trying: t = Tester(globs={}, verbose=0) +Expecting: nothing +ok +Trying: +def _f(): + '''Trivial docstring example. + >>> assert 2 == 2 + ''' + return 32 +Expecting: nothing +ok +Trying: t.rundoc(_f) # expect 0 failures in 1 example +Expecting: (0, 1) +ok +0 of 3 examples failed in doctest.Tester.rundoc.__doc__ +Running doctest.Tester.runstring.__doc__ +Trying: t = Tester(globs={}, verbose=1) +Expecting: nothing +ok +Trying: +test = r''' + # just an example + >>> x = 1 + 2 + >>> x + 3 +''' +Expecting: nothing +ok +Trying: t.runstring(test, "Example") +Expecting: +Running string Example +Trying: x = 1 + 2 +Expecting: nothing +ok +Trying: x +Expecting: 3 +ok +0 of 2 examples failed in string Example +(0, 2) +ok +0 of 3 examples failed in doctest.Tester.runstring.__doc__ +Running doctest.Tester.summarize.__doc__ +0 of 0 examples failed in doctest.Tester.summarize.__doc__ +Running doctest._SpoofOut.__doc__ +0 of 0 examples failed in doctest._SpoofOut.__doc__ +Running doctest._SpoofOut.__init__.__doc__ +0 of 0 examples failed in doctest._SpoofOut.__init__.__doc__ +Running doctest._SpoofOut.clear.__doc__ +0 of 0 examples failed in doctest._SpoofOut.clear.__doc__ +Running doctest._SpoofOut.flush.__doc__ +0 of 0 examples failed in doctest._SpoofOut.flush.__doc__ +Running doctest._SpoofOut.get.__doc__ +0 of 0 examples failed in doctest._SpoofOut.get.__doc__ +Running doctest._SpoofOut.write.__doc__ +0 of 0 examples failed in doctest._SpoofOut.write.__doc__ +Running doctest._TestClass.__doc__ +Trying: _TestClass(13).get() + _TestClass(-12).get() +Expecting: 1 +ok +Trying: hex(_TestClass(13).square().get()) +Expecting: '0xa9' +ok +0 of 2 examples failed in doctest._TestClass.__doc__ +Running doctest._TestClass.__init__.__doc__ +Trying: t = _TestClass(123) +Expecting: nothing +ok +Trying: print t.get() +Expecting: 123 +ok +0 of 2 examples failed in doctest._TestClass.__init__.__doc__ +Running doctest._TestClass.get.__doc__ +Trying: x = _TestClass(-42) +Expecting: nothing +ok +Trying: print x.get() +Expecting: -42 +ok +0 of 2 examples failed in doctest._TestClass.get.__doc__ +Running doctest._TestClass.square.__doc__ +Trying: _TestClass(13).square().get() +Expecting: 169 +ok +0 of 1 examples failed in doctest._TestClass.square.__doc__ +Running doctest._expect.__doc__ +0 of 0 examples failed in doctest._expect.__doc__ +Running doctest._extract_doctests.__doc__ +0 of 0 examples failed in doctest._extract_doctests.__doc__ +Running doctest._extract_examples.__doc__ +0 of 0 examples failed in doctest._extract_examples.__doc__ +Running doctest._extract_future_flags.__doc__ +0 of 0 examples failed in doctest._extract_future_flags.__doc__ +Running doctest._find_tests.__doc__ +0 of 0 examples failed in doctest._find_tests.__doc__ +Running doctest._from_module.__doc__ +0 of 0 examples failed in doctest._from_module.__doc__ +Running doctest._get_doctest.__doc__ +0 of 0 examples failed in doctest._get_doctest.__doc__ +Running doctest._normalize_module.__doc__ +0 of 0 examples failed in doctest._normalize_module.__doc__ +Running doctest._run_examples.__doc__ +0 of 0 examples failed in doctest._run_examples.__doc__ +Running doctest._run_examples_inner.__doc__ +0 of 0 examples failed in doctest._run_examples_inner.__doc__ +Running doctest._tag_out.__doc__ +0 of 0 examples failed in doctest._tag_out.__doc__ +Running doctest._test.__doc__ +0 of 0 examples failed in doctest._test.__doc__ +Running doctest._utest.__doc__ +0 of 0 examples failed in doctest._utest.__doc__ +Running doctest.debug.__doc__ +0 of 0 examples failed in doctest.debug.__doc__ +Running doctest.is_private.__doc__ +Trying: is_private("a.b", "my_func") +Expecting: False +ok +Trying: is_private("____", "_my_func") +Expecting: True +ok +Trying: is_private("someclass", "__init__") +Expecting: False +ok +Trying: is_private("sometypo", "__init_") +Expecting: True +ok +Trying: is_private("x.y.z", "_") +Expecting: True +ok +Trying: is_private("_x.y.z", "__") +Expecting: False +ok +Trying: is_private("", "") # senseless but consistent +Expecting: False +ok +0 of 7 examples failed in doctest.is_private.__doc__ +Running doctest.run_docstring_examples.__doc__ +0 of 0 examples failed in doctest.run_docstring_examples.__doc__ +Running doctest.testmod.__doc__ +0 of 0 examples failed in doctest.testmod.__doc__ +Running doctest.testsource.__doc__ +0 of 0 examples failed in doctest.testsource.__doc__ +Running doctest.__test__._TestClass.__doc__ +Trying: _TestClass(13).get() + _TestClass(-12).get() +Expecting: 1 +ok +Trying: hex(_TestClass(13).square().get()) +Expecting: '0xa9' +ok +0 of 2 examples failed in doctest.__test__._TestClass.__doc__ +Running doctest.__test__._TestClass.__init__.__doc__ +Trying: t = _TestClass(123) +Expecting: nothing +ok +Trying: print t.get() +Expecting: 123 +ok +0 of 2 examples failed in doctest.__test__._TestClass.__init__.__doc__ +Running doctest.__test__._TestClass.get.__doc__ +Trying: x = _TestClass(-42) +Expecting: nothing +ok +Trying: print x.get() +Expecting: -42 +ok +0 of 2 examples failed in doctest.__test__._TestClass.get.__doc__ +Running doctest.__test__._TestClass.square.__doc__ +Trying: _TestClass(13).square().get() +Expecting: 169 +ok +0 of 1 examples failed in doctest.__test__._TestClass.square.__doc__ +Running string doctest.__test__.bool-int equivalence +Trying: 4 == 4 +Expecting: 1 +ok +Trying: 4 == 4 +Expecting: True +ok +Trying: 4 > 4 +Expecting: 0 +ok +Trying: 4 > 4 +Expecting: False +ok +0 of 4 examples failed in string doctest.__test__.bool-int equivalence +Running string doctest.__test__.string +Trying: x = 1; y = 2 +Expecting: nothing +ok +Trying: x + y, x * y +Expecting: (3, 2) +ok +0 of 2 examples failed in string doctest.__test__.string +30 items had no tests: + doctest.DocTestSuite + doctest.DocTestTestFailure + doctest.Tester._Tester__record_outcome + doctest.Tester._Tester__runone + doctest.Tester.__init__ + doctest.Tester.run__test__ + doctest.Tester.summarize + doctest._SpoofOut + doctest._SpoofOut.__init__ + doctest._SpoofOut.clear + doctest._SpoofOut.flush + doctest._SpoofOut.get + doctest._SpoofOut.write + doctest._expect + doctest._extract_doctests + doctest._extract_examples + doctest._extract_future_flags + doctest._find_tests + doctest._from_module + doctest._get_doctest + doctest._normalize_module + doctest._run_examples + doctest._run_examples_inner + doctest._tag_out + doctest._test + doctest._utest + doctest.debug + doctest.run_docstring_examples + doctest.testmod + doctest.testsource +17 items passed all tests: + 8 tests in doctest + 6 tests in doctest.Tester + 10 tests in doctest.Tester.merge + 14 tests in doctest.Tester.rundict + 3 tests in doctest.Tester.rundoc + 3 tests in doctest.Tester.runstring + 2 tests in doctest._TestClass + 2 tests in doctest._TestClass.__init__ + 2 tests in doctest._TestClass.get + 1 tests in doctest._TestClass.square + 2 tests in doctest.__test__._TestClass + 2 tests in doctest.__test__._TestClass.__init__ + 2 tests in doctest.__test__._TestClass.get + 1 tests in doctest.__test__._TestClass.square + 4 tests in doctest.__test__.bool-int equivalence + 2 tests in doctest.__test__.string + 7 tests in doctest.is_private +71 tests in 47 items. +71 passed and 0 failed. +Test passed. +doctest (doctest) ... 71 tests with zero failures +========================== closed ========================== +execution time: 502.863053083 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,118 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_doctest2.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:21:13 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +Running test.test_doctest2.__doc__ +Trying: print 'yup' # 1 +Expecting: yup +ok +0 of 1 examples failed in test.test_doctest2.__doc__ +Running test.test_doctest2.C.__doc__ +Trying: print C() # 2 +Expecting: 42 +ok +0 of 1 examples failed in test.test_doctest2.C.__doc__ +Running test.test_doctest2.C.D.__doc__ +Trying: print "In D!" # 5 +Expecting: In D! +ok +0 of 1 examples failed in test.test_doctest2.C.D.__doc__ +Running test.test_doctest2.C.D.nested.__doc__ +Trying: print 3 # 6 +Expecting: 3 +ok +0 of 1 examples failed in test.test_doctest2.C.D.nested.__doc__ +Running test.test_doctest2.C.__init__.__doc__ +Trying: print C() # 3 +Expecting: 42 +ok +0 of 1 examples failed in test.test_doctest2.C.__init__.__doc__ +Running test.test_doctest2.C.__str__.__doc__ +Trying: print C() # 4 +Expecting: 42 +ok +0 of 1 examples failed in test.test_doctest2.C.__str__.__doc__ +Running test.test_doctest2.C.clsm.__doc__ +Trying: print C.clsm(22) # 18 +Expecting: 22 +ok +Trying: print C().clsm(23) # 19 +Expecting: 23 +ok +0 of 2 examples failed in test.test_doctest2.C.clsm.__doc__ +Running test.test_doctest2.C.getx.__doc__ +Trying: c = C() # 7 +Expecting: nothing +ok +Trying: c.x = 12 # 8 +Expecting: nothing +ok +Trying: print c.x # 9 +Expecting: -12 +ok +0 of 3 examples failed in test.test_doctest2.C.getx.__doc__ +Running test.test_doctest2.C.setx.__doc__ +Trying: c = C() # 10 +Expecting: nothing +ok +Trying: c.x = 12 # 11 +Expecting: nothing +ok +Trying: print c.x # 12 +Expecting: -12 +ok +0 of 3 examples failed in test.test_doctest2.C.setx.__doc__ +Running test.test_doctest2.C.statm.__doc__ +Trying: print C.statm() # 16 +Expecting: 666 +ok +Trying: print C().statm() # 17 +Expecting: 666 +ok +0 of 2 examples failed in test.test_doctest2.C.statm.__doc__ +Running string test.test_doctest2.C.x +Trying: c = C() # 13 +Expecting: nothing +ok +Trying: c.x = 12 # 14 +Expecting: nothing +ok +Trying: print c.x # 15 +Expecting: -12 +ok +0 of 3 examples failed in string test.test_doctest2.C.x +Running test.test_doctest2.test_main.__doc__ +0 of 0 examples failed in test.test_doctest2.test_main.__doc__ +1 items had no tests: + test.test_doctest2.test_main +11 items passed all tests: + 1 tests in test.test_doctest2 + 1 tests in test.test_doctest2.C + 1 tests in test.test_doctest2.C.D + 1 tests in test.test_doctest2.C.D.nested + 1 tests in test.test_doctest2.C.__init__ + 1 tests in test.test_doctest2.C.__str__ + 2 tests in test.test_doctest2.C.clsm + 3 tests in test.test_doctest2.C.getx + 3 tests in test.test_doctest2.C.setx + 2 tests in test.test_doctest2.C.statm + 3 tests in test.test_doctest2.C.x +19 tests in 12 items. +19 passed and 0 failed. +Test passed. +doctest (test.test_doctest2) ... 19 tests with zero failures +========================== closed ========================== +execution time: 390.301733971 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,27 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dumbdbm.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:14:43 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_close_twice (__main__.DumbDBMTestCase) ... ok +test_dumbdbm_creation (__main__.DumbDBMTestCase) ... ok +test_dumbdbm_keys (__main__.DumbDBMTestCase) ... ok +test_dumbdbm_modification (__main__.DumbDBMTestCase) ... ok +test_dumbdbm_read (__main__.DumbDBMTestCase) ... ok +test_random (__main__.DumbDBMTestCase) ... ok +test_write_write_read (__main__.DumbDBMTestCase) ... ok + +---------------------------------------------------------------------- +Ran 7 tests in 381.958s + +OK +========================== closed ========================== +execution time: 389.892908096 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,43 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dummy_thread.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:14:24 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking + +*** Using as _thread module *** +test_cond_acquire_fail (__main__.LockTests) ... ok +test_cond_acquire_success (__main__.LockTests) ... ok +test_improper_release (__main__.LockTests) ... ok +test_initlock (__main__.LockTests) ... ok +test_release (__main__.LockTests) ... ok +test_uncond_acquire_blocking (__main__.LockTests) ... +*** Waiting for thread to release the lock (approx. 0 sec.) *** +done +ok +test_uncond_acquire_return_val (__main__.LockTests) ... ok +test_uncond_acquire_success (__main__.LockTests) ... ok +test_LockType (__main__.MiscTests) ... ok +test_exit (__main__.MiscTests) ... ok +test_ident (__main__.MiscTests) ... ok +test_interrupt_in_main (__main__.MiscTests) ... ok +test_interrupt_main (__main__.MiscTests) ... ok +test_arg_passing (__main__.ThreadTests) ... ok +test_multi_creation (__main__.ThreadTests) ... +*** Testing multiple thread creation (will take approx. 0 to 5 sec.) *** +done +ok + +---------------------------------------------------------------------- +Ran 15 tests in 7.949s + +OK +========================== closed ========================== +execution time: 19.5353479385 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,57 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dummy_threading.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:14:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +task will run for 0 sec +1 tasks are running +task done + is finished. 0 tasks are running +waiting for all tasks to complete +all tasks done +========================== closed ========================== +execution time: 15.1704230309 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_email.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_email.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_email.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:14:02 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_email.py", line 6 in ? +from email.test.test_email import suite + File "/home/arigo/pypysrc/lib-python-2.3.4/email/__init__.py", line 69 in ? +from encodings.aliases import aliases # The aliases dictionary + File "/home/arigo/pypysrc/lib-python-2.3.4/encodings/__init__.py", line 137 in ? +codecs.register(search_function) +TypeError: argument must be callable +========================== closed ========================== +execution time: 5.98763108253 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_email_codecs.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:13:55 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_email_codecs.py", line 6 in ? +from email.test.test_email_codecs import suite + File "/home/arigo/pypysrc/lib-python-2.3.4/email/__init__.py", line 69 in ? +from encodings.aliases import aliases # The aliases dictionary + File "/home/arigo/pypysrc/lib-python-2.3.4/encodings/__init__.py", line 137 in ? +codecs.register(search_function) +TypeError: argument must be callable +========================== closed ========================== +execution time: 6.06226205826 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_enumerate.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:13:48 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_enumerate.py", line 111 in ? +class MyEnum(enumerate): +TypeError: default __new__ takes no parameters +========================== closed ========================== +execution time: 6.52210712433 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_eof.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_eof.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,52 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:13:36 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py", line 32 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py", line 29 in test_main + test_support.run_unittest(EOFTestCase) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred in __main__.EOFTestCase +test_EOFC (__main__.EOFTestCase) ... FAIL +test_EOFS (__main__.EOFTestCase) ... FAIL + +====================================================================== +FAIL: test_EOFC (__main__.EOFTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py", line 15, in test_EOFC + "EOL while scanning single-quoted string (line 1)") + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + raise self.failureException, \ +AssertionError: "args=('EOL while scanning single-quoted string (, line 1)',)" != 'EOL while scanning single-quoted string (line 1)' + +====================================================================== +FAIL: test_EOFS (__main__.EOFTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py", line 24, in test_EOFS + "EOF while scanning triple-quoted string (line 1)") + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + raise self.failureException, \ +AssertionError: "args=('EOF while scanning triple-quoted string (, line 1)',)" != 'EOF while scanning triple-quoted string (line 1)' + +---------------------------------------------------------------------- +Ran 2 tests in 3.038s + +FAILED (failures=2) +========================== closed ========================== +execution time: 11.7555420399 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_errno.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_errno.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,132 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_errno.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 02:13:14 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +E2BIG: 7 +EACCES: 13 +EADDRINUSE: 98 +EADDRNOTAVAIL: 99 +EADV: 68 +EAFNOSUPPORT: 97 +EAGAIN: 11 +EALREADY: 114 +EBADE: 52 +EBADF: 9 +EBADFD: 77 +EBADMSG: 74 +EBADR: 53 +EBADRQC: 56 +EBADSLT: 57 +EBFONT: 59 +EBUSY: 16 +ECHILD: 10 +ECHRNG: 44 +ECOMM: 70 +ECONNABORTED: 103 +ECONNREFUSED: 111 +ECONNRESET: 104 +EDEADLK: 35 +EDEADLOCK: 35 +EDESTADDRREQ: 89 +EDOM: 33 +EDQUOT: 122 +EEXIST: 17 +EFAULT: 14 +EFBIG: 27 +EHOSTDOWN: 112 +EHOSTUNREACH: 113 +EIDRM: 43 +EILSEQ: 84 +EINPROGRESS: 115 +EINTR: 4 +EINVAL: 22 +EIO: 5 +EISCONN: 106 +EISDIR: 21 +EL2HLT: 51 +EL2NSYNC: 45 +EL3HLT: 46 +EL3RST: 47 +ELIBACC: 79 +ELIBBAD: 80 +ELIBEXEC: 83 +ELIBMAX: 82 +ELIBSCN: 81 +ELNRNG: 48 +ELOOP: 40 +EMFILE: 24 +EMLINK: 31 +EMSGSIZE: 90 +EMULTIHOP: 72 +ENAMETOOLONG: 36 +ENETDOWN: 100 +ENETRESET: 102 +ENETUNREACH: 101 +ENFILE: 23 +ENOANO: 55 +ENOBUFS: 105 +ENOCSI: 50 +ENODATA: 61 +ENODEV: 19 +ENOENT: 2 +ENOEXEC: 8 +ENOLCK: 37 +ENOLINK: 67 +ENOMEM: 12 +ENOMSG: 42 +ENONET: 64 +ENOPKG: 65 +ENOPROTOOPT: 92 +ENOSPC: 28 +ENOSR: 63 +ENOSTR: 60 +ENOSYS: 38 +ENOTBLK: 15 +ENOTCONN: 107 +ENOTDIR: 20 +ENOTEMPTY: 39 +ENOTOBACCO: not found +ENOTSOCK: 88 +ENOTTY: 25 +ENOTUNIQ: 76 +ENXIO: 6 +EOPNOTSUPP: 95 +EOVERFLOW: 75 +EPERM: 1 +EPFNOSUPPORT: 96 +EPIPE: 32 +EPROTO: 71 +EPROTONOSUPPORT: 93 +EPROTOTYPE: 91 +ERANGE: 34 +EREMCHG: 78 +EREMOTE: 66 +ERESTART: 85 +EROFS: 30 +ESHUTDOWN: 108 +ESOCKTNOSUPPORT: 94 +ESPIPE: 29 +ESRCH: 3 +ESRMNT: 69 +ESTALE: 116 +ESTRPIPE: 86 +ETIME: 62 +ETIMEDOUT: 110 +ETOOMANYREFS: 109 +ETXTBSY: 26 +EUNATCH: 49 +EUSERS: 87 +EWOULDBLOCK: 11 +EXDEV: 18 +EXFULL: 54 +========================== closed ========================== +execution time: 21.7187051773 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_exceptions.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_exceptions.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +test_exceptions +5. Built-in exceptions +spam + +spam + +errno=None args=('spam',) strerror=None filename=None + +spam + +spam + +'spam' + +spam + +(not testable in a script) +spam + +(not safe to test) +spam + +spam + Added: pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_exceptions.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:58:14 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_exceptions.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_exceptions.py", line 95 in ? + while 1: x = x+x +KeyboardInterrupt +========================== closed ========================== +execution time: 900.142353058 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_extcall.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_extcall.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,112 @@ +test_extcall +() {} +(1,) {} +(1, 2) {} +(1, 2, 3) {} +(1, 2, 3, 4, 5) {} +(1, 2, 3, 4, 5) {} +(1, 2, 3, 4, 5) {} +(1, 2, 3) {'a': 4, 'b': 5} +(1, 2, 3, 4, 5) {'a': 6, 'b': 7} +(1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5} +TypeError: g() takes at least 1 argument (0 given) +TypeError: g() takes at least 1 argument (0 given) +TypeError: g() takes at least 1 argument (0 given) +1 () {} +1 (2,) {} +1 (2, 3) {} +1 (2, 3, 4, 5) {} +0 (1, 2) {} +0 (1, 2, 3) {} +1 () {'a': 1, 'b': 2, 'c': 3, 'd': 4} +{'a': 1, 'b': 2, 'c': 3} +{'a': 1, 'b': 2, 'c': 3} +g() got multiple values for keyword argument 'x' +got multiple values for keyword argument 'a' +keywords must be strings +h() got an unexpected keyword argument 'e' +object is not iter()-able +object is not iter()-able +object None is not callable +the keywords must be a dictionary +the keywords must be a dictionary +object None is not callable +got multiple values for keyword argument 'b' +3 512 True +3 +3 +za () {} -> za() takes exactly 1 argument (0 given) +za () {'a': 'aa'} -> ok za aa B D E V a +za () {'d': 'dd'} -> za() got an unexpected keyword argument 'd' +za () {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd' +za () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got 3 unexpected keyword arguments +za (1, 2) {} -> za() takes exactly 1 argument (2 given) +za (1, 2) {'a': 'aa'} -> za() got multiple values for keyword argument 'a' +za (1, 2) {'d': 'dd'} -> za() takes exactly 1 argument (3 given) +za (1, 2) {'a': 'aa', 'd': 'dd'} -> za() got multiple values for keyword argument 'a' +za (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got multiple values for keyword argument 'a' +za (1, 2, 3, 4, 5) {} -> za() takes exactly 1 argument (5 given) +za (1, 2, 3, 4, 5) {'a': 'aa'} -> za() got multiple values for keyword argument 'a' +za (1, 2, 3, 4, 5) {'d': 'dd'} -> za() takes exactly 1 argument (6 given) +za (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> za() got multiple values for keyword argument 'a' +za (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got multiple values for keyword argument 'a' +zade () {} -> zade() takes at least 1 argument (0 given) +zade () {'a': 'aa'} -> ok zade aa B d e V a +zade () {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given) +zade () {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d +zade () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b' +zade (1, 2) {} -> ok zade 1 B 2 e V e +zade (1, 2) {'a': 'aa'} -> zade() got multiple values for keyword argument 'a' +zade (1, 2) {'d': 'dd'} -> zade() got multiple values for keyword argument 'd' +zade (1, 2) {'a': 'aa', 'd': 'dd'} -> zade() got multiple values for keyword argument 'a' +zade (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got multiple values for keyword argument 'a' +zade (1, 2, 3, 4, 5) {} -> zade() takes at most 3 arguments (5 given) +zade (1, 2, 3, 4, 5) {'a': 'aa'} -> zade() got multiple values for keyword argument 'a' +zade (1, 2, 3, 4, 5) {'d': 'dd'} -> zade() got multiple values for keyword argument 'd' +zade (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zade() got multiple values for keyword argument 'a' +zade (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got multiple values for keyword argument 'a' +zabk () {} -> zabk() takes exactly 2 non-keyword arguments (0 given) +zabk () {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (0 given) +zabk () {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) +zabk () {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) +zabk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'} +zabk (1, 2) {} -> ok zabk 1 2 D E V {} +zabk (1, 2) {'a': 'aa'} -> zabk() got multiple values for keyword argument 'a' +zabk (1, 2) {'d': 'dd'} -> ok zabk 1 2 D E V {'d': 'dd'} +zabk (1, 2) {'a': 'aa', 'd': 'dd'} -> zabk() got multiple values for keyword argument 'a' +zabk (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabk() got multiple values for keyword argument 'a' +zabk (1, 2, 3, 4, 5) {} -> zabk() takes exactly 2 non-keyword arguments (5 given) +zabk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabk() got multiple values for keyword argument 'a' +zabk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (5 given) +zabk (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabk() got multiple values for keyword argument 'a' +zabk (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabk() got multiple values for keyword argument 'a' +zabdv () {} -> zabdv() takes at least 2 arguments (0 given) +zabdv () {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (0 given) +zabdv () {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) +zabdv () {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) +zabdv () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e' +zabdv (1, 2) {} -> ok zabdv 1 2 d E () e +zabdv (1, 2) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a' +zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E () d +zabdv (1, 2) {'a': 'aa', 'd': 'dd'} -> zabdv() got multiple values for keyword argument 'a' +zabdv (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got multiple values for keyword argument 'a' +zabdv (1, 2, 3, 4, 5) {} -> ok zabdv 1 2 3 E (4, 5) e +zabdv (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a' +zabdv (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdv() got multiple values for keyword argument 'd' +zabdv (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabdv() got multiple values for keyword argument 'a' +zabdv (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got multiple values for keyword argument 'a' +zabdevk () {} -> zabdevk() takes at least 2 arguments (0 given) +zabdevk () {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) +zabdevk () {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) +zabdevk () {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) +zabdevk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee () {} +zabdevk (1, 2) {} -> ok zabdevk 1 2 d e () {} +zabdevk (1, 2) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a' +zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e () {} +zabdevk (1, 2) {'a': 'aa', 'd': 'dd'} -> zabdevk() got multiple values for keyword argument 'a' +zabdevk (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdevk() got multiple values for keyword argument 'a' +zabdevk (1, 2, 3, 4, 5) {} -> ok zabdevk 1 2 3 4 (5,) {} +zabdevk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a' +zabdevk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdevk() got multiple values for keyword argument 'd' +zabdevk (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabdevk() got multiple values for keyword argument 'a' +zabdevk (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdevk() got multiple values for keyword argument 'a' Added: pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,17 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_extcall.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:56:28 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_extcall.out +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 105.713932991 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,17 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fcntl.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:56:26 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_fcntl.py", line 7 in ? +import fcntl +ImportError: fcntl +========================== closed ========================== +execution time: 1.04784798622 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_file.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_file.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,52 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_file.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:56:20 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + frame.setfastscope(scope_w) + File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) +pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > +========================== closed ========================== +execution time: 5.77532792091 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_filecmp.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:55:50 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_different (__main__.FileCompareTestCase) ... ok +test_matching (__main__.FileCompareTestCase) ... ok +test_cmpfiles (__main__.DirCompareTestCase) ... ok +test_dircmp (__main__.DirCompareTestCase) ... ok + +---------------------------------------------------------------------- +Ran 4 tests in 19.353s + +OK +========================== closed ========================== +execution time: 30.3245141506 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,33 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fileinput.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:53:37 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +1. Simple iteration (bs=0) +2. Status variables (bs=0) +3. Nextfile (bs=0) +4. Stdin (bs=0) +5. Boundary conditions (bs=0) +6. Inplace (bs=0) +7. Simple iteration (bs=30) +8. Status variables (bs=30) +9. Nextfile (bs=30) +10. Stdin (bs=30) +11. Boundary conditions (bs=30) +12. Inplace (bs=30) +13. 0-byte files +14. Files that don't end with newline +========================== closed ========================== +execution time: 133.065872908 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,25 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fnmatch.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:52:53 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_fnmatch (__main__.FnmatchTestCase) ... ok + +---------------------------------------------------------------------- +Ran 1 test in 34.290s + +OK +========================== closed ========================== +execution time: 43.6942389011 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fork1.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:52:48 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_fork1.py", line 13 in ? +import os, sys, time, thread +ImportError: thread +========================== closed ========================== +execution time: 4.29120087624 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_format.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_format.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,276 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_format.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:50:24 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +'%.1d' % (1,) =? '1' ... yes +u'%.1d' % (1,) =? '1' ... yes +'%.*d' % (2147483647, 1) works? ... overflow (this is fine) +u'%.*d' % (2147483647, 1) works? ... overflow (this is fine) +'%.100d' % (1,) =? '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes +u'%.100d' % (1,) =? '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes +'%#.117x' % (1,) =? '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes +u'%#.117x' % (1,) =? '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes +'%#.118x' % (1,) =? '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes +u'%#.118x' % (1,) =? '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... overflow (this is fine) +'%f' % (1.0,) =? '1.000000' ... yes +u'%f' % (1.0,) =? '1.000000' ... yes +'%#.*g' % (109, -3.3333333333333334e+48) works? ... yes +u'%#.*g' % (109, -3.3333333333333334e+48) works? ... yes +'%#.*g' % (110, -3.3333333333333334e+48) works? ... yes +u'%#.*g' % (110, -3.3333333333333334e+48) works? ... overflow (this is fine) +'%#.*g' % (110, -3.3333333333333333e+99) works? ... yes +u'%#.*g' % (110, -3.3333333333333333e+99) works? ... overflow (this is fine) +'%12.*f' % (123456, 1.0) works? ... yes +u'%12.*f' % (123456, 1.0) works? ... overflow (this is fine) +'%x' % 10L =? 'a' ... yes +u'%x' % 10L =? 'a' ... yes +'%x' % 100000000000L =? '174876e800' ... yes +u'%x' % 100000000000L =? '174876e800' ... yes +'%o' % 10L =? '12' ... yes +u'%o' % 10L =? '12' ... yes +'%o' % 100000000000L =? '1351035564000' ... yes +u'%o' % 100000000000L =? '1351035564000' ... yes +'%d' % 10L =? '10' ... yes +u'%d' % 10L =? '10' ... yes +'%d' % 100000000000L =? '100000000000' ... yes +u'%d' % 100000000000L =? '100000000000' ... yes +'%d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes +u'%d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes +'%d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes +u'%d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes +'%5d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes +u'%5d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes +'%31d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes +u'%31d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes +'%32d' % -123456789012345678901234567890L =? ' -123456789012345678901234567890' ... yes +u'%32d' % -123456789012345678901234567890L =? ' -123456789012345678901234567890' ... yes +'%-32d' % -123456789012345678901234567890L =? '-123456789012345678901234567890 ' ... yes +u'%-32d' % -123456789012345678901234567890L =? '-123456789012345678901234567890 ' ... yes +'%032d' % -123456789012345678901234567890L =? '-0123456789012345678901234567890' ... yes +u'%032d' % -123456789012345678901234567890L =? '-0123456789012345678901234567890' ... yes +'%-032d' % -123456789012345678901234567890L =? '-123456789012345678901234567890 ' ... yes +u'%-032d' % -123456789012345678901234567890L =? '-123456789012345678901234567890 ' ... yes +'%034d' % -123456789012345678901234567890L =? '-000123456789012345678901234567890' ... yes +u'%034d' % -123456789012345678901234567890L =? '-000123456789012345678901234567890' ... yes +'%034d' % 123456789012345678901234567890L =? '0000123456789012345678901234567890' ... yes +u'%034d' % 123456789012345678901234567890L =? '0000123456789012345678901234567890' ... yes +'%0+34d' % 123456789012345678901234567890L =? '+000123456789012345678901234567890' ... yes +u'%0+34d' % 123456789012345678901234567890L =? '+000123456789012345678901234567890' ... yes +'%+34d' % 123456789012345678901234567890L =? ' +123456789012345678901234567890' ... yes +u'%+34d' % 123456789012345678901234567890L =? ' +123456789012345678901234567890' ... yes +'%34d' % 123456789012345678901234567890L =? ' 123456789012345678901234567890' ... yes +u'%34d' % 123456789012345678901234567890L =? ' 123456789012345678901234567890' ... yes +'%.2d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes +u'%.2d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes +'%.30d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes +u'%.30d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes +'%.31d' % 123456789012345678901234567890L =? '0123456789012345678901234567890' ... yes +u'%.31d' % 123456789012345678901234567890L =? '0123456789012345678901234567890' ... yes +'%32.31d' % 123456789012345678901234567890L =? ' 0123456789012345678901234567890' ... yes +u'%32.31d' % 123456789012345678901234567890L =? ' 0123456789012345678901234567890' ... yes +'%x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes +u'%x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes +'%x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes +u'%x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes +'%5x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes +u'%5x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes +'%22x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes +u'%22x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes +'%23x' % -1375488932362216742658885L =? ' -1234567890abcdef12345' ... yes +u'%23x' % -1375488932362216742658885L =? ' -1234567890abcdef12345' ... yes +'%-23x' % -1375488932362216742658885L =? '-1234567890abcdef12345 ' ... yes +u'%-23x' % -1375488932362216742658885L =? '-1234567890abcdef12345 ' ... yes +'%023x' % -1375488932362216742658885L =? '-01234567890abcdef12345' ... yes +u'%023x' % -1375488932362216742658885L =? '-01234567890abcdef12345' ... yes +'%-023x' % -1375488932362216742658885L =? '-1234567890abcdef12345 ' ... yes +u'%-023x' % -1375488932362216742658885L =? '-1234567890abcdef12345 ' ... yes +'%025x' % -1375488932362216742658885L =? '-0001234567890abcdef12345' ... yes +u'%025x' % -1375488932362216742658885L =? '-0001234567890abcdef12345' ... yes +'%025x' % 1375488932362216742658885L =? '00001234567890abcdef12345' ... yes +u'%025x' % 1375488932362216742658885L =? '00001234567890abcdef12345' ... yes +'%0+25x' % 1375488932362216742658885L =? '+0001234567890abcdef12345' ... yes +u'%0+25x' % 1375488932362216742658885L =? '+0001234567890abcdef12345' ... yes +'%+25x' % 1375488932362216742658885L =? ' +1234567890abcdef12345' ... yes +u'%+25x' % 1375488932362216742658885L =? ' +1234567890abcdef12345' ... yes +'%25x' % 1375488932362216742658885L =? ' 1234567890abcdef12345' ... yes +u'%25x' % 1375488932362216742658885L =? ' 1234567890abcdef12345' ... yes +'%.2x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes +u'%.2x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes +'%.21x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes +u'%.21x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes +'%.22x' % 1375488932362216742658885L =? '01234567890abcdef12345' ... yes +u'%.22x' % 1375488932362216742658885L =? '01234567890abcdef12345' ... yes +'%23.22x' % 1375488932362216742658885L =? ' 01234567890abcdef12345' ... yes +u'%23.22x' % 1375488932362216742658885L =? ' 01234567890abcdef12345' ... yes +'%-23.22x' % 1375488932362216742658885L =? '01234567890abcdef12345 ' ... yes +u'%-23.22x' % 1375488932362216742658885L =? '01234567890abcdef12345 ' ... yes +'%X' % 1375488932362216742658885L =? '1234567890ABCDEF12345' ... yes +u'%X' % 1375488932362216742658885L =? '1234567890ABCDEF12345' ... yes +'%#X' % 1375488932362216742658885L =? '0X1234567890ABCDEF12345' ... yes +u'%#X' % 1375488932362216742658885L =? '0X1234567890ABCDEF12345' ... yes +'%#x' % 1375488932362216742658885L =? '0x1234567890abcdef12345' ... yes +u'%#x' % 1375488932362216742658885L =? '0x1234567890abcdef12345' ... yes +'%#x' % -1375488932362216742658885L =? '-0x1234567890abcdef12345' ... yes +u'%#x' % -1375488932362216742658885L =? '-0x1234567890abcdef12345' ... yes +'%#.23x' % -1375488932362216742658885L =? '-0x001234567890abcdef12345' ... yes +u'%#.23x' % -1375488932362216742658885L =? '-0x001234567890abcdef12345' ... yes +'%#+.23x' % 1375488932362216742658885L =? '+0x001234567890abcdef12345' ... yes +u'%#+.23x' % 1375488932362216742658885L =? '+0x001234567890abcdef12345' ... yes +'%# .23x' % 1375488932362216742658885L =? ' 0x001234567890abcdef12345' ... yes +u'%# .23x' % 1375488932362216742658885L =? ' 0x001234567890abcdef12345' ... yes +'%#+.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes +u'%#+.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes +'%#-+.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes +u'%#-+.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes +'%#-+26.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes +u'%#-+26.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes +'%#-+27.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345 ' ... yes +u'%#-+27.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345 ' ... yes +'%#+27.23X' % 1375488932362216742658885L =? ' +0X001234567890ABCDEF12345' ... yes +u'%#+27.23X' % 1375488932362216742658885L =? ' +0X001234567890ABCDEF12345' ... yes +'%#+027.23X' % 1375488932362216742658885L =? '+0X0001234567890ABCDEF12345' ... yes +u'%#+027.23X' % 1375488932362216742658885L =? '+0X0001234567890ABCDEF12345' ... yes +'%#+27.23X' % 1375488932362216742658885L =? ' +0X001234567890ABCDEF12345' ... yes +u'%#+27.23X' % 1375488932362216742658885L =? ' +0X001234567890ABCDEF12345' ... yes +'%o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes +u'%o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes +'%o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes +u'%o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes +'%5o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes +u'%5o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes +'%33o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes +u'%33o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes +'%34o' % -12935167030485801517351291832L =? ' -12345670123456701234567012345670' ... yes +u'%34o' % -12935167030485801517351291832L =? ' -12345670123456701234567012345670' ... yes +'%-34o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670 ' ... yes +u'%-34o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670 ' ... yes +'%034o' % -12935167030485801517351291832L =? '-012345670123456701234567012345670' ... yes +u'%034o' % -12935167030485801517351291832L =? '-012345670123456701234567012345670' ... yes +'%-034o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670 ' ... yes +u'%-034o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670 ' ... yes +'%036o' % -12935167030485801517351291832L =? '-00012345670123456701234567012345670' ... yes +u'%036o' % -12935167030485801517351291832L =? '-00012345670123456701234567012345670' ... yes +'%036o' % 12935167030485801517351291832L =? '000012345670123456701234567012345670' ... yes +u'%036o' % 12935167030485801517351291832L =? '000012345670123456701234567012345670' ... yes +'%0+36o' % 12935167030485801517351291832L =? '+00012345670123456701234567012345670' ... yes +u'%0+36o' % 12935167030485801517351291832L =? '+00012345670123456701234567012345670' ... yes +'%+36o' % 12935167030485801517351291832L =? ' +12345670123456701234567012345670' ... yes +u'%+36o' % 12935167030485801517351291832L =? ' +12345670123456701234567012345670' ... yes +'%36o' % 12935167030485801517351291832L =? ' 12345670123456701234567012345670' ... yes +u'%36o' % 12935167030485801517351291832L =? ' 12345670123456701234567012345670' ... yes +'%.2o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes +u'%.2o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes +'%.32o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes +u'%.32o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes +'%.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +u'%.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +'%34.33o' % 12935167030485801517351291832L =? ' 012345670123456701234567012345670' ... yes +u'%34.33o' % 12935167030485801517351291832L =? ' 012345670123456701234567012345670' ... yes +'%-34.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670 ' ... yes +u'%-34.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670 ' ... yes +'%o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes +u'%o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes +'%#o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +u'%#o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +'%#o' % -12935167030485801517351291832L =? '-012345670123456701234567012345670' ... yes +u'%#o' % -12935167030485801517351291832L =? '-012345670123456701234567012345670' ... yes +'%#.34o' % -12935167030485801517351291832L =? '-0012345670123456701234567012345670' ... yes +u'%#.34o' % -12935167030485801517351291832L =? '-0012345670123456701234567012345670' ... yes +'%#+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes +u'%#+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes +'%# .34o' % 12935167030485801517351291832L =? ' 0012345670123456701234567012345670' ... yes +u'%# .34o' % 12935167030485801517351291832L =? ' 0012345670123456701234567012345670' ... yes +'%#+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes +u'%#+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes +'%#-+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes +u'%#-+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes +'%#-+37.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670 ' ... yes +u'%#-+37.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670 ' ... yes +'%#+37.34o' % 12935167030485801517351291832L =? ' +0012345670123456701234567012345670' ... yes +u'%#+37.34o' % 12935167030485801517351291832L =? ' +0012345670123456701234567012345670' ... yes +'%.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +u'%.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +'%#.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +u'%#.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +'%#.32o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +u'%#.32o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes +'%034.33o' % 12935167030485801517351291832L =? '0012345670123456701234567012345670' ... yes +u'%034.33o' % 12935167030485801517351291832L =? '0012345670123456701234567012345670' ... yes +'%0#34.33o' % 12935167030485801517351291832L =? '0012345670123456701234567012345670' ... yes +u'%0#34.33o' % 12935167030485801517351291832L =? '0012345670123456701234567012345670' ... yes +'%d' % 42 =? '42' ... yes +u'%d' % 42 =? '42' ... yes +'%d' % -42 =? '-42' ... yes +u'%d' % -42 =? '-42' ... yes +'%d' % 42L =? '42' ... yes +u'%d' % 42L =? '42' ... yes +'%d' % -42L =? '-42' ... yes +u'%d' % -42L =? '-42' ... yes +'%#x' % 1 =? '0x1' ... yes +u'%#x' % 1 =? '0x1' ... yes +'%#x' % 1L =? '0x1' ... yes +u'%#x' % 1L =? '0x1' ... yes +'%#X' % 1 =? '0X1' ... yes +u'%#X' % 1 =? '0X1' ... yes +'%#X' % 1L =? '0X1' ... yes +u'%#X' % 1L =? '0X1' ... yes +'%Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_format.py", line 236 in ? + "%*d"%(sys.maxint, -127) +OverflowError: repeated string is too long: 1 2147483643 +#o' % 1 =? '01' ... yes +u'%#o' % 1 =? '01' ... yes +'%#o' % 1L =? '01' ... yes +u'%#o' % 1L =? '01' ... yes +'%#o' % 0 =? '0' ... yes +u'%#o' % 0 =? '0' ... yes +'%#o' % 0L =? '0' ... yes +u'%#o' % 0L =? '0' ... yes +'%o' % 0 =? '0' ... yes +u'%o' % 0 =? '0' ... yes +'%o' % 0L =? '0' ... yes +u'%o' % 0L =? '0' ... yes +'%d' % 0 =? '0' ... yes +u'%d' % 0 =? '0' ... yes +'%d' % 0L =? '0' ... yes +u'%d' % 0L =? '0' ... yes +'%#x' % 0 =? '0x0' ... yes +u'%#x' % 0 =? '0x0' ... yes +'%#x' % 0L =? '0x0' ... yes +u'%#x' % 0L =? '0x0' ... yes +'%#X' % 0 =? '0X0' ... yes +u'%#X' % 0 =? '0X0' ... yes +'%#X' % 0L =? '0X0' ... yes +u'%#X' % 0L =? '0X0' ... yes +'%x' % 66 =? '42' ... yes +u'%x' % 66 =? '42' ... yes +'%x' % 66L =? '42' ... yes +u'%x' % 66L =? '42' ... yes +'%x' % -66L =? '-42' ... yes +u'%x' % -66L =? '-42' ... yes +'%o' % 34 =? '42' ... yes +u'%o' % 34 =? '42' ... yes +'%o' % 34L =? '42' ... yes +u'%o' % 34L =? '42' ... yes +'%o' % -34L =? '-42' ... yes +u'%o' % -34L =? '-42' ... yes +Testing exceptions +'abc %a' % 1 works? ... yes +u'abc %\u3000' % 1 works? ... yes +'%d' % '1' works? ... yes +'%g' % '1' works? ... yes +'no format' % '1' works? ... yes +'no format' % u'1' works? ... yes +u'no format' % '1' works? ... yes +u'no format' % u'1' works? ... yes +========================== closed ========================== +execution time: 143.244663 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,27 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fpformat.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:46:57 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_basic_cases (__main__.FpformatTest) ... ok +test_failing_values (__main__.FpformatTest) ... ok +test_reasonable_values (__main__.FpformatTest) ... ok + +---------------------------------------------------------------------- +Ran 3 tests in 179.001s + +OK +========================== closed ========================== +execution time: 207.484343052 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_frozen.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_frozen.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_frozen Added: pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_frozen.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:46:51 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_frozen.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_frozen.py", line 9 in ? + raise TestFailed, "import __hello__ failed:" + str(x) +TestFailed: import __hello__ failed:__hello__ +========================== closed ========================== +execution time: 5.56635308266 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_funcattrs.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:46:45 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_funcattrs.py", line 38 in ? + del b.__dict__ +AttributeError: cannot delete attribute +========================== closed ========================== +execution time: 5.79542803764 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_future.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_future.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,8 @@ +test_future +6 +6 +SyntaxError badsyntax_future3 3 +SyntaxError badsyntax_future4 3 +SyntaxError badsyntax_future5 4 +SyntaxError badsyntax_future6 3 +SyntaxError badsyntax_future7 3 Added: pypy/dist/lib-python-2.3.4/test/result/test_future.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_future.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_future.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:46:28 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_future.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 16.9328770638 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_future1.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_future1.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,14 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_future1.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:46:26 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +6 +========================== closed ========================== +execution time: 1.38675808907 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_future2.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_future2.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,14 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_future2.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:46:24 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +6 +========================== closed ========================== +execution time: 2.18088293076 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_future3.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_future3.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_future3.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:46:16 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_floor_div_operator (__main__.TestFuture) ... ok +test_nested_scopes (__main__.TestFuture) ... ok +test_true_div_as_default (__main__.TestFuture) ... ok + +---------------------------------------------------------------------- +Ran 3 tests in 0.936s + +OK +========================== closed ========================== +execution time: 8.44127821922 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_gc.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_gc.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,22 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gc.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:46:09 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gc.py", line 419 in ? +test() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gc.py", line 399 in test + enabled = gc.isenabled() +AttributeError: 'module' object has no attribute 'isenabled' +disabling automatic collection +========================== closed ========================== +execution time: 5.74649000168 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gdbm.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:46:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gdbm.py", line 6 in ? +import gdbm +ImportError: gdbm +========================== closed ========================== +execution time: 0.873334169388 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_generators.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_generators.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,289 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_generators.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:31:42 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +***************************************************************** +Failure in example: type(g) +from line #78 of test.test_generators.__test__.email +Expected: +Got: +***************************************************************** +Failure in example: type(i) +from line #81 of test.test_generators.__test__.email +Expected: +Got: +***************************************************************** +Failure in example: print i.next.__doc__ +from line #85 of test.test_generators.__test__.email +Expected: x.next() -> the next value, or raise StopIteration +Got: None +***************************************************************** +Failure in example: type(i.gi_frame) +from line #97 of test.test_generators.__test__.email +Expected: +Got: +***************************************************************** +Failure in example: i.gi_running = 42 +from line #99 of test.test_generators.__test__.email +Expected: TypeError: readonly attribute +Got: TypeError: read-only attribute +***************************************************************** +Failure in example: gen = random.WichmannHill(42) +from line #146 of test.test_generators.__test__.email +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? +AttributeError: 'module' object has no attribute 'WichmannHill' +***************************************************************** +Failure in example: +while 1: + for s in sets: + print "%s->%s" % (s, s.find()), + print + if len(roots) > 1: + s1 = gen.choice(roots) + roots.remove(s1) + s2 = gen.choice(roots) + s1.union(s2) + print "merged", s1, "into", s2 + else: + break +from line #147 of test.test_generators.__test__.email +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 6, in ? +NameError: global name 'gen' is not defined +***************************************************************** +Failure in example: k.next() +from line #52 of test.test_generators.__test__.pep +Expected: ZeroDivisionError: integer division or modulo by zero +Got: ZeroDivisionError: integer division by zero +***************************************************************** +Failure in example: +def f(): + return 22 + yield 1 +from line #2 of test.test_generators.__test__.syntax +Expected: +SyntaxError: 'return' with argument inside generator (, line 2) +Got: +SyntaxError: args=("'return' with argument inside generator (, line 2)",) +***************************************************************** +Failure in example: +def f(): + yield 1 + return 22 +from line #9 of test.test_generators.__test__.syntax +Expected: +SyntaxError: 'return' with argument inside generator (, line 3) +Got: +SyntaxError: args=("'return' with argument inside generator (, line 3)",) +***************************************************************** +Failure in example: +def f(): + yield 1 + return None +from line #18 of test.test_generators.__test__.syntax +Expected: +SyntaxError: 'return' with argument inside generator (, line 3) +Got: +SyntaxError: args=("'return' with argument inside generator (, line 3)",) +***************************************************************** +Failure in example: +def f(): + try: + yield 1 + finally: + pass +from line #31 of test.test_generators.__test__.syntax +Expected: +SyntaxError: 'yield' not allowed in a 'try' block with a 'finally' clause (, line 3) +Got: +SyntaxError: args=("'yield' not allowed in a 'try' block with a 'finally' clause (, line 3)",) +***************************************************************** +Failure in example: +def f(): + try: + try: + 1//0 + except ZeroDivisionError: + yield 666 # bad because *outer* try has finally + except: + pass + finally: + pass +from line #40 of test.test_generators.__test__.syntax +Expected: +SyntaxError: 'yield' not allowed in a 'try' block with a 'finally' clause (, line 6) +Got: +SyntaxError: args=("'yield' not allowed in a 'try' block with a 'finally' clause (, line 6)",) +***************************************************************** +Failure in example: +def f(): + yield +from line #73 of test.test_generators.__test__.syntax +Expected: SyntaxError: invalid syntax +Got: SyntaxError: args=('invalid syntax (, line 2)',) +***************************************************************** +Failure in example: +def f(): + if 0: + yield +from line #78 of test.test_generators.__test__.syntax +Expected: SyntaxError: invalid syntax +Got: SyntaxError: args=('invalid syntax (, line 3)',) +***************************************************************** +Failure in example: type(f()) +from line #87 of test.test_generators.__test__.syntax +Expected: +Got: +***************************************************************** +Failure in example: type(f()) +from line #93 of test.test_generators.__test__.syntax +Expected: +Got: +***************************************************************** +Failure in example: type(f()) +from line #117 of test.test_generators.__test__.syntax +Expected: +Got: +***************************************************************** +Failure in example: type(f()) +from line #125 of test.test_generators.__test__.syntax +Expected: +Got: +***************************************************************** +Failure in example: type(f()) +from line #135 of test.test_generators.__test__.syntax +Expected: +Got: +***************************************************************** +Failure in example: type(f()) +from line #143 of test.test_generators.__test__.syntax +Expected: +Got: +***************************************************************** +Failure in example: +def f(): + if 0: + lambda x: x # shouldn't trigger here + return # or here + def f(i): + return 2*i # or here + if 0: + return 3 # but *this* sucks (line 8) + if 0: + yield 2 # because it's a generator +from line #147 of test.test_generators.__test__.syntax +Expected: +SyntaxError: 'return' with argument inside generator (, line 8) +Got: +SyntaxError: args=("'return' with argument inside generator (, line 8)",) +***************************************************************** +Failure in example: import weakref +from line #2 of test.test_generators.__test__.weakref +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? + File "/home/arigo/pypysrc/lib-python-2.3.4/weakref.py", line 14, in ? + from _weakref import \ +ImportError: _weakref +***************************************************************** +Failure in example: wr = weakref.ref(gen) +from line #6 of test.test_generators.__test__.weakref +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? +NameError: global name 'weakref' is not defined +***************************************************************** +Failure in example: wr() is gen +from line #7 of test.test_generators.__test__.weakref +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? +NameError: global name 'wr' is not defined +***************************************************************** +FailTraceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_generators.py", line 1412 in ? + test_main(1) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_generators.py", line 1408 in test_main + test_support.run_doctest(test_generators, verbose) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest + raise TestFailed("%d of %d doctests failed" % (f, t)) +TestFailed: 30 of 152 doctests failed +ure in example: p = weakref.proxy(gen) +from line #9 of test.test_generators.__test__.weakref +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? +NameError: global name 'weakref' is not defined +***************************************************************** +Failure in example: wr = weakref.ref(gi) +from line #14 of test.test_generators.__test__.weakref +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? +NameError: global name 'weakref' is not defined +***************************************************************** +Failure in example: wr() is gi +from line #15 of test.test_generators.__test__.weakref +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? +NameError: global name 'wr' is not defined +***************************************************************** +Failure in example: p = weakref.proxy(gi) +from line #17 of test.test_generators.__test__.weakref +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? +NameError: global name 'weakref' is not defined +***************************************************************** +Failure in example: list(p) +from line #18 of test.test_generators.__test__.weakref +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? +NameError: global name 'p' is not defined +***************************************************************** +4 items had failures: + 7 of 31 in test.test_generators.__test__.email + 1 of 20 in test.test_generators.__test__.pep + 14 of 29 in test.test_generators.__test__.syntax + 8 of 10 in test.test_generators.__test__.weakref +***Test Failed*** 30 failures. +========================== closed ========================== +execution time: 865.736933947 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,25 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_getargs.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:31:35 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_getargs.py", line 22 in ? + marshal.loads(unicode(r"\222", 'unicode-escape')) + File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 343 in loads + return load(f) + File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 334 in load + return Unmarshaller(f).load() + File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 187 in load + return self.dispatch[c](self) +KeyError: u'\x92' +========================== closed ========================== +execution time: 6.512155056 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_getargs2.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:31:11 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_getargs2.py", line 50 in ? +from _testcapi import UCHAR_MAX, USHRT_MAX, UINT_MAX, ULONG_MAX, INT_MAX, \ +ImportError: _testcapi +========================== closed ========================== +execution time: 22.9749560356 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,27 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_getopt.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:24:55 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +Running tests on getopt.short_has_arg +Running tests on getopt.long_has_args +Running tests on getopt.do_shorts +Running tests on getopt.do_longs +Running tests on getopt.getopt +Running tests on getopt.gnu_getopt +doctest (__main__) ... 12 tests with zero failures +Module getopt: tests completed successfully. +========================== closed ========================== +execution time: 375.843743086 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,402 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:17:46 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_double_quotes (__main__.GettextTestCase1) ... ERROR +test_multiline_strings (__main__.GettextTestCase1) ... ERROR +test_some_translations (__main__.GettextTestCase1) ... ERROR +test_the_alternative_interface (__main__.GettextTestCase1) ... ERROR +test_triple_double_quotes (__main__.GettextTestCase1) ... ERROR +test_triple_single_quotes (__main__.GettextTestCase1) ... ERROR +test_bindtextdomain (__main__.GettextTestCase2) ... ERROR +test_double_quotes (__main__.GettextTestCase2) ... ERROR +test_multiline_strings (__main__.GettextTestCase2) ... ERROR +test_some_translations (__main__.GettextTestCase2) ... ERROR +test_textdomain (__main__.GettextTestCase2) ... ERROR +test_triple_double_quotes (__main__.GettextTestCase2) ... ERROR +test_triple_single_quotes (__main__.GettextTestCase2) ... ERROR +test_de (__main__.PluralFormsTestCase) ... ERROR +test_fr (__main__.PluralFormsTestCase) ... ERROR +test_gd (__main__.PluralFormsTestCase) ... ERROR +test_gd2 (__main__.PluralFormsTestCase) ... ERROR +test_hu (__main__.PluralFormsTestCase) ... ERROR +test_lt (__main__.PluralFormsTestCase) ... ERROR +test_pl (__main__.PluralFormsTestCase) ... ERROR +test_plural_forms1 (__main__.PluralFormsTestCase) ... ERROR +test_plural_forms2 (__main__.PluralFormsTestCase) ... ERROR +test_ru (__main__.PluralFormsTestCase) ... ERROR +test_security (__main__.PluralFormsTestCase) ... ERROR +test_sl (__main__.PluralFormsTestCase) ... ERROR +test_unicode_msgid (__main__.UnicodeTranslationsTest) ... ERROR +test_unicode_msgstr (__main__.UnicodeTranslationsTest) ... ERROR +test_weird_metadata (__main__.WeirdMetadataTest) ... ERROR + +====================================================================== +ERROR: test_double_quotes (__main__.GettextTestCase1) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 91, in setUp + gettext.install('gettext', self.localedir) + File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 428, in install + translation(domain, localedir, fallback=True).install(unicode) + File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 416, in translation + t = _translations.setdefault(key, class_(open(mofile, 'rb'))) + File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 176, in __init__ + self._parse(fp) + File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 282, in _parse + self.plural = c2py(plural) + File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 121, in c2py + plural = expr.sub(repl, stack.pop()) +TypeError: len() of unsized object + +====================================================================== +ERROR: test_multiline_strings (__main__.GettextTestCase1) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_some_translations (__main__.GettextTestCase1) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_the_alternative_interface (__main__.GettextTestCase1) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_triple_double_quotes (__main__.GettextTestCase1) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_triple_single_quotes (__main__.GettextTestCase1) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_bindtextdomain (__main__.GettextTestCase2) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_double_quotes (__main__.GettextTestCase2) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_multiline_strings (__main__.GettextTestCase2) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_some_translations (__main__.GettextTestCase2) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_textdomain (__main__.GettextTestCase2) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_triple_double_quotes (__main__.GettextTestCase2) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_triple_single_quotes (__main__.GettextTestCase2) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_de (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_fr (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_gd (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_gd2 (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_hu (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_lt (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_pl (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_plural_forms1 (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_plural_forms2 (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_ru (__main__.PluralFormsTestCase) +----------------Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 345 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 341 in test_main + run_suite(suite()) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred; run in verbose mode for details +------------------------------------------------------ +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_security (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_sl (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_unicode_msgid (__main__.UnicodeTranslationsTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 293, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_unicode_msgstr (__main__.UnicodeTranslationsTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 293, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +====================================================================== +ERROR: test_weird_metadata (__main__.WeirdMetadataTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 313, in setUp + GettextBaseTest.setUp(self) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + os.makedirs(LOCALEDIR) + File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + mkdir(name, mode) +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES + +---------------------------------------------------------------------- +Ran 28 tests in 396.780s + +FAILED (errors=28) +========================== closed ========================== +execution time: 429.322220087 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_gl.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_gl.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gl.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:17:39 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gl.py", line 7 in ? +import gl, GL, time +ImportError: gl +========================== closed ========================== +execution time: 5.54836797714 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_glob.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_glob.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,28 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_glob.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:16:53 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_glob_directory_names (__main__.GlobTests) ... ok +test_glob_literal (__main__.GlobTests) ... ok +test_glob_nested_directory (__main__.GlobTests) ... ok +test_glob_one_directory (__main__.GlobTests) ... ok + +---------------------------------------------------------------------- +Ran 4 tests in 33.006s + +OK +========================== closed ========================== +execution time: 46.5945489407 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_global.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_global.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,20 @@ +test_global +should have raised SyntaxError: +def wrong1(): + a = 1 + b = 2 + global a + global b + +should have raised SyntaxError: +def wrong2(): + print x + global x + +should have raised SyntaxError: +def wrong3(): + print x + x = 2 + global x + +as expected, no SyntaxError Added: pypy/dist/lib-python-2.3.4/test/result/test_global.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_global.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_global.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:16:41 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_global.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +:2: SyntaxWarning: name 'a' is assigned to before global declaration +:2: SyntaxWarning: name 'b' is assigned to before global declaration +:2: SyntaxWarning: name 'x' is used prior to global declaration +:2: SyntaxWarning: name 'x' is assigned to before global declaration +========================== closed ========================== +execution time: 12.1803069115 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_grammar.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_grammar.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,40 @@ +test_grammar +1. Parser +1.1 Tokens +1.1.1 Backslashes +1.1.2 Numeric literals +1.1.2.1 Plain integers +1.1.2.2 Long integers +1.1.2.3 Floating point +1.1.3 String literals +1.2 Grammar +single_input +file_input +expr_input +eval_input +funcdef +lambdef +simple_stmt +expr_stmt +print_stmt +1 2 3 +1 2 3 +1 1 1 +extended print_stmt +1 2 3 +1 2 3 +1 1 1 +hello world +del_stmt +pass_stmt +flow_stmt +break_stmt +continue_stmt +continue + try/except ok +continue + try/finally ok +testing continue and break in try/except in loop +return_stmt +raise_stmt +import_stmt +global_stmt +exec_stmt Added: pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,30 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:16:31 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_grammar.out +============================================================ +faking +faking +/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py:42: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up + if -2147483647-1 != 020000000000: raise TestFailed, 'max negative int' +/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py:44: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up + if 037777777777 != -1: raise TestFailed, 'oct -1' +/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py:45: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up + if 0xffffffff != -1: raise TestFailed, 'hex -1' +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py", line 453 in ? +f() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py", line 446 in f + exec r"""if 1: + File "", line 2 in ? +TypeError: exec: arg 1 must be a string, file, or code object +========================== closed ========================== +execution time: 9.57444095612 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_grp.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_grp.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_grp.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:16:29 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_grp.py", line 3 in ? +import grp +ImportError: grp +========================== closed ========================== +execution time: 0.856007099152 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gzip.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:16:23 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gzip.py", line 3 in ? +import gzip + File "/home/arigo/pypysrc/lib-python-2.3.4/gzip.py", line 9 in ? +import zlib +ImportError: zlib +========================== closed ========================== +execution time: 5.7197458744 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_hash.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_hash.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_hash.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:16:14 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_coerced_floats (__main__.HashEqualityTestCase) ... ok +test_coerced_integers (__main__.HashEqualityTestCase) ... ok +test_numeric_literals (__main__.HashEqualityTestCase) ... ok + +---------------------------------------------------------------------- +Ran 3 tests in 1.198s + +OK +========================== closed ========================== +execution time: 8.76216888428 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_heapq.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:07:39 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +All OK +========================== closed ========================== +execution time: 514.994452 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,38 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_hexoct.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:07:21 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +:4: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:5: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:7: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:8: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:11: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:12: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:4: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:5: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:7: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:8: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:11: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +:12: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +test_hex_baseline (__main__.TextHexOct) ... ok +test_hex_unsigned (__main__.TextHexOct) ... ok +test_oct_baseline (__main__.TextHexOct) ... ok +test_oct_unsigned (__main__.TextHexOct) ... ok + +---------------------------------------------------------------------- +Ran 4 tests in 1.307s + +OK +========================== closed ========================== +execution time: 18.2040359974 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,60 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:04:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 167 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 163 in test_main + CopyTestCase + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors + "9294727A3638BB1C13F48EF8158BFC9D") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test + self.assertEqual(h.hexdigest().upper(), digest.upper()) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + raise self.failureException, \ +AssertionError: '000000000000000000000000E71DFA9D' != '9294727A3638BB1C13F48EF8158BFC9D' + +test_md5_vectors (__main__.TestVectorsTestCase) ... FAIL +test_sha_vectors (__main__.TestVectorsTestCase) ... ok +test_normal (__main__.ConstructorTestCase) ... ok +test_withmodule (__main__.ConstructorTestCase) ... ok +test_withtext (__main__.ConstructorTestCase) ... ok +test_default_is_md5 (__main__.SanityTestCase) ... ok +test_exercise_all_methods (__main__.SanityTestCase) ... ok +test_attributes (__main__.CopyTestCase) ... ok +test_equality (__main__.CopyTestCase) ... ok +test_realcopy (__main__.CopyTestCase) ... ok + +====================================================================== +FAIL: test_md5_vectors (__main__.TestVectorsTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors + "9294727A3638BB1C13F48EF8158BFC9D") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test + self.assertEqual(h.hexdigest().upper(), digest.upper()) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + raise self.failureException, \ +AssertionError: '000000000000000000000000E71DFA9D' != '9294727A3638BB1C13F48EF8158BFC9D' + +---------------------------------------------------------------------- +Ran 10 tests in 179.320s + +FAILED (failures=1) +========================== closed ========================== +execution time: 192.207137108 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_hotshot.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:04:07 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hotshot.py", line 1 in ? +import hotshot + File "/home/arigo/pypysrc/lib-python-2.3.4/hotshot/__init__.py", line 3 in ? +import _hotshot +ImportError: _hotshot +========================== closed ========================== +execution time: 0.968793869019 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,26 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_htmllib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 01:01:12 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_anchor_collection (__main__.HTMLParserTestCase) ... ok +test_decl_collection (__main__.HTMLParserTestCase) ... ok + +---------------------------------------------------------------------- +Ran 2 tests in 11.749s + +OK +========================== closed ========================== +execution time: 175.091779947 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,62 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:46:11 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py", line 301 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py", line 297 in test_main + test_support.run_unittest(HTMLParserTestCase) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py", line 160 in test_doctype_decl + self._run_check("" % inside, [ + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py", line 79 in _run_check + parser.feed(s) + File "/home/arigo/pypysrc/lib-python-2.3.4/HTMLParser.py", line 108 in feed + self.goahead(0) + File "/home/arigo/pypysrc/lib-python-2.3.4/HTMLParser.py", line 156 in goahead + k = self.parse_declaration(i) + File "/home/arigo/pypysrc/lib-python-2.3.4/markupbase.py", line 116 in parse_declaration + j = self._parse_doctype_subset(j + 1, i) + File "/home/arigo/pypysrc/lib-python-2.3.4/markupbase.py", line 205 in _parse_doctype_subset + j = meth(j, declstartpos) + File "/home/arigo/pypysrc/lib-python-2.3.4/markupbase.py", line 278 in _parse_doctype_attlist + name, j = self._scan_name(j, declstartpos) +KeyboardInterrupt +test_attr_entity_replacement (__main__.HTMLParserTestCase) ... ok +test_attr_funky_names (__main__.HTMLParserTestCase) ... ok +test_attr_syntax (__main__.HTMLParserTestCase) ... ok +test_attr_values (__main__.HTMLParserTestCase) ... ok +test_bad_nesting (__main__.HTMLParserTestCase) ... ok +test_bare_ampersands (__main__.HTMLParserTestCase) ... ok +test_bare_pointy_brackets (__main__.HTMLParserTestCase) ... ok +test_buffer_artefacts (__main__.HTMLParserTestCase) ... ok +test_cdata_content (__main__.HTMLParserTestCase) ... ok +test_declaration_junk_chars (__main__.HTMLParserTestCase) ... ok +test_doctype_decl (__main__.HTMLParserTestCase) ... ========================== closed ========================== +execution time: 900.158081055 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_httplib.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_httplib.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,13 @@ +test_httplib +reply: 'HTTP/1.1 200 Ok\r\n' +Text +reply: 'HTTP/1.1 400.100 Not Ok\r\n' +BadStatusLine raised as expected +InvalidURL raised as expected +InvalidURL raised as expected +reply: 'HTTP/1.1 200 OK\r\n' +header: Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme" +header: Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme" +reply: 'HTTP/1.1 200 OK\r\n' +header: Content-Length: 14432 + Added: pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,20 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_httplib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:45:36 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_httplib.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 35.2412950993 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_imageop.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:45:30 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imageop.py", line 10 in ? +import imageop, uu, os +ImportError: imageop +========================== closed ========================== +execution time: 5.54031991959 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_imaplib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:43:18 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 132.257404089 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_imgfile.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:43:12 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imgfile.py", line 9 in ? +import imgfile, uu, os +ImportError: imgfile +========================== closed ========================== +execution time: 5.53751707077 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_imp.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_imp.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_imp.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:43:06 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imp.py", line 39 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imp.py", line 36 in test_main + testLock() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imp.py", line 13 in testLock + lock_held_at_start = imp.lock_held() +AttributeError: 'module' object has no attribute 'lock_held' +========================== closed ========================== +execution time: 5.56586003304 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_import.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_import.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_import.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:42:57 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_import.py", line 67 in ? + test_with_extension(os.extsep + "py") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_import.py", line 53 in test_with_extension + raise ValueError("import from .pyc/.pyo failed: %s" % err) +ValueError: import from .pyc/.pyo failed: No module named @test +========================== closed ========================== +execution time: 8.07526302338 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,66 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:42:42 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 206 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 203 in test_main + test_support.run_unittest(ImportHooksTestCase) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred in __main__.ImportHooksTestCase +testBlocker (__main__.ImportHooksTestCase) ... ERROR +testImpWrapper (__main__.ImportHooksTestCase) ... ERROR +testMetaPath (__main__.ImportHooksTestCase) ... ERROR +testPathHook (__main__.ImportHooksTestCase) ... ERROR + +====================================================================== +ERROR: testBlocker (__main__.ImportHooksTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp + self.meta_path = sys.meta_path[:] +AttributeError: 'module' object has no attribute 'meta_path' + +====================================================================== +ERROR: testImpWrapper (__main__.ImportHooksTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp + self.meta_path = sys.meta_path[:] +AttributeError: 'module' object has no attribute 'meta_path' + +====================================================================== +ERROR: testMetaPath (__main__.ImportHooksTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp + self.meta_path = sys.meta_path[:] +AttributeError: 'module' object has no attribute 'meta_path' + +====================================================================== +ERROR: testPathHook (__main__.ImportHooksTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp + self.meta_path = sys.meta_path[:] +AttributeError: 'module' object has no attribute 'meta_path' + +---------------------------------------------------------------------- +Ran 4 tests in 3.283s + +FAILED (errors=4) +========================== closed ========================== +execution time: 14.5766859055 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_inspect.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:31:48 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_inspect.py", line 80 in ? +mod = imp.load_source('testmod', TESTFN) +AttributeError: 'module' object has no attribute 'load_source' +========================== closed ========================== +execution time: 652.909941912 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_ioctl.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:31:23 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ioctl.py", line 2 in ? +from test_support import TestSkipped, run_unittest + File "test_support.py", line 4 in ? + raise ImportError, 'test_support must be imported from the test package' +ImportError: test_support must be imported from the test package +========================== closed ========================== +execution time: 25.3406322002 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,65 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:29:58 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py", line 278 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py", line 273 in test_main + TestIsInstanceIsSubclass + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred; run in verbose mode for details +test_bases_raises_other_than_attribute_error (__main__.TestIsInstanceExceptions) ... ok +test_class_has_no_bases (__main__.TestIsInstanceExceptions) ... ok +test_dont_mask_non_attribute_error (__main__.TestIsInstanceExceptions) ... ok +test_mask_attribute_error (__main__.TestIsInstanceExceptions) ... ok +test_dont_mask_non_attribute_error (__main__.TestIsSubclassExceptions) ... ok +test_dont_mask_non_attribute_error_in_cls_arg (__main__.TestIsSubclassExceptions) ... ok +test_mask_attribute_error (__main__.TestIsSubclassExceptions) ... ok +test_mask_attribute_error_in_cls_arg (__main__.TestIsSubclassExceptions) ... ok +test_isinstance_abstract (__main__.TestIsInstanceIsSubclass) ... ok +test_isinstance_normal (__main__.TestIsInstanceIsSubclass) ... ok +test_isinstance_recursion_limit (__main__.TestIsInstanceIsSubclass) ... FAIL +test_subclass_abstract (__main__.TestIsInstanceIsSubclass) ... ok +test_subclass_normal (__main__.TestIsInstanceIsSubclass) ... ok +test_subclass_recursion_limit (__main__.TestIsInstanceIsSubclass) ... FAIL +test_subclass_tuple (__main__.TestIsInstanceIsSubclass) ... ok + +====================================================================== +FAIL: test_isinstance_recursion_limit (__main__.TestIsInstanceIsSubclass) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py", line 256, in test_isinstance_recursion_limit + self.assertRaises(RuntimeError, blowstack, isinstance, '', str) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises + raise self.failureException, excName +AssertionError: RuntimeError + +====================================================================== +FAIL: test_subclass_recursion_limit (__main__.TestIsInstanceIsSubclass) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py", line 251, in test_subclass_recursion_limit + self.assertRaises(RuntimeError, blowstack, issubclass, str, str) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises + raise self.failureException, excName +AssertionError: RuntimeError + +---------------------------------------------------------------------- +Ran 15 tests in 48.323s + +FAILED (failures=2) +========================== closed ========================== +execution time: 84.0605962276 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_iter.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_iter.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,224 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_iter.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:25:34 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_builtin_filter (__main__.TestCase) ... ok +test_builtin_list (__main__.TestCase) ... ok +test_builtin_map (__main__.TestCase) ... ok +test_builtin_max_min (__main__.TestCase) ... ok +test_builtin_reduce (__main__.TestCase) ... ok +test_builtin_tuple (__main__.TestCase) ... ok +test_builtin_zip (__main__.TestCase) ... ok +test_countOf (__main__.TestCase) ... ok +test_exception_function (__main__.TestCase) ... ok +test_exception_sequence (__main__.TestCase) ... ok +test_in_and_not_in (__main__.TestCase) ... ok +test_indexOf (__main__.TestCase) ... ok +test_iter_basic (__main__.TestCase) ... ok +test_iter_big_range (__main__.TestCase) ... ok +test_iter_callable (__main__.TestCase) ... ok +test_iter_class_for (__main__.TestCase) ... ok +test_iter_class_iter (__main__.TestCase) ... ok +test_iter_dict (__main__.TestCase) ... ok +test_iter_empty (__main__.TestCase) ... ok +test_iter_file (__main__.TestCase) ... ok +test_iter_for_loop (__main__.TestCase) ... ok +test_iter_function (__main__.TestCase) ... ok +test_iter_function_stop (__main__.TestCase) ... ok +test_iter_idempotency (__main__.TestCase) ... ok +test_iter_independence (__main__.TestCase) ... ok +test_iter_string (__main__.TestCase) ... ok +test_iter_tuple (__main__.TestCase) ... ok +test_iter_unicode (__main__.TestCase) ... ok +test_iter_xrange (__main__.TestCase) ... ok +test_nested_comprehensions_for (__main__.TestCase) ... ok +test_nested_comprehensions_iter (__main__.TestCase) ... ok +test_seq_class_for (__main__.TestCase) ... ok +test_seq_class_iter (__main__.TestCase) ... ok +test_sinkstate_callable (__main__.TestCase) ... ok +test_sinkstate_dict (__main__.TestCase) ... ok +test_sinkstate_enumerate (__main__.TestCase) ... ok +test_sinkstate_list (__main__.TestCase) ... ok +test_sinkstate_range (__main__.TestCase) ... ok +test_sinkstate_sequence (__main__.TestCase) ... ok +test_sinkstate_string (__main__.TestCase) ... ok +test_sinkstate_tuple (__main__.TestCase) ... ok +test_sinkstate_yield (__main__.TestCase) ... ok +test_stop_sequence (__main__.TestCase) ... ok +test_unicode_join_endcase (__main__.TestCase) ... ok +test_unpack_iter (__main__.TestCase) ... FAIL +test_writelines (__main__.TestCase) ... Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + frame.setfastscope(scope_w) + File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) +pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > +========================== closed ========================== +execution time: 263.113600969 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,51 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/pypy/lib/test2/test_itertools.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:10:34 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/pypy/lib/test2/test_itertools.py", line 654 in ? + test_main(verbose=True) + File "/home/arigo/pypysrc/pypy/lib/test2/test_itertools.py", line 638 in test_main + test_support.run_unittest(*test_classes) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/pypy/lib/test2/test_itertools.py", line 432 in test_dropwhile + self.assertRaises(TypeError, list, dropwhile(isOdd, N(s))) +KeyboardInterrupt +test_StopIteration (__main__.TestBasicOps) ... ok +test_chain (__main__.TestBasicOps) ... ok +test_count (__main__.TestBasicOps) ... ok +test_cycle (__main__.TestBasicOps) ... ok +test_dropwhile (__main__.TestBasicOps) ... ok +test_ifilter (__main__.TestBasicOps) ... ok +test_ifilterfalse (__main__.TestBasicOps) ... ok +test_imap (__main__.TestBasicOps) ... ok +test_islice (__main__.TestBasicOps) ... ok +test_izip (__main__.TestBasicOps) ... ok +test_repeat (__main__.TestBasicOps) ... ok +test_starmap (__main__.TestBasicOps) ... ok +test_takewhile (__main__.TestBasicOps) ... ok +test_chain (__main__.TestVariousIteratorArgs) ... ok +test_cycle (__main__.TestVariousIteratorArgs) ... ok +test_dropwhile (__main__.TestVariousIteratorArgs) ... ========================== closed ========================== +execution time: 900.342549086 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,55 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_largefile.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:10:06 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +create large file via seek (may be sparse file) ... +check file size with os.fstat +2500000001L =?= 2500000001L ... yes +check file size with os.stat +2500000001L =?= 2500000001L ... yes +play around with seek() and read() with the built largefile +0L =?= 0 ... yes +'z' =?= 'z' ... yes +1L =?= 1 ... yes +0L =?= 0 ... yes +0L =?= 0 ... yes +42L =?= 42 ... yes +42L =?= 42 ... yes +84L =?= 84 ... yes +84L =?= 84 ... yes +2500000001L =?= 2500000001L ... yes +2499999991L =?= 2499999991L ... yes +0L =?= 0 ... yes +2500000000L =?= 2500000000L ... yes +'a' =?= 'a' ... yes +'z' =?= 'z' ... yes +1L =?= 1 ... yes +play around with os.lseek() with the built largefile +0L =?= 0 ... yes +42L =?= 42 ... yes +84L =?= 84 ... yes +84L =?= 84 ... yes +2500000001L =?= 2500000001L ... yes +2499999991L =?= 2499999991L ... yes +0L =?= 0 ... yes +2500000000L =?= 2500000000L ... yes +'a' =?= 'a' ... yes +try truncate +2500000001L =?= 2500000001L ... yes +2499999990L =?= 2499999990L ... yes +2499999990L =?= 2499999990L ... yes +42L =?= 42 ... yes +2499999989L =?= 2499999989L ... yes +0L =?= 0 ... yes +1 =?= 1 ... yes +========================== closed ========================== +execution time: 27.9014949799 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_linuxaudiodev Added: pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_linuxaudiodev.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:09:52 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_linuxaudiodev.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_linuxaudiodev.py", line 7 in ? +import fcntl +ImportError: fcntl +========================== closed ========================== +execution time: 13.2105879784 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_locale.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_locale.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_locale.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:09:38 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_locale.py", line 16 in ? + raise ImportError, "test locale %s not supported" % tloc +ImportError: test locale en_US not supported +========================== closed ========================== +execution time: 13.8007359505 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_logging.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_logging.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_logging Added: pypy/dist/lib-python-2.3.4/test/result/test_logging.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_logging.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,30 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_logging.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Thu Apr 28 00:08:49 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_logging.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_logging.py", line 29 in ? +import socket, threading, time + File "/home/arigo/pypysrc/lib-python-2.3.4/threading.py", line 6 in ? + import thread +ImportError: thread +========================== closed ========================== +execution time: 48.6045329571 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_long.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_long.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,25 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_long.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:53:48 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long.py", line 436 in ? +test_division() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long.py", line 100 in test_division + y = getran(leny) or 1L + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long.py", line 59 in getran + r = int(random() * (SHIFT * 2)) +KeyboardInterrupt +long / * % divmod +========================== closed ========================== +execution time: 900.321178913 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_long_future.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:53:40 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long_future.py", line 55 in ? +test_true_division() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long_future.py", line 19 in test_true_division + verify(1 / mhuge == 0.0) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 180 in verify + raise TestFailed(reason) +TestFailed: test failed +long true division +========================== closed ========================== +execution time: 7.60211396217 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_longexp.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_longexp.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,2 @@ +test_longexp +65580 Added: pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_longexp.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:53:37 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_longexp.out +============================================================ +faking +faking +faking +========================== closed ========================== +execution time: 3.1265900135 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_macfs.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:53:15 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_macfs.py", line 6 in ? +import macfs +ImportError: macfs +========================== closed ========================== +execution time: 20.9656069279 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_macostools.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:53:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_macostools.py", line 4 in ? +import macostools +ImportError: macostools +========================== closed ========================== +execution time: 6.03005599976 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,26 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_macpath.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:52:54 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_abspath (__main__.MacPathTestCase) ... ok +test_commonprefix (__main__.MacPathTestCase) ... ok +test_isabs (__main__.MacPathTestCase) ... ok +test_split (__main__.MacPathTestCase) ... ok +test_splitdrive (__main__.MacPathTestCase) ... ok +test_splitext (__main__.MacPathTestCase) ... ok + +---------------------------------------------------------------------- +Ran 6 tests in 4.158s + +OK +========================== closed ========================== +execution time: 14.3959858418 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mailbox.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:52:19 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Test an empty maildir mailbox ... ok +test_nonempty_maildir_both (__main__.MaildirTestCase) ... ok +test_nonempty_maildir_cur (__main__.MaildirTestCase) ... ok +test_nonempty_maildir_new (__main__.MaildirTestCase) ... ok + +---------------------------------------------------------------------- +Ran 4 tests in 9.789s + +OK +========================== closed ========================== +execution time: 34.6647808552 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,30 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_marshal.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:37:18 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_marshal.py", line 44 in ? +marshal.dumps([128] * 1000) + File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 338 in dumps + dump(x, f) + File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 331 in dump + Marshaller(f).dump(x) + File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 41 in dump + self.dispatch[type(x)](self, x) + File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 142 in dump_list + self.dump(item) + File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 41 in dump + self.dispatch[type(x)](self, x) +KeyboardInterrupt +========================== closed ========================== +execution time: 900.541698933 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_math.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_math.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,29 @@ +test_math +math module, testing with eps 1e-05 +constants +acos +asin +atan +atan2 +ceil +cos +cosh +degrees +exp +fabs +floor +fmod +frexp +hypot +ldexp +log +log10 +modf +pow +radians +sin +sinh +sqrt +tan +tanh +exceptions Added: pypy/dist/lib-python-2.3.4/test/result/test_math.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_math.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,17 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_math.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:37:12 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_math.out +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 6.5071618557 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_md5.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_md5.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,9 @@ +test_md5 +MD5 test suite: +MD5 ("") = 000000000000000000000000ecf8427e +MD5 ("a") = 00000000000000000000000069772661 +MD5 ("abc") = 00000000000000000000000028e17f72 +MD5 ("message digest") = 000000000000000000000000aaf161d0 +MD5 ("abcdefghijklmnopqrstuvwxyz") = 000000000000000000000000ca67e13b +MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 0000000000000000000000009f419d9f +MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 0000000000000000000000002107b67a Added: pypy/dist/lib-python-2.3.4/test/result/test_md5.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_md5.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_md5.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:36:54 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_md5.out +============================================================ +faking +faking +faking +========================== closed ========================== +execution time: 18.02038908 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,29 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mhlib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:26:26 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_basic (__main__.MhlibTests) ... ok +test_listfolders (__main__.MhlibTests) ... ok +test_modify (__main__.MhlibTests) ... ok +test_read (__main__.MhlibTests) ... ok +test_sequence (__main__.MhlibTests) ... ok + +---------------------------------------------------------------------- +Ran 5 tests in 610.792s + +OK +========================== closed ========================== +execution time: 627.443366051 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,26 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mimetools.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:24:57 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +test_boundary (__main__.MimeToolsTest) ... ok +test_decodeencode (__main__.MimeToolsTest) ... ok +test_message (__main__.MimeToolsTest) ... ok + +---------------------------------------------------------------------- +Ran 3 tests in 76.316s + +OK +========================== closed ========================== +execution time: 89.063904047 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,32 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mimetypes.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:23:58 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_data_urls (__main__.MimeTypesTestCase) ... ok +test_default_data (__main__.MimeTypesTestCase) ... ok +test_file_parsing (__main__.MimeTypesTestCase) ... ok +test_guess_all_types (__main__.MimeTypesTestCase) ... ok +test_non_standard_types (__main__.MimeTypesTestCase) ... ok + +---------------------------------------------------------------------- +Ran 5 tests in 44.121s + +OK +========================== closed ========================== +execution time: 58.8752701283 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,25 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_minidom.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:23:20 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_minidom.py", line 12 in ? +import xml.parsers.expat + File "/home/arigo/pypysrc/lib-python-2.3.4/xml/parsers/expat.py", line 4 in ? +from pyexpat import * +ImportError: pyexpat +========================== closed ========================== +execution time: 24.8063130379 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_mmap.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_mmap.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_mmap Added: pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mmap.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:23:14 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_mmap.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_mmap.py", line 2 in ? +import mmap +ImportError: mmap +========================== closed ========================== +execution time: 5.55223202705 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_module.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_module.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_module.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:23:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_module.py", line 10 in ? +verify(foo.__dict__ is None) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 180 in verify + raise TestFailed(reason) +TestFailed: test failed +========================== closed ========================== +execution time: 5.52077507973 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mpz.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:23:07 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_mpz.py", line 2 in ? +import mpz +ImportError: mpz +========================== closed ========================== +execution time: 0.877066135406 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_multifile.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 23:22:40 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 27.0769410133 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_mutants.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_mutants.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mutants.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:58:27 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +trying w/ lengths 47 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ==========================timeout========================== +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ========================== closed ========================== +execution time: 1452.85674214 seconds +exit status: 143 Added: pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_netrc.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:58:03 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_case_1 (__main__.NetrcTestCase) ... ok + +---------------------------------------------------------------------- +Ran 1 test in 15.914s + +OK +========================== closed ========================== +execution time: 23.7061269283 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_new.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_new.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,10 @@ +test_new +new.module() + +new.classobj() +__main__.Spam +new.instance() +<__main__.Spam instance at 0x40bcc98c> +new.instancemethod() + +new.function() Added: pypy/dist/lib-python-2.3.4/test/result/test_new.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_new.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_new.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:57:56 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_new.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_new.py", line 67 in ? +func = new.function(ccode, g) +TypeError: default __new__ takes no parameters +========================== closed ========================== +execution time: 6.74917197227 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_nis.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_nis.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_nis Added: pypy/dist/lib-python-2.3.4/test/result/test_nis.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_nis.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_nis.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:57:50 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_nis.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_nis.py", line 2 in ? +import nis +ImportError: nis +========================== closed ========================== +execution time: 5.52605700493 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_normalization.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:57:43 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_normalization.py", line 91 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_normalization.py", line 44 in test_main + raise TestSkipped(TESTDATAFILE + " not found, download from " + +TestSkipped: NormalizationTest-3.2.0.txt not found, download from http://www.unicode.org/Public/3.2-Update/NormalizationTest-3.2.0.txt +========================== closed ========================== +execution time: 5.65503716469 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_ntpath.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:57:34 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +No errors. Thank your lucky stars. +========================== closed ========================== +execution time: 9.62477493286 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_opcodes.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_opcodes.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,5 @@ +test_opcodes +2. Opcodes +XXX Not yet fully implemented +2.1 try inside for loop +2.2 raise class exceptions Added: pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_opcodes.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:57:24 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_opcodes.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_opcodes.py", line 61 in ? +try: raise BClass, a +BClass: <__main__.BClass instance at 0x40bd2ecc> +========================== closed ========================== +execution time: 8.82748818398 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_openpty.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_openpty.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,4 @@ +test_openpty +Calling os.openpty() +(master, slave) = (5, 6) +Ping! Added: pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,17 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_openpty.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:57:19 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_openpty.out +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 5.74162387848 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_operations.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_operations.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,5 @@ +test_operations +3. Operations +XXX Mostly not yet implemented +3.1 Dictionary lookups succeed even if __cmp__() raises an exception +raising error Added: pypy/dist/lib-python-2.3.4/test/result/test_operations.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_operations.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_operations.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:57:16 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_operations.out +============================================================ +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operations.py", line 36 in ? +d[x2] = 2 + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operations.py", line 29 in __cmp__ + raise RuntimeError, "gotcha" +RuntimeError: gotcha +========================== closed ========================== +execution time: 1.90072512627 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_operator.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_operator.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,91 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:56:52 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 235 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 231 in test_main + test_support.run_unittest(OperatorTestCase) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 116, in test_isCallable + check(self, C(), 0) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 112, in check + self.assert_(operator.isCallable(o) == callable(o) == v) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError + +test_abs (__main__.OperatorTestCase) ... ok +test_add (__main__.OperatorTestCase) ... ok +test_bitwise_and (__main__.OperatorTestCase) ... ok +test_bitwise_or (__main__.OperatorTestCase) ... ok +test_bitwise_xor (__main__.OperatorTestCase) ... ok +test_concat (__main__.OperatorTestCase) ... ok +test_contains (__main__.OperatorTestCase) ... ok +test_countOf (__main__.OperatorTestCase) ... ok +test_delitem (__main__.OperatorTestCase) ... ok +test_delslice (__main__.OperatorTestCase) ... ok +test_div (__main__.OperatorTestCase) ... ok +test_eq (__main__.OperatorTestCase) ... ok +test_floordiv (__main__.OperatorTestCase) ... ok +test_ge (__main__.OperatorTestCase) ... ok +test_getitem (__main__.OperatorTestCase) ... ok +test_getslice (__main__.OperatorTestCase) ... ok +test_gt (__main__.OperatorTestCase) ... ok +test_indexOf (__main__.OperatorTestCase) ... ok +test_invert (__main__.OperatorTestCase) ... ok +test_is (__main__.OperatorTestCase) ... ok +test_isCallable (__main__.OperatorTestCase) ... FAIL +test_isMappingType (__main__.OperatorTestCase) ... ok +test_isNumberType (__main__.OperatorTestCase) ... ok +test_isSequenceType (__main__.OperatorTestCase) ... ok +test_is_not (__main__.OperatorTestCase) ... ok +test_le (__main__.OperatorTestCase) ... ok +test_lshift (__main__.OperatorTestCase) ... ok +test_lt (__main__.OperatorTestCase) ... ok +test_mod (__main__.OperatorTestCase) ... ok +test_mul (__main__.OperatorTestCase) ... ok +test_ne (__main__.OperatorTestCase) ... ok +test_neg (__main__.OperatorTestCase) ... ok +test_pos (__main__.OperatorTestCase) ... ok +test_pow (__main__.OperatorTestCase) ... ok +test_repeat (__main__.OperatorTestCase) ... ok +test_rshift (__main__.OperatorTestCase) ... ok +test_setitem (__main__.OperatorTestCase) ... ok +test_setslice (__main__.OperatorTestCase) ... ok +test_sub (__main__.OperatorTestCase) ... ok +test_truediv (__main__.OperatorTestCase) ... ok +test_truth (__main__.OperatorTestCase) ... ok + +====================================================================== +FAIL: test_isCallable (__main__.OperatorTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 116, in test_isCallable + check(self, C(), 0) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 112, in check + self.assert_(operator.isCallable(o) == callable(o) == v) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError + +---------------------------------------------------------------------- +Ran 41 tests in 14.734s + +FAILED (failures=1) +========================== closed ========================== +execution time: 23.8398969173 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,31 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_optparse.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:56:05 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_optparse.py", line 1219 in ? + unittest.main() + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 720 in __init__ + self.parseArgs(argv) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 741 in parseArgs + self.test = self.testLoader.loadTestsFromModule(self.module) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 465 in loadTestsFromModule + tests.append(self.loadTestsFromTestCase(obj)) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 456 in loadTestsFromTestCase + self.getTestCaseNames(testCaseClass))) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 532 in getTestCaseNames + testFnNames.sort(self.sortTestMethodsUsing) +TypeError: cmp() takes exactly 2 arguments (3 given) +========================== closed ========================== +execution time: 46.2194261551 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_os.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_os.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,34 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_os.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:55:24 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +/home/arigo/pypysrc/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program + result = apply(fn, self.unwrappedargs, self.unwrappedkwds) +/home/arigo/pypysrc/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program + result = apply(fn, self.unwrappedargs, self.unwrappedkwds) +test_tempnam (__main__.TemporaryFileTests) ... ok +test_tmpfile (__main__.TemporaryFileTests) ... ok +test_tmpnam (__main__.TemporaryFileTests) ... ok +test_stat_attributes (__main__.StatAttributeTests) ... ok +test_statvfs_attributes (__main__.StatAttributeTests) ... ok +test_read (__main__.EnvironTests) ... ok +test_write (__main__.EnvironTests) ... ok +test_traversal (__main__.WalkTests) ... ok + +---------------------------------------------------------------------- +Ran 8 tests in 17.968s + +OK +========================== closed ========================== +execution time: 40.9059519768 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_ossaudiodev Added: pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_ossaudiodev.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:55:18 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_ossaudiodev.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ossaudiodev.py", line 7 in ? +import fcntl +ImportError: fcntl +========================== closed ========================== +execution time: 5.58309197426 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_parser.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_parser.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,239 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:54:38 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +test_assert (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_basic_import_statement (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_expressions (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_function_defs (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_import_from_statement (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_pep263 (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_print (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_simple_assignments (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_simple_augmented_assignments (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_simple_expression (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_yield_statement (__main__.RoundtripLegalSyntaxTestCase) ... ERROR +test_a_comma_comma_c (__main__.IllegalSyntaxTestCase) ... ERROR +test_illegal_operator (__main__.IllegalSyntaxTestCase) ... ERROR +test_illegal_yield_1 (__main__.IllegalSyntaxTestCase) ... ERROR +test_illegal_yield_2 (__main__.IllegalSyntaxTestCase) ... ERROR +test_junk (__main__.IllegalSyntaxTestCase) ... ERROR +test_malformed_global (__main__.IllegalSyntaxTestCase) ... ERROR +test_print_chevron_comma (__main__.IllegalSyntaxTestCase) ... ERROR + +====================================================================== +ERROR: test_assert (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 142, in test_assert + self.check_suite("assert alo < ahi and blo < bhi\n") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_basic_import_statement (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 131, in test_basic_import_statement + self.check_suite("import sys") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_expressions (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 39, in test_expressions + self.check_expr("foo(1)") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 25, in check_expr + self.roundtrip(parser.expr, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_function_defs (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 102, in test_function_defs + self.check_suite("def f(): pass") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_import_from_statement (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 121, in test_import_from_statement + self.check_suite("from sys.path import *") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_pep263 (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 138, in test_pep263 + self.check_suite("# -*- coding: iso-8859-1 -*-\n" + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_print (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 72, in test_print + self.check_suite("print") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_simple_assignments (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 84, in test_simple_assignments + self.check_suite("a = b") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_simple_augmented_assignments (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 88, in test_simple_augmented_assignments + self.check_suite("a += b") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_simple_expression (__main__.RoundtripLegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 81, in test_simple_expression + self.check_suite("a") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_yield_statement (__main__.RoundtripLegalSyntaxTestCase) +------------------------------------------------------------------Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 384 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 379 in test_main + IllegalSyntaxTestCase + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred; run in verbose mode for details +---- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 31, in test_yield_statement + self.check_suite("def f(): yield 1") + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + self.roundtrip(parser.suite, s) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + t = st1.totuple() +AttributeError: 'st' object has no attribute 'totuple' + +====================================================================== +ERROR: test_a_comma_comma_c (__main__.IllegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 330, in test_a_comma_comma_c + self.check_bad_tree(tree, "a,,c") +TypeError: instance exception may not have a separate value + +====================================================================== +ERROR: test_illegal_operator (__main__.IllegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 363, in test_illegal_operator + self.check_bad_tree(tree, "a $= b") +TypeError: instance exception may not have a separate value + +====================================================================== +ERROR: test_illegal_yield_1 (__main__.IllegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 216, in test_illegal_yield_1 + self.check_bad_tree(tree, "def f():\n return 1\n yield 1") +TypeError: instance exception may not have a separate value + +====================================================================== +ERROR: test_illegal_yield_2 (__main__.IllegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 280, in test_illegal_yield_2 + self.check_bad_tree(tree, "def f():\n return 1\n yield 1") +TypeError: instance exception may not have a separate value + +====================================================================== +ERROR: test_junk (__main__.IllegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 161, in test_junk + self.check_bad_tree((1, 2, 3), "") +TypeError: instance exception may not have a separate value + +====================================================================== +ERROR: test_malformed_global (__main__.IllegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 374, in test_malformed_global + self.check_bad_tree(tree, "malformed global ast") +TypeError: instance exception may not have a separate value + +====================================================================== +ERROR: test_print_chevron_comma (__main__.IllegalSyntaxTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 303, in test_print_chevron_comma + self.check_bad_tree(tree, "print >>fp,") +TypeError: instance exception may not have a separate value + +---------------------------------------------------------------------- +Ran 18 tests in 21.775s + +FAILED (errors=18) +========================== closed ========================== +execution time: 39.7464900017 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pep247.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:54:32 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pep247.py", line 48 in ? + check_hash_module(md5) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pep247.py", line 29 in check_hash_module + assert hasattr(obj1, 'digest_size'), "Objects must have digest_size attr" +AssertionError: Objects must have digest_size attr +========================== closed ========================== +execution time: 5.19608592987 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,12 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pep263.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:54:31 2005 +pypy-revision: 11518 +============================================================ +faking +faking +========================== closed ========================== +execution time: 0.839457035065 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pep277.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:54:25 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pep277.py", line 6 in ? + raise test_support.TestSkipped, "test works only on NT+" +TestSkipped: test works only on NT+ +========================== closed ========================== +execution time: 5.53592705727 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,58 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pickle.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:39:25 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pickle.py", line 73 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pickle.py", line 68 in test_main + PersPicklerTests + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/pickletester.py", line 776 in test_dict_chunking + s = self.dumps(x, proto) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pickle.py", line 15 in dumps + return pickle.dumps(arg, proto) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 1386 in dumps + Pickler(file, protocol, bin).dump(obj) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 231 in dump + self.save(obj) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save + f(self, obj) # Call unbound method with explicit self + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 663 in save_dict + self._batch_setitems(obj.iteritems()) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 677 in _batch_setitems + save(v) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save + f(self, obj) # Call unbound method with explicit self + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 441 in save_none + self.write(NONE) + File "/home/arigo/pypysrc/lib-python-2.3.4/StringIO.py", line 161 in write + if not isinstance(s, basestring): +KeyboardInterrupt +test_dict_chunking (__main__.PickleTests) ... ========================== closed ========================== +execution time: 900.225749016 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,713 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pickletools.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:27:38 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +Running pickletools.__doc__ +0 of 0 examples failed in pickletools.__doc__ +Running pickletools.ArgumentDescriptor.__doc__ +0 of 0 examples failed in pickletools.ArgumentDescriptor.__doc__ +Running pickletools.ArgumentDescriptor.__init__.__doc__ +0 of 0 examples failed in pickletools.ArgumentDescriptor.__init__.__doc__ +Running pickletools.OpcodeInfo.__doc__ +0 of 0 examples failed in pickletools.OpcodeInfo.__doc__ +Running pickletools.OpcodeInfo.__init__.__doc__ +0 of 0 examples failed in pickletools.OpcodeInfo.__init__.__doc__ +Running pickletools.StackObject.__doc__ +0 of 0 examples failed in pickletools.StackObject.__doc__ +Running pickletools.StackObject.__init__.__doc__ +0 of 0 examples failed in pickletools.StackObject.__init__.__doc__ +Running pickletools.StackObject.__repr__.__doc__ +0 of 0 examples failed in pickletools.StackObject.__repr__.__doc__ +Running pickletools._test.__doc__ +0 of 0 examples failed in pickletools._test.__doc__ +Running pickletools.dis.__doc__ +0 of 0 examples failed in pickletools.dis.__doc__ +Running pickletools.genops.__doc__ +0 of 0 examples failed in pickletools.genops.__doc__ +Running pickletools.read_decimalnl_long.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_decimalnl_long(StringIO.StringIO("1234\n56")) +Expecting: +Traceback (most recent call last): +... +ValueError: trailing 'L' required in '1234' +ok +Trying: read_decimalnl_long(StringIO.StringIO("1234L\n56")) +Expecting: 1234L +ok +Trying: +read_decimalnl_long(StringIO.StringIO("123456789012345678901234L\n6")) +Expecting: 123456789012345678901234L +ok +0 of 4 examples failed in pickletools.read_decimalnl_long.__doc__ +Running pickletools.read_decimalnl_short.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_decimalnl_short(StringIO.StringIO("1234\n56")) +Expecting: 1234 +ok +Trying: read_decimalnl_short(StringIO.StringIO("1234L\n56")) +Expecting: +Traceback (most recent call last): +... +ValueError: trailing 'L' not allowed in '1234L' +ok +0 of 3 examples failed in pickletools.read_decimalnl_short.__doc__ +Running pickletools.read_float8.__doc__ +Trying: import StringIO, struct +Expecting: nothing +ok +Trying: raw = struct.pack(">d", -1.25) +Expecting: nothing +ok +Trying: raw +Expecting: '\xbf\xf4\x00\x00\x00\x00\x00\x00' +***************************************************************** +Failure in example: raw +from line #3 of pickletools.read_float8 +Expected: '\xbf\xf4\x00\x00\x00\x00\x00\x00' +Got: '\xc0\x00\x00\x00\x00\x00\x00\x00' +Trying: read_float8(StringIO.StringIO(raw + "\n")) +Expecting: -1.25 +***************************************************************** +Failure in example: read_float8(StringIO.StringIO(raw + "\n")) +from line #5 of pickletools.read_float8 +Expected: -1.25 +Got: -2.0 +2 of 4 examples failed in pickletools.read_float8.__doc__ +Running pickletools.read_floatnl.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_floatnl(StringIO.StringIO("-1.25\n6")) +Expecting: -1.25 +ok +0 of 2 examples failed in pickletools.read_floatnl.__doc__ +Running pickletools.read_int4.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_int4(StringIO.StringIO('\xff\x00\x00\x00')) +Expecting: 255 +ok +Trying: read_int4(StringIO.StringIO('\x00\x00\x00\x80')) == -(2**31) +Expecting: True +ok +0 of 3 examples failed in pickletools.read_int4.__doc__ +Running pickletools.read_long1.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_long1(StringIO.StringIO("\x00")) +Expecting: 0L +ok +Trying: read_long1(StringIO.StringIO("\x02\xff\x00")) +Expecting: 255L +ok +Trying: read_long1(StringIO.StringIO("\x02\xff\x7f")) +Expecting: 32767L +ok +Trying: read_long1(StringIO.StringIO("\x02\x00\xff")) +Expecting: -256L +ok +Trying: read_long1(StringIO.StringIO("\x02\x00\x80")) +Expecting: -32768L +ok +0 of 6 examples failed in pickletools.read_long1.__doc__ +Running pickletools.read_long4.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_long4(StringIO.StringIO("\x02\x00\x00\x00\xff\x00")) +Expecting: 255L +ok +Trying: read_long4(StringIO.StringIO("\x02\x00\x00\x00\xff\x7f")) +Expecting: 32767L +ok +Trying: read_long4(StringIO.StringIOfaking +("\x02\x00\x00\x00\x00\xff")) +Expecting: -256L +ok +Trying: read_long4(StringIO.StringIO("\x02\x00\x00\x00\x00\x80")) +Expecting: -32768L +ok +Trying: read_long1(StringIO.StringIO("\x00\x00\x00\x00")) +Expecting: 0L +ok +0 of 6 examples failed in pickletools.read_long4.__doc__ +Running pickletools.read_string1.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_string1(StringIO.StringIO("\x00")) +Expecting: '' +ok +Trying: read_string1(StringIO.StringIO("\x03abcdef")) +Expecting: 'abc' +ok +0 of 3 examples failed in pickletools.read_string1.__doc__ +Running pickletools.read_string4.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_string4(StringIO.StringIO("\x00\x00\x00\x00abc")) +Expecting: '' +ok +Trying: read_string4(StringIO.StringIO("\x03\x00\x00\x00abcdef")) +Expecting: 'abc' +ok +Trying: read_string4(StringIO.StringIO("\x00\x00\x00\x03abcdef")) +Expecting: +Traceback (most recent call last): +... +ValueError: expected 50331648 bytes in a string4, but only 6 remain +ok +0 of 4 examples failed in pickletools.read_string4.__doc__ +Running pickletools.read_stringnl.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_stringnl(StringIO.StringIO("'abcd'\nefg\n")) +Expecting: 'abcd' +ok +Trying: read_stringnl(StringIO.StringIO("\n")) +Expecting: +Traceback (most recent call last): +... +ValueError: no string quotes around '' +ok +Trying: read_stringnl(StringIO.StringIO("\n"), stripquotes=False) +Expecting: '' +ok +Trying: read_stringnl(StringIO.StringIO("''\n")) +Expecting: '' +ok +Trying: read_stringnl(StringIO.StringIO('"abcd"')) +Expecting: +Traceback (most recent call last): +... +ValueError: no newline found when trying to read stringnl +ok +Trying: read_stringnl(StringIO.StringIO(r"'a\n\\b\x00c\td'" + "\n'e'")) +Expecting: 'a\n\\b\x00c\td' +ok +0 of 7 examples failed in pickletools.read_stringnl.__doc__ +Running pickletools.read_stringnl_noescape.__doc__ +0 of 0 examples failed in pickletools.read_stringnl_noescape.__doc__ +Running pickletools.read_stringnl_noescape_pair.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_stringnl_noescape_pair(StringIO.StringIO("Queue\nEmpty\njunk")) +Expecting: 'Queue Empty' +ok +0 of 2 examples failed in pickletools.read_stringnl_noescape_pair.__doc__ +Running pickletools.read_uint1.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_uint1(StringIO.StringIO('\xff')) +Expecting: 255 +ok +0 of 2 examples failed in pickletools.read_uint1.__doc__ +Running pickletools.read_uint2.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_uint2(StringIO.StringIO('\xff\x00')) +Expecting: 255 +ok +Trying: read_uint2(StringIO.StringIO('\xff\xff')) +Expecting: 65535 +ok +0 of 3 examples failed in pickletools.read_uint2.__doc__ +Running pickletools.read_unicodestring4.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: s = u'abcd\uabcd' +Expecting: nothing +ok +Trying: enc = s.encode('utf-8') +Expecting: nothing +ok +Trying: enc +Expecting: 'abcd\xea\xaf\x8d' +ok +Trying: n = chr(len(enc)) + chr(0) * 3 # little-endian 4-byte length +Expecting: nothing +ok +Trying: t = read_unicodestring4(StringIO.StringIO(n + enc + 'junk')) +Expecting: nothing +ok +Trying: s == t +Expecting: True +ok +Trying: read_unicodestring4(StringIO.StringIO(n + enc[:-1])) +Expecting: +Traceback (most recent call last): +... +ValueError: expected 7 bytes in a unicodestring4, but only 6 remain +ok +0 of 8 examples failed in pickletools.read_unicodestring4.__doc__ +Running pickletools.read_unicodestringnl.__doc__ +Trying: import StringIO +Expecting: nothing +ok +Trying: read_unicodestringnl(StringIO.StringIO("abc\uabcd\njunk")) +Expecting: u'abc\uabcd' +ok +0 of 2 examples failed in pickletools.read_unicodestringnl.__doc__ +Running string pickletools.__test__.disassembler_memo_test +Trying: import pickle +Expecting: nothing +ok +Trying: from StringIO import StringIO +Expecting: nothing +ok +Trying: f = StringIO() +Expecting: nothing +ok +Trying: p = pickle.Pickler(f, 2) +Expecting: nothing +ok +Trying: x = [1, 2, 3] +Expecting: nothing +ok +Trying: p.dump(x) +Expecting: nothing +ok +Trying: p.dump(x) +Expecting: nothing +ok +Trying: f.seek(0) +Expecting: nothing +ok +Trying: memo = {} +Expecting: nothing +ok +Trying: dis(f, memo=memo) +Expecting: + 0: \x80 PROTO 2 + 2: ] EMPTY_LIST + 3: q BINPUT 0 + 5: ( MARK + 6: K BININT1 1 + 8: K BININT1 2 + 10: K BININT1 3 + 12: e APPENDS (MARK at 5) + 13: . STOP +highest protocol among opcodes = 2 +ok +Trying: dis(f, memo=memo) +Expecting: + 14: \x80 PROTO 2 + 16: h BINGET 0 + 18: . STOP +highest protocol among opcodes = 2 +ok +0 of 11 examples failed in string pickletools.__test__.disassembler_memo_test +Running string pickletools.__test__.disassembler_test +Trying: import pickle +Expecting: nothing +ok +Trying: x = [1, 2, (3, 4), {'abc': u"def"}] +Expecting: nothing +ok +Trying: pkl = pickle.dumps(x, 0) +Expecting: nothing +ok +Trying: dis(pkl) +Expecting: + 0: ( MARK + 1: l LIST (MARK at 0) + 2: p PUT 0 + 5: I INT 1 + 8: a APPEND + 9: I INT 2 + 12: a APPEND + 13: ( MARK + 14: I INT 3 + 17: I INT 4 + 20: t TUPLE (MARK at 13) + 21: p PUT 1 + 24: a APPEND + 25: ( MARK + 26: d DICT (MARK at 25) + 27: p PUT 2 + 30: S STRING 'abc' + 37: p PUT 3 + 40: V UNICODE u'def' + 45: p PUT 4 + 48: s SETITEM + 49: a APPEND + 50: . STOP +highest protocol among opcodes = 0 +ok +Trying: pkl = pickle.dumps(x, 1) +Expecting: nothing +ok +Trying: dis(pkl) +Expecting: + 0: ] EMPTY_LIST + 1: q BINPUT 0 + 3: ( MARK + 4: K BININT1 1 + 6: K BININT1 2 + 8: ( MARK + 9: K BININT1 3 + 11: K BININT1 4 + 13: t TUPLE (MARK at 8) + 14: q BINPUT 1 + 16: } EMPTY_DICT + 17: q BINPUT 2 + 19: U SHORT_BINSTRING 'abc' + 24: q BINPUT 3 + 26: X BINUNICODE u'def' + 34: q BINPUT 4 + 36: s SETITEM + 37: e APPENDS (MARK at 3) + 38: . STOP +highest protocol among opcodes = 1 +ok +Trying: import random +Expecting: nothing +ok +Trying: dis(pickle.dumps(random.random, 0)) +Expecting: + 0: c GLOBAL 'random random' + 15: p PUT 0 + 18: . STOP +highest protocol among opcodes = 0 +***************************************************************** +Failure in example: dis(pickle.dumps(random.random, 0)) +from line #58 of pickletools.__test__.disassembler_test +Exception raised: +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + compileflags, 1) in globs + File "", line 1, in ? + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 1386, in dumps + Pickler(file, protocol, bin).dump(obj) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 231, in dump + self.save(obj) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 313, in save + rv = reduce(self.proto) + File "/home/arigo/pypysrc/lib-python-2.3.4/copy_reg.py", line 69, in _reduce_ex + raise TypeError, "can't pickle %s objects" % base.__name__ +TypeError: can't pickle method objects +Trying: x = [pickle.PicklingError()] * 2 +Expecting: nothing +ok +Trying: dis(pickle.dumps(x, 0)) +Expecting: + 0: ( MARK + 1: l LIST (MARK at 0) + 2: p PUT 0 + 5: ( MARK + 6: i INST 'pickle PicklingError' (MARK at 5) + 28: p PUT 1 + 31: ( MARK + 32: d DICT (MARK at 31) + 33: p PUT 2 + 36: S STRING 'args' + 44: p PUT 3 + 47: ( MARK + 48: t TUPLE (MARK at 47) + 49: s SETITEM + 50: b BUILD + 51: a APPEND + 52: g GET 1 + 55: a APPEND + 56: . STOP +highest protocol among opcodes = 0 +***************************************************************** +Failure in example: dis(pickle.dumps(x, 0)) +from line #65 of pickletools.__test__.disassembler_test +Expected: + 0: ( MARK + 1: l LIST (MARK at 0) + 2: p PUT 0 + 5: ( MARK + 6: i INST 'pickle PicklingError' (MARK at 5) + 28: p PUT 1 + 31: ( MARK + 32: d DICT (MARK at 31) + 33: p PUT 2 + 36: S STRING 'args' + 44: p PUT 3 + 47: ( MARK + 48: t TUPLE (MARK at 47) + 49: s SETITEM + 50: b BUILD + 51: a APPEND + 52: g GET 1 + 55: a APPEND + 56: . STOP +highest protocol among opcodes = 0 +Got: + 0: ( MARK + 1: l LIST (MARK at 0) + 2: p PUT 0 + 5: c GLOBAL 'copy_reg _reconstructor' + 30: p PUT 1 + 33: ( MARK + 34: c GLOBAL 'pickle PicklingError' + 56: p PUT 2 + 59: c GLOBAL '__builtin__ object' + 79: p PUT 3 + 82: N NONE + 83: t TUPLE (MARK at 33) + 84: p PUT 4 + 87: R REDUCE + 88: p PUT 5 + 91: ( MARK + 92: d DICT (MARK at 91) + 93: p PUT 6 + 96: S STRING 'args' + 104: p PUT 7 + 107: ( MARK + 108: t TUPLE (MARK at 107) + 109: s SETITEM + 110: b BUILD + 111: a APPEND + 112: g GET 5 + 115: a APPEND + 116: . STOP +highest protocol among opcodes = 0 +Trying: dis(pickle.dumps(x, 1)) +Expecting: + 0: ] EMPTY_LIST + 1: q BINPUT 0 + 3: ( MARK + 4: ( MARK + 5: c GLOBAL 'pickle PicklingError' + 27: q BINPUT 1 + 29: o OBJ (MARK at 4) + 30: q BINPUT 2 + 32: } EMPTY_DICT + 33: q BINPUT 3 + 35: U SHORT_BINSTRING 'args' + 41: q BINPUT 4 + 43: ) EMPTY_TUPLE + 44: s SETITEM + 45: b BUILD + 46: h BINGET 2 + 48: e APPENDS (MARK at 3) + 49: . STOP +highest protocol among opcodes = 1 +***************************************************************** +Failure in example: dis(pickle.dumps(x, 1)) +from line #87 of pickletools.__test__.disassembler_test +Expected: + 0: ] EMPTY_LIST + 1: q BINPUT 0 + 3: ( MARK + 4: ( MARK + 5: c GLOBAL 'pickle PicklingError' + 27: q BINPUT 1 + 29: o OBJ (MARK at 4) + 30: q BINPUT 2 + 32: } EMPTY_DICT + 33: q BINPUT 3 + 35: U SHORT_BINSTRING 'args' + 41: q BINPUT 4 + 43: ) EMPTY_TUPLE + 44: s SETITEM + 45: b BUILD + 46: h BINGET 2 + 48: e APPENDS (MARK at 3) + 49: . STOP +highest protocol among opcodes = 1 +Got: + 0: ] EMPTY_LIST + 1: q BINPUT 0 + 3: ( MARK + 4: c GLOBAL 'copy_reg _reconstructor' + 29: q BINPUT 1 + 31: ( MARK + 32: c GLOBAL 'pickle PicklingError' + 54: q BINPUT 2 + 56: c GLOBAL '__builtin__ object' + 76: q BINPUT 3 + 78: N NONE + 79: t TUPLE (MARK at 31) + 80: q BINPUT 4 + 82: R REDUCE + 83: q BINPUT 5 + 85: } EMPTY_DICT + 86: q BINPUT 6 + 88: U SHORT_BINSTRING 'args' + 94: q BINPUT 7 + 96: ) EMPTY_TUPLE + 97: s SETITEM + 98: b BUILD + 99: h BINGET 5 + 101: e APPENDS (MARK at 3) + 102: . STOP +highest protocol among opcodes = 1 +Trying: L = [] +Expecting: nothing +ok +Trying: T = L, +Expecting: nothing +ok +Trying: L.append(T) +Expecting: nothing +ok +Trying: L[0] is T +Expecting: True +ok +Trying: T[0] is L +Expecting: True +ok +Trying: L[0][0] is L +Expecting: True +ok +Trying: T[0][0] is T +Expecting: True +ok +Trying: dis(pickle.dumps(L, 0)) +Expecting: + 0: ( MARK + 1: l LIST (MARK at 0) + 2: p PUT 0 + 5: ( MARK + 6: g GET 0 + 9: t TUPLE (MARK at 5) + 10: p PUT 1 + 13: a APPEND + 14: . STOP +highest protocol among opcodes = 0 +ok +Trying: dis(pickle.dumps(L, 1)) +Expecting: + 0: ] EMPTY_LIST + 1: q BINPUT Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pickletools.py", line 3 in ? +test_support.run_doctest(pickletools) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest + raise TestFailed("%d of %d doctests failed" % (f, t)) +TestFailed: 5 of 94 doctests failed + 0 + 3: ( MARK + 4: h BINGET 0 + 6: t TUPLE (MARK at 3) + 7: q BINPUT 1 + 9: a APPEND + 10: . STOP +highest protocol among opcodes = 1 +ok +Trying: dis(pickle.dumps(T, 0)) +Expecting: + 0: ( MARK + 1: ( MARK + 2: l LIST (MARK at 1) + 3: p PUT 0 + 6: ( MARK + 7: g GET 0 + 10: t TUPLE (MARK at 6) + 11: p PUT 1 + 14: a APPEND + 15: 0 POP + 16: 0 POP (MARK at 0) + 17: g GET 1 + 20: . STOP +highest protocol among opcodes = 0 +ok +Trying: dis(pickle.dumps(T, 1)) +Expecting: + 0: ( MARK + 1: ] EMPTY_LIST + 2: q BINPUT 0 + 4: ( MARK + 5: h BINGET 0 + 7: t TUPLE (MARK at 4) + 8: q BINPUT 1 + 10: a APPEND + 11: 1 POP_MARK (MARK at 0) + 12: h BINGET 1 + 14: . STOP +highest protocol among opcodes = 1 +ok +Trying: dis(pickle.dumps(L, 2)) +Expecting: + 0: \x80 PROTO 2 + 2: ] EMPTY_LIST + 3: q BINPUT 0 + 5: h BINGET 0 + 7: \x85 TUPLE1 + 8: q BINPUT 1 + 10: a APPEND + 11: . STOP +highest protocol among opcodes = 2 +ok +Trying: dis(pickle.dumps(T, 2)) +Expecting: + 0: \x80 PROTO 2 + 2: ] EMPTY_LIST + 3: q BINPUT 0 + 5: h BINGET 0 + 7: \x85 TUPLE1 + 8: q BINPUT 1 + 10: a APPEND + 11: 0 POP + 12: h BINGET 1 + 14: . STOP +highest protocol among opcodes = 2 +ok +3 of 24 examples failed in string pickletools.__test__.disassembler_test +12 items had no tests: + pickletools + pickletools.ArgumentDescriptor + pickletools.ArgumentDescriptor.__init__ + pickletools.OpcodeInfo + pickletools.OpcodeInfo.__init__ + pickletools.StackObject + pickletools.StackObject.__init__ + pickletools.StackObject.__repr__ + pickletools._test + pickletools.dis + pickletools.genops + pickletools.read_stringnl_noescape +15 items passed all tests: + 11 tests in pickletools.__test__.disassembler_memo_test + 4 tests in pickletools.read_decimalnl_long + 3 tests in pickletools.read_decimalnl_short + 2 tests in pickletools.read_floatnl + 3 tests in pickletools.read_int4 + 6 tests in pickletools.read_long1 + 6 tests in pickletools.read_long4 + 3 tests in pickletools.read_string1 + 4 tests in pickletools.read_string4 + 7 tests in pickletools.read_stringnl + 2 tests in pickletools.read_stringnl_noescape_pair + 2 tests in pickletools.read_uint1 + 3 tests in pickletools.read_uint2 + 8 tests in pickletools.read_unicodestring4 + 2 tests in pickletools.read_unicodestringnl +***************************************************************** +2 items had failures: + 3 of 24 in pickletools.__test__.disassembler_test + 2 of 4 in pickletools.read_float8 +94 tests in 29 items. +89 passed and 5 failed. +***Test Failed*** 5 failures. +========================== closed ========================== +execution time: 705.901865959 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_pkg.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pkg.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,121 @@ +test_pkg +running test t1 +mkdir /tmp/tmpDnJyrz/t1 +write /tmp/tmpDnJyrz/t1/__init__.py +sys.path = ['/tmp/tmpDnJyrz', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +rmdir /tmp/tmpDnJyrz/t1 +rmdir /tmp/tmpDnJyrz +running test t2 +mkdir /tmp/tmpfJHwsP/t2 +write /tmp/tmpfJHwsP/t2/__init__.py +mkdir /tmp/tmpfJHwsP/t2/sub +write /tmp/tmpfJHwsP/t2/sub/__init__.py +mkdir /tmp/tmpfJHwsP/t2/sub/subsub +write /tmp/tmpfJHwsP/t2/sub/subsub/__init__.py +sys.path = ['/tmp/tmpfJHwsP', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +t2 loading +doc for t2 +t2.sub.subsub loading +t2 t2.sub t2.sub.subsub +['sub', 't2'] +t2.sub t2.sub.subsub +t2.sub.subsub +['spam', 'sub', 'subsub', 't2'] +t2 t2.sub t2.sub.subsub +['spam', 'sub', 'subsub', 't2'] +rmdir /tmp/tmpfJHwsP/t2/sub/subsub +rmdir /tmp/tmpfJHwsP/t2/sub +rmdir /tmp/tmpfJHwsP/t2 +rmdir /tmp/tmpfJHwsP +running test t3 +mkdir /tmp/tmpmQuS2a/t3 +write /tmp/tmpmQuS2a/t3/__init__.py +mkdir /tmp/tmpmQuS2a/t3/sub +write /tmp/tmpmQuS2a/t3/sub/__init__.py +mkdir /tmp/tmpmQuS2a/t3/sub/subsub +write /tmp/tmpmQuS2a/t3/sub/subsub/__init__.py +sys.path = ['/tmp/tmpmQuS2a', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +t3 loading +t3.sub.subsub loading +t3 t3.sub t3.sub.subsub +t3 loading +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkg.py", line 66, in runtest + execfile(fname, globals(), {}) + File "/tmp/tmpfIwI2Q", line 5, in ? + reload(t3.sub) +AttributeError: 'module' object has no attribute 'sub' +rmdir /tmp/tmpmQuS2a/t3/sub/subsub +rmdir /tmp/tmpmQuS2a/t3/sub +rmdir /tmp/tmpmQuS2a/t3 +rmdir /tmp/tmpmQuS2a +running test t4 +write /tmp/tmp3Xr2kH/t4.py +mkdir /tmp/tmp3Xr2kH/t4 +write /tmp/tmp3Xr2kH/t4/__init__.py +write /tmp/tmp3Xr2kH/t4/sub.py +mkdir /tmp/tmp3Xr2kH/t4/sub +write /tmp/tmp3Xr2kH/t4/sub/__init__.py +write /tmp/tmp3Xr2kH/t4/sub/subsub.py +mkdir /tmp/tmp3Xr2kH/t4/sub/subsub +write /tmp/tmp3Xr2kH/t4/sub/subsub/__init__.py +sys.path = ['/tmp/tmp3Xr2kH', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +t4 loading +t4.sub.subsub loading +t4.sub.subsub.spam = 1 +rmdir /tmp/tmp3Xr2kH/t4/sub/subsub +rmdir /tmp/tmp3Xr2kH/t4/sub +rmdir /tmp/tmp3Xr2kH/t4 +rmdir /tmp/tmp3Xr2kH +running test t5 +mkdir /tmp/tmpYd-t_I/t5 +write /tmp/tmpYd-t_I/t5/__init__.py +write /tmp/tmpYd-t_I/t5/string.py +write /tmp/tmpYd-t_I/t5/foo.py +sys.path = ['/tmp/tmpYd-t_I', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +t5.foo loading +t5.string loading +1 +['foo', 'string', 't5'] +['__file__', '__name__', '__path__', 'foo', 'string', 't5'] +['__file__', '__name__', 'string'] +['__file__', '__name__', 'spam'] +rmdir /tmp/tmpYd-t_I/t5 +rmdir /tmp/tmpYd-t_I +running test t6 +mkdir /tmp/tmp3AU8j0/t6 +write /tmp/tmp3AU8j0/t6/__init__.py +write /tmp/tmp3AU8j0/t6/spam.py +write /tmp/tmp3AU8j0/t6/ham.py +write /tmp/tmp3AU8j0/t6/eggs.py +sys.path = ['/tmp/tmp3AU8j0', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +['__all__', '__file__', '__name__', '__path__'] +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkg.py", line 66, in runtest + execfile(fname, globals(), {}) + File "/tmp/tmpaiL3Dr", line 4, in ? + from t6 import * +AttributeError: 'module' object has no attribute 'spam' +rmdir /tmp/tmp3AU8j0/t6 +rmdir /tmp/tmp3AU8j0 +running test t7 +write /tmp/tmpGteEWu/t7.py +mkdir /tmp/tmpGteEWu/t7 +write /tmp/tmpGteEWu/t7/__init__.py +write /tmp/tmpGteEWu/t7/sub.py +mkdir /tmp/tmpGteEWu/t7/sub +write /tmp/tmpGteEWu/t7/sub/__init__.py +write /tmp/tmpGteEWu/t7/sub/subsub.py +mkdir /tmp/tmpGteEWu/t7/sub/subsub +write /tmp/tmpGteEWu/t7/sub/subsub/__init__.py +sys.path = ['/tmp/tmpGteEWu', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +t7 loading +['__file__', '__name__', '__path__'] +['__file__', '__name__', '__path__'] +t7.sub.subsub loading +['__file__', '__name__', '__path__', 'spam'] +t7.sub.subsub.spam = 1 +rmdir /tmp/tmpGteEWu/t7/sub/subsub +rmdir /tmp/tmpGteEWu/t7/sub +rmdir /tmp/tmpGteEWu/t7 +rmdir /tmp/tmpGteEWu Added: pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,17 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pkg.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:27:08 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_pkg.out +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 29.933478117 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,47 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:26:54 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py", line 83 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py", line 79 in test_main + run_unittest(TestImport) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics + self.assert_(not sys.modules.has_key(self.module_name) and + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError + +test_package_import__semantics (__main__.TestImport) ... FAIL + +====================================================================== +FAIL: test_package_import__semantics (__main__.TestImport) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics + self.assert_(not sys.modules.has_key(self.module_name) and + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError + +---------------------------------------------------------------------- +Ran 1 test in 3.945s + +FAILED (failures=1) +========================== closed ========================== +execution time: 13.7688610554 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_plistlib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:26:48 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_plistlib.py", line 4 in ? +import plistlib +ImportError: plistlib +========================== closed ========================== +execution time: 5.56025099754 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_poll.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_poll.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,2 @@ +test_poll +Running poll test 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_poll.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_poll.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_poll.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:26:41 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_poll.out +============================================================ +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_poll.py", line 171 in ? +test_poll1() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_poll.py", line 37 in test_poll1 + p.register(rd, select.POLLIN) +AttributeError: 'poll' object has no attribute 'register' +========================== closed ========================== +execution time: 6.85833787918 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_popen.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_popen.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,3 @@ +test_popen +Test popen: +popen seemed to process the command-line correctly Added: pypy/dist/lib-python-2.3.4/test/result/test_popen.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_popen.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,26 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_popen.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:26:31 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_popen.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 9.3032078743 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_popen2.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_popen2.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,9 @@ +test_popen2 +Test popen2 module: +testing popen2... +testing popen3... +All OK +Testing os module: +testing popen2... +testing popen3... +All OK Added: pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,17 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_popen2.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:25:28 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_popen2.out +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 63.0229299068 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_posix.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_posix.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,44 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_posix.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:25:01 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +/home/arigo/pypysrc/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program + result = apply(fn, self.unwrappedargs, self.unwrappedkwds) +/home/arigo/pypysrc/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program + result = apply(fn, self.unwrappedargs, self.unwrappedkwds) +testNoArgFunctions (__main__.PosixTester) ... ok +test_access (__main__.PosixTester) ... ok +test_chdir (__main__.PosixTester) ... ok +test_dup (__main__.PosixTester) ... ok +test_dup2 (__main__.PosixTester) ... ok +test_fdopen (__main__.PosixTester) ... ok +test_fstat (__main__.PosixTester) ... ok +test_fstatvfs (__main__.PosixTester) ... ok +test_ftruncate (__main__.PosixTester) ... ok +test_lsdir (__main__.PosixTester) ... ok +test_pipe (__main__.PosixTester) ... ok +test_stat (__main__.PosixTester) ... ok +test_statvfs (__main__.PosixTester) ... ok +test_strerror (__main__.PosixTester) ... ok +test_tempnam (__main__.PosixTester) ... ok +test_tmpfile (__main__.PosixTester) ... ok +test_umask (__main__.PosixTester) ... ok +test_utime (__main__.PosixTester) ... ok + +---------------------------------------------------------------------- +Ran 18 tests in 6.299s + +OK +========================== closed ========================== +execution time: 27.0125200748 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,46 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_posixpath.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:24:29 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_abspath (__main__.PosixPathTest) ... ok +test_basename (__main__.PosixPathTest) ... ok +test_commonprefix (__main__.PosixPathTest) ... ok +test_dirname (__main__.PosixPathTest) ... ok +test_exists (__main__.PosixPathTest) ... ok +test_expanduser (__main__.PosixPathTest) ... ok +test_expandvars (__main__.PosixPathTest) ... ok +test_getsize (__main__.PosixPathTest) ... ok +test_isabs (__main__.PosixPathTest) ... ok +test_isdir (__main__.PosixPathTest) ... ok +test_isfile (__main__.PosixPathTest) ... ok +test_islink (__main__.PosixPathTest) ... ok +test_ismount (__main__.PosixPathTest) ... ok +test_join (__main__.PosixPathTest) ... ok +test_normcase (__main__.PosixPathTest) ... ok +test_normpath (__main__.PosixPathTest) ... ok +test_realpath (__main__.PosixPathTest) ... ok +test_samestat (__main__.PosixPathTest) ... ok +test_split (__main__.PosixPathTest) ... ok +test_splitdrive (__main__.PosixPathTest) ... ok +test_splitext (__main__.PosixPathTest) ... ok +test_time (__main__.PosixPathTest) ... ok + +---------------------------------------------------------------------- +Ran 22 tests in 23.981s + +OK +========================== closed ========================== +execution time: 32.4078001976 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_pow.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pow.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,26 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pow.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:13:57 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_bug643260 (__main__.PowTest) ... ok +test_bug705231 (__main__.PowTest) ... ok +test_other (__main__.PowTest) ... ok +test_powfloat (__main__.PowTest) ... ok +test_powint (__main__.PowTest) ... ok +test_powlong (__main__.PowTest) ... ok + +---------------------------------------------------------------------- +Ran 6 tests in 623.767s + +OK +========================== closed ========================== +execution time: 631.730129004 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,26 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pprint.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:11:40 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_basic (__main__.QueryTestCase) ... ok +test_basic_line_wrap (__main__.QueryTestCase) ... ok +test_knotted (__main__.QueryTestCase) ... ok +test_same_as_repr (__main__.QueryTestCase) ... ok +test_subclassing (__main__.QueryTestCase) ... ok +test_unreadable (__main__.QueryTestCase) ... ok + +---------------------------------------------------------------------- +Ran 6 tests in 129.195s + +OK +========================== closed ========================== +execution time: 137.579236984 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_profile.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_profile.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,17 @@ +test_profile + 53 function calls in 1.000 CPU seconds + + Ordered by: standard name + + ncalls tottime percall cumtime percall filename:lineno(function) + 1 0.000 0.000 1.000 1.000 :1(?) + 0 0.000 0.000 profile:0(profiler) + 1 0.000 0.000 1.000 1.000 profile:0(testfunc()) + 1 0.399 0.399 1.000 1.000 test_profile.py:21(testfunc) + 2 0.080 0.040 0.600 0.300 test_profile.py:30(helper) + 4 0.116 0.029 0.120 0.030 test_profile.py:48(helper1) + 8 0.312 0.039 0.399 0.049 test_profile.py:56(helper2) + 8 0.063 0.007 0.079 0.009 test_profile.py:66(subhelper) + 28 0.027 0.000 0.027 0.000 test_profile.py:78(__getattr__) + + Added: pypy/dist/lib-python-2.3.4/test/result/test_profile.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_profile.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_profile.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:10:44 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_profile.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 55.2037661076 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,37 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_profilehooks.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:10:14 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_caught_exception (__main__.ProfileHookTestCase) ... ok +test_caught_nested_exception (__main__.ProfileHookTestCase) ... ok +test_distant_exception (__main__.ProfileHookTestCase) ... ok +test_exception (__main__.ProfileHookTestCase) ... ok +test_exception_in_except_clause (__main__.ProfileHookTestCase) ... ok +test_exception_propogation (__main__.ProfileHookTestCase) ... ok +test_generator (__main__.ProfileHookTestCase) ... ok +test_nested_exception (__main__.ProfileHookTestCase) ... ok +test_raise (__main__.ProfileHookTestCase) ... ok +test_raise_reraise (__main__.ProfileHookTestCase) ... ok +test_raise_twice (__main__.ProfileHookTestCase) ... ok +test_simple (__main__.ProfileHookTestCase) ... ok +test_stop_iteration (__main__.ProfileHookTestCase) ... ok +test_basic_exception (__main__.ProfileSimulatorTestCase) ... ok +test_caught_exception (__main__.ProfileSimulatorTestCase) ... ok +test_distant_exception (__main__.ProfileSimulatorTestCase) ... ok +test_simple (__main__.ProfileSimulatorTestCase) ... ok + +---------------------------------------------------------------------- +Ran 17 tests in 19.202s + +OK +========================== closed ========================== +execution time: 30.7184958458 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_pty.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pty.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_pty Added: pypy/dist/lib-python-2.3.4/test/result/test_pty.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pty.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pty.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:10:09 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_pty.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pty.py", line 1 in ? +import pty, os, sys, signal + File "/home/arigo/pypysrc/lib-python-2.3.4/pty.py", line 19 in ? +import termios +ImportError: termios +========================== closed ========================== +execution time: 4.52974700928 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pwd.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 22:10:02 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pwd.py", line 4 in ? +import pwd +ImportError: pwd +========================== closed ========================== +execution time: 5.76415896416 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,62 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:40:01 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 162 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 158 in test_main + run_unittest(PyclbrTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 140, in test_others + cm('random', ignore=('Random',)) # from _random import Random as CoreGenerator + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 80, in checkModule + self.assertHasattr(module, name, ignore) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 37, in assertHasattr + 'expected hasattr(%r, %r)' % (obj, attr)) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError: expected hasattr(, '_verify') + +test_easy (__main__.PyclbrTest) ... ok +test_others (__main__.PyclbrTest) ... ??? _verify +FAIL + +====================================================================== +FAIL: test_others (__main__.PyclbrTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 140, in test_others + cm('random', ignore=('Random',)) # from _random import Random as CoreGenerator + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 80, in checkModule + self.assertHasattr(module, name, ignore) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 37, in assertHasattr + 'expected hasattr(%r, %r)' % (obj, attr)) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError: expected hasattr(, '_verify') + +---------------------------------------------------------------------- +Ran 2 tests in 1434.815s + +FAILED (failures=1) +========================== closed ========================== +execution time: 1800.88183284 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_pyexpat Added: pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,18 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pyexpat.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:40:00 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_pyexpat.out +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyexpat.py", line 6 in ? +import pyexpat +ImportError: pyexpat +========================== closed ========================== +execution time: 0.899868965149 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_queue.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_queue.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_queue.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:39:58 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_queue.py", line 5 in ? +import threading + File "/home/arigo/pypysrc/lib-python-2.3.4/threading.py", line 6 in ? + import thread +ImportError: thread +========================== closed ========================== +execution time: 1.1630051136 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,28 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_quopri.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:39:25 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_decode (__main__.QuopriTestCase) ... ok +test_decode_header (__main__.QuopriTestCase) ... ok +test_decodestring (__main__.QuopriTestCase) ... ok +test_embedded_ws (__main__.QuopriTestCase) ... ok +test_encode (__main__.QuopriTestCase) ... ok +test_encode_header (__main__.QuopriTestCase) ... ok +test_encodestring (__main__.QuopriTestCase) ... ok +test_idempotent_string (__main__.QuopriTestCase) ... ok + +---------------------------------------------------------------------- +Ran 8 tests in 24.326s + +OK +========================== closed ========================== +execution time: 32.6021831036 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_random.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_random.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,25 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_random.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:39:06 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_random.py", line 124 in ? +class WichmannHill_TestBasicOps(TestBasicOps): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_random.py", line 125 in WichmannHill_TestBasicOps + gen = random.WichmannHill() +AttributeError: 'module' object has no attribute 'WichmannHill' +========================== closed ========================== +execution time: 18.3785350323 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_re.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_re.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,88 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_re.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:24:06 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_re.py", line 629 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_re.py", line 625 in test_main + run_unittest(ReTests) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_re.py", line 195 in test_re_groupref + self.assertEqual(re.match(r'^(?:(a)|c)(\1)$', 'aa').groups(), + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 132 in match + return _compile(pattern, flags).match(string) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile + p = sre_compile.compile(pattern, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 471 in compile + code = _code(p, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 455 in _code + _compile(code, p.data, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 88 in _compile + _compile(code, av[1], flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 27 in _compile + for op, av in pattern: +KeyboardInterrupt +test_anyall (__main__.ReTests) ... ok +test_basic_re_sub (__main__.ReTests) ... ERROR +test_bigcharset (__main__.ReTests) ... ok +test_bug_113254 (__main__.ReTests) ... ok +test_bug_114660 (__main__.ReTests) ... ok +test_bug_117612 (__main__.ReTests) ... ok +test_bug_418626 (__main__.ReTests) ... ok +test_bug_448951 (__main__.ReTests) ... ok +test_bug_449000 (__main__.ReTests) ... ok +test_bug_449964 (__main__.ReTests) ... ok +test_bug_462270 (__main__.ReTests) ... ok +test_bug_527371 (__main__.ReTests) ... ERROR +test_bug_545855 (__main__.ReTests) ... ok +test_bug_612074 (__main__.ReTests) ... ok +test_bug_725106 (__main__.ReTests) ... ok +test_bug_725149 (__main__.ReTests) ... ok +test_bug_764548 (__main__.ReTests) ... ok +test_bug_926075 (__main__.ReTests) ... ok +test_category (__main__.ReTests) ... ok +test_constants (__main__.ReTests) ... ok +test_expand (__main__.ReTests) ... ok +test_finditer (__main__.ReTests) ... ok +test_flags (__main__.ReTests) ... ok +test_getattr (__main__.ReTests) ... ERROR +test_getlower (__main__.ReTests) ... ok +test_groupdict (__main__.ReTests) ... ok +test_ignore_case (__main__.ReTests) ... ERROR +test_non_consuming (__main__.ReTests) ... ERROR +test_not_literal (__main__.ReTests) ... ok +test_pickling (__main__.ReTests) ... ERROR +test_qualified_re_split (__main__.ReTests) ... ok +test_qualified_re_sub (__main__.ReTests) ... ok +test_re_escape (__main__.ReTests) ... ok +test_re_findall (__main__.ReTests) ... ok +test_re_groupref (__main__.ReTests) ... ========================== closed ========================== +execution time: 900.177868843 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_regex.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_regex.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_regex Added: pypy/dist/lib-python-2.3.4/test/result/test_regex.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_regex.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_regex.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:23:47 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_regex.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_regex.py", line 5 in ? +import regex +ImportError: regex +========================== closed ========================== +execution time: 18.6518280506 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_repr.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_repr.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,93 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:22:45 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 289 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 283 in test_main + run_unittest(ReprTests) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred in __main__.ReprTests +test_buffer (__main__.ReprTests) ... FAIL +test_builtin_function (__main__.ReprTests) ... FAIL +test_cell (__main__.ReprTests) ... ok +test_container (__main__.ReprTests) ... ok +test_descriptors (__main__.ReprTests) ... FAIL +test_file (__main__.ReprTests) ... ok +test_instance (__main__.ReprTests) ... ok +test_lambda (__main__.ReprTests) ... FAIL +test_nesting (__main__.ReprTests) ... ok +test_numbers (__main__.ReprTests) ... ok +test_string (__main__.ReprTests) ... ok +test_xrange (__main__.ReprTests) ... FAIL + +====================================================================== +FAIL: test_buffer (__main__.ReprTests) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 150, in test_buffer + self.failUnless(repr(x).startswith('') + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + raise self.failureException, \ +AssertionError: '' != '' + +====================================================================== +FAIL: test_descriptors (__main__.ReprTests) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 159, in test_descriptors + eq(repr(dict.items), "") + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + raise self.failureException, \ +AssertionError: '' != "" + +====================================================================== +FAIL: test_lambda (__main__.ReprTests) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 110, in test_lambda + self.failUnless(repr(lambda x: x).startswith( + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError + +====================================================================== +FAIL: test_xrange (__main__.ReprTests) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 125, in test_xrange + eq(repr(xrange(1)), 'xrange(1)') + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + raise self.failureException, \ +AssertionError: '' != 'xrange(1)' + +---------------------------------------------------------------------- +Ran 12 tests in 45.660s + +FAILED (failures=5) +========================== closed ========================== +execution time: 61.323084116 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_resource.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_resource.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_resource Added: pypy/dist/lib-python-2.3.4/test/result/test_resource.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_resource.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_resource.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:22:34 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_resource.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_resource.py", line 2 in ? +import resource +ImportError: resource +========================== closed ========================== +execution time: 9.81122207642 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,32 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_rfc822.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:14:33 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_2getaddrlist (__main__.MessageTestCase) ... ok +test_addr_ipquad (__main__.MessageTestCase) ... ok +test_basic (__main__.MessageTestCase) ... ok +test_bogus_to_header (__main__.MessageTestCase) ... ok +test_commas_in_full_name (__main__.MessageTestCase) ... ok +test_get (__main__.MessageTestCase) ... ok +test_parseaddr (__main__.MessageTestCase) ... ok +test_quote_unquote (__main__.MessageTestCase) ... ok +test_quoted_name (__main__.MessageTestCase) ... ok +test_rfc2822_phrases (__main__.MessageTestCase) ... ok +test_setdefault (__main__.MessageTestCase) ... ok +test_twisted (__main__.MessageTestCase) ... ok + +---------------------------------------------------------------------- +Ran 12 tests in 462.430s + +OK +========================== closed ========================== +execution time: 481.675994158 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_rgbimg Added: pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,18 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_rgbimg.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:14:30 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_rgbimg.out +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_rgbimg.py", line 3 in ? +import rgbimg, os, uu +ImportError: rgbimg +========================== closed ========================== +execution time: 2.02930212021 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,245 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:07:43 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_mixed (__main__.VectorTest) ... ok +test_basic (__main__.NumberTest) ... ok +test_values (__main__.NumberTest) ... ok +test_misbehavin (__main__.MiscTest) ... ok +test_not (__main__.MiscTest) ... ok +test_recursion (__main__.MiscTest) ... ok +test_recursion2 (__main__.MiscTest) ... ERROR +test_dicts (__main__.DictTest) ... ok +test_badentry (__main__.ListTest) ... ERROR +test_coverage (__main__.ListTest) ... ok +test_goodentry (__main__.ListTest) ... ok + +====================================================================== +ERROR: test_recursion2 (__main__.MiscTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 273, in test_recursion2 + self.assert_(Weird() == Weird()) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 358 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 355 in test_main + test_support.run_unittest(VectorTest, NumberTest, MiscTest, DictTest, ListTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred; run in verbose mode for details +2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + return self == other +RuntimeError: maximum recursion depth exceeded + +====================================================================== +ERROR: test_badentry (__main__.ListTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 339, in test_badentry + self.assertRaises(Exc, op, x, y) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + callableObj(*args, **kwargs) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 91, in + "eq": (lambda a,b: a==b, operator.eq, operator.__eq__), +TypeError: unsupported operand types for issubtype (classobj, type) + +---------------------------------------------------------------------- +Ran 11 tests in 374.388s + +FAILED (errors=2) +========================== closed ========================== +execution time: 407.159274817 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,57 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_robotparser.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:05:28 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +RobotTest(1, good, /) ... ok +RobotTest(1, good, /test.html) ... ok +RobotTest(1, bad, /cyberworld/map/index.html) ... ok +RobotTest(1, bad, /tmp/xxx) ... ok +RobotTest(1, bad, /foo.html) ... ok +RobotTest(2, good, /) ... ok +RobotTest(2, good, /test.html) ... ok +RobotTest(2, good, ('cybermapper', '/cyberworld/map/index.html')) ... ok +RobotTest(2, bad, /cyberworld/map/index.html) ... ok +RobotTest(3, bad, /cyberworld/map/index.html) ... ok +RobotTest(3, bad, /) ... ok +RobotTest(3, bad, /tmp/) ... ok +RobotTest(4, bad, /tmp) ... ok +RobotTest(4, bad, /tmp.html) ... ok +RobotTest(4, bad, /tmp/a.html) ... ok +RobotTest(4, bad, /a%3cd.html) ... ok +RobotTest(4, bad, /a%3Cd.html) ... ok +RobotTest(4, bad, /a%2fb.html) ... ok +RobotTest(4, bad, /~joe/index.html) ... ok +RobotTest(5, bad, /tmp) ... ok +RobotTest(5, bad, /tmp.html) ... ok +RobotTest(5, bad, /tmp/a.html) ... ok +RobotTest(5, bad, /a%3cd.html) ... ok +RobotTest(5, bad, /a%3Cd.html) ... ok +RobotTest(5, bad, /a%2fb.html) ... ok +RobotTest(5, bad, /~joe/index.html) ... ok +RobotTest(6, good, /tmp) ... ok +RobotTest(6, bad, /tmp/) ... ok +RobotTest(6, bad, /tmp/a.html) ... ok +RobotTest(6, bad, /a%3cd.html) ... ok +RobotTest(6, bad, /a%3Cd.html) ... ok +RobotTest(6, bad, /a/b.html) ... ok +RobotTest(6, bad, /%7Ejoe/index.html) ... ok +RobotTest(7, good, /foo.html) ... ok + +---------------------------------------------------------------------- +Ran 34 tests in 49.482s + +OK +========================== closed ========================== +execution time: 134.892240047 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_rotor.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_rotor.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_rotor Added: pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_rotor.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:04:53 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_rotor.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_rotor.py", line 7 in ? +import rotor +ImportError: rotor +========================== closed ========================== +execution time: 34.4399428368 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_sax.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_sax.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sax.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:04:39 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sax.py", line 10 in ? + raise ImportError("no XML parsers available") +ImportError: no XML parsers available +========================== closed ========================== +execution time: 13.2440299988 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_scope.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_scope.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,17 @@ +test_scope +1. simple nesting +2. extra nesting +3. simple nesting + rebinding +4. nesting with global but no free +5. nesting through class +6. nesting plus free ref to global +7. nearest enclosing scope +8. mixed freevars and cellvars +9. free variable in method +10. recursion +11. unoptimized namespaces +12. lambdas +13. UnboundLocal +14. complex definitions +15. scope of global statements +16. check leaks Added: pypy/dist/lib-python-2.3.4/test/result/test_scope.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_scope.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,32 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_scope.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:03:48 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_scope.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +:2: SyntaxWarning: import * only allowed at module level +:1: SyntaxWarning: import * only allowed at module level +:1: SyntaxWarning: import * only allowed at module level +:2: SyntaxWarning: import * only allowed at module level +:2: SyntaxWarning: import * only allowed at module level +:6: SyntaxWarning: import * only allowed at module level +:11: SyntaxWarning: import * only allowed at module level +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_scope.py", line 410 in ? +verify(Foo.count == 0) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 180 in verify + raise TestFailed(reason) +TestFailed: test failed +========================== closed ========================== +execution time: 50.6068589687 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_scriptpackages.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:03:31 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_scriptpackages.py", line 8 in ? +import aetools +ImportError: aetools +========================== closed ========================== +execution time: 16.2804300785 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_select.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_select.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,38 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_select.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:03:14 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + frame.setfastscope(scope_w) + File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) +pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > +========================== closed ========================== +execution time: 16.6227560043 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_sets.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_sets.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,299 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sets.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:48:13 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_constructor (__main__.TestSetOfSets) ... ok +test_instanceWithException (__main__.TestExceptionPropagation) ... ok +test_instancesWithoutException (__main__.TestExceptionPropagation) ... ok +test_copy (__main__.TestBasicOpsEmpty) ... ok +test_empty_difference (__main__.TestBasicOpsEmpty) ... ok +test_empty_difference_rev (__main__.TestBasicOpsEmpty) ... ok +test_empty_intersection (__main__.TestBasicOpsEmpty) ... ok +test_empty_union (__main__.TestBasicOpsEmpty) ... ok +test_equivalent_equality (__main__.TestBasicOpsEmpty) ... ok +test_intersection_empty (__main__.TestBasicOpsEmpty) ... ok +test_iteration (__main__.TestBasicOpsEmpty) ... ok +test_length (__main__.TestBasicOpsEmpty) ... ok +test_pickling (__main__.TestBasicOpsEmpty) ... ok +test_repr (__main__.TestBasicOpsEmpty) ... ok +test_self_difference (__main__.TestBasicOpsEmpty) ... ok +test_self_equality (__main__.TestBasicOpsEmpty) ... ok +test_self_intersection (__main__.TestBasicOpsEmpty) ... ok +test_self_symmetric_difference (__main__.TestBasicOpsEmpty) ... ok +test_self_union (__main__.TestBasicOpsEmpty) ... ok +test_union_empty (__main__.TestBasicOpsEmpty) ... ok +test_copy (__main__.TestBasicOpsSingleton) ... ok +test_empty_difference (__main__.TestBasicOpsSingleton) ... ok +test_empty_difference_rev (__main__.TestBasicOpsSingleton) ... ok +test_empty_intersection (__main__.TestBasicOpsSingleton) ... ok +test_empty_union (__main__.TestBasicOpsSingleton) ... ok +test_equivalent_equality (__main__.TestBasicOpsSingleton) ... ok +test_in (__main__.TestBasicOpsSingleton) ... ok +test_intersection_empty (__main__.TestBasicOpsSingleton) ... ok +test_iteration (__main__.TestBasicOpsSingleton) ... ok +test_length (__main__.TestBasicOpsSingleton) ... ok +test_not_in (__main__.TestBasicOpsSingleton) ... ok +test_pickling (__main__.TestBasicOpsSingleton) ... ok +test_repr (__main__.TestBasicOpsSingleton) ... ok +test_self_difference (__main__.TestBasicOpsSingleton) ... ok +test_self_equality (__main__.TestBasicOpsSingleton) ... ok +test_self_intersection (__main__.TestBasicOpsSingleton) ... ok +test_self_symmetric_difference (__main__.TestBasicOpsSingleton) ... ok +test_self_union (__main__.TestBasicOpsSingleton) ... ok +test_union_empty (__main__.TestBasicOpsSingleton) ... ok +test_copy (__main__.TestBasicOpsTuple) ... ok +test_empty_difference (__main__.TestBasicOpsTuple) ... ok +test_empty_difference_rev (__main__.TestBasicOpsTuple) ... ok +test_empty_intersection (__main__.TestBasicOpsTuple) ... ok +test_empty_union (__main__.TestBasicOpsTuple) ... ok +test_equivalent_equality (__main__.TestBasicOpsTuple) ... ok +test_in (__main__.TestBasicOpsTuple) ... ok +test_intersection_empty (__main__.TestBasicOpsTuple) ... ok +test_iteration (__main__.TestBasicOpsTuple) ... ok +test_length (__main__.TestBasicOpsTuple) ... ok +test_not_in (__main__.TestBasicOpsTuple) ... ok +test_pickling (__main__.TestBasicOpsTuple) ... ok +test_repr (__main__.TestBasicOpsTuple) ... ok +test_self_difference (__main__.TestBasicOpsTuple) ... ok +test_self_equality (__main__.TestBasicOpsTuple) ... ok +test_self_intersection (__main__.TestBasicOpsTuple) ... ok +test_self_symmetric_difference (__main__.TestBasicOpsTuple) ... ok +test_self_union (__main__.TestBasicOpsTuple) ... ok +test_union_empty (__main__.TestBasicOpsTuple) ... ok +test_copy (__main__.TestBasicOpsTriple) ... ok +test_empty_difference (__main__.TestBasicOpsTriple) ... ok +test_empty_difference_rev (__main__.TestBasicOpsTriple) ... ok +test_empty_intersection (__main__.TestBasicOpsTriple) ... ok +test_empty_union (__main__.TestBasicOpsTriple) ... ok +test_equivalent_equality (__main__.TestBasicOpsTriple) ... ok +test_intersection_empty (__main__.TestBasicOpsTriple) ... ok +test_iteration (__main__.TestBasicOpsTriple) ... ok +test_length (__main__.TestBasicOpsTriple) ... ok +test_pickling (__main__.TestBasicOpsTriple) ... ok +test_repr (__main__.TestBasicOpsTriple) ... ok +test_self_difference (__main__.TestBasicOpsTriple) ... ok +test_self_equality (__main__.TestBasicOpsTriple) ... ok +test_self_intersection (__main__.TestBasicOpsTriple) ... ok +test_self_symmetric_difference (__main__.TestBasicOpsTriple) ... ok +test_self_union (__main__.TestBasicOpsTriple) ... ok +test_union_empty (__main__.TestBasicOpsTriple) ... ok +test_cmp (__main__.TestBinaryOps) ... ok +test_eq (__main__.TestBinaryOps) ... ok +test_intersection_non_overlap (__main__.TestBinaryOps) ... ok +test_intersection_overlap (__main__.TestBinaryOps) ... ok +test_intersection_subset (__main__.TestBinaryOps) ... ok +test_intersection_superset (__main__.TestBinaryOps) ... ok +test_sym_difference_non_overlap (__main__.TestBinaryOps) ... ok +test_sym_difference_overlap (__main__.TestBinaryOps) ... ok +test_sym_difference_subset (__main__.TestBinaryOps) ... ok +test_sym_difference_superset (__main__.TestBinaryOps) ... ok +test_union_non_overlap (__main__.TestBinaryOps) ... ok +test_union_overlap (__main__.TestBinaryOps) ... ok +test_union_subset (__main__.TestBinaryOps) ... ok +test_union_superset (__main__.TestBinaryOps) ... ok +test_difference_method_call (__main__.TestUpdateOps) ... ok +test_difference_non_overlap (__main__.TestUpdateOps) ... ok +test_difference_overlap (__main__.TestUpdateOps) ... ok +test_difference_subset (__main__.TestUpdateOps) ... ok +test_difference_superset (__main__.TestUpdateOps) ... ok +test_intersection_method_call (__main__.TestUpdateOps) ... ok +test_intersection_non_overlap (__main__.TestUpdateOps) ... ok +test_intersection_overlap (__main__.TestUpdateOps) ... ok +test_intersection_subset (__main__.TestUpdateOps) ... ok +test_intersection_superset (__main__.TestUpdateOps) ... ok +test_sym_difference_method_call (__main__.TestUpdateOps) ... ok +test_sym_difference_non_overlap (__main__.TestUpdateOps) ... ok +test_sym_difference_overlap (__main__.TestUpdateOps) ... ok +test_sym_difference_subset (__main__.TestUpdateOps) ... ok +test_sym_difference_superset (__main__.TestUpdateOps) ... ok +test_union_method_call (__main__.TestUpdateOps) ... ok +test_union_non_overlap (__main__.TestUpdateOps) ... ok +test_union_overlap (__main__.TestUpdateOps) ... ok +test_union_subset (__main__.TestUpdateOps) ... ok +test_union_superset (__main__.TestUpdateOps) ... ok +test_add_absent (__main__.TestMutate) ... ok +test_add_present (__main__.TestMutate) ... ok +test_add_until_full (__main__.TestMutate) ... ok +test_clear (__main__.TestMutate) ... ok +test_discard_absent (__main__.TestMutate) ... ok +test_discard_present (__main__.TestMutate) ... ok +test_pop (__main__.TestMutate) ... ok +test_remove_absent (__main__.TestMutate) ... ok +test_remove_present (__main__.TestMutate) ... ok +test_remove_until_empty (__main__.TestMutate) ... ok +test_update_empty_tuple (__main__.TestMutate) ... ok +test_update_unit_tuple_non_overlap (__main__.TestMutate) ... ok +test_update_unit_tuple_overlap (__main__.TestMutate) ... ok +test_issubset (__main__.TestSubsetEqualEmpty) ... ok +test_issubset (__main__.TestSubsetEqualNonEmpty) ... ok +test_issubset (__main__.TestSubsetEmptyNonEmpty) ... ok +test_issubset (__main__.TestSubsetPartial) ... ok +test_issubset (__main__.TestSubsetNonOverlap) ... ok +test_difference (__main__.TestOnlySetsNumeric) ... ok +test_difference_update (__main__.TestOnlySetsNumeric) ... ok +test_difference_update_operator (__main__.TestOnlySetsNumeric) ... ok +test_eq_ne (__main__.TestOnlySetsNumeric) ... ok +test_ge_gt_le_lt (__main__.TestOnlySetsNumeric) ... ok +test_intersection (__main__.TestOnlySetsNumeric) ... ok +test_intersection_update (__main__.TestOnlySetsNumeric) ... ok +test_intersection_update_operator (__main__.TestOnlySetsNumeric) ... ok +test_sym_difference (__main__.TestOnlySetsNumeric) ... ok +test_sym_difference_update (__main__.TestOnlySetsNumeric) ... ok +test_sym_difference_update_operator (__main__.TestOnlySetsNumeric) ... ok +test_union (__main__.TestOnlySetsNumeric) ... ok +test_union_update (__main__.TestOnlySetsNumeric) ... ok +test_union_update_operator (__main__.TestOnlySetsNumeric) ... ok +test_difference (__main__.TestOnlySetsDict) ... ok +test_difference_update (__main__.TestOnlySetsDict) ... ok +test_difference_update_operator (__main__.TestOnlySetsDict) ... ok +test_eq_ne (__main__.TestOnlySetsDict) ... ok +test_ge_gt_le_lt (__main__.TestOnlySetsDict) ... ok +test_intersection (__main__.TestOnlySetsDict) ... ok +test_intersection_update (__main__.TestOnlySetsDict) ... ok +test_intersection_update_operator (__main__.TestOnlySetsDict) ... ok +test_sym_difference (__main__.TestOnlySetsDict) ... ok +test_sym_difference_update (__main__.TestOnlySetsDict) ... ok +test_sym_difference_update_operator (__main__.TestOnlySetsDict) ... ok +test_union (__main__.TestOnlySetsDict) ... ok +test_union_update (__main__.TestOnlySetsDict) ... ok +test_union_update_operator (__main__.TestOnlySetsDict) ... ok +test_difference (__main__.TestOnlySetsOperator) ... ok +test_difference_update (__main__.TestOnlySetsOperator) ... ok +test_difference_update_operator (__main__.TestOnlySetsOperator) ... ok +test_eq_ne (__main__.TestOnlySetsOperator) ... ok +test_ge_gt_le_lt (__main__.TestOnlySetsOperator) ... ok +test_intersection (__main__.TestOnlySetsOperator) ... ok +test_intersection_update (__main__.TestOnlySetsOperator) ... ok +test_intersection_update_operator (__main__.TestOnlySetsOperator) ... ok +test_sym_difference (__main__.TestOnlySetsOperator) ... ok +test_sym_difference_update (__main__.TestOnlySetsOperator) ... ok +test_sym_difference_update_operator (__main__.TestOnlySetsOperator) ... ok +test_union (__main__.TestOnlySetsOperator) ... ok +test_union_update (__main__.TestOnlySetsOperator) ... ok +test_union_update_operator (__main__.TestOnlySetsOperator) ... ok +test_difference (__main__.TestOnlySetsTuple) ... ok +test_difference_update (__main__.TestOnlySetsTuple) ... ok +test_difference_update_operator (__main__.TestOnlySetsTuple) ... ok +test_eq_ne (__main__.TestOnlySetsTuple) ... ok +test_ge_gt_le_lt (__main__.TestOnlySetsTuple) ... ok +test_intersection (__main__.TestOnlySetsTuple) ... ok +test_intersection_update (__main__.TestOnlySetsTuple) ... ok +test_intersection_update_operator (__main__.TestOnlySetsTuple) ... ok +test_sym_difference (__main__.TestOnlySetsTuple) ... ok +test_sym_difference_update (__main__.TestOnlySetsTuple) ... ok +test_sym_difference_update_operator (__main__.TestOnlySetsTuple) ... ok +test_union (__main__.TestOnlySetsTuple) ... ok +test_union_update (__main__.TestOnlySetsTuple) ... ok +test_union_update_operator (__main__.TestOnlySetsTuple) ... ok +test_difference (__main__.TestOnlySetsString) ... ok +test_difference_update (__main__.TestOnlySetsString) ... ok +test_difference_update_operator (__main__.TestOnlySetsString) ... ok +test_eq_ne (__main__.TestOnlySetsString) ... ok +test_ge_gt_le_lt (__main__.TestOnlySetsString) ... ok +test_intersection (__main__.TestOnlySetsString) ... ok +test_intersection_update (__main__.TestOnlySetsString) ... ok +test_intersection_update_operator (__main__.TestOnlySetsString) ... ok +test_sym_difference (__main__.TestOnlySetsString) ... ok +test_sym_difference_update (__main__.TestOnlySetsString) ... ok +test_sym_difference_update_operator (__main__.TestOnlySetsString) ... ok +test_union (__main__.TestOnlySetsString) ... ok +test_union_update (__main__.TestOnlySetsString) ... ok +test_union_update_operator (__main__.TestOnlySetsString) ... ok +test_difference (__main__.TestOnlySetsGenerator) ... ok +test_difference_update (__main__.TestOnlySetsGenerator) ... ok +test_difference_update_operator (__main__.TestOnlySetsGenerator) ... ok +test_eq_ne (__main__.TestOnlySetsGenerator) ... ok +test_ge_gt_le_lt (__main__.TestOnlySetsGenerator) ... ok +test_intersection (__main__.TestOnlySetsGenerator) ... ok +test_intersection_update (__main__.TestOnlySetsGenerator) ... ok +test_intersection_update_operator (__main__.TestOnlySetsGenerator) ... ok +test_sym_difference (__main__.TestOnlySetsGenerator) ... ok +test_sym_difference_update (__main__.TestOnlySetsGenerator) ... ok +test_sym_difference_update_operator (__main__.TestOnlySetsGenerator) ... ok +test_union (__main__.TestOnlySetsGenerator) ... ok +test_union_update (__main__.TestOnlySetsGenerator) ... ok +test_union_update_operator (__main__.TestOnlySetsGenerator) ... ok +test_copy (__main__.TestCopyingEmpty) ... ok +test_deep_copy (__main__.TestCopyingEmpty) ... ok +test_copy (__main__.TestCopyingSingleton) ... ok +test_deep_copy (__main__.TestCopyingSingleto==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sets.py", line 814 in ? + test_main(verbose=True) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sets.py", line 811 in test_main + test_support.run_doctest(test_sets, verbose) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 276 in run_doctest + import doctest + File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 303 in ? +from inspect import isclass as _isclass + File "/home/arigo/pypysrc/lib-python-2.3.4/inspect.py", line 31 in ? +import sys, os, types, string, re, dis, imp, tokenize, linecache + File "/home/arigo/pypysrc/lib-python-2.3.4/tokenize.py", line 100 in ? +tokenprog, pseudoprog, single3prog, double3prog = map( + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 179 in compile + return _compile(pattern, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile + p = sre_compile.compile(pattern, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 467 in compile + p = sre_parse.parse(p, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 624 in parse + p = _parse_sub(source, pattern, 0) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse + p = _parse_sub(source, state) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse + p = _parse_sub(source, state) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse + p = _parse_sub(source, state) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse + p = _parse_sub(source, state) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse + p = _parse_sub(source, state) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 376 in _parse + this = source.get() + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 208 in get + self.__next() +KeyboardInterrupt +n) ... ok +test_copy (__main__.TestCopyingTriple) ... ok +test_deep_copy (__main__.TestCopyingTriple) ... ok +test_copy (__main__.TestCopyingTuple) ... ok +test_deep_copy (__main__.TestCopyingTuple) ... ok +test_copy (__main__.TestCopyingNested) ... ok +test_deep_copy (__main__.TestCopyingNested) ... ok +test_binopsVsSubsets (__main__.TestIdentities) ... ok +test_commutativity (__main__.TestIdentities) ... ok +test_exclusion (__main__.TestIdentities) ... ok +test_summations (__main__.TestIdentities) ... ok + +---------------------------------------------------------------------- +Ran 225 tests in 592.662s + +OK +========================== closed ========================== +execution time: 900.905787945 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,52 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:33:12 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 333 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 329 in test_main + test_support.run_unittest(SGMLParserTestCase) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 196 in test_attr_values + [("starttag", "a", [("b", "xxx\n\txxx"), + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 84 in check_events + events = self.get_events(source) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 75 in get_events + parser.feed(s) + File "/home/arigo/pypysrc/lib-python-2.3.4/sgmllib.py", line 95 in feed + self.goahead(0) + File "/home/arigo/pypysrc/lib-python-2.3.4/sgmllib.py", line 129 in goahead + k = self.parse_starttag(i) + File "/home/arigo/pypysrc/lib-python-2.3.4/sgmllib.py", line 230 in parse_starttag + self.__starttag_text = None +KeyboardInterrupt +test_attr_funky_names (__main__.SGMLParserTestCase) ... ok +test_attr_syntax (__main__.SGMLParserTestCase) ... ok +test_attr_values (__main__.SGMLParserTestCase) ... ========================== closed ========================== +execution time: 900.520838976 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_sha.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_sha.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,22 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/pypy/lib/test2/test_sha.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:31:46 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_case_1 (__main__.SHATestCase) ... ok +test_case_2 (__main__.SHATestCase) ... ok + +---------------------------------------------------------------------- +Ran 2 tests in 51.765s + +OK +========================== closed ========================== +execution time: 85.2664539814 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,55 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_shelve.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:16:45 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_shelve.py", line 135 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_shelve.py", line 131 in test_main + TestCase + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "test_userdict.py", line 62 in test_read + self.assertEqual(cmp(p,d), -1) + File "/home/arigo/pypysrc/lib-python-2.3.4/UserDict.py", line 161 in __cmp__ + other = dict(other.iteritems()) + File "/home/arigo/pypysrc/lib-python-2.3.4/UserDict.py", line 99 in iteritems + yield (k, self[k]) + File "/home/arigo/pypysrc/lib-python-2.3.4/shelve.py", line 118 in __getitem__ + f = StringIO(self.dict[key]) +KeyboardInterrupt +test_read (__main__.TestAsciiFileShelve) ... FAIL +test_write (__main__.TestAsciiFileShelve) ... ok +test_read (__main__.TestBinaryFileShelve) ... FAIL +test_write (__main__.TestBinaryFileShelve) ... ok +test_read (__main__.TestProto2FileShelve) ... FAIL +test_write (__main__.TestProto2FileShelve) ... ok +test_read (__main__.TestAsciiMemShelve) ... FAIL +test_write (__main__.TestAsciiMemShelve) ... ok +test_read (__main__.TestBinaryMemShelve) ... ========================== closed ========================== +execution time: 900.696385145 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,22 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_shlex.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:04:36 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Test compatibility interface ... ok +Test data splitting with posix parser ... ok + +---------------------------------------------------------------------- +Ran 2 tests in 717.148s + +OK +========================== closed ========================== +execution time: 728.962695122 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_shutil.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:04:20 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_rmtree_errors (__main__.TestShutil) ... ok + +---------------------------------------------------------------------- +Ran 1 test in 4.085s + +OK +========================== closed ========================== +execution time: 15.6597318649 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_signal.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_signal.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_signal Added: pypy/dist/lib-python-2.3.4/test/result/test_signal.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_signal.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_signal.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:04:12 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_signal.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_signal.py", line 3 in ? +import signal +ImportError: signal +========================== closed ========================== +execution time: 7.51752710342 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_slice.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_slice.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_slice.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:04:05 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 7.15286803246 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_socket.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_socket.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,22 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_socket.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:03:49 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_socket.py", line 9 in ? +import thread, threading +ImportError: thread +========================== closed ========================== +execution time: 15.3274669647 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_socket_ssl.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:03:36 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_socket_ssl.py", line 68 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_socket_ssl.py", line 63 in test_main + raise test_support.TestSkipped("socket module has no ssl support") +TestSkipped: socket module has no ssl support +========================== closed ========================== +execution time: 13.0907242298 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,24 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_socketserver.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:03:16 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_socketserver.py", line 11 in ? +import threading + File "/home/arigo/pypysrc/lib-python-2.3.4/threading.py", line 6 in ? + import thread +ImportError: thread +========================== closed ========================== +execution time: 18.9364500046 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_softspace.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:02:53 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 23.0105788708 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_sort.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_sort.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,243 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sort.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:47:51 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Testing size 0 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 1 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 2 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 3 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 3 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 4 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 5 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 7 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + complaining at Complains(0) Complains(2) + checking exception during sort left some permutation + checking stability +Testing size 8 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 9 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 15 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 16 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 17 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane co==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sort.py", line 113 in ? + s = [Stable(random.randrange(10), i) for i in xrange(n)] +KeyboardInterrupt +mparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 31 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 32 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 33 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 63 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 64 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 65 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 127 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 128 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + complaining at Complains(97) Complains(94) + checking exception during sort left some permutation + checking stability +Testing size 129 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + checking stability +Testing size 255 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + complaining at Complains(21) Complains(15) + checking exception during sort left some permutation + checking stability +Testing size 256 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + complaining at Complains(137) Complains(149) + checking exception during sort left some permutation +========================== closed ========================== +execution time: 901.763422966 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_str.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_str.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,46 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_str.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:20:37 2005 +pypy-revision: 11535 +============================================================ +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_str.py", line 25 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_str.py", line 22 in test_main + test_support.run_unittest(StrTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/string_tests.py", line 586 in test_floatformatting + self.checkcall(format, "__mod__", value) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/string_tests.py", line 81 in checkcall + getattr(object, methodname)(*args) +KeyboardInterrupt +test___contains__ (__main__.StrTest) ... ok +test_capitalize (__main__.StrTest) ... ok +test_center (__main__.StrTest) ... ok +test_count (__main__.StrTest) ... ok +test_encoding_decoding (__main__.StrTest) ... ERROR +test_endswith (__main__.StrTest) ... ERROR +test_expandtabs (__main__.StrTest) ... ok +test_find (__main__.StrTest) ... ok +test_floatformatting (__main__.StrTest) ... ========================== closed ========================== +execution time: 901.193814039 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,57 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_strftime.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:32:43 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strftime.py", line 158 in ? +main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strftime.py", line 29 in main + strftest(now + (i + j*100)*23*3603) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strftime.py", line 125 in strftest + if re.match(escapestr(e[1], ampm), result): continue + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 132 in match + return _compile(pattern, flags).match(string) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile + p = sre_compile.compile(pattern, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 467 in compile + p = sre_parse.parse(p, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 617 in parse + source = Tokenizer(str) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 186 in __init__ + self.__next() + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 198 in __next + self.index = self.index + len(char) +KeyboardInterrupt +strftime test for Wed Apr 27 19:32:54 2005 +Strftime test, platform: linux2, Python version: 2.3.4 +Supports nonstandard '%c' format (near-asctime() format) +Supports nonstandard '%x' format (%m/%d/%y %H:%M:%S) +Supports nonstandard '%Z' format (time zone name) +Supports nonstandard '%D' format (mm/dd/yy) +Supports nonstandard '%e' format (day of month as number, blank padded ( 0-31)) +Supports nonstandard '%h' format (abbreviated month name) +Supports nonstandard '%k' format (hour, blank padded ( 0-23)) +Supports nonstandard '%n' format (newline character) +Supports nonstandard '%r' format (%I:%M:%S %p) +Supports nonstandard '%R' format (%H:%M) +Supports nonstandard '%s' format (seconds since the Epoch in UCT) +Supports nonstandard '%t' format (tab character) +Supports nonstandard '%T' format (%H:%M:%S) +Supports nonstandard '%3y' format (year without century rendered using fieldwidth) +========================== closed ========================== +execution time: 900.157372952 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_string.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_string.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,46 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_string.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:35:39 2005 +pypy-revision: 11535 +============================================================ +faking +faking +faking +faking +faking +test_capitalize (__main__.StringTest) ... ok +test_center (__main__.StringTest) ... ok +test_count (__main__.StringTest) ... ok +test_expandtabs (__main__.StringTest) ... ok +test_find (__main__.StringTest) ... ok +test_index (__main__.StringTest) ... ok +test_join (__main__.StringTest) ... ok +test_ljust (__main__.StringTest) ... ok +test_lower (__main__.StringTest) ... ok +test_maketrans (__main__.StringTest) ... ok +test_replace (__main__.StringTest) ... ok +test_rfind (__main__.StringTest) ... ok +test_rindex (__main__.StringTest) ... ok +test_rjust (__main__.StringTest) ... ok +test_split (__main__.StringTest) ... ok +test_strip (__main__.StringTest) ... ok +test_swapcase (__main__.StringTest) ... ok +test_translate (__main__.StringTest) ... ok +test_upper (__main__.StringTest) ... ok +test_zfill (__main__.StringTest) ... ok +test_atof (__main__.ModuleTest) ... ok +test_atoi (__main__.ModuleTest) ... ok +test_atol (__main__.ModuleTest) ... ok +test_attrs (__main__.ModuleTest) ... ok +test_capwords (__main__.ModuleTest) ... ok +test_maketrans (__main__.ModuleTest) ... ok + +---------------------------------------------------------------------- +Ran 26 tests in 85.198s + +OK +========================== closed ========================== +execution time: 130.104860067 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,15 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_stringprep.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:31:29 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 8.25511693954 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_strop.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_strop.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_strop.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:31:05 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strop.py", line 5 in ? +import strop +ImportError: strop +========================== closed ========================== +execution time: 23.3075590134 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,98 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_strptime.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:16:04 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strptime.py", line 506 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strptime.py", line 501 in test_main + CacheTests + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strptime.py", line 434 in test_gregorian_calculation + format_string) + File "/home/arigo/pypysrc/lib-python-2.3.4/_strptime.py", line 420 in strptime + format_regex = _locale_cache.compile(format) + File "/home/arigo/pypysrc/lib-python-2.3.4/_strptime.py", line 398 in compile + return re_compile(self.pattern(format), IGNORECASE) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 179 in compile + return _compile(pattern, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile + p = sre_compile.compile(pattern, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 467 in compile + p = sre_parse.parse(p, flags) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 624 in parse + p = _parse_sub(source, pattern, 0) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse + p = _parse_sub(source, state) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 374 in _parse + if source.next in ("|", ")"): +KeyboardInterrupt +test_basic (__main__.getlang_Tests) ... ok +test_am_pm (__main__.LocaleTime_Tests) ... ok +test_by_hand_input (__main__.LocaleTime_Tests) ... ok +test_date_time (__main__.LocaleTime_Tests) ... ok +test_lang (__main__.LocaleTime_Tests) ... ok +test_month (__main__.LocaleTime_Tests) ... ok +test_timezone (__main__.LocaleTime_Tests) ... ok +test_unknowntimezone (__main__.LocaleTime_Tests) ... ok +test_weekday (__main__.LocaleTime_Tests) ... ok +test_blankpattern (__main__.TimeRETests) ... ok +test_compile (__main__.TimeRETests) ... ERROR +test_getitem (__main__.TimeRETests) ... ok +test_matching_with_escapes (__main__.TimeRETests) ... ok +test_pattern (__main__.TimeRETests) ... ok +test_pattern_escaping (__main__.TimeRETests) ... ok +test_TypeError (__main__.StrptimeTests) ... ok +test_bad_timezone (__main__.StrptimeTests) ... ERROR +test_caseinsensitive (__main__.StrptimeTests) ... ok +test_date (__main__.StrptimeTests) ... ok +test_date_time (__main__.StrptimeTests) ... ok +test_day (__main__.StrptimeTests) ... ok +test_defaults (__main__.StrptimeTests) ... ok +test_escaping (__main__.StrptimeTests) ... ok +test_hour (__main__.StrptimeTests) ... ok +test_julian (__main__.StrptimeTests) ... ok +test_minute (__main__.StrptimeTests) ... ok +test_month (__main__.StrptimeTests) ... ok +test_percent (__main__.StrptimeTests) ... ok +test_second (__main__.StrptimeTests) ... ok +test_time (__main__.StrptimeTests) ... ok +test_timezone (__main__.StrptimeTests) ... ok +test_unconverteddata (__main__.StrptimeTests) ... ok +test_weekday (__main__.StrptimeTests) ... ok +test_year (__main__.StrptimeTests) ... ok +test_twelve_noon_midnight (__main__.Strptime12AMPMTests) ... ok +test_all_julian_days (__main__.JulianTests) ... ok +test_day_of_week_calculation (__main__.CalculationTests) ... ok +test_gregorian_calculation (__main__.CalculationTests) ... ========================== closed ========================== +execution time: 900.189292908 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_struct.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_struct.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,20 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_struct.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:15:55 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_struct.py", line 80 in ? + raise TestFailed, "unpack/pack not transitive (%s, %s)" % ( +TestFailed: unpack/pack not transitive (xcbhilfd, ('a', 1, 255, 65535, 65536, 3.1414999961853028, 4.0)) +trying: xcbhilfd +========================== closed ========================== +execution time: 9.13393902779 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,22 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_structseq.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:15:48 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_structseq.py", line 14 in ? + vereq(t[i:j], astuple[i:j]) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 194 in vereq + raise TestFailed, "%r == %r" % (a, b) +TestFailed: () == (2005,) +========================== closed ========================== +execution time: 6.03355097771 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sunaudiodev.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:15:42 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sunaudiodev.py", line 2 in ? +import sunaudiodev +ImportError: sunaudiodev +========================== closed ========================== +execution time: 5.77252697945 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,28 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sundry.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:08:40 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sundry.py", line 38 in ? +import encodings + File "/home/arigo/pypysrc/lib-python-2.3.4/encodings/__init__.py", line 137 in ? +codecs.register(search_function) +TypeError: argument must be callable +skipping curses +========================== closed ========================== +execution time: 420.881474018 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_support.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_support.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:08:39 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 4 in ? + raise ImportError, 'test_support must be imported from the test package' +ImportError: test_support must be imported from the test package +========================== closed ========================== +execution time: 0.873281955719 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_symtable.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:08:33 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_symtable.py", line 3 in ? +import _symtable +ImportError: _symtable +========================== closed ========================== +execution time: 5.7526819706 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,27 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_syntax.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:08:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_assign_call (__main__.SyntaxTestCase) ... ok +test_assign_del (__main__.SyntaxTestCase) ... ok +test_global_err_then_warn (__main__.SyntaxTestCase) ... ok + +---------------------------------------------------------------------- +Ran 3 tests in 14.529s + +OK +========================== closed ========================== +execution time: 24.5019910336 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_sys.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_sys.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,34 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sys.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:07:53 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_attributes (__main__.SysModuleTest) ... ok +test_custom_displayhook (__main__.SysModuleTest) ... ok +test_dlopenflags (__main__.SysModuleTest) ... ok +test_exc_clear (__main__.SysModuleTest) ... ok +test_exit (__main__.SysModuleTest) ... ok +test_getdefaultencoding (__main__.SysModuleTest) ... ok +test_getframe (__main__.SysModuleTest) ... ok +test_getwindowsversion (__main__.SysModuleTest) ... ok +test_lost_displayhook (__main__.SysModuleTest) ... ok +test_original_displayhook (__main__.SysModuleTest) ... ok +test_original_excepthook (__main__.SysModuleTest) ... ok +test_recursionlimit (__main__.SysModuleTest) ... ok +test_refcount (__main__.SysModuleTest) ... ok +test_setcheckinterval (__main__.SysModuleTest) ... ok + +---------------------------------------------------------------------- +Ran 14 tests in 7.300s + +OK +========================== closed ========================== +execution time: 15.5937919617 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,217 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:06:42 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Test member extraction. ... ERROR +Test readlines() method of _FileObject. ... ERROR +Test seek() method of _FileObject, incl. random reading. ... ERROR +Test sparse member extraction. ... ERROR +Test member extraction, and for StreamError when ... ERROR +Test readlines() method of _FileObject. ... ERROR +Test seek() method of _FileObject, incl. random reading. ... ERROR +Test sparse member extraction. ... ERROR +Compare the normal tar and the stream tar. ... ERROR +test_nonposix (__main__.WriteTest) ... ERROR +test_posix (__main__.WriteTest) ... ERROR +test_nonposix (__main__.WriteStreamTest) ... ERROR +test_posix (__main__.WriteStreamTest) ... ERROR + +====================================================================== +ERROR: Test member extraction. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + self.tar = tarfile.open(tarname(self.comp), mode) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 875, in open + return func(name, filemode, fileobj) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 912, in taropen + return cls(name, mode, fileobj) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + self.firstmember = self.next() + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: empty, unreadable or compressed file + +====================================================================== +ERROR: Test readlines() method of _FileObject. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + self.tar = tarfile.open(tarname(self.comp), mode) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 875, in open + return func(name, filemode, fileobj) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 912, in taropen + return cls(name, mode, fileobj) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + self.firstmember = self.next() + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: empty, unreadable or compressed file + +====================================================================== +ERROR: Test seek() method of _FileObject, incl. random reading. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + self.tar = tarfile.open(tarname(self.comp), mode) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 875, in open + return func(name, filemode, fileobj) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 912, in taropen + return cls(name, mode, fileobj) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + self.firstmember = self.next() + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: empty, unreadable or compressed file + +====================================================================== +ERROR: Test sparse member extraction. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + self.tar = tarfile.open(tarname(self.comp), mode) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 875, in open + return func(name, filemode, fileobj) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 912, in taropen + return cls(name, mode, fileobj) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + self.firstmember = self.next() + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: empty, unreadable or compressed file + +====================================================================== +ERROR: Test member extraction, and for StreamError when +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + self.tar = tarfile.open(tarname(self.comp), mode) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + _Stream(name, filemode, comptype, fileobj, bufsize)) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + self.firstmember = self.next() + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: empty, unreadable or compressed file + +====================================================================== +ERROR: Test readlines() method of _FileObject. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + self.tar = tarfile.open(tarname(self.comp), mode) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + _Stream(name, filemode, comptype, fileobj, bufsize)) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + self.firstmember = self.next() + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: empty, unreadable or compressed file + +====================================================================== +ERROR: Test seek() method of _FileObject, incl. random reading. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + self.tar = tarfile.open(tarname(self.comp), mode) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + _Stream(name, filemode, comptype, fileobj, bufsize)) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + self.firstmember = self.next() + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: empty, unreadable or compressed file + +====================================================================== +ERROR: Test sparse member extraction. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + self.tar = tarfile.open(tarname(self.comp), mode) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + _Stream(name, filemode, comptype, fileobj, bufsize)) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + self.firstmember = self.next() + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: empty, unreadable or compressed file + +====================================================================== +ERROR: Compare the normal tar and the stream tar. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + self.tar = tarfile.open(tarname(self.comp), mode) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + _Stream(name, filemode, comptype, fileobj, bufsize)) + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + self.firstmember = self.next() + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 275 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 263 in test_main + test_support.run_unittest(*tests) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred; run in verbose mode for details +empty, unreadable or compressed file + +====================================================================== +ERROR: test_nonposix (__main__.WriteTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp + self.src = tarfile.open(tarname(self.comp), 'r') + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 898, in open + raise ReadError, "file could not be opened successfully" +ReadError: file could not be opened successfully + +====================================================================== +ERROR: test_posix (__main__.WriteTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp + self.src = tarfile.open(tarname(self.comp), 'r') + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 898, in open + raise ReadError, "file could not be opened successfully" +ReadError: file could not be opened successfully + +====================================================================== +ERROR: test_nonposix (__main__.WriteStreamTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp + self.src = tarfile.open(tarname(self.comp), 'r') + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 898, in open + raise ReadError, "file could not be opened successfully" +ReadError: file could not be opened successfully + +====================================================================== +ERROR: test_posix (__main__.WriteStreamTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp + self.src = tarfile.open(tarname(self.comp), 'r') + File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 898, in open + raise ReadError, "file could not be opened successfully" +ReadError: file could not be opened successfully + +---------------------------------------------------------------------- +Ran 13 tests in 44.343s + +FAILED (errors=13) +========================== closed ========================== +execution time: 69.8276779652 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,236 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_tempfile.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 19:00:35 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +fd 112 is open in childTraceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/tf_inherit_check.py", line 20 in ? + sys.exit(1) +SystemExit: 1 +test_exports (__main__.test_exports) ... ok +test_get_six_char_str (__main__.test__RandomNameSequence) ... ok +test_many (__main__.test__RandomNameSequence) ... ok +test_supports_iter (__main__.test__RandomNameSequence) ... ok +test_nonempty_list (__main__.test__candidate_tempdir_list) ... ok +test_wanted_dirs (__main__.test__candidate_tempdir_list) ... ok +test_retval (__main__.test__get_candidate_names) ... ok +test_same_thing (__main__.test__get_candidate_names) ... ok +test_basic (__main__.test__mkstemp_inner) ... ok +test_basic_many (__main__.test__mkstemp_inner) ... ok +test_choose_directory (__main__.test__mkstemp_inner) ... ERROR +test_file_mode (__main__.test__mkstemp_inner) ... ok +test_noinherit (__main__.test__mkstemp_inner) ... FAIL +test_textmode (__main__.test__mkstemp_inner) ... ok +test_sane_template (__main__.test_gettempprefix) ... ok +test_usable_template (__main__.test_gettempprefix) ... ok +test_directory_exists (__main__.test_gettempdir) ... ok +test_directory_writable (__main__.test_gettempdir) ... Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 647, in CALL_FUNCTION_VAR + f.CALL_FUNCTION(oparg, w_varargs) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + frame.setfastscope(scope_w) + File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) +pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > +========================== closed ========================== +execution time: 366.91778779 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,46 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_textwrap.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:57:40 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_bad_width (__main__.WrapTestCase) ... ok +test_em_dash (__main__.WrapTestCase) ... ok +test_fix_sentence_endings (__main__.WrapTestCase) ... ok +test_funky_hyphens (__main__.WrapTestCase) ... ok +test_funky_parens (__main__.WrapTestCase) ... ok +test_hyphenated (__main__.WrapTestCase) ... ok +test_initial_whitespace (__main__.WrapTestCase) ... ok +test_simple (__main__.WrapTestCase) ... ok +test_split (__main__.WrapTestCase) ... ok +test_unicode (__main__.WrapTestCase) ... ok +test_unix_options (__main__.WrapTestCase) ... ok +test_whitespace (__main__.WrapTestCase) ... ok +test_wrap_short (__main__.WrapTestCase) ... ok +test_wrap_short_1line (__main__.WrapTestCase) ... ok +test_break_long (__main__.LongWordTestCase) ... ok +test_nobreak_long (__main__.LongWordTestCase) ... ok +test_fill (__main__.IndentTestCases) ... ok +test_initial_indent (__main__.IndentTestCases) ... ok +test_subsequent_indent (__main__.IndentTestCases) ... ok +test_dedent_even (__main__.DedentTestCase) ... ok +test_dedent_nomargin (__main__.DedentTestCase) ... ok +test_dedent_uneven (__main__.DedentTestCase) ... ok + +---------------------------------------------------------------------- +Ran 22 tests in 127.781s + +OK +========================== closed ========================== +execution time: 174.596956968 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_thread.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_thread.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_thread Added: pypy/dist/lib-python-2.3.4/test/result/test_thread.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_thread.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_thread.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:57:33 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_thread.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_thread.py", line 7 in ? +import thread +ImportError: thread +========================== closed ========================== +execution time: 6.72351288795 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_threaded_import.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:57:32 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_threaded_import.py", line 8 in ? +import thread +ImportError: thread +========================== closed ========================== +execution time: 0.874971151352 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_threadedtempfile Added: pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,18 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_threadedtempfile.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:57:30 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_threadedtempfile.out +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_threadedtempfile.py", line 23 in ? +import thread # If this fails, we can't test this module +ImportError: thread +========================== closed ========================== +execution time: 0.890268802643 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_threading.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_threading.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_threading.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:57:23 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_threading.py", line 7 in ? +import threading + File "/home/arigo/pypysrc/lib-python-2.3.4/threading.py", line 6 in ? + import thread +ImportError: thread +========================== closed ========================== +execution time: 6.78938698769 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_time.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_time.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,29 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_time.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:57:11 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +test_asctime (__main__.TimeTestCase) ... ok +test_clock (__main__.TimeTestCase) ... ok +test_conversions (__main__.TimeTestCase) ... ok +test_data_attributes (__main__.TimeTestCase) ... ok +test_sleep (__main__.TimeTestCase) ... ok +test_strftime (__main__.TimeTestCase) ... ok +test_strptime (__main__.TimeTestCase) ... ok +test_tzset (__main__.TimeTestCase) ... ok + +---------------------------------------------------------------------- +Ran 8 tests in 4.404s + +OK +========================== closed ========================== +execution time: 12.4395868778 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,242 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_timeout.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:56:53 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +testBlockingThenTimeout (__main__.CreationTestCase) ... ok +testFloatReturnValue (__main__.CreationTestCase) ... ok +testObjectCreation (__main__.CreationTestCase) ... ok +testRangeCheck (__main__.CreationTestCase) ... ok +testReturnType (__main__.CreationTestCase) ... ok +testTimeoutThenBlocking (__main__.CreationTestCase) ... ok +testTypeCheck (__main__.CreationTestCase) ... Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 656, in CALL_FUNCTION_VAR_KW + f.CALL_FUNCTION(oparg, w_varargs, w_varkw) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 647, in CALL_FUNCTION_VAR + f.CALL_FUNCTION(oparg, w_varargs) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + frame.setfastscope(scope_w) + File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) +pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > +========================== closed ========================== +execution time: 17.153949976 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_timing.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_timing.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_timing.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:56:47 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_timing.py", line 2 in ? +import timing +ImportError: timing +========================== closed ========================== +execution time: 5.76306295395 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_tokenize.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_tokenize.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,650 @@ +test_tokenize +starting... +1,0-1,35: COMMENT "# Tests for the 'tokenize' module.\n" +2,0-2,43: COMMENT '# Large bits stolen from test_grammar.py. \n' +3,0-3,1: NL '\n' +4,0-4,11: COMMENT '# Comments\n' +5,0-5,3: STRING '"#"' +5,3-5,4: NEWLINE '\n' +6,0-6,3: COMMENT "#'\n" +7,0-7,3: COMMENT '#"\n' +8,0-8,3: COMMENT '#\\\n' +9,7-9,9: COMMENT '#\n' +10,4-10,10: COMMENT '# abc\n' +11,0-12,4: STRING "'''#\n#'''" +12,4-12,5: NEWLINE '\n' +13,0-13,1: NL '\n' +14,0-14,1: NAME 'x' +14,2-14,3: OP '=' +14,4-14,5: NUMBER '1' +14,7-14,8: COMMENT '#' +14,8-14,9: NEWLINE '\n' +15,0-15,1: NL '\n' +16,0-16,25: COMMENT '# Balancing continuation\n' +17,0-17,1: NL '\n' +18,0-18,1: NAME 'a' +18,2-18,3: OP '=' +18,4-18,5: OP '(' +18,5-18,6: NUMBER '3' +18,6-18,7: OP ',' +18,8-18,9: NUMBER '4' +18,9-18,10: OP ',' +18,10-18,11: NL '\n' +19,2-19,3: NUMBER '5' +19,3-19,4: OP ',' +19,5-19,6: NUMBER '6' +19,6-19,7: OP ')' +19,7-19,8: NEWLINE '\n' +20,0-20,1: NAME 'y' +20,2-20,3: OP '=' +20,4-20,5: OP '[' +20,5-20,6: NUMBER '3' +20,6-20,7: OP ',' +20,8-20,9: NUMBER '4' +20,9-20,10: OP ',' +20,10-20,11: NL '\n' +21,2-21,3: NUMBER '5' +21,3-21,4: OP ']' +21,4-21,5: NEWLINE '\n' +22,0-22,1: NAME 'z' +22,2-22,3: OP '=' +22,4-22,5: OP '{' +22,5-22,8: STRING "'a'" +22,8-22,9: OP ':' +22,9-22,10: NUMBER '5' +22,10-22,11: OP ',' +22,11-22,12: NL '\n' +23,2-23,5: STRING "'b'" +23,5-23,6: OP ':' +23,6-23,7: NUMBER '6' +23,7-23,8: OP '}' +23,8-23,9: NEWLINE '\n' +24,0-24,1: NAME 'x' +24,2-24,3: OP '=' +24,4-24,5: OP '(' +24,5-24,8: NAME 'len' +24,8-24,9: OP '(' +24,9-24,10: OP '`' +24,10-24,11: NAME 'y' +24,11-24,12: OP '`' +24,12-24,13: OP ')' +24,14-24,15: OP '+' +24,16-24,17: NUMBER '5' +24,17-24,18: OP '*' +24,18-24,19: NAME 'x' +24,20-24,21: OP '-' +24,22-24,23: NAME 'a' +24,23-24,24: OP '[' +24,24-24,25: NL '\n' +25,3-25,4: NUMBER '3' +25,5-25,6: OP ']' +25,6-25,7: NL '\n' +26,3-26,4: OP '-' +26,5-26,6: NAME 'x' +26,7-26,8: OP '+' +26,9-26,12: NAME 'len' +26,12-26,13: OP '(' +26,13-26,14: OP '{' +26,14-26,15: NL '\n' +27,3-27,4: OP '}' +27,4-27,5: NL '\n' +28,4-28,5: OP ')' +28,5-28,6: NL '\n' +29,2-29,3: OP ')' +29,3-29,4: NEWLINE '\n' +30,0-30,1: NL '\n' +31,0-31,37: COMMENT '# Backslash means line continuation:\n' +32,0-32,1: NAME 'x' +32,2-32,3: OP '=' +32,4-32,5: NUMBER '1' +33,0-33,1: OP '+' +33,2-33,3: NUMBER '1' +33,3-33,4: NEWLINE '\n' +34,0-34,1: NL '\n' +35,0-35,55: COMMENT '# Backslash does not means continuation in comments :\\\n' +36,0-36,1: NAME 'x' +36,2-36,3: OP '=' +36,4-36,5: NUMBER '0' +36,5-36,6: NEWLINE '\n' +37,0-37,1: NL '\n' +38,0-38,20: COMMENT '# Ordinary integers\n' +39,0-39,4: NUMBER '0xff' +39,5-39,7: OP '<>' +39,8-39,11: NUMBER '255' +39,11-39,12: NEWLINE '\n' +40,0-40,4: NUMBER '0377' +40,5-40,7: OP '<>' +40,8-40,11: NUMBER '255' +40,11-40,12: NEWLINE '\n' +41,0-41,10: NUMBER '2147483647' +41,13-41,15: OP '!=' +41,16-41,28: NUMBER '017777777777' +41,28-41,29: NEWLINE '\n' +42,0-42,1: OP '-' +42,1-42,11: NUMBER '2147483647' +42,11-42,12: OP '-' +42,12-42,13: NUMBER '1' +42,14-42,16: OP '!=' +42,17-42,29: NUMBER '020000000000' +42,29-42,30: NEWLINE '\n' +43,0-43,12: NUMBER '037777777777' +43,13-43,15: OP '!=' +43,16-43,17: OP '-' +43,17-43,18: NUMBER '1' +43,18-43,19: NEWLINE '\n' +44,0-44,10: NUMBER '0xffffffff' +44,11-44,13: OP '!=' +44,14-44,15: OP '-' +44,15-44,16: NUMBER '1' +44,16-44,17: NEWLINE '\n' +45,0-45,1: NL '\n' +46,0-46,16: COMMENT '# Long integers\n' +47,0-47,1: NAME 'x' +47,2-47,3: OP '=' +47,4-47,6: NUMBER '0L' +47,6-47,7: NEWLINE '\n' +48,0-48,1: NAME 'x' +48,2-48,3: OP '=' +48,4-48,6: NUMBER '0l' +48,6-48,7: NEWLINE '\n' +49,0-49,1: NAME 'x' +49,2-49,3: OP '=' +49,4-49,23: NUMBER '0xffffffffffffffffL' +49,23-49,24: NEWLINE '\n' +50,0-50,1: NAME 'x' +50,2-50,3: OP '=' +50,4-50,23: NUMBER '0xffffffffffffffffl' +50,23-50,24: NEWLINE '\n' +51,0-51,1: NAME 'x' +51,2-51,3: OP '=' +51,4-51,23: NUMBER '077777777777777777L' +51,23-51,24: NEWLINE '\n' +52,0-52,1: NAME 'x' +52,2-52,3: OP '=' +52,4-52,23: NUMBER '077777777777777777l' +52,23-52,24: NEWLINE '\n' +53,0-53,1: NAME 'x' +53,2-53,3: OP '=' +53,4-53,35: NUMBER '123456789012345678901234567890L' +53,35-53,36: NEWLINE '\n' +54,0-54,1: NAME 'x' +54,2-54,3: OP '=' +54,4-54,35: NUMBER '123456789012345678901234567890l' +54,35-54,36: NEWLINE '\n' +55,0-55,1: NL '\n' +56,0-56,25: COMMENT '# Floating-point numbers\n' +57,0-57,1: NAME 'x' +57,2-57,3: OP '=' +57,4-57,8: NUMBER '3.14' +57,8-57,9: NEWLINE '\n' +58,0-58,1: NAME 'x' +58,2-58,3: OP '=' +58,4-58,8: NUMBER '314.' +58,8-58,9: NEWLINE '\n' +59,0-59,1: NAME 'x' +59,2-59,3: OP '=' +59,4-59,9: NUMBER '0.314' +59,9-59,10: NEWLINE '\n' +60,0-60,18: COMMENT '# XXX x = 000.314\n' +61,0-61,1: NAME 'x' +61,2-61,3: OP '=' +61,4-61,8: NUMBER '.314' +61,8-61,9: NEWLINE '\n' +62,0-62,1: NAME 'x' +62,2-62,3: OP '=' +62,4-62,8: NUMBER '3e14' +62,8-62,9: NEWLINE '\n' +63,0-63,1: NAME 'x' +63,2-63,3: OP '=' +63,4-63,8: NUMBER '3E14' +63,8-63,9: NEWLINE '\n' +64,0-64,1: NAME 'x' +64,2-64,3: OP '=' +64,4-64,9: NUMBER '3e-14' +64,9-64,10: NEWLINE '\n' +65,0-65,1: NAME 'x' +65,2-65,3: OP '=' +65,4-65,9: NUMBER '3e+14' +65,9-65,10: NEWLINE '\n' +66,0-66,1: NAME 'x' +66,2-66,3: OP '=' +66,4-66,9: NUMBER '3.e14' +66,9-66,10: NEWLINE '\n' +67,0-67,1: NAME 'x' +67,2-67,3: OP '=' +67,4-67,9: NUMBER '.3e14' +67,9-67,10: NEWLINE '\n' +68,0-68,1: NAME 'x' +68,2-68,3: OP '=' +68,4-68,9: NUMBER '3.1e4' +68,9-68,10: NEWLINE '\n' +69,0-69,1: NL '\n' +70,0-70,18: COMMENT '# String literals\n' +71,0-71,1: NAME 'x' +71,2-71,3: OP '=' +71,4-71,6: STRING "''" +71,6-71,7: OP ';' +71,8-71,9: NAME 'y' +71,10-71,11: OP '=' +71,12-71,14: STRING '""' +71,14-71,15: OP ';' +71,15-71,16: NEWLINE '\n' +72,0-72,1: NAME 'x' +72,2-72,3: OP '=' +72,4-72,8: STRING "'\\''" +72,8-72,9: OP ';' +72,10-72,11: NAME 'y' +72,12-72,13: OP '=' +72,14-72,17: STRING '"\'"' +72,17-72,18: OP ';' +72,18-72,19: NEWLINE '\n' +73,0-73,1: NAME 'x' +73,2-73,3: OP '=' +73,4-73,7: STRING '\'"\'' +73,7-73,8: OP ';' +73,9-73,10: NAME 'y' +73,11-73,12: OP '=' +73,13-73,17: STRING '"\\""' +73,17-73,18: OP ';' +73,18-73,19: NEWLINE '\n' +74,0-74,1: NAME 'x' +74,2-74,3: OP '=' +74,4-74,32: STRING '"doesn\'t \\"shrink\\" does it"' +74,32-74,33: NEWLINE '\n' +75,0-75,1: NAME 'y' +75,2-75,3: OP '=' +75,4-75,31: STRING '\'doesn\\\'t "shrink" does it\'' +75,31-75,32: NEWLINE '\n' +76,0-76,1: NAME 'x' +76,2-76,3: OP '=' +76,4-76,32: STRING '"does \\"shrink\\" doesn\'t it"' +76,32-76,33: NEWLINE '\n' +77,0-77,1: NAME 'y' +77,2-77,3: OP '=' +77,4-77,31: STRING '\'does "shrink" doesn\\\'t it\'' +77,31-77,32: NEWLINE '\n' +78,0-78,1: NAME 'x' +78,2-78,3: OP '=' +78,4-83,3: STRING '"""\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n"""' +83,3-83,4: NEWLINE '\n' +84,0-84,1: NAME 'y' +84,2-84,3: OP '=' +84,4-84,63: STRING '\'\\nThe "quick"\\nbrown fox\\njumps over\\nthe \\\'lazy\\\' dog.\\n\'' +84,63-84,64: NEWLINE '\n' +85,0-85,1: NAME 'y' +85,2-85,3: OP '=' +85,4-90,3: STRING '\'\'\'\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n\'\'\'' +90,3-90,4: OP ';' +90,4-90,5: NEWLINE '\n' +91,0-91,1: NAME 'y' +91,2-91,3: OP '=' +91,4-96,1: STRING '"\\n\\\nThe \\"quick\\"\\n\\\nbrown fox\\n\\\njumps over\\n\\\nthe \'lazy\' dog.\\n\\\n"' +96,1-96,2: OP ';' +96,2-96,3: NEWLINE '\n' +97,0-97,1: NAME 'y' +97,2-97,3: OP '=' +97,4-102,1: STRING '\'\\n\\\nThe \\"quick\\"\\n\\\nbrown fox\\n\\\njumps over\\n\\\nthe \\\'lazy\\\' dog.\\n\\\n\'' +102,1-102,2: OP ';' +102,2-102,3: NEWLINE '\n' +103,0-103,1: NAME 'x' +103,2-103,3: OP '=' +103,4-103,9: STRING "r'\\\\'" +103,10-103,11: OP '+' +103,12-103,17: STRING "R'\\\\'" +103,17-103,18: NEWLINE '\n' +104,0-104,1: NAME 'x' +104,2-104,3: OP '=' +104,4-104,9: STRING "r'\\''" +104,10-104,11: OP '+' +104,12-104,14: STRING "''" +104,14-104,15: NEWLINE '\n' +105,0-105,1: NAME 'y' +105,2-105,3: OP '=' +105,4-107,6: STRING "r'''\nfoo bar \\\\\nbaz'''" +107,7-107,8: OP '+' +107,9-108,6: STRING "R'''\nfoo'''" +108,6-108,7: NEWLINE '\n' +109,0-109,1: NAME 'y' +109,2-109,3: OP '=' +109,4-111,3: STRING 'r"""foo\nbar \\\\ baz\n"""' +111,4-111,5: OP '+' +111,6-112,3: STRING "R'''spam\n'''" +112,3-112,4: NEWLINE '\n' +113,0-113,1: NAME 'x' +113,2-113,3: OP '=' +113,4-113,10: STRING "u'abc'" +113,11-113,12: OP '+' +113,13-113,19: STRING "U'ABC'" +113,19-113,20: NEWLINE '\n' +114,0-114,1: NAME 'y' +114,2-114,3: OP '=' +114,4-114,10: STRING 'u"abc"' +114,11-114,12: OP '+' +114,13-114,19: STRING 'U"ABC"' +114,19-114,20: NEWLINE '\n' +115,0-115,1: NAME 'x' +115,2-115,3: OP '=' +115,4-115,11: STRING "ur'abc'" +115,12-115,13: OP '+' +115,14-115,21: STRING "Ur'ABC'" +115,22-115,23: OP '+' +115,24-115,31: STRING "uR'ABC'" +115,32-115,33: OP '+' +115,34-115,41: STRING "UR'ABC'" +115,41-115,42: NEWLINE '\n' +116,0-116,1: NAME 'y' +116,2-116,3: OP '=' +116,4-116,11: STRING 'ur"abc"' +116,12-116,13: OP '+' +116,14-116,21: STRING 'Ur"ABC"' +116,22-116,23: OP '+' +116,24-116,31: STRING 'uR"ABC"' +116,32-116,33: OP '+' +116,34-116,41: STRING 'UR"ABC"' +116,41-116,42: NEWLINE '\n' +117,0-117,1: NAME 'x' +117,2-117,3: OP '=' +117,4-117,10: STRING "ur'\\\\'" +117,11-117,12: OP '+' +117,13-117,19: STRING "UR'\\\\'" +117,19-117,20: NEWLINE '\n' +118,0-118,1: NAME 'x' +118,2-118,3: OP '=' +118,4-118,10: STRING "ur'\\''" +118,11-118,12: OP '+' +118,13-118,15: STRING "''" +118,15-118,16: NEWLINE '\n' +119,0-119,1: NAME 'y' +119,2-119,3: OP '=' +119,4-121,6: STRING "ur'''\nfoo bar \\\\\nbaz'''" +121,7-121,8: OP '+' +121,9-122,6: STRING "UR'''\nfoo'''" +122,6-122,7: NEWLINE '\n' +123,0-123,1: NAME 'y' +123,2-123,3: OP '=' +123,4-125,3: STRING 'Ur"""foo\nbar \\\\ baz\n"""' +125,4-125,5: OP '+' +125,6-126,3: STRING "uR'''spam\n'''" +126,3-126,4: NEWLINE '\n' +127,0-127,1: NL '\n' +128,0-128,14: COMMENT '# Indentation\n' +129,0-129,2: NAME 'if' +129,3-129,4: NUMBER '1' +129,4-129,5: OP ':' +129,5-129,6: NEWLINE '\n' +130,0-130,4: INDENT ' ' +130,4-130,5: NAME 'x' +130,6-130,7: OP '=' +130,8-130,9: NUMBER '2' +130,9-130,10: NEWLINE '\n' +131,0-131,0: DEDENT '' +131,0-131,2: NAME 'if' +131,3-131,4: NUMBER '1' +131,4-131,5: OP ':' +131,5-131,6: NEWLINE '\n' +132,0-132,8: INDENT ' ' +132,8-132,9: NAME 'x' +132,10-132,11: OP '=' +132,12-132,13: NUMBER '2' +132,13-132,14: NEWLINE '\n' +133,0-133,0: DEDENT '' +133,0-133,2: NAME 'if' +133,3-133,4: NUMBER '1' +133,4-133,5: OP ':' +133,5-133,6: NEWLINE '\n' +134,0-134,4: INDENT ' ' +134,4-134,9: NAME 'while' +134,10-134,11: NUMBER '0' +134,11-134,12: OP ':' +134,12-134,13: NEWLINE '\n' +135,0-135,5: INDENT ' ' +135,5-135,7: NAME 'if' +135,8-135,9: NUMBER '0' +135,9-135,10: OP ':' +135,10-135,11: NEWLINE '\n' +136,0-136,11: INDENT ' ' +136,11-136,12: NAME 'x' +136,13-136,14: OP '=' +136,15-136,16: NUMBER '2' +136,16-136,17: NEWLINE '\n' +137,5-137,5: DEDENT '' +137,5-137,6: NAME 'x' +137,7-137,8: OP '=' +137,9-137,10: NUMBER '2' +137,10-137,11: NEWLINE '\n' +138,0-138,0: DEDENT '' +138,0-138,0: DEDENT '' +138,0-138,2: NAME 'if' +138,3-138,4: NUMBER '0' +138,4-138,5: OP ':' +138,5-138,6: NEWLINE '\n' +139,0-139,2: INDENT ' ' +139,2-139,4: NAME 'if' +139,5-139,6: NUMBER '2' +139,6-139,7: OP ':' +139,7-139,8: NEWLINE '\n' +140,0-140,3: INDENT ' ' +140,3-140,8: NAME 'while' +140,9-140,10: NUMBER '0' +140,10-140,11: OP ':' +140,11-140,12: NEWLINE '\n' +141,0-141,8: INDENT ' ' +141,8-141,10: NAME 'if' +141,11-141,12: NUMBER '1' +141,12-141,13: OP ':' +141,13-141,14: NEWLINE '\n' +142,0-142,10: INDENT ' ' +142,10-142,11: NAME 'x' +142,12-142,13: OP '=' +142,14-142,15: NUMBER '2' +142,15-142,16: NEWLINE '\n' +143,0-143,1: NL '\n' +144,0-144,12: COMMENT '# Operators\n' +145,0-145,1: NL '\n' +146,0-146,0: DEDENT '' +146,0-146,0: DEDENT '' +146,0-146,0: DEDENT '' +146,0-146,0: DEDENT '' +146,0-146,3: NAME 'def' +146,4-146,7: NAME 'd22' +146,7-146,8: OP '(' +146,8-146,9: NAME 'a' +146,9-146,10: OP ',' +146,11-146,12: NAME 'b' +146,12-146,13: OP ',' +146,14-146,15: NAME 'c' +146,15-146,16: OP '=' +146,16-146,17: NUMBER '1' +146,17-146,18: OP ',' +146,19-146,20: NAME 'd' +146,20-146,21: OP '=' +146,21-146,22: NUMBER '2' +146,22-146,23: OP ')' +146,23-146,24: OP ':' +146,25-146,29: NAME 'pass' +146,29-146,30: NEWLINE '\n' +147,0-147,3: NAME 'def' +147,4-147,8: NAME 'd01v' +147,8-147,9: OP '(' +147,9-147,10: NAME 'a' +147,10-147,11: OP '=' +147,11-147,12: NUMBER '1' +147,12-147,13: OP ',' +147,14-147,15: OP '*' +147,15-147,20: NAME 'restt' +147,20-147,21: OP ',' +147,22-147,24: OP '**' +147,24-147,29: NAME 'restd' +147,29-147,30: OP ')' +147,30-147,31: OP ':' +147,32-147,36: NAME 'pass' +147,36-147,37: NEWLINE '\n' +148,0-148,1: NL '\n' +149,0-149,1: OP '(' +149,1-149,2: NAME 'x' +149,2-149,3: OP ',' +149,4-149,5: NAME 'y' +149,5-149,6: OP ')' +149,7-149,9: OP '<>' +149,10-149,11: OP '(' +149,11-149,12: OP '{' +149,12-149,15: STRING "'a'" +149,15-149,16: OP ':' +149,16-149,17: NUMBER '1' +149,17-149,18: OP '}' +149,18-149,19: OP ',' +149,20-149,21: OP '{' +149,21-149,24: STRING "'b'" +149,24-149,25: OP ':' +149,25-149,26: NUMBER '2' +149,26-149,27: OP '}' +149,27-149,28: OP ')' +149,28-149,29: NEWLINE '\n' +150,0-150,1: NL '\n' +151,0-151,13: COMMENT '# comparison\n' +152,0-152,2: NAME 'if' +152,3-152,4: NUMBER '1' +152,5-152,6: OP '<' +152,7-152,8: NUMBER '1' +152,9-152,10: OP '>' +152,11-152,12: NUMBER '1' +152,13-152,15: OP '==' +152,16-152,17: NUMBER '1' +152,18-152,20: OP '>=' +152,21-152,22: NUMBER '1' +152,23-152,25: OP '<=' +152,26-152,27: NUMBER '1' +152,28-152,30: OP '<>' +152,31-152,32: NUMBER '1' +152,33-152,35: OP '!=' +152,36-152,37: NUMBER '1' +152,38-152,40: NAME 'in' +152,41-152,42: NUMBER '1' +152,43-152,46: NAME 'not' +152,47-152,49: NAME 'in' +152,50-152,51: NUMBER '1' +152,52-152,54: NAME 'is' +152,55-152,56: NUMBER '1' +152,57-152,59: NAME 'is' +152,60-152,63: NAME 'not' +152,64-152,65: NUMBER '1' +152,65-152,66: OP ':' +152,67-152,71: NAME 'pass' +152,71-152,72: NEWLINE '\n' +153,0-153,1: NL '\n' +154,0-154,9: COMMENT '# binary\n' +155,0-155,1: NAME 'x' +155,2-155,3: OP '=' +155,4-155,5: NUMBER '1' +155,6-155,7: OP '&' +155,8-155,9: NUMBER '1' +155,9-155,10: NEWLINE '\n' +156,0-156,1: NAME 'x' +156,2-156,3: OP '=' +156,4-156,5: NUMBER '1' +156,6-156,7: OP '^' +156,8-156,9: NUMBER '1' +156,9-156,10: NEWLINE '\n' +157,0-157,1: NAME 'x' +157,2-157,3: OP '=' +157,4-157,5: NUMBER '1' +157,6-157,7: OP '|' +157,8-157,9: NUMBER '1' +157,9-157,10: NEWLINE '\n' +158,0-158,1: NL '\n' +159,0-159,8: COMMENT '# shift\n' +160,0-160,1: NAME 'x' +160,2-160,3: OP '=' +160,4-160,5: NUMBER '1' +160,6-160,8: OP '<<' +160,9-160,10: NUMBER '1' +160,11-160,13: OP '>>' +160,14-160,15: NUMBER '1' +160,15-160,16: NEWLINE '\n' +161,0-161,1: NL '\n' +162,0-162,11: COMMENT '# additive\n' +163,0-163,1: NAME 'x' +163,2-163,3: OP '=' +163,4-163,5: NUMBER '1' +163,6-163,7: OP '-' +163,8-163,9: NUMBER '1' +163,10-163,11: OP '+' +163,12-163,13: NUMBER '1' +163,14-163,15: OP '-' +163,16-163,17: NUMBER '1' +163,18-163,19: OP '+' +163,20-163,21: NUMBER '1' +163,21-163,22: NEWLINE '\n' +164,0-164,1: NL '\n' +165,0-165,17: COMMENT '# multiplicative\n' +166,0-166,1: NAME 'x' +166,2-166,3: OP '=' +166,4-166,5: NUMBER '1' +166,6-166,7: OP '/' +166,8-166,9: NUMBER '1' +166,10-166,11: OP '*' +166,12-166,13: NUMBER '1' +166,14-166,15: OP '%' +166,16-166,17: NUMBER '1' +166,17-166,18: NEWLINE '\n' +167,0-167,1: NL '\n' +168,0-168,8: COMMENT '# unary\n' +169,0-169,1: NAME 'x' +169,2-169,3: OP '=' +169,4-169,5: OP '~' +169,5-169,6: NUMBER '1' +169,7-169,8: OP '^' +169,9-169,10: NUMBER '1' +169,11-169,12: OP '&' +169,13-169,14: NUMBER '1' +169,15-169,16: OP '|' +169,17-169,18: NUMBER '1' +169,19-169,20: OP '&' +169,21-169,22: NUMBER '1' +169,23-169,24: OP '^' +169,25-169,26: OP '-' +169,26-169,27: NUMBER '1' +169,27-169,28: NEWLINE '\n' +170,0-170,1: NAME 'x' +170,2-170,3: OP '=' +170,4-170,5: OP '-' +170,5-170,6: NUMBER '1' +170,6-170,7: OP '*' +170,7-170,8: NUMBER '1' +170,8-170,9: OP '/' +170,9-170,10: NUMBER '1' +170,11-170,12: OP '+' +170,13-170,14: NUMBER '1' +170,14-170,15: OP '*' +170,15-170,16: NUMBER '1' +170,17-170,18: OP '-' +170,19-170,20: OP '-' +170,20-170,21: OP '-' +170,21-170,22: OP '-' +170,22-170,23: NUMBER '1' +170,23-170,24: OP '*' +170,24-170,25: NUMBER '1' +170,25-170,26: NEWLINE '\n' +171,0-171,1: NL '\n' +172,0-172,11: COMMENT '# selector\n' +173,0-173,6: NAME 'import' +173,7-173,10: NAME 'sys' +173,10-173,11: OP ',' +173,12-173,16: NAME 'time' +173,16-173,17: NEWLINE '\n' +174,0-174,1: NAME 'x' +174,2-174,3: OP '=' +174,4-174,7: NAME 'sys' +174,7-174,8: OP '.' +174,8-174,15: NAME 'modules' +174,15-174,16: OP '[' +174,16-174,22: STRING "'time'" +174,22-174,23: OP ']' +174,23-174,24: OP '.' +174,24-174,28: NAME 'time' +174,28-174,29: OP '(' +174,29-174,30: OP ')' +174,30-174,31: NEWLINE '\n' +175,0-175,1: NL '\n' +176,0-176,0: ENDMARKER '' +finished Added: pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_tokenize.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:46:16 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_tokenize.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +========================== closed ========================== +execution time: 630.777345896 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_trace.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_trace.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,56 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_trace.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:45:27 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +test_1_basic (__main__.TraceTestCase) ... ok +test_2_arigo (__main__.TraceTestCase) ... ok +test_3_one_instr (__main__.TraceTestCase) ... ok +test_4_no_pop_blocks (__main__.TraceTestCase) ... ok +test_5_no_pop_tops (__main__.TraceTestCase) ... ok +test_6_call (__main__.TraceTestCase) ... ok +test_7_raise (__main__.TraceTestCase) ... ok +test_8_settrace_and_return (__main__.TraceTestCase) ... ok +test_9_settrace_and_raise (__main__.TraceTestCase) ... ok +test_call (__main__.RaisingTraceFuncTestCase) ... ok +test_exception (__main__.RaisingTraceFuncTestCase) ... ok +test_line (__main__.RaisingTraceFuncTestCase) ... ok +test_return (__main__.RaisingTraceFuncTestCase) ... ok +test_trash_stack (__main__.RaisingTraceFuncTestCase) ... ok +test_01_jump_simple_forwards (__main__.JumpTestCase) ... ok +test_02_jump_simple_backwards (__main__.JumpTestCase) ... ok +test_03_jump_out_of_block_forwards (__main__.JumpTestCase) ... ok +test_04_jump_out_of_block_backwards (__main__.JumpTestCase) ... ok +test_05_jump_to_codeless_line (__main__.JumpTestCase) ... ok +test_06_jump_to_same_line (__main__.JumpTestCase) ... ok +test_07_jump_in_nested_finally (__main__.JumpTestCase) ... ok +test_08_no_jump_too_far_forwards (__main__.JumpTestCase) ... ok +test_09_no_jump_too_far_backwards (__main__.JumpTestCase) ... ok +test_10_no_jump_to_except_1 (__main__.JumpTestCase) ... ok +test_11_no_jump_to_except_2 (__main__.JumpTestCase) ... ok +test_12_no_jump_to_except_3 (__main__.JumpTestCase) ... ok +test_13_no_jump_to_except_4 (__main__.JumpTestCase) ... ok +test_14_no_jump_forwards_into_block (__main__.JumpTestCase) ... ok +test_15_no_jump_backwards_into_block (__main__.JumpTestCase) ... ok +test_16_no_jump_into_finally_block (__main__.JumpTestCase) ... ok +test_17_no_jump_out_of_finally_block (__main__.JumpTestCase) ... ok +test_18_no_jump_to_non_integers (__main__.JumpTestCase) ... ok +test_19_no_jump_without_trace_function (__main__.JumpTestCase) ... ok + +---------------------------------------------------------------------- +Ran 33 tests in 30.089s + +OK +========================== closed ========================== +execution time: 49.006565094 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,52 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:45:14 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py", line 49 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py", line 45 in test_main + run_unittest(TracebackCases) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred in __main__.TracebackCases +test_caret (__main__.TracebackCases) ... FAIL +test_nocaret (__main__.TracebackCases) ... FAIL + +====================================================================== +FAIL: test_caret (__main__.TracebackCases) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py", line 30, in test_caret + self.assert_(len(err) == 4) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError + +====================================================================== +FAIL: test_nocaret (__main__.TracebackCases) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py", line 40, in test_nocaret + self.assert_(len(err) == 3) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + if not expr: raise self.failureException, msg +AssertionError + +---------------------------------------------------------------------- +Ran 2 tests in 2.912s + +FAILED (failures=2) +========================== closed ========================== +execution time: 12.1203560829 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_types.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_types.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1,13 @@ +test_types +6. Built-in types +6.1 Truth value testing +6.2 Boolean operations +6.3 Comparisons +6.3.1 Conversion errors +6.3.2 Division errors +6.4 Numeric types (mostly conversions) +6.4.1 32-bit integers +6.4.2 Long integers +6.4.3 Floating point numbers +6.5 Sequence types +6.5.1 Strings Added: pypy/dist/lib-python-2.3.4/test/result/test_types.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_types.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,22 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/pypy/lib/test2/test_types.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:45:07 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_types.out +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/pypy/lib/test2/test_types.py", line 217 in ? + vereq(a[::], a) +TypeError: an integer is required +========================== closed ========================== +execution time: 6.94264411926 seconds +exit status: 1 + WORKING ON IT Added: pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,37 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_ucn.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:30:06 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ucn.py", line 144 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ucn.py", line 141 in test_main + test_support.run_unittest(UnicodeNamesTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ucn.py", line 99 in test_bmp_characters + char = unichr(code) +KeyboardInterrupt +test_ascii_letters (__main__.UnicodeNamesTest) ... ok +test_bmp_characters (__main__.UnicodeNamesTest) ... ========================== closed ========================== +execution time: 900.137104988 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_unary.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_unary.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,26 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unary.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:29:56 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_bad_types (__main__.UnaryOpTestCase) ... ok +test_invert (__main__.UnaryOpTestCase) ... ok +test_negation_of_exponentiation (__main__.UnaryOpTestCase) ... ok +test_negative (__main__.UnaryOpTestCase) ... ok +test_no_overflow (__main__.UnaryOpTestCase) ... ok +test_positive (__main__.UnaryOpTestCase) ... ok + +---------------------------------------------------------------------- +Ran 6 tests in 2.343s + +OK +========================== closed ========================== +execution time: 10.4070091248 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,39 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:37:49 2005 +pypy-revision: 11535 +============================================================ +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode.py", line 716 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode.py", line 713 in test_main + test_support.run_unittest(UnicodeTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode.py", line 624 in test_codecs + u = u''.join(map(unichr, range(0,0xd800)+range(0xe000,0x10000))) +KeyboardInterrupt +test___contains__ (__main__.UnicodeTest) ... ok +test_capitalize (__main__.UnicodeTest) ... ok +test_center (__main__.UnicodeTest) ... ok +test_codecs (__main__.UnicodeTest) ... ========================== closed ========================== +execution time: 901.142125845 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_unicode_file Added: pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode_file.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:29:36 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_unicode_file.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode_file.py", line 13 in ? + raise TestSkipped("No Unicode filesystem semantics on this platform.") +TestSkipped: No Unicode filesystem semantics on this platform. +========================== closed ========================== +execution time: 11.0879468918 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,36 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unicodedata.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:14:36 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicodedata.py", line 213 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicodedata.py", line 209 in test_main + UnicodeFunctionsTest + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicodedata.py", line 185 in test_decimal_numeric_consistent + c = unichr(i) +KeyboardInterrupt +test_decimal_numeric_consistent (__main__.UnicodeMiscTest) ... ========================== closed ========================== +execution time: 900.154639006 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,45 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_univnewlines.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:14:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_execfile (__main__.TestNativeNewlines) ... ok +test_read (__main__.TestNativeNewlines) ... ok +test_readline (__main__.TestNativeNewlines) ... ok +test_readlines (__main__.TestNativeNewlines) ... ok +test_seek (__main__.TestNativeNewlines) ... ok +test_execfile (__main__.TestCRNewlines) ... ok +test_read (__main__.TestCRNewlines) ... ok +test_readline (__main__.TestCRNewlines) ... ok +test_readlines (__main__.TestCRNewlines) ... ok +test_seek (__main__.TestCRNewlines) ... ok +test_execfile (__main__.TestLFNewlines) ... ok +test_read (__main__.TestLFNewlines) ... ok +test_readline (__main__.TestLFNewlines) ... ok +test_readlines (__main__.TestLFNewlines) ... ok +test_seek (__main__.TestLFNewlines) ... ok +test_execfile (__main__.TestCRLFNewlines) ... ok +test_read (__main__.TestCRLFNewlines) ... ok +test_readline (__main__.TestCRLFNewlines) ... ok +test_readlines (__main__.TestCRLFNewlines) ... ok +test_seek (__main__.TestCRLFNewlines) ... ok +test_execfile (__main__.TestMixedNewlines) ... ok +test_read (__main__.TestMixedNewlines) ... ok +test_readline (__main__.TestMixedNewlines) ... ok +test_readlines (__main__.TestMixedNewlines) ... ok +test_seek (__main__.TestMixedNewlines) ... ok + +---------------------------------------------------------------------- +Ran 25 tests in 9.215s + +OK +========================== closed ========================== +execution time: 27.4151549339 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,28 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unpack.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:14:01 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +unpack tuple +unpack list +unpack implied tuple +unpack string +unpack sequence +unpack single tuple/list +unpack non-sequence +unpack tuple wrong size +unpack list wrong size +unpack sequence too short +unpack sequence too long +unpack sequence too long, wrong error +unpack sequence too short, wrong error +========================== closed ========================== +execution time: 7.14024806023 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,54 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_urllib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 18:09:35 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_close (__main__.urlopen_FileTests) ... ok +test_fileno (__main__.urlopen_FileTests) ... ok +test_geturl (__main__.urlopen_FileTests) ... ok +test_info (__main__.urlopen_FileTests) ... ok +test_interface (__main__.urlopen_FileTests) ... ok +test_iter (__main__.urlopen_FileTests) ... ok +test_read (__main__.urlopen_FileTests) ... ok +test_readline (__main__.urlopen_FileTests) ... ok +test_readlines (__main__.urlopen_FileTests) ... ok +test_basic (__main__.urlretrieve_FileTests) ... ok +test_copy (__main__.urlretrieve_FileTests) ... ok +test_reporthook (__main__.urlretrieve_FileTests) ... ok +test_default_quoting (__main__.QuotingTests) ... ok +test_default_safe (__main__.QuotingTests) ... ok +test_never_quote (__main__.QuotingTests) ... ok +test_quoting_space (__main__.QuotingTests) ... ok +test_safe (__main__.QuotingTests) ... ok +test_unquoting (__main__.UnquotingTests) ... ok +test_unquoting_parts (__main__.UnquotingTests) ... ok +test_unquoting_plus (__main__.UnquotingTests) ... ok +test_doseq (__main__.urlencode_Tests) ... ok +test_quoting (__main__.urlencode_Tests) ... ok +test_using_mapping (__main__.urlencode_Tests) ... ok +test_using_sequence (__main__.urlencode_Tests) ... ok +test_basic (__main__.Pathname_Tests) ... ok +test_quoting (__main__.Pathname_Tests) ... ok + +---------------------------------------------------------------------- +Ran 26 tests in 242.106s + +OK +========================== closed ========================== +execution time: 265.865428925 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,44 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_urllib2.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 20:52:51 2005 +pypy-revision: 11535 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllib2.py", line 28 in ? +f = urllib2.urlopen(file_url) + File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 129 in urlopen + return _opener.open(url, data) + File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 326 in open + '_open', req) + File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 306 in _call_chain + result = func(*args) + File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 980 in file_open + return self.open_local_file(req) + File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 998 in open_local_file + mtype = mimetypes.guess_type(file)[0] + File "/home/arigo/pypysrc/lib-python-2.3.4/mimetypes.py", line 236 in guess_type + init() + File "/home/arigo/pypysrc/lib-python-2.3.4/mimetypes.py", line 292 in init + db = MimeTypes() + File "/home/arigo/pypysrc/lib-python-2.3.4/mimetypes.py", line 61 in __init__ + self.add_type(type, ext, True) +KeyboardInterrupt +========================== closed ========================== +execution time: 900.621522903 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,68 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:59:56 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py", line 160 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py", line 157 in test_main + urlretrieveNetworkTests) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py", line 113, in test_bad_address + urllib.urlopen, "http://www.python.invalid/") + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + callableObj(*args, **kwargs) + File "/home/arigo/pypysrc/lib-python-2.3.4/urllib.py", line 76, in urlopen + return opener.open(url) +TypeError: instance exception may not have a separate value + +testURLread (__main__.URLTimeoutTest) ... ok +test_bad_address (__main__.urlopenNetworkTests) ... ERROR +test_basic (__main__.urlopenNetworkTests) ... ok +test_fileno (__main__.urlopenNetworkTests) ... ok +test_geturl (__main__.urlopenNetworkTests) ... ok +test_info (__main__.urlopenNetworkTests) ... ok +test_readlines (__main__.urlopenNetworkTests) ... ok +test_basic (__main__.urlretrieveNetworkTests) ... ok +test_header (__main__.urlretrieveNetworkTests) ... ok +test_specified_path (__main__.urlretrieveNetworkTests) ... ok + +====================================================================== +ERROR: test_bad_address (__main__.urlopenNetworkTests) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py", line 113, in test_bad_address + urllib.urlopen, "http://www.python.invalid/") + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + callableObj(*args, **kwargs) + File "/home/arigo/pypysrc/lib-python-2.3.4/urllib.py", line 76, in urlopen + return opener.open(url) +TypeError: instance exception may not have a separate value + +---------------------------------------------------------------------- +Ran 10 tests in 183.957s + +FAILED (errors=1) +========================== closed ========================== +execution time: 203.925574064 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,25 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_urlparse.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:59:36 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_RFC1808 (__main__.UrlParseTestCase) ... ok +test_RFC2396 (__main__.UrlParseTestCase) ... ok +test_frags (__main__.UrlParseTestCase) ... ok +test_unparse_parse (__main__.UrlParseTestCase) ... ok +test_urldefrag (__main__.UrlParseTestCase) ... ok + +---------------------------------------------------------------------- +Ran 5 tests in 12.186s + +OK +========================== closed ========================== +execution time: 20.2075228691 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,58 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:58:08 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py", line 401 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py", line 397 in test_main + UserDictMixinTest + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred; run in verbose mode for details +test_read (__main__.TestMappingProtocol) ... ok +test_write (__main__.TestMappingProtocol) ... ok +test_all (__main__.UserDictTest) ... ok +test_read (__main__.UserDictTest) ... FAIL +test_write (__main__.UserDictTest) ... ok +test_all (__main__.UserDictMixinTest) ... ok +test_read (__main__.UserDictMixinTest) ... FAIL +test_write (__main__.UserDictMixinTest) ... ok + +====================================================================== +FAIL: test_read (__main__.UserDictTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py", line 65, in test_read + if p: self.fail("Empty mapping must compare to False") + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 270, in fail + raise self.failureException, msg +AssertionError: Empty mapping must compare to False + +====================================================================== +FAIL: test_read (__main__.UserDictMixinTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py", line 65, in test_read + if p: self.fail("Empty mapping must compare to False") + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 270, in fail + raise self.failureException, msg +AssertionError: Empty mapping must compare to False + +---------------------------------------------------------------------- +Ran 8 tests in 71.928s + +FAILED (failures=2) +========================== closed ========================== +execution time: 86.7255451679 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,245 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_userlist.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:57:11 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +test_add_specials (__main__.UserListTest) ... ok +test_addmul (__main__.UserListTest) ... ok +test_append (__main__.UserListTest) ... ok +test_cmplen (__main__.UserListTest) ... ok +test_constructors (__main__.UserListTest) ... ok +test_contains (__main__.UserListTest) ... ok +test_count (__main__.UserListTest) ... ok +test_delitem (__main__.UserListTest) ... ok +test_delslice (__main__.UserListTest) ... ok +test_extend (__main__.UserListTest) ... FAIL +test_getitem (__main__.UserListTest) ... ok +test_getslice (__main__.UserListTest) ... FAIL +test_iadd (__main__.UserListTest) ... ok +test_imul (__main__.UserListTest) ... ok +test_index (__main__.UserListTest) ... ok +test_insert (__main__.UserListTest) ... ok +test_pop (__main__.UserListTest) ... ok +test_radd_specials (__main__.UserListTest) ... ok +test_remove (__main__.UserListTest) ... ok +test_repr (__main__.UserListTest) ... ok +test_reverse (__main__.UserListTest) ... FAIL +test_setitem (__main__.UserListTest) ... ok +test_setslice (__main__.UserListTest) ... Traceback (most recent call last): + File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string + File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 57, in dispatch + fn(self) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 240, in STORE_SLICE_2 + f.storeslice(None, w_end) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 229, in storeslice + f.space.setitem(w_obj, w_slice, w_newvalue) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 210, in setitem + return space.get_and_call_function(w_descr, w_obj, w_key, w_val) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 87, in get_and_call_function + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_ObjSpace_Arguments + File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 2675, in __setitem__ + return fastf_instance___setitem__(space, w_self, w_key, w_value) + File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 2727, in __setitem__ + w_10 = space.call_function(w_9, w_key_2, w_value_2) + File "/home/arigo/pypysrc/pypy/interpreter/baseobjspace.py", line 223, in call_function + return self.call_args(w_func, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_Method_Arguments + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + return self.call_args(__args__) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + return self.space.call_args(self.w_function, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 57, in dispatch + fn(self) + File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 273, in STORE_SUBSCR + f.space.setitem(w_obj, w_subscr, w_newvalue) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 210, in setitem + return space.get_and_call_function(w_descr, w_obj, w_key, w_val) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 87, in get_and_call_function + return space.get_and_call_args(w_descr, w_obj, args) + File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_ObjSpace_W_Root_W_Root_W_Root + File "", line 4, in _mm_setitem_listS0_perform_call + File "", line 2, in _mm_setitem_listS0 + File "", line 3, in _mm_setitem_listS0__W_ListObject + File "", line 2, in _mm_setitem_listS0__W_ListObject__W_SliceObject + File "/home/arigo/pypysrc/pypy/objspace/std/listobject.py", line 270, in setitem__List_Slice_ANY + return _setitem_slice_helper(space, w_list, w_slice, t, len(t)) + File "/home/arigo/pypysrc/pypy/objspace/std/listobject.py", line 287, in _setitem_slice_helper + items[i] = items[i-delta] +IndexError: list index out of range +========================== closed ========================== +execution time: 56.9329071045 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,48 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_userstring.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 21:07:52 2005 +pypy-revision: 11535 +============================================================ +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userstring.py", line 50 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userstring.py", line 47 in test_main + test_support.run_unittest(UserStringTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/string_tests.py", line 586 in test_floatformatting + self.checkcall(format, "__mod__", value) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userstring.py", line 44 in checkcall + getattr(object, methodname)(*args) + File "/home/arigo/pypysrc/lib-python-2.3.4/UserString.py", line 59 in __mod__ + return self.__class__(self.data % args) +KeyboardInterrupt +test___contains__ (__main__.UserStringTest) ... ok +test_capitalize (__main__.UserStringTest) ... ok +test_center (__main__.UserStringTest) ... ok +test_count (__main__.UserStringTest) ... ok +test_encoding_decoding (__main__.UserStringTest) ... ERROR +test_endswith (__main__.UserStringTest) ... ERROR +test_expandtabs (__main__.UserStringTest) ... ok +test_find (__main__.UserStringTest) ... ok +test_floatformatting (__main__.UserStringTest) ... ========================== closed ========================== +execution time: 900.393742085 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_uu.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_uu.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,55 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:56:30 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py", line 172 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py", line 169 in test_main + test_support.run_unittest(UUTest, UUStdIOTest, UUFileTest) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py", line 148, in test_decode + self.assertEqual(s, plaintext) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + raise self.failureException, \ +AssertionError: '' != 'The smooth-scaled python crept over the sleeping dog\n' + +test_decode (__main__.UUTest) ... ok +test_encode (__main__.UUTest) ... ok +test_missingbegin (__main__.UUTest) ... ok +test_truncatedinput (__main__.UUTest) ... ok +test_decode (__main__.UUStdIOTest) ... ok +test_encode (__main__.UUStdIOTest) ... ok +test_decode (__main__.UUFileTest) ... FAIL +test_decodetwice (__main__.UUFileTest) ... ok +test_encode (__main__.UUFileTest) ... ok + +====================================================================== +FAIL: test_decode (__main__.UUFileTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py", line 148, in test_decode + self.assertEqual(s, plaintext) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + raise self.failureException, \ +AssertionError: '' != 'The smooth-scaled python crept over the sleeping dog\n' + +---------------------------------------------------------------------- +Ran 9 tests in 21.829s + +FAILED (failures=1) +========================== closed ========================== +execution time: 33.5003721714 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,27 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_warnings.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:56:09 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_filtering (__main__.TestModule) ... ok +test_warn_default_category (__main__.TestModule) ... ok +test_warn_specific_category (__main__.TestModule) ... ok + +---------------------------------------------------------------------- +Ran 3 tests in 12.419s + +OK +========================== closed ========================== +execution time: 20.4237499237 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_wave.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_wave.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,31 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_wave.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:56:01 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_wave.py", line 20 in ? +f.writeframes(output) + File "/home/arigo/pypysrc/lib-python-2.3.4/wave.py", line 421 in writeframes + self.writeframesraw(data) + File "/home/arigo/pypysrc/lib-python-2.3.4/wave.py", line 405 in writeframesraw + self._ensure_header_written(len(data)) + File "/home/arigo/pypysrc/lib-python-2.3.4/wave.py", line 448 in _ensure_header_written + self._write_header(datasize) + File "/home/arigo/pypysrc/lib-python-2.3.4/wave.py", line 461 in _write_header + self._sampwidth * 8, 'data')) + File "/home/arigo/pypysrc/pypy/lib/struct.py", line 293 in pack + result += [format['pack'](var,format['size'],endianness)] + File "/home/arigo/pypysrc/pypy/lib/struct.py", line 109 in pack_signed_int + raise StructError,"argument for i,I,l,L,q,Q,h,H must be integer" +StructError: argument for i,I,l,L,q,Q,h,H must be integer +========================== closed ========================== +execution time: 7.49740386009 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,21 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_weakref.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:55:55 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_weakref.py", line 5 in ? +import weakref + File "/home/arigo/pypysrc/lib-python-2.3.4/weakref.py", line 14 in ? +from _weakref import \ +ImportError: _weakref +========================== closed ========================== +execution time: 5.77319097519 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,25 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_whichdb.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:55:29 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +test_whichdb_dumbdbm (__main__.WhichDBTestCase) ... ok + +---------------------------------------------------------------------- +Ran 1 test in 9.150s + +OK +========================== closed ========================== +execution time: 25.3580050468 seconds +exit status: 0 Added: pypy/dist/lib-python-2.3.4/test/result/test_winreg.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_winreg.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_winreg Added: pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,18 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_winreg.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:55:28 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_winreg.out +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_winreg.py", line 4 in ? +from _winreg import * +ImportError: _winreg +========================== closed ========================== +execution time: 0.896722078323 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_winsound.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:55:22 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_winsound.py", line 5 in ? +import winsound, time +ImportError: winsound +========================== closed ========================== +execution time: 5.76984000206 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,25 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_xmllib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:53:02 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmllib.py", line 22 in ? +import xmllib + File "/home/arigo/pypysrc/lib-python-2.3.4/xmllib.py", line 39 in ? +starttagmatch = re.compile('<(?P'+_Name+')' +AttributeError: 'SRE_Pattern' object has no attribute 'pattern' +========================== closed ========================== +execution time: 138.925571918 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,70 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:50:34 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +/home/arigo/pypysrc/lib-python-2.3.4/xmllib.py:9: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. + warnings.warn("The xmllib module is obsolete. Use xml.sax instead.", DeprecationWarning) +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py", line 45 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py", line 41 in test_main + test_support.run_unittest(XMLRPCTestCase) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred in __main__.XMLRPCTestCase +test_dump_bad_dict (__main__.XMLRPCTestCase) ... ok +test_dump_big_int (__main__.XMLRPCTestCase) ... ok +test_dump_big_long (__main__.XMLRPCTestCase) ... ok +test_dump_load (__main__.XMLRPCTestCase) ... ERROR +test_dump_none (__main__.XMLRPCTestCase) ... ERROR + +====================================================================== +ERROR: test_dump_load (__main__.XMLRPCTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py", line 19, in test_dump_load + xmlrpclib.loads(xmlrpclib.dumps((alist,)))[0][0]) + File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 1011, in loads + p, u = getparser() + File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 906, in getparser + parser = SlowParser(target) + File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 539, in __init__ + import xmllib # lazy subclassing (!) + File "/home/arigo/pypysrc/lib-python-2.3.4/xmllib.py", line 39, in ? + starttagmatch = re.compile('<(?P'+_Name+')' +AttributeError: 'SRE_Pattern' object has no attribute 'pattern' + +====================================================================== +ERROR: test_dump_none (__main__.XMLRPCTestCase) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py", line 37, in test_dump_none + xmlrpclib.loads(strg)[0][0]) + File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 1011, in loads + p, u = getparser() + File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 906, in getparser + parser = SlowParser(target) + File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 540, in __init__ + if xmllib.XMLParser not in SlowParser.__bases__: +AttributeError: 'module' object has no attribute 'XMLParser' + +---------------------------------------------------------------------- +Ran 5 tests in 132.970s + +FAILED (errors=2) +========================== closed ========================== +execution time: 148.402704954 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,58 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_xpickle.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:35:33 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xpickle.py", line 44 in ? + test_main() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xpickle.py", line 40 in test_main + DumpPickle_LoadCPickle + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/home/arigo/pypysrc/lib-python-2.3.4/test/pickletester.py", line 776 in test_dict_chunking + s = self.dumps(x, proto) + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xpickle.py", line 19 in dumps + return cPickle.dumps(arg, proto) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 1386 in dumps + Pickler(file, protocol, bin).dump(obj) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 231 in dump + self.save(obj) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save + f(self, obj) # Call unbound method with explicit self + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 663 in save_dict + self._batch_setitems(obj.iteritems()) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 676 in _batch_setitems + save(k) + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save + f(self, obj) # Call unbound method with explicit self + File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 472 in save_int + self.write(INT + `obj` + '\n') + File "/home/arigo/pypysrc/lib-python-2.3.4/StringIO.py", line 165 in write + self.len = self.pos = self.pos + len(s) +KeyboardInterrupt +test_dict_chunking (__main__.DumpCPickle_LoadPickle) ... ========================== closed ========================== +execution time: 900.225219965 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_xreadline.out ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_xreadline.out Thu Apr 28 11:35:20 2005 @@ -0,0 +1 @@ +test_xreadline Added: pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,23 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_xreadline.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:35:20 2005 +pypy-revision: 11518 +OUTPUT TEST +see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_xreadline.out +============================================================ +faking +faking +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xreadline.py", line 16 in ? +import xreadlines +ImportError: xreadlines +========================== closed ========================== +execution time: 12.5617470741 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,16 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_zipfile.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:35:18 2005 +pypy-revision: 11518 +============================================================ +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_zipfile.py", line 1 in ? +import zlib # implied prerequisite +ImportError: zlib +========================== closed ========================== +execution time: 0.884968042374 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_zipimport.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:35:12 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_zipimport.py", line 8 in ? +import zlib # implied prerequisite +ImportError: zlib +========================== closed ========================== +execution time: 5.9705529213 seconds +exit status: 1 Added: pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt ============================================================================== --- (empty file) +++ pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt Thu Apr 28 11:35:20 2005 @@ -0,0 +1,19 @@ +command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_zlib.py +run by: arigo at tismerysoft.de +sys.platform: linux2 +sys.version_info: (2, 3, 5, 'final', 0) +startdate: Wed Apr 27 17:34:58 2005 +pypy-revision: 11518 +============================================================ +faking +faking +faking +faking +faking +Traceback (application-level): + File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_zlib.py", line 3 in ? +import zlib +ImportError: zlib +========================== closed ========================== +execution time: 13.2909250259 seconds +exit status: 1 From pedronis at codespeak.net Thu Apr 28 13:10:38 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 13:10:38 +0200 (CEST) Subject: [pypy-svn] r11563 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050428111038.8FB2D27BCB@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 13:10:38 2005 New Revision: 11563 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: more ignorable stuff Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Thu Apr 28 13:10:38 2005 @@ -54,10 +54,12 @@ """.split() -IGNORE_MODULES.extend("aepack".split()) # Mac ext stuff -IGNORE_MODULES.extend("al cd cl".split()) # old SGI IRIX extensions + +IGNORE_MODULES.extend("aepack macfs macostools plistlib".split()) # Mac ext stuff +IGNORE_MODULES.extend("al cd cl gl imgfile".split()) # old SGI IRIX extensions IGNORE_MODULES.append("no XML parsers available") +IGNORE_MODULES.append("test locale en_US not supported") IGNORE_MODULES.append("test_support must be imported from the test package") class Result: @@ -80,7 +82,7 @@ not match.group(1).lower().startswith('fail')): self.pts = 'Ok' elif not self.timeout: - self.finalline = match.group(1) + self.finalline = match.group(1) self.pts = 'ERR' match1 = r_importerror.match(self.finalline) if match1: From pedronis at codespeak.net Thu Apr 28 13:26:48 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 13:26:48 +0200 (CEST) Subject: [pypy-svn] r11564 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050428112648.DF1E427BCB@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 13:26:48 2005 New Revision: 11564 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: be a bit more clever about what to consider the final line for output tests, so to detect more ignorable ImportError cases Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Thu Apr 28 13:26:48 2005 @@ -27,6 +27,12 @@ exit status: (.+) $""") +r_endout = re.compile(r"""(.+)\s*FAILED: test output differs +========================== closed ========================== +execution time: (.+) seconds +exit status: (.+) +$""") + r_timeout = re.compile(r"""==========================timeout========================== """) @@ -82,7 +88,13 @@ not match.group(1).lower().startswith('fail')): self.pts = 'Ok' elif not self.timeout: - self.finalline = match.group(1) + self.finalline = match.group(1) + output_test = False + if self.finalline == "FAILED: test output differs": + output_test = True + match = r_endout.search(data) + assert match + self.finalline = match.group(1) self.pts = 'ERR' match1 = r_importerror.match(self.finalline) if match1: @@ -93,6 +105,8 @@ self.pts = '' elif self.finalline == 'skipping curses': self.pts = '' + if output_test: + self.finalline+=" [OUTPUT TEST]" else: self.finalline = 'TIME OUT' self.pts = 'T/O' From hpk at codespeak.net Thu Apr 28 13:37:02 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 28 Apr 2005 13:37:02 +0200 (CEST) Subject: [pypy-svn] r11565 - pypy/dist/pypy/interpreter Message-ID: <20050428113702.8A24527BCB@code1.codespeak.net> Author: hpk Date: Thu Apr 28 13:37:02 2005 New Revision: 11565 Modified: pypy/dist/pypy/interpreter/gateway.py Log: make applevel.interphooks() notice early that there is a missing space argument. Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Thu Apr 28 13:37:02 2005 @@ -13,7 +13,7 @@ from pypy.interpreter.error import OperationError from pypy.interpreter import eval from pypy.interpreter.function import Function, Method -from pypy.interpreter.baseobjspace import W_Root,ObjSpace, BaseWrappable, Wrappable +from pypy.interpreter.baseobjspace import W_Root, ObjSpace, BaseWrappable, Wrappable from pypy.interpreter.argument import Arguments from pypy.tool.cache import Cache from pypy.tool.compile import compile2 @@ -548,6 +548,8 @@ def interphook(self, name): "NOT_RPYTHON" def appcaller(space, *args_w): + if not isinstance(space, ObjSpace): + raise TypeError("first argument must be a space instance.") args = Arguments(space, list(args_w)) w_func = self.wget(space, name) return space.call_args(w_func, args) From hpk at codespeak.net Thu Apr 28 14:00:17 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 28 Apr 2005 14:00:17 +0200 (CEST) Subject: [pypy-svn] r11568 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050428120017.C696427BCB@code1.codespeak.net> Author: hpk Date: Thu Apr 28 14:00:17 2005 New Revision: 11568 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: sanitized and cleaned up the whole test_main/collection interaction by moving more code to applevel. added doctest module collection support, doctests are not actually run yet at applevel. Note that currently you only get the 'fine grained' test run if you issue the '-E' option, e.g. py.test -E test_base64.py Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Thu Apr 28 14:00:17 2005 @@ -56,6 +56,7 @@ try: return func(*args, **kwargs) except OperationError, e: + ilevelinfo = py.code.ExceptionInfo() if e.match(space, space.w_KeyboardInterrupt): raise KeyboardInterrupt appexcinfo=pytestsupport.AppExceptionInfo(space, e) @@ -63,63 +64,78 @@ print "appexcinfo.traceback:" py.std.pprint.pprint(appexcinfo.traceback) raise py.test.Item.Failed(excinfo=appexcinfo) - raise - -w_utestlist = None -w_doctestmodules = None + raise py.test.Item.Failed(excinfo=ilevelinfo) -def hack_test_support(space): - global w_utestlist, w_doctestmodules - w_utestlist = space.newlist([]) - w_doctestmodules = space.newlist([]) - w_mod = make_module(space, 'unittest', mydir.join('pypy_unittest.py')) - #self.w_TestCase = space.getattr(w_mod, space.wrap('TestCase')) - space.appexec([w_utestlist, w_doctestmodules], """ - (testlist, doctestmodules): - from test import test_support # humpf - - def hack_run_unittest(*classes): - testlist.extend(list(classes)) - test_support.run_unittest = hack_run_unittest - - def hack_run_doctest(module, verbose=None): - doctestmodules.append(module) - test_support.run_doctest = hack_run_doctest - - def hack_run_suite(suite, testclass=None): - pass # XXX - test_support.run_suite = hack_run_doctest - - """) - -def getmyspace(): - space = gettestobjspace('std') - # we once and for all want to patch run_unittest - # to get us the list of intended unittest-TestClasses - # from each regression test - if w_utestlist is None and option.extracttests: - callex(space, hack_test_support, space) - return space +# +# compliance modules where we invoke test_main() usually call into +# test_support.(run_suite|run_doctests) +# we intercept those calls and use the provided information +# for our collection process. This allows us to run all the +# tests one by one. +# app = ApplevelClass(''' #NOT_RPYTHON - def list_testmethods(cls): - """ return [(instance.setUp, instance.tearDown, - [instance.testmethod1, ...]), ...] - """ - clsname = cls.__name__ - instance = cls() - #print "checking", instance - methods = [] - for methodname in dir(cls): - if methodname.startswith('test'): - name = clsname + '.' + methodname - methods.append((name, getattr(instance, methodname))) - return instance.setUp, instance.tearDown, methods + import unittest + from test import test_support + + def getmethods(suite_or_class): + """ flatten out suites down to TestCase instances/methods. """ + if isinstance(suite_or_class, unittest.TestCase): + res = [suite_or_class] + elif isinstance(suite_or_class, unittest.TestSuite): + res = [] + for x in suite_or_class._tests: + res.extend(getmethods(x)) + elif isinstance(suite_or_class, list): + res = [] + for x in suite_or_class: + res.extend(getmethods(x)) + else: + raise TypeError, "expected TestSuite or TestClass, got %r" %(suite_or_class) + return res + + def intercept_test_support(suites=[], doctestmodules=[]): + """ intercept calls to test_support.run_doctest and run_suite. + Return doctestmodules, suites which will hold collected + items from these test_support invocations. + """ + def hack_run_doctest(module, verbose=None): + doctestmodules.append(module) + test_support.run_doctest = hack_run_doctest + + def hack_run_suite(suite, testclass=None): + suites.append(suite) + test_support.run_suite = hack_run_suite + return suites, doctestmodules + + # + # exported API + # + def collect_test_main(mod): + suites, doctestmodules = intercept_test_support() + mod.test_main() + namemethodlist = [] + for method in getmethods(suites): + name = (method.__class__.__name__ + '.' + + method._TestCase__testMethodName) + namemethodlist.append((name, method)) + doctestlist = [] + for mod in doctestmodules: + doctestlist.append((mod.__name__, mod)) + return namemethodlist, doctestlist + + def run_testcase_method(method): + method.setUp() + try: + method() + finally: + method.tearDown() ''') -list_testmethods = app.interphook('list_testmethods') +collect_test_main = app.interphook('collect_test_main') +run_testcase_method = app.interphook('run_testcase_method') class OpErrorModule(py.test.collect.Module): # wraps some methods around a py.test Module in order @@ -131,7 +147,7 @@ super(py.test.collect.Module, self).__init__(fspath, parent) self.testdecl = testdecl - space = property(lambda x: getmyspace()) + space = property(lambda x: gettestobjspace()) def tryiter(self, stopitems=()): try: @@ -177,8 +193,7 @@ def __init__(self, name, parent, fspath): super(RunAppFileItem, self).__init__(name, parent) self.fspath = fspath - self.space = getmyspace() - + self.space = gettestobjspace() def getfspath(self): if self.parent.testdecl.modified: @@ -239,20 +254,15 @@ # class UTTestMainModule(OpErrorModule): """ special handling for tests with a proper 'def test_main(): ' - definition invoking test_support.run_unittest (XXX and - test_support.run_doctest). + definition invoking test_support.run_suite or run_unittest + (XXX add support for test_support.run_doctest). """ def _prepare(self): - if hasattr(self, '_testcases'): + if hasattr(self, 'name2w_method'): return space = self.space - self._testcases = callex(self.space, self.get_testcases) - - def run(self): - self._prepare() - return [x[0] for x in self._testcases] - def get_testcases(self): + # load module at app-level name = self.fspath.purebasename space = self.space if self.testdecl.modified: @@ -263,93 +273,63 @@ if self.testdecl.oldstyle or pypy_option.oldstyle: space.enable_old_style_classes_as_default_metaclass() try: - w_mod = make_module(space, name, fspath) + self.w_mod = make_module(space, name, fspath) finally: if not pypy_option.oldstyle: space.enable_new_style_classes_as_default_metaclass() + w_result = callex(space, collect_test_main, space, self.w_mod) + w_namemethods, w_doctestlist = space.unpacktuple(w_result) - # hack out testcases - space.appexec([w_mod, w_utestlist], """ - (mod, classlist): - classlist[:] = [] - mod.test_main() - """) - res = [] - #print w_utestlist - for w_class in space.unpackiterable(w_utestlist): - w_name = space.getattr(w_class, space.wrap('__name__')) - res.append((space.str_w(w_name), w_class )) - res.sort() - return res - - def join(self, name): - for x,w_cls in self._testcases: - if x == name: - return UTAppTestCase(name, parent=self, w_cls=w_cls) - - -class UTAppTestCase(py.test.collect.Class): - def __init__(self, name, parent, w_cls): - super(UTAppTestCase, self).__init__(name, parent) - self.w_cls = w_cls - - def _prepare(self): - if not hasattr(self, 'space'): - self.space = space = self.parent.space - w_item = list_testmethods(space, self.w_cls) - w_setup, w_teardown, w_methods = space.unpackiterable(w_item) - methoditems_w = space.unpackiterable(w_methods) - self.methods_w = methods_w = [] - for w_methoditem in methoditems_w: - w_name, w_method = space.unpacktuple(w_methoditem) - name = space.str_w(w_name) - methods_w.append((name, w_method, w_setup, w_teardown)) - methods_w.sort() - + # setup {name -> wrapped testcase method} + self.name2w_method = {} + for w_item in space.unpackiterable(w_namemethods): + w_name, w_method = space.unpacktuple(w_item) + name = space.str_w(w_name) + self.name2w_method[name] = w_method + + # setup {name -> wrapped doctest module} + self.name2w_doctestmodule = {} + for w_item in space.unpackiterable(w_doctestlist): + w_name, w_module = space.unpacktuple(w_item) + name = space.str_w(w_name) + self.name2w_doctestmodule[name] = w_module + def run(self): - callex(self.parent.space, self._prepare,) - return [x[0] for x in self.methods_w] + self._prepare() + keys = self.name2w_method.keys() + keys.extend(self.name2w_doctestmodule.keys()) + return keys def join(self, name): - for x in self.methods_w: - if x[0] == name: - args = x[1:] - return AppTestCaseMethod(name, self, *args) + self._prepare() + if name in self.name2w_method: + w_method = self.name2w_method[name] + return AppTestCaseMethod(name, parent=self, w_method=w_method) + if name in self.name2w_doctestmodule: + w_module = self.name2w_doctestmodule[name] + return AppDocTestModule(name, parent=self, w_module=w_module) + +class AppDocTestModule(py.test.Item): + def __init__(self, name, parent, w_module): + super(AppDocTestModule, self).__init__(name, parent) + self.w_module = w_module + def run(self): + py.test.skip("application level doctest modules not supported yet.") + class AppTestCaseMethod(py.test.Item): - def __init__(self, name, parent, w_method, w_setup, w_teardown): + def __init__(self, name, parent, w_method): super(AppTestCaseMethod, self).__init__(name, parent) self.space = parent.space self.w_method = w_method - self.w_setup = w_setup - self.w_teardown = w_teardown def run(self): space = self.space - try: - filename = str(self.fspath) - w_argv = space.sys.get('argv') - space.setitem(w_argv, space.newslice(None, None, None), - space.newlist([space.wrap(filename)])) - space.call_function(self.w_setup) - try: - try: - self.execute() - except OperationError, e: - if e.match(space, space.w_KeyboardInterrupt): - raise KeyboardInterrupt - raise - finally: - self.space.call_function(self.w_teardown) - except OperationError, e: - ilevel_excinfo = py.code.ExceptionInfo() - excinfo=pytestsupport.AppExceptionInfo(self.space, e) - if excinfo.traceback: - raise self.Failed(excinfo=excinfo) - raise self.Failed(excinfo=ilevel_excinfo) - - def execute(self): - self.space.call_function(self.w_method) + filename = str(self.fspath) + w_argv = space.sys.get('argv') + space.setitem(w_argv, space.newslice(None, None, None), + space.newlist([space.wrap(filename)])) + callex(space, run_testcase_method, space, self.w_method) # ________________________________________________________________________ # From ac at codespeak.net Thu Apr 28 15:36:30 2005 From: ac at codespeak.net (ac at codespeak.net) Date: Thu, 28 Apr 2005 15:36:30 +0200 (CEST) Subject: [pypy-svn] r11583 - pypy/branch/non-fake-unicode/pypy/objspace/std Message-ID: <20050428133630.6412327BD3@code1.codespeak.net> Author: ac Date: Thu Apr 28 15:36:30 2005 New Revision: 11583 Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/floattype.py Log: Import missing Exception. Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/floattype.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/floattype.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/floattype.py Thu Apr 28 15:36:30 2005 @@ -1,5 +1,6 @@ from pypy.objspace.std.stdtypedef import * from pypy.interpreter.error import OperationError +from pypy.objspace.std.strutil import ParseStringError def descr__new__(space, w_floattype, w_value=0.0): from pypy.objspace.std.floatobject import W_FloatObject From ac at codespeak.net Thu Apr 28 15:37:52 2005 From: ac at codespeak.net (ac at codespeak.net) Date: Thu, 28 Apr 2005 15:37:52 +0200 (CEST) Subject: [pypy-svn] r11584 - pypy/branch/non-fake-unicode/pypy/module/builtin Message-ID: <20050428133752.E093F27BD3@code1.codespeak.net> Author: ac Date: Thu Apr 28 15:37:52 2005 New Revision: 11584 Modified: pypy/branch/non-fake-unicode/pypy/module/builtin/__init__.py Log: Unicode is not faked any longer. Modified: pypy/branch/non-fake-unicode/pypy/module/builtin/__init__.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/module/builtin/__init__.py (original) +++ pypy/branch/non-fake-unicode/pypy/module/builtin/__init__.py Thu Apr 28 15:37:52 2005 @@ -67,7 +67,7 @@ 'object' : '(space.w_object)', 'file' : '(space.wrap(file))', 'open' : '(space.wrap(file))', - 'unicode' : '(space.wrap(unicode))', # XXX faked + 'unicode' : '(space.w_unicode)', # old-style classes dummy support '_classobj' : 'space.w_classobj', From pedronis at codespeak.net Thu Apr 28 15:54:35 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 15:54:35 +0200 (CEST) Subject: [pypy-svn] r11586 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050428135435.A7B0127BD3@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 15:54:35 2005 New Revision: 11586 Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: added _symtable to the ignorable modules list Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Thu Apr 28 15:54:35 2005 @@ -57,9 +57,9 @@ thread signal + _symtable -""".split() - +""".split() # _symtable as it is is an impl detail of CPython compiler IGNORE_MODULES.extend("aepack macfs macostools plistlib".split()) # Mac ext stuff IGNORE_MODULES.extend("al cd cl gl imgfile".split()) # old SGI IRIX extensions From ac at codespeak.net Thu Apr 28 15:38:17 2005 From: ac at codespeak.net (ac at codespeak.net) Date: Thu, 28 Apr 2005 15:38:17 +0200 (CEST) Subject: [pypy-svn] r11585 - in pypy/branch/non-fake-unicode/pypy: interpreter module/unicodedata objspace/std Message-ID: <20050428133817.5CA9F27BD9@code1.codespeak.net> Author: ac Date: Thu Apr 28 15:38:16 2005 New Revision: 11585 Added: pypy/branch/non-fake-unicode/pypy/module/unicodedata/ (props changed) pypy/branch/non-fake-unicode/pypy/module/unicodedata/UnicodeData-3.2.0.txt pypy/branch/non-fake-unicode/pypy/module/unicodedata/UnicodeData-4.1.0.txt pypy/branch/non-fake-unicode/pypy/module/unicodedata/__init__.py (contents, props changed) pypy/branch/non-fake-unicode/pypy/module/unicodedata/functions.py (contents, props changed) pypy/branch/non-fake-unicode/pypy/module/unicodedata/generateUnicodedb.py (contents, props changed) pypy/branch/non-fake-unicode/pypy/module/unicodedata/unicodedb.py (contents, props changed) Modified: pypy/branch/non-fake-unicode/pypy/interpreter/baseobjspace.py pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py Log: First version of module unicodedata, and use it to detect space characters. Modified: pypy/branch/non-fake-unicode/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/interpreter/baseobjspace.py (original) +++ pypy/branch/non-fake-unicode/pypy/interpreter/baseobjspace.py Thu Apr 28 15:38:16 2005 @@ -81,6 +81,7 @@ w_builtin = self.wrap(self.builtin) self.setitem(w_modules, w_name, w_builtin) self.setitem(self.builtin.w_dict, self.wrap('__builtins__'), w_builtin) + self.setbuiltinmodule('unicodedata') # XXX we need to resolve unwrapping issues to # make this the default _sre module Added: pypy/branch/non-fake-unicode/pypy/module/unicodedata/UnicodeData-3.2.0.txt ============================================================================== --- (empty file) +++ pypy/branch/non-fake-unicode/pypy/module/unicodedata/UnicodeData-3.2.0.txt Thu Apr 28 15:38:16 2005 @@ -0,0 +1,13874 @@ +0000;;Cc;0;BN;;;;;N;NULL;;;; +0001;;Cc;0;BN;;;;;N;START OF HEADING;;;; +0002;;Cc;0;BN;;;;;N;START OF TEXT;;;; +0003;;Cc;0;BN;;;;;N;END OF TEXT;;;; +0004;;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;; +0005;;Cc;0;BN;;;;;N;ENQUIRY;;;; +0006;;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; +0007;;Cc;0;BN;;;;;N;BELL;;;; +0008;;Cc;0;BN;;;;;N;BACKSPACE;;;; +0009;;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; +000A;;Cc;0;B;;;;;N;LINE FEED (LF);;;; +000B;;Cc;0;S;;;;;N;LINE TABULATION;;;; +000C;;Cc;0;WS;;;;;N;FORM FEED (FF);;;; +000D;;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; +000E;;Cc;0;BN;;;;;N;SHIFT OUT;;;; +000F;;Cc;0;BN;;;;;N;SHIFT IN;;;; +0010;;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; +0011;;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;; +0012;;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;; +0013;;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;; +0014;;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;; +0015;;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;; +0016;;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;; +0017;;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;; +0018;;Cc;0;BN;;;;;N;CANCEL;;;; +0019;;Cc;0;BN;;;;;N;END OF MEDIUM;;;; +001A;;Cc;0;BN;;;;;N;SUBSTITUTE;;;; +001B;;Cc;0;BN;;;;;N;ESCAPE;;;; +001C;;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; +001D;;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; +001E;;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; +001F;;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; +0020;SPACE;Zs;0;WS;;;;;N;;;;; +0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; +0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; +0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; +0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; +0026;AMPERSAND;Po;0;ON;;;;;N;;;;; +0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; +0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; +0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; +002A;ASTERISK;Po;0;ON;;;;;N;;;;; +002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;; +002C;COMMA;Po;0;CS;;;;;N;;;;; +002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;; +002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; +002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;; +0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; +0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; +0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; +0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; +0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; +0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; +0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; +0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; +0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; +0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; +003A;COLON;Po;0;CS;;;;;N;;;;; +003B;SEMICOLON;Po;0;ON;;;;;N;;;;; +003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; +003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; +003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; +003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; +0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; +0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; +0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; +0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; +0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; +0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; +0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; +0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; +0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; +0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; +004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; +004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; +004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; +004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; +004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; +004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; +0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; +0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; +0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; +0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; +0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; +0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; +0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; +0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; +0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; +0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; +005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; +005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; +005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; +005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; +005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; +005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; +0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; +0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 +0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 +0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 +0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 +0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 +0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 +0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 +0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 +0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 +006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A +006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B +006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C +006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D +006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E +006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F +0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 +0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 +0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 +0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 +0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 +0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 +0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 +0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 +0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 +0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 +007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A +007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; +007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; +007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; +007E;TILDE;Sm;0;ON;;;;;N;;;;; +007F;;Cc;0;BN;;;;;N;DELETE;;;; +0080;;Cc;0;BN;;;;;N;;;;; +0081;;Cc;0;BN;;;;;N;;;;; +0082;;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; +0083;;Cc;0;BN;;;;;N;NO BREAK HERE;;;; +0084;;Cc;0;BN;;;;;N;;;;; +0085;;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; +0086;;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; +0087;;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; +0088;;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; +0089;;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; +008A;;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; +008B;;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; +008C;;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; +008D;;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; +008E;;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; +008F;;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; +0090;;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;; +0091;;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;; +0092;;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;; +0093;;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;; +0094;;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;; +0095;;Cc;0;BN;;;;;N;MESSAGE WAITING;;;; +0096;;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;; +0097;;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;; +0098;;Cc;0;BN;;;;;N;START OF STRING;;;; +0099;;Cc;0;BN;;;;;N;;;;; +009A;;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;; +009B;;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;; +009C;;Cc;0;BN;;;;;N;STRING TERMINATOR;;;; +009D;;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;; +009E;;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;; +009F;;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;; +00A0;NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;NON-BREAKING SPACE;;;; +00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; +00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; +00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; +00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; +00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; +00A7;SECTION SIGN;So;0;ON;;;;;N;;;;; +00A8;DIAERESIS;Sk;0;ON; 0020 0308;;;;N;SPACING DIAERESIS;;;; +00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; +00AA;FEMININE ORDINAL INDICATOR;Ll;0;L; 0061;;;;N;;;;; +00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;; +00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; +00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; +00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; +00AF;MACRON;Sk;0;ON; 0020 0304;;;;N;SPACING MACRON;;;; +00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; +00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; +00B2;SUPERSCRIPT TWO;No;0;EN; 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;; +00B3;SUPERSCRIPT THREE;No;0;EN; 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;; +00B4;ACUTE ACCENT;Sk;0;ON; 0020 0301;;;;N;SPACING ACUTE;;;; +00B5;MICRO SIGN;Ll;0;L; 03BC;;;;N;;;039C;;039C +00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; +00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; +00B8;CEDILLA;Sk;0;ON; 0020 0327;;;;N;SPACING CEDILLA;;;; +00B9;SUPERSCRIPT ONE;No;0;EN; 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;; +00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L; 006F;;;;N;;;;; +00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;; +00BC;VULGAR FRACTION ONE QUARTER;No;0;ON; 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; +00BD;VULGAR FRACTION ONE HALF;No;0;ON; 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; +00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON; 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; +00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; +00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; +00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; +00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; +00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; +00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; +00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; +00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6; +00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; +00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; +00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; +00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; +00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; +00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; +00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; +00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; +00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; +00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0; +00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; +00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; +00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; +00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; +00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; +00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; +00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; +00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; +00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; +00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; +00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; +00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; +00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; +00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE; +00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;; +00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 +00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 +00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 +00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 +00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 +00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 +00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6 +00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 +00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 +00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 +00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA +00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB +00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC +00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD +00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE +00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF +00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0 +00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 +00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 +00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 +00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 +00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 +00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 +00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 +00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 +00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA +00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB +00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC +00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD +00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE +00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 +0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; +0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 +0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; +0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 +0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; +0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 +0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; +0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 +0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; +0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 +010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; +010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A +010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; +010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C +010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; +010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E +0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; +0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 +0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; +0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 +0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; +0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 +0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; +0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 +0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; +0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 +011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; +011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A +011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; +011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C +011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; +011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E +0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; +0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 +0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; +0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 +0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; +0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 +0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; +0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 +0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; +0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 +012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; +012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A +012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; +012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C +012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; +012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E +0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; +0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 +0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L; 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; +0133;LATIN SMALL LIGATURE IJ;Ll;0;L; 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 +0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; +0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 +0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; +0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 +0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;; +0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; +013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 +013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; +013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B +013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; +013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D +013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L; 004C 00B7;;;;N;;;;0140; +0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L; 006C 00B7;;;;N;;;013F;;013F +0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; +0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 +0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; +0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 +0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; +0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 +0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; +0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 +0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L; 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; +014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B; +014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A +014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; +014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C +014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; +014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E +0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; +0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 +0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; +0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 +0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; +0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 +0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; +0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 +0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; +0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 +015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; +015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A +015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; +015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C +015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F; +015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E +0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; +0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 +0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163; +0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162 +0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; +0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 +0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; +0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 +0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; +0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 +016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; +016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A +016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; +016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C +016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; +016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E +0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; +0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 +0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; +0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 +0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; +0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 +0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; +0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 +0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; +0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; +017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 +017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; +017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B +017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; +017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D +017F;LATIN SMALL LETTER LONG S;Ll;0;L; 0073;;;;N;;;0053;;0053 +0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;; +0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; +0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; +0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 +0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; +0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 +0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; +0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; +0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 +0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256; +018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; +018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; +018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B +018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; +018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; +018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; +0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; +0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; +0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 +0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; +0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; +0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6 +0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; +0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; +0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; +0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 +019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;; +019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; +019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; +019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; +019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 +019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275; +01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; +01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 +01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3; +01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2 +01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; +01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 +01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280; +01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; +01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 +01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; +01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; +01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; +01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; +01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC +01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; +01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; +01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF +01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; +01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; +01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; +01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 +01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; +01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 +01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; +01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; +01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 +01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; +01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; +01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; +01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC +01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; +01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 +01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; +01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; +01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; +01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; +01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L; 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 +01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L; 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6; +01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L; 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 +01C7;LATIN CAPITAL LETTER LJ;Lu;0;L; 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 +01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L; 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9; +01C9;LATIN SMALL LETTER LJ;Ll;0;L; 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 +01CA;LATIN CAPITAL LETTER NJ;Lu;0;L; 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB +01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L; 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC; +01CC;LATIN SMALL LETTER NJ;Ll;0;L; 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB +01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; +01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD +01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; +01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF +01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; +01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 +01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; +01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 +01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; +01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 +01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; +01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 +01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; +01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 +01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; +01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB +01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E +01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; +01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE +01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; +01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 +01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3; +01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2 +01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; +01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 +01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; +01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 +01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; +01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 +01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; +01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA +01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; +01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC +01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; +01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE +01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; +01F1;LATIN CAPITAL LETTER DZ;Lu;0;L; 0044 005A;;;;N;;;;01F3;01F2 +01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L; 0044 007A;;;;N;;;01F1;01F3; +01F3;LATIN SMALL LETTER DZ;Ll;0;L; 0064 007A;;;;N;;;01F1;;01F2 +01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; +01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 +01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; +01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; +01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; +01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 +01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; +01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA +01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD; +01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC +01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; +01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE +0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; +0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 +0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; +0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 +0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; +0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 +0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; +0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 +0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; +0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 +020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; +020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A +020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; +020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C +020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; +020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E +0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; +0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 +0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; +0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 +0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; +0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 +0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; +0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 +0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219; +0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218 +021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B; +021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A +021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; +021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C +021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; +021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E +0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; +0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; +0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 +0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; +0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 +0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; +0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 +0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; +0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 +022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; +022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A +022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; +022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C +022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; +022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E +0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; +0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 +0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; +0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 +0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;; +0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;; +0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;; +0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 +0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 +0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; +0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 +0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A +0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; +0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F +025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; +025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 +025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; +025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; +025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; +025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; +0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 +0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; +0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; +0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 +0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; +0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;; +0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;; +0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; +0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 +0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 +026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; +026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; +026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; +026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; +026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C +0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; +0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;; +0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D +0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; +0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; +0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F +0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; +0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; +0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; +0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; +027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; +027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; +027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; +027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;; +027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; +027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; +0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6 +0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; +0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; +0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 +0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; +0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; +0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; +0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; +0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE +0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;; +028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 +028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 +028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;; +028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; +028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; +028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; +0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; +0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; +0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 +0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; +0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;; +0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; +0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; +0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; +0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; +0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; +029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; +029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; +029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; +029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; +029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; +029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; +02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; +02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; +02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; +02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; +02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; +02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; +02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; +02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; +02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; +02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; +02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; +02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; +02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; +02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; +02B0;MODIFIER LETTER SMALL H;Lm;0;L; 0068;;;;N;;;;; +02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L; 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; +02B2;MODIFIER LETTER SMALL J;Lm;0;L; 006A;;;;N;;;;; +02B3;MODIFIER LETTER SMALL R;Lm;0;L; 0072;;;;N;;;;; +02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L; 0279;;;;N;;;;; +02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L; 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; +02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L; 0281;;;;N;;;;; +02B7;MODIFIER LETTER SMALL W;Lm;0;L; 0077;;;;N;;;;; +02B8;MODIFIER LETTER SMALL Y;Lm;0;L; 0079;;;;N;;;;; +02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;; +02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;; +02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; +02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; +02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; +02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; +02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; +02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; +02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; +02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; +02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;; +02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;; +02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;; +02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;; +02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;; +02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;; +02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;; +02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; +02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; +02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; +02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; +02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; +02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; +02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; +02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; +02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; +02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; +02D8;BREVE;Sk;0;ON; 0020 0306;;;;N;SPACING BREVE;;;; +02D9;DOT ABOVE;Sk;0;ON; 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;; +02DA;RING ABOVE;Sk;0;ON; 0020 030A;;;;N;SPACING RING ABOVE;;;; +02DB;OGONEK;Sk;0;ON; 0020 0328;;;;N;SPACING OGONEK;;;; +02DC;SMALL TILDE;Sk;0;ON; 0020 0303;;;;N;SPACING TILDE;;;; +02DD;DOUBLE ACUTE ACCENT;Sk;0;ON; 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; +02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; +02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; +02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L; 0263;;;;N;;;;; +02E1;MODIFIER LETTER SMALL L;Lm;0;L; 006C;;;;N;;;;; +02E2;MODIFIER LETTER SMALL S;Lm;0;L; 0073;;;;N;;;;; +02E3;MODIFIER LETTER SMALL X;Lm;0;L; 0078;;;;N;;;;; +02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L; 0295;;;;N;;;;; +02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; +02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; +02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; +02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; +02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; +02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; +02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; +02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;; +02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; +02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; +0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;; +0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;; +0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; +0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; +0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; +0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; +0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;; +0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; +0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;; +0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; +030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; +030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; +030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; +030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; +030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; +030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; +0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; +0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; +0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; +0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;; +0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;; +0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; +0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; +0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; +0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; +0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; +031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; +031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; +031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; +031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; +031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; +031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; +0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; +0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; +0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; +0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; +0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; +0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; +0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; +0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; +0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; +0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; +032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; +032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; +032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; +032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; +032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; +032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; +0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; +0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; +0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; +0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; +0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; +0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; +0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; +0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; +0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; +0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; +033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; +033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; +033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; +033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; +033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; +033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; +0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;; +0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;; +0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; +0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; +0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; +0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 +0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; +0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; +0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; +0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; +034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; +034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; +034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; +034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; +0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; +0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; +0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; +0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; +0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; +0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; +0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; +0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; +0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; +0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; +036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; +036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; +036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; +036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; +036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; +036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; +0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;; +0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;; +037A;GREEK YPOGEGRAMMENI;Lm;0;L; 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; +037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;; +0384;GREEK TONOS;Sk;0;ON; 0020 0301;;;;N;GREEK SPACING TONOS;;;; +0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; +0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; +0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; +0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; +0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; +038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; +038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; +038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; +038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; +0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; +0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; +0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; +0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; +0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; +0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; +0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; +0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; +0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; +0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; +039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; +039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; +039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; +039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; +039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; +039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; +03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; +03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; +03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; +03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; +03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; +03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; +03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; +03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; +03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; +03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; +03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; +03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 +03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 +03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 +03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A +03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; +03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 +03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 +03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 +03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 +03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 +03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 +03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 +03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 +03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 +03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A +03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B +03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C +03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D +03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E +03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F +03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 +03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 +03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 +03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 +03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 +03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 +03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 +03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 +03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 +03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 +03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA +03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB +03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C +03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E +03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F +03D0;GREEK BETA SYMBOL;Ll;0;L; 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 +03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 +03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L; 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; +03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; +03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; +03D5;GREEK PHI SYMBOL;Ll;0;L; 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 +03D6;GREEK PI SYMBOL;Ll;0;L; 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 +03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;; +03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9; +03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8 +03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; +03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA +03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; +03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC +03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; +03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE +03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; +03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 +03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; +03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 +03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; +03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 +03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; +03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 +03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; +03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 +03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; +03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA +03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; +03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC +03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; +03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE +03F0;GREEK KAPPA SYMBOL;Ll;0;L; 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A +03F1;GREEK RHO SYMBOL;Ll;0;L; 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 +03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L; 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3 +03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; +03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8; +03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L; 03B5;;;;N;;;0395;;0395 +03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; +0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; +0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; +0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452; +0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; +0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; +0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; +0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; +0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457; +0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; +0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; +040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; +040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B; +040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; +040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; +040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E; +040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; +0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; +0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; +0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; +0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; +0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; +0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; +0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; +0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; +0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; +0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; +041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; +041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; +041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; +041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; +041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; +041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; +0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; +0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; +0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; +0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; +0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; +0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; +0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; +0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; +0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; +0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; +042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; +042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; +042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; +042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; +042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; +042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; +0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 +0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 +0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 +0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 +0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 +0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 +0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 +0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 +0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 +0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 +043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A +043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B +043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C +043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D +043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E +043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F +0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 +0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 +0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 +0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 +0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 +0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 +0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 +0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 +0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 +0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 +044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A +044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B +044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C +044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D +044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E +044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F +0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 +0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 +0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402 +0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 +0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 +0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 +0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 +0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407 +0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 +0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 +045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A +045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B +045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C +045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D +045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E +045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F +0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; +0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 +0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; +0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 +0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; +0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 +0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; +0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 +0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; +0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 +046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; +046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A +046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; +046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C +046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; +046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E +0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; +0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 +0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; +0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 +0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; +0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 +0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; +0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 +0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; +0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 +047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; +047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A +047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; +047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C +047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; +047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E +0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; +0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 +0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; +0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; +0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; +0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; +0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; +0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; +0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; +048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A +048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; +048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C +048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; +048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E +0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; +0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 +0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; +0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 +0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; +0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 +0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; +0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 +0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; +0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 +049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; +049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A +049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; +049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C +049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; +049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E +04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; +04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 +04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; +04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 +04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; +04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 +04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7; +04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6 +04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; +04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 +04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; +04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA +04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; +04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC +04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; +04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE +04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; +04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 +04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; +04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 +04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5; +04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4 +04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; +04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 +04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; +04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 +04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; +04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA +04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; +04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC +04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; +04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE +04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;; +04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; +04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 +04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; +04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 +04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; +04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 +04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; +04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 +04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; +04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 +04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; +04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB +04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; +04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD +04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; +04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 +04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; +04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 +04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; +04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 +04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; +04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 +04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; +04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 +04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; +04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA +04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; +04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC +04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; +04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE +04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; +04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 +04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; +04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 +04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; +04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 +04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; +04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 +04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; +04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 +04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; +04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA +04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; +04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC +04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; +04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE +04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; +04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 +04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; +04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 +04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; +04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 +04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; +04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 +0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; +0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 +0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; +0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 +0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; +0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 +0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; +0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 +0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; +0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 +050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; +050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A +050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; +050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C +050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; +050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E +0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; +0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; +0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; +0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; +0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; +0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; +0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; +0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; +0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; +053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; +053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; +053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; +053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; +053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; +053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; +0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; +0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; +0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; +0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; +0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; +0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; +0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; +0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; +0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; +0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; +054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; +054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; +054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; +054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; +054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; +054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; +0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; +0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; +0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; +0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; +0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; +0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; +0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; +0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; +055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; +055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; +055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; +055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; +055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; +055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; +0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 +0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 +0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 +0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 +0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 +0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 +0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 +0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 +0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 +056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A +056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B +056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C +056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D +056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E +056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F +0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 +0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 +0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 +0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 +0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 +0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 +0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 +0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 +0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 +0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 +057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A +057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B +057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C +057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D +057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E +057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F +0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 +0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 +0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 +0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 +0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 +0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 +0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 +0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L; 0565 0582;;;;N;;;;; +0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; +058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; +0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; +0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; +0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; +0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; +0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; +0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;; +0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; +0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;; +0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; +059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; +059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; +059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; +059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; +059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; +059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; +05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; +05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; +05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; +05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; +05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;; +05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; +05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; +05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;; +05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; +05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;; +05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; +05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; +05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; +05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; +05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; +05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; +05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; +05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; +05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; +05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; +05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; +05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; +05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; +05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; +05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; +05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; +05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;; +05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;; +05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;; +05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; +05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;; +05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; +05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; +05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;; +05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; +05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; +05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; +05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; +05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; +05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; +05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; +05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; +05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; +05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; +05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; +05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; +05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; +05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; +05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; +05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; +05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; +05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; +05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; +05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; +05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; +05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; +05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; +05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; +05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; +05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; +05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; +05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; +05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; +05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; +05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; +05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; +060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; +061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; +061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; +0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; +0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; +0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; +0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; +0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; +0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; +0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; +0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; +0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; +062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; +062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; +062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; +062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; +062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; +062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; +0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; +0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; +0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; +0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; +0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; +0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; +0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; +0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; +0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; +0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; +063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; +0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; +0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; +0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; +0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; +0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; +0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; +0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; +0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; +0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; +0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; +064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; +064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; +064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; +064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; +064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; +064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; +0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; +0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; +0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; +0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; +0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; +0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; +0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; +0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; +0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; +0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; +0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; +0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; +0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; +0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; +0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; +0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; +066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; +066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; +066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; +066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; +066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; +066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; +0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; +0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; +0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; +0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; +0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; +0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL; 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; +0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL; 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; +0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL; 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; +0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL; 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; +0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; +067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; +067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; +067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; +067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; +067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; +067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; +0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; +0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; +0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; +0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; +0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; +0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; +0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; +0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; +0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; +0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; +068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; +068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; +068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; +068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; +068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; +0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; +0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; +0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; +0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; +0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; +0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; +0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; +0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; +0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; +069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; +06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; +06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; +06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; +06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; +06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; +06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; +06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; +06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; +06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; +06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; +06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; +06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;; +06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; +06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; +06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; +06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; +06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; +06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; +06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; +06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; +06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; +06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; +06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; +06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; +06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; +06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; +06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; +06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; +06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; +06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; +06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; +06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; +06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; +06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; +06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;; +06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; +06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; +06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; +06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; +06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; +06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; +06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; +06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; +06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; +06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; +06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; +06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; +06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;; +06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; +06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; +06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; +06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; +06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; +06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; +06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; +06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; +06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; +06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; +06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; +06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; +06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; +06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; +06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; +06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; +06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; +06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; +06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; +06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; +06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; +06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; +06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; +06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; +06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; +06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; +06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; +06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; +0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; +0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; +0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; +0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; +0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; +0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; +0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; +0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; +0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; +0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; +070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; +070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; +070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; +070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; +070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;; +0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; +0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; +0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; +0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; +0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; +0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; +0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; +0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; +0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; +0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; +071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; +071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; +071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; +071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; +071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; +071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; +0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; +0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; +0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; +0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; +0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; +0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; +0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; +0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; +0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; +0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; +072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; +072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; +072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; +0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; +0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; +0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; +0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; +0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; +0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; +0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; +0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; +0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; +0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; +073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; +073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; +073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; +073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; +073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; +073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; +0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; +0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; +0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; +0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; +0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; +0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; +074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; +0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; +0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; +0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; +0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; +0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; +0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; +0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; +0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; +0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; +0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; +078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; +078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; +078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; +078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; +078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; +078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; +0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; +0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; +0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; +0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; +0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; +0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; +0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; +0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; +0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; +0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; +079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; +079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; +079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; +079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; +079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; +079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; +07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; +07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; +07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; +07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; +07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; +07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; +07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; +07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; +07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; +07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; +07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; +07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; +07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; +07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; +07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; +07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; +07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; +07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; +0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; +0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; +0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; +0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; +0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; +090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; +090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; +090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; +090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; +0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; +0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; +0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; +0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; +0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; +0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; +0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; +0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; +0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; +0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; +091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; +091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; +091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; +091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; +091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; +091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; +0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; +0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; +0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; +0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; +0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; +0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; +0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; +0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; +092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; +092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; +092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; +092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; +092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; +092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; +0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; +0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; +0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; +0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; +0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; +0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; +0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; +0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; +0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; +0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; +093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; +0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; +0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; +094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; +094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; +0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; +0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; +0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; +0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; +0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; +095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; +095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; +095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; +095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; +095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; +095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; +0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; +0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; +0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; +0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; +0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; +0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; +0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; +098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; +098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; +0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; +0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; +0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; +0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; +0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; +0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; +0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; +0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; +099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; +099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; +099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; +099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; +099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; +099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; +09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; +09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; +09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; +09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; +09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; +09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; +09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; +09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; +09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; +09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; +09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; +09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; +09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; +09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; +09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; +09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; +09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; +09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; +09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; +09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; +09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; +09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; +09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; +09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; +09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; +09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; +09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;; +09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;; +09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; +09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; +09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;; +09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;; +09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;; +09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;; +09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;; +09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; +09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; +0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; +0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; +0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; +0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; +0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; +0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; +0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; +0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; +0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; +0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; +0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; +0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; +0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; +0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; +0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; +0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; +0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; +0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; +0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; +0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; +0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; +0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; +0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; +0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; +0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; +0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; +0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; +0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; +0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; +0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; +0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; +0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; +0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; +0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; +0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; +0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; +0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; +0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; +0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; +0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; +0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; +0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; +0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; +0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; +0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; +0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; +0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; +0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; +0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; +0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; +0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; +0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; +0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; +0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; +0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; +0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; +0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; +0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; +0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; +0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; +0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; +0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; +0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; +0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; +0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; +0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; +0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; +0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; +0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; +0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; +0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; +0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; +0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; +0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; +0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; +0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; +0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; +0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; +0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; +0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; +0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; +0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; +0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; +0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; +0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; +0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; +0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; +0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; +0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; +0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; +0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; +0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; +0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; +0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; +0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; +0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; +0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; +0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; +0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; +0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; +0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; +0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; +0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; +0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; +0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; +0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; +0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; +0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; +0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; +0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; +0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; +0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; +0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; +0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; +0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; +0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; +0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; +0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; +0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; +0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; +0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; +0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; +0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; +0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; +0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; +0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; +0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; +0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; +0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; +0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; +0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; +0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; +0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; +0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; +0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; +0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; +0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; +0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; +0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; +0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; +0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; +0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; +0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; +0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; +0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; +0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; +0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; +0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; +0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; +0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; +0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; +0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; +0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; +0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; +0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; +0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; +0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; +0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; +0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; +0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; +0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; +0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; +0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; +0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; +0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; +0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; +0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; +0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; +0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; +0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; +0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; +0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; +0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; +0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; +0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; +0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; +0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; +0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; +0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; +0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; +0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; +0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; +0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; +0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; +0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; +0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; +0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; +0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; +0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; +0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; +0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; +0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; +0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; +0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; +0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; +0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; +0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; +0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; +0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; +0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; +0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; +0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; +0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; +0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; +0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; +0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; +0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; +0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; +0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; +0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; +0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; +0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; +0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; +0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; +0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; +0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; +0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; +0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; +0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; +0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; +0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; +0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; +0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; +0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; +0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; +0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; +0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; +0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; +0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; +0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; +0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; +0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; +0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; +0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; +0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; +0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; +0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; +0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; +0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; +0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; +0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; +0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; +0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; +0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; +0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; +0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; +0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; +0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; +0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; +0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; +0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; +0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; +0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; +0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; +0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; +0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; +0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; +0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; +0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; +0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; +0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; +0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; +0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; +0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; +0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; +0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; +0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; +0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; +0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; +0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; +0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; +0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; +0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; +0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; +0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; +0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; +0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; +0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; +0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; +0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; +0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; +0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; +0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; +0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; +0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; +0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; +0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; +0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; +0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; +0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; +0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; +0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; +0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; +0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; +0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; +0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; +0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; +0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; +0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; +0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; +0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; +0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; +0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; +0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; +0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; +0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; +0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; +0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; +0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; +0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; +0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; +0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; +0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; +0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; +0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; +0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; +0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; +0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; +0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; +0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; +0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; +0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; +0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; +0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; +0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; +0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; +0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; +0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; +0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; +0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; +0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; +0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; +0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; +0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; +0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; +0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; +0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; +0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; +0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; +0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; +0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; +0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; +0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; +0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; +0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; +0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; +0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; +0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; +0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; +0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; +0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; +0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; +0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; +0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; +0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; +0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; +0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; +0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; +0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; +0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; +0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; +0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; +0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; +0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; +0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; +0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; +0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; +0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; +0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; +0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; +0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; +0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; +0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; +0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; +0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; +0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; +0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; +0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; +0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; +0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; +0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; +0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; +0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; +0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; +0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; +0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; +0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; +0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; +0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; +0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; +0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; +0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; +0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; +0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; +0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; +0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; +0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; +0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; +0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; +0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; +0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; +0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; +0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; +0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; +0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; +0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; +0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; +0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; +0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; +0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; +0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; +0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; +0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; +0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; +0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; +0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; +0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; +0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; +0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; +0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; +0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; +0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; +0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; +0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; +0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; +0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; +0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; +0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; +0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; +0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; +0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; +0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; +0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; +0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; +0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; +0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; +0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; +0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; +0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; +0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; +0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; +0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; +0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; +0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; +0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; +0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; +0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; +0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; +0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; +0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; +0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; +0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; +0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; +0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; +0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; +0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; +0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; +0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; +0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; +0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; +0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; +0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;; +0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; +0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; +0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; +0E33;THAI CHARACTER SARA AM;Lo;0;L; 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; +0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; +0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; +0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; +0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;; +0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; +0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; +0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; +0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; +0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; +0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; +0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; +0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;; +0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;; +0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;; +0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;; +0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;; +0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; +0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; +0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; +0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; +0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; +0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;; +0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; +0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; +0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; +0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; +0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; +0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; +0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; +0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; +0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; +0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; +0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; +0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; +0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; +0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; +0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; +0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; +0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; +0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; +0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; +0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; +0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; +0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; +0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; +0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; +0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; +0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; +0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; +0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; +0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; +0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; +0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; +0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; +0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; +0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; +0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; +0EB3;LAO VOWEL SIGN AM;Lo;0;L; 0ECD 0EB2;;;;N;;;;; +0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; +0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; +0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; +0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; +0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; +0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; +0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; +0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; +0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; +0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; +0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; +0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; +0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; +0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; +0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; +0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; +0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; +0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; +0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; +0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0EDC;LAO HO NO;Lo;0;L; 0EAB 0E99;;;;N;;;;; +0EDD;LAO HO MO;Lo;0;L; 0EAB 0EA1;;;;N;;;;; +0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; +0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;; +0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;; +0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;; +0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;; +0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;; +0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;; +0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;; +0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;; +0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;; +0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;; +0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;; +0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L; 0F0B;;;;N;;tsek tar;;; +0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;; +0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;; +0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;; +0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;; +0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;; +0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;; +0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;; +0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;; +0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;; +0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;; +0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;; +0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;; +0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;; +0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;; +0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;; +0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;; +0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;; +0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;; +0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;; +0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; +0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; +0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; +0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; +0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; +0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; +0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; +0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; +0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; +0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; +0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;; +0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;; +0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;; +0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;; +0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;; +0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;; +0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;; +0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;; +0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;; +0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;; +0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;; +0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;; +0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; +0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; +0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; +0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; +0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; +0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; +0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; +0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; +0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; +0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; +0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; +0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; +0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; +0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; +0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; +0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; +0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; +0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; +0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; +0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; +0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; +0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; +0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; +0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; +0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; +0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; +0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; +0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; +0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; +0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; +0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; +0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; +0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; +0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;; +0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; +0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; +0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; +0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; +0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; +0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; +0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; +0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;; +0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; +0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; +0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; +0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; +0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; +0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; +0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM; 0FB2 0F81;;;;N;;;;; +0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; +0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM; 0FB3 0F81;;;;N;;;;; +0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; +0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; +0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; +0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; +0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;; +0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;; +0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; +0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; +0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;; +0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;; +0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; +0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; +0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;; +0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;; +0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;; +0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;; +0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;; +0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;; +0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; +0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; +0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; +0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; +0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; +0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; +0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; +0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; +0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; +0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; +0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; +0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; +0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; +0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; +0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; +0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; +0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; +0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; +0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; +0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; +0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; +0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; +0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; +0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; +0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; +0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; +0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; +0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; +0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;; +0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; +0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; +0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; +0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;; +0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;; +0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; +0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; +0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; +0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; +0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; +0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; +0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; +0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;; +0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;; +0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;; +0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;; +0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;; +0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; +0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; +0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;; +0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;; +0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;; +0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;; +0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;; +0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;; +0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;; +0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;; +0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;; +0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;; +0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;; +0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;; +1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; +1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; +1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; +1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; +1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; +1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; +1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; +1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; +1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; +1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; +100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; +100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; +100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; +100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; +100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; +100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; +1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; +1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; +1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; +1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; +1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; +1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; +1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; +1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; +1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; +1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; +101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; +101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; +101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; +101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; +101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; +101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; +1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; +1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; +1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; +1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; +1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; +1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; +1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; +1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; +102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; +102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; +1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; +1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; +104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; +104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; +104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; +104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; +104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; +1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; +1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; +1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;; +10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;; +10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;; +10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;; +10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;; +10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;; +10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;; +10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;; +10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;; +10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;; +10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;; +10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;; +10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;; +10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;; +10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;; +10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;; +10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;; +10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;; +10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;; +10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;; +10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;; +10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;; +10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;; +10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;; +10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;; +10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;; +10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;; +10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;; +10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;; +10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;; +10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;; +10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;; +10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;; +10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; +10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; +10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; +10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; +10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; +10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; +10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; +10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; +10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; +10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; +10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; +10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; +10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; +10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; +10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; +10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; +10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; +10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; +10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; +10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; +10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; +10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; +10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; +10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; +10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; +10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; +10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; +10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; +10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; +10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; +10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; +10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; +10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; +10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; +10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; +10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; +10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; +10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; +10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; +10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; +10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; +10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; +1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; +1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; +1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; +1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; +1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;; +1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;; +1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; +1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; +1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;; +1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;; +110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; +110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; +110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; +110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;; +110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; +110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; +1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; +1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; +1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; +1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; +1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; +1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; +1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; +1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; +1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; +1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; +111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; +111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; +111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; +111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; +111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; +111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; +1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; +1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; +1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; +1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; +1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; +1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; +1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; +112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; +112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; +112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; +112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; +1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; +1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; +1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; +1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; +1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; +1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; +1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; +1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; +113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; +113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; +113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; +113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; +113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; +113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; +1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; +1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; +1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; +1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; +1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; +1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; +1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; +1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; +1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; +1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; +114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; +114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; +114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; +114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; +114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; +114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; +1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; +1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; +1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; +1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; +1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; +1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; +1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; +1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; +1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; +1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; +115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; +1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; +1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; +1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; +1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; +1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; +1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; +1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; +1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; +1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; +1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; +116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; +116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; +116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; +116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; +116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; +116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; +1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; +1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; +1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; +1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; +1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; +1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; +1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; +1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; +1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; +1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; +117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; +117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; +117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; +117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; +117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; +117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; +1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; +1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; +1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; +1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; +1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; +1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; +1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; +1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; +1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; +1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; +118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; +118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; +118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; +118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; +118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; +118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; +1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; +1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; +1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; +1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; +1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; +1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; +1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; +1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; +1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; +1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; +119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; +119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; +119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; +119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; +119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; +119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; +11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; +11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; +11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; +11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; +11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; +11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;; +11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; +11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;; +11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;; +11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; +11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;; +11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;; +11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;; +11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;; +11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;; +11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;; +11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;; +11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;; +11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; +11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; +11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;; +11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;; +11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; +11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;; +11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; +11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; +11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; +11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; +11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; +11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; +11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; +11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; +11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; +11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; +11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; +11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; +11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; +11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; +11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; +11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; +11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; +11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; +11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; +11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; +11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; +11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; +11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; +11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; +11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; +11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; +11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; +11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; +11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; +11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; +11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; +11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; +11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; +11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; +11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; +11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; +11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; +11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; +11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; +11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; +11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; +11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; +11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; +11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; +11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; +11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; +11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; +11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; +11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; +11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; +11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; +11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; +11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; +11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; +11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; +1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; +1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; +1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; +1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; +1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; +1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; +1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; +1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; +1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; +120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; +120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; +120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; +120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; +120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; +120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; +1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; +1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; +1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; +1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; +1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; +1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; +1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; +1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; +1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; +1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; +121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; +121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; +121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; +121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; +121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; +121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; +1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; +1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; +1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; +1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; +1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; +1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; +1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; +1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; +1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; +1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; +122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; +122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; +122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; +122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; +122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; +122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; +1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; +1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; +1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; +1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; +1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; +1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; +1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; +1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; +1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; +123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; +123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; +123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; +1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; +1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; +1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; +1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; +1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; +1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; +1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; +1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; +124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; +124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; +124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; +124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; +1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; +1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; +1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; +1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; +1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; +1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; +1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; +1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; +125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; +125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; +125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; +125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; +1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; +1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; +1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; +1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; +1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; +1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; +1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; +1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; +1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; +1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; +126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; +126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; +126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; +126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; +126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; +126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; +1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; +1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; +1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; +1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; +1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; +1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; +1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; +1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; +1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; +1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; +127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; +127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; +127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; +127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; +127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; +127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; +1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; +1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; +1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; +1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; +1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; +1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; +1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; +1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; +128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; +128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; +128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; +128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; +1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; +1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; +1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; +1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; +1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; +1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; +1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; +1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; +1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; +1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; +129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; +129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; +129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; +12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; +12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; +12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; +12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; +12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; +12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; +12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; +12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; +12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; +12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; +12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; +12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; +12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; +12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; +12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; +12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; +12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; +12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; +12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; +12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; +12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; +12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; +12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; +12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; +12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; +12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; +12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; +12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; +12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; +12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; +12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; +12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; +12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; +12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; +12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; +12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; +12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; +12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; +12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; +12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; +12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; +12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; +12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; +12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; +12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; +12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; +12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; +12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; +12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; +12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; +12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; +12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; +12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; +12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; +12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; +12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; +12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; +12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; +12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; +12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; +12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; +12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; +12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; +12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; +12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; +12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; +12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; +12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; +12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; +12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; +12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; +12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; +12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; +12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; +12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; +12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; +1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; +1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; +1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; +1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; +1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; +1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; +1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; +1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; +1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; +1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; +130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; +130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; +130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; +130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; +130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; +1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; +1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; +1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; +1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; +1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; +1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; +1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; +131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; +131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; +131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; +131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; +131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; +1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; +1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; +1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; +1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; +1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; +1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; +1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; +1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; +1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; +1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; +132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; +132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; +132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; +132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; +132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; +132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; +1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; +1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; +1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; +1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; +1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; +1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; +1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; +1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; +1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; +1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; +133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; +133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; +133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; +133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; +133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; +133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; +1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; +1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; +1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; +1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; +1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; +1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; +1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; +1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; +1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; +134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; +134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; +134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; +134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; +134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; +134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; +1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; +1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; +1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; +1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; +1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; +1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; +1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; +1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; +1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; +1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; +135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; +1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; +1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; +1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; +1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; +1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; +1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; +1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; +1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; +1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; +1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; +1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; +1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; +1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; +1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; +1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; +1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; +137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; +137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; +137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; +13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; +13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; +13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; +13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; +13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; +13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; +13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; +13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; +13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; +13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; +13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; +13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; +13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; +13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; +13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; +13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; +13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; +13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; +13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; +13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; +13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; +13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; +13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; +13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; +13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; +13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; +13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; +13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; +13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; +13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; +13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; +13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; +13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; +13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; +13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; +13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; +13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; +13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; +13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; +13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; +13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; +13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; +13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; +13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; +13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; +13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; +13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; +13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; +13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; +13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; +13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; +13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; +13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; +13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; +13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; +13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; +13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; +13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; +13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; +13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; +13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; +13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; +13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; +13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; +13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; +13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; +13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; +13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; +13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; +13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; +13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; +13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; +13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; +13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; +13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; +13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; +13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; +13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; +13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; +13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; +13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; +13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; +13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; +13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; +13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; +1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; +1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; +1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; +1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; +1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; +1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; +1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; +1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; +1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; +140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; +140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; +140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; +140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; +140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; +140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; +1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; +1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; +1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; +1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; +1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; +1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; +1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; +1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; +1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; +1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; +141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; +141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; +141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; +141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; +141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; +141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; +1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; +1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; +1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; +1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; +1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; +1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; +1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; +1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; +1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; +1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; +142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; +142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; +142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; +142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; +142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; +142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; +1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; +1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; +1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; +1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; +1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; +1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; +1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; +1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; +1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; +1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; +143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; +143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; +143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; +143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; +143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; +143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; +1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; +1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; +1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; +1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; +1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; +1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; +1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; +1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; +1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; +1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; +144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; +144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; +144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; +144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; +144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; +144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; +1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; +1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; +1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; +1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; +1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; +1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; +1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; +1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; +1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; +1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; +145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; +145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; +145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; +145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; +145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; +145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; +1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; +1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; +1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; +1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; +1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; +1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; +1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; +1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; +1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; +1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; +146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; +146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; +146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; +146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; +146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; +146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; +1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; +1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; +1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; +1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; +1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; +1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; +1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; +1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; +1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; +1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; +147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; +147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; +147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; +147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; +147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; +147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; +1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; +1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; +1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; +1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; +1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; +1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; +1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; +1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; +1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; +1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; +148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; +148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; +148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; +148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; +148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; +148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; +1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; +1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; +1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; +1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; +1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; +1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; +1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; +1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; +1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; +1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; +149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; +149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; +149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; +149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; +149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; +149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; +14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; +14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; +14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; +14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; +14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; +14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; +14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; +14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; +14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; +14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; +14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; +14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; +14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; +14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; +14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; +14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; +14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; +14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; +14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; +14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; +14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; +14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; +14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; +14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; +14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; +14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; +14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; +14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; +14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; +14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; +14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; +14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; +14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; +14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; +14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; +14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; +14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; +14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; +14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; +14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; +14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; +14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; +14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; +14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; +14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; +14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; +14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; +14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; +14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; +14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; +14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; +14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; +14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; +14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; +14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; +14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; +14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; +14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; +14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; +14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; +14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; +14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; +14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; +14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; +14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; +14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; +14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; +14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; +14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; +14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; +14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; +14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; +14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; +14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; +14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; +14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; +14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; +14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; +14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; +14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; +14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; +14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; +14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; +14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; +14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; +14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; +14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; +14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; +14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; +14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; +14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; +14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; +14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; +14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; +14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; +14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; +1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; +1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; +1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; +1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; +1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; +1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; +1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; +1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; +1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; +1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; +150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; +150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; +150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; +150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; +150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; +150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; +1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; +1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; +1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; +1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; +1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; +1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; +1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; +1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; +1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; +1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; +151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; +151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; +151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; +151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; +151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; +151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; +1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; +1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; +1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; +1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; +1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; +1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; +1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; +1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; +1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; +1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; +152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; +152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; +152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; +152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; +152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; +152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; +1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; +1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; +1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; +1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; +1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; +1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; +1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; +1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; +1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; +1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; +153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; +153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; +153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; +153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; +153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; +153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; +1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; +1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; +1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; +1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; +1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; +1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; +1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; +1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; +1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; +1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; +154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; +154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; +154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; +154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; +154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; +154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; +1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; +1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; +1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; +1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; +1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; +1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; +1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; +1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; +1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; +1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; +155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; +155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; +155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; +155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; +155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; +155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; +1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; +1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; +1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; +1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; +1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; +1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; +1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; +1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; +1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; +1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; +156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; +156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; +156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; +156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; +156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; +156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; +1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; +1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; +1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; +1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; +1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; +1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; +1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; +1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; +1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; +1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; +157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; +157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; +157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; +157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; +157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; +157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; +1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; +1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; +1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; +1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; +1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; +1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; +1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; +1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; +1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; +1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; +158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; +158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; +158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; +158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; +158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; +158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; +1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; +1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; +1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; +1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; +1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; +1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; +1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; +1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; +1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; +1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; +159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; +159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; +159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; +159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; +159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; +159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; +15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; +15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; +15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; +15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; +15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; +15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; +15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; +15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; +15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; +15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; +15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; +15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; +15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; +15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; +15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; +15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; +15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; +15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; +15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; +15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; +15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; +15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; +15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; +15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; +15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; +15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; +15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; +15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; +15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; +15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; +15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; +15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; +15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; +15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; +15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; +15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; +15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; +15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; +15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; +15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; +15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; +15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; +15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; +15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; +15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; +15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; +15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; +15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; +15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; +15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; +15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; +15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; +15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; +15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; +15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; +15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; +15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; +15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; +15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; +15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; +15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; +15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; +15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; +15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; +15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; +15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; +15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; +15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; +15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; +15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; +15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; +15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; +15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; +15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; +15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; +15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; +15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; +15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; +15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; +15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; +15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; +15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; +15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; +15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; +15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; +15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; +15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; +15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; +15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; +15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; +15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; +15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; +15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; +15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; +15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; +15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; +1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; +1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; +1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; +1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; +1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; +1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; +1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; +1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; +1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; +1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; +160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; +160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; +160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; +160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; +160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; +160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; +1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; +1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; +1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; +1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; +1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; +1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; +1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; +1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; +1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; +1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; +161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; +161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; +161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; +161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; +161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; +161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; +1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; +1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; +1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; +1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; +1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; +1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; +1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; +1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; +1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; +1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; +162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; +162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; +162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; +162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; +162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; +162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; +1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; +1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; +1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; +1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; +1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; +1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; +1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; +1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; +1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; +1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; +163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; +163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; +163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; +163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; +163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; +163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; +1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; +1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; +1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; +1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; +1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; +1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; +1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; +1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; +1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; +1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; +164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; +164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; +164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; +164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; +164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; +164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; +1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; +1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; +1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; +1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; +1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; +1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; +1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; +1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; +1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; +1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; +165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; +165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; +165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; +165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; +165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; +165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; +1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; +1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; +1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; +1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; +1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; +1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; +1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; +1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; +1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; +1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; +166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; +166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; +166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; +166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; +166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; +166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; +1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; +1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; +1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; +1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; +1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; +1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; +1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; +1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; +1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; +1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; +1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; +1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; +1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; +1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; +1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; +1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; +1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; +168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; +168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; +168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; +168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; +168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; +168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; +1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; +1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; +1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; +1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; +1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; +1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; +1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; +1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; +1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; +1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; +169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; +169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;; +169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;; +16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; +16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; +16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; +16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; +16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; +16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; +16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; +16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; +16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; +16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; +16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; +16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; +16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; +16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; +16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; +16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; +16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; +16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; +16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; +16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; +16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; +16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; +16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; +16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; +16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; +16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; +16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; +16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; +16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; +16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; +16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; +16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; +16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; +16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; +16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; +16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; +16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; +16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; +16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; +16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; +16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; +16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; +16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; +16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; +16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; +16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; +16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; +16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; +16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; +16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; +16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; +16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; +16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; +16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; +16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; +16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; +16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; +16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; +16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; +16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; +16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; +16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; +16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; +16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; +16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; +16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; +16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; +16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; +16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; +16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; +16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; +16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; +16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; +16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; +16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; +16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; +16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; +16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; +16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;; +16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;; +16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;; +1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; +1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; +1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; +1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; +1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; +1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; +1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; +1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; +1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; +1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; +170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; +170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; +170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; +170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; +170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; +1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; +1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; +1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; +1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; +1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; +1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; +1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; +1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; +1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; +1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; +1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; +1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; +172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; +172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; +172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; +172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; +172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; +172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; +1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; +1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; +1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; +1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; +1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; +1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; +1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; +1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; +1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; +1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; +1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; +1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; +1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; +174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; +174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; +174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; +174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; +174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; +174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; +1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; +1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; +1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; +1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; +1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; +1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; +1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; +1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; +1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; +1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; +1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; +1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; +176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; +176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; +176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; +176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; +176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; +1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; +1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; +1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; +1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; +1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; +1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; +1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; +1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; +1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; +1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; +1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; +178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; +178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; +178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; +178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; +178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; +178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; +1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; +1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; +1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; +1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; +1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; +1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; +1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; +1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; +1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; +1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; +179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; +179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; +179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; +179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; +179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; +179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; +17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; +17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; +17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; +17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;; +17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;; +17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; +17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; +17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; +17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; +17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; +17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; +17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; +17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; +17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; +17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; +17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; +17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; +17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; +17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; +17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; +17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;; +17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;; +17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; +17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; +17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; +17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; +17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; +17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; +17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; +17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; +17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; +17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; +17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; +17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; +17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; +17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; +17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; +17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; +17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; +17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; +17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; +17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;; +17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; +17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; +17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; +17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; +17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;; +17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; +17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; +17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; +17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; +17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; +1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; +1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; +1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; +1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; +1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; +1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; +1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; +1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; +1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; +180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; +180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; +180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; +180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; +180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;; +1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; +1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; +1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; +1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; +1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; +1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; +1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; +1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; +1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; +1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; +182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; +182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; +182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; +182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; +182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; +182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; +1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; +1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; +1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; +1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; +1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; +1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; +1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; +1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; +1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; +1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; +183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; +183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; +183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; +183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; +183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; +183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; +1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; +1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; +1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; +1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; +1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; +1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; +1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; +1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; +1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; +1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; +184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; +184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; +184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; +184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; +184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; +184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; +1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; +1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; +1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; +1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; +1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; +1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; +1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; +1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; +1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; +1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; +185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; +185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; +185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; +185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; +185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; +185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; +1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; +1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; +1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; +1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; +1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; +1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; +1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; +1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; +1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; +1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; +186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; +186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; +186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; +186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; +186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; +186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; +1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; +1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; +1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; +1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; +1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; +1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; +1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; +1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; +1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; +1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; +1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; +1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; +1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; +1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; +1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; +1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; +1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; +1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; +188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; +188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; +188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; +188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; +188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; +188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; +1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; +1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; +1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; +1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; +1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; +1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; +1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; +1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; +1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; +189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; +189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; +189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; +189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; +189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; +18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; +18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; +18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; +18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; +18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; +18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; +18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; +18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; +18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; +1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; +1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 +1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; +1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 +1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; +1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 +1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; +1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 +1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; +1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 +1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; +1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A +1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; +1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C +1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; +1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E +1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; +1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 +1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; +1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 +1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; +1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 +1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; +1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 +1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; +1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 +1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; +1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A +1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; +1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C +1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; +1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E +1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; +1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 +1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; +1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 +1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; +1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 +1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; +1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 +1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; +1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 +1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; +1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A +1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; +1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C +1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; +1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E +1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; +1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 +1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; +1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 +1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; +1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 +1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; +1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 +1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; +1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 +1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; +1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A +1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; +1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C +1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; +1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E +1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; +1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 +1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; +1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 +1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; +1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 +1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; +1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 +1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; +1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 +1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; +1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A +1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; +1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C +1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; +1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E +1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; +1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 +1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; +1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 +1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; +1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 +1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; +1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 +1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; +1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 +1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; +1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A +1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; +1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C +1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; +1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E +1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; +1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 +1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; +1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 +1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; +1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 +1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; +1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 +1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; +1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 +1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; +1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A +1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; +1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C +1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; +1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E +1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; +1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 +1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; +1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 +1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; +1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 +1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; +1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 +1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; +1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 +1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; +1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A +1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; +1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C +1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; +1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E +1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; +1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 +1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; +1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 +1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; +1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 +1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; +1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 +1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; +1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 +1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; +1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A +1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; +1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C +1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; +1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E +1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; +1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 +1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; +1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 +1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; +1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 +1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; +1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; +1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; +1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; +1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L; 0061 02BE;;;;N;;;;; +1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 +1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; +1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 +1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; +1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 +1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; +1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 +1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; +1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 +1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; +1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 +1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; +1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA +1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; +1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC +1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; +1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE +1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; +1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 +1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; +1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 +1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; +1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 +1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; +1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 +1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; +1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 +1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; +1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA +1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; +1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC +1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; +1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE +1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; +1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 +1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; +1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 +1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; +1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 +1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; +1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 +1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; +1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 +1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; +1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA +1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; +1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC +1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; +1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE +1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; +1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 +1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; +1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 +1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; +1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 +1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; +1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 +1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; +1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 +1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; +1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA +1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; +1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC +1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; +1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE +1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; +1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 +1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; +1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 +1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; +1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 +1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; +1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 +1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; +1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 +1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; +1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA +1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; +1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC +1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; +1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE +1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; +1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 +1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; +1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 +1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; +1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 +1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; +1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 +1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; +1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 +1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 +1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 +1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A +1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B +1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C +1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D +1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E +1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F +1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; +1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; +1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; +1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; +1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; +1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; +1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; +1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; +1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 +1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 +1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A +1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B +1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C +1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D +1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; +1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; +1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; +1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; +1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; +1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; +1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 +1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 +1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A +1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B +1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C +1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D +1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E +1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F +1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; +1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; +1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; +1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; +1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; +1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; +1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; +1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; +1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 +1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 +1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A +1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B +1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C +1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D +1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E +1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F +1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; +1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; +1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; +1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; +1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; +1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; +1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; +1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; +1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 +1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 +1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A +1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B +1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C +1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D +1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; +1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; +1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; +1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; +1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; +1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; +1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; +1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 +1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; +1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B +1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; +1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D +1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; +1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F +1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; +1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; +1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; +1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; +1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 +1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 +1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A +1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B +1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C +1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D +1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E +1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F +1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; +1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; +1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; +1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; +1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; +1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; +1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; +1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; +1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA +1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB +1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 +1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 +1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA +1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB +1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA +1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB +1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 +1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 +1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA +1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB +1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA +1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB +1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 +1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 +1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A +1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B +1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C +1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D +1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E +1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F +1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; +1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; +1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; +1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; +1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; +1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; +1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; +1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; +1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 +1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 +1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A +1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B +1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C +1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D +1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E +1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F +1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; +1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; +1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; +1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; +1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; +1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; +1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; +1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; +1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 +1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 +1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA +1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB +1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC +1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD +1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE +1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF +1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; +1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; +1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; +1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; +1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; +1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; +1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; +1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; +1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 +1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 +1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; +1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC +1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; +1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; +1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; +1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; +1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; +1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; +1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; +1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; +1FBD;GREEK KORONIS;Sk;0;ON; 0020 0313;;;;N;;;;; +1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 +1FBF;GREEK PSILI;Sk;0;ON; 0020 0313;;;;N;;;;; +1FC0;GREEK PERISPOMENI;Sk;0;ON; 0020 0342;;;;N;;;;; +1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; +1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; +1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC +1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; +1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; +1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; +1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; +1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; +1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; +1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; +1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; +1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; +1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; +1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; +1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 +1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 +1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; +1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; +1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; +1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; +1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; +1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; +1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; +1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; +1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; +1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; +1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; +1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 +1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 +1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; +1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; +1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; +1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC +1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; +1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; +1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; +1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; +1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; +1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; +1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; +1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; +1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; +1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; +1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; +1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC +1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; +1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; +1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; +1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; +1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; +1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; +1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; +1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; +1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; +1FFE;GREEK DASIA;Sk;0;ON; 0020 0314;;;;N;;;;; +2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; +2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; +2002;EN SPACE;Zs;0;WS; 0020;;;;N;;;;; +2003;EM SPACE;Zs;0;WS; 0020;;;;N;;;;; +2004;THREE-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; +2005;FOUR-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; +2006;SIX-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; +2007;FIGURE SPACE;Zs;0;WS; 0020;;;;N;;;;; +2008;PUNCTUATION SPACE;Zs;0;WS; 0020;;;;N;;;;; +2009;THIN SPACE;Zs;0;WS; 0020;;;;N;;;;; +200A;HAIR SPACE;Zs;0;WS; 0020;;;;N;;;;; +200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;; +200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; +200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; +200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; +200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; +2010;HYPHEN;Pd;0;ON;;;;;N;;;;; +2011;NON-BREAKING HYPHEN;Pd;0;ON; 2010;;;;N;;;;; +2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; +2013;EN DASH;Pd;0;ON;;;;;N;;;;; +2014;EM DASH;Pd;0;ON;;;;;N;;;;; +2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; +2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; +2017;DOUBLE LOW LINE;Po;0;ON; 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; +2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;; +2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;; +201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;; +201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;; +201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;; +201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;; +201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;; +201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;; +2020;DAGGER;Po;0;ON;;;;;N;;;;; +2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; +2022;BULLET;Po;0;ON;;;;;N;;;;; +2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; +2024;ONE DOT LEADER;Po;0;ON; 002E;;;;N;;;;; +2025;TWO DOT LEADER;Po;0;ON; 002E 002E;;;;N;;;;; +2026;HORIZONTAL ELLIPSIS;Po;0;ON; 002E 002E 002E;;;;N;;;;; +2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; +2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; +2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; +202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; +202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; +202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; +202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; +202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; +202F;NARROW NO-BREAK SPACE;Zs;0;WS; 0020;;;;N;;;;; +2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; +2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; +2032;PRIME;Po;0;ET;;;;;N;;;;; +2033;DOUBLE PRIME;Po;0;ET; 2032 2032;;;;N;;;;; +2034;TRIPLE PRIME;Po;0;ET; 2032 2032 2032;;;;N;;;;; +2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; +2036;REVERSED DOUBLE PRIME;Po;0;ON; 2035 2035;;;;N;;;;; +2037;REVERSED TRIPLE PRIME;Po;0;ON; 2035 2035 2035;;;;N;;;;; +2038;CARET;Po;0;ON;;;;;N;;;;; +2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; +203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; +203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; +203C;DOUBLE EXCLAMATION MARK;Po;0;ON; 0021 0021;;;;N;;;;; +203D;INTERROBANG;Po;0;ON;;;;;N;;;;; +203E;OVERLINE;Po;0;ON; 0020 0305;;;;N;SPACING OVERSCORE;;;; +203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;; +2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; +2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; +2042;ASTERISM;Po;0;ON;;;;;N;;;;; +2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; +2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;; +2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; +2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; +2047;DOUBLE QUESTION MARK;Po;0;ON; 003F 003F;;;;N;;;;; +2048;QUESTION EXCLAMATION MARK;Po;0;ON; 003F 0021;;;;N;;;;; +2049;EXCLAMATION QUESTION MARK;Po;0;ON; 0021 003F;;;;N;;;;; +204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; +204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; +204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; +204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; +204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; +204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; +2050;CLOSE UP;Po;0;ON;;;;;N;;;;; +2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; +2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2057;QUADRUPLE PRIME;Po;0;ON; 2032 2032 2032 2032;;;;N;;;;; +205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS; 0020;;;;N;;;;; +2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; +2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; +2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; +2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; +206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; +206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; +206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; +206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; +206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; +206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; +2070;SUPERSCRIPT ZERO;No;0;EN; 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; +2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;;; +2074;SUPERSCRIPT FOUR;No;0;EN; 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; +2075;SUPERSCRIPT FIVE;No;0;EN; 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; +2076;SUPERSCRIPT SIX;No;0;EN; 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;; +2077;SUPERSCRIPT SEVEN;No;0;EN; 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; +2078;SUPERSCRIPT EIGHT;No;0;EN; 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; +2079;SUPERSCRIPT NINE;No;0;EN; 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;; +207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET; 002B;;;;N;;;;; +207B;SUPERSCRIPT MINUS;Sm;0;ET; 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; +207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; +207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; +207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; +207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;;; +2080;SUBSCRIPT ZERO;No;0;EN; 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;; +2081;SUBSCRIPT ONE;No;0;EN; 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;; +2082;SUBSCRIPT TWO;No;0;EN; 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;; +2083;SUBSCRIPT THREE;No;0;EN; 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;; +2084;SUBSCRIPT FOUR;No;0;EN; 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;; +2085;SUBSCRIPT FIVE;No;0;EN; 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;; +2086;SUBSCRIPT SIX;No;0;EN; 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;; +2087;SUBSCRIPT SEVEN;No;0;EN; 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; +2088;SUBSCRIPT EIGHT;No;0;EN; 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; +2089;SUBSCRIPT NINE;No;0;EN; 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;; +208A;SUBSCRIPT PLUS SIGN;Sm;0;ET; 002B;;;;N;;;;; +208B;SUBSCRIPT MINUS;Sm;0;ET; 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; +208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; +208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; +208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; +20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; +20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; +20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; +20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; +20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; +20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; +20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; +20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; +20A8;RUPEE SIGN;Sc;0;ET; 0052 0073;;;;N;;;;; +20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; +20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; +20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; +20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; +20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; +20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; +20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; +20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; +20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; +20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; +20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; +20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; +20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; +20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; +20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; +20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; +20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; +20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; +20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; +20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; +20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; +20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; +20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; +20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; +20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; +20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; +20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; +20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; +20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; +20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; +20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; +20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; +20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; +20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; +2100;ACCOUNT OF;So;0;ON; 0061 002F 0063;;;;N;;;;; +2101;ADDRESSED TO THE SUBJECT;So;0;ON; 0061 002F 0073;;;;N;;;;; +2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L; 0043;;;;N;DOUBLE-STRUCK C;;;; +2103;DEGREE CELSIUS;So;0;ON; 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; +2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; +2105;CARE OF;So;0;ON; 0063 002F 006F;;;;N;;;;; +2106;CADA UNA;So;0;ON; 0063 002F 0075;;;;N;;;;; +2107;EULER CONSTANT;Lu;0;L; 0190;;;;N;EULERS;;;; +2108;SCRUPLE;So;0;ON;;;;;N;;;;; +2109;DEGREE FAHRENHEIT;So;0;ON; 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; +210A;SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; +210B;SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;SCRIPT H;;;; +210C;BLACK-LETTER CAPITAL H;Lu;0;L; 0048;;;;N;BLACK-LETTER H;;;; +210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L; 0048;;;;N;DOUBLE-STRUCK H;;;; +210E;PLANCK CONSTANT;Ll;0;L; 0068;;;;N;;;;; +210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L; 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; +2110;SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;SCRIPT I;;;; +2111;BLACK-LETTER CAPITAL I;Lu;0;L; 0049;;;;N;BLACK-LETTER I;;;; +2112;SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;SCRIPT L;;;; +2113;SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; +2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; +2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L; 004E;;;;N;DOUBLE-STRUCK N;;;; +2116;NUMERO SIGN;So;0;ON; 004E 006F;;;;N;NUMERO;;;; +2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; +2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;; +2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L; 0050;;;;N;DOUBLE-STRUCK P;;;; +211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L; 0051;;;;N;DOUBLE-STRUCK Q;;;; +211B;SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;SCRIPT R;;;; +211C;BLACK-LETTER CAPITAL R;Lu;0;L; 0052;;;;N;BLACK-LETTER R;;;; +211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L; 0052;;;;N;DOUBLE-STRUCK R;;;; +211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; +211F;RESPONSE;So;0;ON;;;;;N;;;;; +2120;SERVICE MARK;So;0;ON; 0053 004D;;;;N;;;;; +2121;TELEPHONE SIGN;So;0;ON; 0054 0045 004C;;;;N;T E L SYMBOL;;;; +2122;TRADE MARK SIGN;So;0;ON; 0054 004D;;;;N;TRADEMARK;;;; +2123;VERSICLE;So;0;ON;;;;;N;;;;; +2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L; 005A;;;;N;DOUBLE-STRUCK Z;;;; +2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; +2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; +2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; +2128;BLACK-LETTER CAPITAL Z;Lu;0;L; 005A;;;;N;BLACK-LETTER Z;;;; +2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; +212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; +212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; +212C;SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;SCRIPT B;;;; +212D;BLACK-LETTER CAPITAL C;Lu;0;L; 0043;;;;N;BLACK-LETTER C;;;; +212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; +212F;SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; +2130;SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;SCRIPT E;;;; +2131;SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;SCRIPT F;;;; +2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;; +2133;SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;SCRIPT M;;;; +2134;SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; +2135;ALEF SYMBOL;Lo;0;L; 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; +2136;BET SYMBOL;Lo;0;L; 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; +2137;GIMEL SYMBOL;Lo;0;L; 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; +2138;DALET SYMBOL;Lo;0;L; 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; +2139;INFORMATION SOURCE;Ll;0;L; 0069;;;;N;;;;; +213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; +213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON; 2211;;;;Y;;;;; +2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; +2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; +2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; +214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; +2153;VULGAR FRACTION ONE THIRD;No;0;ON; 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; +2154;VULGAR FRACTION TWO THIRDS;No;0;ON; 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; +2155;VULGAR FRACTION ONE FIFTH;No;0;ON; 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; +2156;VULGAR FRACTION TWO FIFTHS;No;0;ON; 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; +2157;VULGAR FRACTION THREE FIFTHS;No;0;ON; 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; +2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON; 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; +2159;VULGAR FRACTION ONE SIXTH;No;0;ON; 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; +215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON; 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; +215B;VULGAR FRACTION ONE EIGHTH;No;0;ON; 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; +215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON; 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; +215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON; 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; +215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON; 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; +215F;FRACTION NUMERATOR ONE;No;0;ON; 0031 2044;;;1;N;;;;; +2160;ROMAN NUMERAL ONE;Nl;0;L; 0049;;;1;N;;;;2170; +2161;ROMAN NUMERAL TWO;Nl;0;L; 0049 0049;;;2;N;;;;2171; +2162;ROMAN NUMERAL THREE;Nl;0;L; 0049 0049 0049;;;3;N;;;;2172; +2163;ROMAN NUMERAL FOUR;Nl;0;L; 0049 0056;;;4;N;;;;2173; +2164;ROMAN NUMERAL FIVE;Nl;0;L; 0056;;;5;N;;;;2174; +2165;ROMAN NUMERAL SIX;Nl;0;L; 0056 0049;;;6;N;;;;2175; +2166;ROMAN NUMERAL SEVEN;Nl;0;L; 0056 0049 0049;;;7;N;;;;2176; +2167;ROMAN NUMERAL EIGHT;Nl;0;L; 0056 0049 0049 0049;;;8;N;;;;2177; +2168;ROMAN NUMERAL NINE;Nl;0;L; 0049 0058;;;9;N;;;;2178; +2169;ROMAN NUMERAL TEN;Nl;0;L; 0058;;;10;N;;;;2179; +216A;ROMAN NUMERAL ELEVEN;Nl;0;L; 0058 0049;;;11;N;;;;217A; +216B;ROMAN NUMERAL TWELVE;Nl;0;L; 0058 0049 0049;;;12;N;;;;217B; +216C;ROMAN NUMERAL FIFTY;Nl;0;L; 004C;;;50;N;;;;217C; +216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0043;;;100;N;;;;217D; +216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0044;;;500;N;;;;217E; +216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 004D;;;1000;N;;;;217F; +2170;SMALL ROMAN NUMERAL ONE;Nl;0;L; 0069;;;1;N;;;2160;;2160 +2171;SMALL ROMAN NUMERAL TWO;Nl;0;L; 0069 0069;;;2;N;;;2161;;2161 +2172;SMALL ROMAN NUMERAL THREE;Nl;0;L; 0069 0069 0069;;;3;N;;;2162;;2162 +2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L; 0069 0076;;;4;N;;;2163;;2163 +2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L; 0076;;;5;N;;;2164;;2164 +2175;SMALL ROMAN NUMERAL SIX;Nl;0;L; 0076 0069;;;6;N;;;2165;;2165 +2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L; 0076 0069 0069;;;7;N;;;2166;;2166 +2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L; 0076 0069 0069 0069;;;8;N;;;2167;;2167 +2178;SMALL ROMAN NUMERAL NINE;Nl;0;L; 0069 0078;;;9;N;;;2168;;2168 +2179;SMALL ROMAN NUMERAL TEN;Nl;0;L; 0078;;;10;N;;;2169;;2169 +217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L; 0078 0069;;;11;N;;;216A;;216A +217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L; 0078 0069 0069;;;12;N;;;216B;;216B +217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L; 006C;;;50;N;;;216C;;216C +217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0063;;;100;N;;;216D;;216D +217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0064;;;500;N;;;216E;;216E +217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 006D;;;1000;N;;;216F;;216F +2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; +2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; +2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; +2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;; +2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; +2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; +2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; +2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; +2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; +2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; +2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; +2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; +2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; +2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; +219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; +219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; +219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; +219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; +219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; +219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; +21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; +21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; +21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; +21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; +21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; +21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; +21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; +21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; +21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; +21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; +21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; +21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; +21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; +21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; +21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; +21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; +21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; +21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; +21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; +21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; +21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; +21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; +21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; +21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; +21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; +21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; +21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; +21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; +21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; +21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; +21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; +21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; +21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; +21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; +21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; +21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; +21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; +21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; +21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; +21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; +21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; +21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; +21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; +21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; +21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; +21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; +21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; +21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; +21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; +21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; +21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; +21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; +21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; +21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; +21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; +21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; +21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; +21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; +21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; +21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; +21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; +21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; +21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; +21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; +21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; +21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; +21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; +21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; +21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; +21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; +21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; +21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; +21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; +21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; +21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; +21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; +21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; +21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; +21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; +21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; +21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; +21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; +21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; +21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; +21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; +21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +2200;FOR ALL;Sm;0;ON;;;;;N;;;;; +2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; +2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; +2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; +2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; +2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; +2206;INCREMENT;Sm;0;ON;;;;;N;;;;; +2207;NABLA;Sm;0;ON;;;;;N;;;;; +2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; +2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; +220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; +220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; +220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; +220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; +220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; +220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; +2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; +2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; +2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;; +2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; +2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; +2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; +2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; +2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; +2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; +2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; +221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; +221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; +221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; +221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; +221E;INFINITY;Sm;0;ON;;;;;N;;;;; +221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; +2220;ANGLE;Sm;0;ON;;;;;Y;;;;; +2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; +2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; +2223;DIVIDES;Sm;0;ON;;;;;N;;;;; +2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; +2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; +2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; +2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; +222A;UNION;Sm;0;ON;;;;;N;;;;; +222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; +222C;DOUBLE INTEGRAL;Sm;0;ON; 222B 222B;;;;Y;;;;; +222D;TRIPLE INTEGRAL;Sm;0;ON; 222B 222B 222B;;;;Y;;;;; +222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +222F;SURFACE INTEGRAL;Sm;0;ON; 222E 222E;;;;Y;;;;; +2230;VOLUME INTEGRAL;Sm;0;ON; 222E 222E 222E;;;;Y;;;;; +2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2234;THEREFORE;Sm;0;ON;;;;;N;;;;; +2235;BECAUSE;Sm;0;ON;;;;;N;;;;; +2236;RATIO;Sm;0;ON;;;;;N;;;;; +2237;PROPORTION;Sm;0;ON;;;;;N;;;;; +2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; +2239;EXCESS;Sm;0;ON;;;;;Y;;;;; +223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; +223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; +223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;; +223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; +223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; +2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; +2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; +2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; +2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; +2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; +2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; +224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; +224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; +224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; +2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; +2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; +2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; +2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; +2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; +2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; +2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; +2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; +2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; +225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; +225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; +225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; +225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; +225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; +225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; +2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; +2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; +2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; +2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; +2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; +2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; +2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; +2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; +226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; +226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; +226C;BETWEEN;Sm;0;ON;;;;;N;;;;; +226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; +226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; +226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; +2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; +2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; +2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; +2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; +2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; +2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; +2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; +2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; +2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; +2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; +227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; +227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; +2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; +2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; +2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; +2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; +2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; +2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; +2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; +228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; +228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; +228C;MULTISET;Sm;0;ON;;;;;Y;;;;; +228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; +228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; +228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; +2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; +2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; +2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; +2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; +2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; +2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; +2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; +229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; +229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; +229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; +229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; +229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; +22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; +22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; +22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; +22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; +22A5;UP TACK;Sm;0;ON;;;;;N;;;;; +22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; +22A7;MODELS;Sm;0;ON;;;;;Y;;;;; +22A8;TRUE;Sm;0;ON;;;;;Y;;;;; +22A9;FORCES;Sm;0;ON;;;;;Y;;;;; +22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; +22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; +22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; +22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; +22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; +22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; +22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; +22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; +22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; +22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; +22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; +22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; +22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; +22BB;XOR;Sm;0;ON;;;;;N;;;;; +22BC;NAND;Sm;0;ON;;;;;N;;;;; +22BD;NOR;Sm;0;ON;;;;;N;;;;; +22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; +22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; +22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; +22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; +22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; +22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; +22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; +22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; +22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; +22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; +22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; +22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; +22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; +22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; +22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; +22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; +22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; +22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; +22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; +22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; +22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; +22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; +22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; +22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; +22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; +22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; +22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; +22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; +22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; +22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; +22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; +22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; +22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; +22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; +22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; +22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; +22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; +22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; +22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; +22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; +22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; +22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; +22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; +2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; +2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; +2302;HOUSE;So;0;ON;;;;;N;;;;; +2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; +2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; +2305;PROJECTIVE;So;0;ON;;;;;N;;;;; +2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; +2307;WAVY LINE;So;0;ON;;;;;N;;;;; +2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; +2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; +230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; +230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; +230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; +230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; +230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; +230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; +2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; +2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; +2312;ARC;So;0;ON;;;;;N;;;;; +2313;SEGMENT;So;0;ON;;;;;N;;;;; +2314;SECTOR;So;0;ON;;;;;N;;;;; +2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; +2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; +2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; +2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; +2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; +231A;WATCH;So;0;ON;;;;;N;;;;; +231B;HOURGLASS;So;0;ON;;;;;N;;;;; +231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; +231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; +231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; +231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; +2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2322;FROWN;So;0;ON;;;;;N;;;;; +2323;SMILE;So;0;ON;;;;;N;;;;; +2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; +2325;OPTION KEY;So;0;ON;;;;;N;;;;; +2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; +2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; +2328;KEYBOARD;So;0;ON;;;;;N;;;;; +2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; +232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; +232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; +232C;BENZENE RING;So;0;ON;;;;;N;;;;; +232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; +232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; +232F;SYMMETRY;So;0;ON;;;;;N;;;;; +2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; +2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; +2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; +2333;SLOPE;So;0;ON;;;;;N;;;;; +2334;COUNTERBORE;So;0;ON;;;;;N;;;;; +2335;COUNTERSINK;So;0;ON;;;;;N;;;;; +2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; +2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; +2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; +2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; +233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; +233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; +233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; +233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; +233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; +233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; +2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; +2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; +2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; +2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; +2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; +2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; +2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; +2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; +2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; +2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; +234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;; +234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; +234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; +234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; +234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;; +234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; +2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; +2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;; +2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; +2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; +2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; +2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;; +2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; +2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; +2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; +2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; +235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; +235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; +235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; +235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; +235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; +235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; +2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; +2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;; +2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; +2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; +2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; +2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; +2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; +2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; +2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; +2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; +236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; +236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; +236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; +236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; +236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; +236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; +2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; +2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; +2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; +2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; +2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; +2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; +2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; +2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; +2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; +2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; +237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; +237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; +237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; +237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; +237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; +237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; +2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; +2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; +2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; +2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; +2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; +2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; +2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; +2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; +2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; +2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;; +238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;; +238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;; +238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; +238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; +238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; +238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; +2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; +2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; +2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; +2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; +2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; +2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; +2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; +2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; +2398;NEXT PAGE;So;0;ON;;;;;N;;;;; +2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; +239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; +239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; +23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; +23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; +23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; +23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;; +23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;; +23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;; +23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; +23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; +23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; +23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; +23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; +23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; +23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; +23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; +23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; +23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; +23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; +23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; +2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; +2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; +2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; +2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; +2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; +2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; +2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; +2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; +2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; +2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; +240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; +240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; +240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; +240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; +240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; +240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; +2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; +2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; +2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; +2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; +2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; +2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; +2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; +2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; +2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; +2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; +241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; +241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; +241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; +241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; +241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; +241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; +2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; +2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; +2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; +2423;OPEN BOX;So;0;ON;;;;;N;;;;; +2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; +2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; +2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; +2440;OCR HOOK;So;0;ON;;;;;N;;;;; +2441;OCR CHAIR;So;0;ON;;;;;N;;;;; +2442;OCR FORK;So;0;ON;;;;;N;;;;; +2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; +2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; +2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; +2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; +2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; +2448;OCR DASH;So;0;ON;;;;;N;;;;; +2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; +244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; +2460;CIRCLED DIGIT ONE;No;0;EN; 0031;;1;1;N;;;;; +2461;CIRCLED DIGIT TWO;No;0;EN; 0032;;2;2;N;;;;; +2462;CIRCLED DIGIT THREE;No;0;EN; 0033;;3;3;N;;;;; +2463;CIRCLED DIGIT FOUR;No;0;EN; 0034;;4;4;N;;;;; +2464;CIRCLED DIGIT FIVE;No;0;EN; 0035;;5;5;N;;;;; +2465;CIRCLED DIGIT SIX;No;0;EN; 0036;;6;6;N;;;;; +2466;CIRCLED DIGIT SEVEN;No;0;EN; 0037;;7;7;N;;;;; +2467;CIRCLED DIGIT EIGHT;No;0;EN; 0038;;8;8;N;;;;; +2468;CIRCLED DIGIT NINE;No;0;EN; 0039;;9;9;N;;;;; +2469;CIRCLED NUMBER TEN;No;0;EN; 0031 0030;;;10;N;;;;; +246A;CIRCLED NUMBER ELEVEN;No;0;EN; 0031 0031;;;11;N;;;;; +246B;CIRCLED NUMBER TWELVE;No;0;EN; 0031 0032;;;12;N;;;;; +246C;CIRCLED NUMBER THIRTEEN;No;0;EN; 0031 0033;;;13;N;;;;; +246D;CIRCLED NUMBER FOURTEEN;No;0;EN; 0031 0034;;;14;N;;;;; +246E;CIRCLED NUMBER FIFTEEN;No;0;EN; 0031 0035;;;15;N;;;;; +246F;CIRCLED NUMBER SIXTEEN;No;0;EN; 0031 0036;;;16;N;;;;; +2470;CIRCLED NUMBER SEVENTEEN;No;0;EN; 0031 0037;;;17;N;;;;; +2471;CIRCLED NUMBER EIGHTEEN;No;0;EN; 0031 0038;;;18;N;;;;; +2472;CIRCLED NUMBER NINETEEN;No;0;EN; 0031 0039;;;19;N;;;;; +2473;CIRCLED NUMBER TWENTY;No;0;EN; 0032 0030;;;20;N;;;;; +2474;PARENTHESIZED DIGIT ONE;No;0;EN; 0028 0031 0029;;1;1;N;;;;; +2475;PARENTHESIZED DIGIT TWO;No;0;EN; 0028 0032 0029;;2;2;N;;;;; +2476;PARENTHESIZED DIGIT THREE;No;0;EN; 0028 0033 0029;;3;3;N;;;;; +2477;PARENTHESIZED DIGIT FOUR;No;0;EN; 0028 0034 0029;;4;4;N;;;;; +2478;PARENTHESIZED DIGIT FIVE;No;0;EN; 0028 0035 0029;;5;5;N;;;;; +2479;PARENTHESIZED DIGIT SIX;No;0;EN; 0028 0036 0029;;6;6;N;;;;; +247A;PARENTHESIZED DIGIT SEVEN;No;0;EN; 0028 0037 0029;;7;7;N;;;;; +247B;PARENTHESIZED DIGIT EIGHT;No;0;EN; 0028 0038 0029;;8;8;N;;;;; +247C;PARENTHESIZED DIGIT NINE;No;0;EN; 0028 0039 0029;;9;9;N;;;;; +247D;PARENTHESIZED NUMBER TEN;No;0;EN; 0028 0031 0030 0029;;;10;N;;;;; +247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN; 0028 0031 0031 0029;;;11;N;;;;; +247F;PARENTHESIZED NUMBER TWELVE;No;0;EN; 0028 0031 0032 0029;;;12;N;;;;; +2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN; 0028 0031 0033 0029;;;13;N;;;;; +2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN; 0028 0031 0034 0029;;;14;N;;;;; +2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN; 0028 0031 0035 0029;;;15;N;;;;; +2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN; 0028 0031 0036 0029;;;16;N;;;;; +2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN; 0028 0031 0037 0029;;;17;N;;;;; +2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN; 0028 0031 0038 0029;;;18;N;;;;; +2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN; 0028 0031 0039 0029;;;19;N;;;;; +2487;PARENTHESIZED NUMBER TWENTY;No;0;EN; 0028 0032 0030 0029;;;20;N;;;;; +2488;DIGIT ONE FULL STOP;No;0;EN; 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; +2489;DIGIT TWO FULL STOP;No;0;EN; 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; +248A;DIGIT THREE FULL STOP;No;0;EN; 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; +248B;DIGIT FOUR FULL STOP;No;0;EN; 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; +248C;DIGIT FIVE FULL STOP;No;0;EN; 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; +248D;DIGIT SIX FULL STOP;No;0;EN; 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; +248E;DIGIT SEVEN FULL STOP;No;0;EN; 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; +248F;DIGIT EIGHT FULL STOP;No;0;EN; 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; +2490;DIGIT NINE FULL STOP;No;0;EN; 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; +2491;NUMBER TEN FULL STOP;No;0;EN; 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; +2492;NUMBER ELEVEN FULL STOP;No;0;EN; 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; +2493;NUMBER TWELVE FULL STOP;No;0;EN; 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; +2494;NUMBER THIRTEEN FULL STOP;No;0;EN; 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; +2495;NUMBER FOURTEEN FULL STOP;No;0;EN; 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; +2496;NUMBER FIFTEEN FULL STOP;No;0;EN; 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; +2497;NUMBER SIXTEEN FULL STOP;No;0;EN; 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; +2498;NUMBER SEVENTEEN FULL STOP;No;0;EN; 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; +2499;NUMBER EIGHTEEN FULL STOP;No;0;EN; 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; +249A;NUMBER NINETEEN FULL STOP;No;0;EN; 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; +249B;NUMBER TWENTY FULL STOP;No;0;EN; 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; +249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L; 0028 0061 0029;;;;N;;;;; +249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L; 0028 0062 0029;;;;N;;;;; +249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L; 0028 0063 0029;;;;N;;;;; +249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L; 0028 0064 0029;;;;N;;;;; +24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L; 0028 0065 0029;;;;N;;;;; +24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L; 0028 0066 0029;;;;N;;;;; +24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L; 0028 0067 0029;;;;N;;;;; +24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L; 0028 0068 0029;;;;N;;;;; +24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L; 0028 0069 0029;;;;N;;;;; +24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L; 0028 006A 0029;;;;N;;;;; +24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L; 0028 006B 0029;;;;N;;;;; +24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L; 0028 006C 0029;;;;N;;;;; +24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L; 0028 006D 0029;;;;N;;;;; +24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L; 0028 006E 0029;;;;N;;;;; +24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L; 0028 006F 0029;;;;N;;;;; +24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L; 0028 0070 0029;;;;N;;;;; +24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L; 0028 0071 0029;;;;N;;;;; +24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L; 0028 0072 0029;;;;N;;;;; +24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L; 0028 0073 0029;;;;N;;;;; +24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L; 0028 0074 0029;;;;N;;;;; +24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L; 0028 0075 0029;;;;N;;;;; +24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L; 0028 0076 0029;;;;N;;;;; +24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L; 0028 0077 0029;;;;N;;;;; +24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L; 0028 0078 0029;;;;N;;;;; +24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L; 0028 0079 0029;;;;N;;;;; +24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L; 0028 007A 0029;;;;N;;;;; +24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L; 0041;;;;N;;;;24D0; +24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;24D1; +24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;24D2; +24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L; 0044;;;;N;;;;24D3; +24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L; 0045;;;;N;;;;24D4; +24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L; 0046;;;;N;;;;24D5; +24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L; 0047;;;;N;;;;24D6; +24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L; 0048;;;;N;;;;24D7; +24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L; 0049;;;;N;;;;24D8; +24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L; 004A;;;;N;;;;24D9; +24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L; 004B;;;;N;;;;24DA; +24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L; 004C;;;;N;;;;24DB; +24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L; 004D;;;;N;;;;24DC; +24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;24DD; +24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L; 004F;;;;N;;;;24DE; +24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;24DF; +24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L; 0051;;;;N;;;;24E0; +24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;24E1; +24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;24E2; +24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L; 0054;;;;N;;;;24E3; +24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L; 0055;;;;N;;;;24E4; +24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L; 0056;;;;N;;;;24E5; +24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;24E6; +24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L; 0058;;;;N;;;;24E7; +24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L; 0059;;;;N;;;;24E8; +24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L; 005A;;;;N;;;;24E9; +24D0;CIRCLED LATIN SMALL LETTER A;So;0;L; 0061;;;;N;;;24B6;;24B6 +24D1;CIRCLED LATIN SMALL LETTER B;So;0;L; 0062;;;;N;;;24B7;;24B7 +24D2;CIRCLED LATIN SMALL LETTER C;So;0;L; 0063;;;;N;;;24B8;;24B8 +24D3;CIRCLED LATIN SMALL LETTER D;So;0;L; 0064;;;;N;;;24B9;;24B9 +24D4;CIRCLED LATIN SMALL LETTER E;So;0;L; 0065;;;;N;;;24BA;;24BA +24D5;CIRCLED LATIN SMALL LETTER F;So;0;L; 0066;;;;N;;;24BB;;24BB +24D6;CIRCLED LATIN SMALL LETTER G;So;0;L; 0067;;;;N;;;24BC;;24BC +24D7;CIRCLED LATIN SMALL LETTER H;So;0;L; 0068;;;;N;;;24BD;;24BD +24D8;CIRCLED LATIN SMALL LETTER I;So;0;L; 0069;;;;N;;;24BE;;24BE +24D9;CIRCLED LATIN SMALL LETTER J;So;0;L; 006A;;;;N;;;24BF;;24BF +24DA;CIRCLED LATIN SMALL LETTER K;So;0;L; 006B;;;;N;;;24C0;;24C0 +24DB;CIRCLED LATIN SMALL LETTER L;So;0;L; 006C;;;;N;;;24C1;;24C1 +24DC;CIRCLED LATIN SMALL LETTER M;So;0;L; 006D;;;;N;;;24C2;;24C2 +24DD;CIRCLED LATIN SMALL LETTER N;So;0;L; 006E;;;;N;;;24C3;;24C3 +24DE;CIRCLED LATIN SMALL LETTER O;So;0;L; 006F;;;;N;;;24C4;;24C4 +24DF;CIRCLED LATIN SMALL LETTER P;So;0;L; 0070;;;;N;;;24C5;;24C5 +24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L; 0071;;;;N;;;24C6;;24C6 +24E1;CIRCLED LATIN SMALL LETTER R;So;0;L; 0072;;;;N;;;24C7;;24C7 +24E2;CIRCLED LATIN SMALL LETTER S;So;0;L; 0073;;;;N;;;24C8;;24C8 +24E3;CIRCLED LATIN SMALL LETTER T;So;0;L; 0074;;;;N;;;24C9;;24C9 +24E4;CIRCLED LATIN SMALL LETTER U;So;0;L; 0075;;;;N;;;24CA;;24CA +24E5;CIRCLED LATIN SMALL LETTER V;So;0;L; 0076;;;;N;;;24CB;;24CB +24E6;CIRCLED LATIN SMALL LETTER W;So;0;L; 0077;;;;N;;;24CC;;24CC +24E7;CIRCLED LATIN SMALL LETTER X;So;0;L; 0078;;;;N;;;24CD;;24CD +24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L; 0079;;;;N;;;24CE;;24CE +24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L; 007A;;;;N;;;24CF;;24CF +24EA;CIRCLED DIGIT ZERO;No;0;EN; 0030;;0;0;N;;;;; +24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; +24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; +24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; +24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; +24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; +24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; +24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; +24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; +24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; +24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; +24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; +24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; +24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; +24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; +24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; +24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; +24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; +24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; +24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; +24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; +2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; +2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; +2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; +2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; +2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; +2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; +2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; +2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; +2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; +2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; +250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; +250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; +250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; +250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; +250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; +250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; +2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; +2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; +2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; +2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; +2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; +2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; +2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; +2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; +2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; +2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; +251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; +251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; +251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; +251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; +251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; +251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; +2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; +2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; +2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; +2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; +2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; +2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; +2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; +2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; +2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; +2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; +252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; +252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; +252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; +252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; +252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; +252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; +2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; +2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; +2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; +2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; +2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; +2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; +2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; +2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; +2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; +2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; +253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; +253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; +253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; +253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; +253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; +253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; +2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; +2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; +2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; +2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; +2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; +2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; +2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; +2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; +2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; +2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; +254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; +254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; +254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; +254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; +254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; +254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; +2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; +2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; +2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; +2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; +2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; +2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; +2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; +2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; +2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; +2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; +255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; +255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; +255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; +255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; +255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; +255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; +2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; +2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; +2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; +2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; +2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; +2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; +2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; +2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; +2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; +2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; +256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; +256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; +256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; +256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; +256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; +256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; +2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; +2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; +2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; +2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; +2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; +2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; +2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; +2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; +2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; +2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; +257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; +257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; +257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; +257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; +257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; +257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; +2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; +2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; +2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; +2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2588;FULL BLOCK;So;0;ON;;;;;N;;;;; +2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; +258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; +258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; +2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; +2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; +2593;DARK SHADE;So;0;ON;;;;;N;;;;; +2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; +2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; +2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; +2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; +259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; +25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; +25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; +25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; +25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; +25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; +25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; +25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; +25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; +25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; +25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; +25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; +25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; +25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; +25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; +25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; +25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; +25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; +25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; +25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; +25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; +25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; +25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; +25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; +25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; +25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; +25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; +25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; +25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; +25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; +25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; +25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; +25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; +25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; +25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; +25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; +25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; +25C9;FISHEYE;So;0;ON;;;;;N;;;;; +25CA;LOZENGE;So;0;ON;;;;;N;;;;; +25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; +25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; +25CE;BULLSEYE;So;0;ON;;;;;N;;;;; +25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; +25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; +25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; +25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; +25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; +25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; +25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; +25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; +25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; +25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; +25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; +25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; +25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; +25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; +25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; +25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; +25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; +25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; +2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; +2601;CLOUD;So;0;ON;;;;;N;;;;; +2602;UMBRELLA;So;0;ON;;;;;N;;;;; +2603;SNOWMAN;So;0;ON;;;;;N;;;;; +2604;COMET;So;0;ON;;;;;N;;;;; +2605;BLACK STAR;So;0;ON;;;;;N;;;;; +2606;WHITE STAR;So;0;ON;;;;;N;;;;; +2607;LIGHTNING;So;0;ON;;;;;N;;;;; +2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; +2609;SUN;So;0;ON;;;;;N;;;;; +260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; +260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; +260C;CONJUNCTION;So;0;ON;;;;;N;;;;; +260D;OPPOSITION;So;0;ON;;;;;N;;;;; +260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; +260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; +2610;BALLOT BOX;So;0;ON;;;;;N;;;;; +2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; +2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; +2613;SALTIRE;So;0;ON;;;;;N;;;;; +2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; +2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; +2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; +261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; +261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; +261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; +261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; +2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; +2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; +2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; +2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; +2624;CADUCEUS;So;0;ON;;;;;N;;;;; +2625;ANKH;So;0;ON;;;;;N;;;;; +2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; +2627;CHI RHO;So;0;ON;;;;;N;;;;; +2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; +2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; +262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; +262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; +262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; +262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; +262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; +262F;YIN YANG;So;0;ON;;;;;N;;;;; +2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; +2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; +2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; +2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; +2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; +2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; +2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; +2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; +2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; +2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; +263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; +263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; +263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; +263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; +263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; +263F;MERCURY;So;0;ON;;;;;N;;;;; +2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; +2641;EARTH;So;0;ON;;;;;N;;;;; +2642;MALE SIGN;So;0;ON;;;;;N;;;;; +2643;JUPITER;So;0;ON;;;;;N;;;;; +2644;SATURN;So;0;ON;;;;;N;;;;; +2645;URANUS;So;0;ON;;;;;N;;;;; +2646;NEPTUNE;So;0;ON;;;;;N;;;;; +2647;PLUTO;So;0;ON;;;;;N;;;;; +2648;ARIES;So;0;ON;;;;;N;;;;; +2649;TAURUS;So;0;ON;;;;;N;;;;; +264A;GEMINI;So;0;ON;;;;;N;;;;; +264B;CANCER;So;0;ON;;;;;N;;;;; +264C;LEO;So;0;ON;;;;;N;;;;; +264D;VIRGO;So;0;ON;;;;;N;;;;; +264E;LIBRA;So;0;ON;;;;;N;;;;; +264F;SCORPIUS;So;0;ON;;;;;N;;;;; +2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; +2651;CAPRICORN;So;0;ON;;;;;N;;;;; +2652;AQUARIUS;So;0;ON;;;;;N;;;;; +2653;PISCES;So;0;ON;;;;;N;;;;; +2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; +2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; +2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; +2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; +2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; +2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; +265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; +265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; +265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; +265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; +265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; +265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; +2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; +2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; +2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; +2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; +2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; +2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; +2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; +2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; +2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; +2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; +266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; +266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; +266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; +266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; +266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; +266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; +2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; +2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; +2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;; +2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;; +2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;; +2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;; +2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;; +2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;; +2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;; +267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; +267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +2680;DIE FACE-1;So;0;ON;;;;;N;;;;; +2681;DIE FACE-2;So;0;ON;;;;;N;;;;; +2682;DIE FACE-3;So;0;ON;;;;;N;;;;; +2683;DIE FACE-4;So;0;ON;;;;;N;;;;; +2684;DIE FACE-5;So;0;ON;;;;;N;;;;; +2685;DIE FACE-6;So;0;ON;;;;;N;;;;; +2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; +2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; +2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; +2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; +2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; +2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; +2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; +2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; +2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; +2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; +2708;AIRPLANE;So;0;ON;;;;;N;;;;; +2709;ENVELOPE;So;0;ON;;;;;N;;;;; +270C;VICTORY HAND;So;0;ON;;;;;N;;;;; +270D;WRITING HAND;So;0;ON;;;;;N;;;;; +270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; +270F;PENCIL;So;0;ON;;;;;N;;;;; +2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; +2711;WHITE NIB;So;0;ON;;;;;N;;;;; +2712;BLACK NIB;So;0;ON;;;;;N;;;;; +2713;CHECK MARK;So;0;ON;;;;;N;;;;; +2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; +2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; +2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; +2717;BALLOT X;So;0;ON;;;;;N;;;;; +2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; +2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; +271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; +271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; +271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; +271D;LATIN CROSS;So;0;ON;;;;;N;;;;; +271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; +271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; +2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; +2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; +2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; +2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; +2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; +272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; +272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; +272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; +272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; +272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; +272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; +2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; +2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; +2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; +2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; +2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; +2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; +2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; +273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; +273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; +273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; +2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; +2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; +2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; +2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; +2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; +2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; +2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; +2747;SPARKLE;So;0;ON;;;;;N;;;;; +2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; +2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; +274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; +274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; +274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; +2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; +2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; +275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; +275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; +2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; +2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; +2766;FLORAL HEART;So;0;ON;;;;;N;;;;; +2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; +2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; +2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; +2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; +2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; +277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; +277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; +277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; +277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; +277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; +277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; +2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; +2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; +2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; +2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; +2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; +2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; +2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; +2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; +2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; +2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; +278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; +278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; +278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; +278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; +278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; +278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; +2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; +2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; +2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; +2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; +2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; +2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; +2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; +279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; +279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; +279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; +279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; +279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; +279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; +27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; +27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; +27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; +27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; +27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; +27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; +27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; +27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; +27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; +27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; +27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; +27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; +27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; +27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; +27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; +27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; +27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; +27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; +27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; +27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; +27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; +27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; +27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; +27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; +27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; +27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; +27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; +27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; +27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; +27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; +27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; +27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; +27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; +27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; +27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; +27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; +27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; +27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; +27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; +27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; +27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; +27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; +2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;; +2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;; +2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;; +2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;; +2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;; +2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;; +2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;; +2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;; +2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;; +2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;; +280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;; +280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;; +280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;; +280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;; +280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;; +280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;; +2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;; +2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;; +2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;; +2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;; +2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;; +2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;; +2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;; +2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;; +2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;; +2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;; +281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;; +281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;; +281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;; +281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;; +281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;; +281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;; +2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;; +2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;; +2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;; +2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;; +2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;; +2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;; +2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;; +2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;; +2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;; +2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;; +282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;; +282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;; +282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;; +282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;; +282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;; +282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;; +2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;; +2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;; +2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;; +2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;; +2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;; +2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;; +2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;; +2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;; +2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;; +2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;; +283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;; +283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;; +283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;; +283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;; +283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;; +283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;; +2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;; +2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;; +2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;; +2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;; +2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;; +2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;; +2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;; +2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;; +2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;; +2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;; +284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;; +284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;; +284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;; +284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;; +284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;; +284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;; +2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;; +2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;; +2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;; +2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;; +2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;; +2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;; +2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;; +2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;; +2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;; +2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;; +285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;; +285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;; +285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;; +285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;; +285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;; +285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;; +2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;; +2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;; +2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;; +2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;; +2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;; +2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;; +2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;; +2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;; +2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;; +2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;; +286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;; +286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;; +286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;; +286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;; +286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;; +286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;; +2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;; +2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;; +2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;; +2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;; +2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;; +2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;; +2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;; +2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;; +2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;; +2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;; +287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;; +287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;; +287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;; +287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;; +287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;; +287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;; +2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;; +2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;; +2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;; +2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;; +2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;; +2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;; +2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;; +2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;; +2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;; +2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;; +288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;; +288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;; +288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;; +288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;; +288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;; +288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;; +2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;; +2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;; +2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;; +2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;; +2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;; +2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;; +2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;; +2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;; +2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;; +2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;; +289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;; +289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;; +289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;; +289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;; +289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;; +289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;; +28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;; +28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;; +28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;; +28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;; +28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;; +28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;; +28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;; +28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;; +28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;; +28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;; +28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;; +28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;; +28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;; +28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;; +28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;; +28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;; +28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;; +28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;; +28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;; +28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;; +28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;; +28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;; +28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;; +28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;; +28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;; +28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;; +28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;; +28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;; +28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;; +28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;; +28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;; +28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;; +28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;; +28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;; +28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;; +28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;; +28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;; +28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;; +28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;; +28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;; +28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;; +28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;; +28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;; +28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;; +28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;; +28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;; +28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;; +28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;; +28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;; +28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;; +28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;; +28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;; +28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;; +28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;; +28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;; +28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;; +28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;; +28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;; +28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;; +28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;; +28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;; +28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;; +28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;; +28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;; +28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;; +28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;; +28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;; +28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;; +28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;; +28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;; +28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;; +28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;; +28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;; +28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;; +28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;; +28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;; +28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;; +28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;; +28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;; +28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;; +28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;; +28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;; +28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;; +28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;; +28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;; +28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;; +28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;; +28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;; +28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;; +28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;; +28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;; +28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;; +28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;; +28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;; +28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;; +28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;; +2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; +2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; +2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; +2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; +2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; +2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; +2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; +293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; +293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; +2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; +2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; +2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; +297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; +297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; +2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; +2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; +2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; +2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; +2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; +2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; +2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; +2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; +298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; +298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; +298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; +298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; +298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; +298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; +2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; +2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; +2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; +2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; +2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; +2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; +299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; +299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; +299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; +299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; +299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; +29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; +29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; +29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; +29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; +29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; +29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; +29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; +29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; +29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; +29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; +29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; +29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; +29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; +29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; +29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; +29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; +29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; +29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; +29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; +29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; +29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; +29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; +29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; +29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; +29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; +29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; +29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; +29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; +29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; +29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; +29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; +29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; +29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; +29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; +29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +29FE;TINY;Sm;0;ON;;;;;N;;;;; +29FF;MINY;Sm;0;ON;;;;;N;;;;; +2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; +2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; +2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; +2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; +2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; +2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; +2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON; 222B 222B 222B 222B;;;;Y;;;;; +2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; +2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; +2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; +2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; +2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; +2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; +2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; +2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; +2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; +2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2A1D;JOIN;Sm;0;ON;;;;;N;;;;; +2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; +2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; +2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; +2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; +2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; +2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; +2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; +2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; +2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; +2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; +2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; +2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; +2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; +2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; +2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; +2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; +2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; +2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; +2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; +2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; +2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; +2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A74;DOUBLE COLON EQUAL;Sm;0;ON; 003A 003A 003D;;;;Y;;;;; +2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D;;;;N;;;;; +2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D 003D;;;;N;;;;; +2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; +2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; +2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; +2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; +2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; +2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; +2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; +2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; +2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; +2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; +2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; +2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; +2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;; +2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;; +2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; +2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; +2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; +2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; +2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; +2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; +2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; +2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; +2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; +2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; +2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; +2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; +2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; +2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; +2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; +2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; +2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; +2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; +2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; +2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; +2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; +2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; +2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; +2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; +2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; +2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; +2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; +2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; +2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; +2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; +2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; +2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; +2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; +2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; +2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; +2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; +2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; +2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; +2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; +2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; +2E9F;CJK RADICAL MOTHER;So;0;ON; 6BCD;;;;N;;;;; +2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; +2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; +2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; +2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; +2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; +2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; +2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; +2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; +2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; +2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; +2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; +2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; +2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; +2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; +2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; +2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; +2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; +2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; +2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; +2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; +2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; +2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; +2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; +2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; +2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; +2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; +2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; +2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; +2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; +2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; +2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; +2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; +2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; +2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; +2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; +2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; +2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; +2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; +2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; +2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; +2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; +2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; +2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; +2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; +2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; +2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; +2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; +2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; +2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; +2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; +2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; +2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; +2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; +2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; +2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; +2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; +2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; +2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; +2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; +2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; +2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; +2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; +2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; +2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; +2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; +2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; +2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; +2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; +2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; +2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; +2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; +2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; +2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; +2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; +2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; +2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; +2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; +2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; +2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; +2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; +2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; +2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; +2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; +2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON; 9F9F;;;;N;;;;; +2F00;KANGXI RADICAL ONE;So;0;ON; 4E00;;;;N;;;;; +2F01;KANGXI RADICAL LINE;So;0;ON; 4E28;;;;N;;;;; +2F02;KANGXI RADICAL DOT;So;0;ON; 4E36;;;;N;;;;; +2F03;KANGXI RADICAL SLASH;So;0;ON; 4E3F;;;;N;;;;; +2F04;KANGXI RADICAL SECOND;So;0;ON; 4E59;;;;N;;;;; +2F05;KANGXI RADICAL HOOK;So;0;ON; 4E85;;;;N;;;;; +2F06;KANGXI RADICAL TWO;So;0;ON; 4E8C;;;;N;;;;; +2F07;KANGXI RADICAL LID;So;0;ON; 4EA0;;;;N;;;;; +2F08;KANGXI RADICAL MAN;So;0;ON; 4EBA;;;;N;;;;; +2F09;KANGXI RADICAL LEGS;So;0;ON; 513F;;;;N;;;;; +2F0A;KANGXI RADICAL ENTER;So;0;ON; 5165;;;;N;;;;; +2F0B;KANGXI RADICAL EIGHT;So;0;ON; 516B;;;;N;;;;; +2F0C;KANGXI RADICAL DOWN BOX;So;0;ON; 5182;;;;N;;;;; +2F0D;KANGXI RADICAL COVER;So;0;ON; 5196;;;;N;;;;; +2F0E;KANGXI RADICAL ICE;So;0;ON; 51AB;;;;N;;;;; +2F0F;KANGXI RADICAL TABLE;So;0;ON; 51E0;;;;N;;;;; +2F10;KANGXI RADICAL OPEN BOX;So;0;ON; 51F5;;;;N;;;;; +2F11;KANGXI RADICAL KNIFE;So;0;ON; 5200;;;;N;;;;; +2F12;KANGXI RADICAL POWER;So;0;ON; 529B;;;;N;;;;; +2F13;KANGXI RADICAL WRAP;So;0;ON; 52F9;;;;N;;;;; +2F14;KANGXI RADICAL SPOON;So;0;ON; 5315;;;;N;;;;; +2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON; 531A;;;;N;;;;; +2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON; 5338;;;;N;;;;; +2F17;KANGXI RADICAL TEN;So;0;ON; 5341;;;;N;;;;; +2F18;KANGXI RADICAL DIVINATION;So;0;ON; 535C;;;;N;;;;; +2F19;KANGXI RADICAL SEAL;So;0;ON; 5369;;;;N;;;;; +2F1A;KANGXI RADICAL CLIFF;So;0;ON; 5382;;;;N;;;;; +2F1B;KANGXI RADICAL PRIVATE;So;0;ON; 53B6;;;;N;;;;; +2F1C;KANGXI RADICAL AGAIN;So;0;ON; 53C8;;;;N;;;;; +2F1D;KANGXI RADICAL MOUTH;So;0;ON; 53E3;;;;N;;;;; +2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON; 56D7;;;;N;;;;; +2F1F;KANGXI RADICAL EARTH;So;0;ON; 571F;;;;N;;;;; +2F20;KANGXI RADICAL SCHOLAR;So;0;ON; 58EB;;;;N;;;;; +2F21;KANGXI RADICAL GO;So;0;ON; 5902;;;;N;;;;; +2F22;KANGXI RADICAL GO SLOWLY;So;0;ON; 590A;;;;N;;;;; +2F23;KANGXI RADICAL EVENING;So;0;ON; 5915;;;;N;;;;; +2F24;KANGXI RADICAL BIG;So;0;ON; 5927;;;;N;;;;; +2F25;KANGXI RADICAL WOMAN;So;0;ON; 5973;;;;N;;;;; +2F26;KANGXI RADICAL CHILD;So;0;ON; 5B50;;;;N;;;;; +2F27;KANGXI RADICAL ROOF;So;0;ON; 5B80;;;;N;;;;; +2F28;KANGXI RADICAL INCH;So;0;ON; 5BF8;;;;N;;;;; +2F29;KANGXI RADICAL SMALL;So;0;ON; 5C0F;;;;N;;;;; +2F2A;KANGXI RADICAL LAME;So;0;ON; 5C22;;;;N;;;;; +2F2B;KANGXI RADICAL CORPSE;So;0;ON; 5C38;;;;N;;;;; +2F2C;KANGXI RADICAL SPROUT;So;0;ON; 5C6E;;;;N;;;;; +2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON; 5C71;;;;N;;;;; +2F2E;KANGXI RADICAL RIVER;So;0;ON; 5DDB;;;;N;;;;; +2F2F;KANGXI RADICAL WORK;So;0;ON; 5DE5;;;;N;;;;; +2F30;KANGXI RADICAL ONESELF;So;0;ON; 5DF1;;;;N;;;;; +2F31;KANGXI RADICAL TURBAN;So;0;ON; 5DFE;;;;N;;;;; +2F32;KANGXI RADICAL DRY;So;0;ON; 5E72;;;;N;;;;; +2F33;KANGXI RADICAL SHORT THREAD;So;0;ON; 5E7A;;;;N;;;;; +2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON; 5E7F;;;;N;;;;; +2F35;KANGXI RADICAL LONG STRIDE;So;0;ON; 5EF4;;;;N;;;;; +2F36;KANGXI RADICAL TWO HANDS;So;0;ON; 5EFE;;;;N;;;;; +2F37;KANGXI RADICAL SHOOT;So;0;ON; 5F0B;;;;N;;;;; +2F38;KANGXI RADICAL BOW;So;0;ON; 5F13;;;;N;;;;; +2F39;KANGXI RADICAL SNOUT;So;0;ON; 5F50;;;;N;;;;; +2F3A;KANGXI RADICAL BRISTLE;So;0;ON; 5F61;;;;N;;;;; +2F3B;KANGXI RADICAL STEP;So;0;ON; 5F73;;;;N;;;;; +2F3C;KANGXI RADICAL HEART;So;0;ON; 5FC3;;;;N;;;;; +2F3D;KANGXI RADICAL HALBERD;So;0;ON; 6208;;;;N;;;;; +2F3E;KANGXI RADICAL DOOR;So;0;ON; 6236;;;;N;;;;; +2F3F;KANGXI RADICAL HAND;So;0;ON; 624B;;;;N;;;;; +2F40;KANGXI RADICAL BRANCH;So;0;ON; 652F;;;;N;;;;; +2F41;KANGXI RADICAL RAP;So;0;ON; 6534;;;;N;;;;; +2F42;KANGXI RADICAL SCRIPT;So;0;ON; 6587;;;;N;;;;; +2F43;KANGXI RADICAL DIPPER;So;0;ON; 6597;;;;N;;;;; +2F44;KANGXI RADICAL AXE;So;0;ON; 65A4;;;;N;;;;; +2F45;KANGXI RADICAL SQUARE;So;0;ON; 65B9;;;;N;;;;; +2F46;KANGXI RADICAL NOT;So;0;ON; 65E0;;;;N;;;;; +2F47;KANGXI RADICAL SUN;So;0;ON; 65E5;;;;N;;;;; +2F48;KANGXI RADICAL SAY;So;0;ON; 66F0;;;;N;;;;; +2F49;KANGXI RADICAL MOON;So;0;ON; 6708;;;;N;;;;; +2F4A;KANGXI RADICAL TREE;So;0;ON; 6728;;;;N;;;;; +2F4B;KANGXI RADICAL LACK;So;0;ON; 6B20;;;;N;;;;; +2F4C;KANGXI RADICAL STOP;So;0;ON; 6B62;;;;N;;;;; +2F4D;KANGXI RADICAL DEATH;So;0;ON; 6B79;;;;N;;;;; +2F4E;KANGXI RADICAL WEAPON;So;0;ON; 6BB3;;;;N;;;;; +2F4F;KANGXI RADICAL DO NOT;So;0;ON; 6BCB;;;;N;;;;; +2F50;KANGXI RADICAL COMPARE;So;0;ON; 6BD4;;;;N;;;;; +2F51;KANGXI RADICAL FUR;So;0;ON; 6BDB;;;;N;;;;; +2F52;KANGXI RADICAL CLAN;So;0;ON; 6C0F;;;;N;;;;; +2F53;KANGXI RADICAL STEAM;So;0;ON; 6C14;;;;N;;;;; +2F54;KANGXI RADICAL WATER;So;0;ON; 6C34;;;;N;;;;; +2F55;KANGXI RADICAL FIRE;So;0;ON; 706B;;;;N;;;;; +2F56;KANGXI RADICAL CLAW;So;0;ON; 722A;;;;N;;;;; +2F57;KANGXI RADICAL FATHER;So;0;ON; 7236;;;;N;;;;; +2F58;KANGXI RADICAL DOUBLE X;So;0;ON; 723B;;;;N;;;;; +2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON; 723F;;;;N;;;;; +2F5A;KANGXI RADICAL SLICE;So;0;ON; 7247;;;;N;;;;; +2F5B;KANGXI RADICAL FANG;So;0;ON; 7259;;;;N;;;;; +2F5C;KANGXI RADICAL COW;So;0;ON; 725B;;;;N;;;;; +2F5D;KANGXI RADICAL DOG;So;0;ON; 72AC;;;;N;;;;; +2F5E;KANGXI RADICAL PROFOUND;So;0;ON; 7384;;;;N;;;;; +2F5F;KANGXI RADICAL JADE;So;0;ON; 7389;;;;N;;;;; +2F60;KANGXI RADICAL MELON;So;0;ON; 74DC;;;;N;;;;; +2F61;KANGXI RADICAL TILE;So;0;ON; 74E6;;;;N;;;;; +2F62;KANGXI RADICAL SWEET;So;0;ON; 7518;;;;N;;;;; +2F63;KANGXI RADICAL LIFE;So;0;ON; 751F;;;;N;;;;; +2F64;KANGXI RADICAL USE;So;0;ON; 7528;;;;N;;;;; +2F65;KANGXI RADICAL FIELD;So;0;ON; 7530;;;;N;;;;; +2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON; 758B;;;;N;;;;; +2F67;KANGXI RADICAL SICKNESS;So;0;ON; 7592;;;;N;;;;; +2F68;KANGXI RADICAL DOTTED TENT;So;0;ON; 7676;;;;N;;;;; +2F69;KANGXI RADICAL WHITE;So;0;ON; 767D;;;;N;;;;; +2F6A;KANGXI RADICAL SKIN;So;0;ON; 76AE;;;;N;;;;; +2F6B;KANGXI RADICAL DISH;So;0;ON; 76BF;;;;N;;;;; +2F6C;KANGXI RADICAL EYE;So;0;ON; 76EE;;;;N;;;;; +2F6D;KANGXI RADICAL SPEAR;So;0;ON; 77DB;;;;N;;;;; +2F6E;KANGXI RADICAL ARROW;So;0;ON; 77E2;;;;N;;;;; +2F6F;KANGXI RADICAL STONE;So;0;ON; 77F3;;;;N;;;;; +2F70;KANGXI RADICAL SPIRIT;So;0;ON; 793A;;;;N;;;;; +2F71;KANGXI RADICAL TRACK;So;0;ON; 79B8;;;;N;;;;; +2F72;KANGXI RADICAL GRAIN;So;0;ON; 79BE;;;;N;;;;; +2F73;KANGXI RADICAL CAVE;So;0;ON; 7A74;;;;N;;;;; +2F74;KANGXI RADICAL STAND;So;0;ON; 7ACB;;;;N;;;;; +2F75;KANGXI RADICAL BAMBOO;So;0;ON; 7AF9;;;;N;;;;; +2F76;KANGXI RADICAL RICE;So;0;ON; 7C73;;;;N;;;;; +2F77;KANGXI RADICAL SILK;So;0;ON; 7CF8;;;;N;;;;; +2F78;KANGXI RADICAL JAR;So;0;ON; 7F36;;;;N;;;;; +2F79;KANGXI RADICAL NET;So;0;ON; 7F51;;;;N;;;;; +2F7A;KANGXI RADICAL SHEEP;So;0;ON; 7F8A;;;;N;;;;; +2F7B;KANGXI RADICAL FEATHER;So;0;ON; 7FBD;;;;N;;;;; +2F7C;KANGXI RADICAL OLD;So;0;ON; 8001;;;;N;;;;; +2F7D;KANGXI RADICAL AND;So;0;ON; 800C;;;;N;;;;; +2F7E;KANGXI RADICAL PLOW;So;0;ON; 8012;;;;N;;;;; +2F7F;KANGXI RADICAL EAR;So;0;ON; 8033;;;;N;;;;; +2F80;KANGXI RADICAL BRUSH;So;0;ON; 807F;;;;N;;;;; +2F81;KANGXI RADICAL MEAT;So;0;ON; 8089;;;;N;;;;; +2F82;KANGXI RADICAL MINISTER;So;0;ON; 81E3;;;;N;;;;; +2F83;KANGXI RADICAL SELF;So;0;ON; 81EA;;;;N;;;;; +2F84;KANGXI RADICAL ARRIVE;So;0;ON; 81F3;;;;N;;;;; +2F85;KANGXI RADICAL MORTAR;So;0;ON; 81FC;;;;N;;;;; +2F86;KANGXI RADICAL TONGUE;So;0;ON; 820C;;;;N;;;;; +2F87;KANGXI RADICAL OPPOSE;So;0;ON; 821B;;;;N;;;;; +2F88;KANGXI RADICAL BOAT;So;0;ON; 821F;;;;N;;;;; +2F89;KANGXI RADICAL STOPPING;So;0;ON; 826E;;;;N;;;;; +2F8A;KANGXI RADICAL COLOR;So;0;ON; 8272;;;;N;;;;; +2F8B;KANGXI RADICAL GRASS;So;0;ON; 8278;;;;N;;;;; +2F8C;KANGXI RADICAL TIGER;So;0;ON; 864D;;;;N;;;;; +2F8D;KANGXI RADICAL INSECT;So;0;ON; 866B;;;;N;;;;; +2F8E;KANGXI RADICAL BLOOD;So;0;ON; 8840;;;;N;;;;; +2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON; 884C;;;;N;;;;; +2F90;KANGXI RADICAL CLOTHES;So;0;ON; 8863;;;;N;;;;; +2F91;KANGXI RADICAL WEST;So;0;ON; 897E;;;;N;;;;; +2F92;KANGXI RADICAL SEE;So;0;ON; 898B;;;;N;;;;; +2F93;KANGXI RADICAL HORN;So;0;ON; 89D2;;;;N;;;;; +2F94;KANGXI RADICAL SPEECH;So;0;ON; 8A00;;;;N;;;;; +2F95;KANGXI RADICAL VALLEY;So;0;ON; 8C37;;;;N;;;;; +2F96;KANGXI RADICAL BEAN;So;0;ON; 8C46;;;;N;;;;; +2F97;KANGXI RADICAL PIG;So;0;ON; 8C55;;;;N;;;;; +2F98;KANGXI RADICAL BADGER;So;0;ON; 8C78;;;;N;;;;; +2F99;KANGXI RADICAL SHELL;So;0;ON; 8C9D;;;;N;;;;; +2F9A;KANGXI RADICAL RED;So;0;ON; 8D64;;;;N;;;;; +2F9B;KANGXI RADICAL RUN;So;0;ON; 8D70;;;;N;;;;; +2F9C;KANGXI RADICAL FOOT;So;0;ON; 8DB3;;;;N;;;;; +2F9D;KANGXI RADICAL BODY;So;0;ON; 8EAB;;;;N;;;;; +2F9E;KANGXI RADICAL CART;So;0;ON; 8ECA;;;;N;;;;; +2F9F;KANGXI RADICAL BITTER;So;0;ON; 8F9B;;;;N;;;;; +2FA0;KANGXI RADICAL MORNING;So;0;ON; 8FB0;;;;N;;;;; +2FA1;KANGXI RADICAL WALK;So;0;ON; 8FB5;;;;N;;;;; +2FA2;KANGXI RADICAL CITY;So;0;ON; 9091;;;;N;;;;; +2FA3;KANGXI RADICAL WINE;So;0;ON; 9149;;;;N;;;;; +2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON; 91C6;;;;N;;;;; +2FA5;KANGXI RADICAL VILLAGE;So;0;ON; 91CC;;;;N;;;;; +2FA6;KANGXI RADICAL GOLD;So;0;ON; 91D1;;;;N;;;;; +2FA7;KANGXI RADICAL LONG;So;0;ON; 9577;;;;N;;;;; +2FA8;KANGXI RADICAL GATE;So;0;ON; 9580;;;;N;;;;; +2FA9;KANGXI RADICAL MOUND;So;0;ON; 961C;;;;N;;;;; +2FAA;KANGXI RADICAL SLAVE;So;0;ON; 96B6;;;;N;;;;; +2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON; 96B9;;;;N;;;;; +2FAC;KANGXI RADICAL RAIN;So;0;ON; 96E8;;;;N;;;;; +2FAD;KANGXI RADICAL BLUE;So;0;ON; 9751;;;;N;;;;; +2FAE;KANGXI RADICAL WRONG;So;0;ON; 975E;;;;N;;;;; +2FAF;KANGXI RADICAL FACE;So;0;ON; 9762;;;;N;;;;; +2FB0;KANGXI RADICAL LEATHER;So;0;ON; 9769;;;;N;;;;; +2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON; 97CB;;;;N;;;;; +2FB2;KANGXI RADICAL LEEK;So;0;ON; 97ED;;;;N;;;;; +2FB3;KANGXI RADICAL SOUND;So;0;ON; 97F3;;;;N;;;;; +2FB4;KANGXI RADICAL LEAF;So;0;ON; 9801;;;;N;;;;; +2FB5;KANGXI RADICAL WIND;So;0;ON; 98A8;;;;N;;;;; +2FB6;KANGXI RADICAL FLY;So;0;ON; 98DB;;;;N;;;;; +2FB7;KANGXI RADICAL EAT;So;0;ON; 98DF;;;;N;;;;; +2FB8;KANGXI RADICAL HEAD;So;0;ON; 9996;;;;N;;;;; +2FB9;KANGXI RADICAL FRAGRANT;So;0;ON; 9999;;;;N;;;;; +2FBA;KANGXI RADICAL HORSE;So;0;ON; 99AC;;;;N;;;;; +2FBB;KANGXI RADICAL BONE;So;0;ON; 9AA8;;;;N;;;;; +2FBC;KANGXI RADICAL TALL;So;0;ON; 9AD8;;;;N;;;;; +2FBD;KANGXI RADICAL HAIR;So;0;ON; 9ADF;;;;N;;;;; +2FBE;KANGXI RADICAL FIGHT;So;0;ON; 9B25;;;;N;;;;; +2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON; 9B2F;;;;N;;;;; +2FC0;KANGXI RADICAL CAULDRON;So;0;ON; 9B32;;;;N;;;;; +2FC1;KANGXI RADICAL GHOST;So;0;ON; 9B3C;;;;N;;;;; +2FC2;KANGXI RADICAL FISH;So;0;ON; 9B5A;;;;N;;;;; +2FC3;KANGXI RADICAL BIRD;So;0;ON; 9CE5;;;;N;;;;; +2FC4;KANGXI RADICAL SALT;So;0;ON; 9E75;;;;N;;;;; +2FC5;KANGXI RADICAL DEER;So;0;ON; 9E7F;;;;N;;;;; +2FC6;KANGXI RADICAL WHEAT;So;0;ON; 9EA5;;;;N;;;;; +2FC7;KANGXI RADICAL HEMP;So;0;ON; 9EBB;;;;N;;;;; +2FC8;KANGXI RADICAL YELLOW;So;0;ON; 9EC3;;;;N;;;;; +2FC9;KANGXI RADICAL MILLET;So;0;ON; 9ECD;;;;N;;;;; +2FCA;KANGXI RADICAL BLACK;So;0;ON; 9ED1;;;;N;;;;; +2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON; 9EF9;;;;N;;;;; +2FCC;KANGXI RADICAL FROG;So;0;ON; 9EFD;;;;N;;;;; +2FCD;KANGXI RADICAL TRIPOD;So;0;ON; 9F0E;;;;N;;;;; +2FCE;KANGXI RADICAL DRUM;So;0;ON; 9F13;;;;N;;;;; +2FCF;KANGXI RADICAL RAT;So;0;ON; 9F20;;;;N;;;;; +2FD0;KANGXI RADICAL NOSE;So;0;ON; 9F3B;;;;N;;;;; +2FD1;KANGXI RADICAL EVEN;So;0;ON; 9F4A;;;;N;;;;; +2FD2;KANGXI RADICAL TOOTH;So;0;ON; 9F52;;;;N;;;;; +2FD3;KANGXI RADICAL DRAGON;So;0;ON; 9F8D;;;;N;;;;; +2FD4;KANGXI RADICAL TURTLE;So;0;ON; 9F9C;;;;N;;;;; +2FD5;KANGXI RADICAL FLUTE;So;0;ON; 9FA0;;;;N;;;;; +2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; +2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; +2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; +2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; +2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; +2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; +2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; +2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; +2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; +2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; +2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; +2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; +3000;IDEOGRAPHIC SPACE;Zs;0;WS; 0020;;;;N;;;;; +3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; +3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; +3003;DITTO MARK;Po;0;ON;;;;;N;;;;; +3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; +3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; +3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; +3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; +3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; +3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; +300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; +300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; +300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; +300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; +300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; +300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; +3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; +3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; +3012;POSTAL MARK;So;0;ON;;;;;N;;;;; +3013;GETA MARK;So;0;ON;;;;;N;;;;; +3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; +3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; +3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; +3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; +3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; +3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; +301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; +301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; +301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; +301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;; +301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; +301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; +3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; +3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; +3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; +3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; +3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; +3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; +3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; +3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; +3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; +3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; +302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; +302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; +302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; +302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; +302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; +302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; +3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; +3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; +3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; +3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; +3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; +3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; +3036;CIRCLED POSTAL MARK;So;0;ON; 3012;;;;N;;;;; +3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; +3038;HANGZHOU NUMERAL TEN;Nl;0;L; 5341;;;10;N;;;;; +3039;HANGZHOU NUMERAL TWENTY;Nl;0;L; 5344;;;20;N;;;;; +303A;HANGZHOU NUMERAL THIRTY;Nl;0;L; 5345;;;30;N;;;;; +303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; +303C;MASU MARK;Lo;0;L;;;;;N;;;;; +303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; +303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; +303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; +3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; +3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; +3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; +3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; +3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; +3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; +3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; +3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; +304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; +304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; +304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; +304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; +304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; +304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; +3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; +3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; +3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; +3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; +3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; +3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; +3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; +3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; +3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; +3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; +305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; +305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; +305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; +305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; +305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; +305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; +3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; +3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; +3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; +3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; +3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; +3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; +3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; +3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; +3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; +3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; +306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; +306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; +306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; +306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; +306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; +306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; +3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; +3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; +3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; +3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; +3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; +3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; +3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; +3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; +3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; +3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; +307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; +307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; +307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; +307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; +307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; +307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; +3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; +3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; +3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; +3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; +3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; +3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; +3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; +3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; +3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; +3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; +308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; +308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; +308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; +308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; +308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; +308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; +3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; +3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; +3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; +3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; +3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; +3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; +3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; +3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; +309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; +309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON; 0020 3099;;;;N;;;;; +309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON; 0020 309A;;;;N;;;;; +309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; +309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; +309F;HIRAGANA DIGRAPH YORI;Lo;0;L; 3088 308A;;;;N;;;;; +30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; +30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; +30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; +30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; +30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; +30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; +30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; +30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; +30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; +30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; +30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; +30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; +30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; +30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; +30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; +30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; +30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; +30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; +30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; +30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; +30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; +30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; +30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; +30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; +30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; +30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; +30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; +30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; +30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; +30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; +30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; +30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; +30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; +30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; +30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; +30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; +30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; +30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; +30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; +30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; +30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; +30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; +30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; +30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; +30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; +30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; +30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; +30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; +30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; +30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; +30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; +30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; +30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; +30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; +30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; +30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; +30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; +30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; +30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; +30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; +30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; +30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; +30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; +30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; +30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; +30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; +30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; +30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; +30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; +30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; +30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; +30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; +30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; +30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; +30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; +30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; +30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; +30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; +30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; +30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; +30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; +30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; +30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; +30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; +30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; +30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; +30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; +30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; +30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; +30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; +30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;; +30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; +30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; +30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; +30FF;KATAKANA DIGRAPH KOTO;Lo;0;L; 30B3 30C8;;;;N;;;;; +3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; +3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; +3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; +3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; +3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; +310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; +310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; +310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; +310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; +310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; +310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; +3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; +3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; +3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; +3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; +3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; +3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; +3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; +3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; +3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; +3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; +311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; +311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; +311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; +311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; +311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; +311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; +3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; +3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; +3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; +3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; +3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; +3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; +3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; +3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; +3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; +3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; +312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; +312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; +312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; +3131;HANGUL LETTER KIYEOK;Lo;0;L; 1100;;;;N;HANGUL LETTER GIYEOG;;;; +3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L; 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; +3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; +3134;HANGUL LETTER NIEUN;Lo;0;L; 1102;;;;N;;;;; +3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; +3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; +3137;HANGUL LETTER TIKEUT;Lo;0;L; 1103;;;;N;HANGUL LETTER DIGEUD;;;; +3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L; 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; +3139;HANGUL LETTER RIEUL;Lo;0;L; 1105;;;;N;HANGUL LETTER LIEUL;;;; +313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; +313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; +313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; +313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L; 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; +313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; +313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; +3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; +3141;HANGUL LETTER MIEUM;Lo;0;L; 1106;;;;N;;;;; +3142;HANGUL LETTER PIEUP;Lo;0;L; 1107;;;;N;HANGUL LETTER BIEUB;;;; +3143;HANGUL LETTER SSANGPIEUP;Lo;0;L; 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; +3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L; 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; +3145;HANGUL LETTER SIOS;Lo;0;L; 1109;;;;N;;;;; +3146;HANGUL LETTER SSANGSIOS;Lo;0;L; 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; +3147;HANGUL LETTER IEUNG;Lo;0;L; 110B;;;;N;;;;; +3148;HANGUL LETTER CIEUC;Lo;0;L; 110C;;;;N;HANGUL LETTER JIEUJ;;;; +3149;HANGUL LETTER SSANGCIEUC;Lo;0;L; 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; +314A;HANGUL LETTER CHIEUCH;Lo;0;L; 110E;;;;N;HANGUL LETTER CIEUC;;;; +314B;HANGUL LETTER KHIEUKH;Lo;0;L; 110F;;;;N;HANGUL LETTER KIYEOK;;;; +314C;HANGUL LETTER THIEUTH;Lo;0;L; 1110;;;;N;HANGUL LETTER TIEUT;;;; +314D;HANGUL LETTER PHIEUPH;Lo;0;L; 1111;;;;N;HANGUL LETTER PIEUP;;;; +314E;HANGUL LETTER HIEUH;Lo;0;L; 1112;;;;N;;;;; +314F;HANGUL LETTER A;Lo;0;L; 1161;;;;N;;;;; +3150;HANGUL LETTER AE;Lo;0;L; 1162;;;;N;;;;; +3151;HANGUL LETTER YA;Lo;0;L; 1163;;;;N;;;;; +3152;HANGUL LETTER YAE;Lo;0;L; 1164;;;;N;;;;; +3153;HANGUL LETTER EO;Lo;0;L; 1165;;;;N;;;;; +3154;HANGUL LETTER E;Lo;0;L; 1166;;;;N;;;;; +3155;HANGUL LETTER YEO;Lo;0;L; 1167;;;;N;;;;; +3156;HANGUL LETTER YE;Lo;0;L; 1168;;;;N;;;;; +3157;HANGUL LETTER O;Lo;0;L; 1169;;;;N;;;;; +3158;HANGUL LETTER WA;Lo;0;L; 116A;;;;N;;;;; +3159;HANGUL LETTER WAE;Lo;0;L; 116B;;;;N;;;;; +315A;HANGUL LETTER OE;Lo;0;L; 116C;;;;N;;;;; +315B;HANGUL LETTER YO;Lo;0;L; 116D;;;;N;;;;; +315C;HANGUL LETTER U;Lo;0;L; 116E;;;;N;;;;; +315D;HANGUL LETTER WEO;Lo;0;L; 116F;;;;N;;;;; +315E;HANGUL LETTER WE;Lo;0;L; 1170;;;;N;;;;; +315F;HANGUL LETTER WI;Lo;0;L; 1171;;;;N;;;;; +3160;HANGUL LETTER YU;Lo;0;L; 1172;;;;N;;;;; +3161;HANGUL LETTER EU;Lo;0;L; 1173;;;;N;;;;; +3162;HANGUL LETTER YI;Lo;0;L; 1174;;;;N;;;;; +3163;HANGUL LETTER I;Lo;0;L; 1175;;;;N;;;;; +3164;HANGUL FILLER;Lo;0;L; 1160;;;;N;HANGUL CAE OM;;;; +3165;HANGUL LETTER SSANGNIEUN;Lo;0;L; 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; +3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L; 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; +3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L; 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; +3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L; 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; +3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L; 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; +316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L; 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; +316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L; 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; +316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L; 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; +316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L; 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; +316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L; 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; +316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L; 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; +3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L; 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; +3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L; 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; +3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L; 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; +3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L; 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; +3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L; 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; +3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L; 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; +3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L; 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; +3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L; 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; +3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L; 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; +3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L; 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; +317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L; 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; +317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L; 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; +317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L; 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; +317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L; 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; +317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L; 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; +317F;HANGUL LETTER PANSIOS;Lo;0;L; 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; +3180;HANGUL LETTER SSANGIEUNG;Lo;0;L; 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; +3181;HANGUL LETTER YESIEUNG;Lo;0;L; 114C;;;;N;HANGUL LETTER NGIEUNG;;;; +3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L; 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; +3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L; 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; +3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L; 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; +3185;HANGUL LETTER SSANGHIEUH;Lo;0;L; 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; +3186;HANGUL LETTER YEORINHIEUH;Lo;0;L; 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; +3187;HANGUL LETTER YO-YA;Lo;0;L; 1184;;;;N;HANGUL LETTER YOYA;;;; +3188;HANGUL LETTER YO-YAE;Lo;0;L; 1185;;;;N;HANGUL LETTER YOYAE;;;; +3189;HANGUL LETTER YO-I;Lo;0;L; 1188;;;;N;HANGUL LETTER YOI;;;; +318A;HANGUL LETTER YU-YEO;Lo;0;L; 1191;;;;N;HANGUL LETTER YUYEO;;;; +318B;HANGUL LETTER YU-YE;Lo;0;L; 1192;;;;N;HANGUL LETTER YUYE;;;; +318C;HANGUL LETTER YU-I;Lo;0;L; 1194;;;;N;HANGUL LETTER YUI;;;; +318D;HANGUL LETTER ARAEA;Lo;0;L; 119E;;;;N;HANGUL LETTER ALAE A;;;; +318E;HANGUL LETTER ARAEAE;Lo;0;L; 11A1;;;;N;HANGUL LETTER ALAE AE;;;; +3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;; +3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;; +3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L; 4E00;;;1;N;KAERITEN ITI;Kaeriten;;; +3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L; 4E8C;;;2;N;KAERITEN NI;Kaeriten;;; +3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L; 4E09;;;3;N;KAERITEN SAN;Kaeriten;;; +3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L; 56DB;;;4;N;KAERITEN SI;Kaeriten;;; +3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L; 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;; +3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L; 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;; +3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L; 4E0B;;;;N;KAERITEN GE;Kaeriten;;; +3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L; 7532;;;;N;KAERITEN KOU;Kaeriten;;; +319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L; 4E59;;;;N;KAERITEN OTU;Kaeriten;;; +319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L; 4E19;;;;N;KAERITEN HEI;Kaeriten;;; +319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L; 4E01;;;;N;KAERITEN TEI;Kaeriten;;; +319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L; 5929;;;;N;KAERITEN TEN;Kaeriten;;; +319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L; 5730;;;;N;KAERITEN TI;Kaeriten;;; +319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L; 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;; +31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; +31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; +31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; +31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; +31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; +31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; +31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; +31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; +31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; +31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; +31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; +31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; +31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; +31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; +31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; +31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; +31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; +31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; +31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; +31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; +31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; +31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; +31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; +31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; +31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; +31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; +31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; +31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; +31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; +31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; +31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; +31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; +31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; +31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; +31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; +31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; +31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; +31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; +31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; +31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; +3200;PARENTHESIZED HANGUL KIYEOK;So;0;L; 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; +3201;PARENTHESIZED HANGUL NIEUN;So;0;L; 0028 1102 0029;;;;N;;;;; +3202;PARENTHESIZED HANGUL TIKEUT;So;0;L; 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; +3203;PARENTHESIZED HANGUL RIEUL;So;0;L; 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; +3204;PARENTHESIZED HANGUL MIEUM;So;0;L; 0028 1106 0029;;;;N;;;;; +3205;PARENTHESIZED HANGUL PIEUP;So;0;L; 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; +3206;PARENTHESIZED HANGUL SIOS;So;0;L; 0028 1109 0029;;;;N;;;;; +3207;PARENTHESIZED HANGUL IEUNG;So;0;L; 0028 110B 0029;;;;N;;;;; +3208;PARENTHESIZED HANGUL CIEUC;So;0;L; 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; +3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L; 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; +320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L; 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; +320B;PARENTHESIZED HANGUL THIEUTH;So;0;L; 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; +320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L; 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; +320D;PARENTHESIZED HANGUL HIEUH;So;0;L; 0028 1112 0029;;;;N;;;;; +320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L; 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; +320F;PARENTHESIZED HANGUL NIEUN A;So;0;L; 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; +3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L; 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; +3211;PARENTHESIZED HANGUL RIEUL A;So;0;L; 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; +3212;PARENTHESIZED HANGUL MIEUM A;So;0;L; 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; +3213;PARENTHESIZED HANGUL PIEUP A;So;0;L; 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; +3214;PARENTHESIZED HANGUL SIOS A;So;0;L; 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; +3215;PARENTHESIZED HANGUL IEUNG A;So;0;L; 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; +3216;PARENTHESIZED HANGUL CIEUC A;So;0;L; 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; +3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L; 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; +3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L; 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; +3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L; 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; +321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L; 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; +321B;PARENTHESIZED HANGUL HIEUH A;So;0;L; 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; +321C;PARENTHESIZED HANGUL CIEUC U;So;0;L; 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; +3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L; 0028 4E00 0029;;;1;N;;;;; +3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L; 0028 4E8C 0029;;;2;N;;;;; +3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L; 0028 4E09 0029;;;3;N;;;;; +3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L; 0028 56DB 0029;;;4;N;;;;; +3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L; 0028 4E94 0029;;;5;N;;;;; +3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L; 0028 516D 0029;;;6;N;;;;; +3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L; 0028 4E03 0029;;;7;N;;;;; +3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L; 0028 516B 0029;;;8;N;;;;; +3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L; 0028 4E5D 0029;;;9;N;;;;; +3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L; 0028 5341 0029;;;10;N;;;;; +322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L; 0028 6708 0029;;;;N;;;;; +322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L; 0028 706B 0029;;;;N;;;;; +322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L; 0028 6C34 0029;;;;N;;;;; +322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L; 0028 6728 0029;;;;N;;;;; +322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L; 0028 91D1 0029;;;;N;;;;; +322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L; 0028 571F 0029;;;;N;;;;; +3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L; 0028 65E5 0029;;;;N;;;;; +3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L; 0028 682A 0029;;;;N;;;;; +3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L; 0028 6709 0029;;;;N;;;;; +3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L; 0028 793E 0029;;;;N;;;;; +3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L; 0028 540D 0029;;;;N;;;;; +3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L; 0028 7279 0029;;;;N;;;;; +3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L; 0028 8CA1 0029;;;;N;;;;; +3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L; 0028 795D 0029;;;;N;;;;; +3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L; 0028 52B4 0029;;;;N;;;;; +3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L; 0028 4EE3 0029;;;;N;;;;; +323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L; 0028 547C 0029;;;;N;;;;; +323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L; 0028 5B66 0029;;;;N;;;;; +323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L; 0028 76E3 0029;;;;N;;;;; +323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L; 0028 4F01 0029;;;;N;;;;; +323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L; 0028 8CC7 0029;;;;N;;;;; +323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L; 0028 5354 0029;;;;N;;;;; +3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L; 0028 796D 0029;;;;N;;;;; +3241;PARENTHESIZED IDEOGRAPH REST;So;0;L; 0028 4F11 0029;;;;N;;;;; +3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L; 0028 81EA 0029;;;;N;;;;; +3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L; 0028 81F3 0029;;;;N;;;;; +3251;CIRCLED NUMBER TWENTY ONE;No;0;ON; 0032 0031;;;21;N;;;;; +3252;CIRCLED NUMBER TWENTY TWO;No;0;ON; 0032 0032;;;22;N;;;;; +3253;CIRCLED NUMBER TWENTY THREE;No;0;ON; 0032 0033;;;23;N;;;;; +3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON; 0032 0034;;;24;N;;;;; +3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON; 0032 0035;;;25;N;;;;; +3256;CIRCLED NUMBER TWENTY SIX;No;0;ON; 0032 0036;;;26;N;;;;; +3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON; 0032 0037;;;27;N;;;;; +3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON; 0032 0038;;;28;N;;;;; +3259;CIRCLED NUMBER TWENTY NINE;No;0;ON; 0032 0039;;;29;N;;;;; +325A;CIRCLED NUMBER THIRTY;No;0;ON; 0033 0030;;;30;N;;;;; +325B;CIRCLED NUMBER THIRTY ONE;No;0;ON; 0033 0031;;;31;N;;;;; +325C;CIRCLED NUMBER THIRTY TWO;No;0;ON; 0033 0032;;;32;N;;;;; +325D;CIRCLED NUMBER THIRTY THREE;No;0;ON; 0033 0033;;;33;N;;;;; +325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON; 0033 0034;;;34;N;;;;; +325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON; 0033 0035;;;35;N;;;;; +3260;CIRCLED HANGUL KIYEOK;So;0;L; 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; +3261;CIRCLED HANGUL NIEUN;So;0;L; 1102;;;;N;;;;; +3262;CIRCLED HANGUL TIKEUT;So;0;L; 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; +3263;CIRCLED HANGUL RIEUL;So;0;L; 1105;;;;N;CIRCLED HANGUL LIEUL;;;; +3264;CIRCLED HANGUL MIEUM;So;0;L; 1106;;;;N;;;;; +3265;CIRCLED HANGUL PIEUP;So;0;L; 1107;;;;N;CIRCLED HANGUL BIEUB;;;; +3266;CIRCLED HANGUL SIOS;So;0;L; 1109;;;;N;;;;; +3267;CIRCLED HANGUL IEUNG;So;0;L; 110B;;;;N;;;;; +3268;CIRCLED HANGUL CIEUC;So;0;L; 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; +3269;CIRCLED HANGUL CHIEUCH;So;0;L; 110E;;;;N;CIRCLED HANGUL CIEUC;;;; +326A;CIRCLED HANGUL KHIEUKH;So;0;L; 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; +326B;CIRCLED HANGUL THIEUTH;So;0;L; 1110;;;;N;CIRCLED HANGUL TIEUT;;;; +326C;CIRCLED HANGUL PHIEUPH;So;0;L; 1111;;;;N;CIRCLED HANGUL PIEUP;;;; +326D;CIRCLED HANGUL HIEUH;So;0;L; 1112;;;;N;;;;; +326E;CIRCLED HANGUL KIYEOK A;So;0;L; 1100 1161;;;;N;CIRCLED HANGUL GA;;;; +326F;CIRCLED HANGUL NIEUN A;So;0;L; 1102 1161;;;;N;CIRCLED HANGUL NA;;;; +3270;CIRCLED HANGUL TIKEUT A;So;0;L; 1103 1161;;;;N;CIRCLED HANGUL DA;;;; +3271;CIRCLED HANGUL RIEUL A;So;0;L; 1105 1161;;;;N;CIRCLED HANGUL LA;;;; +3272;CIRCLED HANGUL MIEUM A;So;0;L; 1106 1161;;;;N;CIRCLED HANGUL MA;;;; +3273;CIRCLED HANGUL PIEUP A;So;0;L; 1107 1161;;;;N;CIRCLED HANGUL BA;;;; +3274;CIRCLED HANGUL SIOS A;So;0;L; 1109 1161;;;;N;CIRCLED HANGUL SA;;;; +3275;CIRCLED HANGUL IEUNG A;So;0;L; 110B 1161;;;;N;CIRCLED HANGUL A;;;; +3276;CIRCLED HANGUL CIEUC A;So;0;L; 110C 1161;;;;N;CIRCLED HANGUL JA;;;; +3277;CIRCLED HANGUL CHIEUCH A;So;0;L; 110E 1161;;;;N;CIRCLED HANGUL CA;;;; +3278;CIRCLED HANGUL KHIEUKH A;So;0;L; 110F 1161;;;;N;CIRCLED HANGUL KA;;;; +3279;CIRCLED HANGUL THIEUTH A;So;0;L; 1110 1161;;;;N;CIRCLED HANGUL TA;;;; +327A;CIRCLED HANGUL PHIEUPH A;So;0;L; 1111 1161;;;;N;CIRCLED HANGUL PA;;;; +327B;CIRCLED HANGUL HIEUH A;So;0;L; 1112 1161;;;;N;CIRCLED HANGUL HA;;;; +327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; +3280;CIRCLED IDEOGRAPH ONE;No;0;L; 4E00;;;1;N;;;;; +3281;CIRCLED IDEOGRAPH TWO;No;0;L; 4E8C;;;2;N;;;;; +3282;CIRCLED IDEOGRAPH THREE;No;0;L; 4E09;;;3;N;;;;; +3283;CIRCLED IDEOGRAPH FOUR;No;0;L; 56DB;;;4;N;;;;; +3284;CIRCLED IDEOGRAPH FIVE;No;0;L; 4E94;;;5;N;;;;; +3285;CIRCLED IDEOGRAPH SIX;No;0;L; 516D;;;6;N;;;;; +3286;CIRCLED IDEOGRAPH SEVEN;No;0;L; 4E03;;;7;N;;;;; +3287;CIRCLED IDEOGRAPH EIGHT;No;0;L; 516B;;;8;N;;;;; +3288;CIRCLED IDEOGRAPH NINE;No;0;L; 4E5D;;;9;N;;;;; +3289;CIRCLED IDEOGRAPH TEN;No;0;L; 5341;;;10;N;;;;; +328A;CIRCLED IDEOGRAPH MOON;So;0;L; 6708;;;;N;;;;; +328B;CIRCLED IDEOGRAPH FIRE;So;0;L; 706B;;;;N;;;;; +328C;CIRCLED IDEOGRAPH WATER;So;0;L; 6C34;;;;N;;;;; +328D;CIRCLED IDEOGRAPH WOOD;So;0;L; 6728;;;;N;;;;; +328E;CIRCLED IDEOGRAPH METAL;So;0;L; 91D1;;;;N;;;;; +328F;CIRCLED IDEOGRAPH EARTH;So;0;L; 571F;;;;N;;;;; +3290;CIRCLED IDEOGRAPH SUN;So;0;L; 65E5;;;;N;;;;; +3291;CIRCLED IDEOGRAPH STOCK;So;0;L; 682A;;;;N;;;;; +3292;CIRCLED IDEOGRAPH HAVE;So;0;L; 6709;;;;N;;;;; +3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L; 793E;;;;N;;;;; +3294;CIRCLED IDEOGRAPH NAME;So;0;L; 540D;;;;N;;;;; +3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L; 7279;;;;N;;;;; +3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L; 8CA1;;;;N;;;;; +3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L; 795D;;;;N;;;;; +3298;CIRCLED IDEOGRAPH LABOR;So;0;L; 52B4;;;;N;;;;; +3299;CIRCLED IDEOGRAPH SECRET;So;0;L; 79D8;;;;N;;;;; +329A;CIRCLED IDEOGRAPH MALE;So;0;L; 7537;;;;N;;;;; +329B;CIRCLED IDEOGRAPH FEMALE;So;0;L; 5973;;;;N;;;;; +329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L; 9069;;;;N;;;;; +329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L; 512A;;;;N;;;;; +329E;CIRCLED IDEOGRAPH PRINT;So;0;L; 5370;;;;N;;;;; +329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L; 6CE8;;;;N;;;;; +32A0;CIRCLED IDEOGRAPH ITEM;So;0;L; 9805;;;;N;;;;; +32A1;CIRCLED IDEOGRAPH REST;So;0;L; 4F11;;;;N;;;;; +32A2;CIRCLED IDEOGRAPH COPY;So;0;L; 5199;;;;N;;;;; +32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L; 6B63;;;;N;;;;; +32A4;CIRCLED IDEOGRAPH HIGH;So;0;L; 4E0A;;;;N;;;;; +32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L; 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; +32A6;CIRCLED IDEOGRAPH LOW;So;0;L; 4E0B;;;;N;;;;; +32A7;CIRCLED IDEOGRAPH LEFT;So;0;L; 5DE6;;;;N;;;;; +32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L; 53F3;;;;N;;;;; +32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L; 533B;;;;N;;;;; +32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L; 5B97;;;;N;;;;; +32AB;CIRCLED IDEOGRAPH STUDY;So;0;L; 5B66;;;;N;;;;; +32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L; 76E3;;;;N;;;;; +32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L; 4F01;;;;N;;;;; +32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L; 8CC7;;;;N;;;;; +32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L; 5354;;;;N;;;;; +32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L; 591C;;;;N;;;;; +32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON; 0033 0036;;;36;N;;;;; +32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON; 0033 0037;;;37;N;;;;; +32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON; 0033 0038;;;38;N;;;;; +32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON; 0033 0039;;;39;N;;;;; +32B5;CIRCLED NUMBER FORTY;No;0;ON; 0034 0030;;;40;N;;;;; +32B6;CIRCLED NUMBER FORTY ONE;No;0;ON; 0034 0031;;;41;N;;;;; +32B7;CIRCLED NUMBER FORTY TWO;No;0;ON; 0034 0032;;;42;N;;;;; +32B8;CIRCLED NUMBER FORTY THREE;No;0;ON; 0034 0033;;;43;N;;;;; +32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON; 0034 0034;;;44;N;;;;; +32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON; 0034 0035;;;45;N;;;;; +32BB;CIRCLED NUMBER FORTY SIX;No;0;ON; 0034 0036;;;46;N;;;;; +32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON; 0034 0037;;;47;N;;;;; +32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON; 0034 0038;;;48;N;;;;; +32BE;CIRCLED NUMBER FORTY NINE;No;0;ON; 0034 0039;;;49;N;;;;; +32BF;CIRCLED NUMBER FIFTY;No;0;ON; 0035 0030;;;50;N;;;;; +32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L; 0031 6708;;;;N;;;;; +32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L; 0032 6708;;;;N;;;;; +32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L; 0033 6708;;;;N;;;;; +32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L; 0034 6708;;;;N;;;;; +32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L; 0035 6708;;;;N;;;;; +32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L; 0036 6708;;;;N;;;;; +32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L; 0037 6708;;;;N;;;;; +32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L; 0038 6708;;;;N;;;;; +32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L; 0039 6708;;;;N;;;;; +32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L; 0031 0030 6708;;;;N;;;;; +32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L; 0031 0031 6708;;;;N;;;;; +32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L; 0031 0032 6708;;;;N;;;;; +32D0;CIRCLED KATAKANA A;So;0;L; 30A2;;;;N;;;;; +32D1;CIRCLED KATAKANA I;So;0;L; 30A4;;;;N;;;;; +32D2;CIRCLED KATAKANA U;So;0;L; 30A6;;;;N;;;;; +32D3;CIRCLED KATAKANA E;So;0;L; 30A8;;;;N;;;;; +32D4;CIRCLED KATAKANA O;So;0;L; 30AA;;;;N;;;;; +32D5;CIRCLED KATAKANA KA;So;0;L; 30AB;;;;N;;;;; +32D6;CIRCLED KATAKANA KI;So;0;L; 30AD;;;;N;;;;; +32D7;CIRCLED KATAKANA KU;So;0;L; 30AF;;;;N;;;;; +32D8;CIRCLED KATAKANA KE;So;0;L; 30B1;;;;N;;;;; +32D9;CIRCLED KATAKANA KO;So;0;L; 30B3;;;;N;;;;; +32DA;CIRCLED KATAKANA SA;So;0;L; 30B5;;;;N;;;;; +32DB;CIRCLED KATAKANA SI;So;0;L; 30B7;;;;N;;;;; +32DC;CIRCLED KATAKANA SU;So;0;L; 30B9;;;;N;;;;; +32DD;CIRCLED KATAKANA SE;So;0;L; 30BB;;;;N;;;;; +32DE;CIRCLED KATAKANA SO;So;0;L; 30BD;;;;N;;;;; +32DF;CIRCLED KATAKANA TA;So;0;L; 30BF;;;;N;;;;; +32E0;CIRCLED KATAKANA TI;So;0;L; 30C1;;;;N;;;;; +32E1;CIRCLED KATAKANA TU;So;0;L; 30C4;;;;N;;;;; +32E2;CIRCLED KATAKANA TE;So;0;L; 30C6;;;;N;;;;; +32E3;CIRCLED KATAKANA TO;So;0;L; 30C8;;;;N;;;;; +32E4;CIRCLED KATAKANA NA;So;0;L; 30CA;;;;N;;;;; +32E5;CIRCLED KATAKANA NI;So;0;L; 30CB;;;;N;;;;; +32E6;CIRCLED KATAKANA NU;So;0;L; 30CC;;;;N;;;;; +32E7;CIRCLED KATAKANA NE;So;0;L; 30CD;;;;N;;;;; +32E8;CIRCLED KATAKANA NO;So;0;L; 30CE;;;;N;;;;; +32E9;CIRCLED KATAKANA HA;So;0;L; 30CF;;;;N;;;;; +32EA;CIRCLED KATAKANA HI;So;0;L; 30D2;;;;N;;;;; +32EB;CIRCLED KATAKANA HU;So;0;L; 30D5;;;;N;;;;; +32EC;CIRCLED KATAKANA HE;So;0;L; 30D8;;;;N;;;;; +32ED;CIRCLED KATAKANA HO;So;0;L; 30DB;;;;N;;;;; +32EE;CIRCLED KATAKANA MA;So;0;L; 30DE;;;;N;;;;; +32EF;CIRCLED KATAKANA MI;So;0;L; 30DF;;;;N;;;;; +32F0;CIRCLED KATAKANA MU;So;0;L; 30E0;;;;N;;;;; +32F1;CIRCLED KATAKANA ME;So;0;L; 30E1;;;;N;;;;; +32F2;CIRCLED KATAKANA MO;So;0;L; 30E2;;;;N;;;;; +32F3;CIRCLED KATAKANA YA;So;0;L; 30E4;;;;N;;;;; +32F4;CIRCLED KATAKANA YU;So;0;L; 30E6;;;;N;;;;; +32F5;CIRCLED KATAKANA YO;So;0;L; 30E8;;;;N;;;;; +32F6;CIRCLED KATAKANA RA;So;0;L; 30E9;;;;N;;;;; +32F7;CIRCLED KATAKANA RI;So;0;L; 30EA;;;;N;;;;; +32F8;CIRCLED KATAKANA RU;So;0;L; 30EB;;;;N;;;;; +32F9;CIRCLED KATAKANA RE;So;0;L; 30EC;;;;N;;;;; +32FA;CIRCLED KATAKANA RO;So;0;L; 30ED;;;;N;;;;; +32FB;CIRCLED KATAKANA WA;So;0;L; 30EF;;;;N;;;;; +32FC;CIRCLED KATAKANA WI;So;0;L; 30F0;;;;N;;;;; +32FD;CIRCLED KATAKANA WE;So;0;L; 30F1;;;;N;;;;; +32FE;CIRCLED KATAKANA WO;So;0;L; 30F2;;;;N;;;;; +3300;SQUARE APAATO;So;0;L; 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; +3301;SQUARE ARUHUA;So;0;L; 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; +3302;SQUARE ANPEA;So;0;L; 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; +3303;SQUARE AARU;So;0;L; 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; +3304;SQUARE ININGU;So;0;L; 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; +3305;SQUARE INTI;So;0;L; 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; +3306;SQUARE UON;So;0;L; 30A6 30A9 30F3;;;;N;SQUARED UON;;;; +3307;SQUARE ESUKUUDO;So;0;L; 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; +3308;SQUARE EEKAA;So;0;L; 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; +3309;SQUARE ONSU;So;0;L; 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; +330A;SQUARE OOMU;So;0;L; 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; +330B;SQUARE KAIRI;So;0;L; 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; +330C;SQUARE KARATTO;So;0;L; 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; +330D;SQUARE KARORII;So;0;L; 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; +330E;SQUARE GARON;So;0;L; 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; +330F;SQUARE GANMA;So;0;L; 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; +3310;SQUARE GIGA;So;0;L; 30AE 30AC;;;;N;SQUARED GIGA;;;; +3311;SQUARE GINII;So;0;L; 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; +3312;SQUARE KYURII;So;0;L; 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; +3313;SQUARE GIRUDAA;So;0;L; 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; +3314;SQUARE KIRO;So;0;L; 30AD 30ED;;;;N;SQUARED KIRO;;;; +3315;SQUARE KIROGURAMU;So;0;L; 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; +3316;SQUARE KIROMEETORU;So;0;L; 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; +3317;SQUARE KIROWATTO;So;0;L; 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; +3318;SQUARE GURAMU;So;0;L; 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; +3319;SQUARE GURAMUTON;So;0;L; 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; +331A;SQUARE KURUZEIRO;So;0;L; 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; +331B;SQUARE KUROONE;So;0;L; 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; +331C;SQUARE KEESU;So;0;L; 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; +331D;SQUARE KORUNA;So;0;L; 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; +331E;SQUARE KOOPO;So;0;L; 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; +331F;SQUARE SAIKURU;So;0;L; 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; +3320;SQUARE SANTIIMU;So;0;L; 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; +3321;SQUARE SIRINGU;So;0;L; 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; +3322;SQUARE SENTI;So;0;L; 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; +3323;SQUARE SENTO;So;0;L; 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; +3324;SQUARE DAASU;So;0;L; 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; +3325;SQUARE DESI;So;0;L; 30C7 30B7;;;;N;SQUARED DESI;;;; +3326;SQUARE DORU;So;0;L; 30C9 30EB;;;;N;SQUARED DORU;;;; +3327;SQUARE TON;So;0;L; 30C8 30F3;;;;N;SQUARED TON;;;; +3328;SQUARE NANO;So;0;L; 30CA 30CE;;;;N;SQUARED NANO;;;; +3329;SQUARE NOTTO;So;0;L; 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; +332A;SQUARE HAITU;So;0;L; 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; +332B;SQUARE PAASENTO;So;0;L; 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; +332C;SQUARE PAATU;So;0;L; 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; +332D;SQUARE BAARERU;So;0;L; 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; +332E;SQUARE PIASUTORU;So;0;L; 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; +332F;SQUARE PIKURU;So;0;L; 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; +3330;SQUARE PIKO;So;0;L; 30D4 30B3;;;;N;SQUARED PIKO;;;; +3331;SQUARE BIRU;So;0;L; 30D3 30EB;;;;N;SQUARED BIRU;;;; +3332;SQUARE HUARADDO;So;0;L; 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; +3333;SQUARE HUIITO;So;0;L; 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; +3334;SQUARE BUSSYERU;So;0;L; 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; +3335;SQUARE HURAN;So;0;L; 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; +3336;SQUARE HEKUTAARU;So;0;L; 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; +3337;SQUARE PESO;So;0;L; 30DA 30BD;;;;N;SQUARED PESO;;;; +3338;SQUARE PENIHI;So;0;L; 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; +3339;SQUARE HERUTU;So;0;L; 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; +333A;SQUARE PENSU;So;0;L; 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; +333B;SQUARE PEEZI;So;0;L; 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; +333C;SQUARE BEETA;So;0;L; 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; +333D;SQUARE POINTO;So;0;L; 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; +333E;SQUARE BORUTO;So;0;L; 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; +333F;SQUARE HON;So;0;L; 30DB 30F3;;;;N;SQUARED HON;;;; +3340;SQUARE PONDO;So;0;L; 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; +3341;SQUARE HOORU;So;0;L; 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; +3342;SQUARE HOON;So;0;L; 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; +3343;SQUARE MAIKURO;So;0;L; 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; +3344;SQUARE MAIRU;So;0;L; 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; +3345;SQUARE MAHHA;So;0;L; 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; +3346;SQUARE MARUKU;So;0;L; 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; +3347;SQUARE MANSYON;So;0;L; 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; +3348;SQUARE MIKURON;So;0;L; 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; +3349;SQUARE MIRI;So;0;L; 30DF 30EA;;;;N;SQUARED MIRI;;;; +334A;SQUARE MIRIBAARU;So;0;L; 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; +334B;SQUARE MEGA;So;0;L; 30E1 30AC;;;;N;SQUARED MEGA;;;; +334C;SQUARE MEGATON;So;0;L; 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; +334D;SQUARE MEETORU;So;0;L; 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; +334E;SQUARE YAADO;So;0;L; 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; +334F;SQUARE YAARU;So;0;L; 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; +3350;SQUARE YUAN;So;0;L; 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; +3351;SQUARE RITTORU;So;0;L; 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; +3352;SQUARE RIRA;So;0;L; 30EA 30E9;;;;N;SQUARED RIRA;;;; +3353;SQUARE RUPII;So;0;L; 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; +3354;SQUARE RUUBURU;So;0;L; 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; +3355;SQUARE REMU;So;0;L; 30EC 30E0;;;;N;SQUARED REMU;;;; +3356;SQUARE RENTOGEN;So;0;L; 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; +3357;SQUARE WATTO;So;0;L; 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; +3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L; 0030 70B9;;;;N;;;;; +3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L; 0031 70B9;;;;N;;;;; +335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L; 0032 70B9;;;;N;;;;; +335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L; 0033 70B9;;;;N;;;;; +335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L; 0034 70B9;;;;N;;;;; +335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L; 0035 70B9;;;;N;;;;; +335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L; 0036 70B9;;;;N;;;;; +335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L; 0037 70B9;;;;N;;;;; +3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L; 0038 70B9;;;;N;;;;; +3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L; 0039 70B9;;;;N;;;;; +3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L; 0031 0030 70B9;;;;N;;;;; +3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L; 0031 0031 70B9;;;;N;;;;; +3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L; 0031 0032 70B9;;;;N;;;;; +3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L; 0031 0033 70B9;;;;N;;;;; +3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L; 0031 0034 70B9;;;;N;;;;; +3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L; 0031 0035 70B9;;;;N;;;;; +3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L; 0031 0036 70B9;;;;N;;;;; +3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L; 0031 0037 70B9;;;;N;;;;; +336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L; 0031 0038 70B9;;;;N;;;;; +336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L; 0031 0039 70B9;;;;N;;;;; +336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L; 0032 0030 70B9;;;;N;;;;; +336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L; 0032 0031 70B9;;;;N;;;;; +336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L; 0032 0032 70B9;;;;N;;;;; +336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L; 0032 0033 70B9;;;;N;;;;; +3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L; 0032 0034 70B9;;;;N;;;;; +3371;SQUARE HPA;So;0;L; 0068 0050 0061;;;;N;;;;; +3372;SQUARE DA;So;0;L; 0064 0061;;;;N;;;;; +3373;SQUARE AU;So;0;L; 0041 0055;;;;N;;;;; +3374;SQUARE BAR;So;0;L; 0062 0061 0072;;;;N;;;;; +3375;SQUARE OV;So;0;L; 006F 0056;;;;N;;;;; +3376;SQUARE PC;So;0;L; 0070 0063;;;;N;;;;; +337B;SQUARE ERA NAME HEISEI;So;0;L; 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; +337C;SQUARE ERA NAME SYOUWA;So;0;L; 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; +337D;SQUARE ERA NAME TAISYOU;So;0;L; 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; +337E;SQUARE ERA NAME MEIZI;So;0;L; 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; +337F;SQUARE CORPORATION;So;0;L; 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; +3380;SQUARE PA AMPS;So;0;L; 0070 0041;;;;N;SQUARED PA AMPS;;;; +3381;SQUARE NA;So;0;L; 006E 0041;;;;N;SQUARED NA;;;; +3382;SQUARE MU A;So;0;L; 03BC 0041;;;;N;SQUARED MU A;;;; +3383;SQUARE MA;So;0;L; 006D 0041;;;;N;SQUARED MA;;;; +3384;SQUARE KA;So;0;L; 006B 0041;;;;N;SQUARED KA;;;; +3385;SQUARE KB;So;0;L; 004B 0042;;;;N;SQUARED KB;;;; +3386;SQUARE MB;So;0;L; 004D 0042;;;;N;SQUARED MB;;;; +3387;SQUARE GB;So;0;L; 0047 0042;;;;N;SQUARED GB;;;; +3388;SQUARE CAL;So;0;L; 0063 0061 006C;;;;N;SQUARED CAL;;;; +3389;SQUARE KCAL;So;0;L; 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; +338A;SQUARE PF;So;0;L; 0070 0046;;;;N;SQUARED PF;;;; +338B;SQUARE NF;So;0;L; 006E 0046;;;;N;SQUARED NF;;;; +338C;SQUARE MU F;So;0;L; 03BC 0046;;;;N;SQUARED MU F;;;; +338D;SQUARE MU G;So;0;L; 03BC 0067;;;;N;SQUARED MU G;;;; +338E;SQUARE MG;So;0;L; 006D 0067;;;;N;SQUARED MG;;;; +338F;SQUARE KG;So;0;L; 006B 0067;;;;N;SQUARED KG;;;; +3390;SQUARE HZ;So;0;L; 0048 007A;;;;N;SQUARED HZ;;;; +3391;SQUARE KHZ;So;0;L; 006B 0048 007A;;;;N;SQUARED KHZ;;;; +3392;SQUARE MHZ;So;0;L; 004D 0048 007A;;;;N;SQUARED MHZ;;;; +3393;SQUARE GHZ;So;0;L; 0047 0048 007A;;;;N;SQUARED GHZ;;;; +3394;SQUARE THZ;So;0;L; 0054 0048 007A;;;;N;SQUARED THZ;;;; +3395;SQUARE MU L;So;0;L; 03BC 2113;;;;N;SQUARED MU L;;;; +3396;SQUARE ML;So;0;L; 006D 2113;;;;N;SQUARED ML;;;; +3397;SQUARE DL;So;0;L; 0064 2113;;;;N;SQUARED DL;;;; +3398;SQUARE KL;So;0;L; 006B 2113;;;;N;SQUARED KL;;;; +3399;SQUARE FM;So;0;L; 0066 006D;;;;N;SQUARED FM;;;; +339A;SQUARE NM;So;0;L; 006E 006D;;;;N;SQUARED NM;;;; +339B;SQUARE MU M;So;0;L; 03BC 006D;;;;N;SQUARED MU M;;;; +339C;SQUARE MM;So;0;L; 006D 006D;;;;N;SQUARED MM;;;; +339D;SQUARE CM;So;0;L; 0063 006D;;;;N;SQUARED CM;;;; +339E;SQUARE KM;So;0;L; 006B 006D;;;;N;SQUARED KM;;;; +339F;SQUARE MM SQUARED;So;0;L; 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; +33A0;SQUARE CM SQUARED;So;0;L; 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; +33A1;SQUARE M SQUARED;So;0;L; 006D 00B2;;;;N;SQUARED M SQUARED;;;; +33A2;SQUARE KM SQUARED;So;0;L; 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; +33A3;SQUARE MM CUBED;So;0;L; 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; +33A4;SQUARE CM CUBED;So;0;L; 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; +33A5;SQUARE M CUBED;So;0;L; 006D 00B3;;;;N;SQUARED M CUBED;;;; +33A6;SQUARE KM CUBED;So;0;L; 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; +33A7;SQUARE M OVER S;So;0;L; 006D 2215 0073;;;;N;SQUARED M OVER S;;;; +33A8;SQUARE M OVER S SQUARED;So;0;L; 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; +33A9;SQUARE PA;So;0;L; 0050 0061;;;;N;SQUARED PA;;;; +33AA;SQUARE KPA;So;0;L; 006B 0050 0061;;;;N;SQUARED KPA;;;; +33AB;SQUARE MPA;So;0;L; 004D 0050 0061;;;;N;SQUARED MPA;;;; +33AC;SQUARE GPA;So;0;L; 0047 0050 0061;;;;N;SQUARED GPA;;;; +33AD;SQUARE RAD;So;0;L; 0072 0061 0064;;;;N;SQUARED RAD;;;; +33AE;SQUARE RAD OVER S;So;0;L; 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; +33AF;SQUARE RAD OVER S SQUARED;So;0;L; 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; +33B0;SQUARE PS;So;0;L; 0070 0073;;;;N;SQUARED PS;;;; +33B1;SQUARE NS;So;0;L; 006E 0073;;;;N;SQUARED NS;;;; +33B2;SQUARE MU S;So;0;L; 03BC 0073;;;;N;SQUARED MU S;;;; +33B3;SQUARE MS;So;0;L; 006D 0073;;;;N;SQUARED MS;;;; +33B4;SQUARE PV;So;0;L; 0070 0056;;;;N;SQUARED PV;;;; +33B5;SQUARE NV;So;0;L; 006E 0056;;;;N;SQUARED NV;;;; +33B6;SQUARE MU V;So;0;L; 03BC 0056;;;;N;SQUARED MU V;;;; +33B7;SQUARE MV;So;0;L; 006D 0056;;;;N;SQUARED MV;;;; +33B8;SQUARE KV;So;0;L; 006B 0056;;;;N;SQUARED KV;;;; +33B9;SQUARE MV MEGA;So;0;L; 004D 0056;;;;N;SQUARED MV MEGA;;;; +33BA;SQUARE PW;So;0;L; 0070 0057;;;;N;SQUARED PW;;;; +33BB;SQUARE NW;So;0;L; 006E 0057;;;;N;SQUARED NW;;;; +33BC;SQUARE MU W;So;0;L; 03BC 0057;;;;N;SQUARED MU W;;;; +33BD;SQUARE MW;So;0;L; 006D 0057;;;;N;SQUARED MW;;;; +33BE;SQUARE KW;So;0;L; 006B 0057;;;;N;SQUARED KW;;;; +33BF;SQUARE MW MEGA;So;0;L; 004D 0057;;;;N;SQUARED MW MEGA;;;; +33C0;SQUARE K OHM;So;0;L; 006B 03A9;;;;N;SQUARED K OHM;;;; +33C1;SQUARE M OHM;So;0;L; 004D 03A9;;;;N;SQUARED M OHM;;;; +33C2;SQUARE AM;So;0;L; 0061 002E 006D 002E;;;;N;SQUARED AM;;;; +33C3;SQUARE BQ;So;0;L; 0042 0071;;;;N;SQUARED BQ;;;; +33C4;SQUARE CC;So;0;L; 0063 0063;;;;N;SQUARED CC;;;; +33C5;SQUARE CD;So;0;L; 0063 0064;;;;N;SQUARED CD;;;; +33C6;SQUARE C OVER KG;So;0;L; 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; +33C7;SQUARE CO;So;0;L; 0043 006F 002E;;;;N;SQUARED CO;;;; +33C8;SQUARE DB;So;0;L; 0064 0042;;;;N;SQUARED DB;;;; +33C9;SQUARE GY;So;0;L; 0047 0079;;;;N;SQUARED GY;;;; +33CA;SQUARE HA;So;0;L; 0068 0061;;;;N;SQUARED HA;;;; +33CB;SQUARE HP;So;0;L; 0048 0050;;;;N;SQUARED HP;;;; +33CC;SQUARE IN;So;0;L; 0069 006E;;;;N;SQUARED IN;;;; +33CD;SQUARE KK;So;0;L; 004B 004B;;;;N;SQUARED KK;;;; +33CE;SQUARE KM CAPITAL;So;0;L; 004B 004D;;;;N;SQUARED KM CAPITAL;;;; +33CF;SQUARE KT;So;0;L; 006B 0074;;;;N;SQUARED KT;;;; +33D0;SQUARE LM;So;0;L; 006C 006D;;;;N;SQUARED LM;;;; +33D1;SQUARE LN;So;0;L; 006C 006E;;;;N;SQUARED LN;;;; +33D2;SQUARE LOG;So;0;L; 006C 006F 0067;;;;N;SQUARED LOG;;;; +33D3;SQUARE LX;So;0;L; 006C 0078;;;;N;SQUARED LX;;;; +33D4;SQUARE MB SMALL;So;0;L; 006D 0062;;;;N;SQUARED MB SMALL;;;; +33D5;SQUARE MIL;So;0;L; 006D 0069 006C;;;;N;SQUARED MIL;;;; +33D6;SQUARE MOL;So;0;L; 006D 006F 006C;;;;N;SQUARED MOL;;;; +33D7;SQUARE PH;So;0;L; 0050 0048;;;;N;SQUARED PH;;;; +33D8;SQUARE PM;So;0;L; 0070 002E 006D 002E;;;;N;SQUARED PM;;;; +33D9;SQUARE PPM;So;0;L; 0050 0050 004D;;;;N;SQUARED PPM;;;; +33DA;SQUARE PR;So;0;L; 0050 0052;;;;N;SQUARED PR;;;; +33DB;SQUARE SR;So;0;L; 0073 0072;;;;N;SQUARED SR;;;; +33DC;SQUARE SV;So;0;L; 0053 0076;;;;N;SQUARED SV;;;; +33DD;SQUARE WB;So;0;L; 0057 0062;;;;N;SQUARED WB;;;; +33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L; 0031 65E5;;;;N;;;;; +33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L; 0032 65E5;;;;N;;;;; +33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L; 0033 65E5;;;;N;;;;; +33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L; 0034 65E5;;;;N;;;;; +33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L; 0035 65E5;;;;N;;;;; +33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L; 0036 65E5;;;;N;;;;; +33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L; 0037 65E5;;;;N;;;;; +33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L; 0038 65E5;;;;N;;;;; +33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L; 0039 65E5;;;;N;;;;; +33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L; 0031 0030 65E5;;;;N;;;;; +33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L; 0031 0031 65E5;;;;N;;;;; +33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L; 0031 0032 65E5;;;;N;;;;; +33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L; 0031 0033 65E5;;;;N;;;;; +33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L; 0031 0034 65E5;;;;N;;;;; +33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L; 0031 0035 65E5;;;;N;;;;; +33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L; 0031 0036 65E5;;;;N;;;;; +33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L; 0031 0037 65E5;;;;N;;;;; +33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L; 0031 0038 65E5;;;;N;;;;; +33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L; 0031 0039 65E5;;;;N;;;;; +33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L; 0032 0030 65E5;;;;N;;;;; +33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L; 0032 0031 65E5;;;;N;;;;; +33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L; 0032 0032 65E5;;;;N;;;;; +33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L; 0032 0033 65E5;;;;N;;;;; +33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L; 0032 0034 65E5;;;;N;;;;; +33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L; 0032 0035 65E5;;;;N;;;;; +33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L; 0032 0036 65E5;;;;N;;;;; +33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L; 0032 0037 65E5;;;;N;;;;; +33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L; 0032 0038 65E5;;;;N;;;;; +33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L; 0032 0039 65E5;;;;N;;;;; +33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L; 0033 0030 65E5;;;;N;;;;; +33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L; 0033 0031 65E5;;;;N;;;;; +3400;;Lo;0;L;;;;;N;;;;; +4DB5;;Lo;0;L;;;;;N;;;;; +4E00;;Lo;0;L;;;;;N;;;;; +9FA5;;Lo;0;L;;;;;N;;;;; +A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; +A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; +A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; +A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; +A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; +A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; +A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; +A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; +A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; +A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; +A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; +A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; +A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; +A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; +A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; +A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; +A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; +A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; +A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; +A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; +A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; +A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;; +A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; +A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; +A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; +A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; +A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; +A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; +A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; +A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; +A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; +A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; +A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; +A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; +A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; +A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; +A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; +A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; +A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; +A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; +A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; +A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; +A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; +A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; +A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; +A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; +A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; +A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; +A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; +A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; +A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; +A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; +A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; +A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; +A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; +A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; +A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; +A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; +A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; +A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; +A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; +A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; +A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; +A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; +A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; +A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; +A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; +A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; +A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; +A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; +A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; +A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; +A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; +A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; +A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; +A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; +A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; +A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; +A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; +A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; +A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; +A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; +A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; +A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; +A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; +A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; +A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; +A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; +A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; +A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; +A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; +A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; +A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; +A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; +A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; +A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; +A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; +A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; +A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; +A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; +A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; +A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; +A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; +A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; +A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; +A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; +A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; +A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; +A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; +A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; +A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; +A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; +A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; +A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; +A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; +A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; +A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; +A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; +A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; +A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; +A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; +A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; +A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; +A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; +A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; +A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; +A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; +A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; +A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; +A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; +A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; +A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; +A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; +A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; +A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; +A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; +A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; +A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; +A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; +A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; +A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; +A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; +A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; +A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; +A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; +A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; +A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; +A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; +A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; +A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; +A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; +A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; +A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; +A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; +A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; +A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; +A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; +A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; +A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; +A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; +A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; +A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; +A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; +A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; +A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; +A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; +A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; +A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; +A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; +A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; +A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; +A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; +A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; +A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; +A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; +A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; +A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; +A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; +A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; +A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; +A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; +A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; +A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; +A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; +A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; +A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; +A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; +A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; +A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; +A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; +A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; +A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; +A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; +A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; +A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; +A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; +A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; +A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; +A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; +A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; +A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; +A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; +A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; +A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; +A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; +A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; +A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; +A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; +A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; +A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; +A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; +A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; +A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; +A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; +A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; +A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; +A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; +A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; +A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; +A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; +A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; +A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; +A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; +A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; +A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; +A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; +A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; +A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; +A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; +A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; +A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; +A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; +A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; +A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; +A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; +A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; +A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; +A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; +A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; +A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; +A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; +A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; +A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; +A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; +A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; +A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; +A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; +A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; +A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; +A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; +A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; +A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; +A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; +A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; +A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; +A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; +A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; +A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; +A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; +A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; +A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; +A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; +A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; +A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; +A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; +A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; +A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; +A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; +A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; +A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; +A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; +A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; +A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; +A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; +A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; +A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; +A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; +A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; +A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; +A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; +A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; +A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; +A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; +A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; +A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; +A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; +A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; +A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; +A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; +A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; +A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; +A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; +A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; +A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; +A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; +A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; +A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; +A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; +A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; +A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; +A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; +A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; +A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; +A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; +A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; +A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; +A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; +A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; +A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; +A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; +A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; +A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; +A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; +A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; +A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; +A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; +A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; +A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; +A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; +A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; +A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; +A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; +A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; +A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; +A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; +A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; +A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; +A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; +A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; +A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; +A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; +A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; +A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; +A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; +A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; +A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; +A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; +A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; +A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; +A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; +A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; +A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; +A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; +A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; +A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; +A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; +A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; +A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; +A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; +A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; +A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; +A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; +A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; +A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; +A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; +A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; +A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; +A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; +A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; +A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; +A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; +A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; +A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; +A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; +A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; +A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; +A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; +A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; +A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; +A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; +A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; +A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; +A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; +A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; +A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; +A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; +A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; +A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; +A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; +A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; +A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; +A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; +A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; +A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; +A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; +A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; +A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; +A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; +A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; +A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; +A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; +A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; +A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; +A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; +A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; +A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; +A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; +A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; +A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; +A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; +A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; +A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; +A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; +A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; +A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; +A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; +A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; +A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; +A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; +A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; +A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; +A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; +A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; +A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; +A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; +A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; +A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; +A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; +A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; +A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; +A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; +A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; +A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; +A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; +A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; +A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; +A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; +A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; +A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; +A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; +A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; +A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; +A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; +A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; +A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; +A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; +A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; +A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; +A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; +A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; +A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; +A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; +A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; +A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; +A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; +A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; +A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; +A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; +A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; +A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; +A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; +A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; +A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; +A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; +A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; +A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; +A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; +A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; +A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; +A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; +A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; +A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; +A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; +A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; +A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; +A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; +A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; +A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; +A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; +A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; +A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; +A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; +A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; +A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; +A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; +A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; +A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; +A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; +A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; +A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; +A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; +A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; +A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; +A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; +A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; +A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; +A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; +A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; +A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; +A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; +A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; +A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; +A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; +A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; +A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; +A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; +A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; +A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; +A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; +A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; +A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; +A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; +A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; +A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; +A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; +A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; +A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; +A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; +A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; +A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; +A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; +A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; +A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; +A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; +A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; +A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; +A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; +A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; +A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; +A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; +A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; +A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; +A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; +A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; +A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; +A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; +A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; +A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; +A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; +A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; +A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; +A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; +A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; +A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; +A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; +A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; +A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; +A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; +A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; +A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; +A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; +A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; +A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; +A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; +A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; +A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; +A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; +A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; +A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; +A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; +A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; +A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; +A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; +A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; +A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; +A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; +A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; +A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; +A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; +A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; +A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; +A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; +A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; +A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; +A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; +A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; +A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; +A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; +A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; +A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; +A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; +A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; +A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; +A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; +A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; +A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; +A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; +A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; +A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; +A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; +A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; +A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; +A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; +A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; +A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; +A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; +A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; +A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; +A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; +A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; +A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; +A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; +A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; +A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; +A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; +A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; +A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; +A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; +A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; +A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; +A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; +A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; +A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; +A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; +A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; +A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; +A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; +A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; +A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; +A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; +A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; +A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; +A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; +A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; +A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; +A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; +A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; +A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; +A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; +A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; +A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; +A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; +A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; +A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; +A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; +A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; +A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; +A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; +A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; +A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; +A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; +A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; +A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; +A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; +A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; +A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; +A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; +A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; +A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; +A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; +A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; +A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; +A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; +A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; +A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; +A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; +A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; +A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; +A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; +A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; +A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; +A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; +A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; +A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; +A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; +A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; +A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; +A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; +A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; +A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; +A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; +A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; +A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; +A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; +A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; +A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; +A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; +A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; +A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; +A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; +A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; +A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; +A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; +A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; +A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; +A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; +A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; +A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; +A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; +A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; +A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; +A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; +A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; +A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; +A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; +A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; +A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; +A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; +A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; +A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; +A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; +A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; +A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; +A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; +A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; +A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; +A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; +A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; +A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; +A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; +A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; +A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; +A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; +A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; +A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; +A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; +A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; +A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; +A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; +A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; +A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; +A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; +A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; +A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; +A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; +A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; +A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; +A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; +A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; +A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; +A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; +A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; +A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; +A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; +A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; +A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; +A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; +A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; +A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; +A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; +A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; +A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; +A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; +A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; +A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; +A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; +A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; +A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; +A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; +A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; +A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; +A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; +A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; +A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; +A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; +A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; +A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; +A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; +A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; +A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; +A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; +A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; +A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; +A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; +A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; +A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; +A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; +A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; +A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; +A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; +A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; +A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; +A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; +A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; +A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; +A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; +A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; +A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; +A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; +A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; +A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; +A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; +A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; +A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; +A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; +A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; +A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; +A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; +A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; +A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; +A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; +A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; +A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; +A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; +A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; +A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; +A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; +A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; +A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; +A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; +A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; +A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; +A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; +A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; +A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; +A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; +A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; +A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; +A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; +A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; +A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; +A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; +A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; +A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; +A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; +A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; +A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; +A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; +A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; +A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; +A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; +A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; +A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; +A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; +A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; +A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; +A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; +A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; +A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; +A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; +A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; +A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; +A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; +A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; +A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; +A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; +A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; +A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; +A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; +A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; +A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; +A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; +A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; +A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; +A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; +A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; +A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; +A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; +A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; +A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; +A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; +A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; +A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; +A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; +A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; +A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; +A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; +A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; +A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; +A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; +A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; +A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; +A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; +A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; +A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; +A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; +A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; +A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; +A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; +A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; +A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; +A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; +A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; +A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; +A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; +A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; +A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; +A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; +A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; +A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; +A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; +A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; +A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; +A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; +A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; +A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; +A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; +A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; +A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; +A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; +A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; +A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; +A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; +A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; +A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; +A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; +A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; +A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; +A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; +A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; +A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; +A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; +A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; +A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; +A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; +A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; +A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; +A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; +A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; +A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; +A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; +A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; +A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; +A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; +A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; +A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; +A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; +A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; +A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; +A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; +A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; +A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; +A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; +A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; +A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; +A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; +A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; +A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; +A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; +A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; +A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; +A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; +A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; +A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; +A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; +A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; +A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; +A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; +A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; +A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; +A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; +A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; +A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; +A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; +A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; +A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; +A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; +A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; +A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; +A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; +A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; +A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; +A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; +A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; +A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; +A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; +A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; +A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; +A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; +A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; +A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; +A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; +A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; +A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; +A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; +A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; +A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; +A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; +A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; +A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; +A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; +A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; +A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; +A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; +A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; +A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; +A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; +A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; +A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; +A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; +A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; +A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; +A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; +A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; +A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; +A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; +A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; +A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; +A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; +A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; +A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; +A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; +A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; +A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; +A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; +A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; +A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; +A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; +A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; +A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; +A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; +A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; +A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; +A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; +A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; +A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; +A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; +A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; +A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; +A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; +A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; +A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; +A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; +A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; +A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; +A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; +A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; +A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; +A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; +A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; +A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; +A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; +A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; +A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; +A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; +A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; +A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; +A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; +A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; +A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; +A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; +A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; +A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; +A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; +A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; +A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; +A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; +A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; +A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; +A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; +A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; +A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; +A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; +A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; +A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; +A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; +A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; +A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; +A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; +A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; +A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; +A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; +A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; +A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; +A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; +A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; +A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; +A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; +A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; +A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; +A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; +A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; +A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; +A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; +A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; +A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; +A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; +A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; +A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; +A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; +A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; +A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; +A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; +A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; +A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; +A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; +A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; +A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; +A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; +A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; +A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; +A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; +A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; +A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; +A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; +A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; +A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; +A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; +A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; +A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; +A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; +A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; +A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; +A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; +A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; +A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; +A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; +A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; +A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; +A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; +A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; +A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; +A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; +A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; +A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; +A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; +A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; +A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; +A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; +A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; +A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; +A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; +A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; +A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; +A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; +A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; +A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; +A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; +A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; +A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; +A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; +A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; +A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; +A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; +A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; +A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; +A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; +A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; +A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; +A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; +A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; +A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; +A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; +A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; +A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; +A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; +A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; +A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; +A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; +A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; +A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; +A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; +A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; +A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; +A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; +A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; +A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; +A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; +A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; +A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; +A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; +A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; +A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; +A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; +A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; +A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; +A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; +A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; +A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; +A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; +A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; +A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; +A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; +A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; +A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; +A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; +A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; +A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; +A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; +A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; +A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; +A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; +A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; +A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; +A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; +A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; +A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; +A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; +A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; +A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; +A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; +A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; +A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; +A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; +A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; +A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; +A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; +A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; +A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; +A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; +A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; +A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; +A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; +A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; +A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; +A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; +A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; +A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; +A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; +A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; +A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; +A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; +A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; +A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; +A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; +A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; +A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; +A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; +A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; +A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; +A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; +A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; +A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; +A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; +AC00;;Lo;0;L;;;;;N;;;;; +D7A3;;Lo;0;L;;;;;N;;;;; +D800;;Cs;0;L;;;;;N;;;;; +DB7F;;Cs;0;L;;;;;N;;;;; +DB80;;Cs;0;L;;;;;N;;;;; +DBFF;;Cs;0;L;;;;;N;;;;; +DC00;;Cs;0;L;;;;;N;;;;; +DFFF;;Cs;0;L;;;;;N;;;;; +E000;;Co;0;L;;;;;N;;;;; +F8FF;;Co;0;L;;;;;N;;;;; +F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; +F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; +F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; +F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; +F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; +F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; +F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; +F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; +F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; +F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; +F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; +F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; +F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; +F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; +F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; +F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; +F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; +F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; +F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; +F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; +F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; +F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; +F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; +F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; +F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; +F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; +F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; +F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; +F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; +F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; +F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; +F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; +F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; +F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; +F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; +F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; +F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; +F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; +F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; +F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; +F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; +F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; +F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; +F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; +F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; +F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; +F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; +F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; +F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; +F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; +F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; +F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; +F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; +F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; +F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; +F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; +F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; +F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; +F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; +F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; +F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; +F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; +F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; +F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; +F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; +F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; +F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; +F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; +F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; +F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; +F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; +F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; +F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; +F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; +F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; +F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; +F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; +F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; +F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; +F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; +F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; +F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; +F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; +F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; +F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; +F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; +F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; +F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; +F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; +F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; +F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; +F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; +F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; +F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; +F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; +F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; +F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; +F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; +F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; +F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; +F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; +F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; +F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; +F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; +F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; +F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; +F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; +F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;; +F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; +F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; +F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; +F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; +F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; +F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; +F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; +F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;; +F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; +F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; +F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; +F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; +F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;; +F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; +F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; +F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; +F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; +F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; +F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; +F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; +F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; +F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; +F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; +F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; +F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; +F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; +F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; +F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; +F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; +F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; +F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; +F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; +F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; +F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; +F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; +F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; +F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; +F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; +F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; +F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; +F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; +F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; +F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; +F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; +F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; +F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; +F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; +F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; +F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; +F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; +F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; +F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; +F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; +F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; +F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; +F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; +F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; +F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; +F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; +F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; +F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; +F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; +F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; +F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; +F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; +F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; +F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; +F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; +F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; +F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; +F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;; +F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; +F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; +F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; +F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; +F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; +F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; +F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; +F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; +F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; +F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; +F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; +F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; +F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; +F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; +F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; +F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; +F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; +F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; +F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; +F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; +F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; +F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; +F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; +F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; +F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; +F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; +F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; +F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; +F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; +F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; +F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;; +F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; +F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;; +F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; +F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; +F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; +F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; +F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; +F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; +F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; +F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; +F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; +F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; +F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; +F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; +F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; +F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; +F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; +F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; +F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; +F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; +F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; +F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; +F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; +F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; +F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; +F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; +F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; +F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; +F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; +F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; +F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; +F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; +F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; +F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; +F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; +F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; +F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; +F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; +F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; +F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; +F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; +F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; +F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; +F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;; +F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; +F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; +FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; +FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; +FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; +FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; +FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; +FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; +FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; +FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; +FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; +FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; +FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; +FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; +FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; +FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; +FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; +FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; +FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; +FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; +FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; +FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; +FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; +FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; +FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; +FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; +FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; +FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; +FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; +FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; +FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; +FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; +FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; +FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;; +FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; +FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; +FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; +FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;; +FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; +FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; +FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; +FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; +FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; +FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; +FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; +FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; +FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; +FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; +FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; +FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; +FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; +FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; +FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; +FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; +FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; +FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; +FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; +FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; +FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; +FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; +FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; +FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; +FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; +FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; +FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; +FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; +FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; +FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; +FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; +FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; +FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; +FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; +FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; +FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; +FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; +FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; +FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; +FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; +FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; +FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; +FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; +FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; +FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; +FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; +FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; +FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; +FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; +FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; +FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; +FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; +FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; +FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; +FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; +FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; +FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; +FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; +FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; +FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; +FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; +FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; +FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; +FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; +FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; +FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; +FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; +FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; +FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; +FB00;LATIN SMALL LIGATURE FF;Ll;0;L; 0066 0066;;;;N;;;;; +FB01;LATIN SMALL LIGATURE FI;Ll;0;L; 0066 0069;;;;N;;;;; +FB02;LATIN SMALL LIGATURE FL;Ll;0;L; 0066 006C;;;;N;;;;; +FB03;LATIN SMALL LIGATURE FFI;Ll;0;L; 0066 0066 0069;;;;N;;;;; +FB04;LATIN SMALL LIGATURE FFL;Ll;0;L; 0066 0066 006C;;;;N;;;;; +FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L; 017F 0074;;;;N;;;;; +FB06;LATIN SMALL LIGATURE ST;Ll;0;L; 0073 0074;;;;N;;;;; +FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L; 0574 0576;;;;N;;;;; +FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L; 0574 0565;;;;N;;;;; +FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L; 0574 056B;;;;N;;;;; +FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L; 057E 0576;;;;N;;;;; +FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L; 0574 056D;;;;N;;;;; +FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; +FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; +FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; +FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R; 05E2;;;;N;;;;; +FB21;HEBREW LETTER WIDE ALEF;Lo;0;R; 05D0;;;;N;;;;; +FB22;HEBREW LETTER WIDE DALET;Lo;0;R; 05D3;;;;N;;;;; +FB23;HEBREW LETTER WIDE HE;Lo;0;R; 05D4;;;;N;;;;; +FB24;HEBREW LETTER WIDE KAF;Lo;0;R; 05DB;;;;N;;;;; +FB25;HEBREW LETTER WIDE LAMED;Lo;0;R; 05DC;;;;N;;;;; +FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R; 05DD;;;;N;;;;; +FB27;HEBREW LETTER WIDE RESH;Lo;0;R; 05E8;;;;N;;;;; +FB28;HEBREW LETTER WIDE TAV;Lo;0;R; 05EA;;;;N;;;;; +FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET; 002B;;;;N;;;;; +FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; +FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; +FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; +FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; +FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; +FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; +FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; +FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; +FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; +FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; +FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; +FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; +FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; +FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; +FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; +FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; +FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; +FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; +FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; +FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; +FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; +FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; +FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; +FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; +FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; +FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; +FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; +FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; +FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; +FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; +FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; +FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; +FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R; 05D0 05DC;;;;N;;;;; +FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL; 0671;;;;N;;;;; +FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL; 0671;;;;N;;;;; +FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL; 067B;;;;N;;;;; +FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL; 067B;;;;N;;;;; +FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL; 067B;;;;N;;;;; +FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL; 067B;;;;N;;;;; +FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL; 067E;;;;N;;;;; +FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL; 067E;;;;N;;;;; +FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL; 067E;;;;N;;;;; +FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL; 067E;;;;N;;;;; +FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL; 0680;;;;N;;;;; +FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL; 0680;;;;N;;;;; +FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL; 0680;;;;N;;;;; +FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL; 0680;;;;N;;;;; +FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL; 067A;;;;N;;;;; +FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL; 067A;;;;N;;;;; +FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL; 067A;;;;N;;;;; +FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL; 067A;;;;N;;;;; +FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL; 067F;;;;N;;;;; +FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL; 067F;;;;N;;;;; +FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL; 067F;;;;N;;;;; +FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL; 067F;;;;N;;;;; +FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL; 0679;;;;N;;;;; +FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL; 0679;;;;N;;;;; +FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL; 0679;;;;N;;;;; +FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL; 0679;;;;N;;;;; +FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL; 06A4;;;;N;;;;; +FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL; 06A4;;;;N;;;;; +FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; +FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; +FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL; 06A6;;;;N;;;;; +FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL; 06A6;;;;N;;;;; +FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; +FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; +FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL; 0684;;;;N;;;;; +FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL; 0684;;;;N;;;;; +FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL; 0684;;;;N;;;;; +FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL; 0684;;;;N;;;;; +FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL; 0683;;;;N;;;;; +FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL; 0683;;;;N;;;;; +FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL; 0683;;;;N;;;;; +FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL; 0683;;;;N;;;;; +FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL; 0686;;;;N;;;;; +FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL; 0686;;;;N;;;;; +FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL; 0686;;;;N;;;;; +FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL; 0686;;;;N;;;;; +FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL; 0687;;;;N;;;;; +FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL; 0687;;;;N;;;;; +FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL; 0687;;;;N;;;;; +FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL; 0687;;;;N;;;;; +FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL; 068D;;;;N;;;;; +FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL; 068D;;;;N;;;;; +FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL; 068C;;;;N;;;;; +FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL; 068C;;;;N;;;;; +FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL; 068E;;;;N;;;;; +FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL; 068E;;;;N;;;;; +FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL; 0688;;;;N;;;;; +FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL; 0688;;;;N;;;;; +FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL; 0698;;;;N;;;;; +FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL; 0698;;;;N;;;;; +FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL; 0691;;;;N;;;;; +FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL; 0691;;;;N;;;;; +FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL; 06A9;;;;N;;;;; +FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL; 06A9;;;;N;;;;; +FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; +FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; +FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL; 06AF;;;;N;;;;; +FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL; 06AF;;;;N;;;;; +FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; +FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; +FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL; 06B3;;;;N;;;;; +FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL; 06B3;;;;N;;;;; +FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; +FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; +FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL; 06B1;;;;N;;;;; +FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL; 06B1;;;;N;;;;; +FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; +FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; +FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL; 06BA;;;;N;;;;; +FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL; 06BA;;;;N;;;;; +FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL; 06BB;;;;N;;;;; +FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL; 06BB;;;;N;;;;; +FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; +FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; +FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL; 06C0;;;;N;;;;; +FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL; 06C0;;;;N;;;;; +FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL; 06C1;;;;N;;;;; +FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL; 06C1;;;;N;;;;; +FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; +FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; +FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL; 06BE;;;;N;;;;; +FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL; 06BE;;;;N;;;;; +FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; +FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; +FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL; 06D2;;;;N;;;;; +FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL; 06D2;;;;N;;;;; +FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 06D3;;;;N;;;;; +FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 06D3;;;;N;;;;; +FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL; 06AD;;;;N;;;;; +FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL; 06AD;;;;N;;;;; +FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; +FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; +FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL; 06C7;;;;N;;;;; +FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL; 06C7;;;;N;;;;; +FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL; 06C6;;;;N;;;;; +FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL; 06C6;;;;N;;;;; +FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL; 06C8;;;;N;;;;; +FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL; 06C8;;;;N;;;;; +FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0677;;;;N;;;;; +FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL; 06CB;;;;N;;;;; +FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL; 06CB;;;;N;;;;; +FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL; 06C5;;;;N;;;;; +FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL; 06C5;;;;N;;;;; +FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL; 06C9;;;;N;;;;; +FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL; 06C9;;;;N;;;;; +FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL; 06D0;;;;N;;;;; +FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL; 06D0;;;;N;;;;; +FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; +FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; +FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0649;;;;N;;;;; +FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL; 0649;;;;N;;;;; +FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL; 0626 0627;;;;N;;;;; +FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL; 0626 0627;;;;N;;;;; +FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; +FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; +FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL; 0626 0648;;;;N;;;;; +FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL; 0626 0648;;;;N;;;;; +FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; +FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; +FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; +FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; +FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; +FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; +FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; +FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; +FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; +FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL; 06CC;;;;N;;;;; +FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL; 06CC;;;;N;;;;; +FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; +FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; +FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL; 0626 062C;;;;N;;;;; +FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL; 0626 062D;;;;N;;;;; +FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL; 0626 0645;;;;N;;;;; +FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL; 0626 064A;;;;N;;;;; +FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0628 062C;;;;N;;;;; +FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL; 0628 062D;;;;N;;;;; +FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0628 062E;;;;N;;;;; +FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0628 0645;;;;N;;;;; +FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0628 0649;;;;N;;;;; +FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL; 0628 064A;;;;N;;;;; +FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062A 062C;;;;N;;;;; +FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL; 062A 062D;;;;N;;;;; +FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL; 062A 062E;;;;N;;;;; +FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062A 0645;;;;N;;;;; +FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062A 0649;;;;N;;;;; +FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL; 062A 064A;;;;N;;;;; +FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062B 062C;;;;N;;;;; +FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062B 0645;;;;N;;;;; +FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062B 0649;;;;N;;;;; +FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL; 062B 064A;;;;N;;;;; +FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL; 062C 062D;;;;N;;;;; +FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 062C 0645;;;;N;;;;; +FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062D 062C;;;;N;;;;; +FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062D 0645;;;;N;;;;; +FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062E 062C;;;;N;;;;; +FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL; 062E 062D;;;;N;;;;; +FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062E 0645;;;;N;;;;; +FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0633 062C;;;;N;;;;; +FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0633 062D;;;;N;;;;; +FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0633 062E;;;;N;;;;; +FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0633 0645;;;;N;;;;; +FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL; 0635 062D;;;;N;;;;; +FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0635 0645;;;;N;;;;; +FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL; 0636 062C;;;;N;;;;; +FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL; 0636 062D;;;;N;;;;; +FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL; 0636 062E;;;;N;;;;; +FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0636 0645;;;;N;;;;; +FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL; 0637 062D;;;;N;;;;; +FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0637 0645;;;;N;;;;; +FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0638 0645;;;;N;;;;; +FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL; 0639 062C;;;;N;;;;; +FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL; 0639 0645;;;;N;;;;; +FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL; 063A 062C;;;;N;;;;; +FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL; 063A 0645;;;;N;;;;; +FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0641 062C;;;;N;;;;; +FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL; 0641 062D;;;;N;;;;; +FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0641 062E;;;;N;;;;; +FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0641 0645;;;;N;;;;; +FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0641 0649;;;;N;;;;; +FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL; 0641 064A;;;;N;;;;; +FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL; 0642 062D;;;;N;;;;; +FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0642 0645;;;;N;;;;; +FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0642 0649;;;;N;;;;; +FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL; 0642 064A;;;;N;;;;; +FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL; 0643 0627;;;;N;;;;; +FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL; 0643 062C;;;;N;;;;; +FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL; 0643 062D;;;;N;;;;; +FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL; 0643 062E;;;;N;;;;; +FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL; 0643 0644;;;;N;;;;; +FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0643 0645;;;;N;;;;; +FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0643 0649;;;;N;;;;; +FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL; 0643 064A;;;;N;;;;; +FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL; 0644 062C;;;;N;;;;; +FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL; 0644 062D;;;;N;;;;; +FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL; 0644 062E;;;;N;;;;; +FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL; 0644 0645;;;;N;;;;; +FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0644 0649;;;;N;;;;; +FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL; 0644 064A;;;;N;;;;; +FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL; 0645 062C;;;;N;;;;; +FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL; 0645 062D;;;;N;;;;; +FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL; 0645 062E;;;;N;;;;; +FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 0645 0645;;;;N;;;;; +FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0645 0649;;;;N;;;;; +FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL; 0645 064A;;;;N;;;;; +FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL; 0646 062C;;;;N;;;;; +FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL; 0646 062D;;;;N;;;;; +FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL; 0646 062E;;;;N;;;;; +FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL; 0646 0645;;;;N;;;;; +FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0646 0649;;;;N;;;;; +FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL; 0646 064A;;;;N;;;;; +FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0647 062C;;;;N;;;;; +FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0647 0645;;;;N;;;;; +FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0647 0649;;;;N;;;;; +FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL; 0647 064A;;;;N;;;;; +FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL; 064A 062C;;;;N;;;;; +FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL; 064A 062D;;;;N;;;;; +FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL; 064A 062E;;;;N;;;;; +FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL; 064A 0645;;;;N;;;;; +FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 064A 0649;;;;N;;;;; +FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL; 064A 064A;;;;N;;;;; +FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0630 0670;;;;N;;;;; +FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0631 0670;;;;N;;;;; +FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0649 0670;;;;N;;;;; +FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C 0651;;;;N;;;;; +FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D 0651;;;;N;;;;; +FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL; 0020 064E 0651;;;;N;;;;; +FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F 0651;;;;N;;;;; +FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL; 0020 0650 0651;;;;N;;;;; +FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0020 0651 0670;;;;N;;;;; +FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL; 0626 0631;;;;N;;;;; +FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL; 0626 0632;;;;N;;;;; +FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; +FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL; 0626 0646;;;;N;;;;; +FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL; 0626 064A;;;;N;;;;; +FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL; 0628 0631;;;;N;;;;; +FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL; 0628 0632;;;;N;;;;; +FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; +FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL; 0628 0646;;;;N;;;;; +FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0628 0649;;;;N;;;;; +FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL; 0628 064A;;;;N;;;;; +FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL; 062A 0631;;;;N;;;;; +FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL; 062A 0632;;;;N;;;;; +FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; +FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL; 062A 0646;;;;N;;;;; +FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0649;;;;N;;;;; +FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL; 062A 064A;;;;N;;;;; +FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL; 062B 0631;;;;N;;;;; +FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL; 062B 0632;;;;N;;;;; +FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; +FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL; 062B 0646;;;;N;;;;; +FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062B 0649;;;;N;;;;; +FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL; 062B 064A;;;;N;;;;; +FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0641 0649;;;;N;;;;; +FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL; 0641 064A;;;;N;;;;; +FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0642 0649;;;;N;;;;; +FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL; 0642 064A;;;;N;;;;; +FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL; 0643 0627;;;;N;;;;; +FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; +FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; +FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0643 0649;;;;N;;;;; +FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL; 0643 064A;;;;N;;;;; +FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; +FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 0649;;;;N;;;;; +FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL; 0644 064A;;;;N;;;;; +FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL; 0645 0627;;;;N;;;;; +FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; +FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL; 0646 0631;;;;N;;;;; +FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL; 0646 0632;;;;N;;;;; +FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; +FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL; 0646 0646;;;;N;;;;; +FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0649;;;;N;;;;; +FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL; 0646 064A;;;;N;;;;; +FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL; 0649 0670;;;;N;;;;; +FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL; 064A 0631;;;;N;;;;; +FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL; 064A 0632;;;;N;;;;; +FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; +FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL; 064A 0646;;;;N;;;;; +FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 064A 0649;;;;N;;;;; +FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL; 064A 064A;;;;N;;;;; +FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL; 0626 062C;;;;N;;;;; +FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL; 0626 062D;;;;N;;;;; +FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL; 0626 062E;;;;N;;;;; +FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; +FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; +FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL; 0628 062C;;;;N;;;;; +FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL; 0628 062D;;;;N;;;;; +FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL; 0628 062E;;;;N;;;;; +FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; +FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; +FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062C;;;;N;;;;; +FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL; 062A 062D;;;;N;;;;; +FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL; 062A 062E;;;;N;;;;; +FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; +FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; +FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; +FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 062D;;;;N;;;;; +FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062C 0645;;;;N;;;;; +FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062D 062C;;;;N;;;;; +FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062D 0645;;;;N;;;;; +FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 062E 062C;;;;N;;;;; +FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062E 0645;;;;N;;;;; +FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; +FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; +FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; +FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; +FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D;;;;N;;;;; +FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL; 0635 062E;;;;N;;;;; +FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645;;;;N;;;;; +FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL; 0636 062C;;;;N;;;;; +FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL; 0636 062D;;;;N;;;;; +FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL; 0636 062E;;;;N;;;;; +FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL; 0636 0645;;;;N;;;;; +FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL; 0637 062D;;;;N;;;;; +FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; +FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL; 0639 062C;;;;N;;;;; +FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645;;;;N;;;;; +FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL; 063A 062C;;;;N;;;;; +FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL; 063A 0645;;;;N;;;;; +FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL; 0641 062C;;;;N;;;;; +FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL; 0641 062D;;;;N;;;;; +FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL; 0641 062E;;;;N;;;;; +FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 0645;;;;N;;;;; +FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL; 0642 062D;;;;N;;;;; +FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL; 0642 0645;;;;N;;;;; +FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL; 0643 062C;;;;N;;;;; +FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL; 0643 062D;;;;N;;;;; +FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL; 0643 062E;;;;N;;;;; +FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; +FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; +FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C;;;;N;;;;; +FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL; 0644 062D;;;;N;;;;; +FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL; 0644 062E;;;;N;;;;; +FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; +FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL; 0644 0647;;;;N;;;;; +FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062C;;;;N;;;;; +FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062D;;;;N;;;;; +FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062E;;;;N;;;;; +FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; +FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL; 0646 062C;;;;N;;;;; +FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL; 0646 062D;;;;N;;;;; +FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL; 0646 062E;;;;N;;;;; +FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; +FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; +FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL; 0647 062C;;;;N;;;;; +FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645;;;;N;;;;; +FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL; 0647 0670;;;;N;;;;; +FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL; 064A 062C;;;;N;;;;; +FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL; 064A 062D;;;;N;;;;; +FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL; 064A 062E;;;;N;;;;; +FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; +FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; +FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; +FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; +FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; +FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; +FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; +FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; +FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; +FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL; 062B 0647;;;;N;;;;; +FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; +FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; +FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; +FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; +FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; +FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; +FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; +FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; +FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; +FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; +FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; +FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL; 0640 064E 0651;;;;N;;;;; +FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F 0651;;;;N;;;;; +FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL; 0640 0650 0651;;;;N;;;;; +FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0637 0649;;;;N;;;;; +FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL; 0637 064A;;;;N;;;;; +FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0639 0649;;;;N;;;;; +FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL; 0639 064A;;;;N;;;;; +FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 063A 0649;;;;N;;;;; +FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL; 063A 064A;;;;N;;;;; +FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0633 0649;;;;N;;;;; +FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0633 064A;;;;N;;;;; +FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0634 0649;;;;N;;;;; +FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0634 064A;;;;N;;;;; +FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062D 0649;;;;N;;;;; +FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL; 062D 064A;;;;N;;;;; +FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062C 0649;;;;N;;;;; +FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL; 062C 064A;;;;N;;;;; +FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062E 0649;;;;N;;;;; +FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL; 062E 064A;;;;N;;;;; +FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0635 0649;;;;N;;;;; +FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL; 0635 064A;;;;N;;;;; +FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0636 0649;;;;N;;;;; +FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL; 0636 064A;;;;N;;;;; +FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0634 062C;;;;N;;;;; +FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0634 062D;;;;N;;;;; +FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0634 062E;;;;N;;;;; +FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0634 0645;;;;N;;;;; +FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL; 0634 0631;;;;N;;;;; +FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL; 0633 0631;;;;N;;;;; +FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL; 0635 0631;;;;N;;;;; +FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL; 0636 0631;;;;N;;;;; +FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0637 0649;;;;N;;;;; +FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL; 0637 064A;;;;N;;;;; +FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0649;;;;N;;;;; +FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL; 0639 064A;;;;N;;;;; +FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0649;;;;N;;;;; +FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL; 063A 064A;;;;N;;;;; +FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 0649;;;;N;;;;; +FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL; 0633 064A;;;;N;;;;; +FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0634 0649;;;;N;;;;; +FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL; 0634 064A;;;;N;;;;; +FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0649;;;;N;;;;; +FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL; 062D 064A;;;;N;;;;; +FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0649;;;;N;;;;; +FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 064A;;;;N;;;;; +FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062E 0649;;;;N;;;;; +FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL; 062E 064A;;;;N;;;;; +FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0635 0649;;;;N;;;;; +FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL; 0635 064A;;;;N;;;;; +FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 0649;;;;N;;;;; +FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL; 0636 064A;;;;N;;;;; +FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; +FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; +FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; +FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; +FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL; 0634 0631;;;;N;;;;; +FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL; 0633 0631;;;;N;;;;; +FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL; 0635 0631;;;;N;;;;; +FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL; 0636 0631;;;;N;;;;; +FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; +FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; +FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; +FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; +FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; +FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; +FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; +FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; +FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; +FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; +FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; +FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; +FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; +FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; +FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; +FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL; 0627 064B;;;;N;;;;; +FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL; 0627 064B;;;;N;;;;; +FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; +FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; +FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062C 0645;;;;N;;;;; +FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; +FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; +FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062D 0645;;;;N;;;;; +FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062E 0645;;;;N;;;;; +FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 062A 0645 062C;;;;N;;;;; +FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062A 0645 062D;;;;N;;;;; +FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 062A 0645 062E;;;;N;;;;; +FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; +FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; +FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 0645 064A;;;;N;;;;; +FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0645 0649;;;;N;;;;; +FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062D 062C;;;;N;;;;; +FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 062C 062D;;;;N;;;;; +FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062C 0649;;;;N;;;;; +FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; +FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; +FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0633 0645 062C;;;;N;;;;; +FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; +FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; +FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; +FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; +FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; +FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; +FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; +FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0634 062C 064A;;;;N;;;;; +FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; +FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; +FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; +FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; +FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 062D 0649;;;;N;;;;; +FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; +FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; +FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; +FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; +FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645 0645;;;;N;;;;; +FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0637 0645 064A;;;;N;;;;; +FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; +FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; +FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; +FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0645 0649;;;;N;;;;; +FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 063A 0645 0645;;;;N;;;;; +FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 063A 0645 064A;;;;N;;;;; +FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0645 0649;;;;N;;;;; +FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; +FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; +FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; +FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0642 0645 0645;;;;N;;;;; +FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; +FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0644 062D 064A;;;;N;;;;; +FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 062D 0649;;;;N;;;;; +FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; +FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; +FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; +FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; +FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; +FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; +FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062D 062C;;;;N;;;;; +FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062D 0645;;;;N;;;;; +FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062D 064A;;;;N;;;;; +FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062C 062D;;;;N;;;;; +FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062C 0645;;;;N;;;;; +FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062E 062C;;;;N;;;;; +FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062E 0645;;;;N;;;;; +FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062C 062E;;;;N;;;;; +FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0647 0645 062C;;;;N;;;;; +FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645 0645;;;;N;;;;; +FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062D 0645;;;;N;;;;; +FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062D 0649;;;;N;;;;; +FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; +FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; +FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062C 0649;;;;N;;;;; +FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 0645 064A;;;;N;;;;; +FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0645 0649;;;;N;;;;; +FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; +FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; +FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062E 064A;;;;N;;;;; +FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 062C 064A;;;;N;;;;; +FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062C 0649;;;;N;;;;; +FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 062A 062E 064A;;;;N;;;;; +FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062E 0649;;;;N;;;;; +FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 0645 064A;;;;N;;;;; +FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0645 0649;;;;N;;;;; +FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 0645 064A;;;;N;;;;; +FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 062D 0649;;;;N;;;;; +FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0645 0649;;;;N;;;;; +FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062E 0649;;;;N;;;;; +FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0635 062D 064A;;;;N;;;;; +FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0634 062D 064A;;;;N;;;;; +FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0636 062D 064A;;;;N;;;;; +FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 062C 064A;;;;N;;;;; +FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 0645 064A;;;;N;;;;; +FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 064A 062D 064A;;;;N;;;;; +FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 062C 064A;;;;N;;;;; +FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 0645 064A;;;;N;;;;; +FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 0645 064A;;;;N;;;;; +FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0642 0645 064A;;;;N;;;;; +FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0646 062D 064A;;;;N;;;;; +FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; +FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; +FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0639 0645 064A;;;;N;;;;; +FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0643 0645 064A;;;;N;;;;; +FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; +FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062E 064A;;;;N;;;;; +FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; +FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; +FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; +FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; +FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 062C 062D 064A;;;;N;;;;; +FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 062C 064A;;;;N;;;;; +FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 062C 064A;;;;N;;;;; +FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0641 0645 064A;;;;N;;;;; +FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062D 064A;;;;N;;;;; +FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; +FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; +FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; +FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0633 062E 064A;;;;N;;;;; +FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 062C 064A;;;;N;;;;; +FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0635 0644 06D2;;;;N;;;;; +FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0642 0644 06D2;;;;N;;;;; +FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL; 0627 0644 0644 0647;;;;N;;;;; +FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL; 0627 0643 0628 0631;;;;N;;;;; +FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL; 0645 062D 0645 062F;;;;N;;;;; +FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL; 0635 0644 0639 0645;;;;N;;;;; +FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL; 0631 0633 0648 0644;;;;N;;;;; +FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL; 0639 0644 064A 0647;;;;N;;;;; +FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL; 0648 0633 0644 0645;;;;N;;;;; +FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL; 0635 0644 0649;;;;N;;;;; +FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; +FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL; 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; +FDFC;RIAL SIGN;Sc;0;AL; 0631 06CC 0627 0644;;;;N;;;;; +FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; +FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; +FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; +FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; +FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; +FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; +FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; +FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; +FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; +FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; +FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; +FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; +FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; +FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; +FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; +FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; +FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON; 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; +FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON; 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; +FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON; 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; +FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; +FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; +FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; +FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; +FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; +FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; +FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; +FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; +FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON; 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; +FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON; 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; +FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON; 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; +FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON; 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; +FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON; 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; +FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON; 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; +FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; +FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; +FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON; 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; +FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON; 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; +FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; +FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; +FE49;DASHED OVERLINE;Po;0;ON; 203E;;;;N;SPACING DASHED OVERSCORE;;;; +FE4A;CENTRELINE OVERLINE;Po;0;ON; 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; +FE4B;WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING WAVY OVERSCORE;;;; +FE4C;DOUBLE WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; +FE4D;DASHED LOW LINE;Pc;0;ON; 005F;;;;N;SPACING DASHED UNDERSCORE;;;; +FE4E;CENTRELINE LOW LINE;Pc;0;ON; 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; +FE4F;WAVY LOW LINE;Pc;0;ON; 005F;;;;N;SPACING WAVY UNDERSCORE;;;; +FE50;SMALL COMMA;Po;0;CS; 002C;;;;N;;;;; +FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; +FE52;SMALL FULL STOP;Po;0;CS; 002E;;;;N;SMALL PERIOD;;;; +FE54;SMALL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; +FE55;SMALL COLON;Po;0;CS; 003A;;;;N;;;;; +FE56;SMALL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; +FE57;SMALL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; +FE58;SMALL EM DASH;Pd;0;ON; 2014;;;;N;;;;; +FE59;SMALL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;N;SMALL OPENING PARENTHESIS;;;; +FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;N;SMALL CLOSING PARENTHESIS;;;; +FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;N;SMALL OPENING CURLY BRACKET;;;; +FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;; +FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;; +FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;; +FE5F;SMALL NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; +FE60;SMALL AMPERSAND;Po;0;ON; 0026;;;;N;;;;; +FE61;SMALL ASTERISK;Po;0;ON; 002A;;;;N;;;;; +FE62;SMALL PLUS SIGN;Sm;0;ET; 002B;;;;N;;;;; +FE63;SMALL HYPHEN-MINUS;Pd;0;ET; 002D;;;;N;;;;; +FE64;SMALL LESS-THAN SIGN;Sm;0;ON; 003C;;;;N;;;;; +FE65;SMALL GREATER-THAN SIGN;Sm;0;ON; 003E;;;;N;;;;; +FE66;SMALL EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; +FE68;SMALL REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;SMALL BACKSLASH;;;; +FE69;SMALL DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; +FE6A;SMALL PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; +FE6B;SMALL COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; +FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL; 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; +FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL; 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; +FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; +FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; +FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; +FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL; 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; +FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL; 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; +FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; +FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; +FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL; 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; +FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL; 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; +FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL; 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; +FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL; 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; +FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL; 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; +FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL; 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; +FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL; 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; +FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; +FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; +FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; +FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; +FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; +FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; +FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; +FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; +FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; +FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; +FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; +FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; +FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; +FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; +FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; +FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; +FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; +FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; +FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; +FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; +FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; +FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; +FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; +FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; +FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; +FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; +FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; +FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; +FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; +FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; +FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; +FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; +FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; +FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; +FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; +FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; +FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; +FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; +FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; +FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; +FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; +FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; +FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; +FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; +FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; +FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; +FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; +FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; +FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; +FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; +FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; +FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; +FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; +FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; +FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; +FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; +FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; +FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; +FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; +FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; +FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; +FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; +FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; +FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; +FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; +FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; +FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; +FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; +FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; +FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; +FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; +FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; +FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; +FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; +FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; +FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; +FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; +FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; +FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; +FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; +FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; +FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; +FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; +FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; +FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; +FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; +FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; +FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; +FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; +FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; +FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; +FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; +FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; +FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; +FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; +FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; +FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; +FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; +FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; +FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; +FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; +FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; +FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; +FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; +FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; +FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; +FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; +FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; +FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; +FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; +FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; +FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; +FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; +FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; +FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; +FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; +FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; +FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; +FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; +FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; +FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; +FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; +FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; +FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; +FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; +FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; +FF02;FULLWIDTH QUOTATION MARK;Po;0;ON; 0022;;;;N;;;;; +FF03;FULLWIDTH NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; +FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; +FF05;FULLWIDTH PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; +FF06;FULLWIDTH AMPERSAND;Po;0;ON; 0026;;;;N;;;;; +FF07;FULLWIDTH APOSTROPHE;Po;0;ON; 0027;;;;N;;;;; +FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; +FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; +FF0A;FULLWIDTH ASTERISK;Po;0;ON; 002A;;;;N;;;;; +FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET; 002B;;;;N;;;;; +FF0C;FULLWIDTH COMMA;Po;0;CS; 002C;;;;N;;;;; +FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET; 002D;;;;N;;;;; +FF0E;FULLWIDTH FULL STOP;Po;0;CS; 002E;;;;N;FULLWIDTH PERIOD;;;; +FF0F;FULLWIDTH SOLIDUS;Po;0;ES; 002F;;;;N;FULLWIDTH SLASH;;;; +FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +FF11;FULLWIDTH DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +FF12;FULLWIDTH DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +FF13;FULLWIDTH DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +FF16;FULLWIDTH DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +FF19;FULLWIDTH DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +FF1A;FULLWIDTH COLON;Po;0;CS; 003A;;;;N;;;;; +FF1B;FULLWIDTH SEMICOLON;Po;0;ON; 003B;;;;N;;;;; +FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; +FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; +FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; +FF1F;FULLWIDTH QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; +FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; +FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L; 0041;;;;N;;;;FF41; +FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L; 0042;;;;N;;;;FF42; +FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L; 0043;;;;N;;;;FF43; +FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L; 0044;;;;N;;;;FF44; +FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L; 0045;;;;N;;;;FF45; +FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L; 0046;;;;N;;;;FF46; +FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L; 0047;;;;N;;;;FF47; +FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L; 0048;;;;N;;;;FF48; +FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L; 0049;;;;N;;;;FF49; +FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L; 004A;;;;N;;;;FF4A; +FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L; 004B;;;;N;;;;FF4B; +FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L; 004C;;;;N;;;;FF4C; +FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L; 004D;;;;N;;;;FF4D; +FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L; 004E;;;;N;;;;FF4E; +FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L; 004F;;;;N;;;;FF4F; +FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L; 0050;;;;N;;;;FF50; +FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L; 0051;;;;N;;;;FF51; +FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L; 0052;;;;N;;;;FF52; +FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L; 0053;;;;N;;;;FF53; +FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L; 0054;;;;N;;;;FF54; +FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L; 0055;;;;N;;;;FF55; +FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L; 0056;;;;N;;;;FF56; +FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L; 0057;;;;N;;;;FF57; +FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L; 0058;;;;N;;;;FF58; +FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L; 0059;;;;N;;;;FF59; +FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L; 005A;;;;N;;;;FF5A; +FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; +FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;FULLWIDTH BACKSLASH;;;; +FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; +FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON; 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; +FF3F;FULLWIDTH LOW LINE;Pc;0;ON; 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; +FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON; 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; +FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L; 0061;;;;N;;;FF21;;FF21 +FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L; 0062;;;;N;;;FF22;;FF22 +FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L; 0063;;;;N;;;FF23;;FF23 +FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L; 0064;;;;N;;;FF24;;FF24 +FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L; 0065;;;;N;;;FF25;;FF25 +FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L; 0066;;;;N;;;FF26;;FF26 +FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L; 0067;;;;N;;;FF27;;FF27 +FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L; 0068;;;;N;;;FF28;;FF28 +FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;FF29;;FF29 +FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L; 006A;;;;N;;;FF2A;;FF2A +FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L; 006B;;;;N;;;FF2B;;FF2B +FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L; 006C;;;;N;;;FF2C;;FF2C +FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L; 006D;;;;N;;;FF2D;;FF2D +FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;FF2E;;FF2E +FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L; 006F;;;;N;;;FF2F;;FF2F +FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L; 0070;;;;N;;;FF30;;FF30 +FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L; 0071;;;;N;;;FF31;;FF31 +FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L; 0072;;;;N;;;FF32;;FF32 +FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L; 0073;;;;N;;;FF33;;FF33 +FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L; 0074;;;;N;;;FF34;;FF34 +FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L; 0075;;;;N;;;FF35;;FF35 +FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L; 0076;;;;N;;;FF36;;FF36 +FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L; 0077;;;;N;;;FF37;;FF37 +FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L; 0078;;;;N;;;FF38;;FF38 +FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L; 0079;;;;N;;;FF39;;FF39 +FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L; 007A;;;;N;;;FF3A;;FF3A +FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; +FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON; 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; +FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; +FF5E;FULLWIDTH TILDE;Sm;0;ON; 007E;;;;N;FULLWIDTH SPACING TILDE;;;; +FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON; 2985;;;;Y;;*;;; +FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON; 2986;;;;Y;;*;;; +FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; +FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; +FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; +FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; +FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON; 30FB;;;;N;;;;; +FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L; 30F2;;;;N;;;;; +FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L; 30A1;;;;N;;;;; +FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L; 30A3;;;;N;;;;; +FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L; 30A5;;;;N;;;;; +FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L; 30A7;;;;N;;;;; +FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L; 30A9;;;;N;;;;; +FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L; 30E3;;;;N;;;;; +FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L; 30E5;;;;N;;;;; +FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L; 30E7;;;;N;;;;; +FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L; 30C3;;;;N;;;;; +FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L; 30FC;;;;N;;;;; +FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L; 30A2;;;;N;;;;; +FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L; 30A4;;;;N;;;;; +FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L; 30A6;;;;N;;;;; +FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L; 30A8;;;;N;;;;; +FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L; 30AA;;;;N;;;;; +FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L; 30AB;;;;N;;;;; +FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L; 30AD;;;;N;;;;; +FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L; 30AF;;;;N;;;;; +FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L; 30B1;;;;N;;;;; +FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L; 30B3;;;;N;;;;; +FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L; 30B5;;;;N;;;;; +FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L; 30B7;;;;N;;;;; +FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L; 30B9;;;;N;;;;; +FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L; 30BB;;;;N;;;;; +FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L; 30BD;;;;N;;;;; +FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L; 30BF;;;;N;;;;; +FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L; 30C1;;;;N;;;;; +FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L; 30C4;;;;N;;;;; +FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L; 30C6;;;;N;;;;; +FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L; 30C8;;;;N;;;;; +FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L; 30CA;;;;N;;;;; +FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L; 30CB;;;;N;;;;; +FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L; 30CC;;;;N;;;;; +FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L; 30CD;;;;N;;;;; +FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L; 30CE;;;;N;;;;; +FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L; 30CF;;;;N;;;;; +FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L; 30D2;;;;N;;;;; +FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L; 30D5;;;;N;;;;; +FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L; 30D8;;;;N;;;;; +FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L; 30DB;;;;N;;;;; +FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L; 30DE;;;;N;;;;; +FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L; 30DF;;;;N;;;;; +FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L; 30E0;;;;N;;;;; +FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L; 30E1;;;;N;;;;; +FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L; 30E2;;;;N;;;;; +FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L; 30E4;;;;N;;;;; +FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L; 30E6;;;;N;;;;; +FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L; 30E8;;;;N;;;;; +FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L; 30E9;;;;N;;;;; +FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L; 30EA;;;;N;;;;; +FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L; 30EB;;;;N;;;;; +FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L; 30EC;;;;N;;;;; +FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L; 30ED;;;;N;;;;; +FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L; 30EF;;;;N;;;;; +FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L; 30F3;;;;N;;;;; +FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L; 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;; +FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L; 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;; +FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L; 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; +FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L; 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; +FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L; 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; +FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; +FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L; 3134;;;;N;;;;; +FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; +FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; +FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L; 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; +FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L; 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; +FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L; 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; +FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; +FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; +FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; +FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L; 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; +FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; +FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; +FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; +FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L; 3141;;;;N;;;;; +FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L; 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; +FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L; 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; +FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L; 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; +FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L; 3145;;;;N;;;;; +FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L; 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; +FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L; 3147;;;;N;;;;; +FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L; 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; +FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L; 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; +FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L; 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; +FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L; 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; +FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L; 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; +FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L; 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; +FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L; 314E;;;;N;;;;; +FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L; 314F;;;;N;;;;; +FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L; 3150;;;;N;;;;; +FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L; 3151;;;;N;;;;; +FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L; 3152;;;;N;;;;; +FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L; 3153;;;;N;;;;; +FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L; 3154;;;;N;;;;; +FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L; 3155;;;;N;;;;; +FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L; 3156;;;;N;;;;; +FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L; 3157;;;;N;;;;; +FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L; 3158;;;;N;;;;; +FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L; 3159;;;;N;;;;; +FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L; 315A;;;;N;;;;; +FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L; 315B;;;;N;;;;; +FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L; 315C;;;;N;;;;; +FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L; 315D;;;;N;;;;; +FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L; 315E;;;;N;;;;; +FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L; 315F;;;;N;;;;; +FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L; 3160;;;;N;;;;; +FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L; 3161;;;;N;;;;; +FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L; 3162;;;;N;;;;; +FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L; 3163;;;;N;;;;; +FFE0;FULLWIDTH CENT SIGN;Sc;0;ET; 00A2;;;;N;;;;; +FFE1;FULLWIDTH POUND SIGN;Sc;0;ET; 00A3;;;;N;;;;; +FFE2;FULLWIDTH NOT SIGN;Sm;0;ON; 00AC;;;;N;;;;; +FFE3;FULLWIDTH MACRON;Sk;0;ON; 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;; +FFE4;FULLWIDTH BROKEN BAR;So;0;ON; 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; +FFE5;FULLWIDTH YEN SIGN;Sc;0;ET; 00A5;;;;N;;;;; +FFE6;FULLWIDTH WON SIGN;Sc;0;ET; 20A9;;;;N;;;;; +FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON; 2502;;;;N;;;;; +FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON; 2190;;;;N;;;;; +FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON; 2191;;;;N;;;;; +FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON; 2192;;;;N;;;;; +FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON; 2193;;;;N;;;;; +FFED;HALFWIDTH BLACK SQUARE;So;0;ON; 25A0;;;;N;;;;; +FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON; 25CB;;;;N;;;;; +FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;; +FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;; +FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;; +FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; +10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; +10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; +10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; +10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; +10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; +10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; +10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; +10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; +10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; +1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; +1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; +1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; +1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; +1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; +1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;; +10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; +10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; +10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; +10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; +10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; +10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; +10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; +10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;; +10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; +10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; +1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; +1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;; +1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;; +1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;; +1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;; +10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; +10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; +10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; +10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; +10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; +10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; +10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; +10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; +10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; +10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; +10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; +10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; +10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; +10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; +1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; +1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; +1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; +1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; +1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; +1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; +10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; +10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;; +10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; +10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; +10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; +10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; +10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; +10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; +10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; +10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; +1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;;N;;;;; +10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; +10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; +10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; +10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; +10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; +10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; +10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; +10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; +10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; +10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; +1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; +1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; +1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; +1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; +1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; +1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; +10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; +10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; +10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; +10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; +10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; +10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; +10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; +10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; +10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; +10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; +1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; +1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; +1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; +1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; +1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; +1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; +10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; +10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; +10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; +10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; +10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; +10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; +10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 +10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 +1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 +1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 +1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 +1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 +1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 +1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 +10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 +10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 +10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A +10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B +10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C +10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D +10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E +10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F +10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 +10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 +1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 +1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 +1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 +1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 +1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 +1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 +10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 +10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 +10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A +10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B +10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C +10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D +10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E +10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F +10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 +10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 +1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 +1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 +1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 +1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 +1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; +1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; +1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; +1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; +1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; +1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; +1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; +1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; +1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; +1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; +1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; +1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; +1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; +1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; +1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; +1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; +1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; +1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; +1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; +1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; +1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; +1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; +1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; +1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; +1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; +1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; +1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; +1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; +1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; +1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; +1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; +1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; +1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; +1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; +1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; +1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; +1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; +1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; +1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; +1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; +1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; +1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; +1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; +1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; +1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; +1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; +1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; +1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; +1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; +1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; +1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; +1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; +1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; +1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; +1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; +1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; +1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; +1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; +1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; +1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; +1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; +1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; +1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; +1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; +1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; +1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; +1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; +1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; +1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; +1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; +1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; +1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; +1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; +1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; +1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; +1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; +1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; +1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; +1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; +1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; +1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; +1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; +1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; +1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; +1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; +1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; +1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; +1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; +1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; +1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; +1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; +1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; +1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; +1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; +1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; +1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; +1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; +1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; +1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; +1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; +1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; +1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; +1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; +1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; +1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; +1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; +1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; +1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; +1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; +1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; +1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; +1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; +1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; +1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; +1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; +1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; +1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; +1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; +1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; +1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; +1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; +1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; +1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; +1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; +1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; +1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; +1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; +1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; +1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; +1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; +1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; +1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; +1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; +1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; +1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; +1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; +1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; +1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; +1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; +1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; +1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; +1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; +1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; +1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; +1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; +1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; +1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; +1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; +1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; +1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; +1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; +1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; +1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; +1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; +1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; +1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; +1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; +1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; +1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; +1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; +1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; +1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; +1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; +1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; +1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; +1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; +1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; +1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; +1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; +1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; +1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; +1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; +1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; +1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; +1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; +1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; +1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; +1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; +1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; +1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; +1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; +1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; +1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; +1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; +1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; +1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; +1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; +1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; +1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; +1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; +1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; +1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; +1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; +1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; +1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; +1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; +1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; +1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; +1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; +1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; +1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; +1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; +1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; +1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; +1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; +1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; +1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; +1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; +1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; +1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; +1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; +1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; +1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; +1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; +1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; +1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; +1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; +1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; +1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; +1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; +1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; +1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; +1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; +1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; +1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; +1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; +1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; +1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; +1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; +1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; +1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; +1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; +1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; +1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; +1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; +1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; +1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; +1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; +1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; +1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; +1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; +1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; +1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; +1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; +1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; +1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; +1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; +1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; +1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; +1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; +1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; +1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; +1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; +1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; +1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; +1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; +1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; +1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; +1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; +1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; +1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; +1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; +1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; +1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; +1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; +1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; +1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; +1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; +1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; +1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; +1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; +1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; +1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; +1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; +1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; +1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; +1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; +1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; +1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; +1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; +1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; +1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; +1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; +1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; +1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; +1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; +1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; +1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; +1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; +1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; +1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; +1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; +1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; +1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; +1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; +1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; +1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; +1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; +1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; +1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; +1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; +1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; +1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; +1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; +1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; +1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; +1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; +1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; +1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; +1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; +1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; +1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; +1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; +1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; +1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; +1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; +1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; +1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; +1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; +1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; +1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; +1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; +1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; +1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; +1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; +1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; +1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; +1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; +1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; +1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; +1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; +1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; +1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; +1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; +1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; +1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; +1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; +1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; +1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; +1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; +1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; +1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; +1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; +1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; +1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; +1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; +1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; +1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; +1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; +1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; +1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; +1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; +1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; +1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; +1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; +1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; +1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; +1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; +1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; +1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; +1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; +1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; +1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; +1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; +1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; +1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; +1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; +1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; +1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; +1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; +1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; +1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; +1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; +1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; +1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; +1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; +1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; +1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; +1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; +1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; +1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; +1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; +1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; +1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; +1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; +1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; +1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; +1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; +1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; +1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; +1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; +1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; +1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; +1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; +1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; +1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; +1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; +1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; +1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; +1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; +1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; +1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; +1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; +1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; +1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; +1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; +1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; +1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; +1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; +1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; +1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; +1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; +1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; +1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; +1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; +1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; +1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; +1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; +1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; +1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; +1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; +1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; +1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; +1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; +1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; +1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; +1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; +1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; +1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; +1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; +1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; +1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; +1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; +1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; +1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; +1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; +1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; +1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; +1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; +1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; +1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; +1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; +1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; +1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; +1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; +1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; +1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; +1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; +1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; +1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; +1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; +1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; +1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; +1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; +1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +20000;;Lo;0;L;;;;;N;;;;; +2A6D6;;Lo;0;L;;;;;N;;;;; +2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; +2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; +2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; +2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; +2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; +2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; +2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; +2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; +2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; +2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; +2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; +2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; +2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; +2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; +2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; +2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; +2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; +2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; +2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; +2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; +2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; +2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; +2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; +2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; +2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; +2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; +2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; +2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; +2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; +2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; +2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; +2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; +2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; +2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; +2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; +2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; +2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; +2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; +2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; +2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; +2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; +2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; +2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; +2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; +2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; +2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; +2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; +2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; +2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; +2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; +2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; +2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; +2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; +2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; +2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; +2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; +2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; +2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; +2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; +2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; +2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; +2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; +2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; +2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; +2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; +2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; +2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; +2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; +2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; +2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; +2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; +2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; +2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; +2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; +2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; +2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; +2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; +2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; +2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; +2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; +2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; +2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; +2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; +2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; +2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; +2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; +2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; +2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; +2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; +2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; +2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; +2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; +2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; +2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; +2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; +2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; +2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; +2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; +2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; +2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; +2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; +2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; +2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; +2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; +2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;2136A;;;;N;;;;; +2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; +2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; +2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; +2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; +2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; +2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; +2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; +2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; +2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; +2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; +2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; +2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F33;;;;N;;;;; +2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; +2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; +2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; +2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; +2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; +2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; +2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; +2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; +2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; +2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; +2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; +2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; +2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; +2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; +2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; +2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; +2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; +2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; +2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; +2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; +2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; +2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; +2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; +2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; +2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; +2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; +2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; +2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;; +2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; +2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; +2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; +2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; +2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; +2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; +2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; +2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; +2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; +2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; +2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; +2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; +2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; +2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; +2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; +2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; +2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; +2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; +2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; +2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; +2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; +2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; +2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; +2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; +2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; +2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; +2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; +2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; +2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; +2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; +2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; +2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; +2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; +2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; +2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; +2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; +2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; +2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; +2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; +2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; +2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; +2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; +2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; +2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; +2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; +2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; +2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; +2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; +2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; +2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; +2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; +2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; +2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; +2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; +2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; +2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; +2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; +2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; +2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; +2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; +2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; +2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; +2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; +2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; +2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; +2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; +2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; +2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; +2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; +2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; +2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; +2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; +2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; +2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; +2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; +2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; +2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; +2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; +2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; +2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; +2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; +2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; +2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; +2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; +2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; +2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; +2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; +2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; +2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; +2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; +2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; +2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; +2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; +2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; +2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; +2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; +2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; +2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; +2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; +2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; +2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; +2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; +2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; +2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; +2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; +2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; +2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; +2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; +2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; +2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; +2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; +2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; +2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; +2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; +2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; +2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; +2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; +2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; +2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; +2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; +2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; +2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; +2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; +2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; +2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; +2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; +2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; +2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; +2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; +2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; +2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; +2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; +2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; +2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; +2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; +2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; +2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; +2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; +2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; +2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; +2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; +2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; +2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;43AB;;;;N;;;;; +2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; +2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; +2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; +2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; +2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; +2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; +2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; +2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; +2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; +2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; +2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; +2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; +2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; +2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; +2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; +2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; +2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; +2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; +2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; +2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; +2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; +2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; +2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; +2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; +2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; +2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; +2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; +2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; +2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; +2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; +2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; +2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; +2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; +2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; +2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; +2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; +2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; +2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; +2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; +2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; +2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; +2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; +2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; +2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; +2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; +2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; +2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; +2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; +2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; +2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; +2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; +2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; +2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; +2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; +2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; +2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; +2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; +2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; +2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; +2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; +2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; +2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; +2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; +2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AAE;;;;N;;;;; +2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; +2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; +2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; +2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; +2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; +2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; +2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; +2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; +2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; +2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; +2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; +2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; +2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; +2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; +2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; +2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; +2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; +2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; +2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; +2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; +2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; +2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; +2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; +2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; +2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; +2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; +2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; +2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; +2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; +2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; +2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; +2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; +2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; +2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; +2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; +2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; +2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; +2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; +2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; +2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; +2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; +2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; +2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; +2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; +2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; +2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; +2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; +2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; +2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; +2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; +2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; +2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; +2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; +2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; +2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; +2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; +2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; +2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; +2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; +2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; +2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; +2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; +2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; +2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; +2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; +2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; +2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; +2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; +2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; +2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; +2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; +2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; +2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; +2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; +2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; +2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; +2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; +2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; +2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; +2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; +2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; +2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; +2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; +2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; +2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; +2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; +2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; +2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; +2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; +2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; +2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; +2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; +2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; +2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; +2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; +2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;4D57;;;;N;;;;; +2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; +2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; +2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; +2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; +2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; +2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; +2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; +2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; +2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; +2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; +2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; +2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; +2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; +2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; +2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; +2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; +2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; +2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; +2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; +2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; +2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; +2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; +2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; +2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; +2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; +2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; +2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; +2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; +2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; +2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; +2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; +2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; +2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; +2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; +2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; +2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; +2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; +2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; +2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; +2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; +2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; +2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; +2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; +2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; +2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; +2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; +2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; +2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; +2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; +2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; +2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; +2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; +2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; +2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; +2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; +2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; +2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; +2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; +2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; +2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; +2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; +2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; +2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; +2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; +2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; +2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; +2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; +2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; +2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; +2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; +2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; +2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; +2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; +2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; +2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; +2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; +2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; +2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; +2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; +2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; +2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; +2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; +2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; +2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; +2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; +2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; +2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; +2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; +2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; +2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; +2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; +2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; +2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; +2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; +E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; +E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; +E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; +E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;; +E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;; +E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;; +E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;; +E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;; +E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;; +E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;; +E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;; +E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;; +E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;; +E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;; +E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;; +E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;; +E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;; +E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;; +E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;; +E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;; +E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;; +E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;; +E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;; +E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;; +E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;; +E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;; +E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;; +E003A;TAG COLON;Cf;0;BN;;;;;N;;;;; +E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;; +E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;; +E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;; +E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;; +E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;; +E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;; +E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;; +E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;; +E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;; +E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;; +E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;; +E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;; +E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;; +E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;; +E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;; +E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;; +E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;; +E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;; +E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;; +E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;; +E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;; +E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;; +E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;; +E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;; +E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;; +E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;; +E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;; +E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;; +E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;; +E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;; +E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;; +E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;; +E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; +E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;; +E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; +E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;; +E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;; +E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;; +E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;; +E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;; +E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;; +E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;; +E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;; +E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;; +E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;; +E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;; +E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;; +E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;; +E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;; +E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;; +E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;; +E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;; +E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;; +E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;; +E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;; +E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;; +E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;; +E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;; +E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;; +E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;; +E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;; +E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;; +E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;; +E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;; +E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; +E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;; +E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; +E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;; +E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;; +F0000;;Co;0;L;;;;;N;;;;; +FFFFD;;Co;0;L;;;;;N;;;;; +100000;;Co;0;L;;;;;N;;;;; +10FFFD;;Co;0;L;;;;;N;;;;; Added: pypy/branch/non-fake-unicode/pypy/module/unicodedata/UnicodeData-4.1.0.txt ============================================================================== --- (empty file) +++ pypy/branch/non-fake-unicode/pypy/module/unicodedata/UnicodeData-4.1.0.txt Thu Apr 28 15:38:16 2005 @@ -0,0 +1,16351 @@ +0000;;Cc;0;BN;;;;;N;NULL;;;; +0001;;Cc;0;BN;;;;;N;START OF HEADING;;;; +0002;;Cc;0;BN;;;;;N;START OF TEXT;;;; +0003;;Cc;0;BN;;;;;N;END OF TEXT;;;; +0004;;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;; +0005;;Cc;0;BN;;;;;N;ENQUIRY;;;; +0006;;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; +0007;;Cc;0;BN;;;;;N;BELL;;;; +0008;;Cc;0;BN;;;;;N;BACKSPACE;;;; +0009;;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; +000A;;Cc;0;B;;;;;N;LINE FEED (LF);;;; +000B;;Cc;0;S;;;;;N;LINE TABULATION;;;; +000C;;Cc;0;WS;;;;;N;FORM FEED (FF);;;; +000D;;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; +000E;;Cc;0;BN;;;;;N;SHIFT OUT;;;; +000F;;Cc;0;BN;;;;;N;SHIFT IN;;;; +0010;;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; +0011;;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;; +0012;;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;; +0013;;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;; +0014;;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;; +0015;;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;; +0016;;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;; +0017;;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;; +0018;;Cc;0;BN;;;;;N;CANCEL;;;; +0019;;Cc;0;BN;;;;;N;END OF MEDIUM;;;; +001A;;Cc;0;BN;;;;;N;SUBSTITUTE;;;; +001B;;Cc;0;BN;;;;;N;ESCAPE;;;; +001C;;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; +001D;;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; +001E;;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; +001F;;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; +0020;SPACE;Zs;0;WS;;;;;N;;;;; +0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; +0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; +0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; +0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; +0026;AMPERSAND;Po;0;ON;;;;;N;;;;; +0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; +0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; +0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; +002A;ASTERISK;Po;0;ON;;;;;N;;;;; +002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;; +002C;COMMA;Po;0;CS;;;;;N;;;;; +002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; +002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; +002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;; +0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; +0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; +0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; +0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; +0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; +0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; +0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; +0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; +0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; +0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; +003A;COLON;Po;0;CS;;;;;N;;;;; +003B;SEMICOLON;Po;0;ON;;;;;N;;;;; +003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; +003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; +003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; +003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; +0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; +0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; +0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; +0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; +0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; +0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; +0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; +0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; +0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; +0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; +004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; +004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; +004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; +004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; +004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; +004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; +0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; +0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; +0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; +0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; +0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; +0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; +0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; +0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; +0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; +0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; +005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; +005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; +005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; +005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; +005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; +005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; +0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; +0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 +0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 +0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 +0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 +0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 +0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 +0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 +0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 +0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 +006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A +006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B +006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C +006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D +006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E +006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F +0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 +0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 +0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 +0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 +0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 +0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 +0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 +0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 +0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 +0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 +007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A +007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; +007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; +007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; +007E;TILDE;Sm;0;ON;;;;;N;;;;; +007F;;Cc;0;BN;;;;;N;DELETE;;;; +0080;;Cc;0;BN;;;;;N;;;;; +0081;;Cc;0;BN;;;;;N;;;;; +0082;;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; +0083;;Cc;0;BN;;;;;N;NO BREAK HERE;;;; +0084;;Cc;0;BN;;;;;N;;;;; +0085;;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; +0086;;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; +0087;;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; +0088;;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; +0089;;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; +008A;;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; +008B;;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; +008C;;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; +008D;;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; +008E;;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; +008F;;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; +0090;;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;; +0091;;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;; +0092;;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;; +0093;;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;; +0094;;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;; +0095;;Cc;0;BN;;;;;N;MESSAGE WAITING;;;; +0096;;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;; +0097;;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;; +0098;;Cc;0;BN;;;;;N;START OF STRING;;;; +0099;;Cc;0;BN;;;;;N;;;;; +009A;;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;; +009B;;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;; +009C;;Cc;0;BN;;;;;N;STRING TERMINATOR;;;; +009D;;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;; +009E;;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;; +009F;;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;; +00A0;NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;NON-BREAKING SPACE;;;; +00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; +00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; +00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; +00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; +00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; +00A7;SECTION SIGN;So;0;ON;;;;;N;;;;; +00A8;DIAERESIS;Sk;0;ON; 0020 0308;;;;N;SPACING DIAERESIS;;;; +00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; +00AA;FEMININE ORDINAL INDICATOR;Ll;0;L; 0061;;;;N;;;;; +00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;; +00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; +00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;; +00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; +00AF;MACRON;Sk;0;ON; 0020 0304;;;;N;SPACING MACRON;;;; +00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; +00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; +00B2;SUPERSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;; +00B3;SUPERSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;; +00B4;ACUTE ACCENT;Sk;0;ON; 0020 0301;;;;N;SPACING ACUTE;;;; +00B5;MICRO SIGN;Ll;0;L; 03BC;;;;N;;;039C;;039C +00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; +00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; +00B8;CEDILLA;Sk;0;ON; 0020 0327;;;;N;SPACING CEDILLA;;;; +00B9;SUPERSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;; +00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L; 006F;;;;N;;;;; +00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;; +00BC;VULGAR FRACTION ONE QUARTER;No;0;ON; 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; +00BD;VULGAR FRACTION ONE HALF;No;0;ON; 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; +00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON; 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; +00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; +00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; +00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; +00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; +00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; +00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; +00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; +00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6; +00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; +00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; +00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; +00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; +00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; +00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; +00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; +00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; +00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; +00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0; +00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; +00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; +00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; +00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; +00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; +00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; +00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; +00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; +00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; +00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; +00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; +00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; +00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; +00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE; +00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;; +00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 +00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 +00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 +00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 +00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 +00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 +00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6 +00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 +00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 +00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 +00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA +00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB +00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC +00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD +00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE +00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF +00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0 +00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 +00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 +00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 +00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 +00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 +00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 +00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 +00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 +00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA +00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB +00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC +00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD +00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE +00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 +0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; +0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 +0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; +0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 +0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; +0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 +0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; +0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 +0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; +0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 +010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; +010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A +010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; +010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C +010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; +010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E +0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; +0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 +0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; +0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 +0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; +0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 +0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; +0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 +0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; +0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 +011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; +011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A +011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; +011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C +011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; +011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E +0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; +0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 +0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; +0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 +0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; +0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 +0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; +0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 +0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; +0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 +012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; +012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A +012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; +012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C +012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; +012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E +0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; +0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 +0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L; 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; +0133;LATIN SMALL LIGATURE IJ;Ll;0;L; 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 +0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; +0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 +0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; +0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 +0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;; +0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; +013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 +013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; +013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B +013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; +013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D +013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L; 004C 00B7;;;;N;;;;0140; +0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L; 006C 00B7;;;;N;;;013F;;013F +0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; +0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 +0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; +0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 +0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; +0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 +0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; +0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 +0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L; 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; +014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B; +014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A +014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; +014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C +014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; +014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E +0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; +0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 +0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; +0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 +0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; +0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 +0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; +0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 +0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; +0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 +015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; +015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A +015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; +015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C +015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F; +015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E +0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; +0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 +0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163; +0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162 +0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; +0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 +0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; +0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 +0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; +0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 +016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; +016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A +016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; +016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C +016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; +016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E +0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; +0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 +0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; +0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 +0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; +0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 +0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; +0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 +0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; +0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; +017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 +017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; +017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B +017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; +017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D +017F;LATIN SMALL LETTER LONG S;Ll;0;L; 0073;;;;N;;;0053;;0053 +0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;; +0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; +0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; +0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 +0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; +0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 +0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; +0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; +0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 +0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256; +018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; +018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; +018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B +018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; +018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; +018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; +0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; +0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; +0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 +0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; +0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; +0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6 +0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; +0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; +0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; +0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 +019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D +019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; +019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; +019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; +019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 +019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275; +01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; +01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 +01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3; +01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2 +01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; +01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 +01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280; +01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; +01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 +01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; +01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; +01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; +01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; +01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC +01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; +01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; +01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF +01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; +01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; +01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; +01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 +01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; +01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 +01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; +01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; +01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 +01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; +01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; +01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; +01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC +01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; +01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 +01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; +01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; +01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; +01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; +01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L; 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 +01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L; 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5 +01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L; 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 +01C7;LATIN CAPITAL LETTER LJ;Lu;0;L; 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 +01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L; 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8 +01C9;LATIN SMALL LETTER LJ;Ll;0;L; 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 +01CA;LATIN CAPITAL LETTER NJ;Lu;0;L; 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB +01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L; 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB +01CC;LATIN SMALL LETTER NJ;Ll;0;L; 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB +01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; +01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD +01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; +01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF +01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; +01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 +01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; +01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 +01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; +01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 +01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; +01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 +01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; +01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 +01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; +01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB +01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E +01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; +01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE +01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; +01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 +01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3; +01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2 +01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; +01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 +01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; +01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 +01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; +01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 +01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; +01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA +01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; +01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC +01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; +01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE +01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; +01F1;LATIN CAPITAL LETTER DZ;Lu;0;L; 0044 005A;;;;N;;;;01F3;01F2 +01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L; 0044 007A;;;;N;;;01F1;01F3;01F2 +01F3;LATIN SMALL LETTER DZ;Ll;0;L; 0064 007A;;;;N;;;01F1;;01F2 +01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; +01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 +01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; +01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; +01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; +01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 +01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; +01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA +01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD; +01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC +01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; +01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE +0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; +0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 +0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; +0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 +0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; +0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 +0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; +0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 +0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; +0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 +020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; +020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A +020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; +020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C +020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; +020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E +0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; +0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 +0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; +0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 +0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; +0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 +0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; +0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 +0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219; +0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218 +021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B; +021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A +021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; +021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C +021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; +021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E +0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; +0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;; +0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; +0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 +0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; +0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 +0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; +0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 +0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; +0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 +022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; +022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A +022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; +022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C +022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; +022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E +0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; +0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 +0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; +0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 +0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;; +0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;; +0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;; +0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;; +0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;; +0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;; +023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;; +023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C; +023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B +023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A; +023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;; +023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; +0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; +0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0294; +0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;; +0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;; +0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;; +0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 +0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 +0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; +0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 +0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A +0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; +0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F +025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; +025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 +025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; +025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; +025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; +025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; +0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 +0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; +0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; +0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 +0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; +0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;; +0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;; +0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; +0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 +0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 +026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; +026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; +026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; +026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; +026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C +0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; +0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;; +0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D +0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; +0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; +0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F +0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; +0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; +0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; +0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; +027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; +027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; +027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; +027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;; +027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; +027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; +0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6 +0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; +0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; +0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 +0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; +0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; +0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; +0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; +0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE +0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;; +028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 +028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 +028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;; +028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; +028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; +028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; +0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; +0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; +0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 +0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; +0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241 +0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; +0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; +0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; +0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; +0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; +029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; +029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; +029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; +029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; +029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; +029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; +02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; +02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; +02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; +02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; +02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; +02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; +02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; +02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; +02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; +02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; +02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; +02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; +02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; +02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; +02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; +02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;; +02B0;MODIFIER LETTER SMALL H;Lm;0;L; 0068;;;;N;;;;; +02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L; 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; +02B2;MODIFIER LETTER SMALL J;Lm;0;L; 006A;;;;N;;;;; +02B3;MODIFIER LETTER SMALL R;Lm;0;L; 0072;;;;N;;;;; +02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L; 0279;;;;N;;;;; +02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L; 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; +02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L; 0281;;;;N;;;;; +02B7;MODIFIER LETTER SMALL W;Lm;0;L; 0077;;;;N;;;;; +02B8;MODIFIER LETTER SMALL Y;Lm;0;L; 0079;;;;N;;;;; +02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;; +02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;; +02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; +02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; +02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; +02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; +02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; +02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; +02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; +02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; +02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;; +02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;; +02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;; +02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;; +02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;; +02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;; +02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;; +02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; +02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; +02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; +02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; +02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; +02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; +02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; +02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; +02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; +02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; +02D8;BREVE;Sk;0;ON; 0020 0306;;;;N;SPACING BREVE;;;; +02D9;DOT ABOVE;Sk;0;ON; 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;; +02DA;RING ABOVE;Sk;0;ON; 0020 030A;;;;N;SPACING RING ABOVE;;;; +02DB;OGONEK;Sk;0;ON; 0020 0328;;;;N;SPACING OGONEK;;;; +02DC;SMALL TILDE;Sk;0;ON; 0020 0303;;;;N;SPACING TILDE;;;; +02DD;DOUBLE ACUTE ACCENT;Sk;0;ON; 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; +02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; +02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; +02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L; 0263;;;;N;;;;; +02E1;MODIFIER LETTER SMALL L;Lm;0;L; 006C;;;;N;;;;; +02E2;MODIFIER LETTER SMALL S;Lm;0;L; 0073;;;;N;;;;; +02E3;MODIFIER LETTER SMALL X;Lm;0;L; 0078;;;;N;;;;; +02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L; 0295;;;;N;;;;; +02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; +02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; +02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; +02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; +02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; +02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; +02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; +02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;; +02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; +02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; +02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;; +02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; +02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; +02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;; +02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;; +02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;; +02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;; +02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;; +02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;; +02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;; +02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;; +02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;; +02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;; +0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;; +0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;; +0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; +0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; +0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; +0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; +0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;; +0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; +0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;; +0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; +030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; +030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; +030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; +030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; +030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; +030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; +0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; +0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; +0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; +0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;; +0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;; +0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; +0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; +0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; +0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; +0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; +031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; +031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; +031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; +031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; +031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; +031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; +0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; +0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; +0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; +0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; +0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; +0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; +0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; +0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; +0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; +0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; +032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; +032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; +032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; +032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; +032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; +032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; +0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; +0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; +0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; +0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; +0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; +0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; +0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; +0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; +0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; +0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; +033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; +033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; +033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; +033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; +033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; +033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; +0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;; +0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;; +0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; +0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; +0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; +0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 +0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; +0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; +0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; +0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; +034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; +034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; +034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; +034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; +0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; +0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; +0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;; +0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;; +0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; +0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;; +0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;; +035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; +035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;; +035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;; +035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;; +035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;; +035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;; +0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; +0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; +0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; +0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; +0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; +0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; +0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; +0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; +0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; +0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; +036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; +036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; +036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; +036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; +036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; +036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; +0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;; +0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;; +037A;GREEK YPOGEGRAMMENI;Lm;0;L; 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; +037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;; +0384;GREEK TONOS;Sk;0;ON; 0020 0301;;;;N;GREEK SPACING TONOS;;;; +0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; +0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; +0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; +0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; +0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; +038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; +038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; +038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; +038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; +0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; +0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; +0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; +0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; +0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; +0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; +0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; +0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; +0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; +0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; +039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; +039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; +039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; +039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; +039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; +039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; +03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; +03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; +03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; +03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; +03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; +03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; +03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; +03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; +03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; +03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; +03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; +03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 +03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 +03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 +03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A +03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; +03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 +03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 +03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 +03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 +03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 +03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 +03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 +03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 +03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 +03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A +03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B +03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C +03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D +03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E +03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F +03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 +03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 +03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 +03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 +03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 +03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 +03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 +03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 +03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 +03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 +03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA +03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB +03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C +03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E +03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F +03D0;GREEK BETA SYMBOL;Ll;0;L; 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 +03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 +03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L; 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; +03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; +03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; +03D5;GREEK PHI SYMBOL;Ll;0;L; 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 +03D6;GREEK PI SYMBOL;Ll;0;L; 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 +03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;; +03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9; +03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8 +03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; +03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA +03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; +03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC +03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; +03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE +03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; +03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 +03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; +03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 +03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; +03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 +03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; +03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 +03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; +03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 +03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; +03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA +03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; +03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC +03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; +03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE +03F0;GREEK KAPPA SYMBOL;Ll;0;L; 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A +03F1;GREEK RHO SYMBOL;Ll;0;L; 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 +03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L; 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9 +03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; +03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8; +03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L; 03B5;;;;N;;;0395;;0395 +03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; +03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8; +03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7 +03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L; 03A3;;;;N;;;;03F2; +03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB; +03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA +03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;; +03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;; +03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;; +03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;; +0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; +0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; +0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452; +0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; +0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; +0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; +0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; +0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457; +0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; +0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; +040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; +040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B; +040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; +040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; +040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E; +040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; +0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; +0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; +0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; +0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; +0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; +0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; +0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; +0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; +0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; +0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; +041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; +041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; +041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; +041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; +041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; +041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; +0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; +0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; +0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; +0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; +0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; +0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; +0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; +0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; +0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; +0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; +042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; +042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; +042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; +042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; +042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; +042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; +0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 +0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 +0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 +0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 +0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 +0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 +0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 +0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 +0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 +0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 +043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A +043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B +043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C +043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D +043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E +043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F +0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 +0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 +0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 +0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 +0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 +0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 +0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 +0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 +0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 +0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 +044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A +044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B +044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C +044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D +044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E +044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F +0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 +0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 +0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402 +0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 +0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 +0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 +0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 +0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407 +0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 +0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 +045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A +045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B +045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C +045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D +045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E +045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F +0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; +0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 +0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; +0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 +0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; +0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 +0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; +0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 +0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; +0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 +046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; +046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A +046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; +046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C +046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; +046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E +0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; +0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 +0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; +0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 +0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; +0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 +0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; +0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 +0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; +0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 +047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; +047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A +047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; +047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C +047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; +047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E +0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; +0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 +0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; +0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; +0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; +0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; +0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; +0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; +0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; +048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A +048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; +048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C +048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; +048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E +0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; +0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 +0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; +0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 +0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; +0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 +0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; +0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 +0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; +0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 +049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; +049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A +049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; +049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C +049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; +049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E +04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; +04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 +04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; +04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 +04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; +04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 +04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7; +04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6 +04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; +04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 +04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; +04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA +04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; +04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC +04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; +04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE +04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; +04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 +04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; +04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 +04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5; +04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4 +04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; +04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 +04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; +04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 +04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; +04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA +04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; +04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC +04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; +04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE +04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;; +04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; +04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 +04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; +04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 +04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; +04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 +04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; +04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 +04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; +04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 +04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; +04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB +04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; +04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD +04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; +04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 +04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; +04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 +04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; +04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 +04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; +04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 +04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; +04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 +04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; +04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA +04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; +04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC +04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; +04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE +04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; +04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 +04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; +04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 +04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; +04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 +04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; +04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 +04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; +04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 +04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; +04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA +04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; +04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC +04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; +04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE +04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; +04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 +04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; +04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 +04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; +04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 +04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7; +04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6 +04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; +04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 +0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; +0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 +0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; +0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 +0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; +0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 +0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; +0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 +0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; +0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 +050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; +050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A +050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; +050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C +050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; +050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E +0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; +0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; +0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; +0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; +0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; +0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; +0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; +0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; +0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; +053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; +053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; +053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; +053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; +053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; +053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; +0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; +0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; +0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; +0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; +0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; +0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; +0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; +0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; +0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; +0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; +054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; +054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; +054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; +054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; +054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; +054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; +0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; +0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; +0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; +0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; +0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; +0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; +0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; +0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; +055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; +055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; +055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; +055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; +055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; +055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; +0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 +0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 +0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 +0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 +0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 +0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 +0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 +0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 +0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 +056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A +056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B +056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C +056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D +056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E +056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F +0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 +0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 +0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 +0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 +0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 +0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 +0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 +0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 +0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 +0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 +057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A +057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B +057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C +057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D +057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E +057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F +0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 +0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 +0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 +0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 +0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 +0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 +0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 +0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L; 0565 0582;;;;N;;;;; +0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; +058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; +0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; +0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; +0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; +0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; +0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; +0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;; +0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; +0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;; +0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; +059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; +059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; +059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; +059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; +059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; +059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; +05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; +05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; +05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;; +05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; +05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; +05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;; +05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; +05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; +05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;; +05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; +05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;; +05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; +05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; +05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; +05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; +05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; +05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; +05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; +05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; +05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; +05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; +05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; +05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; +05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; +05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; +05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; +05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; +05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;; +05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;; +05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;; +05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; +05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;; +05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; +05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; +05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;; +05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; +05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;; +05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;; +05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;; +05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; +05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; +05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; +05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; +05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; +05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; +05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; +05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; +05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; +05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; +05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; +05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; +05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; +05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; +05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; +05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; +05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; +05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; +05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; +05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; +05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; +05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; +05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; +05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; +05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; +05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; +05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; +05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; +05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; +05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; +05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; +0600;ARABIC NUMBER SIGN;Cf;0;AL;;;;;N;;;;; +0601;ARABIC SIGN SANAH;Cf;0;AL;;;;;N;;;;; +0602;ARABIC FOOTNOTE MARKER;Cf;0;AL;;;;;N;;;;; +0603;ARABIC SIGN SAFHA;Cf;0;AL;;;;;N;;;;; +060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;; +060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; +060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;; +060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;; +060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;; +0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;; +0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;; +0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; +0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; +0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; +0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; +061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; +061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; +061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; +0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; +0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; +0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; +0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; +0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; +0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; +0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; +0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; +0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; +062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; +062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; +062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; +062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; +062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; +062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; +0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; +0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; +0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; +0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; +0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; +0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; +0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; +0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; +0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; +0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; +063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; +0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; +0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; +0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; +0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; +0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; +0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; +0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; +0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; +0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; +0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; +064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; +064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; +064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; +064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; +064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; +064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; +0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; +0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; +0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; +0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; +0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; +0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; +0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;; +0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;; +0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;; +0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;; +065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; +065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; +065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; +065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;; +065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;; +0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; +0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; +0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; +0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; +0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; +0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; +0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; +0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; +0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; +0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; +066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; +066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; +066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; +066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; +066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; +066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; +0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; +0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; +0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; +0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; +0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; +0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL; 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; +0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL; 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; +0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL; 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; +0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL; 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; +0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; +067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; +067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; +067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; +067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; +067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; +067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; +0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; +0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; +0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; +0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; +0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; +0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; +0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; +0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; +0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; +0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; +068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; +068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; +068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; +068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; +068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; +0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; +0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; +0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; +0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; +0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; +0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; +0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; +0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; +0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; +069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; +06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; +06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; +06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; +06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; +06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; +06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; +06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; +06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; +06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; +06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; +06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; +06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;; +06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; +06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; +06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; +06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; +06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; +06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; +06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; +06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; +06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; +06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; +06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; +06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; +06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; +06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; +06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; +06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; +06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; +06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; +06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; +06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; +06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; +06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; +06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;; +06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; +06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; +06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; +06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; +06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; +06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; +06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; +06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; +06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; +06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; +06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; +06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; +06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;; +06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; +06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; +06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; +06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; +06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; +06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; +06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; +06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; +06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; +06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; +06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; +06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; +06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; +06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; +06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; +06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; +06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; +06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; +06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; +06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; +06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; +06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; +06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; +06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; +06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; +06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; +06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; +06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; +06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; +0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; +0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; +0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; +0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; +0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; +0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; +0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; +0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; +0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; +070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; +070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; +070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; +070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; +070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;; +0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; +0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; +0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; +0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; +0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; +0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; +0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; +0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; +0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; +0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; +071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; +071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; +071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; +071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; +071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; +071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; +0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; +0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; +0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; +0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; +0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; +0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; +0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; +0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; +0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; +0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; +072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; +072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; +072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; +072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;; +072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;; +072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;; +0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; +0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; +0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; +0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; +0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; +0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; +0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; +0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; +0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; +0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; +073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; +073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; +073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; +073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; +073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; +073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; +0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; +0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; +0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; +0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; +0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; +0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; +074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; +074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;; +074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;; +074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;; +0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;; +0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; +0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; +0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; +075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; +075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;; +075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;; +075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; +0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;; +0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;; +076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;; +076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; +076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; +076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; +0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; +0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; +0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; +0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; +0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; +0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; +0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; +0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; +0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; +0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; +078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; +078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; +078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; +078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; +078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; +078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; +0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; +0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; +0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; +0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; +0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; +0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; +0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; +0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; +0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; +0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; +079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; +079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; +079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; +079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; +079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; +079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; +07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; +07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; +07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; +07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; +07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; +07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; +07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; +07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; +07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; +07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; +07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; +07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; +07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; +07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; +07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; +07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; +07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; +07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; +0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;; +0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; +0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; +0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; +0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; +0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; +090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; +090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; +090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; +090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; +0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; +0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; +0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; +0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; +0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; +0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; +0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; +0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; +0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; +0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; +091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; +091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; +091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; +091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; +091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; +091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; +0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; +0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; +0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; +0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; +0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; +0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; +0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; +0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; +092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; +092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; +092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; +092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; +092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; +092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; +0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; +0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; +0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; +0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; +0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; +0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; +0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; +0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; +0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; +0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; +093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; +0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; +0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; +094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; +094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; +0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; +0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; +0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; +0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; +0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; +095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; +095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; +095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; +095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; +095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; +095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; +0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; +0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; +097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; +0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; +0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; +0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; +0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; +0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; +098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; +098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; +0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; +0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; +0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; +0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; +0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; +0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; +0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; +0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; +099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; +099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; +099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; +099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; +099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; +099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; +09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; +09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; +09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; +09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; +09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; +09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; +09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; +09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; +09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; +09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; +09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; +09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; +09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; +09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; +09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; +09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; +09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; +09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; +09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; +09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; +09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; +09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; +09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; +09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;; +09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; +09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; +09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; +09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;; +09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;; +09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; +09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; +09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;; +09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;; +09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;; +09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;; +09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;; +09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; +09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; +0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;; +0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; +0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; +0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; +0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; +0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; +0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; +0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; +0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; +0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; +0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; +0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; +0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; +0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; +0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; +0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; +0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; +0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; +0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; +0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; +0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; +0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; +0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; +0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; +0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; +0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; +0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; +0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; +0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; +0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; +0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; +0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; +0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; +0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; +0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; +0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; +0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; +0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; +0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; +0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; +0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; +0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; +0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; +0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; +0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; +0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; +0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; +0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; +0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; +0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; +0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; +0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; +0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; +0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; +0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; +0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; +0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; +0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; +0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; +0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; +0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; +0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; +0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; +0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; +0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; +0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; +0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; +0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; +0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; +0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; +0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; +0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; +0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; +0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; +0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; +0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; +0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; +0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; +0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; +0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; +0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; +0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; +0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; +0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; +0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; +0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; +0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; +0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; +0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; +0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; +0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; +0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; +0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; +0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; +0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; +0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; +0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; +0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; +0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; +0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; +0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; +0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; +0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; +0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; +0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; +0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; +0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; +0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; +0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; +0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; +0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; +0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; +0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; +0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; +0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; +0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; +0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; +0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; +0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; +0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; +0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; +0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; +0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; +0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; +0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; +0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; +0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; +0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; +0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; +0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; +0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; +0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; +0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; +0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; +0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; +0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; +0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; +0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; +0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; +0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; +0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; +0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; +0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;; +0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; +0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; +0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; +0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; +0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; +0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; +0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; +0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; +0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; +0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; +0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; +0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; +0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;; +0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; +0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; +0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; +0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; +0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; +0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; +0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; +0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; +0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; +0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; +0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; +0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; +0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; +0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; +0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; +0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; +0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; +0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; +0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; +0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; +0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; +0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; +0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; +0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; +0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; +0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; +0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; +0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; +0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; +0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; +0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; +0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; +0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;; +0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; +0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; +0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; +0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; +0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; +0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; +0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; +0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; +0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; +0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;; +0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;; +0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;; +0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;; +0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;; +0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;; +0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;; +0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;; +0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; +0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; +0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; +0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; +0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; +0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; +0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; +0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; +0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; +0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; +0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; +0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; +0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; +0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; +0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; +0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; +0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; +0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; +0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; +0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; +0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; +0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; +0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; +0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; +0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; +0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; +0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; +0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; +0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; +0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; +0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; +0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; +0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; +0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; +0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; +0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; +0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; +0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; +0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; +0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; +0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; +0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; +0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; +0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; +0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; +0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; +0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; +0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; +0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; +0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; +0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; +0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; +0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; +0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; +0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; +0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; +0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; +0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; +0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; +0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; +0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; +0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; +0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; +0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; +0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; +0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; +0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; +0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; +0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; +0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; +0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; +0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; +0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; +0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; +0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; +0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; +0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; +0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; +0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; +0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; +0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; +0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; +0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; +0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; +0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; +0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; +0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; +0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; +0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; +0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; +0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; +0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; +0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; +0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; +0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; +0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; +0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; +0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; +0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; +0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; +0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; +0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;; +0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; +0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;; +0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; +0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; +0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; +0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; +0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; +0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; +0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; +0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; +0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; +0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; +0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; +0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; +0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; +0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; +0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; +0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; +0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; +0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; +0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; +0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; +0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; +0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; +0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; +0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; +0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; +0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; +0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; +0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; +0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; +0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; +0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; +0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; +0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; +0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; +0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; +0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; +0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; +0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; +0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; +0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; +0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; +0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; +0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; +0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; +0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; +0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; +0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; +0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; +0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; +0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; +0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; +0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; +0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; +0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; +0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; +0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; +0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; +0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; +0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; +0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; +0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; +0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; +0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; +0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; +0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; +0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; +0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; +0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; +0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; +0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; +0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; +0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; +0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; +0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; +0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; +0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; +0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; +0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; +0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; +0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; +0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; +0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; +0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; +0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; +0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; +0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; +0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; +0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; +0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; +0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; +0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; +0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; +0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; +0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; +0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; +0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; +0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; +0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; +0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; +0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; +0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; +0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; +0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; +0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; +0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; +0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; +0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; +0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; +0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; +0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; +0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; +0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; +0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; +0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; +0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; +0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; +0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; +0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; +0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; +0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; +0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; +0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; +0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; +0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; +0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; +0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; +0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; +0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; +0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; +0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; +0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; +0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; +0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; +0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; +0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; +0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; +0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; +0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; +0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; +0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; +0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; +0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; +0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; +0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; +0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; +0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; +0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; +0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; +0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; +0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; +0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; +0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; +0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; +0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; +0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; +0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; +0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; +0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; +0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; +0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; +0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; +0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; +0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; +0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; +0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; +0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; +0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;; +0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; +0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; +0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; +0E33;THAI CHARACTER SARA AM;Lo;0;L; 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; +0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; +0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; +0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; +0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;; +0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; +0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; +0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; +0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; +0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; +0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; +0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; +0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;; +0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;; +0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;; +0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;; +0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;; +0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; +0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; +0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; +0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; +0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; +0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;; +0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; +0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; +0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; +0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; +0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; +0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; +0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; +0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; +0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; +0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; +0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; +0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; +0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; +0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; +0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; +0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; +0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; +0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; +0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; +0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; +0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; +0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; +0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; +0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; +0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; +0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; +0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; +0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; +0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; +0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; +0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; +0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; +0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; +0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; +0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; +0EB3;LAO VOWEL SIGN AM;Lo;0;L; 0ECD 0EB2;;;;N;;;;; +0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; +0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; +0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; +0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; +0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; +0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; +0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; +0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; +0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; +0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; +0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; +0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; +0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; +0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; +0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; +0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; +0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; +0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; +0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; +0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0EDC;LAO HO NO;Lo;0;L; 0EAB 0E99;;;;N;;;;; +0EDD;LAO HO MO;Lo;0;L; 0EAB 0EA1;;;;N;;;;; +0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; +0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;; +0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;; +0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;; +0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;; +0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;; +0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;; +0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;; +0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;; +0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;; +0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;; +0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;; +0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L; 0F0B;;;;N;;tsek tar;;; +0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;; +0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;; +0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;; +0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;; +0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;; +0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;; +0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;; +0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;; +0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;; +0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;; +0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;; +0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;; +0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;; +0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;; +0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;; +0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;; +0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;; +0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;; +0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;; +0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; +0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; +0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; +0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; +0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; +0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; +0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; +0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; +0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; +0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; +0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;; +0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;; +0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;; +0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;; +0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;; +0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;; +0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;; +0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;; +0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;; +0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;; +0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;; +0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;; +0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; +0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; +0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; +0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; +0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; +0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; +0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; +0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; +0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; +0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; +0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; +0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; +0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; +0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; +0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; +0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; +0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; +0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; +0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; +0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; +0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; +0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; +0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; +0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; +0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; +0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; +0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; +0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; +0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; +0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; +0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; +0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; +0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; +0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;; +0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; +0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; +0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; +0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; +0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; +0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; +0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; +0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;; +0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; +0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; +0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; +0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; +0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; +0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; +0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM; 0FB2 0F81;;;;N;;;;; +0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; +0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM; 0FB3 0F81;;;;N;;;;; +0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; +0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; +0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; +0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; +0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;; +0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;; +0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; +0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; +0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;; +0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;; +0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; +0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; +0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;; +0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;; +0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;; +0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;; +0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;; +0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;; +0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; +0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; +0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; +0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; +0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; +0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; +0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; +0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; +0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; +0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; +0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; +0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; +0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; +0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; +0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; +0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; +0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; +0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; +0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; +0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; +0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; +0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; +0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; +0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; +0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; +0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; +0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; +0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; +0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;; +0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; +0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; +0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; +0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;; +0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;; +0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; +0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; +0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; +0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; +0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; +0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; +0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; +0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;; +0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;; +0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;; +0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;; +0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;; +0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; +0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; +0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;; +0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;; +0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;; +0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;; +0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;; +0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;; +0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;; +0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;; +0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;; +0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;; +0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;; +0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;; +0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;; +0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;; +1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; +1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; +1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; +1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; +1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; +1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; +1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; +1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; +1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; +1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; +100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; +100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; +100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; +100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; +100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; +100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; +1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; +1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; +1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; +1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; +1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; +1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; +1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; +1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; +1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; +1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; +101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; +101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; +101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; +101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; +101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; +101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; +1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; +1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; +1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; +1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; +1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; +1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; +1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; +1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; +102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; +102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; +1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; +1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; +104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; +104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; +104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; +104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; +104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; +1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; +1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; +1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00; +10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01; +10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02; +10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03; +10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04; +10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05; +10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06; +10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07; +10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08; +10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09; +10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A; +10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B; +10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C; +10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D; +10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E; +10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F; +10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10; +10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11; +10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12; +10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13; +10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14; +10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15; +10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16; +10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17; +10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18; +10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19; +10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A; +10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B; +10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C; +10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D; +10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E; +10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F; +10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20; +10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21; +10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22; +10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23; +10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24; +10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25; +10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; +10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; +10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; +10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; +10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; +10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; +10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; +10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; +10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; +10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; +10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; +10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; +10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; +10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; +10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; +10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; +10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; +10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; +10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; +10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; +10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; +10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; +10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; +10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; +10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; +10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; +10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; +10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; +10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; +10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; +10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; +10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; +10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; +10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; +10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; +10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; +10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; +10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; +10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; +10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; +10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; +10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;; +10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;; +10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; +10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L; 10DC;;;;N;;;;; +1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; +1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; +1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; +1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; +1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;; +1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;; +1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; +1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; +1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;; +1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;; +110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; +110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; +110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; +110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;; +110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; +110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; +1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; +1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; +1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; +1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; +1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; +1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; +1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; +1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; +1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; +1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; +111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; +111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; +111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; +111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; +111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; +111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; +1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; +1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; +1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; +1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; +1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; +1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; +1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; +112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; +112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; +112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; +112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; +1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; +1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; +1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; +1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; +1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; +1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; +1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; +1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; +113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; +113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; +113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; +113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; +113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; +113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; +1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; +1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; +1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; +1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; +1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; +1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; +1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; +1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; +1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; +1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; +114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; +114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; +114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; +114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; +114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; +114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; +1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; +1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; +1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; +1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; +1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; +1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; +1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; +1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; +1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; +1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; +115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; +1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; +1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; +1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; +1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; +1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; +1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; +1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; +1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; +1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; +1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; +116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; +116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; +116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; +116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; +116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; +116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; +1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; +1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; +1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; +1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; +1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; +1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; +1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; +1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; +1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; +1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; +117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; +117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; +117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; +117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; +117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; +117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; +1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; +1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; +1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; +1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; +1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; +1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; +1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; +1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; +1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; +1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; +118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; +118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; +118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; +118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; +118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; +118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; +1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; +1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; +1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; +1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; +1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; +1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; +1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; +1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; +1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; +1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; +119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; +119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; +119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; +119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; +119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; +119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; +11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; +11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; +11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; +11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; +11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; +11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;; +11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; +11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;; +11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;; +11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; +11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;; +11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;; +11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;; +11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;; +11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;; +11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;; +11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;; +11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;; +11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; +11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; +11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;; +11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;; +11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; +11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;; +11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; +11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; +11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; +11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; +11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; +11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; +11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; +11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; +11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; +11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; +11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; +11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; +11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; +11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; +11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; +11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; +11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; +11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; +11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; +11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; +11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; +11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; +11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; +11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; +11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; +11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; +11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; +11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; +11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; +11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; +11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; +11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; +11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; +11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; +11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; +11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; +11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; +11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; +11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; +11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; +11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; +11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; +11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; +11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; +11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; +11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; +11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; +11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; +11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; +11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; +11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; +11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; +11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; +11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; +11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; +1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; +1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; +1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; +1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; +1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; +1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; +1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; +1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;; +1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; +1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; +120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; +120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; +120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; +120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; +120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; +120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; +1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; +1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; +1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; +1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; +1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; +1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; +1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; +1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; +1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; +1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; +121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; +121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; +121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; +121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; +121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; +121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; +1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; +1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; +1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; +1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; +1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; +1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; +1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; +1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; +1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; +1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; +122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; +122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; +122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; +122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; +122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; +122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; +1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; +1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; +1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; +1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; +1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; +1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; +1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; +1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; +1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; +123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; +123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; +123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; +1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; +1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; +1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; +1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; +1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; +1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; +1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; +1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;; +1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; +124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; +124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; +124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; +124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; +1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; +1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; +1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; +1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; +1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; +1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; +1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; +1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; +125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; +125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; +125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; +125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; +1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; +1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; +1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; +1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; +1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; +1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; +1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; +1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; +1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; +1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; +126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; +126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; +126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; +126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; +126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; +126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; +1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; +1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; +1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; +1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; +1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; +1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; +1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; +1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; +1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; +1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; +127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; +127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; +127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; +127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; +127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; +127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; +1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; +1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; +1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; +1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; +1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; +1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; +1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; +1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;; +1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; +128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; +128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; +128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; +128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; +1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; +1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; +1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; +1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; +1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; +1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; +1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; +1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; +1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; +1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; +129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; +129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; +129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; +12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; +12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; +12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; +12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; +12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; +12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; +12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; +12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; +12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; +12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; +12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; +12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; +12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; +12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; +12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; +12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;; +12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; +12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; +12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; +12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; +12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; +12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; +12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; +12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; +12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; +12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; +12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; +12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; +12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; +12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; +12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; +12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; +12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; +12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; +12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; +12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; +12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; +12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; +12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; +12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; +12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;; +12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; +12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; +12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; +12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; +12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; +12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; +12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; +12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; +12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; +12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; +12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; +12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; +12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; +12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; +12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; +12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; +12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; +12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; +12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; +12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; +12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; +12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;; +12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; +12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; +12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; +12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; +12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; +12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; +12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; +12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; +12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; +12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; +12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; +12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; +12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; +12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; +12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; +12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; +1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; +1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; +1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; +1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; +1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; +1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; +1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; +1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; +1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; +1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; +130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; +130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; +130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; +130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; +130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; +130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;; +1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; +1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; +1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; +1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; +1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; +1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; +1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; +131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; +131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; +131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; +131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; +131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; +131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;; +1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; +1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; +1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; +1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; +1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; +1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; +1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; +1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; +1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; +1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; +132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; +132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; +132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; +132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; +132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; +132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; +1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; +1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; +1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; +1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; +1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; +1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; +1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; +1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; +1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; +1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; +133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; +133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; +133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; +133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; +133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; +133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; +1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; +1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; +1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; +1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; +1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; +1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; +1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; +1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;; +1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; +1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; +134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; +134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; +134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; +134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; +134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; +134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; +1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; +1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; +1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; +1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; +1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; +1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; +1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; +1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; +1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; +1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; +135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; +135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; +1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;; +1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; +1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; +1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; +1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; +1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; +1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; +1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; +1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; +1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;; +136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;; +136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;; +136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;; +136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;; +136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;; +136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;; +1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;; +1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;; +1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; +1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; +1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; +1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; +1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; +1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; +1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; +1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; +137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; +137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; +137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; +1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;; +1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;; +1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;; +1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;; +1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;; +1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;; +1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;; +1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;; +1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;; +1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;; +138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;; +138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;; +138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;; +138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;; +138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;; +138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;; +1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;; +1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;; +1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;; +1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;; +1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;; +1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;; +1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;; +1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; +1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; +1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; +13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; +13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; +13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; +13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; +13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; +13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; +13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; +13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; +13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; +13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; +13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; +13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; +13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; +13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; +13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; +13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; +13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; +13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; +13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; +13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; +13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; +13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; +13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; +13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; +13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; +13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; +13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; +13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; +13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; +13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; +13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; +13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; +13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; +13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; +13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; +13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; +13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; +13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; +13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; +13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; +13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; +13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; +13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; +13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; +13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; +13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; +13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; +13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; +13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; +13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; +13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; +13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; +13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; +13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; +13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; +13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; +13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; +13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; +13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; +13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; +13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; +13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; +13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; +13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; +13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; +13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; +13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; +13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; +13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; +13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; +13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; +13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; +13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; +13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; +13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; +13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; +13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; +13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; +13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; +13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; +13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; +13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; +13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; +13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; +13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; +1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; +1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; +1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; +1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; +1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; +1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; +1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; +1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; +1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; +140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; +140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; +140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; +140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; +140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; +140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; +1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; +1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; +1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; +1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; +1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; +1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; +1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; +1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; +1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; +1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; +141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; +141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; +141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; +141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; +141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; +141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; +1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; +1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; +1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; +1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; +1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; +1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; +1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; +1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; +1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; +1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; +142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; +142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; +142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; +142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; +142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; +142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; +1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; +1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; +1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; +1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; +1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; +1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; +1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; +1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; +1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; +1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; +143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; +143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; +143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; +143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; +143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; +143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; +1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; +1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; +1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; +1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; +1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; +1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; +1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; +1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; +1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; +1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; +144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; +144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; +144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; +144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; +144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; +144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; +1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; +1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; +1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; +1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; +1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; +1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; +1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; +1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; +1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; +1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; +145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; +145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; +145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; +145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; +145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; +145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; +1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; +1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; +1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; +1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; +1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; +1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; +1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; +1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; +1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; +1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; +146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; +146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; +146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; +146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; +146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; +146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; +1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; +1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; +1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; +1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; +1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; +1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; +1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; +1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; +1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; +1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; +147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; +147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; +147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; +147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; +147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; +147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; +1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; +1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; +1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; +1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; +1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; +1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; +1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; +1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; +1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; +1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; +148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; +148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; +148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; +148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; +148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; +148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; +1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; +1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; +1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; +1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; +1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; +1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; +1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; +1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; +1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; +1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; +149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; +149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; +149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; +149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; +149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; +149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; +14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; +14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; +14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; +14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; +14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; +14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; +14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; +14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; +14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; +14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; +14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; +14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; +14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; +14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; +14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; +14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; +14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; +14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; +14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; +14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; +14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; +14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; +14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; +14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; +14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; +14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; +14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; +14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; +14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; +14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; +14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; +14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; +14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; +14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; +14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; +14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; +14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; +14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; +14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; +14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; +14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; +14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; +14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; +14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; +14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; +14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; +14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; +14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; +14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; +14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; +14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; +14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; +14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; +14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; +14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; +14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; +14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; +14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; +14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; +14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; +14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; +14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; +14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; +14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; +14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; +14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; +14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; +14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; +14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; +14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; +14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; +14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; +14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; +14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; +14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; +14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; +14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; +14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; +14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; +14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; +14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; +14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; +14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; +14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; +14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; +14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; +14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; +14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; +14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; +14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; +14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; +14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; +14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; +14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; +14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; +14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; +1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; +1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; +1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; +1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; +1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; +1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; +1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; +1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; +1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; +1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; +150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; +150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; +150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; +150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; +150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; +150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; +1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; +1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; +1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; +1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; +1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; +1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; +1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; +1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; +1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; +1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; +151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; +151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; +151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; +151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; +151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; +151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; +1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; +1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; +1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; +1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; +1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; +1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; +1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; +1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; +1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; +1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; +152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; +152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; +152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; +152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; +152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; +152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; +1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; +1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; +1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; +1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; +1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; +1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; +1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; +1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; +1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; +1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; +153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; +153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; +153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; +153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; +153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; +153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; +1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; +1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; +1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; +1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; +1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; +1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; +1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; +1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; +1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; +1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; +154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; +154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; +154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; +154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; +154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; +154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; +1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; +1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; +1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; +1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; +1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; +1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; +1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; +1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; +1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; +1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; +155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; +155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; +155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; +155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; +155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; +155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; +1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; +1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; +1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; +1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; +1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; +1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; +1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; +1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; +1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; +1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; +156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; +156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; +156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; +156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; +156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; +156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; +1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; +1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; +1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; +1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; +1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; +1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; +1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; +1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; +1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; +1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; +157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; +157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; +157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; +157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; +157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; +157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; +1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; +1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; +1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; +1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; +1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; +1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; +1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; +1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; +1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; +1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; +158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; +158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; +158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; +158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; +158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; +158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; +1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; +1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; +1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; +1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; +1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; +1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; +1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; +1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; +1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; +1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; +159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; +159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; +159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; +159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; +159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; +159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; +15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; +15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; +15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; +15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; +15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; +15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; +15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; +15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; +15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; +15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; +15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; +15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; +15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; +15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; +15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; +15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; +15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; +15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; +15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; +15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; +15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; +15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; +15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; +15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; +15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; +15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; +15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; +15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; +15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; +15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; +15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; +15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; +15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; +15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; +15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; +15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; +15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; +15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; +15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; +15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; +15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; +15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; +15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; +15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; +15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; +15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; +15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; +15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; +15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; +15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; +15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; +15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; +15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; +15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; +15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; +15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; +15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; +15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; +15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; +15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; +15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; +15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; +15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; +15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; +15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; +15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; +15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; +15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; +15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; +15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; +15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; +15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; +15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; +15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; +15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; +15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; +15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; +15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; +15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; +15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; +15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; +15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; +15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; +15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; +15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; +15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; +15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; +15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; +15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; +15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; +15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; +15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; +15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; +15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; +15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; +15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; +1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; +1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; +1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; +1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; +1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; +1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; +1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; +1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; +1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; +1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; +160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; +160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; +160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; +160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; +160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; +160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; +1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; +1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; +1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; +1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; +1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; +1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; +1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; +1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; +1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; +1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; +161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; +161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; +161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; +161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; +161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; +161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; +1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; +1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; +1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; +1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; +1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; +1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; +1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; +1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; +1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; +1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; +162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; +162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; +162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; +162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; +162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; +162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; +1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; +1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; +1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; +1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; +1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; +1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; +1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; +1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; +1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; +1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; +163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; +163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; +163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; +163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; +163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; +163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; +1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; +1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; +1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; +1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; +1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; +1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; +1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; +1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; +1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; +1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; +164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; +164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; +164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; +164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; +164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; +164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; +1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; +1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; +1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; +1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; +1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; +1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; +1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; +1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; +1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; +1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; +165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; +165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; +165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; +165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; +165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; +165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; +1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; +1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; +1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; +1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; +1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; +1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; +1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; +1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; +1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; +1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; +166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; +166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; +166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; +166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; +166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; +166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; +1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; +1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; +1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; +1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; +1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; +1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; +1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; +1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; +1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; +1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; +1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; +1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; +1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; +1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; +1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; +1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; +1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; +168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; +168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; +168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; +168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; +168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; +168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; +1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; +1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; +1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; +1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; +1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; +1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; +1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; +1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; +1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; +1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; +169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; +169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;; +169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;; +16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; +16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; +16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; +16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; +16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; +16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; +16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; +16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; +16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; +16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; +16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; +16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; +16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; +16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; +16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; +16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; +16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; +16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; +16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; +16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; +16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; +16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; +16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; +16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; +16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; +16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; +16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; +16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; +16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; +16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; +16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; +16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; +16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; +16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; +16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; +16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; +16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; +16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; +16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; +16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; +16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; +16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; +16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; +16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; +16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; +16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; +16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; +16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; +16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; +16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; +16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; +16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; +16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; +16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; +16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; +16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; +16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; +16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; +16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; +16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; +16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; +16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; +16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; +16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; +16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; +16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; +16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; +16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; +16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; +16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; +16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; +16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; +16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; +16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; +16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; +16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; +16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; +16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; +16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;; +16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;; +16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;; +1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; +1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; +1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; +1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; +1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; +1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; +1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; +1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; +1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; +1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; +170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; +170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; +170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; +170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; +170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; +1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; +1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; +1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; +1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; +1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; +1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; +1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; +1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; +1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; +1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; +1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; +1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; +172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; +172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; +172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; +172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; +172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; +172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; +1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; +1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; +1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; +1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; +1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; +1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; +1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; +1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; +1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; +1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; +1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; +1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; +1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; +174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; +174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; +174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; +174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; +174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; +174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; +1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; +1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; +1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; +1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; +1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; +1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; +1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; +1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; +1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; +1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; +1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; +1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; +176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; +176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; +176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; +176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; +176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; +1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; +1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; +1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; +1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; +1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; +1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; +1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; +1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; +1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; +1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; +1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; +178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; +178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; +178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; +178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; +178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; +178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; +1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; +1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; +1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; +1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; +1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; +1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; +1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; +1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; +1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; +1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; +179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; +179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; +179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; +179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; +179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; +179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; +17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; +17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; +17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; +17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;; +17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;; +17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; +17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; +17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; +17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; +17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; +17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; +17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; +17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; +17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; +17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; +17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; +17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; +17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; +17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; +17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; +17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;; +17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;; +17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; +17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; +17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; +17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; +17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; +17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; +17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; +17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; +17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; +17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; +17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; +17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; +17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; +17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; +17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; +17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; +17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; +17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; +17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; +17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;; +17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; +17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; +17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; +17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; +17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;; +17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; +17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; +17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; +17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; +17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;; +17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;; +17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;; +17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;; +17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;; +17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;; +17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;; +17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;; +17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;; +17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;; +17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;; +1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; +1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; +1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; +1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; +1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; +1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; +1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; +1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; +1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; +1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; +180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; +180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; +180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; +180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; +180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;; +1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; +1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; +1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; +1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; +1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; +1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; +1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; +1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; +1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; +1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; +182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; +182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; +182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; +182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; +182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; +182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; +1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; +1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; +1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; +1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; +1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; +1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; +1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; +1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; +1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; +1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; +183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; +183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; +183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; +183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; +183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; +183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; +1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; +1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; +1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; +1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; +1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; +1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; +1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; +1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; +1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; +1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; +184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; +184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; +184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; +184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; +184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; +184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; +1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; +1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; +1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; +1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; +1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; +1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; +1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; +1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; +1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; +1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; +185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; +185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; +185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; +185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; +185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; +185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; +1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; +1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; +1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; +1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; +1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; +1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; +1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; +1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; +1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; +1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; +186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; +186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; +186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; +186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; +186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; +186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; +1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; +1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; +1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; +1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; +1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; +1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; +1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; +1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; +1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; +1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; +1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; +1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; +1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; +1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; +1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; +1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; +1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; +1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; +188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; +188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; +188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; +188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; +188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; +188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; +1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; +1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; +1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; +1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; +1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; +1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; +1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; +1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; +1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; +189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; +189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; +189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; +189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; +189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; +18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; +18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; +18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; +18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; +18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; +18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; +18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; +18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; +18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; +1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;; +1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;; +1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;; +1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;; +1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;; +1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;; +1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;; +1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;; +1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;; +1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;; +190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;; +190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;; +190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;; +190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;; +190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;; +190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;; +1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;; +1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;; +1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;; +1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;; +1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;; +1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;; +1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;; +1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;; +1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;; +1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;; +191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;; +191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;; +191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;; +1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; +1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +1929;LIMBU SUBJOINED LETTER YA;Mc;0;NSM;;;;;N;;;;; +192A;LIMBU SUBJOINED LETTER RA;Mc;0;NSM;;;;;N;;;;; +192B;LIMBU SUBJOINED LETTER WA;Mc;0;NSM;;;;;N;;;;; +1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;; +1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;; +1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;; +1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;; +1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;; +1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;; +1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;; +1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;; +1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;; +1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;; +193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;; +193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;; +1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;; +1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;; +1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;; +1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;; +1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;; +1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;; +1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;; +1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;; +1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;; +1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;; +1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;; +1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;; +195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;; +195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;; +195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;; +195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;; +195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;; +195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;; +1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;; +1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;; +1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;; +1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;; +1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;; +1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;; +1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;; +1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;; +1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;; +1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;; +196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;; +196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;; +196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;; +196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;; +1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;; +1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;; +1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;; +1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;; +1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;; +1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;; +1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;; +1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;; +1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;; +1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;; +1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;; +1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;; +1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;; +1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;; +1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;; +198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;; +198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;; +198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;; +198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;; +198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;; +198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;; +1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;; +1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;; +1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;; +1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;; +1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;; +1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; +1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;; +1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;; +1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;; +1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;; +199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;; +199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;; +199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;; +199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;; +199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;; +199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;; +19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;; +19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;; +19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;; +19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;; +19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;; +19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;; +19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;; +19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;; +19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;; +19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; +19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; +19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; +19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; +19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; +19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; +19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; +19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; +19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; +19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; +19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; +19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; +19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; +19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; +19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;; +19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; +19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; +19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; +19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; +19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; +19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;; +19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;; +19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;; +19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;; +19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;; +19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;; +19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;; +19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;; +19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;; +19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;; +19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;; +19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;; +19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;; +19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;; +19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;; +19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;; +19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;; +19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;; +19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;; +19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;; +19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;; +19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;; +19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;; +19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;; +19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;; +19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;; +19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;; +19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;; +19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;; +19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;; +19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;; +19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;; +19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;; +19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;; +1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;; +1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;; +1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;; +1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;; +1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;; +1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;; +1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;; +1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;; +1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;; +1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;; +1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;; +1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;; +1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;; +1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;; +1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;; +1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;; +1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;; +1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;; +1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;; +1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;; +1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;; +1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;; +1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;; +1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; +1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;; +1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;; +1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;; +1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;; +1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;; +1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;; +1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;; +1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;; +1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;; +1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;; +1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;; +1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;; +1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;; +1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;; +1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;; +1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;; +1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;; +1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;; +1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;; +1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;; +1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;; +1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;; +1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;; +1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;; +1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;; +1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;; +1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;; +1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;; +1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;; +1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;; +1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;; +1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;; +1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;; +1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;; +1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;; +1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;; +1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;; +1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;; +1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;; +1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;; +1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;; +1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;; +1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;; +1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;; +1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;; +1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;; +1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;; +1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L; 0041;;;;N;;;;; +1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L; 00C6;;;;N;;;;; +1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L; 0042;;;;N;;;;; +1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;; +1D30;MODIFIER LETTER CAPITAL D;Lm;0;L; 0044;;;;N;;;;; +1D31;MODIFIER LETTER CAPITAL E;Lm;0;L; 0045;;;;N;;;;; +1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L; 018E;;;;N;;;;; +1D33;MODIFIER LETTER CAPITAL G;Lm;0;L; 0047;;;;N;;;;; +1D34;MODIFIER LETTER CAPITAL H;Lm;0;L; 0048;;;;N;;;;; +1D35;MODIFIER LETTER CAPITAL I;Lm;0;L; 0049;;;;N;;;;; +1D36;MODIFIER LETTER CAPITAL J;Lm;0;L; 004A;;;;N;;;;; +1D37;MODIFIER LETTER CAPITAL K;Lm;0;L; 004B;;;;N;;;;; +1D38;MODIFIER LETTER CAPITAL L;Lm;0;L; 004C;;;;N;;;;; +1D39;MODIFIER LETTER CAPITAL M;Lm;0;L; 004D;;;;N;;;;; +1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L; 004E;;;;N;;;;; +1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;; +1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L; 004F;;;;N;;;;; +1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L; 0222;;;;N;;;;; +1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L; 0050;;;;N;;;;; +1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L; 0052;;;;N;;;;; +1D40;MODIFIER LETTER CAPITAL T;Lm;0;L; 0054;;;;N;;;;; +1D41;MODIFIER LETTER CAPITAL U;Lm;0;L; 0055;;;;N;;;;; +1D42;MODIFIER LETTER CAPITAL W;Lm;0;L; 0057;;;;N;;;;; +1D43;MODIFIER LETTER SMALL A;Lm;0;L; 0061;;;;N;;;;; +1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L; 0250;;;;N;;;;; +1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L; 0251;;;;N;;;;; +1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L; 1D02;;;;N;;;;; +1D47;MODIFIER LETTER SMALL B;Lm;0;L; 0062;;;;N;;;;; +1D48;MODIFIER LETTER SMALL D;Lm;0;L; 0064;;;;N;;;;; +1D49;MODIFIER LETTER SMALL E;Lm;0;L; 0065;;;;N;;;;; +1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L; 0259;;;;N;;;;; +1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L; 025B;;;;N;;;;; +1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L; 025C;;;;N;;;;; +1D4D;MODIFIER LETTER SMALL G;Lm;0;L; 0067;;;;N;;;;; +1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;; +1D4F;MODIFIER LETTER SMALL K;Lm;0;L; 006B;;;;N;;;;; +1D50;MODIFIER LETTER SMALL M;Lm;0;L; 006D;;;;N;;;;; +1D51;MODIFIER LETTER SMALL ENG;Lm;0;L; 014B;;;;N;;;;; +1D52;MODIFIER LETTER SMALL O;Lm;0;L; 006F;;;;N;;;;; +1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L; 0254;;;;N;;;;; +1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L; 1D16;;;;N;;;;; +1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L; 1D17;;;;N;;;;; +1D56;MODIFIER LETTER SMALL P;Lm;0;L; 0070;;;;N;;;;; +1D57;MODIFIER LETTER SMALL T;Lm;0;L; 0074;;;;N;;;;; +1D58;MODIFIER LETTER SMALL U;Lm;0;L; 0075;;;;N;;;;; +1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L; 1D1D;;;;N;;;;; +1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L; 026F;;;;N;;;;; +1D5B;MODIFIER LETTER SMALL V;Lm;0;L; 0076;;;;N;;;;; +1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L; 1D25;;;;N;;;;; +1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L; 03B2;;;;N;;;;; +1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L; 03B3;;;;N;;;;; +1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L; 03B4;;;;N;;;;; +1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L; 03C6;;;;N;;;;; +1D61;MODIFIER LETTER SMALL CHI;Lm;0;L; 03C7;;;;N;;;;; +1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L; 0069;;;;N;;;;; +1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L; 0072;;;;N;;;;; +1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L; 0075;;;;N;;;;; +1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L; 0076;;;;N;;;;; +1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L; 03B2;;;;N;;;;; +1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L; 03C1;;;;N;;;;; +1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L; 03C6;;;;N;;;;; +1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L; 03C7;;;;N;;;;; +1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;; +1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;; +1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L; 043D;;;;N;;;;; +1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;;; +1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;; +1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;; +1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;; +1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L; 0252;;;;N;;;;; +1D9C;MODIFIER LETTER SMALL C;Lm;0;L; 0063;;;;N;;;;; +1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L; 0255;;;;N;;;;; +1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L; 00F0;;;;N;;;;; +1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L; 025C;;;;N;;;;; +1DA0;MODIFIER LETTER SMALL F;Lm;0;L; 0066;;;;N;;;;; +1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L; 025F;;;;N;;;;; +1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L; 0261;;;;N;;;;; +1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L; 0265;;;;N;;;;; +1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L; 0268;;;;N;;;;; +1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L; 0269;;;;N;;;;; +1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L; 026A;;;;N;;;;; +1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L; 1D7B;;;;N;;;;; +1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L; 029D;;;;N;;;;; +1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L; 026D;;;;N;;;;; +1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L; 1D85;;;;N;;;;; +1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L; 029F;;;;N;;;;; +1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L; 0271;;;;N;;;;; +1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L; 0270;;;;N;;;;; +1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L; 0272;;;;N;;;;; +1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L; 0273;;;;N;;;;; +1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L; 0274;;;;N;;;;; +1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L; 0275;;;;N;;;;; +1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L; 0278;;;;N;;;;; +1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L; 0282;;;;N;;;;; +1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L; 0283;;;;N;;;;; +1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L; 01AB;;;;N;;;;; +1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L; 0289;;;;N;;;;; +1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L; 028A;;;;N;;;;; +1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L; 1D1C;;;;N;;;;; +1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L; 028B;;;;N;;;;; +1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L; 028C;;;;N;;;;; +1DBB;MODIFIER LETTER SMALL Z;Lm;0;L; 007A;;;;N;;;;; +1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L; 0290;;;;N;;;;; +1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L; 0291;;;;N;;;;; +1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L; 0292;;;;N;;;;; +1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L; 03B8;;;;N;;;;; +1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; +1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;; +1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;; +1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; +1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 +1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; +1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 +1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; +1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 +1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; +1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 +1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; +1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 +1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; +1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A +1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; +1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C +1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; +1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E +1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; +1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 +1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; +1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 +1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; +1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 +1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; +1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 +1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; +1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 +1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; +1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A +1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; +1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C +1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; +1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E +1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; +1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 +1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; +1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 +1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; +1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 +1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; +1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 +1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; +1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 +1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; +1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A +1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; +1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C +1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; +1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E +1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; +1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 +1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; +1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 +1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; +1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 +1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; +1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 +1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; +1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 +1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; +1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A +1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; +1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C +1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; +1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E +1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; +1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 +1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; +1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 +1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; +1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 +1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; +1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 +1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; +1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 +1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; +1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A +1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; +1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C +1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; +1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E +1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; +1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 +1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; +1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 +1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; +1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 +1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; +1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 +1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; +1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 +1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; +1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A +1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; +1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C +1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; +1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E +1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; +1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 +1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; +1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 +1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; +1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 +1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; +1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 +1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; +1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 +1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; +1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A +1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; +1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C +1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; +1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E +1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; +1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 +1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; +1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 +1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; +1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 +1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; +1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 +1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; +1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 +1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; +1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A +1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; +1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C +1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; +1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E +1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; +1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 +1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; +1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 +1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; +1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 +1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; +1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 +1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; +1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 +1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; +1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A +1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; +1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C +1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; +1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E +1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; +1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 +1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; +1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 +1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; +1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 +1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; +1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; +1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; +1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; +1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L; 0061 02BE;;;;N;;;;; +1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 +1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; +1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 +1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; +1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 +1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; +1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 +1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; +1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 +1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; +1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 +1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; +1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA +1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; +1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC +1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; +1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE +1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; +1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 +1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; +1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 +1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; +1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 +1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; +1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 +1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; +1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 +1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; +1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA +1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; +1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC +1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; +1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE +1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; +1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 +1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; +1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 +1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; +1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 +1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; +1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 +1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; +1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 +1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; +1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA +1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; +1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC +1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; +1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE +1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; +1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 +1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; +1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 +1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; +1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 +1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; +1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 +1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; +1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 +1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; +1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA +1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; +1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC +1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; +1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE +1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; +1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 +1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; +1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 +1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; +1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 +1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; +1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 +1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; +1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 +1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; +1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA +1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; +1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC +1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; +1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE +1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; +1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 +1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; +1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 +1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; +1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 +1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; +1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 +1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; +1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 +1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 +1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 +1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A +1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B +1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C +1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D +1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E +1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F +1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; +1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; +1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; +1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; +1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; +1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; +1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; +1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; +1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 +1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 +1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A +1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B +1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C +1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D +1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; +1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; +1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; +1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; +1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; +1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; +1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 +1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 +1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A +1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B +1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C +1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D +1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E +1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F +1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; +1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; +1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; +1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; +1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; +1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; +1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; +1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; +1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 +1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 +1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A +1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B +1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C +1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D +1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E +1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F +1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; +1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; +1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; +1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; +1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; +1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; +1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; +1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; +1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 +1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 +1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A +1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B +1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C +1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D +1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; +1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; +1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; +1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; +1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; +1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; +1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; +1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 +1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; +1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B +1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; +1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D +1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; +1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F +1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; +1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; +1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; +1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; +1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 +1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 +1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A +1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B +1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C +1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D +1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E +1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F +1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; +1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; +1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; +1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; +1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; +1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; +1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; +1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; +1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA +1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB +1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 +1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 +1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA +1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB +1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA +1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB +1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 +1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 +1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA +1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB +1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA +1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB +1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 +1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 +1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A +1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B +1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C +1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D +1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E +1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F +1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; +1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; +1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; +1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; +1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; +1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; +1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; +1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; +1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 +1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 +1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A +1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B +1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C +1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D +1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E +1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F +1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; +1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; +1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; +1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; +1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; +1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; +1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; +1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; +1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 +1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 +1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA +1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB +1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC +1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD +1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE +1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF +1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; +1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; +1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; +1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; +1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; +1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; +1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; +1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; +1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 +1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 +1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; +1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC +1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; +1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; +1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; +1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; +1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; +1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; +1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; +1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; +1FBD;GREEK KORONIS;Sk;0;ON; 0020 0313;;;;N;;;;; +1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 +1FBF;GREEK PSILI;Sk;0;ON; 0020 0313;;;;N;;;;; +1FC0;GREEK PERISPOMENI;Sk;0;ON; 0020 0342;;;;N;;;;; +1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; +1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; +1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC +1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; +1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; +1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; +1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; +1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; +1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; +1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; +1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; +1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; +1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; +1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; +1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 +1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 +1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; +1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; +1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; +1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; +1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; +1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; +1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; +1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; +1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; +1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; +1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; +1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 +1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 +1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; +1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; +1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; +1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC +1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; +1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; +1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; +1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; +1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; +1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; +1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; +1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; +1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; +1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; +1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; +1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC +1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; +1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; +1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; +1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; +1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; +1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; +1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; +1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; +1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; +1FFE;GREEK DASIA;Sk;0;ON; 0020 0314;;;;N;;;;; +2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; +2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; +2002;EN SPACE;Zs;0;WS; 0020;;;;N;;;;; +2003;EM SPACE;Zs;0;WS; 0020;;;;N;;;;; +2004;THREE-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; +2005;FOUR-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; +2006;SIX-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; +2007;FIGURE SPACE;Zs;0;WS; 0020;;;;N;;;;; +2008;PUNCTUATION SPACE;Zs;0;WS; 0020;;;;N;;;;; +2009;THIN SPACE;Zs;0;WS; 0020;;;;N;;;;; +200A;HAIR SPACE;Zs;0;WS; 0020;;;;N;;;;; +200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;; +200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; +200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; +200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; +200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; +2010;HYPHEN;Pd;0;ON;;;;;N;;;;; +2011;NON-BREAKING HYPHEN;Pd;0;ON; 2010;;;;N;;;;; +2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; +2013;EN DASH;Pd;0;ON;;;;;N;;;;; +2014;EM DASH;Pd;0;ON;;;;;N;;;;; +2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; +2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; +2017;DOUBLE LOW LINE;Po;0;ON; 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; +2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;; +2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;; +201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;; +201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;; +201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;; +201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;; +201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;; +201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;; +2020;DAGGER;Po;0;ON;;;;;N;;;;; +2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; +2022;BULLET;Po;0;ON;;;;;N;;;;; +2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; +2024;ONE DOT LEADER;Po;0;ON; 002E;;;;N;;;;; +2025;TWO DOT LEADER;Po;0;ON; 002E 002E;;;;N;;;;; +2026;HORIZONTAL ELLIPSIS;Po;0;ON; 002E 002E 002E;;;;N;;;;; +2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; +2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; +2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; +202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; +202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; +202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; +202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; +202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; +202F;NARROW NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;;;;; +2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; +2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; +2032;PRIME;Po;0;ET;;;;;N;;;;; +2033;DOUBLE PRIME;Po;0;ET; 2032 2032;;;;N;;;;; +2034;TRIPLE PRIME;Po;0;ET; 2032 2032 2032;;;;N;;;;; +2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; +2036;REVERSED DOUBLE PRIME;Po;0;ON; 2035 2035;;;;N;;;;; +2037;REVERSED TRIPLE PRIME;Po;0;ON; 2035 2035 2035;;;;N;;;;; +2038;CARET;Po;0;ON;;;;;N;;;;; +2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; +203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; +203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; +203C;DOUBLE EXCLAMATION MARK;Po;0;ON; 0021 0021;;;;N;;;;; +203D;INTERROBANG;Po;0;ON;;;;;N;;;;; +203E;OVERLINE;Po;0;ON; 0020 0305;;;;N;SPACING OVERSCORE;;;; +203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;; +2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; +2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; +2042;ASTERISM;Po;0;ON;;;;;N;;;;; +2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; +2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;; +2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; +2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; +2047;DOUBLE QUESTION MARK;Po;0;ON; 003F 003F;;;;N;;;;; +2048;QUESTION EXCLAMATION MARK;Po;0;ON; 003F 0021;;;;N;;;;; +2049;EXCLAMATION QUESTION MARK;Po;0;ON; 0021 003F;;;;N;;;;; +204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; +204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; +204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; +204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; +204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; +204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; +2050;CLOSE UP;Po;0;ON;;;;;N;;;;; +2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; +2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2053;SWUNG DASH;Po;0;ON;;;;;N;;;;; +2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;; +2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;; +2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2057;QUADRUPLE PRIME;Po;0;ON; 2032 2032 2032 2032;;;;N;;;;; +2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;; +205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;; +205D;TRICOLON;Po;0;ON;;;;;N;;;;; +205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;; +205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS; 0020;;;;N;;;;; +2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; +2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; +2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; +2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; +206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; +206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; +206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; +206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; +206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; +206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; +2070;SUPERSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; +2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;;; +2074;SUPERSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; +2075;SUPERSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; +2076;SUPERSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;; +2077;SUPERSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; +2078;SUPERSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; +2079;SUPERSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;; +207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; +207B;SUPERSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; +207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; +207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; +207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; +207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;;; +2080;SUBSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;; +2081;SUBSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;; +2082;SUBSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;; +2083;SUBSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;; +2084;SUBSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;; +2085;SUBSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;; +2086;SUBSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;; +2087;SUBSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; +2088;SUBSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; +2089;SUBSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;; +208A;SUBSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; +208B;SUBSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; +208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; +208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; +208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; +2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L; 0061;;;;N;;;;; +2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L; 0065;;;;N;;;;; +2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L; 006F;;;;N;;;;; +2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L; 0078;;;;N;;;;; +2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L; 0259;;;;N;;;;; +20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; +20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; +20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; +20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; +20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; +20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; +20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; +20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; +20A8;RUPEE SIGN;Sc;0;ET; 0052 0073;;;;N;;;;; +20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; +20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; +20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; +20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; +20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; +20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; +20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; +20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; +20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; +20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;; +20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;; +20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;; +20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;; +20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; +20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; +20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; +20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; +20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; +20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; +20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; +20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; +20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; +20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; +20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; +20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; +20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; +20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; +20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; +20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; +20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; +20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; +20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; +20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; +20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; +20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; +20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; +20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; +20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; +20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; +2100;ACCOUNT OF;So;0;ON; 0061 002F 0063;;;;N;;;;; +2101;ADDRESSED TO THE SUBJECT;So;0;ON; 0061 002F 0073;;;;N;;;;; +2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L; 0043;;;;N;DOUBLE-STRUCK C;;;; +2103;DEGREE CELSIUS;So;0;ON; 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; +2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; +2105;CARE OF;So;0;ON; 0063 002F 006F;;;;N;;;;; +2106;CADA UNA;So;0;ON; 0063 002F 0075;;;;N;;;;; +2107;EULER CONSTANT;Lu;0;L; 0190;;;;N;EULERS;;;; +2108;SCRUPLE;So;0;ON;;;;;N;;;;; +2109;DEGREE FAHRENHEIT;So;0;ON; 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; +210A;SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; +210B;SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;SCRIPT H;;;; +210C;BLACK-LETTER CAPITAL H;Lu;0;L; 0048;;;;N;BLACK-LETTER H;;;; +210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L; 0048;;;;N;DOUBLE-STRUCK H;;;; +210E;PLANCK CONSTANT;Ll;0;L; 0068;;;;N;;;;; +210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L; 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; +2110;SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;SCRIPT I;;;; +2111;BLACK-LETTER CAPITAL I;Lu;0;L; 0049;;;;N;BLACK-LETTER I;;;; +2112;SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;SCRIPT L;;;; +2113;SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; +2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; +2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L; 004E;;;;N;DOUBLE-STRUCK N;;;; +2116;NUMERO SIGN;So;0;ON; 004E 006F;;;;N;NUMERO;;;; +2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; +2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;; +2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L; 0050;;;;N;DOUBLE-STRUCK P;;;; +211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L; 0051;;;;N;DOUBLE-STRUCK Q;;;; +211B;SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;SCRIPT R;;;; +211C;BLACK-LETTER CAPITAL R;Lu;0;L; 0052;;;;N;BLACK-LETTER R;;;; +211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L; 0052;;;;N;DOUBLE-STRUCK R;;;; +211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; +211F;RESPONSE;So;0;ON;;;;;N;;;;; +2120;SERVICE MARK;So;0;ON; 0053 004D;;;;N;;;;; +2121;TELEPHONE SIGN;So;0;ON; 0054 0045 004C;;;;N;T E L SYMBOL;;;; +2122;TRADE MARK SIGN;So;0;ON; 0054 004D;;;;N;TRADEMARK;;;; +2123;VERSICLE;So;0;ON;;;;;N;;;;; +2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L; 005A;;;;N;DOUBLE-STRUCK Z;;;; +2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; +2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; +2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; +2128;BLACK-LETTER CAPITAL Z;Lu;0;L; 005A;;;;N;BLACK-LETTER Z;;;; +2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; +212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; +212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; +212C;SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;SCRIPT B;;;; +212D;BLACK-LETTER CAPITAL C;Lu;0;L; 0043;;;;N;BLACK-LETTER C;;;; +212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; +212F;SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; +2130;SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;SCRIPT E;;;; +2131;SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;SCRIPT F;;;; +2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;; +2133;SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;SCRIPT M;;;; +2134;SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; +2135;ALEF SYMBOL;Lo;0;L; 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; +2136;BET SYMBOL;Lo;0;L; 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; +2137;GIMEL SYMBOL;Lo;0;L; 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; +2138;DALET SYMBOL;Lo;0;L; 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; +2139;INFORMATION SOURCE;Ll;0;L; 0069;;;;N;;;;; +213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; +213B;FACSIMILE SIGN;So;0;ON; 0046 0041 0058;;;;N;;;;; +213C;DOUBLE-STRUCK SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON; 2211;;;;Y;;;;; +2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; +2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; +2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; +214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; +214C;PER SIGN;So;0;ON;;;;;N;;;;; +2153;VULGAR FRACTION ONE THIRD;No;0;ON; 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; +2154;VULGAR FRACTION TWO THIRDS;No;0;ON; 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; +2155;VULGAR FRACTION ONE FIFTH;No;0;ON; 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; +2156;VULGAR FRACTION TWO FIFTHS;No;0;ON; 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; +2157;VULGAR FRACTION THREE FIFTHS;No;0;ON; 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; +2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON; 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; +2159;VULGAR FRACTION ONE SIXTH;No;0;ON; 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; +215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON; 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; +215B;VULGAR FRACTION ONE EIGHTH;No;0;ON; 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; +215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON; 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; +215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON; 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; +215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON; 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; +215F;FRACTION NUMERATOR ONE;No;0;ON; 0031 2044;;;1;N;;;;; +2160;ROMAN NUMERAL ONE;Nl;0;L; 0049;;;1;N;;;;2170; +2161;ROMAN NUMERAL TWO;Nl;0;L; 0049 0049;;;2;N;;;;2171; +2162;ROMAN NUMERAL THREE;Nl;0;L; 0049 0049 0049;;;3;N;;;;2172; +2163;ROMAN NUMERAL FOUR;Nl;0;L; 0049 0056;;;4;N;;;;2173; +2164;ROMAN NUMERAL FIVE;Nl;0;L; 0056;;;5;N;;;;2174; +2165;ROMAN NUMERAL SIX;Nl;0;L; 0056 0049;;;6;N;;;;2175; +2166;ROMAN NUMERAL SEVEN;Nl;0;L; 0056 0049 0049;;;7;N;;;;2176; +2167;ROMAN NUMERAL EIGHT;Nl;0;L; 0056 0049 0049 0049;;;8;N;;;;2177; +2168;ROMAN NUMERAL NINE;Nl;0;L; 0049 0058;;;9;N;;;;2178; +2169;ROMAN NUMERAL TEN;Nl;0;L; 0058;;;10;N;;;;2179; +216A;ROMAN NUMERAL ELEVEN;Nl;0;L; 0058 0049;;;11;N;;;;217A; +216B;ROMAN NUMERAL TWELVE;Nl;0;L; 0058 0049 0049;;;12;N;;;;217B; +216C;ROMAN NUMERAL FIFTY;Nl;0;L; 004C;;;50;N;;;;217C; +216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0043;;;100;N;;;;217D; +216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0044;;;500;N;;;;217E; +216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 004D;;;1000;N;;;;217F; +2170;SMALL ROMAN NUMERAL ONE;Nl;0;L; 0069;;;1;N;;;2160;;2160 +2171;SMALL ROMAN NUMERAL TWO;Nl;0;L; 0069 0069;;;2;N;;;2161;;2161 +2172;SMALL ROMAN NUMERAL THREE;Nl;0;L; 0069 0069 0069;;;3;N;;;2162;;2162 +2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L; 0069 0076;;;4;N;;;2163;;2163 +2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L; 0076;;;5;N;;;2164;;2164 +2175;SMALL ROMAN NUMERAL SIX;Nl;0;L; 0076 0069;;;6;N;;;2165;;2165 +2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L; 0076 0069 0069;;;7;N;;;2166;;2166 +2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L; 0076 0069 0069 0069;;;8;N;;;2167;;2167 +2178;SMALL ROMAN NUMERAL NINE;Nl;0;L; 0069 0078;;;9;N;;;2168;;2168 +2179;SMALL ROMAN NUMERAL TEN;Nl;0;L; 0078;;;10;N;;;2169;;2169 +217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L; 0078 0069;;;11;N;;;216A;;216A +217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L; 0078 0069 0069;;;12;N;;;216B;;216B +217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L; 006C;;;50;N;;;216C;;216C +217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0063;;;100;N;;;216D;;216D +217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0064;;;500;N;;;216E;;216E +217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 006D;;;1000;N;;;216F;;216F +2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; +2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; +2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; +2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;; +2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; +2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; +2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; +2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; +2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; +2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; +2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; +2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; +2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; +2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; +219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; +219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; +219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; +219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; +219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; +219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; +21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; +21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; +21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; +21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; +21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; +21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; +21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; +21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; +21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; +21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; +21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; +21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; +21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; +21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; +21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; +21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; +21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; +21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; +21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; +21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; +21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; +21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; +21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; +21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; +21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; +21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; +21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; +21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; +21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; +21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; +21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; +21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; +21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; +21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; +21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; +21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; +21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; +21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; +21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; +21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; +21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; +21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; +21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; +21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; +21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; +21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; +21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; +21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; +21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; +21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; +21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; +21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; +21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; +21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; +21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; +21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; +21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; +21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; +21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; +21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; +21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; +21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; +21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; +21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; +21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; +21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; +21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; +21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; +21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; +21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; +21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; +21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; +21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; +21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; +21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; +21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; +21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; +21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; +21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; +21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; +21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; +21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; +21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; +21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; +21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; +21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +2200;FOR ALL;Sm;0;ON;;;;;N;;;;; +2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; +2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; +2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; +2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; +2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; +2206;INCREMENT;Sm;0;ON;;;;;N;;;;; +2207;NABLA;Sm;0;ON;;;;;N;;;;; +2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; +2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; +220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; +220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; +220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; +220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; +220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; +220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; +2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; +2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; +2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;; +2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; +2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; +2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; +2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; +2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; +2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; +2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; +221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; +221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; +221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; +221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; +221E;INFINITY;Sm;0;ON;;;;;N;;;;; +221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; +2220;ANGLE;Sm;0;ON;;;;;Y;;;;; +2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; +2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; +2223;DIVIDES;Sm;0;ON;;;;;N;;;;; +2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; +2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; +2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; +2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; +222A;UNION;Sm;0;ON;;;;;N;;;;; +222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; +222C;DOUBLE INTEGRAL;Sm;0;ON; 222B 222B;;;;Y;;;;; +222D;TRIPLE INTEGRAL;Sm;0;ON; 222B 222B 222B;;;;Y;;;;; +222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +222F;SURFACE INTEGRAL;Sm;0;ON; 222E 222E;;;;Y;;;;; +2230;VOLUME INTEGRAL;Sm;0;ON; 222E 222E 222E;;;;Y;;;;; +2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2234;THEREFORE;Sm;0;ON;;;;;N;;;;; +2235;BECAUSE;Sm;0;ON;;;;;N;;;;; +2236;RATIO;Sm;0;ON;;;;;N;;;;; +2237;PROPORTION;Sm;0;ON;;;;;N;;;;; +2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; +2239;EXCESS;Sm;0;ON;;;;;Y;;;;; +223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; +223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; +223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;; +223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; +223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; +2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; +2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; +2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; +2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; +2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; +2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; +224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; +224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; +224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; +2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; +2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; +2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; +2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; +2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; +2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; +2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; +2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; +2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; +225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; +225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; +225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; +225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; +225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; +225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; +2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; +2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; +2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; +2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; +2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; +2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; +2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; +2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; +226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; +226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; +226C;BETWEEN;Sm;0;ON;;;;;N;;;;; +226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; +226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; +226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; +2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; +2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; +2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; +2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; +2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; +2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; +2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; +2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; +2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; +2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; +227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; +227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; +2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; +2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; +2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; +2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; +2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; +2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; +2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; +228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; +228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; +228C;MULTISET;Sm;0;ON;;;;;Y;;;;; +228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; +228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; +228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; +2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; +2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; +2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; +2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; +2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; +2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; +2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; +229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; +229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; +229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; +229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; +229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; +22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; +22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; +22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; +22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; +22A5;UP TACK;Sm;0;ON;;;;;N;;;;; +22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; +22A7;MODELS;Sm;0;ON;;;;;Y;;;;; +22A8;TRUE;Sm;0;ON;;;;;Y;;;;; +22A9;FORCES;Sm;0;ON;;;;;Y;;;;; +22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; +22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; +22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; +22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; +22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; +22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; +22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; +22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; +22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; +22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; +22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; +22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; +22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; +22BB;XOR;Sm;0;ON;;;;;N;;;;; +22BC;NAND;Sm;0;ON;;;;;N;;;;; +22BD;NOR;Sm;0;ON;;;;;N;;;;; +22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; +22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; +22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; +22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; +22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; +22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; +22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; +22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; +22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; +22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; +22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; +22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; +22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; +22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; +22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; +22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; +22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; +22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; +22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; +22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; +22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; +22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; +22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; +22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; +22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; +22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; +22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; +22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; +22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; +22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; +22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; +22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; +22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; +22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; +22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; +22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; +22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; +22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; +22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; +22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; +22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; +22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; +22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; +2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; +2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; +2302;HOUSE;So;0;ON;;;;;N;;;;; +2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; +2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; +2305;PROJECTIVE;So;0;ON;;;;;N;;;;; +2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; +2307;WAVY LINE;So;0;ON;;;;;N;;;;; +2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; +2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; +230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; +230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; +230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; +230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; +230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; +230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; +2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; +2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; +2312;ARC;So;0;ON;;;;;N;;;;; +2313;SEGMENT;So;0;ON;;;;;N;;;;; +2314;SECTOR;So;0;ON;;;;;N;;;;; +2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; +2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; +2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; +2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; +2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; +231A;WATCH;So;0;ON;;;;;N;;;;; +231B;HOURGLASS;So;0;ON;;;;;N;;;;; +231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; +231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; +231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; +231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; +2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2322;FROWN;So;0;ON;;;;;N;;;;; +2323;SMILE;So;0;ON;;;;;N;;;;; +2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; +2325;OPTION KEY;So;0;ON;;;;;N;;;;; +2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; +2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; +2328;KEYBOARD;So;0;ON;;;;;N;;;;; +2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; +232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; +232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; +232C;BENZENE RING;So;0;ON;;;;;N;;;;; +232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; +232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; +232F;SYMMETRY;So;0;ON;;;;;N;;;;; +2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; +2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; +2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; +2333;SLOPE;So;0;ON;;;;;N;;;;; +2334;COUNTERBORE;So;0;ON;;;;;N;;;;; +2335;COUNTERSINK;So;0;ON;;;;;N;;;;; +2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; +2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; +2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; +2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; +233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; +233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; +233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; +233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; +233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; +233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; +2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; +2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; +2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; +2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; +2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; +2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; +2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; +2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; +2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; +2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; +234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;; +234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; +234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; +234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; +234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;; +234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; +2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; +2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;; +2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; +2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; +2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; +2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;; +2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; +2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; +2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; +2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; +235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; +235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; +235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; +235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; +235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; +235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; +2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; +2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;; +2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; +2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; +2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; +2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; +2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; +2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; +2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; +2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; +236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; +236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; +236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; +236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; +236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; +236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; +2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; +2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; +2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; +2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; +2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; +2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; +2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; +2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; +2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; +2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; +237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; +237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; +237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; +237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; +237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; +237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; +2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; +2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; +2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; +2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; +2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; +2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; +2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; +2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; +2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; +2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;; +238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;; +238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;; +238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; +238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; +238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; +238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; +2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; +2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; +2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; +2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; +2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; +2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; +2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; +2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; +2398;NEXT PAGE;So;0;ON;;;;;N;;;;; +2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; +239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; +239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; +23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; +23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; +23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; +23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;; +23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;; +23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;; +23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; +23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; +23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; +23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; +23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; +23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; +23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; +23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; +23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; +23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; +23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; +23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; +23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;; +23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;; +23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;; +23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;; +23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;; +23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;; +23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;; +23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;; +23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;; +23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;; +23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;; +23DA;EARTH GROUND;So;0;ON;;;;;N;;;;; +23DB;FUSE;So;0;ON;;;;;N;;;;; +2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; +2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; +2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; +2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; +2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; +2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; +2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; +2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; +2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; +2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; +240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; +240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; +240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; +240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; +240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; +240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; +2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; +2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; +2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; +2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; +2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; +2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; +2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; +2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; +2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; +2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; +241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; +241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; +241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; +241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; +241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; +241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; +2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; +2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; +2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; +2423;OPEN BOX;So;0;ON;;;;;N;;;;; +2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; +2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; +2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; +2440;OCR HOOK;So;0;ON;;;;;N;;;;; +2441;OCR CHAIR;So;0;ON;;;;;N;;;;; +2442;OCR FORK;So;0;ON;;;;;N;;;;; +2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; +2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; +2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; +2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; +2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; +2448;OCR DASH;So;0;ON;;;;;N;;;;; +2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; +244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; +2460;CIRCLED DIGIT ONE;No;0;ON; 0031;;1;1;N;;;;; +2461;CIRCLED DIGIT TWO;No;0;ON; 0032;;2;2;N;;;;; +2462;CIRCLED DIGIT THREE;No;0;ON; 0033;;3;3;N;;;;; +2463;CIRCLED DIGIT FOUR;No;0;ON; 0034;;4;4;N;;;;; +2464;CIRCLED DIGIT FIVE;No;0;ON; 0035;;5;5;N;;;;; +2465;CIRCLED DIGIT SIX;No;0;ON; 0036;;6;6;N;;;;; +2466;CIRCLED DIGIT SEVEN;No;0;ON; 0037;;7;7;N;;;;; +2467;CIRCLED DIGIT EIGHT;No;0;ON; 0038;;8;8;N;;;;; +2468;CIRCLED DIGIT NINE;No;0;ON; 0039;;9;9;N;;;;; +2469;CIRCLED NUMBER TEN;No;0;ON; 0031 0030;;;10;N;;;;; +246A;CIRCLED NUMBER ELEVEN;No;0;ON; 0031 0031;;;11;N;;;;; +246B;CIRCLED NUMBER TWELVE;No;0;ON; 0031 0032;;;12;N;;;;; +246C;CIRCLED NUMBER THIRTEEN;No;0;ON; 0031 0033;;;13;N;;;;; +246D;CIRCLED NUMBER FOURTEEN;No;0;ON; 0031 0034;;;14;N;;;;; +246E;CIRCLED NUMBER FIFTEEN;No;0;ON; 0031 0035;;;15;N;;;;; +246F;CIRCLED NUMBER SIXTEEN;No;0;ON; 0031 0036;;;16;N;;;;; +2470;CIRCLED NUMBER SEVENTEEN;No;0;ON; 0031 0037;;;17;N;;;;; +2471;CIRCLED NUMBER EIGHTEEN;No;0;ON; 0031 0038;;;18;N;;;;; +2472;CIRCLED NUMBER NINETEEN;No;0;ON; 0031 0039;;;19;N;;;;; +2473;CIRCLED NUMBER TWENTY;No;0;ON; 0032 0030;;;20;N;;;;; +2474;PARENTHESIZED DIGIT ONE;No;0;ON; 0028 0031 0029;;1;1;N;;;;; +2475;PARENTHESIZED DIGIT TWO;No;0;ON; 0028 0032 0029;;2;2;N;;;;; +2476;PARENTHESIZED DIGIT THREE;No;0;ON; 0028 0033 0029;;3;3;N;;;;; +2477;PARENTHESIZED DIGIT FOUR;No;0;ON; 0028 0034 0029;;4;4;N;;;;; +2478;PARENTHESIZED DIGIT FIVE;No;0;ON; 0028 0035 0029;;5;5;N;;;;; +2479;PARENTHESIZED DIGIT SIX;No;0;ON; 0028 0036 0029;;6;6;N;;;;; +247A;PARENTHESIZED DIGIT SEVEN;No;0;ON; 0028 0037 0029;;7;7;N;;;;; +247B;PARENTHESIZED DIGIT EIGHT;No;0;ON; 0028 0038 0029;;8;8;N;;;;; +247C;PARENTHESIZED DIGIT NINE;No;0;ON; 0028 0039 0029;;9;9;N;;;;; +247D;PARENTHESIZED NUMBER TEN;No;0;ON; 0028 0031 0030 0029;;;10;N;;;;; +247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON; 0028 0031 0031 0029;;;11;N;;;;; +247F;PARENTHESIZED NUMBER TWELVE;No;0;ON; 0028 0031 0032 0029;;;12;N;;;;; +2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON; 0028 0031 0033 0029;;;13;N;;;;; +2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON; 0028 0031 0034 0029;;;14;N;;;;; +2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON; 0028 0031 0035 0029;;;15;N;;;;; +2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON; 0028 0031 0036 0029;;;16;N;;;;; +2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON; 0028 0031 0037 0029;;;17;N;;;;; +2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON; 0028 0031 0038 0029;;;18;N;;;;; +2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON; 0028 0031 0039 0029;;;19;N;;;;; +2487;PARENTHESIZED NUMBER TWENTY;No;0;ON; 0028 0032 0030 0029;;;20;N;;;;; +2488;DIGIT ONE FULL STOP;No;0;EN; 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; +2489;DIGIT TWO FULL STOP;No;0;EN; 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; +248A;DIGIT THREE FULL STOP;No;0;EN; 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; +248B;DIGIT FOUR FULL STOP;No;0;EN; 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; +248C;DIGIT FIVE FULL STOP;No;0;EN; 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; +248D;DIGIT SIX FULL STOP;No;0;EN; 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; +248E;DIGIT SEVEN FULL STOP;No;0;EN; 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; +248F;DIGIT EIGHT FULL STOP;No;0;EN; 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; +2490;DIGIT NINE FULL STOP;No;0;EN; 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; +2491;NUMBER TEN FULL STOP;No;0;EN; 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; +2492;NUMBER ELEVEN FULL STOP;No;0;EN; 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; +2493;NUMBER TWELVE FULL STOP;No;0;EN; 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; +2494;NUMBER THIRTEEN FULL STOP;No;0;EN; 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; +2495;NUMBER FOURTEEN FULL STOP;No;0;EN; 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; +2496;NUMBER FIFTEEN FULL STOP;No;0;EN; 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; +2497;NUMBER SIXTEEN FULL STOP;No;0;EN; 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; +2498;NUMBER SEVENTEEN FULL STOP;No;0;EN; 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; +2499;NUMBER EIGHTEEN FULL STOP;No;0;EN; 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; +249A;NUMBER NINETEEN FULL STOP;No;0;EN; 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; +249B;NUMBER TWENTY FULL STOP;No;0;EN; 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; +249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L; 0028 0061 0029;;;;N;;;;; +249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L; 0028 0062 0029;;;;N;;;;; +249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L; 0028 0063 0029;;;;N;;;;; +249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L; 0028 0064 0029;;;;N;;;;; +24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L; 0028 0065 0029;;;;N;;;;; +24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L; 0028 0066 0029;;;;N;;;;; +24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L; 0028 0067 0029;;;;N;;;;; +24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L; 0028 0068 0029;;;;N;;;;; +24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L; 0028 0069 0029;;;;N;;;;; +24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L; 0028 006A 0029;;;;N;;;;; +24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L; 0028 006B 0029;;;;N;;;;; +24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L; 0028 006C 0029;;;;N;;;;; +24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L; 0028 006D 0029;;;;N;;;;; +24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L; 0028 006E 0029;;;;N;;;;; +24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L; 0028 006F 0029;;;;N;;;;; +24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L; 0028 0070 0029;;;;N;;;;; +24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L; 0028 0071 0029;;;;N;;;;; +24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L; 0028 0072 0029;;;;N;;;;; +24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L; 0028 0073 0029;;;;N;;;;; +24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L; 0028 0074 0029;;;;N;;;;; +24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L; 0028 0075 0029;;;;N;;;;; +24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L; 0028 0076 0029;;;;N;;;;; +24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L; 0028 0077 0029;;;;N;;;;; +24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L; 0028 0078 0029;;;;N;;;;; +24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L; 0028 0079 0029;;;;N;;;;; +24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L; 0028 007A 0029;;;;N;;;;; +24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L; 0041;;;;N;;;;24D0; +24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;24D1; +24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;24D2; +24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L; 0044;;;;N;;;;24D3; +24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L; 0045;;;;N;;;;24D4; +24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L; 0046;;;;N;;;;24D5; +24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L; 0047;;;;N;;;;24D6; +24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L; 0048;;;;N;;;;24D7; +24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L; 0049;;;;N;;;;24D8; +24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L; 004A;;;;N;;;;24D9; +24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L; 004B;;;;N;;;;24DA; +24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L; 004C;;;;N;;;;24DB; +24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L; 004D;;;;N;;;;24DC; +24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;24DD; +24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L; 004F;;;;N;;;;24DE; +24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;24DF; +24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L; 0051;;;;N;;;;24E0; +24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;24E1; +24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;24E2; +24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L; 0054;;;;N;;;;24E3; +24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L; 0055;;;;N;;;;24E4; +24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L; 0056;;;;N;;;;24E5; +24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;24E6; +24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L; 0058;;;;N;;;;24E7; +24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L; 0059;;;;N;;;;24E8; +24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L; 005A;;;;N;;;;24E9; +24D0;CIRCLED LATIN SMALL LETTER A;So;0;L; 0061;;;;N;;;24B6;;24B6 +24D1;CIRCLED LATIN SMALL LETTER B;So;0;L; 0062;;;;N;;;24B7;;24B7 +24D2;CIRCLED LATIN SMALL LETTER C;So;0;L; 0063;;;;N;;;24B8;;24B8 +24D3;CIRCLED LATIN SMALL LETTER D;So;0;L; 0064;;;;N;;;24B9;;24B9 +24D4;CIRCLED LATIN SMALL LETTER E;So;0;L; 0065;;;;N;;;24BA;;24BA +24D5;CIRCLED LATIN SMALL LETTER F;So;0;L; 0066;;;;N;;;24BB;;24BB +24D6;CIRCLED LATIN SMALL LETTER G;So;0;L; 0067;;;;N;;;24BC;;24BC +24D7;CIRCLED LATIN SMALL LETTER H;So;0;L; 0068;;;;N;;;24BD;;24BD +24D8;CIRCLED LATIN SMALL LETTER I;So;0;L; 0069;;;;N;;;24BE;;24BE +24D9;CIRCLED LATIN SMALL LETTER J;So;0;L; 006A;;;;N;;;24BF;;24BF +24DA;CIRCLED LATIN SMALL LETTER K;So;0;L; 006B;;;;N;;;24C0;;24C0 +24DB;CIRCLED LATIN SMALL LETTER L;So;0;L; 006C;;;;N;;;24C1;;24C1 +24DC;CIRCLED LATIN SMALL LETTER M;So;0;L; 006D;;;;N;;;24C2;;24C2 +24DD;CIRCLED LATIN SMALL LETTER N;So;0;L; 006E;;;;N;;;24C3;;24C3 +24DE;CIRCLED LATIN SMALL LETTER O;So;0;L; 006F;;;;N;;;24C4;;24C4 +24DF;CIRCLED LATIN SMALL LETTER P;So;0;L; 0070;;;;N;;;24C5;;24C5 +24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L; 0071;;;;N;;;24C6;;24C6 +24E1;CIRCLED LATIN SMALL LETTER R;So;0;L; 0072;;;;N;;;24C7;;24C7 +24E2;CIRCLED LATIN SMALL LETTER S;So;0;L; 0073;;;;N;;;24C8;;24C8 +24E3;CIRCLED LATIN SMALL LETTER T;So;0;L; 0074;;;;N;;;24C9;;24C9 +24E4;CIRCLED LATIN SMALL LETTER U;So;0;L; 0075;;;;N;;;24CA;;24CA +24E5;CIRCLED LATIN SMALL LETTER V;So;0;L; 0076;;;;N;;;24CB;;24CB +24E6;CIRCLED LATIN SMALL LETTER W;So;0;L; 0077;;;;N;;;24CC;;24CC +24E7;CIRCLED LATIN SMALL LETTER X;So;0;L; 0078;;;;N;;;24CD;;24CD +24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L; 0079;;;;N;;;24CE;;24CE +24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L; 007A;;;;N;;;24CF;;24CF +24EA;CIRCLED DIGIT ZERO;No;0;ON; 0030;;0;0;N;;;;; +24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; +24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; +24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; +24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; +24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; +24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; +24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; +24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; +24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; +24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; +24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; +24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; +24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; +24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; +24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; +24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; +24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; +24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; +24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; +24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; +24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;; +2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; +2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; +2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; +2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; +2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; +2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; +2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; +2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; +2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; +2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; +250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; +250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; +250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; +250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; +250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; +250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; +2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; +2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; +2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; +2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; +2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; +2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; +2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; +2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; +2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; +2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; +251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; +251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; +251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; +251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; +251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; +251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; +2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; +2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; +2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; +2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; +2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; +2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; +2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; +2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; +2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; +2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; +252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; +252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; +252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; +252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; +252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; +252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; +2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; +2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; +2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; +2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; +2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; +2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; +2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; +2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; +2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; +2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; +253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; +253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; +253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; +253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; +253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; +253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; +2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; +2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; +2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; +2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; +2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; +2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; +2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; +2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; +2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; +2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; +254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; +254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; +254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; +254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; +254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; +254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; +2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; +2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; +2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; +2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; +2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; +2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; +2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; +2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; +2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; +2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; +255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; +255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; +255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; +255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; +255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; +255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; +2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; +2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; +2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; +2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; +2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; +2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; +2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; +2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; +2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; +2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; +256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; +256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; +256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; +256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; +256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; +256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; +2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; +2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; +2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; +2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; +2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; +2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; +2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; +2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; +2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; +2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; +257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; +257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; +257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; +257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; +257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; +257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; +2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; +2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; +2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; +2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2588;FULL BLOCK;So;0;ON;;;;;N;;;;; +2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; +258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; +258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; +2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; +2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; +2593;DARK SHADE;So;0;ON;;;;;N;;;;; +2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; +2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; +2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; +2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; +259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; +25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; +25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; +25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; +25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; +25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; +25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; +25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; +25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; +25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; +25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; +25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; +25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; +25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; +25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; +25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; +25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; +25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; +25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; +25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; +25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; +25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; +25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; +25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; +25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; +25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; +25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; +25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; +25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; +25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; +25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; +25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; +25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; +25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; +25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; +25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; +25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; +25C9;FISHEYE;So;0;ON;;;;;N;;;;; +25CA;LOZENGE;So;0;ON;;;;;N;;;;; +25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; +25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; +25CE;BULLSEYE;So;0;ON;;;;;N;;;;; +25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; +25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; +25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; +25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; +25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; +25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; +25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; +25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; +25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; +25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; +25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; +25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; +25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; +25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; +25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; +25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; +25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; +25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; +2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; +2601;CLOUD;So;0;ON;;;;;N;;;;; +2602;UMBRELLA;So;0;ON;;;;;N;;;;; +2603;SNOWMAN;So;0;ON;;;;;N;;;;; +2604;COMET;So;0;ON;;;;;N;;;;; +2605;BLACK STAR;So;0;ON;;;;;N;;;;; +2606;WHITE STAR;So;0;ON;;;;;N;;;;; +2607;LIGHTNING;So;0;ON;;;;;N;;;;; +2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; +2609;SUN;So;0;ON;;;;;N;;;;; +260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; +260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; +260C;CONJUNCTION;So;0;ON;;;;;N;;;;; +260D;OPPOSITION;So;0;ON;;;;;N;;;;; +260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; +260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; +2610;BALLOT BOX;So;0;ON;;;;;N;;;;; +2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; +2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; +2613;SALTIRE;So;0;ON;;;;;N;;;;; +2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;; +2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;; +2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; +2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; +2618;SHAMROCK;So;0;ON;;;;;N;;;;; +2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; +261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; +261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; +261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; +261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; +2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; +2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; +2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; +2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; +2624;CADUCEUS;So;0;ON;;;;;N;;;;; +2625;ANKH;So;0;ON;;;;;N;;;;; +2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; +2627;CHI RHO;So;0;ON;;;;;N;;;;; +2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; +2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; +262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; +262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; +262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; +262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; +262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; +262F;YIN YANG;So;0;ON;;;;;N;;;;; +2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; +2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; +2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; +2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; +2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; +2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; +2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; +2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; +2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; +2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; +263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; +263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; +263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; +263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; +263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; +263F;MERCURY;So;0;ON;;;;;N;;;;; +2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; +2641;EARTH;So;0;ON;;;;;N;;;;; +2642;MALE SIGN;So;0;ON;;;;;N;;;;; +2643;JUPITER;So;0;ON;;;;;N;;;;; +2644;SATURN;So;0;ON;;;;;N;;;;; +2645;URANUS;So;0;ON;;;;;N;;;;; +2646;NEPTUNE;So;0;ON;;;;;N;;;;; +2647;PLUTO;So;0;ON;;;;;N;;;;; +2648;ARIES;So;0;ON;;;;;N;;;;; +2649;TAURUS;So;0;ON;;;;;N;;;;; +264A;GEMINI;So;0;ON;;;;;N;;;;; +264B;CANCER;So;0;ON;;;;;N;;;;; +264C;LEO;So;0;ON;;;;;N;;;;; +264D;VIRGO;So;0;ON;;;;;N;;;;; +264E;LIBRA;So;0;ON;;;;;N;;;;; +264F;SCORPIUS;So;0;ON;;;;;N;;;;; +2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; +2651;CAPRICORN;So;0;ON;;;;;N;;;;; +2652;AQUARIUS;So;0;ON;;;;;N;;;;; +2653;PISCES;So;0;ON;;;;;N;;;;; +2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; +2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; +2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; +2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; +2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; +2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; +265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; +265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; +265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; +265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; +265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; +265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; +2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; +2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; +2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; +2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; +2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; +2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; +2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; +2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; +2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; +2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; +266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; +266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; +266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; +266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; +266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; +266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; +2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; +2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; +2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;; +2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;; +2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;; +2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;; +2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;; +2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;; +2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;; +267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; +267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;; +267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;; +2680;DIE FACE-1;So;0;ON;;;;;N;;;;; +2681;DIE FACE-2;So;0;ON;;;;;N;;;;; +2682;DIE FACE-3;So;0;ON;;;;;N;;;;; +2683;DIE FACE-4;So;0;ON;;;;;N;;;;; +2684;DIE FACE-5;So;0;ON;;;;;N;;;;; +2685;DIE FACE-6;So;0;ON;;;;;N;;;;; +2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; +2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; +2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; +2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; +268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;; +268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;; +268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;; +268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;; +268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;; +268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;; +2690;WHITE FLAG;So;0;ON;;;;;N;;;;; +2691;BLACK FLAG;So;0;ON;;;;;N;;;;; +2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;; +2693;ANCHOR;So;0;ON;;;;;N;;;;; +2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;; +2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;; +2696;SCALES;So;0;ON;;;;;N;;;;; +2697;ALEMBIC;So;0;ON;;;;;N;;;;; +2698;FLOWER;So;0;ON;;;;;N;;;;; +2699;GEAR;So;0;ON;;;;;N;;;;; +269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;; +269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;; +269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;; +26A0;WARNING SIGN;So;0;ON;;;;;N;;;;; +26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;; +26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;; +26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;; +26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;; +26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; +26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; +26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; +26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; +26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; +26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;; +26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;; +26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;; +26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;; +26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;; +26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;; +26B0;COFFIN;So;0;ON;;;;;N;;;;; +26B1;FUNERAL URN;So;0;ON;;;;;N;;;;; +2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; +2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; +2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; +2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; +2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; +2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; +2708;AIRPLANE;So;0;ON;;;;;N;;;;; +2709;ENVELOPE;So;0;ON;;;;;N;;;;; +270C;VICTORY HAND;So;0;ON;;;;;N;;;;; +270D;WRITING HAND;So;0;ON;;;;;N;;;;; +270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; +270F;PENCIL;So;0;ON;;;;;N;;;;; +2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; +2711;WHITE NIB;So;0;ON;;;;;N;;;;; +2712;BLACK NIB;So;0;ON;;;;;N;;;;; +2713;CHECK MARK;So;0;ON;;;;;N;;;;; +2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; +2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; +2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; +2717;BALLOT X;So;0;ON;;;;;N;;;;; +2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; +2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; +271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; +271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; +271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; +271D;LATIN CROSS;So;0;ON;;;;;N;;;;; +271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; +271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; +2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; +2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; +2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; +2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; +2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; +272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; +272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; +272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; +272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; +272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; +272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; +2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; +2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; +2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; +2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; +2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; +2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; +2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; +273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; +273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; +273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; +2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; +2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; +2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; +2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; +2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; +2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; +2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; +2747;SPARKLE;So;0;ON;;;;;N;;;;; +2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; +2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; +274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; +274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; +274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; +2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; +2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; +275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; +275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; +2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; +2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; +2766;FLORAL HEART;So;0;ON;;;;;N;;;;; +2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; +2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; +2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; +2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; +2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; +277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; +277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; +277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; +277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; +277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; +277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; +2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; +2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; +2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; +2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; +2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; +2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; +2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; +2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; +2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; +2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; +278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; +278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; +278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; +278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; +278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; +278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; +2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; +2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; +2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; +2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; +2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; +2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; +2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; +279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; +279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; +279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; +279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; +279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; +279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; +27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; +27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; +27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; +27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; +27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; +27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; +27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; +27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; +27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; +27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; +27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; +27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; +27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; +27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; +27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; +27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; +27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; +27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; +27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; +27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; +27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; +27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; +27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; +27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; +27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; +27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; +27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;; +27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;; +27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;; +27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;; +27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;; +27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;; +27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;; +27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; +27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; +27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; +27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; +27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; +27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; +27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; +27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; +27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; +27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; +27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; +27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; +27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; +27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; +27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; +27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; +2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;; +2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; +2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; +2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; +2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; +2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; +2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; +2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; +2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; +2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; +280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; +280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; +280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; +280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; +280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; +280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; +2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; +2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; +2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; +2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; +2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; +2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; +2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; +2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; +2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; +2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; +281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; +281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; +281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; +281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; +281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; +281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; +2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; +2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; +2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; +2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; +2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; +2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; +2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; +2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; +2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; +2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; +282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; +282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; +282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; +282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; +282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; +282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; +2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; +2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; +2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; +2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; +2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; +2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; +2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; +2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; +2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; +2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; +283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; +283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; +283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; +283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; +283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; +283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; +2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; +2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; +2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; +2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; +2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; +2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; +2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; +2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; +2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; +2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; +284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; +284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; +284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; +284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; +284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; +284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; +2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; +2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; +2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; +2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; +2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; +2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; +2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; +2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; +2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; +2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; +285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; +285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; +285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; +285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; +285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; +285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; +2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; +2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; +2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; +2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; +2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; +2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; +2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; +2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; +2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; +2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; +286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; +286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; +286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; +286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; +286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; +286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; +2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; +2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; +2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; +2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; +2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; +2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; +2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; +2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; +2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; +2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; +287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; +287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; +287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; +287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; +287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; +287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; +2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; +2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; +2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; +2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; +2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; +2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; +2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; +2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; +2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; +2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; +288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; +288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; +288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; +288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; +288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; +288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; +2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; +2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; +2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; +2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; +2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; +2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; +2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; +2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; +2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; +2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; +289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; +289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; +289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; +289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; +289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; +289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; +28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; +28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; +28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; +28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; +28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; +28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; +28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; +28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; +28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; +28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; +28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; +28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; +28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; +28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; +28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; +28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; +28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; +28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; +28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; +28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; +28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; +28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; +28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; +28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; +28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; +28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; +28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; +28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; +28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; +28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; +28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; +28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; +28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; +28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; +28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; +28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; +28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; +28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; +28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; +28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; +28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; +28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; +28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; +28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; +28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; +28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; +28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; +28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; +28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; +28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; +28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; +28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; +28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; +28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; +28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; +28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; +28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; +28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; +28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; +28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; +28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; +28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; +28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; +28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; +28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; +28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; +28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; +28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; +28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; +28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; +28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; +28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; +28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; +28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; +28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; +28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; +28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; +28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; +28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; +28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; +28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; +28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; +28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; +28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; +28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; +28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; +28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; +28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; +28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; +28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; +28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; +28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; +28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; +28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; +28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; +28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;; +2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; +2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; +2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; +2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; +2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; +2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; +2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; +293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; +293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; +2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; +2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; +2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; +297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; +297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; +2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; +2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; +2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; +2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; +2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; +2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; +2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; +2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; +298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; +298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; +298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; +298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; +298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; +298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; +2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; +2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; +2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; +2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; +2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; +2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; +299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; +299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; +299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; +299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; +299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; +29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; +29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; +29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; +29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; +29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; +29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; +29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; +29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; +29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; +29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; +29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; +29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; +29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; +29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; +29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; +29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; +29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; +29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; +29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; +29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; +29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; +29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; +29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; +29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; +29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; +29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; +29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; +29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; +29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; +29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; +29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; +29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; +29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; +29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; +29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +29FE;TINY;Sm;0;ON;;;;;N;;;;; +29FF;MINY;Sm;0;ON;;;;;N;;;;; +2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; +2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; +2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; +2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; +2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; +2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; +2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON; 222B 222B 222B 222B;;;;Y;;;;; +2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; +2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; +2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; +2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; +2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; +2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; +2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; +2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; +2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; +2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2A1D;JOIN;Sm;0;ON;;;;;N;;;;; +2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; +2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; +2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; +2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; +2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; +2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; +2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; +2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; +2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; +2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; +2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; +2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; +2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; +2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; +2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; +2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; +2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; +2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; +2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; +2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; +2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; +2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A74;DOUBLE COLON EQUAL;Sm;0;ON; 003A 003A 003D;;;;Y;;;;; +2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D;;;;N;;;;; +2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D 003D;;;;N;;;;; +2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; +2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; +2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; +2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; +2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; +2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; +2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; +2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; +2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; +2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; +2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; +2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; +2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;; +2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;; +2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; +2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; +2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; +2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; +2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; +2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; +2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; +2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; +2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; +2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; +2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;; +2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; +2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; +2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; +2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; +2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; +2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; +2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; +2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; +2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; +2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33; +2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34; +2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35; +2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36; +2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37; +2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38; +2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39; +2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A; +2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B; +2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C; +2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D; +2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E; +2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F; +2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40; +2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41; +2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42; +2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43; +2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44; +2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45; +2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46; +2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47; +2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48; +2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49; +2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A; +2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B; +2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C; +2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D; +2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E; +2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F; +2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50; +2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51; +2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52; +2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53; +2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54; +2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55; +2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56; +2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57; +2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58; +2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59; +2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A; +2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B; +2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; +2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; +2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; +2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 +2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 +2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 +2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03 +2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04 +2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05 +2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06 +2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07 +2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08 +2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09 +2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A +2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B +2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C +2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D +2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E +2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F +2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10 +2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11 +2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12 +2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13 +2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14 +2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15 +2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16 +2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17 +2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18 +2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19 +2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A +2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B +2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C +2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D +2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E +2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F +2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20 +2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21 +2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22 +2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23 +2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24 +2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25 +2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26 +2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27 +2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28 +2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29 +2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A +2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B +2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C +2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D +2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E +2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81; +2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80 +2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83; +2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82 +2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85; +2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84 +2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87; +2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86 +2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89; +2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88 +2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B; +2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A +2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D; +2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C +2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F; +2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E +2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91; +2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90 +2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93; +2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92 +2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95; +2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94 +2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97; +2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96 +2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99; +2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98 +2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B; +2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A +2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D; +2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C +2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F; +2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E +2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1; +2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0 +2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3; +2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2 +2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5; +2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4 +2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7; +2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6 +2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9; +2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8 +2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB; +2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA +2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD; +2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC +2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF; +2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE +2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1; +2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0 +2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3; +2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2 +2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5; +2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4 +2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7; +2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6 +2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9; +2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8 +2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB; +2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA +2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD; +2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC +2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF; +2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE +2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1; +2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0 +2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3; +2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2 +2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5; +2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4 +2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7; +2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6 +2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9; +2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8 +2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB; +2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA +2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD; +2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC +2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF; +2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE +2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1; +2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0 +2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3; +2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2 +2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5; +2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4 +2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7; +2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6 +2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9; +2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8 +2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB; +2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA +2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD; +2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC +2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF; +2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE +2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1; +2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0 +2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3; +2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2 +2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;; +2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;; +2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;; +2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;; +2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;; +2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;; +2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;; +2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;; +2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; +2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; +2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;; +2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;; +2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;; +2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;; +2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0 +2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1 +2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2 +2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3 +2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4 +2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5 +2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6 +2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7 +2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8 +2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9 +2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA +2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB +2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC +2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD +2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE +2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF +2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0 +2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1 +2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2 +2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3 +2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4 +2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5 +2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6 +2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7 +2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8 +2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9 +2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA +2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB +2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC +2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD +2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE +2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF +2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0 +2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1 +2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2 +2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3 +2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4 +2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5 +2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;; +2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;; +2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;; +2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;; +2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;; +2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;; +2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;; +2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;; +2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;; +2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;; +2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;; +2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;; +2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;; +2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;; +2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;; +2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;; +2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;; +2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;; +2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;; +2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;; +2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;; +2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;; +2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;; +2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;; +2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;; +2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;; +2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;; +2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;; +2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;; +2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;; +2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;; +2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;; +2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;; +2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;; +2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;; +2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;; +2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;; +2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;; +2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;; +2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;; +2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;; +2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;; +2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;; +2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;; +2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;; +2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;; +2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;; +2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;; +2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;; +2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;; +2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;; +2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;; +2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;; +2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;; +2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L; 2D61;;;;N;;tamatart;;; +2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;; +2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;; +2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;; +2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;; +2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;; +2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;; +2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;; +2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;; +2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;; +2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;; +2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;; +2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;; +2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;; +2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;; +2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;; +2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;; +2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;; +2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;; +2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;; +2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; +2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; +2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;; +2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; +2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;; +2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;; +2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;; +2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;; +2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;; +2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;; +2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;; +2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;; +2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;; +2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;; +2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;; +2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;; +2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;; +2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;; +2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; +2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; +2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; +2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;; +2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;; +2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; +2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; +2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;; +2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;; +2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;; +2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;; +2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;; +2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;; +2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;; +2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;; +2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;; +2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;; +2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;; +2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;; +2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;; +2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;; +2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;; +2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;; +2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;; +2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;; +2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;; +2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;; +2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;; +2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;; +2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;; +2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;; +2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;; +2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;; +2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;; +2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;; +2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;; +2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;; +2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;; +2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;; +2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;; +2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;; +2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;; +2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; +2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; +2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; +2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; +2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;; +2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;; +2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;; +2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;; +2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; +2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; +2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;; +2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;; +2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;; +2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;; +2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;; +2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; +2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;; +2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;; +2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; +2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; +2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; +2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; +2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; +2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; +2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; +2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; +2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; +2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; +2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; +2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; +2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; +2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; +2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; +2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; +2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; +2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; +2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; +2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; +2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; +2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; +2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; +2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; +2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; +2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; +2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; +2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; +2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; +2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; +2E9F;CJK RADICAL MOTHER;So;0;ON; 6BCD;;;;N;;;;; +2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; +2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; +2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; +2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; +2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; +2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; +2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; +2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; +2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; +2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; +2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; +2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; +2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; +2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; +2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; +2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; +2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; +2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; +2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; +2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; +2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; +2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; +2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; +2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; +2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; +2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; +2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; +2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; +2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; +2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; +2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; +2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; +2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; +2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; +2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; +2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; +2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; +2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; +2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; +2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; +2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; +2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; +2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; +2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; +2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; +2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; +2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; +2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; +2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; +2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; +2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; +2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; +2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; +2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; +2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; +2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; +2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; +2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; +2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; +2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; +2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; +2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; +2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; +2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; +2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; +2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; +2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; +2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; +2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; +2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; +2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; +2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; +2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; +2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; +2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; +2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; +2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; +2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; +2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; +2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; +2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; +2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; +2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; +2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON; 9F9F;;;;N;;;;; +2F00;KANGXI RADICAL ONE;So;0;ON; 4E00;;;;N;;;;; +2F01;KANGXI RADICAL LINE;So;0;ON; 4E28;;;;N;;;;; +2F02;KANGXI RADICAL DOT;So;0;ON; 4E36;;;;N;;;;; +2F03;KANGXI RADICAL SLASH;So;0;ON; 4E3F;;;;N;;;;; +2F04;KANGXI RADICAL SECOND;So;0;ON; 4E59;;;;N;;;;; +2F05;KANGXI RADICAL HOOK;So;0;ON; 4E85;;;;N;;;;; +2F06;KANGXI RADICAL TWO;So;0;ON; 4E8C;;;;N;;;;; +2F07;KANGXI RADICAL LID;So;0;ON; 4EA0;;;;N;;;;; +2F08;KANGXI RADICAL MAN;So;0;ON; 4EBA;;;;N;;;;; +2F09;KANGXI RADICAL LEGS;So;0;ON; 513F;;;;N;;;;; +2F0A;KANGXI RADICAL ENTER;So;0;ON; 5165;;;;N;;;;; +2F0B;KANGXI RADICAL EIGHT;So;0;ON; 516B;;;;N;;;;; +2F0C;KANGXI RADICAL DOWN BOX;So;0;ON; 5182;;;;N;;;;; +2F0D;KANGXI RADICAL COVER;So;0;ON; 5196;;;;N;;;;; +2F0E;KANGXI RADICAL ICE;So;0;ON; 51AB;;;;N;;;;; +2F0F;KANGXI RADICAL TABLE;So;0;ON; 51E0;;;;N;;;;; +2F10;KANGXI RADICAL OPEN BOX;So;0;ON; 51F5;;;;N;;;;; +2F11;KANGXI RADICAL KNIFE;So;0;ON; 5200;;;;N;;;;; +2F12;KANGXI RADICAL POWER;So;0;ON; 529B;;;;N;;;;; +2F13;KANGXI RADICAL WRAP;So;0;ON; 52F9;;;;N;;;;; +2F14;KANGXI RADICAL SPOON;So;0;ON; 5315;;;;N;;;;; +2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON; 531A;;;;N;;;;; +2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON; 5338;;;;N;;;;; +2F17;KANGXI RADICAL TEN;So;0;ON; 5341;;;;N;;;;; +2F18;KANGXI RADICAL DIVINATION;So;0;ON; 535C;;;;N;;;;; +2F19;KANGXI RADICAL SEAL;So;0;ON; 5369;;;;N;;;;; +2F1A;KANGXI RADICAL CLIFF;So;0;ON; 5382;;;;N;;;;; +2F1B;KANGXI RADICAL PRIVATE;So;0;ON; 53B6;;;;N;;;;; +2F1C;KANGXI RADICAL AGAIN;So;0;ON; 53C8;;;;N;;;;; +2F1D;KANGXI RADICAL MOUTH;So;0;ON; 53E3;;;;N;;;;; +2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON; 56D7;;;;N;;;;; +2F1F;KANGXI RADICAL EARTH;So;0;ON; 571F;;;;N;;;;; +2F20;KANGXI RADICAL SCHOLAR;So;0;ON; 58EB;;;;N;;;;; +2F21;KANGXI RADICAL GO;So;0;ON; 5902;;;;N;;;;; +2F22;KANGXI RADICAL GO SLOWLY;So;0;ON; 590A;;;;N;;;;; +2F23;KANGXI RADICAL EVENING;So;0;ON; 5915;;;;N;;;;; +2F24;KANGXI RADICAL BIG;So;0;ON; 5927;;;;N;;;;; +2F25;KANGXI RADICAL WOMAN;So;0;ON; 5973;;;;N;;;;; +2F26;KANGXI RADICAL CHILD;So;0;ON; 5B50;;;;N;;;;; +2F27;KANGXI RADICAL ROOF;So;0;ON; 5B80;;;;N;;;;; +2F28;KANGXI RADICAL INCH;So;0;ON; 5BF8;;;;N;;;;; +2F29;KANGXI RADICAL SMALL;So;0;ON; 5C0F;;;;N;;;;; +2F2A;KANGXI RADICAL LAME;So;0;ON; 5C22;;;;N;;;;; +2F2B;KANGXI RADICAL CORPSE;So;0;ON; 5C38;;;;N;;;;; +2F2C;KANGXI RADICAL SPROUT;So;0;ON; 5C6E;;;;N;;;;; +2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON; 5C71;;;;N;;;;; +2F2E;KANGXI RADICAL RIVER;So;0;ON; 5DDB;;;;N;;;;; +2F2F;KANGXI RADICAL WORK;So;0;ON; 5DE5;;;;N;;;;; +2F30;KANGXI RADICAL ONESELF;So;0;ON; 5DF1;;;;N;;;;; +2F31;KANGXI RADICAL TURBAN;So;0;ON; 5DFE;;;;N;;;;; +2F32;KANGXI RADICAL DRY;So;0;ON; 5E72;;;;N;;;;; +2F33;KANGXI RADICAL SHORT THREAD;So;0;ON; 5E7A;;;;N;;;;; +2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON; 5E7F;;;;N;;;;; +2F35;KANGXI RADICAL LONG STRIDE;So;0;ON; 5EF4;;;;N;;;;; +2F36;KANGXI RADICAL TWO HANDS;So;0;ON; 5EFE;;;;N;;;;; +2F37;KANGXI RADICAL SHOOT;So;0;ON; 5F0B;;;;N;;;;; +2F38;KANGXI RADICAL BOW;So;0;ON; 5F13;;;;N;;;;; +2F39;KANGXI RADICAL SNOUT;So;0;ON; 5F50;;;;N;;;;; +2F3A;KANGXI RADICAL BRISTLE;So;0;ON; 5F61;;;;N;;;;; +2F3B;KANGXI RADICAL STEP;So;0;ON; 5F73;;;;N;;;;; +2F3C;KANGXI RADICAL HEART;So;0;ON; 5FC3;;;;N;;;;; +2F3D;KANGXI RADICAL HALBERD;So;0;ON; 6208;;;;N;;;;; +2F3E;KANGXI RADICAL DOOR;So;0;ON; 6236;;;;N;;;;; +2F3F;KANGXI RADICAL HAND;So;0;ON; 624B;;;;N;;;;; +2F40;KANGXI RADICAL BRANCH;So;0;ON; 652F;;;;N;;;;; +2F41;KANGXI RADICAL RAP;So;0;ON; 6534;;;;N;;;;; +2F42;KANGXI RADICAL SCRIPT;So;0;ON; 6587;;;;N;;;;; +2F43;KANGXI RADICAL DIPPER;So;0;ON; 6597;;;;N;;;;; +2F44;KANGXI RADICAL AXE;So;0;ON; 65A4;;;;N;;;;; +2F45;KANGXI RADICAL SQUARE;So;0;ON; 65B9;;;;N;;;;; +2F46;KANGXI RADICAL NOT;So;0;ON; 65E0;;;;N;;;;; +2F47;KANGXI RADICAL SUN;So;0;ON; 65E5;;;;N;;;;; +2F48;KANGXI RADICAL SAY;So;0;ON; 66F0;;;;N;;;;; +2F49;KANGXI RADICAL MOON;So;0;ON; 6708;;;;N;;;;; +2F4A;KANGXI RADICAL TREE;So;0;ON; 6728;;;;N;;;;; +2F4B;KANGXI RADICAL LACK;So;0;ON; 6B20;;;;N;;;;; +2F4C;KANGXI RADICAL STOP;So;0;ON; 6B62;;;;N;;;;; +2F4D;KANGXI RADICAL DEATH;So;0;ON; 6B79;;;;N;;;;; +2F4E;KANGXI RADICAL WEAPON;So;0;ON; 6BB3;;;;N;;;;; +2F4F;KANGXI RADICAL DO NOT;So;0;ON; 6BCB;;;;N;;;;; +2F50;KANGXI RADICAL COMPARE;So;0;ON; 6BD4;;;;N;;;;; +2F51;KANGXI RADICAL FUR;So;0;ON; 6BDB;;;;N;;;;; +2F52;KANGXI RADICAL CLAN;So;0;ON; 6C0F;;;;N;;;;; +2F53;KANGXI RADICAL STEAM;So;0;ON; 6C14;;;;N;;;;; +2F54;KANGXI RADICAL WATER;So;0;ON; 6C34;;;;N;;;;; +2F55;KANGXI RADICAL FIRE;So;0;ON; 706B;;;;N;;;;; +2F56;KANGXI RADICAL CLAW;So;0;ON; 722A;;;;N;;;;; +2F57;KANGXI RADICAL FATHER;So;0;ON; 7236;;;;N;;;;; +2F58;KANGXI RADICAL DOUBLE X;So;0;ON; 723B;;;;N;;;;; +2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON; 723F;;;;N;;;;; +2F5A;KANGXI RADICAL SLICE;So;0;ON; 7247;;;;N;;;;; +2F5B;KANGXI RADICAL FANG;So;0;ON; 7259;;;;N;;;;; +2F5C;KANGXI RADICAL COW;So;0;ON; 725B;;;;N;;;;; +2F5D;KANGXI RADICAL DOG;So;0;ON; 72AC;;;;N;;;;; +2F5E;KANGXI RADICAL PROFOUND;So;0;ON; 7384;;;;N;;;;; +2F5F;KANGXI RADICAL JADE;So;0;ON; 7389;;;;N;;;;; +2F60;KANGXI RADICAL MELON;So;0;ON; 74DC;;;;N;;;;; +2F61;KANGXI RADICAL TILE;So;0;ON; 74E6;;;;N;;;;; +2F62;KANGXI RADICAL SWEET;So;0;ON; 7518;;;;N;;;;; +2F63;KANGXI RADICAL LIFE;So;0;ON; 751F;;;;N;;;;; +2F64;KANGXI RADICAL USE;So;0;ON; 7528;;;;N;;;;; +2F65;KANGXI RADICAL FIELD;So;0;ON; 7530;;;;N;;;;; +2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON; 758B;;;;N;;;;; +2F67;KANGXI RADICAL SICKNESS;So;0;ON; 7592;;;;N;;;;; +2F68;KANGXI RADICAL DOTTED TENT;So;0;ON; 7676;;;;N;;;;; +2F69;KANGXI RADICAL WHITE;So;0;ON; 767D;;;;N;;;;; +2F6A;KANGXI RADICAL SKIN;So;0;ON; 76AE;;;;N;;;;; +2F6B;KANGXI RADICAL DISH;So;0;ON; 76BF;;;;N;;;;; +2F6C;KANGXI RADICAL EYE;So;0;ON; 76EE;;;;N;;;;; +2F6D;KANGXI RADICAL SPEAR;So;0;ON; 77DB;;;;N;;;;; +2F6E;KANGXI RADICAL ARROW;So;0;ON; 77E2;;;;N;;;;; +2F6F;KANGXI RADICAL STONE;So;0;ON; 77F3;;;;N;;;;; +2F70;KANGXI RADICAL SPIRIT;So;0;ON; 793A;;;;N;;;;; +2F71;KANGXI RADICAL TRACK;So;0;ON; 79B8;;;;N;;;;; +2F72;KANGXI RADICAL GRAIN;So;0;ON; 79BE;;;;N;;;;; +2F73;KANGXI RADICAL CAVE;So;0;ON; 7A74;;;;N;;;;; +2F74;KANGXI RADICAL STAND;So;0;ON; 7ACB;;;;N;;;;; +2F75;KANGXI RADICAL BAMBOO;So;0;ON; 7AF9;;;;N;;;;; +2F76;KANGXI RADICAL RICE;So;0;ON; 7C73;;;;N;;;;; +2F77;KANGXI RADICAL SILK;So;0;ON; 7CF8;;;;N;;;;; +2F78;KANGXI RADICAL JAR;So;0;ON; 7F36;;;;N;;;;; +2F79;KANGXI RADICAL NET;So;0;ON; 7F51;;;;N;;;;; +2F7A;KANGXI RADICAL SHEEP;So;0;ON; 7F8A;;;;N;;;;; +2F7B;KANGXI RADICAL FEATHER;So;0;ON; 7FBD;;;;N;;;;; +2F7C;KANGXI RADICAL OLD;So;0;ON; 8001;;;;N;;;;; +2F7D;KANGXI RADICAL AND;So;0;ON; 800C;;;;N;;;;; +2F7E;KANGXI RADICAL PLOW;So;0;ON; 8012;;;;N;;;;; +2F7F;KANGXI RADICAL EAR;So;0;ON; 8033;;;;N;;;;; +2F80;KANGXI RADICAL BRUSH;So;0;ON; 807F;;;;N;;;;; +2F81;KANGXI RADICAL MEAT;So;0;ON; 8089;;;;N;;;;; +2F82;KANGXI RADICAL MINISTER;So;0;ON; 81E3;;;;N;;;;; +2F83;KANGXI RADICAL SELF;So;0;ON; 81EA;;;;N;;;;; +2F84;KANGXI RADICAL ARRIVE;So;0;ON; 81F3;;;;N;;;;; +2F85;KANGXI RADICAL MORTAR;So;0;ON; 81FC;;;;N;;;;; +2F86;KANGXI RADICAL TONGUE;So;0;ON; 820C;;;;N;;;;; +2F87;KANGXI RADICAL OPPOSE;So;0;ON; 821B;;;;N;;;;; +2F88;KANGXI RADICAL BOAT;So;0;ON; 821F;;;;N;;;;; +2F89;KANGXI RADICAL STOPPING;So;0;ON; 826E;;;;N;;;;; +2F8A;KANGXI RADICAL COLOR;So;0;ON; 8272;;;;N;;;;; +2F8B;KANGXI RADICAL GRASS;So;0;ON; 8278;;;;N;;;;; +2F8C;KANGXI RADICAL TIGER;So;0;ON; 864D;;;;N;;;;; +2F8D;KANGXI RADICAL INSECT;So;0;ON; 866B;;;;N;;;;; +2F8E;KANGXI RADICAL BLOOD;So;0;ON; 8840;;;;N;;;;; +2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON; 884C;;;;N;;;;; +2F90;KANGXI RADICAL CLOTHES;So;0;ON; 8863;;;;N;;;;; +2F91;KANGXI RADICAL WEST;So;0;ON; 897E;;;;N;;;;; +2F92;KANGXI RADICAL SEE;So;0;ON; 898B;;;;N;;;;; +2F93;KANGXI RADICAL HORN;So;0;ON; 89D2;;;;N;;;;; +2F94;KANGXI RADICAL SPEECH;So;0;ON; 8A00;;;;N;;;;; +2F95;KANGXI RADICAL VALLEY;So;0;ON; 8C37;;;;N;;;;; +2F96;KANGXI RADICAL BEAN;So;0;ON; 8C46;;;;N;;;;; +2F97;KANGXI RADICAL PIG;So;0;ON; 8C55;;;;N;;;;; +2F98;KANGXI RADICAL BADGER;So;0;ON; 8C78;;;;N;;;;; +2F99;KANGXI RADICAL SHELL;So;0;ON; 8C9D;;;;N;;;;; +2F9A;KANGXI RADICAL RED;So;0;ON; 8D64;;;;N;;;;; +2F9B;KANGXI RADICAL RUN;So;0;ON; 8D70;;;;N;;;;; +2F9C;KANGXI RADICAL FOOT;So;0;ON; 8DB3;;;;N;;;;; +2F9D;KANGXI RADICAL BODY;So;0;ON; 8EAB;;;;N;;;;; +2F9E;KANGXI RADICAL CART;So;0;ON; 8ECA;;;;N;;;;; +2F9F;KANGXI RADICAL BITTER;So;0;ON; 8F9B;;;;N;;;;; +2FA0;KANGXI RADICAL MORNING;So;0;ON; 8FB0;;;;N;;;;; +2FA1;KANGXI RADICAL WALK;So;0;ON; 8FB5;;;;N;;;;; +2FA2;KANGXI RADICAL CITY;So;0;ON; 9091;;;;N;;;;; +2FA3;KANGXI RADICAL WINE;So;0;ON; 9149;;;;N;;;;; +2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON; 91C6;;;;N;;;;; +2FA5;KANGXI RADICAL VILLAGE;So;0;ON; 91CC;;;;N;;;;; +2FA6;KANGXI RADICAL GOLD;So;0;ON; 91D1;;;;N;;;;; +2FA7;KANGXI RADICAL LONG;So;0;ON; 9577;;;;N;;;;; +2FA8;KANGXI RADICAL GATE;So;0;ON; 9580;;;;N;;;;; +2FA9;KANGXI RADICAL MOUND;So;0;ON; 961C;;;;N;;;;; +2FAA;KANGXI RADICAL SLAVE;So;0;ON; 96B6;;;;N;;;;; +2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON; 96B9;;;;N;;;;; +2FAC;KANGXI RADICAL RAIN;So;0;ON; 96E8;;;;N;;;;; +2FAD;KANGXI RADICAL BLUE;So;0;ON; 9751;;;;N;;;;; +2FAE;KANGXI RADICAL WRONG;So;0;ON; 975E;;;;N;;;;; +2FAF;KANGXI RADICAL FACE;So;0;ON; 9762;;;;N;;;;; +2FB0;KANGXI RADICAL LEATHER;So;0;ON; 9769;;;;N;;;;; +2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON; 97CB;;;;N;;;;; +2FB2;KANGXI RADICAL LEEK;So;0;ON; 97ED;;;;N;;;;; +2FB3;KANGXI RADICAL SOUND;So;0;ON; 97F3;;;;N;;;;; +2FB4;KANGXI RADICAL LEAF;So;0;ON; 9801;;;;N;;;;; +2FB5;KANGXI RADICAL WIND;So;0;ON; 98A8;;;;N;;;;; +2FB6;KANGXI RADICAL FLY;So;0;ON; 98DB;;;;N;;;;; +2FB7;KANGXI RADICAL EAT;So;0;ON; 98DF;;;;N;;;;; +2FB8;KANGXI RADICAL HEAD;So;0;ON; 9996;;;;N;;;;; +2FB9;KANGXI RADICAL FRAGRANT;So;0;ON; 9999;;;;N;;;;; +2FBA;KANGXI RADICAL HORSE;So;0;ON; 99AC;;;;N;;;;; +2FBB;KANGXI RADICAL BONE;So;0;ON; 9AA8;;;;N;;;;; +2FBC;KANGXI RADICAL TALL;So;0;ON; 9AD8;;;;N;;;;; +2FBD;KANGXI RADICAL HAIR;So;0;ON; 9ADF;;;;N;;;;; +2FBE;KANGXI RADICAL FIGHT;So;0;ON; 9B25;;;;N;;;;; +2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON; 9B2F;;;;N;;;;; +2FC0;KANGXI RADICAL CAULDRON;So;0;ON; 9B32;;;;N;;;;; +2FC1;KANGXI RADICAL GHOST;So;0;ON; 9B3C;;;;N;;;;; +2FC2;KANGXI RADICAL FISH;So;0;ON; 9B5A;;;;N;;;;; +2FC3;KANGXI RADICAL BIRD;So;0;ON; 9CE5;;;;N;;;;; +2FC4;KANGXI RADICAL SALT;So;0;ON; 9E75;;;;N;;;;; +2FC5;KANGXI RADICAL DEER;So;0;ON; 9E7F;;;;N;;;;; +2FC6;KANGXI RADICAL WHEAT;So;0;ON; 9EA5;;;;N;;;;; +2FC7;KANGXI RADICAL HEMP;So;0;ON; 9EBB;;;;N;;;;; +2FC8;KANGXI RADICAL YELLOW;So;0;ON; 9EC3;;;;N;;;;; +2FC9;KANGXI RADICAL MILLET;So;0;ON; 9ECD;;;;N;;;;; +2FCA;KANGXI RADICAL BLACK;So;0;ON; 9ED1;;;;N;;;;; +2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON; 9EF9;;;;N;;;;; +2FCC;KANGXI RADICAL FROG;So;0;ON; 9EFD;;;;N;;;;; +2FCD;KANGXI RADICAL TRIPOD;So;0;ON; 9F0E;;;;N;;;;; +2FCE;KANGXI RADICAL DRUM;So;0;ON; 9F13;;;;N;;;;; +2FCF;KANGXI RADICAL RAT;So;0;ON; 9F20;;;;N;;;;; +2FD0;KANGXI RADICAL NOSE;So;0;ON; 9F3B;;;;N;;;;; +2FD1;KANGXI RADICAL EVEN;So;0;ON; 9F4A;;;;N;;;;; +2FD2;KANGXI RADICAL TOOTH;So;0;ON; 9F52;;;;N;;;;; +2FD3;KANGXI RADICAL DRAGON;So;0;ON; 9F8D;;;;N;;;;; +2FD4;KANGXI RADICAL TURTLE;So;0;ON; 9F9C;;;;N;;;;; +2FD5;KANGXI RADICAL FLUTE;So;0;ON; 9FA0;;;;N;;;;; +2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; +2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; +2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; +2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; +2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; +2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; +2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; +2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; +2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; +2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; +2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; +2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; +3000;IDEOGRAPHIC SPACE;Zs;0;WS; 0020;;;;N;;;;; +3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; +3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; +3003;DITTO MARK;Po;0;ON;;;;;N;;;;; +3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; +3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; +3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; +3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; +3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; +3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; +300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; +300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; +300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; +300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; +300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; +300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; +3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; +3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; +3012;POSTAL MARK;So;0;ON;;;;;N;;;;; +3013;GETA MARK;So;0;ON;;;;;N;;;;; +3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; +3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; +3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; +3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; +3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; +3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; +301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; +301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; +301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; +301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;; +301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; +301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; +3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; +3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; +3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; +3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; +3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; +3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; +3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; +3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; +3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; +3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; +302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; +302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; +302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; +302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; +302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; +302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; +3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; +3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; +3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; +3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; +3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; +3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; +3036;CIRCLED POSTAL MARK;So;0;ON; 3012;;;;N;;;;; +3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; +3038;HANGZHOU NUMERAL TEN;Nl;0;L; 5341;;;10;N;;;;; +3039;HANGZHOU NUMERAL TWENTY;Nl;0;L; 5344;;;20;N;;;;; +303A;HANGZHOU NUMERAL THIRTY;Nl;0;L; 5345;;;30;N;;;;; +303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; +303C;MASU MARK;Lo;0;L;;;;;N;;;;; +303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; +303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; +303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; +3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; +3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; +3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; +3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; +3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; +3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; +3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; +3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; +304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; +304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; +304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; +304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; +304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; +304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; +3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; +3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; +3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; +3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; +3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; +3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; +3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; +3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; +3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; +3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; +305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; +305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; +305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; +305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; +305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; +305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; +3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; +3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; +3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; +3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; +3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; +3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; +3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; +3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; +3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; +3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; +306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; +306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; +306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; +306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; +306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; +306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; +3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; +3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; +3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; +3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; +3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; +3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; +3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; +3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; +3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; +3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; +307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; +307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; +307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; +307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; +307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; +307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; +3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; +3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; +3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; +3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; +3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; +3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; +3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; +3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; +3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; +3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; +308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; +308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; +308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; +308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; +308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; +308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; +3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; +3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; +3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; +3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; +3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; +3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; +3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; +3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; +309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; +309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON; 0020 3099;;;;N;;;;; +309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON; 0020 309A;;;;N;;;;; +309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; +309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; +309F;HIRAGANA DIGRAPH YORI;Lo;0;L; 3088 308A;;;;N;;;;; +30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; +30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; +30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; +30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; +30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; +30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; +30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; +30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; +30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; +30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; +30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; +30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; +30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; +30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; +30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; +30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; +30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; +30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; +30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; +30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; +30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; +30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; +30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; +30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; +30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; +30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; +30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; +30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; +30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; +30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; +30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; +30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; +30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; +30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; +30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; +30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; +30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; +30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; +30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; +30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; +30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; +30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; +30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; +30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; +30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; +30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; +30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; +30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; +30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; +30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; +30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; +30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; +30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; +30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; +30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; +30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; +30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; +30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; +30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; +30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; +30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; +30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; +30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; +30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; +30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; +30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; +30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; +30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; +30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; +30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; +30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; +30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; +30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; +30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; +30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; +30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; +30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; +30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; +30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; +30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; +30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; +30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; +30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; +30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; +30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; +30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; +30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; +30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; +30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; +30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; +30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;; +30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; +30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; +30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; +30FF;KATAKANA DIGRAPH KOTO;Lo;0;L; 30B3 30C8;;;;N;;;;; +3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; +3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; +3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; +3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; +3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; +310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; +310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; +310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; +310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; +310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; +310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; +3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; +3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; +3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; +3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; +3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; +3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; +3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; +3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; +3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; +3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; +311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; +311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; +311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; +311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; +311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; +311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; +3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; +3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; +3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; +3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; +3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; +3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; +3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; +3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; +3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; +3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; +312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; +312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; +312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; +3131;HANGUL LETTER KIYEOK;Lo;0;L; 1100;;;;N;HANGUL LETTER GIYEOG;;;; +3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L; 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; +3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; +3134;HANGUL LETTER NIEUN;Lo;0;L; 1102;;;;N;;;;; +3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; +3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; +3137;HANGUL LETTER TIKEUT;Lo;0;L; 1103;;;;N;HANGUL LETTER DIGEUD;;;; +3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L; 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; +3139;HANGUL LETTER RIEUL;Lo;0;L; 1105;;;;N;HANGUL LETTER LIEUL;;;; +313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; +313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; +313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; +313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L; 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; +313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; +313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; +3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; +3141;HANGUL LETTER MIEUM;Lo;0;L; 1106;;;;N;;;;; +3142;HANGUL LETTER PIEUP;Lo;0;L; 1107;;;;N;HANGUL LETTER BIEUB;;;; +3143;HANGUL LETTER SSANGPIEUP;Lo;0;L; 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; +3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L; 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; +3145;HANGUL LETTER SIOS;Lo;0;L; 1109;;;;N;;;;; +3146;HANGUL LETTER SSANGSIOS;Lo;0;L; 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; +3147;HANGUL LETTER IEUNG;Lo;0;L; 110B;;;;N;;;;; +3148;HANGUL LETTER CIEUC;Lo;0;L; 110C;;;;N;HANGUL LETTER JIEUJ;;;; +3149;HANGUL LETTER SSANGCIEUC;Lo;0;L; 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; +314A;HANGUL LETTER CHIEUCH;Lo;0;L; 110E;;;;N;HANGUL LETTER CIEUC;;;; +314B;HANGUL LETTER KHIEUKH;Lo;0;L; 110F;;;;N;HANGUL LETTER KIYEOK;;;; +314C;HANGUL LETTER THIEUTH;Lo;0;L; 1110;;;;N;HANGUL LETTER TIEUT;;;; +314D;HANGUL LETTER PHIEUPH;Lo;0;L; 1111;;;;N;HANGUL LETTER PIEUP;;;; +314E;HANGUL LETTER HIEUH;Lo;0;L; 1112;;;;N;;;;; +314F;HANGUL LETTER A;Lo;0;L; 1161;;;;N;;;;; +3150;HANGUL LETTER AE;Lo;0;L; 1162;;;;N;;;;; +3151;HANGUL LETTER YA;Lo;0;L; 1163;;;;N;;;;; +3152;HANGUL LETTER YAE;Lo;0;L; 1164;;;;N;;;;; +3153;HANGUL LETTER EO;Lo;0;L; 1165;;;;N;;;;; +3154;HANGUL LETTER E;Lo;0;L; 1166;;;;N;;;;; +3155;HANGUL LETTER YEO;Lo;0;L; 1167;;;;N;;;;; +3156;HANGUL LETTER YE;Lo;0;L; 1168;;;;N;;;;; +3157;HANGUL LETTER O;Lo;0;L; 1169;;;;N;;;;; +3158;HANGUL LETTER WA;Lo;0;L; 116A;;;;N;;;;; +3159;HANGUL LETTER WAE;Lo;0;L; 116B;;;;N;;;;; +315A;HANGUL LETTER OE;Lo;0;L; 116C;;;;N;;;;; +315B;HANGUL LETTER YO;Lo;0;L; 116D;;;;N;;;;; +315C;HANGUL LETTER U;Lo;0;L; 116E;;;;N;;;;; +315D;HANGUL LETTER WEO;Lo;0;L; 116F;;;;N;;;;; +315E;HANGUL LETTER WE;Lo;0;L; 1170;;;;N;;;;; +315F;HANGUL LETTER WI;Lo;0;L; 1171;;;;N;;;;; +3160;HANGUL LETTER YU;Lo;0;L; 1172;;;;N;;;;; +3161;HANGUL LETTER EU;Lo;0;L; 1173;;;;N;;;;; +3162;HANGUL LETTER YI;Lo;0;L; 1174;;;;N;;;;; +3163;HANGUL LETTER I;Lo;0;L; 1175;;;;N;;;;; +3164;HANGUL FILLER;Lo;0;L; 1160;;;;N;HANGUL CAE OM;;;; +3165;HANGUL LETTER SSANGNIEUN;Lo;0;L; 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; +3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L; 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; +3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L; 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; +3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L; 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; +3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L; 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; +316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L; 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; +316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L; 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; +316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L; 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; +316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L; 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; +316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L; 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; +316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L; 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; +3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L; 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; +3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L; 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; +3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L; 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; +3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L; 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; +3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L; 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; +3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L; 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; +3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L; 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; +3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L; 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; +3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L; 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; +3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L; 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; +317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L; 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; +317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L; 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; +317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L; 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; +317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L; 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; +317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L; 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; +317F;HANGUL LETTER PANSIOS;Lo;0;L; 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; +3180;HANGUL LETTER SSANGIEUNG;Lo;0;L; 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; +3181;HANGUL LETTER YESIEUNG;Lo;0;L; 114C;;;;N;HANGUL LETTER NGIEUNG;;;; +3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L; 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; +3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L; 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; +3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L; 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; +3185;HANGUL LETTER SSANGHIEUH;Lo;0;L; 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; +3186;HANGUL LETTER YEORINHIEUH;Lo;0;L; 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; +3187;HANGUL LETTER YO-YA;Lo;0;L; 1184;;;;N;HANGUL LETTER YOYA;;;; +3188;HANGUL LETTER YO-YAE;Lo;0;L; 1185;;;;N;HANGUL LETTER YOYAE;;;; +3189;HANGUL LETTER YO-I;Lo;0;L; 1188;;;;N;HANGUL LETTER YOI;;;; +318A;HANGUL LETTER YU-YEO;Lo;0;L; 1191;;;;N;HANGUL LETTER YUYEO;;;; +318B;HANGUL LETTER YU-YE;Lo;0;L; 1192;;;;N;HANGUL LETTER YUYE;;;; +318C;HANGUL LETTER YU-I;Lo;0;L; 1194;;;;N;HANGUL LETTER YUI;;;; +318D;HANGUL LETTER ARAEA;Lo;0;L; 119E;;;;N;HANGUL LETTER ALAE A;;;; +318E;HANGUL LETTER ARAEAE;Lo;0;L; 11A1;;;;N;HANGUL LETTER ALAE AE;;;; +3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;; +3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;; +3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L; 4E00;;;1;N;KAERITEN ITI;Kaeriten;;; +3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L; 4E8C;;;2;N;KAERITEN NI;Kaeriten;;; +3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L; 4E09;;;3;N;KAERITEN SAN;Kaeriten;;; +3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L; 56DB;;;4;N;KAERITEN SI;Kaeriten;;; +3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L; 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;; +3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L; 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;; +3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L; 4E0B;;;;N;KAERITEN GE;Kaeriten;;; +3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L; 7532;;;;N;KAERITEN KOU;Kaeriten;;; +319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L; 4E59;;;;N;KAERITEN OTU;Kaeriten;;; +319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L; 4E19;;;;N;KAERITEN HEI;Kaeriten;;; +319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L; 4E01;;;;N;KAERITEN TEI;Kaeriten;;; +319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L; 5929;;;;N;KAERITEN TEN;Kaeriten;;; +319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L; 5730;;;;N;KAERITEN TI;Kaeriten;;; +319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L; 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;; +31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; +31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; +31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; +31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; +31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; +31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; +31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; +31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; +31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; +31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; +31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; +31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; +31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; +31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; +31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; +31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; +31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; +31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; +31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; +31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; +31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; +31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; +31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; +31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; +31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; +31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; +31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; +31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;; +31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;; +31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;; +31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;; +31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;; +31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;; +31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;; +31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;; +31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;; +31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;; +31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;; +31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;; +31CF;CJK STROKE N;So;0;ON;;;;;N;;;;; +31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; +31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; +31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; +31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; +31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; +31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; +31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; +31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; +31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; +31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; +31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; +31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; +31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; +31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; +31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; +31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; +3200;PARENTHESIZED HANGUL KIYEOK;So;0;L; 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; +3201;PARENTHESIZED HANGUL NIEUN;So;0;L; 0028 1102 0029;;;;N;;;;; +3202;PARENTHESIZED HANGUL TIKEUT;So;0;L; 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; +3203;PARENTHESIZED HANGUL RIEUL;So;0;L; 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; +3204;PARENTHESIZED HANGUL MIEUM;So;0;L; 0028 1106 0029;;;;N;;;;; +3205;PARENTHESIZED HANGUL PIEUP;So;0;L; 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; +3206;PARENTHESIZED HANGUL SIOS;So;0;L; 0028 1109 0029;;;;N;;;;; +3207;PARENTHESIZED HANGUL IEUNG;So;0;L; 0028 110B 0029;;;;N;;;;; +3208;PARENTHESIZED HANGUL CIEUC;So;0;L; 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; +3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L; 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; +320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L; 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; +320B;PARENTHESIZED HANGUL THIEUTH;So;0;L; 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; +320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L; 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; +320D;PARENTHESIZED HANGUL HIEUH;So;0;L; 0028 1112 0029;;;;N;;;;; +320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L; 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; +320F;PARENTHESIZED HANGUL NIEUN A;So;0;L; 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; +3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L; 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; +3211;PARENTHESIZED HANGUL RIEUL A;So;0;L; 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; +3212;PARENTHESIZED HANGUL MIEUM A;So;0;L; 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; +3213;PARENTHESIZED HANGUL PIEUP A;So;0;L; 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; +3214;PARENTHESIZED HANGUL SIOS A;So;0;L; 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; +3215;PARENTHESIZED HANGUL IEUNG A;So;0;L; 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; +3216;PARENTHESIZED HANGUL CIEUC A;So;0;L; 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; +3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L; 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; +3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L; 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; +3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L; 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; +321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L; 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; +321B;PARENTHESIZED HANGUL HIEUH A;So;0;L; 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; +321C;PARENTHESIZED HANGUL CIEUC U;So;0;L; 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; +321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON; 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;; +321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON; 0028 110B 1169 1112 116E 0029;;;;N;;;;; +3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L; 0028 4E00 0029;;;1;N;;;;; +3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L; 0028 4E8C 0029;;;2;N;;;;; +3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L; 0028 4E09 0029;;;3;N;;;;; +3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L; 0028 56DB 0029;;;4;N;;;;; +3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L; 0028 4E94 0029;;;5;N;;;;; +3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L; 0028 516D 0029;;;6;N;;;;; +3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L; 0028 4E03 0029;;;7;N;;;;; +3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L; 0028 516B 0029;;;8;N;;;;; +3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L; 0028 4E5D 0029;;;9;N;;;;; +3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L; 0028 5341 0029;;;10;N;;;;; +322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L; 0028 6708 0029;;;;N;;;;; +322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L; 0028 706B 0029;;;;N;;;;; +322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L; 0028 6C34 0029;;;;N;;;;; +322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L; 0028 6728 0029;;;;N;;;;; +322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L; 0028 91D1 0029;;;;N;;;;; +322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L; 0028 571F 0029;;;;N;;;;; +3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L; 0028 65E5 0029;;;;N;;;;; +3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L; 0028 682A 0029;;;;N;;;;; +3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L; 0028 6709 0029;;;;N;;;;; +3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L; 0028 793E 0029;;;;N;;;;; +3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L; 0028 540D 0029;;;;N;;;;; +3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L; 0028 7279 0029;;;;N;;;;; +3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L; 0028 8CA1 0029;;;;N;;;;; +3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L; 0028 795D 0029;;;;N;;;;; +3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L; 0028 52B4 0029;;;;N;;;;; +3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L; 0028 4EE3 0029;;;;N;;;;; +323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L; 0028 547C 0029;;;;N;;;;; +323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L; 0028 5B66 0029;;;;N;;;;; +323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L; 0028 76E3 0029;;;;N;;;;; +323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L; 0028 4F01 0029;;;;N;;;;; +323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L; 0028 8CC7 0029;;;;N;;;;; +323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L; 0028 5354 0029;;;;N;;;;; +3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L; 0028 796D 0029;;;;N;;;;; +3241;PARENTHESIZED IDEOGRAPH REST;So;0;L; 0028 4F11 0029;;;;N;;;;; +3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L; 0028 81EA 0029;;;;N;;;;; +3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L; 0028 81F3 0029;;;;N;;;;; +3250;PARTNERSHIP SIGN;So;0;ON; 0050 0054 0045;;;;N;;;;; +3251;CIRCLED NUMBER TWENTY ONE;No;0;ON; 0032 0031;;;21;N;;;;; +3252;CIRCLED NUMBER TWENTY TWO;No;0;ON; 0032 0032;;;22;N;;;;; +3253;CIRCLED NUMBER TWENTY THREE;No;0;ON; 0032 0033;;;23;N;;;;; +3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON; 0032 0034;;;24;N;;;;; +3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON; 0032 0035;;;25;N;;;;; +3256;CIRCLED NUMBER TWENTY SIX;No;0;ON; 0032 0036;;;26;N;;;;; +3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON; 0032 0037;;;27;N;;;;; +3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON; 0032 0038;;;28;N;;;;; +3259;CIRCLED NUMBER TWENTY NINE;No;0;ON; 0032 0039;;;29;N;;;;; +325A;CIRCLED NUMBER THIRTY;No;0;ON; 0033 0030;;;30;N;;;;; +325B;CIRCLED NUMBER THIRTY ONE;No;0;ON; 0033 0031;;;31;N;;;;; +325C;CIRCLED NUMBER THIRTY TWO;No;0;ON; 0033 0032;;;32;N;;;;; +325D;CIRCLED NUMBER THIRTY THREE;No;0;ON; 0033 0033;;;33;N;;;;; +325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON; 0033 0034;;;34;N;;;;; +325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON; 0033 0035;;;35;N;;;;; +3260;CIRCLED HANGUL KIYEOK;So;0;L; 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; +3261;CIRCLED HANGUL NIEUN;So;0;L; 1102;;;;N;;;;; +3262;CIRCLED HANGUL TIKEUT;So;0;L; 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; +3263;CIRCLED HANGUL RIEUL;So;0;L; 1105;;;;N;CIRCLED HANGUL LIEUL;;;; +3264;CIRCLED HANGUL MIEUM;So;0;L; 1106;;;;N;;;;; +3265;CIRCLED HANGUL PIEUP;So;0;L; 1107;;;;N;CIRCLED HANGUL BIEUB;;;; +3266;CIRCLED HANGUL SIOS;So;0;L; 1109;;;;N;;;;; +3267;CIRCLED HANGUL IEUNG;So;0;L; 110B;;;;N;;;;; +3268;CIRCLED HANGUL CIEUC;So;0;L; 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; +3269;CIRCLED HANGUL CHIEUCH;So;0;L; 110E;;;;N;CIRCLED HANGUL CIEUC;;;; +326A;CIRCLED HANGUL KHIEUKH;So;0;L; 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; +326B;CIRCLED HANGUL THIEUTH;So;0;L; 1110;;;;N;CIRCLED HANGUL TIEUT;;;; +326C;CIRCLED HANGUL PHIEUPH;So;0;L; 1111;;;;N;CIRCLED HANGUL PIEUP;;;; +326D;CIRCLED HANGUL HIEUH;So;0;L; 1112;;;;N;;;;; +326E;CIRCLED HANGUL KIYEOK A;So;0;L; 1100 1161;;;;N;CIRCLED HANGUL GA;;;; +326F;CIRCLED HANGUL NIEUN A;So;0;L; 1102 1161;;;;N;CIRCLED HANGUL NA;;;; +3270;CIRCLED HANGUL TIKEUT A;So;0;L; 1103 1161;;;;N;CIRCLED HANGUL DA;;;; +3271;CIRCLED HANGUL RIEUL A;So;0;L; 1105 1161;;;;N;CIRCLED HANGUL LA;;;; +3272;CIRCLED HANGUL MIEUM A;So;0;L; 1106 1161;;;;N;CIRCLED HANGUL MA;;;; +3273;CIRCLED HANGUL PIEUP A;So;0;L; 1107 1161;;;;N;CIRCLED HANGUL BA;;;; +3274;CIRCLED HANGUL SIOS A;So;0;L; 1109 1161;;;;N;CIRCLED HANGUL SA;;;; +3275;CIRCLED HANGUL IEUNG A;So;0;L; 110B 1161;;;;N;CIRCLED HANGUL A;;;; +3276;CIRCLED HANGUL CIEUC A;So;0;L; 110C 1161;;;;N;CIRCLED HANGUL JA;;;; +3277;CIRCLED HANGUL CHIEUCH A;So;0;L; 110E 1161;;;;N;CIRCLED HANGUL CA;;;; +3278;CIRCLED HANGUL KHIEUKH A;So;0;L; 110F 1161;;;;N;CIRCLED HANGUL KA;;;; +3279;CIRCLED HANGUL THIEUTH A;So;0;L; 1110 1161;;;;N;CIRCLED HANGUL TA;;;; +327A;CIRCLED HANGUL PHIEUPH A;So;0;L; 1111 1161;;;;N;CIRCLED HANGUL PA;;;; +327B;CIRCLED HANGUL HIEUH A;So;0;L; 1112 1161;;;;N;CIRCLED HANGUL HA;;;; +327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON; 110E 1161 11B7 1100 1169;;;;N;;;;; +327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON; 110C 116E 110B 1174;;;;N;;;;; +327E;CIRCLED HANGUL IEUNG U;So;0;ON; 110B 116E;;;;N;;;;; +327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; +3280;CIRCLED IDEOGRAPH ONE;No;0;L; 4E00;;;1;N;;;;; +3281;CIRCLED IDEOGRAPH TWO;No;0;L; 4E8C;;;2;N;;;;; +3282;CIRCLED IDEOGRAPH THREE;No;0;L; 4E09;;;3;N;;;;; +3283;CIRCLED IDEOGRAPH FOUR;No;0;L; 56DB;;;4;N;;;;; +3284;CIRCLED IDEOGRAPH FIVE;No;0;L; 4E94;;;5;N;;;;; +3285;CIRCLED IDEOGRAPH SIX;No;0;L; 516D;;;6;N;;;;; +3286;CIRCLED IDEOGRAPH SEVEN;No;0;L; 4E03;;;7;N;;;;; +3287;CIRCLED IDEOGRAPH EIGHT;No;0;L; 516B;;;8;N;;;;; +3288;CIRCLED IDEOGRAPH NINE;No;0;L; 4E5D;;;9;N;;;;; +3289;CIRCLED IDEOGRAPH TEN;No;0;L; 5341;;;10;N;;;;; +328A;CIRCLED IDEOGRAPH MOON;So;0;L; 6708;;;;N;;;;; +328B;CIRCLED IDEOGRAPH FIRE;So;0;L; 706B;;;;N;;;;; +328C;CIRCLED IDEOGRAPH WATER;So;0;L; 6C34;;;;N;;;;; +328D;CIRCLED IDEOGRAPH WOOD;So;0;L; 6728;;;;N;;;;; +328E;CIRCLED IDEOGRAPH METAL;So;0;L; 91D1;;;;N;;;;; +328F;CIRCLED IDEOGRAPH EARTH;So;0;L; 571F;;;;N;;;;; +3290;CIRCLED IDEOGRAPH SUN;So;0;L; 65E5;;;;N;;;;; +3291;CIRCLED IDEOGRAPH STOCK;So;0;L; 682A;;;;N;;;;; +3292;CIRCLED IDEOGRAPH HAVE;So;0;L; 6709;;;;N;;;;; +3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L; 793E;;;;N;;;;; +3294;CIRCLED IDEOGRAPH NAME;So;0;L; 540D;;;;N;;;;; +3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L; 7279;;;;N;;;;; +3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L; 8CA1;;;;N;;;;; +3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L; 795D;;;;N;;;;; +3298;CIRCLED IDEOGRAPH LABOR;So;0;L; 52B4;;;;N;;;;; +3299;CIRCLED IDEOGRAPH SECRET;So;0;L; 79D8;;;;N;;;;; +329A;CIRCLED IDEOGRAPH MALE;So;0;L; 7537;;;;N;;;;; +329B;CIRCLED IDEOGRAPH FEMALE;So;0;L; 5973;;;;N;;;;; +329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L; 9069;;;;N;;;;; +329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L; 512A;;;;N;;;;; +329E;CIRCLED IDEOGRAPH PRINT;So;0;L; 5370;;;;N;;;;; +329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L; 6CE8;;;;N;;;;; +32A0;CIRCLED IDEOGRAPH ITEM;So;0;L; 9805;;;;N;;;;; +32A1;CIRCLED IDEOGRAPH REST;So;0;L; 4F11;;;;N;;;;; +32A2;CIRCLED IDEOGRAPH COPY;So;0;L; 5199;;;;N;;;;; +32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L; 6B63;;;;N;;;;; +32A4;CIRCLED IDEOGRAPH HIGH;So;0;L; 4E0A;;;;N;;;;; +32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L; 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; +32A6;CIRCLED IDEOGRAPH LOW;So;0;L; 4E0B;;;;N;;;;; +32A7;CIRCLED IDEOGRAPH LEFT;So;0;L; 5DE6;;;;N;;;;; +32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L; 53F3;;;;N;;;;; +32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L; 533B;;;;N;;;;; +32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L; 5B97;;;;N;;;;; +32AB;CIRCLED IDEOGRAPH STUDY;So;0;L; 5B66;;;;N;;;;; +32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L; 76E3;;;;N;;;;; +32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L; 4F01;;;;N;;;;; +32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L; 8CC7;;;;N;;;;; +32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L; 5354;;;;N;;;;; +32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L; 591C;;;;N;;;;; +32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON; 0033 0036;;;36;N;;;;; +32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON; 0033 0037;;;37;N;;;;; +32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON; 0033 0038;;;38;N;;;;; +32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON; 0033 0039;;;39;N;;;;; +32B5;CIRCLED NUMBER FORTY;No;0;ON; 0034 0030;;;40;N;;;;; +32B6;CIRCLED NUMBER FORTY ONE;No;0;ON; 0034 0031;;;41;N;;;;; +32B7;CIRCLED NUMBER FORTY TWO;No;0;ON; 0034 0032;;;42;N;;;;; +32B8;CIRCLED NUMBER FORTY THREE;No;0;ON; 0034 0033;;;43;N;;;;; +32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON; 0034 0034;;;44;N;;;;; +32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON; 0034 0035;;;45;N;;;;; +32BB;CIRCLED NUMBER FORTY SIX;No;0;ON; 0034 0036;;;46;N;;;;; +32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON; 0034 0037;;;47;N;;;;; +32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON; 0034 0038;;;48;N;;;;; +32BE;CIRCLED NUMBER FORTY NINE;No;0;ON; 0034 0039;;;49;N;;;;; +32BF;CIRCLED NUMBER FIFTY;No;0;ON; 0035 0030;;;50;N;;;;; +32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L; 0031 6708;;;;N;;;;; +32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L; 0032 6708;;;;N;;;;; +32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L; 0033 6708;;;;N;;;;; +32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L; 0034 6708;;;;N;;;;; +32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L; 0035 6708;;;;N;;;;; +32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L; 0036 6708;;;;N;;;;; +32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L; 0037 6708;;;;N;;;;; +32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L; 0038 6708;;;;N;;;;; +32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L; 0039 6708;;;;N;;;;; +32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L; 0031 0030 6708;;;;N;;;;; +32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L; 0031 0031 6708;;;;N;;;;; +32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L; 0031 0032 6708;;;;N;;;;; +32CC;SQUARE HG;So;0;ON; 0048 0067;;;;N;;;;; +32CD;SQUARE ERG;So;0;ON; 0065 0072 0067;;;;N;;;;; +32CE;SQUARE EV;So;0;ON; 0065 0056;;;;N;;;;; +32CF;LIMITED LIABILITY SIGN;So;0;ON; 004C 0054 0044;;;;N;;;;; +32D0;CIRCLED KATAKANA A;So;0;L; 30A2;;;;N;;;;; +32D1;CIRCLED KATAKANA I;So;0;L; 30A4;;;;N;;;;; +32D2;CIRCLED KATAKANA U;So;0;L; 30A6;;;;N;;;;; +32D3;CIRCLED KATAKANA E;So;0;L; 30A8;;;;N;;;;; +32D4;CIRCLED KATAKANA O;So;0;L; 30AA;;;;N;;;;; +32D5;CIRCLED KATAKANA KA;So;0;L; 30AB;;;;N;;;;; +32D6;CIRCLED KATAKANA KI;So;0;L; 30AD;;;;N;;;;; +32D7;CIRCLED KATAKANA KU;So;0;L; 30AF;;;;N;;;;; +32D8;CIRCLED KATAKANA KE;So;0;L; 30B1;;;;N;;;;; +32D9;CIRCLED KATAKANA KO;So;0;L; 30B3;;;;N;;;;; +32DA;CIRCLED KATAKANA SA;So;0;L; 30B5;;;;N;;;;; +32DB;CIRCLED KATAKANA SI;So;0;L; 30B7;;;;N;;;;; +32DC;CIRCLED KATAKANA SU;So;0;L; 30B9;;;;N;;;;; +32DD;CIRCLED KATAKANA SE;So;0;L; 30BB;;;;N;;;;; +32DE;CIRCLED KATAKANA SO;So;0;L; 30BD;;;;N;;;;; +32DF;CIRCLED KATAKANA TA;So;0;L; 30BF;;;;N;;;;; +32E0;CIRCLED KATAKANA TI;So;0;L; 30C1;;;;N;;;;; +32E1;CIRCLED KATAKANA TU;So;0;L; 30C4;;;;N;;;;; +32E2;CIRCLED KATAKANA TE;So;0;L; 30C6;;;;N;;;;; +32E3;CIRCLED KATAKANA TO;So;0;L; 30C8;;;;N;;;;; +32E4;CIRCLED KATAKANA NA;So;0;L; 30CA;;;;N;;;;; +32E5;CIRCLED KATAKANA NI;So;0;L; 30CB;;;;N;;;;; +32E6;CIRCLED KATAKANA NU;So;0;L; 30CC;;;;N;;;;; +32E7;CIRCLED KATAKANA NE;So;0;L; 30CD;;;;N;;;;; +32E8;CIRCLED KATAKANA NO;So;0;L; 30CE;;;;N;;;;; +32E9;CIRCLED KATAKANA HA;So;0;L; 30CF;;;;N;;;;; +32EA;CIRCLED KATAKANA HI;So;0;L; 30D2;;;;N;;;;; +32EB;CIRCLED KATAKANA HU;So;0;L; 30D5;;;;N;;;;; +32EC;CIRCLED KATAKANA HE;So;0;L; 30D8;;;;N;;;;; +32ED;CIRCLED KATAKANA HO;So;0;L; 30DB;;;;N;;;;; +32EE;CIRCLED KATAKANA MA;So;0;L; 30DE;;;;N;;;;; +32EF;CIRCLED KATAKANA MI;So;0;L; 30DF;;;;N;;;;; +32F0;CIRCLED KATAKANA MU;So;0;L; 30E0;;;;N;;;;; +32F1;CIRCLED KATAKANA ME;So;0;L; 30E1;;;;N;;;;; +32F2;CIRCLED KATAKANA MO;So;0;L; 30E2;;;;N;;;;; +32F3;CIRCLED KATAKANA YA;So;0;L; 30E4;;;;N;;;;; +32F4;CIRCLED KATAKANA YU;So;0;L; 30E6;;;;N;;;;; +32F5;CIRCLED KATAKANA YO;So;0;L; 30E8;;;;N;;;;; +32F6;CIRCLED KATAKANA RA;So;0;L; 30E9;;;;N;;;;; +32F7;CIRCLED KATAKANA RI;So;0;L; 30EA;;;;N;;;;; +32F8;CIRCLED KATAKANA RU;So;0;L; 30EB;;;;N;;;;; +32F9;CIRCLED KATAKANA RE;So;0;L; 30EC;;;;N;;;;; +32FA;CIRCLED KATAKANA RO;So;0;L; 30ED;;;;N;;;;; +32FB;CIRCLED KATAKANA WA;So;0;L; 30EF;;;;N;;;;; +32FC;CIRCLED KATAKANA WI;So;0;L; 30F0;;;;N;;;;; +32FD;CIRCLED KATAKANA WE;So;0;L; 30F1;;;;N;;;;; +32FE;CIRCLED KATAKANA WO;So;0;L; 30F2;;;;N;;;;; +3300;SQUARE APAATO;So;0;L; 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; +3301;SQUARE ARUHUA;So;0;L; 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; +3302;SQUARE ANPEA;So;0;L; 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; +3303;SQUARE AARU;So;0;L; 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; +3304;SQUARE ININGU;So;0;L; 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; +3305;SQUARE INTI;So;0;L; 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; +3306;SQUARE UON;So;0;L; 30A6 30A9 30F3;;;;N;SQUARED UON;;;; +3307;SQUARE ESUKUUDO;So;0;L; 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; +3308;SQUARE EEKAA;So;0;L; 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; +3309;SQUARE ONSU;So;0;L; 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; +330A;SQUARE OOMU;So;0;L; 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; +330B;SQUARE KAIRI;So;0;L; 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; +330C;SQUARE KARATTO;So;0;L; 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; +330D;SQUARE KARORII;So;0;L; 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; +330E;SQUARE GARON;So;0;L; 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; +330F;SQUARE GANMA;So;0;L; 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; +3310;SQUARE GIGA;So;0;L; 30AE 30AC;;;;N;SQUARED GIGA;;;; +3311;SQUARE GINII;So;0;L; 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; +3312;SQUARE KYURII;So;0;L; 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; +3313;SQUARE GIRUDAA;So;0;L; 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; +3314;SQUARE KIRO;So;0;L; 30AD 30ED;;;;N;SQUARED KIRO;;;; +3315;SQUARE KIROGURAMU;So;0;L; 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; +3316;SQUARE KIROMEETORU;So;0;L; 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; +3317;SQUARE KIROWATTO;So;0;L; 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; +3318;SQUARE GURAMU;So;0;L; 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; +3319;SQUARE GURAMUTON;So;0;L; 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; +331A;SQUARE KURUZEIRO;So;0;L; 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; +331B;SQUARE KUROONE;So;0;L; 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; +331C;SQUARE KEESU;So;0;L; 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; +331D;SQUARE KORUNA;So;0;L; 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; +331E;SQUARE KOOPO;So;0;L; 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; +331F;SQUARE SAIKURU;So;0;L; 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; +3320;SQUARE SANTIIMU;So;0;L; 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; +3321;SQUARE SIRINGU;So;0;L; 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; +3322;SQUARE SENTI;So;0;L; 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; +3323;SQUARE SENTO;So;0;L; 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; +3324;SQUARE DAASU;So;0;L; 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; +3325;SQUARE DESI;So;0;L; 30C7 30B7;;;;N;SQUARED DESI;;;; +3326;SQUARE DORU;So;0;L; 30C9 30EB;;;;N;SQUARED DORU;;;; +3327;SQUARE TON;So;0;L; 30C8 30F3;;;;N;SQUARED TON;;;; +3328;SQUARE NANO;So;0;L; 30CA 30CE;;;;N;SQUARED NANO;;;; +3329;SQUARE NOTTO;So;0;L; 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; +332A;SQUARE HAITU;So;0;L; 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; +332B;SQUARE PAASENTO;So;0;L; 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; +332C;SQUARE PAATU;So;0;L; 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; +332D;SQUARE BAARERU;So;0;L; 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; +332E;SQUARE PIASUTORU;So;0;L; 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; +332F;SQUARE PIKURU;So;0;L; 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; +3330;SQUARE PIKO;So;0;L; 30D4 30B3;;;;N;SQUARED PIKO;;;; +3331;SQUARE BIRU;So;0;L; 30D3 30EB;;;;N;SQUARED BIRU;;;; +3332;SQUARE HUARADDO;So;0;L; 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; +3333;SQUARE HUIITO;So;0;L; 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; +3334;SQUARE BUSSYERU;So;0;L; 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; +3335;SQUARE HURAN;So;0;L; 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; +3336;SQUARE HEKUTAARU;So;0;L; 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; +3337;SQUARE PESO;So;0;L; 30DA 30BD;;;;N;SQUARED PESO;;;; +3338;SQUARE PENIHI;So;0;L; 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; +3339;SQUARE HERUTU;So;0;L; 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; +333A;SQUARE PENSU;So;0;L; 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; +333B;SQUARE PEEZI;So;0;L; 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; +333C;SQUARE BEETA;So;0;L; 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; +333D;SQUARE POINTO;So;0;L; 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; +333E;SQUARE BORUTO;So;0;L; 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; +333F;SQUARE HON;So;0;L; 30DB 30F3;;;;N;SQUARED HON;;;; +3340;SQUARE PONDO;So;0;L; 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; +3341;SQUARE HOORU;So;0;L; 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; +3342;SQUARE HOON;So;0;L; 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; +3343;SQUARE MAIKURO;So;0;L; 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; +3344;SQUARE MAIRU;So;0;L; 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; +3345;SQUARE MAHHA;So;0;L; 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; +3346;SQUARE MARUKU;So;0;L; 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; +3347;SQUARE MANSYON;So;0;L; 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; +3348;SQUARE MIKURON;So;0;L; 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; +3349;SQUARE MIRI;So;0;L; 30DF 30EA;;;;N;SQUARED MIRI;;;; +334A;SQUARE MIRIBAARU;So;0;L; 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; +334B;SQUARE MEGA;So;0;L; 30E1 30AC;;;;N;SQUARED MEGA;;;; +334C;SQUARE MEGATON;So;0;L; 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; +334D;SQUARE MEETORU;So;0;L; 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; +334E;SQUARE YAADO;So;0;L; 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; +334F;SQUARE YAARU;So;0;L; 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; +3350;SQUARE YUAN;So;0;L; 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; +3351;SQUARE RITTORU;So;0;L; 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; +3352;SQUARE RIRA;So;0;L; 30EA 30E9;;;;N;SQUARED RIRA;;;; +3353;SQUARE RUPII;So;0;L; 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; +3354;SQUARE RUUBURU;So;0;L; 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; +3355;SQUARE REMU;So;0;L; 30EC 30E0;;;;N;SQUARED REMU;;;; +3356;SQUARE RENTOGEN;So;0;L; 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; +3357;SQUARE WATTO;So;0;L; 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; +3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L; 0030 70B9;;;;N;;;;; +3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L; 0031 70B9;;;;N;;;;; +335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L; 0032 70B9;;;;N;;;;; +335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L; 0033 70B9;;;;N;;;;; +335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L; 0034 70B9;;;;N;;;;; +335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L; 0035 70B9;;;;N;;;;; +335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L; 0036 70B9;;;;N;;;;; +335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L; 0037 70B9;;;;N;;;;; +3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L; 0038 70B9;;;;N;;;;; +3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L; 0039 70B9;;;;N;;;;; +3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L; 0031 0030 70B9;;;;N;;;;; +3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L; 0031 0031 70B9;;;;N;;;;; +3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L; 0031 0032 70B9;;;;N;;;;; +3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L; 0031 0033 70B9;;;;N;;;;; +3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L; 0031 0034 70B9;;;;N;;;;; +3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L; 0031 0035 70B9;;;;N;;;;; +3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L; 0031 0036 70B9;;;;N;;;;; +3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L; 0031 0037 70B9;;;;N;;;;; +336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L; 0031 0038 70B9;;;;N;;;;; +336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L; 0031 0039 70B9;;;;N;;;;; +336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L; 0032 0030 70B9;;;;N;;;;; +336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L; 0032 0031 70B9;;;;N;;;;; +336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L; 0032 0032 70B9;;;;N;;;;; +336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L; 0032 0033 70B9;;;;N;;;;; +3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L; 0032 0034 70B9;;;;N;;;;; +3371;SQUARE HPA;So;0;L; 0068 0050 0061;;;;N;;;;; +3372;SQUARE DA;So;0;L; 0064 0061;;;;N;;;;; +3373;SQUARE AU;So;0;L; 0041 0055;;;;N;;;;; +3374;SQUARE BAR;So;0;L; 0062 0061 0072;;;;N;;;;; +3375;SQUARE OV;So;0;L; 006F 0056;;;;N;;;;; +3376;SQUARE PC;So;0;L; 0070 0063;;;;N;;;;; +3377;SQUARE DM;So;0;ON; 0064 006D;;;;N;;;;; +3378;SQUARE DM SQUARED;So;0;ON; 0064 006D 00B2;;;;N;;;;; +3379;SQUARE DM CUBED;So;0;ON; 0064 006D 00B3;;;;N;;;;; +337A;SQUARE IU;So;0;ON; 0049 0055;;;;N;;;;; +337B;SQUARE ERA NAME HEISEI;So;0;L; 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; +337C;SQUARE ERA NAME SYOUWA;So;0;L; 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; +337D;SQUARE ERA NAME TAISYOU;So;0;L; 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; +337E;SQUARE ERA NAME MEIZI;So;0;L; 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; +337F;SQUARE CORPORATION;So;0;L; 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; +3380;SQUARE PA AMPS;So;0;L; 0070 0041;;;;N;SQUARED PA AMPS;;;; +3381;SQUARE NA;So;0;L; 006E 0041;;;;N;SQUARED NA;;;; +3382;SQUARE MU A;So;0;L; 03BC 0041;;;;N;SQUARED MU A;;;; +3383;SQUARE MA;So;0;L; 006D 0041;;;;N;SQUARED MA;;;; +3384;SQUARE KA;So;0;L; 006B 0041;;;;N;SQUARED KA;;;; +3385;SQUARE KB;So;0;L; 004B 0042;;;;N;SQUARED KB;;;; +3386;SQUARE MB;So;0;L; 004D 0042;;;;N;SQUARED MB;;;; +3387;SQUARE GB;So;0;L; 0047 0042;;;;N;SQUARED GB;;;; +3388;SQUARE CAL;So;0;L; 0063 0061 006C;;;;N;SQUARED CAL;;;; +3389;SQUARE KCAL;So;0;L; 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; +338A;SQUARE PF;So;0;L; 0070 0046;;;;N;SQUARED PF;;;; +338B;SQUARE NF;So;0;L; 006E 0046;;;;N;SQUARED NF;;;; +338C;SQUARE MU F;So;0;L; 03BC 0046;;;;N;SQUARED MU F;;;; +338D;SQUARE MU G;So;0;L; 03BC 0067;;;;N;SQUARED MU G;;;; +338E;SQUARE MG;So;0;L; 006D 0067;;;;N;SQUARED MG;;;; +338F;SQUARE KG;So;0;L; 006B 0067;;;;N;SQUARED KG;;;; +3390;SQUARE HZ;So;0;L; 0048 007A;;;;N;SQUARED HZ;;;; +3391;SQUARE KHZ;So;0;L; 006B 0048 007A;;;;N;SQUARED KHZ;;;; +3392;SQUARE MHZ;So;0;L; 004D 0048 007A;;;;N;SQUARED MHZ;;;; +3393;SQUARE GHZ;So;0;L; 0047 0048 007A;;;;N;SQUARED GHZ;;;; +3394;SQUARE THZ;So;0;L; 0054 0048 007A;;;;N;SQUARED THZ;;;; +3395;SQUARE MU L;So;0;L; 03BC 2113;;;;N;SQUARED MU L;;;; +3396;SQUARE ML;So;0;L; 006D 2113;;;;N;SQUARED ML;;;; +3397;SQUARE DL;So;0;L; 0064 2113;;;;N;SQUARED DL;;;; +3398;SQUARE KL;So;0;L; 006B 2113;;;;N;SQUARED KL;;;; +3399;SQUARE FM;So;0;L; 0066 006D;;;;N;SQUARED FM;;;; +339A;SQUARE NM;So;0;L; 006E 006D;;;;N;SQUARED NM;;;; +339B;SQUARE MU M;So;0;L; 03BC 006D;;;;N;SQUARED MU M;;;; +339C;SQUARE MM;So;0;L; 006D 006D;;;;N;SQUARED MM;;;; +339D;SQUARE CM;So;0;L; 0063 006D;;;;N;SQUARED CM;;;; +339E;SQUARE KM;So;0;L; 006B 006D;;;;N;SQUARED KM;;;; +339F;SQUARE MM SQUARED;So;0;L; 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; +33A0;SQUARE CM SQUARED;So;0;L; 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; +33A1;SQUARE M SQUARED;So;0;L; 006D 00B2;;;;N;SQUARED M SQUARED;;;; +33A2;SQUARE KM SQUARED;So;0;L; 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; +33A3;SQUARE MM CUBED;So;0;L; 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; +33A4;SQUARE CM CUBED;So;0;L; 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; +33A5;SQUARE M CUBED;So;0;L; 006D 00B3;;;;N;SQUARED M CUBED;;;; +33A6;SQUARE KM CUBED;So;0;L; 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; +33A7;SQUARE M OVER S;So;0;L; 006D 2215 0073;;;;N;SQUARED M OVER S;;;; +33A8;SQUARE M OVER S SQUARED;So;0;L; 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; +33A9;SQUARE PA;So;0;L; 0050 0061;;;;N;SQUARED PA;;;; +33AA;SQUARE KPA;So;0;L; 006B 0050 0061;;;;N;SQUARED KPA;;;; +33AB;SQUARE MPA;So;0;L; 004D 0050 0061;;;;N;SQUARED MPA;;;; +33AC;SQUARE GPA;So;0;L; 0047 0050 0061;;;;N;SQUARED GPA;;;; +33AD;SQUARE RAD;So;0;L; 0072 0061 0064;;;;N;SQUARED RAD;;;; +33AE;SQUARE RAD OVER S;So;0;L; 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; +33AF;SQUARE RAD OVER S SQUARED;So;0;L; 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; +33B0;SQUARE PS;So;0;L; 0070 0073;;;;N;SQUARED PS;;;; +33B1;SQUARE NS;So;0;L; 006E 0073;;;;N;SQUARED NS;;;; +33B2;SQUARE MU S;So;0;L; 03BC 0073;;;;N;SQUARED MU S;;;; +33B3;SQUARE MS;So;0;L; 006D 0073;;;;N;SQUARED MS;;;; +33B4;SQUARE PV;So;0;L; 0070 0056;;;;N;SQUARED PV;;;; +33B5;SQUARE NV;So;0;L; 006E 0056;;;;N;SQUARED NV;;;; +33B6;SQUARE MU V;So;0;L; 03BC 0056;;;;N;SQUARED MU V;;;; +33B7;SQUARE MV;So;0;L; 006D 0056;;;;N;SQUARED MV;;;; +33B8;SQUARE KV;So;0;L; 006B 0056;;;;N;SQUARED KV;;;; +33B9;SQUARE MV MEGA;So;0;L; 004D 0056;;;;N;SQUARED MV MEGA;;;; +33BA;SQUARE PW;So;0;L; 0070 0057;;;;N;SQUARED PW;;;; +33BB;SQUARE NW;So;0;L; 006E 0057;;;;N;SQUARED NW;;;; +33BC;SQUARE MU W;So;0;L; 03BC 0057;;;;N;SQUARED MU W;;;; +33BD;SQUARE MW;So;0;L; 006D 0057;;;;N;SQUARED MW;;;; +33BE;SQUARE KW;So;0;L; 006B 0057;;;;N;SQUARED KW;;;; +33BF;SQUARE MW MEGA;So;0;L; 004D 0057;;;;N;SQUARED MW MEGA;;;; +33C0;SQUARE K OHM;So;0;L; 006B 03A9;;;;N;SQUARED K OHM;;;; +33C1;SQUARE M OHM;So;0;L; 004D 03A9;;;;N;SQUARED M OHM;;;; +33C2;SQUARE AM;So;0;L; 0061 002E 006D 002E;;;;N;SQUARED AM;;;; +33C3;SQUARE BQ;So;0;L; 0042 0071;;;;N;SQUARED BQ;;;; +33C4;SQUARE CC;So;0;L; 0063 0063;;;;N;SQUARED CC;;;; +33C5;SQUARE CD;So;0;L; 0063 0064;;;;N;SQUARED CD;;;; +33C6;SQUARE C OVER KG;So;0;L; 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; +33C7;SQUARE CO;So;0;L; 0043 006F 002E;;;;N;SQUARED CO;;;; +33C8;SQUARE DB;So;0;L; 0064 0042;;;;N;SQUARED DB;;;; +33C9;SQUARE GY;So;0;L; 0047 0079;;;;N;SQUARED GY;;;; +33CA;SQUARE HA;So;0;L; 0068 0061;;;;N;SQUARED HA;;;; +33CB;SQUARE HP;So;0;L; 0048 0050;;;;N;SQUARED HP;;;; +33CC;SQUARE IN;So;0;L; 0069 006E;;;;N;SQUARED IN;;;; +33CD;SQUARE KK;So;0;L; 004B 004B;;;;N;SQUARED KK;;;; +33CE;SQUARE KM CAPITAL;So;0;L; 004B 004D;;;;N;SQUARED KM CAPITAL;;;; +33CF;SQUARE KT;So;0;L; 006B 0074;;;;N;SQUARED KT;;;; +33D0;SQUARE LM;So;0;L; 006C 006D;;;;N;SQUARED LM;;;; +33D1;SQUARE LN;So;0;L; 006C 006E;;;;N;SQUARED LN;;;; +33D2;SQUARE LOG;So;0;L; 006C 006F 0067;;;;N;SQUARED LOG;;;; +33D3;SQUARE LX;So;0;L; 006C 0078;;;;N;SQUARED LX;;;; +33D4;SQUARE MB SMALL;So;0;L; 006D 0062;;;;N;SQUARED MB SMALL;;;; +33D5;SQUARE MIL;So;0;L; 006D 0069 006C;;;;N;SQUARED MIL;;;; +33D6;SQUARE MOL;So;0;L; 006D 006F 006C;;;;N;SQUARED MOL;;;; +33D7;SQUARE PH;So;0;L; 0050 0048;;;;N;SQUARED PH;;;; +33D8;SQUARE PM;So;0;L; 0070 002E 006D 002E;;;;N;SQUARED PM;;;; +33D9;SQUARE PPM;So;0;L; 0050 0050 004D;;;;N;SQUARED PPM;;;; +33DA;SQUARE PR;So;0;L; 0050 0052;;;;N;SQUARED PR;;;; +33DB;SQUARE SR;So;0;L; 0073 0072;;;;N;SQUARED SR;;;; +33DC;SQUARE SV;So;0;L; 0053 0076;;;;N;SQUARED SV;;;; +33DD;SQUARE WB;So;0;L; 0057 0062;;;;N;SQUARED WB;;;; +33DE;SQUARE V OVER M;So;0;ON; 0056 2215 006D;;;;N;;;;; +33DF;SQUARE A OVER M;So;0;ON; 0041 2215 006D;;;;N;;;;; +33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L; 0031 65E5;;;;N;;;;; +33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L; 0032 65E5;;;;N;;;;; +33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L; 0033 65E5;;;;N;;;;; +33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L; 0034 65E5;;;;N;;;;; +33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L; 0035 65E5;;;;N;;;;; +33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L; 0036 65E5;;;;N;;;;; +33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L; 0037 65E5;;;;N;;;;; +33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L; 0038 65E5;;;;N;;;;; +33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L; 0039 65E5;;;;N;;;;; +33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L; 0031 0030 65E5;;;;N;;;;; +33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L; 0031 0031 65E5;;;;N;;;;; +33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L; 0031 0032 65E5;;;;N;;;;; +33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L; 0031 0033 65E5;;;;N;;;;; +33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L; 0031 0034 65E5;;;;N;;;;; +33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L; 0031 0035 65E5;;;;N;;;;; +33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L; 0031 0036 65E5;;;;N;;;;; +33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L; 0031 0037 65E5;;;;N;;;;; +33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L; 0031 0038 65E5;;;;N;;;;; +33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L; 0031 0039 65E5;;;;N;;;;; +33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L; 0032 0030 65E5;;;;N;;;;; +33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L; 0032 0031 65E5;;;;N;;;;; +33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L; 0032 0032 65E5;;;;N;;;;; +33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L; 0032 0033 65E5;;;;N;;;;; +33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L; 0032 0034 65E5;;;;N;;;;; +33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L; 0032 0035 65E5;;;;N;;;;; +33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L; 0032 0036 65E5;;;;N;;;;; +33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L; 0032 0037 65E5;;;;N;;;;; +33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L; 0032 0038 65E5;;;;N;;;;; +33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L; 0032 0039 65E5;;;;N;;;;; +33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L; 0033 0030 65E5;;;;N;;;;; +33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L; 0033 0031 65E5;;;;N;;;;; +33FF;SQUARE GAL;So;0;ON; 0067 0061 006C;;;;N;;;;; +3400;;Lo;0;L;;;;;N;;;;; +4DB5;;Lo;0;L;;;;;N;;;;; +4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; +4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; +4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; +4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;; +4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; +4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;; +4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;; +4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;; +4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;; +4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;; +4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;; +4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;; +4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;; +4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;; +4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;; +4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;; +4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; +4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;; +4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;; +4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;; +4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;; +4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;; +4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;; +4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;; +4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;; +4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;; +4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;; +4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;; +4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;; +4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;; +4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;; +4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;; +4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;; +4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;; +4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;; +4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;; +4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;; +4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; +4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;; +4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;; +4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;; +4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; +4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;; +4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;; +4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;; +4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;; +4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;; +4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;; +4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;; +4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;; +4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;; +4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;; +4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;; +4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;; +4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;; +4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;; +4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;; +4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;; +4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;; +4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;; +4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;; +4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;; +4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; +4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; +4E00;;Lo;0;L;;;;;N;;;;; +9FBB;;Lo;0;L;;;;;N;;;;; +A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; +A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; +A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; +A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; +A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; +A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; +A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; +A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; +A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; +A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; +A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; +A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; +A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; +A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; +A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; +A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; +A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; +A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; +A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; +A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; +A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; +A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;; +A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; +A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; +A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; +A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; +A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; +A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; +A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; +A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; +A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; +A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; +A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; +A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; +A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; +A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; +A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; +A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; +A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; +A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; +A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; +A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; +A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; +A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; +A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; +A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; +A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; +A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; +A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; +A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; +A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; +A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; +A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; +A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; +A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; +A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; +A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; +A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; +A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; +A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; +A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; +A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; +A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; +A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; +A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; +A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; +A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; +A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; +A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; +A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; +A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; +A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; +A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; +A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; +A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; +A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; +A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; +A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; +A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; +A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; +A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; +A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; +A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; +A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; +A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; +A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; +A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; +A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; +A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; +A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; +A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; +A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; +A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; +A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; +A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; +A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; +A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; +A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; +A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; +A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; +A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; +A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; +A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; +A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; +A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; +A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; +A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; +A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; +A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; +A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; +A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; +A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; +A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; +A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; +A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; +A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; +A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; +A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; +A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; +A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; +A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; +A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; +A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; +A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; +A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; +A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; +A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; +A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; +A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; +A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; +A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; +A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; +A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; +A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; +A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; +A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; +A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; +A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; +A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; +A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; +A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; +A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; +A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; +A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; +A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; +A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; +A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; +A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; +A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; +A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; +A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; +A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; +A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; +A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; +A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; +A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; +A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; +A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; +A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; +A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; +A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; +A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; +A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; +A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; +A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; +A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; +A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; +A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; +A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; +A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; +A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; +A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; +A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; +A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; +A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; +A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; +A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; +A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; +A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; +A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; +A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; +A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; +A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; +A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; +A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; +A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; +A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; +A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; +A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; +A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; +A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; +A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; +A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; +A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; +A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; +A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; +A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; +A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; +A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; +A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; +A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; +A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; +A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; +A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; +A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; +A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; +A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; +A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; +A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; +A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; +A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; +A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; +A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; +A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; +A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; +A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; +A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; +A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; +A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; +A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; +A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; +A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; +A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; +A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; +A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; +A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; +A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; +A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; +A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; +A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; +A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; +A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; +A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; +A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; +A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; +A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; +A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; +A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; +A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; +A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; +A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; +A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; +A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; +A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; +A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; +A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; +A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; +A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; +A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; +A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; +A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; +A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; +A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; +A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; +A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; +A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; +A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; +A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; +A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; +A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; +A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; +A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; +A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; +A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; +A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; +A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; +A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; +A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; +A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; +A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; +A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; +A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; +A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; +A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; +A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; +A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; +A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; +A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; +A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; +A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; +A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; +A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; +A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; +A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; +A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; +A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; +A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; +A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; +A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; +A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; +A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; +A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; +A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; +A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; +A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; +A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; +A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; +A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; +A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; +A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; +A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; +A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; +A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; +A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; +A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; +A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; +A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; +A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; +A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; +A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; +A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; +A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; +A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; +A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; +A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; +A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; +A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; +A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; +A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; +A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; +A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; +A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; +A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; +A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; +A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; +A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; +A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; +A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; +A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; +A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; +A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; +A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; +A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; +A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; +A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; +A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; +A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; +A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; +A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; +A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; +A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; +A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; +A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; +A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; +A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; +A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; +A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; +A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; +A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; +A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; +A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; +A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; +A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; +A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; +A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; +A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; +A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; +A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; +A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; +A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; +A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; +A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; +A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; +A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; +A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; +A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; +A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; +A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; +A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; +A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; +A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; +A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; +A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; +A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; +A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; +A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; +A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; +A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; +A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; +A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; +A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; +A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; +A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; +A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; +A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; +A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; +A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; +A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; +A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; +A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; +A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; +A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; +A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; +A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; +A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; +A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; +A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; +A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; +A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; +A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; +A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; +A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; +A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; +A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; +A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; +A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; +A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; +A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; +A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; +A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; +A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; +A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; +A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; +A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; +A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; +A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; +A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; +A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; +A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; +A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; +A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; +A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; +A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; +A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; +A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; +A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; +A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; +A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; +A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; +A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; +A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; +A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; +A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; +A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; +A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; +A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; +A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; +A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; +A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; +A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; +A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; +A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; +A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; +A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; +A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; +A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; +A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; +A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; +A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; +A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; +A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; +A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; +A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; +A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; +A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; +A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; +A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; +A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; +A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; +A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; +A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; +A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; +A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; +A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; +A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; +A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; +A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; +A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; +A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; +A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; +A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; +A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; +A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; +A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; +A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; +A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; +A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; +A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; +A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; +A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; +A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; +A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; +A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; +A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; +A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; +A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; +A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; +A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; +A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; +A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; +A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; +A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; +A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; +A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; +A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; +A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; +A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; +A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; +A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; +A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; +A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; +A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; +A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; +A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; +A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; +A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; +A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; +A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; +A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; +A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; +A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; +A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; +A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; +A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; +A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; +A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; +A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; +A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; +A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; +A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; +A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; +A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; +A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; +A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; +A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; +A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; +A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; +A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; +A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; +A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; +A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; +A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; +A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; +A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; +A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; +A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; +A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; +A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; +A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; +A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; +A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; +A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; +A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; +A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; +A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; +A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; +A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; +A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; +A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; +A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; +A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; +A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; +A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; +A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; +A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; +A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; +A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; +A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; +A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; +A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; +A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; +A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; +A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; +A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; +A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; +A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; +A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; +A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; +A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; +A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; +A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; +A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; +A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; +A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; +A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; +A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; +A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; +A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; +A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; +A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; +A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; +A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; +A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; +A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; +A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; +A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; +A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; +A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; +A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; +A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; +A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; +A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; +A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; +A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; +A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; +A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; +A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; +A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; +A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; +A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; +A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; +A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; +A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; +A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; +A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; +A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; +A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; +A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; +A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; +A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; +A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; +A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; +A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; +A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; +A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; +A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; +A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; +A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; +A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; +A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; +A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; +A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; +A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; +A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; +A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; +A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; +A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; +A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; +A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; +A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; +A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; +A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; +A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; +A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; +A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; +A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; +A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; +A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; +A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; +A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; +A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; +A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; +A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; +A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; +A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; +A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; +A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; +A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; +A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; +A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; +A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; +A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; +A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; +A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; +A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; +A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; +A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; +A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; +A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; +A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; +A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; +A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; +A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; +A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; +A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; +A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; +A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; +A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; +A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; +A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; +A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; +A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; +A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; +A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; +A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; +A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; +A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; +A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; +A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; +A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; +A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; +A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; +A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; +A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; +A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; +A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; +A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; +A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; +A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; +A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; +A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; +A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; +A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; +A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; +A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; +A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; +A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; +A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; +A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; +A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; +A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; +A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; +A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; +A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; +A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; +A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; +A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; +A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; +A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; +A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; +A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; +A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; +A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; +A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; +A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; +A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; +A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; +A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; +A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; +A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; +A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; +A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; +A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; +A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; +A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; +A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; +A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; +A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; +A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; +A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; +A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; +A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; +A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; +A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; +A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; +A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; +A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; +A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; +A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; +A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; +A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; +A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; +A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; +A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; +A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; +A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; +A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; +A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; +A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; +A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; +A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; +A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; +A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; +A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; +A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; +A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; +A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; +A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; +A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; +A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; +A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; +A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; +A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; +A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; +A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; +A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; +A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; +A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; +A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; +A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; +A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; +A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; +A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; +A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; +A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; +A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; +A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; +A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; +A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; +A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; +A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; +A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; +A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; +A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; +A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; +A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; +A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; +A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; +A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; +A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; +A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; +A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; +A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; +A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; +A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; +A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; +A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; +A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; +A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; +A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; +A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; +A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; +A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; +A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; +A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; +A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; +A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; +A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; +A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; +A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; +A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; +A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; +A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; +A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; +A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; +A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; +A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; +A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; +A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; +A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; +A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; +A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; +A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; +A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; +A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; +A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; +A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; +A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; +A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; +A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; +A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; +A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; +A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; +A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; +A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; +A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; +A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; +A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; +A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; +A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; +A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; +A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; +A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; +A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; +A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; +A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; +A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; +A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; +A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; +A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; +A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; +A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; +A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; +A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; +A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; +A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; +A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; +A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; +A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; +A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; +A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; +A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; +A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; +A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; +A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; +A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; +A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; +A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; +A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; +A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; +A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; +A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; +A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; +A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; +A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; +A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; +A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; +A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; +A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; +A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; +A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; +A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; +A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; +A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; +A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; +A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; +A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; +A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; +A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; +A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; +A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; +A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; +A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; +A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; +A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; +A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; +A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; +A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; +A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; +A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; +A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; +A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; +A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; +A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; +A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; +A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; +A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; +A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; +A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; +A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; +A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; +A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; +A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; +A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; +A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; +A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; +A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; +A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; +A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; +A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; +A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; +A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; +A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; +A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; +A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; +A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; +A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; +A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; +A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; +A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; +A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; +A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; +A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; +A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; +A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; +A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; +A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; +A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; +A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; +A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; +A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; +A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; +A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; +A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; +A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; +A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; +A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; +A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; +A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; +A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; +A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; +A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; +A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; +A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; +A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; +A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; +A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; +A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; +A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; +A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; +A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; +A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; +A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; +A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; +A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; +A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; +A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; +A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; +A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; +A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; +A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; +A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; +A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; +A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; +A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; +A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; +A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; +A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; +A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; +A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; +A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; +A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; +A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; +A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; +A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; +A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; +A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; +A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; +A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; +A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; +A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; +A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; +A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; +A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; +A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; +A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; +A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; +A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; +A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; +A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; +A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; +A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; +A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; +A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; +A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; +A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; +A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; +A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; +A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; +A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; +A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; +A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; +A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; +A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; +A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; +A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; +A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; +A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; +A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; +A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; +A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; +A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; +A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; +A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; +A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; +A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; +A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; +A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; +A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; +A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; +A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; +A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; +A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; +A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; +A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; +A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; +A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; +A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; +A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; +A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; +A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; +A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; +A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; +A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; +A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; +A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; +A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; +A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; +A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; +A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; +A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; +A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; +A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; +A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; +A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; +A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; +A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; +A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; +A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; +A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; +A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; +A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; +A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; +A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; +A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; +A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; +A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; +A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; +A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; +A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; +A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; +A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; +A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; +A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; +A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; +A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; +A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; +A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; +A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; +A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; +A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; +A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; +A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; +A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; +A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; +A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; +A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; +A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; +A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; +A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; +A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; +A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; +A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; +A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; +A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; +A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; +A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; +A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; +A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; +A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; +A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; +A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; +A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; +A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; +A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; +A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; +A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; +A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; +A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; +A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; +A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; +A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; +A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; +A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; +A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; +A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; +A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; +A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; +A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; +A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; +A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; +A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; +A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; +A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; +A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; +A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; +A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; +A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; +A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; +A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; +A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; +A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; +A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; +A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; +A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; +A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; +A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; +A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; +A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; +A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; +A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; +A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; +A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; +A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; +A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; +A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; +A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; +A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; +A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; +A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; +A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; +A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; +A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; +A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; +A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; +A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; +A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; +A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; +A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; +A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; +A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; +A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; +A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; +A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; +A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; +A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; +A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; +A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; +A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; +A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; +A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; +A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; +A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; +A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; +A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; +A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; +A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; +A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; +A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; +A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; +A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; +A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; +A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; +A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; +A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; +A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; +A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; +A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; +A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; +A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; +A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; +A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; +A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; +A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; +A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; +A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; +A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; +A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; +A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; +A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; +A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; +A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; +A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; +A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; +A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;; +A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;; +A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;; +A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;; +A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;; +A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;; +A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;; +A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;; +A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;; +A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;; +A802;SYLOTI NAGRI SIGN DVISVARA;Mc;0;NSM;;;;;N;;;;; +A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;; +A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;; +A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;; +A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;; +A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;; +A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;; +A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;; +A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;; +A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;; +A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;; +A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;; +A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;; +A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;; +A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;; +A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;; +A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;; +A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;; +A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;; +A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;; +A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;; +A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;; +A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;; +A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;; +A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;; +A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;; +A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;; +A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;; +A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;; +A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;; +A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;; +A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;; +A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;; +A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; +A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; +A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; +A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; +AC00;;Lo;0;L;;;;;N;;;;; +D7A3;;Lo;0;L;;;;;N;;;;; +D800;;Cs;0;L;;;;;N;;;;; +DB7F;;Cs;0;L;;;;;N;;;;; +DB80;;Cs;0;L;;;;;N;;;;; +DBFF;;Cs;0;L;;;;;N;;;;; +DC00;;Cs;0;L;;;;;N;;;;; +DFFF;;Cs;0;L;;;;;N;;;;; +E000;;Co;0;L;;;;;N;;;;; +F8FF;;Co;0;L;;;;;N;;;;; +F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; +F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; +F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; +F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; +F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; +F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; +F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; +F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; +F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; +F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; +F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; +F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; +F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; +F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; +F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; +F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; +F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; +F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; +F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; +F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; +F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; +F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; +F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; +F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; +F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; +F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; +F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; +F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; +F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; +F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; +F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; +F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; +F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; +F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; +F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; +F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; +F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; +F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; +F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; +F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; +F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; +F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; +F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; +F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; +F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; +F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; +F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; +F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; +F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; +F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; +F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; +F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; +F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; +F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; +F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; +F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; +F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; +F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; +F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; +F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; +F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; +F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; +F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; +F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; +F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; +F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; +F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; +F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; +F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; +F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; +F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; +F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; +F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; +F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; +F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; +F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; +F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; +F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; +F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; +F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; +F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; +F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; +F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; +F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; +F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; +F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; +F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; +F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; +F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; +F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; +F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; +F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; +F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; +F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; +F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; +F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; +F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; +F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; +F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; +F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; +F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; +F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; +F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; +F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; +F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; +F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; +F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; +F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;; +F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; +F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; +F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; +F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; +F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; +F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; +F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; +F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;; +F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; +F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; +F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; +F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; +F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;; +F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; +F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; +F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; +F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; +F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; +F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; +F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; +F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; +F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; +F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; +F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; +F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; +F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; +F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; +F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; +F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; +F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; +F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; +F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; +F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; +F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; +F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; +F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; +F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; +F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; +F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; +F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; +F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; +F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; +F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; +F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; +F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; +F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; +F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; +F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; +F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; +F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; +F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; +F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; +F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; +F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; +F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; +F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; +F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; +F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; +F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; +F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; +F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; +F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; +F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; +F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; +F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; +F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; +F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; +F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; +F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; +F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; +F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;; +F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; +F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; +F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; +F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; +F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; +F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; +F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; +F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; +F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; +F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; +F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; +F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; +F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; +F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; +F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; +F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; +F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; +F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; +F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; +F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; +F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; +F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; +F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; +F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; +F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; +F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; +F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; +F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; +F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; +F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; +F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;; +F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; +F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;; +F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; +F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; +F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; +F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; +F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; +F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; +F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; +F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; +F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; +F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; +F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; +F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; +F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; +F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; +F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; +F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; +F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; +F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; +F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; +F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; +F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; +F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; +F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; +F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; +F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; +F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; +F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; +F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; +F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; +F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; +F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; +F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; +F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; +F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; +F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; +F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; +F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; +F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; +F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; +F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; +F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; +F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;; +F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; +F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; +FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; +FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; +FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; +FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; +FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; +FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; +FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; +FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; +FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; +FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; +FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; +FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; +FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; +FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; +FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; +FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; +FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; +FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; +FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; +FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; +FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; +FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; +FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; +FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; +FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; +FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; +FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; +FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; +FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; +FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; +FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; +FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;; +FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; +FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; +FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; +FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;; +FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; +FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; +FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; +FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; +FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; +FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; +FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; +FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; +FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; +FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; +FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; +FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; +FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; +FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; +FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; +FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; +FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; +FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; +FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; +FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; +FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; +FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; +FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; +FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; +FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; +FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; +FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; +FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; +FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; +FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; +FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; +FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; +FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; +FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; +FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; +FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; +FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; +FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; +FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; +FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; +FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; +FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; +FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; +FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; +FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; +FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; +FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; +FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; +FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; +FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; +FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; +FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; +FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; +FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; +FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; +FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; +FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; +FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; +FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; +FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; +FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; +FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; +FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; +FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; +FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; +FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; +FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; +FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; +FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; +FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;; +FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;; +FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;; +FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;; +FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;; +FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;; +FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;; +FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;; +FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;; +FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;; +FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;; +FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;; +FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;; +FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;; +FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;; +FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;; +FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;; +FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;; +FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;; +FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;; +FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;; +FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;; +FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;; +FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;; +FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;; +FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;; +FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;; +FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;; +FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;; +FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;; +FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;; +FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;; +FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;; +FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;; +FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;; +FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;; +FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;; +FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;; +FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;; +FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;; +FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;; +FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;; +FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;; +FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;; +FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;; +FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;; +FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;; +FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;; +FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;; +FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;; +FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;; +FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;; +FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;; +FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;; +FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;; +FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;; +FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;; +FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;; +FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;; +FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;; +FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;; +FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;; +FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;; +FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;; +FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;; +FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;; +FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;; +FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;; +FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;; +FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;; +FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;; +FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;; +FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;; +FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;; +FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;; +FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;; +FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;; +FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;; +FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;; +FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;; +FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;; +FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;; +FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;; +FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;; +FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;; +FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;; +FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;; +FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;; +FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;; +FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;; +FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;; +FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;; +FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;; +FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;; +FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;; +FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;; +FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;; +FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;; +FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;; +FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;; +FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;; +FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;; +FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;; +FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;; +FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;; +FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;; +FB00;LATIN SMALL LIGATURE FF;Ll;0;L; 0066 0066;;;;N;;;;; +FB01;LATIN SMALL LIGATURE FI;Ll;0;L; 0066 0069;;;;N;;;;; +FB02;LATIN SMALL LIGATURE FL;Ll;0;L; 0066 006C;;;;N;;;;; +FB03;LATIN SMALL LIGATURE FFI;Ll;0;L; 0066 0066 0069;;;;N;;;;; +FB04;LATIN SMALL LIGATURE FFL;Ll;0;L; 0066 0066 006C;;;;N;;;;; +FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L; 017F 0074;;;;N;;;;; +FB06;LATIN SMALL LIGATURE ST;Ll;0;L; 0073 0074;;;;N;;;;; +FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L; 0574 0576;;;;N;;;;; +FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L; 0574 0565;;;;N;;;;; +FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L; 0574 056B;;;;N;;;;; +FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L; 057E 0576;;;;N;;;;; +FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L; 0574 056D;;;;N;;;;; +FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; +FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; +FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; +FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R; 05E2;;;;N;;;;; +FB21;HEBREW LETTER WIDE ALEF;Lo;0;R; 05D0;;;;N;;;;; +FB22;HEBREW LETTER WIDE DALET;Lo;0;R; 05D3;;;;N;;;;; +FB23;HEBREW LETTER WIDE HE;Lo;0;R; 05D4;;;;N;;;;; +FB24;HEBREW LETTER WIDE KAF;Lo;0;R; 05DB;;;;N;;;;; +FB25;HEBREW LETTER WIDE LAMED;Lo;0;R; 05DC;;;;N;;;;; +FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R; 05DD;;;;N;;;;; +FB27;HEBREW LETTER WIDE RESH;Lo;0;R; 05E8;;;;N;;;;; +FB28;HEBREW LETTER WIDE TAV;Lo;0;R; 05EA;;;;N;;;;; +FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; +FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; +FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; +FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; +FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; +FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; +FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; +FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; +FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; +FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; +FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; +FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; +FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; +FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; +FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; +FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; +FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; +FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; +FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; +FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; +FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; +FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; +FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; +FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; +FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; +FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; +FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; +FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; +FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; +FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; +FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; +FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; +FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; +FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R; 05D0 05DC;;;;N;;;;; +FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL; 0671;;;;N;;;;; +FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL; 0671;;;;N;;;;; +FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL; 067B;;;;N;;;;; +FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL; 067B;;;;N;;;;; +FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL; 067B;;;;N;;;;; +FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL; 067B;;;;N;;;;; +FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL; 067E;;;;N;;;;; +FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL; 067E;;;;N;;;;; +FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL; 067E;;;;N;;;;; +FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL; 067E;;;;N;;;;; +FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL; 0680;;;;N;;;;; +FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL; 0680;;;;N;;;;; +FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL; 0680;;;;N;;;;; +FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL; 0680;;;;N;;;;; +FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL; 067A;;;;N;;;;; +FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL; 067A;;;;N;;;;; +FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL; 067A;;;;N;;;;; +FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL; 067A;;;;N;;;;; +FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL; 067F;;;;N;;;;; +FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL; 067F;;;;N;;;;; +FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL; 067F;;;;N;;;;; +FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL; 067F;;;;N;;;;; +FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL; 0679;;;;N;;;;; +FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL; 0679;;;;N;;;;; +FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL; 0679;;;;N;;;;; +FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL; 0679;;;;N;;;;; +FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL; 06A4;;;;N;;;;; +FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL; 06A4;;;;N;;;;; +FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; +FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; +FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL; 06A6;;;;N;;;;; +FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL; 06A6;;;;N;;;;; +FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; +FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; +FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL; 0684;;;;N;;;;; +FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL; 0684;;;;N;;;;; +FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL; 0684;;;;N;;;;; +FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL; 0684;;;;N;;;;; +FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL; 0683;;;;N;;;;; +FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL; 0683;;;;N;;;;; +FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL; 0683;;;;N;;;;; +FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL; 0683;;;;N;;;;; +FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL; 0686;;;;N;;;;; +FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL; 0686;;;;N;;;;; +FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL; 0686;;;;N;;;;; +FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL; 0686;;;;N;;;;; +FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL; 0687;;;;N;;;;; +FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL; 0687;;;;N;;;;; +FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL; 0687;;;;N;;;;; +FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL; 0687;;;;N;;;;; +FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL; 068D;;;;N;;;;; +FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL; 068D;;;;N;;;;; +FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL; 068C;;;;N;;;;; +FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL; 068C;;;;N;;;;; +FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL; 068E;;;;N;;;;; +FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL; 068E;;;;N;;;;; +FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL; 0688;;;;N;;;;; +FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL; 0688;;;;N;;;;; +FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL; 0698;;;;N;;;;; +FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL; 0698;;;;N;;;;; +FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL; 0691;;;;N;;;;; +FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL; 0691;;;;N;;;;; +FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL; 06A9;;;;N;;;;; +FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL; 06A9;;;;N;;;;; +FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; +FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; +FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL; 06AF;;;;N;;;;; +FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL; 06AF;;;;N;;;;; +FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; +FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; +FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL; 06B3;;;;N;;;;; +FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL; 06B3;;;;N;;;;; +FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; +FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; +FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL; 06B1;;;;N;;;;; +FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL; 06B1;;;;N;;;;; +FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; +FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; +FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL; 06BA;;;;N;;;;; +FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL; 06BA;;;;N;;;;; +FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL; 06BB;;;;N;;;;; +FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL; 06BB;;;;N;;;;; +FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; +FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; +FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL; 06C0;;;;N;;;;; +FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL; 06C0;;;;N;;;;; +FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL; 06C1;;;;N;;;;; +FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL; 06C1;;;;N;;;;; +FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; +FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; +FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL; 06BE;;;;N;;;;; +FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL; 06BE;;;;N;;;;; +FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; +FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; +FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL; 06D2;;;;N;;;;; +FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL; 06D2;;;;N;;;;; +FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 06D3;;;;N;;;;; +FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 06D3;;;;N;;;;; +FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL; 06AD;;;;N;;;;; +FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL; 06AD;;;;N;;;;; +FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; +FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; +FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL; 06C7;;;;N;;;;; +FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL; 06C7;;;;N;;;;; +FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL; 06C6;;;;N;;;;; +FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL; 06C6;;;;N;;;;; +FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL; 06C8;;;;N;;;;; +FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL; 06C8;;;;N;;;;; +FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0677;;;;N;;;;; +FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL; 06CB;;;;N;;;;; +FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL; 06CB;;;;N;;;;; +FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL; 06C5;;;;N;;;;; +FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL; 06C5;;;;N;;;;; +FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL; 06C9;;;;N;;;;; +FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL; 06C9;;;;N;;;;; +FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL; 06D0;;;;N;;;;; +FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL; 06D0;;;;N;;;;; +FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; +FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; +FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0649;;;;N;;;;; +FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL; 0649;;;;N;;;;; +FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL; 0626 0627;;;;N;;;;; +FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL; 0626 0627;;;;N;;;;; +FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; +FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; +FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL; 0626 0648;;;;N;;;;; +FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL; 0626 0648;;;;N;;;;; +FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; +FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; +FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; +FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; +FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; +FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; +FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; +FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; +FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; +FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL; 06CC;;;;N;;;;; +FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL; 06CC;;;;N;;;;; +FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; +FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; +FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL; 0626 062C;;;;N;;;;; +FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL; 0626 062D;;;;N;;;;; +FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL; 0626 0645;;;;N;;;;; +FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL; 0626 064A;;;;N;;;;; +FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0628 062C;;;;N;;;;; +FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL; 0628 062D;;;;N;;;;; +FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0628 062E;;;;N;;;;; +FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0628 0645;;;;N;;;;; +FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0628 0649;;;;N;;;;; +FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL; 0628 064A;;;;N;;;;; +FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062A 062C;;;;N;;;;; +FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL; 062A 062D;;;;N;;;;; +FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL; 062A 062E;;;;N;;;;; +FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062A 0645;;;;N;;;;; +FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062A 0649;;;;N;;;;; +FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL; 062A 064A;;;;N;;;;; +FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062B 062C;;;;N;;;;; +FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062B 0645;;;;N;;;;; +FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062B 0649;;;;N;;;;; +FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL; 062B 064A;;;;N;;;;; +FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL; 062C 062D;;;;N;;;;; +FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 062C 0645;;;;N;;;;; +FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062D 062C;;;;N;;;;; +FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062D 0645;;;;N;;;;; +FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062E 062C;;;;N;;;;; +FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL; 062E 062D;;;;N;;;;; +FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062E 0645;;;;N;;;;; +FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0633 062C;;;;N;;;;; +FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0633 062D;;;;N;;;;; +FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0633 062E;;;;N;;;;; +FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0633 0645;;;;N;;;;; +FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL; 0635 062D;;;;N;;;;; +FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0635 0645;;;;N;;;;; +FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL; 0636 062C;;;;N;;;;; +FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL; 0636 062D;;;;N;;;;; +FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL; 0636 062E;;;;N;;;;; +FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0636 0645;;;;N;;;;; +FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL; 0637 062D;;;;N;;;;; +FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0637 0645;;;;N;;;;; +FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0638 0645;;;;N;;;;; +FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL; 0639 062C;;;;N;;;;; +FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL; 0639 0645;;;;N;;;;; +FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL; 063A 062C;;;;N;;;;; +FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL; 063A 0645;;;;N;;;;; +FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0641 062C;;;;N;;;;; +FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL; 0641 062D;;;;N;;;;; +FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0641 062E;;;;N;;;;; +FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0641 0645;;;;N;;;;; +FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0641 0649;;;;N;;;;; +FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL; 0641 064A;;;;N;;;;; +FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL; 0642 062D;;;;N;;;;; +FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0642 0645;;;;N;;;;; +FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0642 0649;;;;N;;;;; +FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL; 0642 064A;;;;N;;;;; +FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL; 0643 0627;;;;N;;;;; +FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL; 0643 062C;;;;N;;;;; +FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL; 0643 062D;;;;N;;;;; +FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL; 0643 062E;;;;N;;;;; +FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL; 0643 0644;;;;N;;;;; +FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0643 0645;;;;N;;;;; +FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0643 0649;;;;N;;;;; +FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL; 0643 064A;;;;N;;;;; +FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL; 0644 062C;;;;N;;;;; +FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL; 0644 062D;;;;N;;;;; +FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL; 0644 062E;;;;N;;;;; +FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL; 0644 0645;;;;N;;;;; +FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0644 0649;;;;N;;;;; +FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL; 0644 064A;;;;N;;;;; +FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL; 0645 062C;;;;N;;;;; +FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL; 0645 062D;;;;N;;;;; +FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL; 0645 062E;;;;N;;;;; +FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 0645 0645;;;;N;;;;; +FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0645 0649;;;;N;;;;; +FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL; 0645 064A;;;;N;;;;; +FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL; 0646 062C;;;;N;;;;; +FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL; 0646 062D;;;;N;;;;; +FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL; 0646 062E;;;;N;;;;; +FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL; 0646 0645;;;;N;;;;; +FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0646 0649;;;;N;;;;; +FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL; 0646 064A;;;;N;;;;; +FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0647 062C;;;;N;;;;; +FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0647 0645;;;;N;;;;; +FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0647 0649;;;;N;;;;; +FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL; 0647 064A;;;;N;;;;; +FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL; 064A 062C;;;;N;;;;; +FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL; 064A 062D;;;;N;;;;; +FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL; 064A 062E;;;;N;;;;; +FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL; 064A 0645;;;;N;;;;; +FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 064A 0649;;;;N;;;;; +FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL; 064A 064A;;;;N;;;;; +FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0630 0670;;;;N;;;;; +FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0631 0670;;;;N;;;;; +FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0649 0670;;;;N;;;;; +FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C 0651;;;;N;;;;; +FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D 0651;;;;N;;;;; +FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL; 0020 064E 0651;;;;N;;;;; +FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F 0651;;;;N;;;;; +FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL; 0020 0650 0651;;;;N;;;;; +FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0020 0651 0670;;;;N;;;;; +FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL; 0626 0631;;;;N;;;;; +FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL; 0626 0632;;;;N;;;;; +FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; +FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL; 0626 0646;;;;N;;;;; +FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; +FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL; 0626 064A;;;;N;;;;; +FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL; 0628 0631;;;;N;;;;; +FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL; 0628 0632;;;;N;;;;; +FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; +FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL; 0628 0646;;;;N;;;;; +FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0628 0649;;;;N;;;;; +FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL; 0628 064A;;;;N;;;;; +FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL; 062A 0631;;;;N;;;;; +FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL; 062A 0632;;;;N;;;;; +FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; +FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL; 062A 0646;;;;N;;;;; +FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0649;;;;N;;;;; +FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL; 062A 064A;;;;N;;;;; +FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL; 062B 0631;;;;N;;;;; +FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL; 062B 0632;;;;N;;;;; +FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; +FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL; 062B 0646;;;;N;;;;; +FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062B 0649;;;;N;;;;; +FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL; 062B 064A;;;;N;;;;; +FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0641 0649;;;;N;;;;; +FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL; 0641 064A;;;;N;;;;; +FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0642 0649;;;;N;;;;; +FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL; 0642 064A;;;;N;;;;; +FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL; 0643 0627;;;;N;;;;; +FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; +FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; +FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0643 0649;;;;N;;;;; +FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL; 0643 064A;;;;N;;;;; +FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; +FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 0649;;;;N;;;;; +FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL; 0644 064A;;;;N;;;;; +FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL; 0645 0627;;;;N;;;;; +FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; +FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL; 0646 0631;;;;N;;;;; +FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL; 0646 0632;;;;N;;;;; +FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; +FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL; 0646 0646;;;;N;;;;; +FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0649;;;;N;;;;; +FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL; 0646 064A;;;;N;;;;; +FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL; 0649 0670;;;;N;;;;; +FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL; 064A 0631;;;;N;;;;; +FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL; 064A 0632;;;;N;;;;; +FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; +FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL; 064A 0646;;;;N;;;;; +FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 064A 0649;;;;N;;;;; +FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL; 064A 064A;;;;N;;;;; +FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL; 0626 062C;;;;N;;;;; +FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL; 0626 062D;;;;N;;;;; +FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL; 0626 062E;;;;N;;;;; +FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; +FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; +FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL; 0628 062C;;;;N;;;;; +FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL; 0628 062D;;;;N;;;;; +FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL; 0628 062E;;;;N;;;;; +FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; +FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; +FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062C;;;;N;;;;; +FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL; 062A 062D;;;;N;;;;; +FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL; 062A 062E;;;;N;;;;; +FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; +FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; +FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; +FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 062D;;;;N;;;;; +FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062C 0645;;;;N;;;;; +FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062D 062C;;;;N;;;;; +FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062D 0645;;;;N;;;;; +FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 062E 062C;;;;N;;;;; +FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062E 0645;;;;N;;;;; +FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; +FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; +FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; +FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; +FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D;;;;N;;;;; +FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL; 0635 062E;;;;N;;;;; +FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645;;;;N;;;;; +FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL; 0636 062C;;;;N;;;;; +FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL; 0636 062D;;;;N;;;;; +FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL; 0636 062E;;;;N;;;;; +FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL; 0636 0645;;;;N;;;;; +FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL; 0637 062D;;;;N;;;;; +FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; +FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL; 0639 062C;;;;N;;;;; +FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645;;;;N;;;;; +FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL; 063A 062C;;;;N;;;;; +FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL; 063A 0645;;;;N;;;;; +FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL; 0641 062C;;;;N;;;;; +FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL; 0641 062D;;;;N;;;;; +FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL; 0641 062E;;;;N;;;;; +FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 0645;;;;N;;;;; +FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL; 0642 062D;;;;N;;;;; +FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL; 0642 0645;;;;N;;;;; +FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL; 0643 062C;;;;N;;;;; +FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL; 0643 062D;;;;N;;;;; +FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL; 0643 062E;;;;N;;;;; +FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; +FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; +FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C;;;;N;;;;; +FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL; 0644 062D;;;;N;;;;; +FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL; 0644 062E;;;;N;;;;; +FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; +FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL; 0644 0647;;;;N;;;;; +FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062C;;;;N;;;;; +FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062D;;;;N;;;;; +FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062E;;;;N;;;;; +FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; +FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL; 0646 062C;;;;N;;;;; +FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL; 0646 062D;;;;N;;;;; +FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL; 0646 062E;;;;N;;;;; +FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; +FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; +FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL; 0647 062C;;;;N;;;;; +FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645;;;;N;;;;; +FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL; 0647 0670;;;;N;;;;; +FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL; 064A 062C;;;;N;;;;; +FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL; 064A 062D;;;;N;;;;; +FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL; 064A 062E;;;;N;;;;; +FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; +FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; +FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; +FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; +FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; +FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; +FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; +FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; +FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; +FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL; 062B 0647;;;;N;;;;; +FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; +FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; +FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; +FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; +FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; +FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; +FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; +FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; +FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; +FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; +FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; +FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL; 0640 064E 0651;;;;N;;;;; +FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F 0651;;;;N;;;;; +FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL; 0640 0650 0651;;;;N;;;;; +FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0637 0649;;;;N;;;;; +FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL; 0637 064A;;;;N;;;;; +FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0639 0649;;;;N;;;;; +FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL; 0639 064A;;;;N;;;;; +FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 063A 0649;;;;N;;;;; +FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL; 063A 064A;;;;N;;;;; +FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0633 0649;;;;N;;;;; +FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0633 064A;;;;N;;;;; +FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0634 0649;;;;N;;;;; +FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0634 064A;;;;N;;;;; +FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062D 0649;;;;N;;;;; +FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL; 062D 064A;;;;N;;;;; +FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062C 0649;;;;N;;;;; +FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL; 062C 064A;;;;N;;;;; +FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062E 0649;;;;N;;;;; +FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL; 062E 064A;;;;N;;;;; +FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0635 0649;;;;N;;;;; +FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL; 0635 064A;;;;N;;;;; +FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0636 0649;;;;N;;;;; +FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL; 0636 064A;;;;N;;;;; +FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0634 062C;;;;N;;;;; +FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0634 062D;;;;N;;;;; +FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0634 062E;;;;N;;;;; +FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0634 0645;;;;N;;;;; +FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL; 0634 0631;;;;N;;;;; +FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL; 0633 0631;;;;N;;;;; +FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL; 0635 0631;;;;N;;;;; +FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL; 0636 0631;;;;N;;;;; +FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0637 0649;;;;N;;;;; +FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL; 0637 064A;;;;N;;;;; +FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0649;;;;N;;;;; +FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL; 0639 064A;;;;N;;;;; +FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0649;;;;N;;;;; +FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL; 063A 064A;;;;N;;;;; +FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 0649;;;;N;;;;; +FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL; 0633 064A;;;;N;;;;; +FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0634 0649;;;;N;;;;; +FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL; 0634 064A;;;;N;;;;; +FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0649;;;;N;;;;; +FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL; 062D 064A;;;;N;;;;; +FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0649;;;;N;;;;; +FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 064A;;;;N;;;;; +FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062E 0649;;;;N;;;;; +FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL; 062E 064A;;;;N;;;;; +FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0635 0649;;;;N;;;;; +FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL; 0635 064A;;;;N;;;;; +FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 0649;;;;N;;;;; +FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL; 0636 064A;;;;N;;;;; +FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; +FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; +FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; +FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; +FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL; 0634 0631;;;;N;;;;; +FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL; 0633 0631;;;;N;;;;; +FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL; 0635 0631;;;;N;;;;; +FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL; 0636 0631;;;;N;;;;; +FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; +FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; +FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; +FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; +FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; +FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; +FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; +FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; +FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; +FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; +FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; +FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; +FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; +FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; +FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; +FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL; 0627 064B;;;;N;;;;; +FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL; 0627 064B;;;;N;;;;; +FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; +FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; +FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062C 0645;;;;N;;;;; +FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; +FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; +FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062D 0645;;;;N;;;;; +FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062E 0645;;;;N;;;;; +FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 062A 0645 062C;;;;N;;;;; +FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062A 0645 062D;;;;N;;;;; +FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 062A 0645 062E;;;;N;;;;; +FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; +FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; +FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 0645 064A;;;;N;;;;; +FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0645 0649;;;;N;;;;; +FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062D 062C;;;;N;;;;; +FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 062C 062D;;;;N;;;;; +FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062C 0649;;;;N;;;;; +FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; +FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; +FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0633 0645 062C;;;;N;;;;; +FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; +FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; +FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; +FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; +FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; +FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; +FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; +FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0634 062C 064A;;;;N;;;;; +FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; +FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; +FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; +FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; +FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 062D 0649;;;;N;;;;; +FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; +FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; +FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; +FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; +FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645 0645;;;;N;;;;; +FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0637 0645 064A;;;;N;;;;; +FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; +FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; +FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; +FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0645 0649;;;;N;;;;; +FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 063A 0645 0645;;;;N;;;;; +FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 063A 0645 064A;;;;N;;;;; +FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0645 0649;;;;N;;;;; +FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; +FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; +FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; +FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0642 0645 0645;;;;N;;;;; +FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; +FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0644 062D 064A;;;;N;;;;; +FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 062D 0649;;;;N;;;;; +FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; +FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; +FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; +FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; +FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; +FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; +FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062D 062C;;;;N;;;;; +FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062D 0645;;;;N;;;;; +FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062D 064A;;;;N;;;;; +FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062C 062D;;;;N;;;;; +FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062C 0645;;;;N;;;;; +FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062E 062C;;;;N;;;;; +FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062E 0645;;;;N;;;;; +FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062C 062E;;;;N;;;;; +FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0647 0645 062C;;;;N;;;;; +FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645 0645;;;;N;;;;; +FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062D 0645;;;;N;;;;; +FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062D 0649;;;;N;;;;; +FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; +FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; +FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062C 0649;;;;N;;;;; +FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 0645 064A;;;;N;;;;; +FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0645 0649;;;;N;;;;; +FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; +FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; +FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062E 064A;;;;N;;;;; +FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 062C 064A;;;;N;;;;; +FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062C 0649;;;;N;;;;; +FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 062A 062E 064A;;;;N;;;;; +FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062E 0649;;;;N;;;;; +FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 0645 064A;;;;N;;;;; +FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0645 0649;;;;N;;;;; +FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 0645 064A;;;;N;;;;; +FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 062D 0649;;;;N;;;;; +FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0645 0649;;;;N;;;;; +FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062E 0649;;;;N;;;;; +FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0635 062D 064A;;;;N;;;;; +FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0634 062D 064A;;;;N;;;;; +FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0636 062D 064A;;;;N;;;;; +FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 062C 064A;;;;N;;;;; +FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 0645 064A;;;;N;;;;; +FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 064A 062D 064A;;;;N;;;;; +FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 062C 064A;;;;N;;;;; +FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 0645 064A;;;;N;;;;; +FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 0645 064A;;;;N;;;;; +FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0642 0645 064A;;;;N;;;;; +FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0646 062D 064A;;;;N;;;;; +FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; +FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; +FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0639 0645 064A;;;;N;;;;; +FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0643 0645 064A;;;;N;;;;; +FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; +FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062E 064A;;;;N;;;;; +FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; +FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; +FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; +FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; +FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 062C 062D 064A;;;;N;;;;; +FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 062C 064A;;;;N;;;;; +FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 062C 064A;;;;N;;;;; +FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0641 0645 064A;;;;N;;;;; +FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062D 064A;;;;N;;;;; +FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; +FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; +FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; +FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0633 062E 064A;;;;N;;;;; +FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 062C 064A;;;;N;;;;; +FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0635 0644 06D2;;;;N;;;;; +FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0642 0644 06D2;;;;N;;;;; +FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL; 0627 0644 0644 0647;;;;N;;;;; +FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL; 0627 0643 0628 0631;;;;N;;;;; +FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL; 0645 062D 0645 062F;;;;N;;;;; +FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL; 0635 0644 0639 0645;;;;N;;;;; +FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL; 0631 0633 0648 0644;;;;N;;;;; +FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL; 0639 0644 064A 0647;;;;N;;;;; +FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL; 0648 0633 0644 0645;;;;N;;;;; +FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL; 0635 0644 0649;;;;N;;;;; +FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; +FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL; 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; +FDFC;RIAL SIGN;Sc;0;AL; 0631 06CC 0627 0644;;;;N;;;;; +FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; +FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; +FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; +FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; +FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; +FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; +FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; +FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; +FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; +FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; +FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; +FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; +FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; +FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; +FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; +FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; +FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; +FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON; 002C;;;;N;;;;; +FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; +FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;;;;; +FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON; 003A;;;;N;;;;; +FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; +FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; +FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; +FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON; 3016;;;;N;;;;; +FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON; 3017;;;;N;;;;; +FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON; 2026;;;;N;;;;; +FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON; 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; +FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON; 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; +FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON; 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; +FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; +FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; +FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; +FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; +FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; +FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; +FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; +FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; +FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON; 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; +FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON; 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; +FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON; 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; +FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON; 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; +FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON; 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; +FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON; 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; +FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; +FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; +FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON; 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; +FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON; 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; +FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; +FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; +FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;N;;;;; +FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;N;;;;; +FE49;DASHED OVERLINE;Po;0;ON; 203E;;;;N;SPACING DASHED OVERSCORE;;;; +FE4A;CENTRELINE OVERLINE;Po;0;ON; 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; +FE4B;WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING WAVY OVERSCORE;;;; +FE4C;DOUBLE WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; +FE4D;DASHED LOW LINE;Pc;0;ON; 005F;;;;N;SPACING DASHED UNDERSCORE;;;; +FE4E;CENTRELINE LOW LINE;Pc;0;ON; 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; +FE4F;WAVY LOW LINE;Pc;0;ON; 005F;;;;N;SPACING WAVY UNDERSCORE;;;; +FE50;SMALL COMMA;Po;0;CS; 002C;;;;N;;;;; +FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; +FE52;SMALL FULL STOP;Po;0;CS; 002E;;;;N;SMALL PERIOD;;;; +FE54;SMALL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; +FE55;SMALL COLON;Po;0;CS; 003A;;;;N;;;;; +FE56;SMALL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; +FE57;SMALL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; +FE58;SMALL EM DASH;Pd;0;ON; 2014;;;;N;;;;; +FE59;SMALL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;N;SMALL OPENING PARENTHESIS;;;; +FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;N;SMALL CLOSING PARENTHESIS;;;; +FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;N;SMALL OPENING CURLY BRACKET;;;; +FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;; +FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;; +FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;; +FE5F;SMALL NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; +FE60;SMALL AMPERSAND;Po;0;ON; 0026;;;;N;;;;; +FE61;SMALL ASTERISK;Po;0;ON; 002A;;;;N;;;;; +FE62;SMALL PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; +FE63;SMALL HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; +FE64;SMALL LESS-THAN SIGN;Sm;0;ON; 003C;;;;N;;;;; +FE65;SMALL GREATER-THAN SIGN;Sm;0;ON; 003E;;;;N;;;;; +FE66;SMALL EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; +FE68;SMALL REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;SMALL BACKSLASH;;;; +FE69;SMALL DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; +FE6A;SMALL PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; +FE6B;SMALL COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; +FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL; 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; +FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL; 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; +FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; +FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; +FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; +FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL; 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; +FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL; 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; +FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; +FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; +FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL; 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; +FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL; 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; +FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL; 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; +FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL; 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; +FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL; 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; +FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL; 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; +FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL; 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; +FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; +FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; +FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; +FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; +FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; +FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; +FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; +FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; +FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; +FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; +FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; +FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; +FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; +FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; +FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; +FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; +FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; +FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; +FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; +FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; +FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; +FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; +FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; +FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; +FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; +FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; +FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; +FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; +FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; +FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; +FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; +FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; +FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; +FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; +FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; +FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; +FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; +FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; +FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; +FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; +FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; +FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; +FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; +FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; +FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; +FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; +FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; +FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; +FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; +FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; +FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; +FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; +FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; +FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; +FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; +FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; +FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; +FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; +FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; +FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; +FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; +FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; +FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; +FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; +FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; +FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; +FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; +FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; +FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; +FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; +FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; +FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; +FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; +FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; +FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; +FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; +FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; +FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; +FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; +FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; +FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; +FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; +FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; +FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; +FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; +FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; +FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; +FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; +FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; +FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; +FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; +FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; +FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; +FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; +FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; +FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; +FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; +FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; +FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; +FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; +FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; +FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; +FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; +FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; +FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; +FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; +FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; +FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; +FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; +FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; +FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; +FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; +FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; +FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; +FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; +FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; +FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; +FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; +FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; +FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; +FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; +FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; +FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; +FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; +FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; +FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; +FF02;FULLWIDTH QUOTATION MARK;Po;0;ON; 0022;;;;N;;;;; +FF03;FULLWIDTH NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; +FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; +FF05;FULLWIDTH PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; +FF06;FULLWIDTH AMPERSAND;Po;0;ON; 0026;;;;N;;;;; +FF07;FULLWIDTH APOSTROPHE;Po;0;ON; 0027;;;;N;;;;; +FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; +FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; +FF0A;FULLWIDTH ASTERISK;Po;0;ON; 002A;;;;N;;;;; +FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; +FF0C;FULLWIDTH COMMA;Po;0;CS; 002C;;;;N;;;;; +FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; +FF0E;FULLWIDTH FULL STOP;Po;0;CS; 002E;;;;N;FULLWIDTH PERIOD;;;; +FF0F;FULLWIDTH SOLIDUS;Po;0;CS; 002F;;;;N;FULLWIDTH SLASH;;;; +FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +FF11;FULLWIDTH DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +FF12;FULLWIDTH DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +FF13;FULLWIDTH DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +FF16;FULLWIDTH DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +FF19;FULLWIDTH DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +FF1A;FULLWIDTH COLON;Po;0;CS; 003A;;;;N;;;;; +FF1B;FULLWIDTH SEMICOLON;Po;0;ON; 003B;;;;N;;;;; +FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; +FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; +FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; +FF1F;FULLWIDTH QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; +FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; +FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L; 0041;;;;N;;;;FF41; +FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L; 0042;;;;N;;;;FF42; +FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L; 0043;;;;N;;;;FF43; +FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L; 0044;;;;N;;;;FF44; +FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L; 0045;;;;N;;;;FF45; +FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L; 0046;;;;N;;;;FF46; +FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L; 0047;;;;N;;;;FF47; +FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L; 0048;;;;N;;;;FF48; +FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L; 0049;;;;N;;;;FF49; +FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L; 004A;;;;N;;;;FF4A; +FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L; 004B;;;;N;;;;FF4B; +FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L; 004C;;;;N;;;;FF4C; +FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L; 004D;;;;N;;;;FF4D; +FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L; 004E;;;;N;;;;FF4E; +FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L; 004F;;;;N;;;;FF4F; +FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L; 0050;;;;N;;;;FF50; +FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L; 0051;;;;N;;;;FF51; +FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L; 0052;;;;N;;;;FF52; +FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L; 0053;;;;N;;;;FF53; +FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L; 0054;;;;N;;;;FF54; +FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L; 0055;;;;N;;;;FF55; +FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L; 0056;;;;N;;;;FF56; +FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L; 0057;;;;N;;;;FF57; +FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L; 0058;;;;N;;;;FF58; +FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L; 0059;;;;N;;;;FF59; +FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L; 005A;;;;N;;;;FF5A; +FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; +FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;FULLWIDTH BACKSLASH;;;; +FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; +FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON; 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; +FF3F;FULLWIDTH LOW LINE;Pc;0;ON; 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; +FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON; 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; +FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L; 0061;;;;N;;;FF21;;FF21 +FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L; 0062;;;;N;;;FF22;;FF22 +FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L; 0063;;;;N;;;FF23;;FF23 +FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L; 0064;;;;N;;;FF24;;FF24 +FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L; 0065;;;;N;;;FF25;;FF25 +FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L; 0066;;;;N;;;FF26;;FF26 +FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L; 0067;;;;N;;;FF27;;FF27 +FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L; 0068;;;;N;;;FF28;;FF28 +FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;FF29;;FF29 +FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L; 006A;;;;N;;;FF2A;;FF2A +FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L; 006B;;;;N;;;FF2B;;FF2B +FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L; 006C;;;;N;;;FF2C;;FF2C +FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L; 006D;;;;N;;;FF2D;;FF2D +FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;FF2E;;FF2E +FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L; 006F;;;;N;;;FF2F;;FF2F +FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L; 0070;;;;N;;;FF30;;FF30 +FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L; 0071;;;;N;;;FF31;;FF31 +FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L; 0072;;;;N;;;FF32;;FF32 +FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L; 0073;;;;N;;;FF33;;FF33 +FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L; 0074;;;;N;;;FF34;;FF34 +FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L; 0075;;;;N;;;FF35;;FF35 +FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L; 0076;;;;N;;;FF36;;FF36 +FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L; 0077;;;;N;;;FF37;;FF37 +FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L; 0078;;;;N;;;FF38;;FF38 +FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L; 0079;;;;N;;;FF39;;FF39 +FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L; 007A;;;;N;;;FF3A;;FF3A +FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; +FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON; 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; +FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; +FF5E;FULLWIDTH TILDE;Sm;0;ON; 007E;;;;N;FULLWIDTH SPACING TILDE;;;; +FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON; 2985;;;;Y;;*;;; +FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON; 2986;;;;Y;;*;;; +FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; +FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; +FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; +FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; +FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON; 30FB;;;;N;;;;; +FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L; 30F2;;;;N;;;;; +FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L; 30A1;;;;N;;;;; +FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L; 30A3;;;;N;;;;; +FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L; 30A5;;;;N;;;;; +FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L; 30A7;;;;N;;;;; +FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L; 30A9;;;;N;;;;; +FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L; 30E3;;;;N;;;;; +FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L; 30E5;;;;N;;;;; +FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L; 30E7;;;;N;;;;; +FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L; 30C3;;;;N;;;;; +FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L; 30FC;;;;N;;;;; +FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L; 30A2;;;;N;;;;; +FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L; 30A4;;;;N;;;;; +FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L; 30A6;;;;N;;;;; +FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L; 30A8;;;;N;;;;; +FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L; 30AA;;;;N;;;;; +FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L; 30AB;;;;N;;;;; +FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L; 30AD;;;;N;;;;; +FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L; 30AF;;;;N;;;;; +FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L; 30B1;;;;N;;;;; +FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L; 30B3;;;;N;;;;; +FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L; 30B5;;;;N;;;;; +FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L; 30B7;;;;N;;;;; +FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L; 30B9;;;;N;;;;; +FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L; 30BB;;;;N;;;;; +FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L; 30BD;;;;N;;;;; +FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L; 30BF;;;;N;;;;; +FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L; 30C1;;;;N;;;;; +FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L; 30C4;;;;N;;;;; +FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L; 30C6;;;;N;;;;; +FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L; 30C8;;;;N;;;;; +FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L; 30CA;;;;N;;;;; +FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L; 30CB;;;;N;;;;; +FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L; 30CC;;;;N;;;;; +FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L; 30CD;;;;N;;;;; +FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L; 30CE;;;;N;;;;; +FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L; 30CF;;;;N;;;;; +FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L; 30D2;;;;N;;;;; +FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L; 30D5;;;;N;;;;; +FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L; 30D8;;;;N;;;;; +FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L; 30DB;;;;N;;;;; +FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L; 30DE;;;;N;;;;; +FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L; 30DF;;;;N;;;;; +FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L; 30E0;;;;N;;;;; +FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L; 30E1;;;;N;;;;; +FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L; 30E2;;;;N;;;;; +FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L; 30E4;;;;N;;;;; +FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L; 30E6;;;;N;;;;; +FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L; 30E8;;;;N;;;;; +FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L; 30E9;;;;N;;;;; +FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L; 30EA;;;;N;;;;; +FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L; 30EB;;;;N;;;;; +FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L; 30EC;;;;N;;;;; +FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L; 30ED;;;;N;;;;; +FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L; 30EF;;;;N;;;;; +FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L; 30F3;;;;N;;;;; +FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L; 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;; +FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L; 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;; +FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L; 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; +FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L; 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; +FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L; 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; +FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; +FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L; 3134;;;;N;;;;; +FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; +FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; +FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L; 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; +FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L; 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; +FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L; 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; +FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; +FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; +FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; +FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L; 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; +FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; +FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; +FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; +FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L; 3141;;;;N;;;;; +FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L; 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; +FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L; 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; +FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L; 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; +FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L; 3145;;;;N;;;;; +FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L; 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; +FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L; 3147;;;;N;;;;; +FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L; 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; +FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L; 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; +FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L; 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; +FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L; 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; +FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L; 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; +FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L; 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; +FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L; 314E;;;;N;;;;; +FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L; 314F;;;;N;;;;; +FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L; 3150;;;;N;;;;; +FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L; 3151;;;;N;;;;; +FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L; 3152;;;;N;;;;; +FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L; 3153;;;;N;;;;; +FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L; 3154;;;;N;;;;; +FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L; 3155;;;;N;;;;; +FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L; 3156;;;;N;;;;; +FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L; 3157;;;;N;;;;; +FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L; 3158;;;;N;;;;; +FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L; 3159;;;;N;;;;; +FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L; 315A;;;;N;;;;; +FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L; 315B;;;;N;;;;; +FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L; 315C;;;;N;;;;; +FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L; 315D;;;;N;;;;; +FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L; 315E;;;;N;;;;; +FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L; 315F;;;;N;;;;; +FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L; 3160;;;;N;;;;; +FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L; 3161;;;;N;;;;; +FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L; 3162;;;;N;;;;; +FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L; 3163;;;;N;;;;; +FFE0;FULLWIDTH CENT SIGN;Sc;0;ET; 00A2;;;;N;;;;; +FFE1;FULLWIDTH POUND SIGN;Sc;0;ET; 00A3;;;;N;;;;; +FFE2;FULLWIDTH NOT SIGN;Sm;0;ON; 00AC;;;;N;;;;; +FFE3;FULLWIDTH MACRON;Sk;0;ON; 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;; +FFE4;FULLWIDTH BROKEN BAR;So;0;ON; 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; +FFE5;FULLWIDTH YEN SIGN;Sc;0;ET; 00A5;;;;N;;;;; +FFE6;FULLWIDTH WON SIGN;Sc;0;ET; 20A9;;;;N;;;;; +FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON; 2502;;;;N;;;;; +FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON; 2190;;;;N;;;;; +FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON; 2191;;;;N;;;;; +FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON; 2192;;;;N;;;;; +FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON; 2193;;;;N;;;;; +FFED;HALFWIDTH BLACK SQUARE;So;0;ON; 25A0;;;;N;;;;; +FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON; 25CB;;;;N;;;;; +FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;; +FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; +FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; +FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; +10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;; +10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;; +10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;; +10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;; +10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;; +10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;; +10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;; +10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;; +10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;; +1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;; +1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;; +1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;; +1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;; +1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;; +10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;; +10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;; +10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;; +10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;; +10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;; +10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;; +10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;; +10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;; +10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;; +10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;; +1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;; +1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;; +1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;; +1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;; +1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;; +1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;; +10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;; +10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;; +10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;; +10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;; +10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;; +10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;; +10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;; +10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;; +10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;; +1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;; +1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;; +1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;; +1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;; +1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;; +1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;; +10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;; +10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;; +10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;; +10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;; +10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;; +10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;; +10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;; +10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;; +10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;; +10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;; +1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;; +1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;; +1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;; +1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;; +10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;; +10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;; +10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;; +10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;; +10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;; +10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;; +10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;; +10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;; +10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;; +10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;; +1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;; +1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;; +1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;; +1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;; +10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;; +10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;; +10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;; +10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;; +10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;; +10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;; +10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;; +10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;; +10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;; +10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;; +1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;; +1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;; +1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;; +1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;; +10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;; +10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;; +10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;; +10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;; +10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;; +10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;; +10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;; +10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;; +10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;; +10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;; +1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;; +1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;; +1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;; +1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;; +1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;; +1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;; +10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;; +10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;; +10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;; +10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;; +10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;; +10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;; +10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;; +10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;; +10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;; +10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;; +1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;; +1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;; +1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;; +1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;; +1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;; +1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;; +100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;; +100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;; +100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;; +100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;; +100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;; +100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;; +100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;; +100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;; +100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;; +100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;; +100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;; +100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;; +100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;; +100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;; +100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;; +100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;; +100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;; +100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;; +100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;; +100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;; +100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;; +100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;; +100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;; +100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;; +100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;; +100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;; +100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;; +100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;; +100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;; +100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;; +100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;; +100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;; +100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;; +100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;; +100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;; +100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;; +100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;; +100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;; +100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;; +100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;; +100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;; +100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;; +100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;; +100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;; +100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;; +100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;; +100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;; +100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;; +100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;; +100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;; +100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;; +100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;; +100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;; +100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;; +100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;; +100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;; +100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;; +100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;; +100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;; +100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;; +100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;; +100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;; +100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;; +100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;; +100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;; +100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;; +100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;; +100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;; +100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;; +100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;; +100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;; +100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;; +100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;; +100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;; +100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;; +100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;; +100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;; +100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;; +100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;; +100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;; +100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;; +100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;; +100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;; +100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;; +100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;; +100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;; +100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;; +100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;; +100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;; +100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;; +100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;; +10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;; +10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;; +10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;; +10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;; +10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;; +10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;; +1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;; +1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;; +1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;; +1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;; +1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;; +1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;; +10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;; +10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;; +10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;; +10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;; +10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;; +10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;; +10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;; +10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;; +10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;; +10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; +1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;; +1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;; +1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;; +1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;; +1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;; +1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;; +10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;; +10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;; +10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; +10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;; +10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;; +10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;; +10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;; +10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;; +10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;; +10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;; +1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;; +1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; +1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;; +1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;; +1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;; +1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;; +10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;; +10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;; +10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;; +10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;; +10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;; +10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;; +10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;; +1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;; +1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;; +1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; +1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; +1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;; +1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;; +10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;; +10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;; +10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;; +10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;; +10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;; +10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; +10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;; +10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;; +10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;; +1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;; +1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;; +1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;; +1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;; +1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;; +1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;; +10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;; +10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;; +10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;; +10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;; +10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;; +10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;; +10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;; +10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;; +10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;; +10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;; +1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;; +1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;; +1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;; +1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; +1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; +1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;; +10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;; +10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;; +10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;; +10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;; +10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;; +10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;; +10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;; +10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;; +10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;; +10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;; +1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;; +1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;; +1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;; +10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; +10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;; +10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;; +10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;; +10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;; +10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;; +10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;; +10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;; +1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;; +1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;; +1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;; +1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;; +1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;; +1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;; +10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;; +10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;; +10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;; +10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;; +10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;; +10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;; +10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;; +10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;; +10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;; +10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;; +1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; +10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; +10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; +10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; +10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; +10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; +10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; +10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; +10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; +10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; +10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; +1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; +1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; +1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; +1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; +1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; +1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;; +10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; +10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; +10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; +10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; +10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; +10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; +10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; +10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;; +10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; +10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; +1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; +1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;; +1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;; +1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;; +1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;; +10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; +10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; +10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; +10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; +10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; +10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; +10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; +10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; +10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; +10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; +10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; +10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; +10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; +10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; +1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; +1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; +1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; +1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; +1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; +1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; +10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; +10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;; +10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; +10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; +10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; +10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; +10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; +10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; +10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; +10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; +1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;; +10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;; +10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;; +10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;; +10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;; +10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;; +10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;; +10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;; +10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;; +10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;; +10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;; +1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;; +1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;; +1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;; +1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;; +1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;; +1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;; +10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;; +10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;; +10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;; +10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;; +10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;; +10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;; +10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;; +10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;; +10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;; +10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;; +1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;; +1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;; +1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;; +1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;; +1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;; +103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;; +103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;; +103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;; +103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;; +103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;; +103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;; +103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;; +103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;; +103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;; +103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;; +103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;; +103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;; +103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;; +103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;; +103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;; +103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;; +103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;; +103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;; +103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;; +103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;; +103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;; +103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;; +103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;; +103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;; +103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;; +103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;; +103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;; +103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;; +103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;; +103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;; +103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;; +103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;; +103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;; +103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;; +103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;; +103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;; +103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;; +103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;; +103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;; +103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;; +103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;; +103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;; +103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;; +103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;; +103D0;OLD PERSIAN WORD DIVIDER;So;0;L;;;;;N;;;;; +103D1;OLD PERSIAN NUMBER ONE;Nl;0;ON;;;;1;N;;;;; +103D2;OLD PERSIAN NUMBER TWO;Nl;0;ON;;;;2;N;;;;; +103D3;OLD PERSIAN NUMBER TEN;Nl;0;ON;;;;10;N;;;;; +103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;ON;;;;20;N;;;;; +103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;ON;;;;100;N;;;;; +10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; +10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; +10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; +10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; +10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; +10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; +10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; +10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; +10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; +10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; +1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; +1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; +1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; +1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; +1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; +1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; +10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; +10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; +10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; +10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; +10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; +10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; +10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; +10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; +10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; +10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; +1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; +1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; +1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; +1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; +1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; +1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; +10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; +10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; +10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; +10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; +10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; +10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; +10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E; +10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F; +10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 +10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 +1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 +1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 +1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 +1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 +1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 +1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 +10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 +10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 +10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A +10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B +10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C +10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D +10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E +10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F +10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 +10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 +1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 +1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 +1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 +1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 +1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 +1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 +10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 +10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 +10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A +10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B +10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C +10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D +10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E +10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F +10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 +10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 +1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 +1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 +1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 +1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 +1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426 +1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427 +10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;; +10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;; +10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;; +10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;; +10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;; +10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;; +10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;; +10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;; +10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;; +10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;; +1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;; +1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;; +1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;; +1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;; +1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;; +1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;; +10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;; +10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;; +10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;; +10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;; +10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;; +10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;; +10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;; +10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;; +10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;; +10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;; +1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;; +1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;; +1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;; +1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;; +1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;; +1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;; +10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;; +10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;; +10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;; +10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;; +10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;; +10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;; +10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;; +10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;; +10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;; +10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;; +1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;; +1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;; +1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;; +1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;; +1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;; +1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;; +10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;; +10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;; +10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;; +10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;; +10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;; +10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;; +10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;; +10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;; +10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;; +10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;; +1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;; +1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;; +1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;; +1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;; +1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;; +1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;; +10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;; +10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;; +10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;; +10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;; +10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;; +10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;; +10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;; +10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;; +10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;; +10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;; +1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;; +1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;; +1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;; +1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;; +104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; +10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; +10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; +10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;; +10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;; +10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;; +10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;; +1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;; +1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;; +1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;; +1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;; +1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;; +1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;; +10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;; +10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;; +10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;; +10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;; +10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;; +10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;; +10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;; +10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;; +10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;; +10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;; +1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;; +1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;; +1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;; +1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;; +1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;; +1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;; +10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;; +10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;; +10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;; +10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;; +10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;; +10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;; +10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;; +10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;; +10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;; +10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;; +1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;; +1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;; +1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;; +1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;; +1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;; +1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;; +10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;; +10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;; +10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;; +10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;; +10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;; +10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;; +10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;; +10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;; +1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;; +1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;; +10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; +10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; +10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; +10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; +10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;; +10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;; +10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;; +10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;; +10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;; +10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;; +10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;; +10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;; +10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;; +10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;; +10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;; +10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;; +10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;; +10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;; +10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;; +10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;; +10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;; +10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;; +10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;; +10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;; +10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;; +10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;; +10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;; +10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;; +10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;; +10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;; +10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;; +10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;; +10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;; +10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;; +10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;; +10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;; +10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;; +10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;; +10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;; +10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;; +10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; +10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;; +10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;; +10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;; +10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;; +10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;; +10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;; +10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;; +10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; +10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;; +10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;; +10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;; +10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;; +10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;; +10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;; +10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;; +10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;; +10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;; +1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; +1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; +1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; +1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; +1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; +1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; +1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; +1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; +1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; +1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; +1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; +1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; +1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; +1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; +1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; +1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; +1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; +1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; +1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; +1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; +1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; +1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; +1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; +1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; +1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; +1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; +1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; +1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; +1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; +1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; +1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; +1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; +1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; +1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; +1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; +1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; +1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; +1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; +1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; +1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; +1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; +1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; +1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; +1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; +1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; +1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; +1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; +1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; +1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; +1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; +1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; +1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; +1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; +1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; +1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; +1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; +1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; +1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; +1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; +1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; +1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; +1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; +1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; +1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; +1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; +1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; +1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; +1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; +1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; +1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; +1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; +1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; +1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; +1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; +1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; +1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; +1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; +1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; +1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; +1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; +1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; +1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; +1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; +1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; +1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; +1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; +1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; +1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; +1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; +1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; +1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; +1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; +1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; +1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; +1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; +1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; +1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; +1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; +1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; +1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; +1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; +1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; +1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; +1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; +1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; +1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; +1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; +1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; +1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; +1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; +1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; +1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; +1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; +1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; +1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; +1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; +1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; +1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; +1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; +1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; +1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; +1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; +1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; +1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; +1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; +1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; +1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; +1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; +1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; +1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; +1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; +1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; +1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; +1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; +1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; +1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; +1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; +1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; +1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; +1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; +1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; +1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; +1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; +1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; +1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; +1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; +1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; +1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; +1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; +1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; +1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; +1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; +1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; +1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; +1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; +1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; +1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; +1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; +1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; +1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; +1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; +1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; +1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; +1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; +1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; +1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; +1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; +1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; +1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; +1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; +1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; +1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; +1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; +1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; +1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; +1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; +1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; +1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; +1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; +1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; +1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; +1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; +1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; +1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; +1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; +1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; +1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; +1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; +1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; +1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; +1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; +1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; +1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; +1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; +1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; +1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; +1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; +1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; +1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; +1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; +1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; +1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; +1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; +1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; +1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; +1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; +1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; +1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; +1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; +1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; +1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; +1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; +1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; +1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; +1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; +1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; +1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; +1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; +1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; +1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; +1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; +1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; +1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; +1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; +1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; +1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; +1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; +1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; +1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; +1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; +1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; +1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; +1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; +1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; +1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; +1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; +1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; +1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; +1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; +1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; +1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; +1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; +1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; +1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; +1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; +1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; +1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; +1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; +1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; +1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; +1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; +1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; +1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; +1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; +1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; +1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; +1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; +1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; +1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; +1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; +1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; +1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; +1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; +1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; +1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; +1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; +1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; +1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; +1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; +1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; +1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; +1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; +1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; +1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; +1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; +1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; +1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; +1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; +1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; +1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; +1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; +1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; +1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; +1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; +1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; +1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; +1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; +1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; +1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; +1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; +1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; +1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; +1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; +1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; +1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; +1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; +1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; +1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; +1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; +1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; +1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; +1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; +1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; +1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; +1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; +1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; +1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; +1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; +1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; +1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; +1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; +1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; +1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; +1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; +1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; +1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; +1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; +1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; +1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; +1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; +1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; +1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; +1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; +1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; +1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; +1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; +1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; +1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; +1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; +1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; +1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; +1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; +1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; +1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; +1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; +1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; +1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; +1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; +1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; +1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; +1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; +1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; +1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; +1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; +1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; +1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; +1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; +1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; +1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; +1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; +1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; +1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; +1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; +1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; +1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; +1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; +1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; +1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; +1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; +1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; +1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; +1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; +1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; +1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; +1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; +1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; +1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; +1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; +1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; +1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; +1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; +1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; +1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; +1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; +1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; +1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; +1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; +1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; +1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; +1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; +1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; +1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; +1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; +1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; +1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; +1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; +1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; +1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; +1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; +1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; +1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; +1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; +1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; +1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; +1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; +1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; +1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; +1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; +1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; +1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; +1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; +1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; +1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; +1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; +1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; +1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; +1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; +1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; +1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; +1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; +1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; +1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; +1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; +1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; +1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; +1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; +1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; +1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; +1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; +1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; +1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; +1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; +1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; +1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; +1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; +1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; +1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; +1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; +1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; +1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; +1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; +1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; +1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; +1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; +1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; +1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; +1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; +1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; +1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; +1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; +1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; +1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; +1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; +1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; +1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; +1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; +1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; +1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; +1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; +1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; +1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; +1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; +1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; +1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; +1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;; +1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; +1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; +1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;; +1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;; +1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; +1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; +1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; +1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; +1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;; +1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;; +1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; +1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; +1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; +1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;; +1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;; +1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;; +1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; +1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; +1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; +1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; +1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; +1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; +1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; +1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; +1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; +1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; +1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; +1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; +1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; +1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; +1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; +1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; +1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; +1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; +1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; +1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; +1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; +1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; +1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;; +1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;; +1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;; +1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;; +1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;; +1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;; +1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;; +1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;; +1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;; +1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;; +1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;; +1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;; +1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;; +1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;; +1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;; +1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;; +1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;; +1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; +1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; +1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; +1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; +1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; +1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;; +1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; +1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; +1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; +1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;; +1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;; +1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;; +1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;; +1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;; +1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; +1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;; +1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;; +1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;; +1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;; +1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;; +1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;; +1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;; +1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; +1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;; +1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;; +1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;; +1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;; +1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; +1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;; +1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;; +1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;; +1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;; +1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; +1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; +1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;; +1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;; +1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;; +1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;; +1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;; +1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;; +1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;; +1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;; +1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;; +1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;; +1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;; +1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;; +1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;; +1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;; +1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;; +1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;; +1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;; +1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;; +1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;; +1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;; +1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;; +1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;; +1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;; +1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;; +1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;; +1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;; +1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;; +1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;; +1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;; +1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;; +1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;; +1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;; +1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;; +1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;; +1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;; +1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;; +1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;; +1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;; +1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;; +1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;; +1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;; +1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;; +1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;; +1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;; +1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;; +1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;; +1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;; +1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;; +1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;; +1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;; +1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;; +1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;; +1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;; +1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;; +1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;; +1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;; +1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;; +1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;; +1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;; +1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;; +1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;; +1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;; +1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L; 0041;;;;N;;;;; +1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L; 0042;;;;N;;;;; +1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L; 0043;;;;N;;;;; +1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L; 0044;;;;N;;;;; +1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L; 0045;;;;N;;;;; +1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L; 0046;;;;N;;;;; +1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L; 0047;;;;N;;;;; +1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L; 0048;;;;N;;;;; +1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L; 0049;;;;N;;;;; +1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L; 004A;;;;N;;;;; +1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L; 004B;;;;N;;;;; +1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L; 004C;;;;N;;;;; +1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L; 004D;;;;N;;;;; +1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L; 004E;;;;N;;;;; +1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L; 004F;;;;N;;;;; +1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L; 0050;;;;N;;;;; +1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; +1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L; 0052;;;;N;;;;; +1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L; 0053;;;;N;;;;; +1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L; 0054;;;;N;;;;; +1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L; 0055;;;;N;;;;; +1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L; 0056;;;;N;;;;; +1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L; 0057;;;;N;;;;; +1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L; 0058;;;;N;;;;; +1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; +1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; +1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L; 0061;;;;N;;;;; +1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L; 0062;;;;N;;;;; +1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L; 0063;;;;N;;;;; +1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L; 0064;;;;N;;;;; +1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L; 0065;;;;N;;;;; +1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L; 0066;;;;N;;;;; +1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L; 0067;;;;N;;;;; +1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L; 0068;;;;N;;;;; +1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L; 0069;;;;N;;;;; +1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L; 006A;;;;N;;;;; +1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L; 006B;;;;N;;;;; +1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L; 006C;;;;N;;;;; +1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L; 006D;;;;N;;;;; +1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L; 006E;;;;N;;;;; +1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L; 006F;;;;N;;;;; +1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L; 0070;;;;N;;;;; +1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L; 0071;;;;N;;;;; +1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L; 0072;;;;N;;;;; +1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L; 0073;;;;N;;;;; +1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L; 0074;;;;N;;;;; +1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L; 0075;;;;N;;;;; +1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L; 0076;;;;N;;;;; +1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L; 0077;;;;N;;;;; +1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L; 0078;;;;N;;;;; +1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L; 0079;;;;N;;;;; +1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L; 007A;;;;N;;;;; +1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L; 0131;;;;N;;;;; +1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L; 0237;;;;N;;;;; +1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; +1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; +1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; +1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; +1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; +1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; +1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; +1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; +1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; +1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; +1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; +1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; +1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; +1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; +1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; +1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; +1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; +1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; +1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; +1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; +1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; +1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; +1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; +1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; +1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; +1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; +1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; +1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; +1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; +1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; +1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; +1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; +1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; +1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; +1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; +1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; +1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; +1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; +1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; +1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; +1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; +1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; +1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; +1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; +1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; +1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; +1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; +1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; +1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; +1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; +1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; +1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; +1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; +1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; +1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; +1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;N;;;;; +1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; +1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; +1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; +1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; +1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; +1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; +1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +20000;;Lo;0;L;;;;;N;;;;; +2A6D6;;Lo;0;L;;;;;N;;;;; +2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; +2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; +2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; +2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; +2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; +2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; +2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; +2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; +2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; +2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; +2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; +2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; +2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; +2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; +2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; +2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; +2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; +2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; +2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; +2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; +2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; +2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; +2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; +2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; +2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; +2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; +2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; +2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; +2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; +2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; +2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; +2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; +2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; +2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; +2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; +2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; +2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; +2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; +2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; +2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; +2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; +2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; +2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; +2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; +2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; +2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; +2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; +2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; +2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; +2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; +2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; +2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; +2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; +2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; +2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; +2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; +2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; +2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; +2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; +2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; +2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; +2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; +2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; +2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; +2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; +2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; +2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; +2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; +2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; +2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; +2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; +2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; +2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; +2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; +2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; +2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; +2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; +2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; +2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; +2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; +2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; +2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; +2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; +2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; +2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; +2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; +2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; +2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; +2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; +2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; +2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; +2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; +2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; +2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; +2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; +2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; +2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; +2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; +2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; +2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; +2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; +2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; +2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; +2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; +2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;; +2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; +2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; +2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; +2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; +2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; +2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; +2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; +2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; +2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; +2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; +2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; +2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;; +2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; +2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; +2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; +2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; +2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; +2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; +2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; +2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; +2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; +2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; +2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; +2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; +2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; +2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; +2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; +2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; +2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; +2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; +2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; +2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; +2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; +2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; +2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; +2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; +2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; +2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; +2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; +2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;; +2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; +2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; +2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; +2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; +2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; +2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; +2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; +2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; +2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; +2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; +2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; +2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; +2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; +2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; +2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; +2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; +2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; +2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; +2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; +2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; +2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; +2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; +2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; +2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; +2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; +2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; +2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; +2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; +2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; +2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; +2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; +2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; +2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; +2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; +2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; +2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; +2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; +2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; +2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; +2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; +2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; +2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; +2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; +2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; +2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; +2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; +2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; +2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; +2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; +2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; +2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; +2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; +2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; +2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; +2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; +2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; +2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; +2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; +2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; +2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; +2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; +2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; +2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; +2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; +2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; +2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; +2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; +2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; +2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; +2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; +2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; +2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; +2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; +2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; +2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; +2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; +2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; +2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; +2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; +2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; +2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; +2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; +2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; +2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; +2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; +2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; +2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; +2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; +2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; +2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; +2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; +2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; +2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; +2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; +2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; +2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; +2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; +2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; +2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; +2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; +2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; +2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; +2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; +2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; +2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; +2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; +2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; +2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; +2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; +2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; +2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; +2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; +2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; +2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; +2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; +2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; +2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; +2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; +2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; +2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; +2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; +2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; +2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; +2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; +2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; +2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; +2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; +2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; +2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; +2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; +2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; +2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; +2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; +2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; +2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; +2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; +2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; +2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; +2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; +2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; +2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; +2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; +2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;; +2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; +2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; +2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; +2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; +2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; +2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; +2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; +2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; +2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; +2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; +2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; +2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; +2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; +2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; +2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; +2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; +2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; +2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; +2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; +2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; +2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; +2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; +2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; +2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; +2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; +2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; +2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; +2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; +2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; +2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; +2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; +2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; +2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; +2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; +2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; +2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; +2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; +2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; +2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; +2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; +2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; +2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; +2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; +2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; +2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; +2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; +2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; +2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; +2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; +2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; +2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; +2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; +2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; +2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; +2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; +2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; +2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; +2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; +2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; +2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; +2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; +2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; +2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; +2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;; +2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; +2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; +2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; +2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; +2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; +2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; +2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; +2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; +2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; +2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; +2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; +2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; +2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; +2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; +2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; +2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; +2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; +2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; +2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; +2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; +2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; +2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; +2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; +2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; +2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; +2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; +2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; +2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; +2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; +2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; +2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; +2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; +2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; +2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; +2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; +2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; +2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; +2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; +2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; +2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; +2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; +2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; +2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; +2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; +2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; +2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; +2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; +2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; +2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; +2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; +2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; +2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; +2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; +2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; +2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; +2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; +2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; +2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; +2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; +2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; +2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; +2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; +2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; +2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; +2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; +2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; +2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; +2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; +2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; +2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; +2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; +2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; +2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; +2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; +2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; +2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; +2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; +2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; +2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; +2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; +2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; +2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; +2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; +2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; +2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; +2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; +2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; +2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; +2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; +2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; +2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; +2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; +2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; +2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; +2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; +2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;; +2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; +2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; +2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; +2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; +2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; +2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; +2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; +2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; +2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; +2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; +2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; +2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; +2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; +2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; +2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; +2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; +2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; +2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; +2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; +2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; +2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; +2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; +2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; +2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; +2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; +2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; +2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; +2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; +2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; +2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; +2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; +2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; +2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; +2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; +2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; +2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; +2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; +2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; +2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; +2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; +2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; +2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; +2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; +2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; +2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; +2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; +2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; +2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; +2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; +2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; +2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; +2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; +2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; +2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; +2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; +2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; +2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; +2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; +2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; +2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; +2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; +2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; +2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; +2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; +2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; +2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; +2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; +2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; +2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; +2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; +2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; +2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; +2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; +2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; +2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; +2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; +2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; +2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; +2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; +2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; +2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; +2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; +2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; +2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; +2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; +2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; +2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; +2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; +2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; +2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; +2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; +2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; +2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; +2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; +E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; +E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; +E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; +E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;; +E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;; +E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;; +E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;; +E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;; +E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;; +E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;; +E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;; +E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;; +E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;; +E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;; +E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;; +E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;; +E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;; +E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;; +E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;; +E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;; +E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;; +E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;; +E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;; +E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;; +E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;; +E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;; +E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;; +E003A;TAG COLON;Cf;0;BN;;;;;N;;;;; +E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;; +E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;; +E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;; +E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;; +E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;; +E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;; +E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;; +E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;; +E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;; +E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;; +E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;; +E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;; +E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;; +E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;; +E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;; +E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;; +E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;; +E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;; +E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;; +E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;; +E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;; +E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;; +E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;; +E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;; +E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;; +E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;; +E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;; +E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;; +E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;; +E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;; +E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;; +E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;; +E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; +E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;; +E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; +E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;; +E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;; +E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;; +E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;; +E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;; +E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;; +E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;; +E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;; +E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;; +E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;; +E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;; +E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;; +E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;; +E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;; +E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;; +E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;; +E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;; +E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;; +E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;; +E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;; +E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;; +E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;; +E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;; +E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;; +E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;; +E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;; +E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;; +E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;; +E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;; +E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; +E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;; +E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; +E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;; +E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;; +E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;; +E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;; +E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;; +E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;; +E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;; +E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;; +E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;; +E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;; +E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;; +E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;; +E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;; +E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;; +E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;; +E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;; +E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;; +E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;; +E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;; +E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;; +E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;; +E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;; +E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;; +E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;; +E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;; +E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;; +E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;; +E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;; +E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;; +E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;; +E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;; +E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;; +E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;; +E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;; +E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;; +E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;; +E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;; +E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;; +E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;; +E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;; +E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;; +E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;; +E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;; +E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;; +E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;; +E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;; +E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;; +E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;; +E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;; +E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;; +E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;; +E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;; +E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;; +E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;; +E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;; +E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;; +E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;; +E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;; +E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;; +E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;; +E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;; +E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;; +E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;; +E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;; +E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;; +E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;; +E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;; +E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;; +E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;; +E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;; +E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;; +E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;; +E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;; +E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;; +E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;; +E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;; +E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;; +E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;; +E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;; +E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;; +E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;; +E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;; +E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;; +E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;; +E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;; +E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;; +E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;; +E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;; +E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;; +E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;; +E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;; +E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;; +E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;; +E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;; +E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;; +E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;; +E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;; +E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;; +E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;; +E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;; +E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;; +E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;; +E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;; +E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;; +E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;; +E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;; +E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;; +E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;; +E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;; +E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;; +E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;; +E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;; +E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;; +E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;; +E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;; +E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;; +E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;; +E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;; +E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;; +E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;; +E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;; +E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;; +E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;; +E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;; +E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;; +E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;; +E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;; +E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;; +E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;; +E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;; +E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;; +E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;; +E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;; +E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;; +E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;; +E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;; +E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;; +E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;; +E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;; +E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;; +E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;; +E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;; +E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;; +E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;; +E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;; +E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;; +E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;; +E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;; +E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;; +E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;; +E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;; +E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;; +E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;; +E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;; +E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;; +E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;; +E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;; +E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;; +E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;; +E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;; +E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;; +E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;; +E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;; +E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;; +E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;; +E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;; +E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;; +E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;; +E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;; +E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;; +E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;; +E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;; +E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;; +E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;; +E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;; +E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;; +E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;; +E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;; +E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;; +E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;; +E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;; +E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;; +E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;; +E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;; +E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;; +E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;; +E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;; +E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;; +E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;; +E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;; +E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;; +E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;; +E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;; +E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;; +E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;; +E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;; +E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;; +E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;; +E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;; +E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;; +E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;; +E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;; +E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;; +E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;; +E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;; +E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;; +E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;; +E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;; +E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;; +E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;; +E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;; +E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;; +E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;; +E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;; +E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;; +E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;; +E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;; +E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;; +E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;; +E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;; +E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;; +E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;; +E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;; +E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;; +E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;; +E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;; +E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;; +E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;; +E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;; +E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;; +E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;; +E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;; +E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;; +E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;; +E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;; +E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;; +E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;; +E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;; +E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;; +E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;; +E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;; +E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;; +F0000;;Co;0;L;;;;;N;;;;; +FFFFD;;Co;0;L;;;;;N;;;;; +100000;;Co;0;L;;;;;N;;;;; +10FFFD;;Co;0;L;;;;;N;;;;; Added: pypy/branch/non-fake-unicode/pypy/module/unicodedata/__init__.py ============================================================================== --- (empty file) +++ pypy/branch/non-fake-unicode/pypy/module/unicodedata/__init__.py Thu Apr 28 15:38:16 2005 @@ -0,0 +1,20 @@ +from pypy.interpreter.lazymodule import LazyModule + +class Module(LazyModule): + appleveldefs = { + } + interpleveldefs = { + 'lookup' : 'functions.lookup', + 'name' : 'functions.name', + 'decimal' : 'functions.decimal', + 'digit' : 'functions.digit', + 'numeric' : 'functions.numeric', + 'category' : 'functions.category', + 'bidirectional' : 'functions.bidirectional', + 'combining' : 'functions.combining', + 'mirrored' : 'functions.mirrored', + 'decomposition' : 'functions.decomposition', + 'normalize' : 'functions.normalize', + 'unidata_version' : 'space.wrap(unicodedb.version)', + '__doc__' : "space.wrap('unicode character database')", + } Added: pypy/branch/non-fake-unicode/pypy/module/unicodedata/functions.py ============================================================================== --- (empty file) +++ pypy/branch/non-fake-unicode/pypy/module/unicodedata/functions.py Thu Apr 28 15:38:16 2005 @@ -0,0 +1,101 @@ +""" +Implementation of the interpreter-level functions in the module unicodedata. +""" +from pypy.interpreter.gateway import NoneNotWrapped +from pypy.module.unicodedata import unicodedb +from pypy.interpreter.error import OperationError + +def unichr_to_code_w(space, w_unichr): + if not space.is_true(space.isinstance(w_unichr, space.w_unicode)): + raise TypeError, 'argument 1 must be unicode' + if not space.int_w(space.len(w_unichr)) == 1: + raise TypeError, 'need a single Unicode character as parameter' + return space.int_w(space.ord(w_unichr)) + +def lookup(space, w_name): + name = space.str_w(w_name) + try: + code = unicodedb.charcodeByName[name] + except KeyError: + msg = space.mod(space.wrap("undefined character name '%s'"), w_name) + raise OperationError(space.w_KeyError, msg) + return space.call_function(space.getattr(space.w_builtin, 'unichr'), + space.wrap(code)) + +def name(space, w_unichr, w_default=NoneNotWrapped): + code = unichr_to_code_w(space, w_unichr) + try: + name = unicodedb.charnameByCode[code] + except KeyError: + if w_default is not None: + return w_default + raise OperationError(space.w_ValueError, space.wrap('no such name')) + return space.wrap(name) + + +def decimal(space, w_unichr, default=NoneNotWrapped): + code = unichr_to_code_w(space, w_unichr) + try: + return space.wrap(unicodedb.decimalValue[code]) + except KeyError: + pass + if w_default is not None: + return w_default + raise OperationError(space.w_ValueError, space.wrap('not a decimal')) + +def digit(space, w_unichr, w_default=NoneNotWrapped): + code = unichr_to_code_w(space, w_unichr) + try: + return space.wrap(unicodedb.digitValue[code]) + except KeyError: + pass + if w_default is not None: + return w_default + raise OperationError(space.w_ValueError, space.wrap('not a digit')) + +def numeric(space, w_unichr, w_default=NoneNotWrapped): + code = unichr_to_code_w(space, w_unichr) + try: + return space.wrap(unicodedb.numericValue[code]) + except KeyError: + pass + if w_default is not None: + return w_default + raise OperationError(space.w_ValueError, + space.wrap('not a numeric character')) + +def category(space, w_unichr): + code = unichr_to_code_w(space, w_unichr) + return space.wrap(unicodedb.category.get(code, 'Cn')) + +def bidirectional(space, w_unichr): + code = unichr_to_code_w(space, w_unichr) + return space.wrap(unicodedb.bidirectional.get(code, '')) + +def combining(space, w_unichr): + code = unichr_to_code_w(space, w_unichr) + return space.wrap(unicodedb.combining(code, 0) + +def mirrored(space, w_unichr): + code = unichr_to_code_w(space, w_unichr) + return space.wrap(unicodedb.mirrored(code, 0) + + +def decomposition(space, w_unichr): + code = unichr_to_code_w(space, w_unichr) + return space.wrap('') + +def normalize(space, w_form, w_unistr): + form = space.str_w(w_form) + if not space.is_true(space.isinstance(w_unistr, space.w_unicode)): + raise TypeError, 'argument 2 must be unicode' + if form == 'NFC': + return w_unistr + if form == 'NFD': + return w_unistr + if form == 'NFKC': + return w_unistr + if form == 'NFKD': + return w_unistr + raise OperationError(space.w_ValueError, + space.wrap('invalid normalization form')) Added: pypy/branch/non-fake-unicode/pypy/module/unicodedata/generateUnicodedb.py ============================================================================== --- (empty file) +++ pypy/branch/non-fake-unicode/pypy/module/unicodedata/generateUnicodedb.py Thu Apr 28 15:38:16 2005 @@ -0,0 +1,92 @@ +#!/usr/bin/env python + +import sys +import __future__ + +unidata_version = sys.argv[1] + +decimal = {} +digit = {} +number = {} +uppercase = {} +lowercase = {} +titlecase = {} +category = {} +decomp = {} +bidir = {} +combining = {} +mirrored = {} +decomp = {} +name = {} + +def printDict(name, dictionary): + keys = dictionary.keys() + keys.sort() + print name, '= {' + for key in keys: + print ' %r : %r,' % (key, dictionary[key]) + print '}' + +for line in sys.stdin: + line = line.split('#', 1)[0].strip() + if not line: + continue + (code, _name, cat, _combine, _bidir, _decomp, + _decimal, _digit, _number, _mirrord, unicode1_name, comment, + _uppercase, _lowercase, _titlecase) = [ v.strip() for v in line.split(';') ] + code = int(code, 16) + category[code] = cat + + name[code] = _name + if _combine: + combine = int(_combine) + if combine != 0: + combining[code] = combine + + + if _decimal: + decimal[code] = int(_decimal) + if _digit: + d = digit[code] = int(_digit) + if _number: + number[code] = float(eval(compile(_number, '-', 'eval', __future__.CO_FUTURE_DIVISION, 1))) + + if _uppercase: + uppercase[code] = int(_uppercase, 16) + if _lowercase: + lowercase[code] = int(_lowercase, 16) + if _titlecase: + titlecase[code] = int(_titlecase, 16) + + +print '# UNICODE CHARACTER DATABASE' +print +print 'version = %r'%unidata_version +print +printDict('charnameByCode', name) +print +printDict('charcodeByName', dict([(v, k) for k, v in name.iteritems()])) +print +printDict('decimalValue', decimal) +print +printDict('digitValue', digit) +print +printDict('numericValue', number) +print +printDict('category', category) +print +printDict('bidirectional', bidir) +print +printDict('combining', combining) +print +printDict('mirrored', mirrored) +print +printDict('decomposition', decomp) +print +printDict('uppercase', uppercase) +print +printDict('lowercase', lowercase) +print +printDict('titlecase', titlecase) +print + Added: pypy/branch/non-fake-unicode/pypy/module/unicodedata/unicodedb.py ============================================================================== --- (empty file) +++ pypy/branch/non-fake-unicode/pypy/module/unicodedata/unicodedb.py Thu Apr 28 15:38:16 2005 @@ -0,0 +1,45328 @@ +# UNICODE CHARACTER DATABASE + +version = '3.2.0' + +charnameByCode = { + 0 : '', + 1 : '', + 2 : '', + 3 : '', + 4 : '', + 5 : '', + 6 : '', + 7 : '', + 8 : '', + 9 : '', + 10 : '', + 11 : '', + 12 : '', + 13 : '', + 14 : '', + 15 : '', + 16 : '', + 17 : '', + 18 : '', + 19 : '', + 20 : '', + 21 : '', + 22 : '', + 23 : '', + 24 : '', + 25 : '', + 26 : '', + 27 : '', + 28 : '', + 29 : '', + 30 : '', + 31 : '', + 32 : 'SPACE', + 33 : 'EXCLAMATION MARK', + 34 : 'QUOTATION MARK', + 35 : 'NUMBER SIGN', + 36 : 'DOLLAR SIGN', + 37 : 'PERCENT SIGN', + 38 : 'AMPERSAND', + 39 : 'APOSTROPHE', + 40 : 'LEFT PARENTHESIS', + 41 : 'RIGHT PARENTHESIS', + 42 : 'ASTERISK', + 43 : 'PLUS SIGN', + 44 : 'COMMA', + 45 : 'HYPHEN-MINUS', + 46 : 'FULL STOP', + 47 : 'SOLIDUS', + 48 : 'DIGIT ZERO', + 49 : 'DIGIT ONE', + 50 : 'DIGIT TWO', + 51 : 'DIGIT THREE', + 52 : 'DIGIT FOUR', + 53 : 'DIGIT FIVE', + 54 : 'DIGIT SIX', + 55 : 'DIGIT SEVEN', + 56 : 'DIGIT EIGHT', + 57 : 'DIGIT NINE', + 58 : 'COLON', + 59 : 'SEMICOLON', + 60 : 'LESS-THAN SIGN', + 61 : 'EQUALS SIGN', + 62 : 'GREATER-THAN SIGN', + 63 : 'QUESTION MARK', + 64 : 'COMMERCIAL AT', + 65 : 'LATIN CAPITAL LETTER A', + 66 : 'LATIN CAPITAL LETTER B', + 67 : 'LATIN CAPITAL LETTER C', + 68 : 'LATIN CAPITAL LETTER D', + 69 : 'LATIN CAPITAL LETTER E', + 70 : 'LATIN CAPITAL LETTER F', + 71 : 'LATIN CAPITAL LETTER G', + 72 : 'LATIN CAPITAL LETTER H', + 73 : 'LATIN CAPITAL LETTER I', + 74 : 'LATIN CAPITAL LETTER J', + 75 : 'LATIN CAPITAL LETTER K', + 76 : 'LATIN CAPITAL LETTER L', + 77 : 'LATIN CAPITAL LETTER M', + 78 : 'LATIN CAPITAL LETTER N', + 79 : 'LATIN CAPITAL LETTER O', + 80 : 'LATIN CAPITAL LETTER P', + 81 : 'LATIN CAPITAL LETTER Q', + 82 : 'LATIN CAPITAL LETTER R', + 83 : 'LATIN CAPITAL LETTER S', + 84 : 'LATIN CAPITAL LETTER T', + 85 : 'LATIN CAPITAL LETTER U', + 86 : 'LATIN CAPITAL LETTER V', + 87 : 'LATIN CAPITAL LETTER W', + 88 : 'LATIN CAPITAL LETTER X', + 89 : 'LATIN CAPITAL LETTER Y', + 90 : 'LATIN CAPITAL LETTER Z', + 91 : 'LEFT SQUARE BRACKET', + 92 : 'REVERSE SOLIDUS', + 93 : 'RIGHT SQUARE BRACKET', + 94 : 'CIRCUMFLEX ACCENT', + 95 : 'LOW LINE', + 96 : 'GRAVE ACCENT', + 97 : 'LATIN SMALL LETTER A', + 98 : 'LATIN SMALL LETTER B', + 99 : 'LATIN SMALL LETTER C', + 100 : 'LATIN SMALL LETTER D', + 101 : 'LATIN SMALL LETTER E', + 102 : 'LATIN SMALL LETTER F', + 103 : 'LATIN SMALL LETTER G', + 104 : 'LATIN SMALL LETTER H', + 105 : 'LATIN SMALL LETTER I', + 106 : 'LATIN SMALL LETTER J', + 107 : 'LATIN SMALL LETTER K', + 108 : 'LATIN SMALL LETTER L', + 109 : 'LATIN SMALL LETTER M', + 110 : 'LATIN SMALL LETTER N', + 111 : 'LATIN SMALL LETTER O', + 112 : 'LATIN SMALL LETTER P', + 113 : 'LATIN SMALL LETTER Q', + 114 : 'LATIN SMALL LETTER R', + 115 : 'LATIN SMALL LETTER S', + 116 : 'LATIN SMALL LETTER T', + 117 : 'LATIN SMALL LETTER U', + 118 : 'LATIN SMALL LETTER V', + 119 : 'LATIN SMALL LETTER W', + 120 : 'LATIN SMALL LETTER X', + 121 : 'LATIN SMALL LETTER Y', + 122 : 'LATIN SMALL LETTER Z', + 123 : 'LEFT CURLY BRACKET', + 124 : 'VERTICAL LINE', + 125 : 'RIGHT CURLY BRACKET', + 126 : 'TILDE', + 127 : '', + 128 : '', + 129 : '', + 130 : '', + 131 : '', + 132 : '', + 133 : '', + 134 : '', + 135 : '', + 136 : '', + 137 : '', + 138 : '', + 139 : '', + 140 : '', + 141 : '', + 142 : '', + 143 : '', + 144 : '', + 145 : '', + 146 : '', + 147 : '', + 148 : '', + 149 : '', + 150 : '', + 151 : '', + 152 : '', + 153 : '', + 154 : '', + 155 : '', + 156 : '', + 157 : '', + 158 : '', + 159 : '', + 160 : 'NO-BREAK SPACE', + 161 : 'INVERTED EXCLAMATION MARK', + 162 : 'CENT SIGN', + 163 : 'POUND SIGN', + 164 : 'CURRENCY SIGN', + 165 : 'YEN SIGN', + 166 : 'BROKEN BAR', + 167 : 'SECTION SIGN', + 168 : 'DIAERESIS', + 169 : 'COPYRIGHT SIGN', + 170 : 'FEMININE ORDINAL INDICATOR', + 171 : 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK', + 172 : 'NOT SIGN', + 173 : 'SOFT HYPHEN', + 174 : 'REGISTERED SIGN', + 175 : 'MACRON', + 176 : 'DEGREE SIGN', + 177 : 'PLUS-MINUS SIGN', + 178 : 'SUPERSCRIPT TWO', + 179 : 'SUPERSCRIPT THREE', + 180 : 'ACUTE ACCENT', + 181 : 'MICRO SIGN', + 182 : 'PILCROW SIGN', + 183 : 'MIDDLE DOT', + 184 : 'CEDILLA', + 185 : 'SUPERSCRIPT ONE', + 186 : 'MASCULINE ORDINAL INDICATOR', + 187 : 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK', + 188 : 'VULGAR FRACTION ONE QUARTER', + 189 : 'VULGAR FRACTION ONE HALF', + 190 : 'VULGAR FRACTION THREE QUARTERS', + 191 : 'INVERTED QUESTION MARK', + 192 : 'LATIN CAPITAL LETTER A WITH GRAVE', + 193 : 'LATIN CAPITAL LETTER A WITH ACUTE', + 194 : 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX', + 195 : 'LATIN CAPITAL LETTER A WITH TILDE', + 196 : 'LATIN CAPITAL LETTER A WITH DIAERESIS', + 197 : 'LATIN CAPITAL LETTER A WITH RING ABOVE', + 198 : 'LATIN CAPITAL LETTER AE', + 199 : 'LATIN CAPITAL LETTER C WITH CEDILLA', + 200 : 'LATIN CAPITAL LETTER E WITH GRAVE', + 201 : 'LATIN CAPITAL LETTER E WITH ACUTE', + 202 : 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX', + 203 : 'LATIN CAPITAL LETTER E WITH DIAERESIS', + 204 : 'LATIN CAPITAL LETTER I WITH GRAVE', + 205 : 'LATIN CAPITAL LETTER I WITH ACUTE', + 206 : 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX', + 207 : 'LATIN CAPITAL LETTER I WITH DIAERESIS', + 208 : 'LATIN CAPITAL LETTER ETH', + 209 : 'LATIN CAPITAL LETTER N WITH TILDE', + 210 : 'LATIN CAPITAL LETTER O WITH GRAVE', + 211 : 'LATIN CAPITAL LETTER O WITH ACUTE', + 212 : 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX', + 213 : 'LATIN CAPITAL LETTER O WITH TILDE', + 214 : 'LATIN CAPITAL LETTER O WITH DIAERESIS', + 215 : 'MULTIPLICATION SIGN', + 216 : 'LATIN CAPITAL LETTER O WITH STROKE', + 217 : 'LATIN CAPITAL LETTER U WITH GRAVE', + 218 : 'LATIN CAPITAL LETTER U WITH ACUTE', + 219 : 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX', + 220 : 'LATIN CAPITAL LETTER U WITH DIAERESIS', + 221 : 'LATIN CAPITAL LETTER Y WITH ACUTE', + 222 : 'LATIN CAPITAL LETTER THORN', + 223 : 'LATIN SMALL LETTER SHARP S', + 224 : 'LATIN SMALL LETTER A WITH GRAVE', + 225 : 'LATIN SMALL LETTER A WITH ACUTE', + 226 : 'LATIN SMALL LETTER A WITH CIRCUMFLEX', + 227 : 'LATIN SMALL LETTER A WITH TILDE', + 228 : 'LATIN SMALL LETTER A WITH DIAERESIS', + 229 : 'LATIN SMALL LETTER A WITH RING ABOVE', + 230 : 'LATIN SMALL LETTER AE', + 231 : 'LATIN SMALL LETTER C WITH CEDILLA', + 232 : 'LATIN SMALL LETTER E WITH GRAVE', + 233 : 'LATIN SMALL LETTER E WITH ACUTE', + 234 : 'LATIN SMALL LETTER E WITH CIRCUMFLEX', + 235 : 'LATIN SMALL LETTER E WITH DIAERESIS', + 236 : 'LATIN SMALL LETTER I WITH GRAVE', + 237 : 'LATIN SMALL LETTER I WITH ACUTE', + 238 : 'LATIN SMALL LETTER I WITH CIRCUMFLEX', + 239 : 'LATIN SMALL LETTER I WITH DIAERESIS', + 240 : 'LATIN SMALL LETTER ETH', + 241 : 'LATIN SMALL LETTER N WITH TILDE', + 242 : 'LATIN SMALL LETTER O WITH GRAVE', + 243 : 'LATIN SMALL LETTER O WITH ACUTE', + 244 : 'LATIN SMALL LETTER O WITH CIRCUMFLEX', + 245 : 'LATIN SMALL LETTER O WITH TILDE', + 246 : 'LATIN SMALL LETTER O WITH DIAERESIS', + 247 : 'DIVISION SIGN', + 248 : 'LATIN SMALL LETTER O WITH STROKE', + 249 : 'LATIN SMALL LETTER U WITH GRAVE', + 250 : 'LATIN SMALL LETTER U WITH ACUTE', + 251 : 'LATIN SMALL LETTER U WITH CIRCUMFLEX', + 252 : 'LATIN SMALL LETTER U WITH DIAERESIS', + 253 : 'LATIN SMALL LETTER Y WITH ACUTE', + 254 : 'LATIN SMALL LETTER THORN', + 255 : 'LATIN SMALL LETTER Y WITH DIAERESIS', + 256 : 'LATIN CAPITAL LETTER A WITH MACRON', + 257 : 'LATIN SMALL LETTER A WITH MACRON', + 258 : 'LATIN CAPITAL LETTER A WITH BREVE', + 259 : 'LATIN SMALL LETTER A WITH BREVE', + 260 : 'LATIN CAPITAL LETTER A WITH OGONEK', + 261 : 'LATIN SMALL LETTER A WITH OGONEK', + 262 : 'LATIN CAPITAL LETTER C WITH ACUTE', + 263 : 'LATIN SMALL LETTER C WITH ACUTE', + 264 : 'LATIN CAPITAL LETTER C WITH CIRCUMFLEX', + 265 : 'LATIN SMALL LETTER C WITH CIRCUMFLEX', + 266 : 'LATIN CAPITAL LETTER C WITH DOT ABOVE', + 267 : 'LATIN SMALL LETTER C WITH DOT ABOVE', + 268 : 'LATIN CAPITAL LETTER C WITH CARON', + 269 : 'LATIN SMALL LETTER C WITH CARON', + 270 : 'LATIN CAPITAL LETTER D WITH CARON', + 271 : 'LATIN SMALL LETTER D WITH CARON', + 272 : 'LATIN CAPITAL LETTER D WITH STROKE', + 273 : 'LATIN SMALL LETTER D WITH STROKE', + 274 : 'LATIN CAPITAL LETTER E WITH MACRON', + 275 : 'LATIN SMALL LETTER E WITH MACRON', + 276 : 'LATIN CAPITAL LETTER E WITH BREVE', + 277 : 'LATIN SMALL LETTER E WITH BREVE', + 278 : 'LATIN CAPITAL LETTER E WITH DOT ABOVE', + 279 : 'LATIN SMALL LETTER E WITH DOT ABOVE', + 280 : 'LATIN CAPITAL LETTER E WITH OGONEK', + 281 : 'LATIN SMALL LETTER E WITH OGONEK', + 282 : 'LATIN CAPITAL LETTER E WITH CARON', + 283 : 'LATIN SMALL LETTER E WITH CARON', + 284 : 'LATIN CAPITAL LETTER G WITH CIRCUMFLEX', + 285 : 'LATIN SMALL LETTER G WITH CIRCUMFLEX', + 286 : 'LATIN CAPITAL LETTER G WITH BREVE', + 287 : 'LATIN SMALL LETTER G WITH BREVE', + 288 : 'LATIN CAPITAL LETTER G WITH DOT ABOVE', + 289 : 'LATIN SMALL LETTER G WITH DOT ABOVE', + 290 : 'LATIN CAPITAL LETTER G WITH CEDILLA', + 291 : 'LATIN SMALL LETTER G WITH CEDILLA', + 292 : 'LATIN CAPITAL LETTER H WITH CIRCUMFLEX', + 293 : 'LATIN SMALL LETTER H WITH CIRCUMFLEX', + 294 : 'LATIN CAPITAL LETTER H WITH STROKE', + 295 : 'LATIN SMALL LETTER H WITH STROKE', + 296 : 'LATIN CAPITAL LETTER I WITH TILDE', + 297 : 'LATIN SMALL LETTER I WITH TILDE', + 298 : 'LATIN CAPITAL LETTER I WITH MACRON', + 299 : 'LATIN SMALL LETTER I WITH MACRON', + 300 : 'LATIN CAPITAL LETTER I WITH BREVE', + 301 : 'LATIN SMALL LETTER I WITH BREVE', + 302 : 'LATIN CAPITAL LETTER I WITH OGONEK', + 303 : 'LATIN SMALL LETTER I WITH OGONEK', + 304 : 'LATIN CAPITAL LETTER I WITH DOT ABOVE', + 305 : 'LATIN SMALL LETTER DOTLESS I', + 306 : 'LATIN CAPITAL LIGATURE IJ', + 307 : 'LATIN SMALL LIGATURE IJ', + 308 : 'LATIN CAPITAL LETTER J WITH CIRCUMFLEX', + 309 : 'LATIN SMALL LETTER J WITH CIRCUMFLEX', + 310 : 'LATIN CAPITAL LETTER K WITH CEDILLA', + 311 : 'LATIN SMALL LETTER K WITH CEDILLA', + 312 : 'LATIN SMALL LETTER KRA', + 313 : 'LATIN CAPITAL LETTER L WITH ACUTE', + 314 : 'LATIN SMALL LETTER L WITH ACUTE', + 315 : 'LATIN CAPITAL LETTER L WITH CEDILLA', + 316 : 'LATIN SMALL LETTER L WITH CEDILLA', + 317 : 'LATIN CAPITAL LETTER L WITH CARON', + 318 : 'LATIN SMALL LETTER L WITH CARON', + 319 : 'LATIN CAPITAL LETTER L WITH MIDDLE DOT', + 320 : 'LATIN SMALL LETTER L WITH MIDDLE DOT', + 321 : 'LATIN CAPITAL LETTER L WITH STROKE', + 322 : 'LATIN SMALL LETTER L WITH STROKE', + 323 : 'LATIN CAPITAL LETTER N WITH ACUTE', + 324 : 'LATIN SMALL LETTER N WITH ACUTE', + 325 : 'LATIN CAPITAL LETTER N WITH CEDILLA', + 326 : 'LATIN SMALL LETTER N WITH CEDILLA', + 327 : 'LATIN CAPITAL LETTER N WITH CARON', + 328 : 'LATIN SMALL LETTER N WITH CARON', + 329 : 'LATIN SMALL LETTER N PRECEDED BY APOSTROPHE', + 330 : 'LATIN CAPITAL LETTER ENG', + 331 : 'LATIN SMALL LETTER ENG', + 332 : 'LATIN CAPITAL LETTER O WITH MACRON', + 333 : 'LATIN SMALL LETTER O WITH MACRON', + 334 : 'LATIN CAPITAL LETTER O WITH BREVE', + 335 : 'LATIN SMALL LETTER O WITH BREVE', + 336 : 'LATIN CAPITAL LETTER O WITH DOUBLE ACUTE', + 337 : 'LATIN SMALL LETTER O WITH DOUBLE ACUTE', + 338 : 'LATIN CAPITAL LIGATURE OE', + 339 : 'LATIN SMALL LIGATURE OE', + 340 : 'LATIN CAPITAL LETTER R WITH ACUTE', + 341 : 'LATIN SMALL LETTER R WITH ACUTE', + 342 : 'LATIN CAPITAL LETTER R WITH CEDILLA', + 343 : 'LATIN SMALL LETTER R WITH CEDILLA', + 344 : 'LATIN CAPITAL LETTER R WITH CARON', + 345 : 'LATIN SMALL LETTER R WITH CARON', + 346 : 'LATIN CAPITAL LETTER S WITH ACUTE', + 347 : 'LATIN SMALL LETTER S WITH ACUTE', + 348 : 'LATIN CAPITAL LETTER S WITH CIRCUMFLEX', + 349 : 'LATIN SMALL LETTER S WITH CIRCUMFLEX', + 350 : 'LATIN CAPITAL LETTER S WITH CEDILLA', + 351 : 'LATIN SMALL LETTER S WITH CEDILLA', + 352 : 'LATIN CAPITAL LETTER S WITH CARON', + 353 : 'LATIN SMALL LETTER S WITH CARON', + 354 : 'LATIN CAPITAL LETTER T WITH CEDILLA', + 355 : 'LATIN SMALL LETTER T WITH CEDILLA', + 356 : 'LATIN CAPITAL LETTER T WITH CARON', + 357 : 'LATIN SMALL LETTER T WITH CARON', + 358 : 'LATIN CAPITAL LETTER T WITH STROKE', + 359 : 'LATIN SMALL LETTER T WITH STROKE', + 360 : 'LATIN CAPITAL LETTER U WITH TILDE', + 361 : 'LATIN SMALL LETTER U WITH TILDE', + 362 : 'LATIN CAPITAL LETTER U WITH MACRON', + 363 : 'LATIN SMALL LETTER U WITH MACRON', + 364 : 'LATIN CAPITAL LETTER U WITH BREVE', + 365 : 'LATIN SMALL LETTER U WITH BREVE', + 366 : 'LATIN CAPITAL LETTER U WITH RING ABOVE', + 367 : 'LATIN SMALL LETTER U WITH RING ABOVE', + 368 : 'LATIN CAPITAL LETTER U WITH DOUBLE ACUTE', + 369 : 'LATIN SMALL LETTER U WITH DOUBLE ACUTE', + 370 : 'LATIN CAPITAL LETTER U WITH OGONEK', + 371 : 'LATIN SMALL LETTER U WITH OGONEK', + 372 : 'LATIN CAPITAL LETTER W WITH CIRCUMFLEX', + 373 : 'LATIN SMALL LETTER W WITH CIRCUMFLEX', + 374 : 'LATIN CAPITAL LETTER Y WITH CIRCUMFLEX', + 375 : 'LATIN SMALL LETTER Y WITH CIRCUMFLEX', + 376 : 'LATIN CAPITAL LETTER Y WITH DIAERESIS', + 377 : 'LATIN CAPITAL LETTER Z WITH ACUTE', + 378 : 'LATIN SMALL LETTER Z WITH ACUTE', + 379 : 'LATIN CAPITAL LETTER Z WITH DOT ABOVE', + 380 : 'LATIN SMALL LETTER Z WITH DOT ABOVE', + 381 : 'LATIN CAPITAL LETTER Z WITH CARON', + 382 : 'LATIN SMALL LETTER Z WITH CARON', + 383 : 'LATIN SMALL LETTER LONG S', + 384 : 'LATIN SMALL LETTER B WITH STROKE', + 385 : 'LATIN CAPITAL LETTER B WITH HOOK', + 386 : 'LATIN CAPITAL LETTER B WITH TOPBAR', + 387 : 'LATIN SMALL LETTER B WITH TOPBAR', + 388 : 'LATIN CAPITAL LETTER TONE SIX', + 389 : 'LATIN SMALL LETTER TONE SIX', + 390 : 'LATIN CAPITAL LETTER OPEN O', + 391 : 'LATIN CAPITAL LETTER C WITH HOOK', + 392 : 'LATIN SMALL LETTER C WITH HOOK', + 393 : 'LATIN CAPITAL LETTER AFRICAN D', + 394 : 'LATIN CAPITAL LETTER D WITH HOOK', + 395 : 'LATIN CAPITAL LETTER D WITH TOPBAR', + 396 : 'LATIN SMALL LETTER D WITH TOPBAR', + 397 : 'LATIN SMALL LETTER TURNED DELTA', + 398 : 'LATIN CAPITAL LETTER REVERSED E', + 399 : 'LATIN CAPITAL LETTER SCHWA', + 400 : 'LATIN CAPITAL LETTER OPEN E', + 401 : 'LATIN CAPITAL LETTER F WITH HOOK', + 402 : 'LATIN SMALL LETTER F WITH HOOK', + 403 : 'LATIN CAPITAL LETTER G WITH HOOK', + 404 : 'LATIN CAPITAL LETTER GAMMA', + 405 : 'LATIN SMALL LETTER HV', + 406 : 'LATIN CAPITAL LETTER IOTA', + 407 : 'LATIN CAPITAL LETTER I WITH STROKE', + 408 : 'LATIN CAPITAL LETTER K WITH HOOK', + 409 : 'LATIN SMALL LETTER K WITH HOOK', + 410 : 'LATIN SMALL LETTER L WITH BAR', + 411 : 'LATIN SMALL LETTER LAMBDA WITH STROKE', + 412 : 'LATIN CAPITAL LETTER TURNED M', + 413 : 'LATIN CAPITAL LETTER N WITH LEFT HOOK', + 414 : 'LATIN SMALL LETTER N WITH LONG RIGHT LEG', + 415 : 'LATIN CAPITAL LETTER O WITH MIDDLE TILDE', + 416 : 'LATIN CAPITAL LETTER O WITH HORN', + 417 : 'LATIN SMALL LETTER O WITH HORN', + 418 : 'LATIN CAPITAL LETTER OI', + 419 : 'LATIN SMALL LETTER OI', + 420 : 'LATIN CAPITAL LETTER P WITH HOOK', + 421 : 'LATIN SMALL LETTER P WITH HOOK', + 422 : 'LATIN LETTER YR', + 423 : 'LATIN CAPITAL LETTER TONE TWO', + 424 : 'LATIN SMALL LETTER TONE TWO', + 425 : 'LATIN CAPITAL LETTER ESH', + 426 : 'LATIN LETTER REVERSED ESH LOOP', + 427 : 'LATIN SMALL LETTER T WITH PALATAL HOOK', + 428 : 'LATIN CAPITAL LETTER T WITH HOOK', + 429 : 'LATIN SMALL LETTER T WITH HOOK', + 430 : 'LATIN CAPITAL LETTER T WITH RETROFLEX HOOK', + 431 : 'LATIN CAPITAL LETTER U WITH HORN', + 432 : 'LATIN SMALL LETTER U WITH HORN', + 433 : 'LATIN CAPITAL LETTER UPSILON', + 434 : 'LATIN CAPITAL LETTER V WITH HOOK', + 435 : 'LATIN CAPITAL LETTER Y WITH HOOK', + 436 : 'LATIN SMALL LETTER Y WITH HOOK', + 437 : 'LATIN CAPITAL LETTER Z WITH STROKE', + 438 : 'LATIN SMALL LETTER Z WITH STROKE', + 439 : 'LATIN CAPITAL LETTER EZH', + 440 : 'LATIN CAPITAL LETTER EZH REVERSED', + 441 : 'LATIN SMALL LETTER EZH REVERSED', + 442 : 'LATIN SMALL LETTER EZH WITH TAIL', + 443 : 'LATIN LETTER TWO WITH STROKE', + 444 : 'LATIN CAPITAL LETTER TONE FIVE', + 445 : 'LATIN SMALL LETTER TONE FIVE', + 446 : 'LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE', + 447 : 'LATIN LETTER WYNN', + 448 : 'LATIN LETTER DENTAL CLICK', + 449 : 'LATIN LETTER LATERAL CLICK', + 450 : 'LATIN LETTER ALVEOLAR CLICK', + 451 : 'LATIN LETTER RETROFLEX CLICK', + 452 : 'LATIN CAPITAL LETTER DZ WITH CARON', + 453 : 'LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON', + 454 : 'LATIN SMALL LETTER DZ WITH CARON', + 455 : 'LATIN CAPITAL LETTER LJ', + 456 : 'LATIN CAPITAL LETTER L WITH SMALL LETTER J', + 457 : 'LATIN SMALL LETTER LJ', + 458 : 'LATIN CAPITAL LETTER NJ', + 459 : 'LATIN CAPITAL LETTER N WITH SMALL LETTER J', + 460 : 'LATIN SMALL LETTER NJ', + 461 : 'LATIN CAPITAL LETTER A WITH CARON', + 462 : 'LATIN SMALL LETTER A WITH CARON', + 463 : 'LATIN CAPITAL LETTER I WITH CARON', + 464 : 'LATIN SMALL LETTER I WITH CARON', + 465 : 'LATIN CAPITAL LETTER O WITH CARON', + 466 : 'LATIN SMALL LETTER O WITH CARON', + 467 : 'LATIN CAPITAL LETTER U WITH CARON', + 468 : 'LATIN SMALL LETTER U WITH CARON', + 469 : 'LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON', + 470 : 'LATIN SMALL LETTER U WITH DIAERESIS AND MACRON', + 471 : 'LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE', + 472 : 'LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE', + 473 : 'LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON', + 474 : 'LATIN SMALL LETTER U WITH DIAERESIS AND CARON', + 475 : 'LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE', + 476 : 'LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE', + 477 : 'LATIN SMALL LETTER TURNED E', + 478 : 'LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON', + 479 : 'LATIN SMALL LETTER A WITH DIAERESIS AND MACRON', + 480 : 'LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON', + 481 : 'LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON', + 482 : 'LATIN CAPITAL LETTER AE WITH MACRON', + 483 : 'LATIN SMALL LETTER AE WITH MACRON', + 484 : 'LATIN CAPITAL LETTER G WITH STROKE', + 485 : 'LATIN SMALL LETTER G WITH STROKE', + 486 : 'LATIN CAPITAL LETTER G WITH CARON', + 487 : 'LATIN SMALL LETTER G WITH CARON', + 488 : 'LATIN CAPITAL LETTER K WITH CARON', + 489 : 'LATIN SMALL LETTER K WITH CARON', + 490 : 'LATIN CAPITAL LETTER O WITH OGONEK', + 491 : 'LATIN SMALL LETTER O WITH OGONEK', + 492 : 'LATIN CAPITAL LETTER O WITH OGONEK AND MACRON', + 493 : 'LATIN SMALL LETTER O WITH OGONEK AND MACRON', + 494 : 'LATIN CAPITAL LETTER EZH WITH CARON', + 495 : 'LATIN SMALL LETTER EZH WITH CARON', + 496 : 'LATIN SMALL LETTER J WITH CARON', + 497 : 'LATIN CAPITAL LETTER DZ', + 498 : 'LATIN CAPITAL LETTER D WITH SMALL LETTER Z', + 499 : 'LATIN SMALL LETTER DZ', + 500 : 'LATIN CAPITAL LETTER G WITH ACUTE', + 501 : 'LATIN SMALL LETTER G WITH ACUTE', + 502 : 'LATIN CAPITAL LETTER HWAIR', + 503 : 'LATIN CAPITAL LETTER WYNN', + 504 : 'LATIN CAPITAL LETTER N WITH GRAVE', + 505 : 'LATIN SMALL LETTER N WITH GRAVE', + 506 : 'LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE', + 507 : 'LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE', + 508 : 'LATIN CAPITAL LETTER AE WITH ACUTE', + 509 : 'LATIN SMALL LETTER AE WITH ACUTE', + 510 : 'LATIN CAPITAL LETTER O WITH STROKE AND ACUTE', + 511 : 'LATIN SMALL LETTER O WITH STROKE AND ACUTE', + 512 : 'LATIN CAPITAL LETTER A WITH DOUBLE GRAVE', + 513 : 'LATIN SMALL LETTER A WITH DOUBLE GRAVE', + 514 : 'LATIN CAPITAL LETTER A WITH INVERTED BREVE', + 515 : 'LATIN SMALL LETTER A WITH INVERTED BREVE', + 516 : 'LATIN CAPITAL LETTER E WITH DOUBLE GRAVE', + 517 : 'LATIN SMALL LETTER E WITH DOUBLE GRAVE', + 518 : 'LATIN CAPITAL LETTER E WITH INVERTED BREVE', + 519 : 'LATIN SMALL LETTER E WITH INVERTED BREVE', + 520 : 'LATIN CAPITAL LETTER I WITH DOUBLE GRAVE', + 521 : 'LATIN SMALL LETTER I WITH DOUBLE GRAVE', + 522 : 'LATIN CAPITAL LETTER I WITH INVERTED BREVE', + 523 : 'LATIN SMALL LETTER I WITH INVERTED BREVE', + 524 : 'LATIN CAPITAL LETTER O WITH DOUBLE GRAVE', + 525 : 'LATIN SMALL LETTER O WITH DOUBLE GRAVE', + 526 : 'LATIN CAPITAL LETTER O WITH INVERTED BREVE', + 527 : 'LATIN SMALL LETTER O WITH INVERTED BREVE', + 528 : 'LATIN CAPITAL LETTER R WITH DOUBLE GRAVE', + 529 : 'LATIN SMALL LETTER R WITH DOUBLE GRAVE', + 530 : 'LATIN CAPITAL LETTER R WITH INVERTED BREVE', + 531 : 'LATIN SMALL LETTER R WITH INVERTED BREVE', + 532 : 'LATIN CAPITAL LETTER U WITH DOUBLE GRAVE', + 533 : 'LATIN SMALL LETTER U WITH DOUBLE GRAVE', + 534 : 'LATIN CAPITAL LETTER U WITH INVERTED BREVE', + 535 : 'LATIN SMALL LETTER U WITH INVERTED BREVE', + 536 : 'LATIN CAPITAL LETTER S WITH COMMA BELOW', + 537 : 'LATIN SMALL LETTER S WITH COMMA BELOW', + 538 : 'LATIN CAPITAL LETTER T WITH COMMA BELOW', + 539 : 'LATIN SMALL LETTER T WITH COMMA BELOW', + 540 : 'LATIN CAPITAL LETTER YOGH', + 541 : 'LATIN SMALL LETTER YOGH', + 542 : 'LATIN CAPITAL LETTER H WITH CARON', + 543 : 'LATIN SMALL LETTER H WITH CARON', + 544 : 'LATIN CAPITAL LETTER N WITH LONG RIGHT LEG', + 546 : 'LATIN CAPITAL LETTER OU', + 547 : 'LATIN SMALL LETTER OU', + 548 : 'LATIN CAPITAL LETTER Z WITH HOOK', + 549 : 'LATIN SMALL LETTER Z WITH HOOK', + 550 : 'LATIN CAPITAL LETTER A WITH DOT ABOVE', + 551 : 'LATIN SMALL LETTER A WITH DOT ABOVE', + 552 : 'LATIN CAPITAL LETTER E WITH CEDILLA', + 553 : 'LATIN SMALL LETTER E WITH CEDILLA', + 554 : 'LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON', + 555 : 'LATIN SMALL LETTER O WITH DIAERESIS AND MACRON', + 556 : 'LATIN CAPITAL LETTER O WITH TILDE AND MACRON', + 557 : 'LATIN SMALL LETTER O WITH TILDE AND MACRON', + 558 : 'LATIN CAPITAL LETTER O WITH DOT ABOVE', + 559 : 'LATIN SMALL LETTER O WITH DOT ABOVE', + 560 : 'LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON', + 561 : 'LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON', + 562 : 'LATIN CAPITAL LETTER Y WITH MACRON', + 563 : 'LATIN SMALL LETTER Y WITH MACRON', + 592 : 'LATIN SMALL LETTER TURNED A', + 593 : 'LATIN SMALL LETTER ALPHA', + 594 : 'LATIN SMALL LETTER TURNED ALPHA', + 595 : 'LATIN SMALL LETTER B WITH HOOK', + 596 : 'LATIN SMALL LETTER OPEN O', + 597 : 'LATIN SMALL LETTER C WITH CURL', + 598 : 'LATIN SMALL LETTER D WITH TAIL', + 599 : 'LATIN SMALL LETTER D WITH HOOK', + 600 : 'LATIN SMALL LETTER REVERSED E', + 601 : 'LATIN SMALL LETTER SCHWA', + 602 : 'LATIN SMALL LETTER SCHWA WITH HOOK', + 603 : 'LATIN SMALL LETTER OPEN E', + 604 : 'LATIN SMALL LETTER REVERSED OPEN E', + 605 : 'LATIN SMALL LETTER REVERSED OPEN E WITH HOOK', + 606 : 'LATIN SMALL LETTER CLOSED REVERSED OPEN E', + 607 : 'LATIN SMALL LETTER DOTLESS J WITH STROKE', + 608 : 'LATIN SMALL LETTER G WITH HOOK', + 609 : 'LATIN SMALL LETTER SCRIPT G', + 610 : 'LATIN LETTER SMALL CAPITAL G', + 611 : 'LATIN SMALL LETTER GAMMA', + 612 : 'LATIN SMALL LETTER RAMS HORN', + 613 : 'LATIN SMALL LETTER TURNED H', + 614 : 'LATIN SMALL LETTER H WITH HOOK', + 615 : 'LATIN SMALL LETTER HENG WITH HOOK', + 616 : 'LATIN SMALL LETTER I WITH STROKE', + 617 : 'LATIN SMALL LETTER IOTA', + 618 : 'LATIN LETTER SMALL CAPITAL I', + 619 : 'LATIN SMALL LETTER L WITH MIDDLE TILDE', + 620 : 'LATIN SMALL LETTER L WITH BELT', + 621 : 'LATIN SMALL LETTER L WITH RETROFLEX HOOK', + 622 : 'LATIN SMALL LETTER LEZH', + 623 : 'LATIN SMALL LETTER TURNED M', + 624 : 'LATIN SMALL LETTER TURNED M WITH LONG LEG', + 625 : 'LATIN SMALL LETTER M WITH HOOK', + 626 : 'LATIN SMALL LETTER N WITH LEFT HOOK', + 627 : 'LATIN SMALL LETTER N WITH RETROFLEX HOOK', + 628 : 'LATIN LETTER SMALL CAPITAL N', + 629 : 'LATIN SMALL LETTER BARRED O', + 630 : 'LATIN LETTER SMALL CAPITAL OE', + 631 : 'LATIN SMALL LETTER CLOSED OMEGA', + 632 : 'LATIN SMALL LETTER PHI', + 633 : 'LATIN SMALL LETTER TURNED R', + 634 : 'LATIN SMALL LETTER TURNED R WITH LONG LEG', + 635 : 'LATIN SMALL LETTER TURNED R WITH HOOK', + 636 : 'LATIN SMALL LETTER R WITH LONG LEG', + 637 : 'LATIN SMALL LETTER R WITH TAIL', + 638 : 'LATIN SMALL LETTER R WITH FISHHOOK', + 639 : 'LATIN SMALL LETTER REVERSED R WITH FISHHOOK', + 640 : 'LATIN LETTER SMALL CAPITAL R', + 641 : 'LATIN LETTER SMALL CAPITAL INVERTED R', + 642 : 'LATIN SMALL LETTER S WITH HOOK', + 643 : 'LATIN SMALL LETTER ESH', + 644 : 'LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK', + 645 : 'LATIN SMALL LETTER SQUAT REVERSED ESH', + 646 : 'LATIN SMALL LETTER ESH WITH CURL', + 647 : 'LATIN SMALL LETTER TURNED T', + 648 : 'LATIN SMALL LETTER T WITH RETROFLEX HOOK', + 649 : 'LATIN SMALL LETTER U BAR', + 650 : 'LATIN SMALL LETTER UPSILON', + 651 : 'LATIN SMALL LETTER V WITH HOOK', + 652 : 'LATIN SMALL LETTER TURNED V', + 653 : 'LATIN SMALL LETTER TURNED W', + 654 : 'LATIN SMALL LETTER TURNED Y', + 655 : 'LATIN LETTER SMALL CAPITAL Y', + 656 : 'LATIN SMALL LETTER Z WITH RETROFLEX HOOK', + 657 : 'LATIN SMALL LETTER Z WITH CURL', + 658 : 'LATIN SMALL LETTER EZH', + 659 : 'LATIN SMALL LETTER EZH WITH CURL', + 660 : 'LATIN LETTER GLOTTAL STOP', + 661 : 'LATIN LETTER PHARYNGEAL VOICED FRICATIVE', + 662 : 'LATIN LETTER INVERTED GLOTTAL STOP', + 663 : 'LATIN LETTER STRETCHED C', + 664 : 'LATIN LETTER BILABIAL CLICK', + 665 : 'LATIN LETTER SMALL CAPITAL B', + 666 : 'LATIN SMALL LETTER CLOSED OPEN E', + 667 : 'LATIN LETTER SMALL CAPITAL G WITH HOOK', + 668 : 'LATIN LETTER SMALL CAPITAL H', + 669 : 'LATIN SMALL LETTER J WITH CROSSED-TAIL', + 670 : 'LATIN SMALL LETTER TURNED K', + 671 : 'LATIN LETTER SMALL CAPITAL L', + 672 : 'LATIN SMALL LETTER Q WITH HOOK', + 673 : 'LATIN LETTER GLOTTAL STOP WITH STROKE', + 674 : 'LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE', + 675 : 'LATIN SMALL LETTER DZ DIGRAPH', + 676 : 'LATIN SMALL LETTER DEZH DIGRAPH', + 677 : 'LATIN SMALL LETTER DZ DIGRAPH WITH CURL', + 678 : 'LATIN SMALL LETTER TS DIGRAPH', + 679 : 'LATIN SMALL LETTER TESH DIGRAPH', + 680 : 'LATIN SMALL LETTER TC DIGRAPH WITH CURL', + 681 : 'LATIN SMALL LETTER FENG DIGRAPH', + 682 : 'LATIN SMALL LETTER LS DIGRAPH', + 683 : 'LATIN SMALL LETTER LZ DIGRAPH', + 684 : 'LATIN LETTER BILABIAL PERCUSSIVE', + 685 : 'LATIN LETTER BIDENTAL PERCUSSIVE', + 688 : 'MODIFIER LETTER SMALL H', + 689 : 'MODIFIER LETTER SMALL H WITH HOOK', + 690 : 'MODIFIER LETTER SMALL J', + 691 : 'MODIFIER LETTER SMALL R', + 692 : 'MODIFIER LETTER SMALL TURNED R', + 693 : 'MODIFIER LETTER SMALL TURNED R WITH HOOK', + 694 : 'MODIFIER LETTER SMALL CAPITAL INVERTED R', + 695 : 'MODIFIER LETTER SMALL W', + 696 : 'MODIFIER LETTER SMALL Y', + 697 : 'MODIFIER LETTER PRIME', + 698 : 'MODIFIER LETTER DOUBLE PRIME', + 699 : 'MODIFIER LETTER TURNED COMMA', + 700 : 'MODIFIER LETTER APOSTROPHE', + 701 : 'MODIFIER LETTER REVERSED COMMA', + 702 : 'MODIFIER LETTER RIGHT HALF RING', + 703 : 'MODIFIER LETTER LEFT HALF RING', + 704 : 'MODIFIER LETTER GLOTTAL STOP', + 705 : 'MODIFIER LETTER REVERSED GLOTTAL STOP', + 706 : 'MODIFIER LETTER LEFT ARROWHEAD', + 707 : 'MODIFIER LETTER RIGHT ARROWHEAD', + 708 : 'MODIFIER LETTER UP ARROWHEAD', + 709 : 'MODIFIER LETTER DOWN ARROWHEAD', + 710 : 'MODIFIER LETTER CIRCUMFLEX ACCENT', + 711 : 'CARON', + 712 : 'MODIFIER LETTER VERTICAL LINE', + 713 : 'MODIFIER LETTER MACRON', + 714 : 'MODIFIER LETTER ACUTE ACCENT', + 715 : 'MODIFIER LETTER GRAVE ACCENT', + 716 : 'MODIFIER LETTER LOW VERTICAL LINE', + 717 : 'MODIFIER LETTER LOW MACRON', + 718 : 'MODIFIER LETTER LOW GRAVE ACCENT', + 719 : 'MODIFIER LETTER LOW ACUTE ACCENT', + 720 : 'MODIFIER LETTER TRIANGULAR COLON', + 721 : 'MODIFIER LETTER HALF TRIANGULAR COLON', + 722 : 'MODIFIER LETTER CENTRED RIGHT HALF RING', + 723 : 'MODIFIER LETTER CENTRED LEFT HALF RING', + 724 : 'MODIFIER LETTER UP TACK', + 725 : 'MODIFIER LETTER DOWN TACK', + 726 : 'MODIFIER LETTER PLUS SIGN', + 727 : 'MODIFIER LETTER MINUS SIGN', + 728 : 'BREVE', + 729 : 'DOT ABOVE', + 730 : 'RING ABOVE', + 731 : 'OGONEK', + 732 : 'SMALL TILDE', + 733 : 'DOUBLE ACUTE ACCENT', + 734 : 'MODIFIER LETTER RHOTIC HOOK', + 735 : 'MODIFIER LETTER CROSS ACCENT', + 736 : 'MODIFIER LETTER SMALL GAMMA', + 737 : 'MODIFIER LETTER SMALL L', + 738 : 'MODIFIER LETTER SMALL S', + 739 : 'MODIFIER LETTER SMALL X', + 740 : 'MODIFIER LETTER SMALL REVERSED GLOTTAL STOP', + 741 : 'MODIFIER LETTER EXTRA-HIGH TONE BAR', + 742 : 'MODIFIER LETTER HIGH TONE BAR', + 743 : 'MODIFIER LETTER MID TONE BAR', + 744 : 'MODIFIER LETTER LOW TONE BAR', + 745 : 'MODIFIER LETTER EXTRA-LOW TONE BAR', + 746 : 'MODIFIER LETTER YIN DEPARTING TONE MARK', + 747 : 'MODIFIER LETTER YANG DEPARTING TONE MARK', + 748 : 'MODIFIER LETTER VOICING', + 749 : 'MODIFIER LETTER UNASPIRATED', + 750 : 'MODIFIER LETTER DOUBLE APOSTROPHE', + 768 : 'COMBINING GRAVE ACCENT', + 769 : 'COMBINING ACUTE ACCENT', + 770 : 'COMBINING CIRCUMFLEX ACCENT', + 771 : 'COMBINING TILDE', + 772 : 'COMBINING MACRON', + 773 : 'COMBINING OVERLINE', + 774 : 'COMBINING BREVE', + 775 : 'COMBINING DOT ABOVE', + 776 : 'COMBINING DIAERESIS', + 777 : 'COMBINING HOOK ABOVE', + 778 : 'COMBINING RING ABOVE', + 779 : 'COMBINING DOUBLE ACUTE ACCENT', + 780 : 'COMBINING CARON', + 781 : 'COMBINING VERTICAL LINE ABOVE', + 782 : 'COMBINING DOUBLE VERTICAL LINE ABOVE', + 783 : 'COMBINING DOUBLE GRAVE ACCENT', + 784 : 'COMBINING CANDRABINDU', + 785 : 'COMBINING INVERTED BREVE', + 786 : 'COMBINING TURNED COMMA ABOVE', + 787 : 'COMBINING COMMA ABOVE', + 788 : 'COMBINING REVERSED COMMA ABOVE', + 789 : 'COMBINING COMMA ABOVE RIGHT', + 790 : 'COMBINING GRAVE ACCENT BELOW', + 791 : 'COMBINING ACUTE ACCENT BELOW', + 792 : 'COMBINING LEFT TACK BELOW', + 793 : 'COMBINING RIGHT TACK BELOW', + 794 : 'COMBINING LEFT ANGLE ABOVE', + 795 : 'COMBINING HORN', + 796 : 'COMBINING LEFT HALF RING BELOW', + 797 : 'COMBINING UP TACK BELOW', + 798 : 'COMBINING DOWN TACK BELOW', + 799 : 'COMBINING PLUS SIGN BELOW', + 800 : 'COMBINING MINUS SIGN BELOW', + 801 : 'COMBINING PALATALIZED HOOK BELOW', + 802 : 'COMBINING RETROFLEX HOOK BELOW', + 803 : 'COMBINING DOT BELOW', + 804 : 'COMBINING DIAERESIS BELOW', + 805 : 'COMBINING RING BELOW', + 806 : 'COMBINING COMMA BELOW', + 807 : 'COMBINING CEDILLA', + 808 : 'COMBINING OGONEK', + 809 : 'COMBINING VERTICAL LINE BELOW', + 810 : 'COMBINING BRIDGE BELOW', + 811 : 'COMBINING INVERTED DOUBLE ARCH BELOW', + 812 : 'COMBINING CARON BELOW', + 813 : 'COMBINING CIRCUMFLEX ACCENT BELOW', + 814 : 'COMBINING BREVE BELOW', + 815 : 'COMBINING INVERTED BREVE BELOW', + 816 : 'COMBINING TILDE BELOW', + 817 : 'COMBINING MACRON BELOW', + 818 : 'COMBINING LOW LINE', + 819 : 'COMBINING DOUBLE LOW LINE', + 820 : 'COMBINING TILDE OVERLAY', + 821 : 'COMBINING SHORT STROKE OVERLAY', + 822 : 'COMBINING LONG STROKE OVERLAY', + 823 : 'COMBINING SHORT SOLIDUS OVERLAY', + 824 : 'COMBINING LONG SOLIDUS OVERLAY', + 825 : 'COMBINING RIGHT HALF RING BELOW', + 826 : 'COMBINING INVERTED BRIDGE BELOW', + 827 : 'COMBINING SQUARE BELOW', + 828 : 'COMBINING SEAGULL BELOW', + 829 : 'COMBINING X ABOVE', + 830 : 'COMBINING VERTICAL TILDE', + 831 : 'COMBINING DOUBLE OVERLINE', + 832 : 'COMBINING GRAVE TONE MARK', + 833 : 'COMBINING ACUTE TONE MARK', + 834 : 'COMBINING GREEK PERISPOMENI', + 835 : 'COMBINING GREEK KORONIS', + 836 : 'COMBINING GREEK DIALYTIKA TONOS', + 837 : 'COMBINING GREEK YPOGEGRAMMENI', + 838 : 'COMBINING BRIDGE ABOVE', + 839 : 'COMBINING EQUALS SIGN BELOW', + 840 : 'COMBINING DOUBLE VERTICAL LINE BELOW', + 841 : 'COMBINING LEFT ANGLE BELOW', + 842 : 'COMBINING NOT TILDE ABOVE', + 843 : 'COMBINING HOMOTHETIC ABOVE', + 844 : 'COMBINING ALMOST EQUAL TO ABOVE', + 845 : 'COMBINING LEFT RIGHT ARROW BELOW', + 846 : 'COMBINING UPWARDS ARROW BELOW', + 847 : 'COMBINING GRAPHEME JOINER', + 864 : 'COMBINING DOUBLE TILDE', + 865 : 'COMBINING DOUBLE INVERTED BREVE', + 866 : 'COMBINING DOUBLE RIGHTWARDS ARROW BELOW', + 867 : 'COMBINING LATIN SMALL LETTER A', + 868 : 'COMBINING LATIN SMALL LETTER E', + 869 : 'COMBINING LATIN SMALL LETTER I', + 870 : 'COMBINING LATIN SMALL LETTER O', + 871 : 'COMBINING LATIN SMALL LETTER U', + 872 : 'COMBINING LATIN SMALL LETTER C', + 873 : 'COMBINING LATIN SMALL LETTER D', + 874 : 'COMBINING LATIN SMALL LETTER H', + 875 : 'COMBINING LATIN SMALL LETTER M', + 876 : 'COMBINING LATIN SMALL LETTER R', + 877 : 'COMBINING LATIN SMALL LETTER T', + 878 : 'COMBINING LATIN SMALL LETTER V', + 879 : 'COMBINING LATIN SMALL LETTER X', + 884 : 'GREEK NUMERAL SIGN', + 885 : 'GREEK LOWER NUMERAL SIGN', + 890 : 'GREEK YPOGEGRAMMENI', + 894 : 'GREEK QUESTION MARK', + 900 : 'GREEK TONOS', + 901 : 'GREEK DIALYTIKA TONOS', + 902 : 'GREEK CAPITAL LETTER ALPHA WITH TONOS', + 903 : 'GREEK ANO TELEIA', + 904 : 'GREEK CAPITAL LETTER EPSILON WITH TONOS', + 905 : 'GREEK CAPITAL LETTER ETA WITH TONOS', + 906 : 'GREEK CAPITAL LETTER IOTA WITH TONOS', + 908 : 'GREEK CAPITAL LETTER OMICRON WITH TONOS', + 910 : 'GREEK CAPITAL LETTER UPSILON WITH TONOS', + 911 : 'GREEK CAPITAL LETTER OMEGA WITH TONOS', + 912 : 'GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS', + 913 : 'GREEK CAPITAL LETTER ALPHA', + 914 : 'GREEK CAPITAL LETTER BETA', + 915 : 'GREEK CAPITAL LETTER GAMMA', + 916 : 'GREEK CAPITAL LETTER DELTA', + 917 : 'GREEK CAPITAL LETTER EPSILON', + 918 : 'GREEK CAPITAL LETTER ZETA', + 919 : 'GREEK CAPITAL LETTER ETA', + 920 : 'GREEK CAPITAL LETTER THETA', + 921 : 'GREEK CAPITAL LETTER IOTA', + 922 : 'GREEK CAPITAL LETTER KAPPA', + 923 : 'GREEK CAPITAL LETTER LAMDA', + 924 : 'GREEK CAPITAL LETTER MU', + 925 : 'GREEK CAPITAL LETTER NU', + 926 : 'GREEK CAPITAL LETTER XI', + 927 : 'GREEK CAPITAL LETTER OMICRON', + 928 : 'GREEK CAPITAL LETTER PI', + 929 : 'GREEK CAPITAL LETTER RHO', + 931 : 'GREEK CAPITAL LETTER SIGMA', + 932 : 'GREEK CAPITAL LETTER TAU', + 933 : 'GREEK CAPITAL LETTER UPSILON', + 934 : 'GREEK CAPITAL LETTER PHI', + 935 : 'GREEK CAPITAL LETTER CHI', + 936 : 'GREEK CAPITAL LETTER PSI', + 937 : 'GREEK CAPITAL LETTER OMEGA', + 938 : 'GREEK CAPITAL LETTER IOTA WITH DIALYTIKA', + 939 : 'GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA', + 940 : 'GREEK SMALL LETTER ALPHA WITH TONOS', + 941 : 'GREEK SMALL LETTER EPSILON WITH TONOS', + 942 : 'GREEK SMALL LETTER ETA WITH TONOS', + 943 : 'GREEK SMALL LETTER IOTA WITH TONOS', + 944 : 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS', + 945 : 'GREEK SMALL LETTER ALPHA', + 946 : 'GREEK SMALL LETTER BETA', + 947 : 'GREEK SMALL LETTER GAMMA', + 948 : 'GREEK SMALL LETTER DELTA', + 949 : 'GREEK SMALL LETTER EPSILON', + 950 : 'GREEK SMALL LETTER ZETA', + 951 : 'GREEK SMALL LETTER ETA', + 952 : 'GREEK SMALL LETTER THETA', + 953 : 'GREEK SMALL LETTER IOTA', + 954 : 'GREEK SMALL LETTER KAPPA', + 955 : 'GREEK SMALL LETTER LAMDA', + 956 : 'GREEK SMALL LETTER MU', + 957 : 'GREEK SMALL LETTER NU', + 958 : 'GREEK SMALL LETTER XI', + 959 : 'GREEK SMALL LETTER OMICRON', + 960 : 'GREEK SMALL LETTER PI', + 961 : 'GREEK SMALL LETTER RHO', + 962 : 'GREEK SMALL LETTER FINAL SIGMA', + 963 : 'GREEK SMALL LETTER SIGMA', + 964 : 'GREEK SMALL LETTER TAU', + 965 : 'GREEK SMALL LETTER UPSILON', + 966 : 'GREEK SMALL LETTER PHI', + 967 : 'GREEK SMALL LETTER CHI', + 968 : 'GREEK SMALL LETTER PSI', + 969 : 'GREEK SMALL LETTER OMEGA', + 970 : 'GREEK SMALL LETTER IOTA WITH DIALYTIKA', + 971 : 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA', + 972 : 'GREEK SMALL LETTER OMICRON WITH TONOS', + 973 : 'GREEK SMALL LETTER UPSILON WITH TONOS', + 974 : 'GREEK SMALL LETTER OMEGA WITH TONOS', + 976 : 'GREEK BETA SYMBOL', + 977 : 'GREEK THETA SYMBOL', + 978 : 'GREEK UPSILON WITH HOOK SYMBOL', + 979 : 'GREEK UPSILON WITH ACUTE AND HOOK SYMBOL', + 980 : 'GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL', + 981 : 'GREEK PHI SYMBOL', + 982 : 'GREEK PI SYMBOL', + 983 : 'GREEK KAI SYMBOL', + 984 : 'GREEK LETTER ARCHAIC KOPPA', + 985 : 'GREEK SMALL LETTER ARCHAIC KOPPA', + 986 : 'GREEK LETTER STIGMA', + 987 : 'GREEK SMALL LETTER STIGMA', + 988 : 'GREEK LETTER DIGAMMA', + 989 : 'GREEK SMALL LETTER DIGAMMA', + 990 : 'GREEK LETTER KOPPA', + 991 : 'GREEK SMALL LETTER KOPPA', + 992 : 'GREEK LETTER SAMPI', + 993 : 'GREEK SMALL LETTER SAMPI', + 994 : 'COPTIC CAPITAL LETTER SHEI', + 995 : 'COPTIC SMALL LETTER SHEI', + 996 : 'COPTIC CAPITAL LETTER FEI', + 997 : 'COPTIC SMALL LETTER FEI', + 998 : 'COPTIC CAPITAL LETTER KHEI', + 999 : 'COPTIC SMALL LETTER KHEI', + 1000 : 'COPTIC CAPITAL LETTER HORI', + 1001 : 'COPTIC SMALL LETTER HORI', + 1002 : 'COPTIC CAPITAL LETTER GANGIA', + 1003 : 'COPTIC SMALL LETTER GANGIA', + 1004 : 'COPTIC CAPITAL LETTER SHIMA', + 1005 : 'COPTIC SMALL LETTER SHIMA', + 1006 : 'COPTIC CAPITAL LETTER DEI', + 1007 : 'COPTIC SMALL LETTER DEI', + 1008 : 'GREEK KAPPA SYMBOL', + 1009 : 'GREEK RHO SYMBOL', + 1010 : 'GREEK LUNATE SIGMA SYMBOL', + 1011 : 'GREEK LETTER YOT', + 1012 : 'GREEK CAPITAL THETA SYMBOL', + 1013 : 'GREEK LUNATE EPSILON SYMBOL', + 1014 : 'GREEK REVERSED LUNATE EPSILON SYMBOL', + 1024 : 'CYRILLIC CAPITAL LETTER IE WITH GRAVE', + 1025 : 'CYRILLIC CAPITAL LETTER IO', + 1026 : 'CYRILLIC CAPITAL LETTER DJE', + 1027 : 'CYRILLIC CAPITAL LETTER GJE', + 1028 : 'CYRILLIC CAPITAL LETTER UKRAINIAN IE', + 1029 : 'CYRILLIC CAPITAL LETTER DZE', + 1030 : 'CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I', + 1031 : 'CYRILLIC CAPITAL LETTER YI', + 1032 : 'CYRILLIC CAPITAL LETTER JE', + 1033 : 'CYRILLIC CAPITAL LETTER LJE', + 1034 : 'CYRILLIC CAPITAL LETTER NJE', + 1035 : 'CYRILLIC CAPITAL LETTER TSHE', + 1036 : 'CYRILLIC CAPITAL LETTER KJE', + 1037 : 'CYRILLIC CAPITAL LETTER I WITH GRAVE', + 1038 : 'CYRILLIC CAPITAL LETTER SHORT U', + 1039 : 'CYRILLIC CAPITAL LETTER DZHE', + 1040 : 'CYRILLIC CAPITAL LETTER A', + 1041 : 'CYRILLIC CAPITAL LETTER BE', + 1042 : 'CYRILLIC CAPITAL LETTER VE', + 1043 : 'CYRILLIC CAPITAL LETTER GHE', + 1044 : 'CYRILLIC CAPITAL LETTER DE', + 1045 : 'CYRILLIC CAPITAL LETTER IE', + 1046 : 'CYRILLIC CAPITAL LETTER ZHE', + 1047 : 'CYRILLIC CAPITAL LETTER ZE', + 1048 : 'CYRILLIC CAPITAL LETTER I', + 1049 : 'CYRILLIC CAPITAL LETTER SHORT I', + 1050 : 'CYRILLIC CAPITAL LETTER KA', + 1051 : 'CYRILLIC CAPITAL LETTER EL', + 1052 : 'CYRILLIC CAPITAL LETTER EM', + 1053 : 'CYRILLIC CAPITAL LETTER EN', + 1054 : 'CYRILLIC CAPITAL LETTER O', + 1055 : 'CYRILLIC CAPITAL LETTER PE', + 1056 : 'CYRILLIC CAPITAL LETTER ER', + 1057 : 'CYRILLIC CAPITAL LETTER ES', + 1058 : 'CYRILLIC CAPITAL LETTER TE', + 1059 : 'CYRILLIC CAPITAL LETTER U', + 1060 : 'CYRILLIC CAPITAL LETTER EF', + 1061 : 'CYRILLIC CAPITAL LETTER HA', + 1062 : 'CYRILLIC CAPITAL LETTER TSE', + 1063 : 'CYRILLIC CAPITAL LETTER CHE', + 1064 : 'CYRILLIC CAPITAL LETTER SHA', + 1065 : 'CYRILLIC CAPITAL LETTER SHCHA', + 1066 : 'CYRILLIC CAPITAL LETTER HARD SIGN', + 1067 : 'CYRILLIC CAPITAL LETTER YERU', + 1068 : 'CYRILLIC CAPITAL LETTER SOFT SIGN', + 1069 : 'CYRILLIC CAPITAL LETTER E', + 1070 : 'CYRILLIC CAPITAL LETTER YU', + 1071 : 'CYRILLIC CAPITAL LETTER YA', + 1072 : 'CYRILLIC SMALL LETTER A', + 1073 : 'CYRILLIC SMALL LETTER BE', + 1074 : 'CYRILLIC SMALL LETTER VE', + 1075 : 'CYRILLIC SMALL LETTER GHE', + 1076 : 'CYRILLIC SMALL LETTER DE', + 1077 : 'CYRILLIC SMALL LETTER IE', + 1078 : 'CYRILLIC SMALL LETTER ZHE', + 1079 : 'CYRILLIC SMALL LETTER ZE', + 1080 : 'CYRILLIC SMALL LETTER I', + 1081 : 'CYRILLIC SMALL LETTER SHORT I', + 1082 : 'CYRILLIC SMALL LETTER KA', + 1083 : 'CYRILLIC SMALL LETTER EL', + 1084 : 'CYRILLIC SMALL LETTER EM', + 1085 : 'CYRILLIC SMALL LETTER EN', + 1086 : 'CYRILLIC SMALL LETTER O', + 1087 : 'CYRILLIC SMALL LETTER PE', + 1088 : 'CYRILLIC SMALL LETTER ER', + 1089 : 'CYRILLIC SMALL LETTER ES', + 1090 : 'CYRILLIC SMALL LETTER TE', + 1091 : 'CYRILLIC SMALL LETTER U', + 1092 : 'CYRILLIC SMALL LETTER EF', + 1093 : 'CYRILLIC SMALL LETTER HA', + 1094 : 'CYRILLIC SMALL LETTER TSE', + 1095 : 'CYRILLIC SMALL LETTER CHE', + 1096 : 'CYRILLIC SMALL LETTER SHA', + 1097 : 'CYRILLIC SMALL LETTER SHCHA', + 1098 : 'CYRILLIC SMALL LETTER HARD SIGN', + 1099 : 'CYRILLIC SMALL LETTER YERU', + 1100 : 'CYRILLIC SMALL LETTER SOFT SIGN', + 1101 : 'CYRILLIC SMALL LETTER E', + 1102 : 'CYRILLIC SMALL LETTER YU', + 1103 : 'CYRILLIC SMALL LETTER YA', + 1104 : 'CYRILLIC SMALL LETTER IE WITH GRAVE', + 1105 : 'CYRILLIC SMALL LETTER IO', + 1106 : 'CYRILLIC SMALL LETTER DJE', + 1107 : 'CYRILLIC SMALL LETTER GJE', + 1108 : 'CYRILLIC SMALL LETTER UKRAINIAN IE', + 1109 : 'CYRILLIC SMALL LETTER DZE', + 1110 : 'CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I', + 1111 : 'CYRILLIC SMALL LETTER YI', + 1112 : 'CYRILLIC SMALL LETTER JE', + 1113 : 'CYRILLIC SMALL LETTER LJE', + 1114 : 'CYRILLIC SMALL LETTER NJE', + 1115 : 'CYRILLIC SMALL LETTER TSHE', + 1116 : 'CYRILLIC SMALL LETTER KJE', + 1117 : 'CYRILLIC SMALL LETTER I WITH GRAVE', + 1118 : 'CYRILLIC SMALL LETTER SHORT U', + 1119 : 'CYRILLIC SMALL LETTER DZHE', + 1120 : 'CYRILLIC CAPITAL LETTER OMEGA', + 1121 : 'CYRILLIC SMALL LETTER OMEGA', + 1122 : 'CYRILLIC CAPITAL LETTER YAT', + 1123 : 'CYRILLIC SMALL LETTER YAT', + 1124 : 'CYRILLIC CAPITAL LETTER IOTIFIED E', + 1125 : 'CYRILLIC SMALL LETTER IOTIFIED E', + 1126 : 'CYRILLIC CAPITAL LETTER LITTLE YUS', + 1127 : 'CYRILLIC SMALL LETTER LITTLE YUS', + 1128 : 'CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS', + 1129 : 'CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS', + 1130 : 'CYRILLIC CAPITAL LETTER BIG YUS', + 1131 : 'CYRILLIC SMALL LETTER BIG YUS', + 1132 : 'CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS', + 1133 : 'CYRILLIC SMALL LETTER IOTIFIED BIG YUS', + 1134 : 'CYRILLIC CAPITAL LETTER KSI', + 1135 : 'CYRILLIC SMALL LETTER KSI', + 1136 : 'CYRILLIC CAPITAL LETTER PSI', + 1137 : 'CYRILLIC SMALL LETTER PSI', + 1138 : 'CYRILLIC CAPITAL LETTER FITA', + 1139 : 'CYRILLIC SMALL LETTER FITA', + 1140 : 'CYRILLIC CAPITAL LETTER IZHITSA', + 1141 : 'CYRILLIC SMALL LETTER IZHITSA', + 1142 : 'CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT', + 1143 : 'CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT', + 1144 : 'CYRILLIC CAPITAL LETTER UK', + 1145 : 'CYRILLIC SMALL LETTER UK', + 1146 : 'CYRILLIC CAPITAL LETTER ROUND OMEGA', + 1147 : 'CYRILLIC SMALL LETTER ROUND OMEGA', + 1148 : 'CYRILLIC CAPITAL LETTER OMEGA WITH TITLO', + 1149 : 'CYRILLIC SMALL LETTER OMEGA WITH TITLO', + 1150 : 'CYRILLIC CAPITAL LETTER OT', + 1151 : 'CYRILLIC SMALL LETTER OT', + 1152 : 'CYRILLIC CAPITAL LETTER KOPPA', + 1153 : 'CYRILLIC SMALL LETTER KOPPA', + 1154 : 'CYRILLIC THOUSANDS SIGN', + 1155 : 'COMBINING CYRILLIC TITLO', + 1156 : 'COMBINING CYRILLIC PALATALIZATION', + 1157 : 'COMBINING CYRILLIC DASIA PNEUMATA', + 1158 : 'COMBINING CYRILLIC PSILI PNEUMATA', + 1160 : 'COMBINING CYRILLIC HUNDRED THOUSANDS SIGN', + 1161 : 'COMBINING CYRILLIC MILLIONS SIGN', + 1162 : 'CYRILLIC CAPITAL LETTER SHORT I WITH TAIL', + 1163 : 'CYRILLIC SMALL LETTER SHORT I WITH TAIL', + 1164 : 'CYRILLIC CAPITAL LETTER SEMISOFT SIGN', + 1165 : 'CYRILLIC SMALL LETTER SEMISOFT SIGN', + 1166 : 'CYRILLIC CAPITAL LETTER ER WITH TICK', + 1167 : 'CYRILLIC SMALL LETTER ER WITH TICK', + 1168 : 'CYRILLIC CAPITAL LETTER GHE WITH UPTURN', + 1169 : 'CYRILLIC SMALL LETTER GHE WITH UPTURN', + 1170 : 'CYRILLIC CAPITAL LETTER GHE WITH STROKE', + 1171 : 'CYRILLIC SMALL LETTER GHE WITH STROKE', + 1172 : 'CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK', + 1173 : 'CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK', + 1174 : 'CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER', + 1175 : 'CYRILLIC SMALL LETTER ZHE WITH DESCENDER', + 1176 : 'CYRILLIC CAPITAL LETTER ZE WITH DESCENDER', + 1177 : 'CYRILLIC SMALL LETTER ZE WITH DESCENDER', + 1178 : 'CYRILLIC CAPITAL LETTER KA WITH DESCENDER', + 1179 : 'CYRILLIC SMALL LETTER KA WITH DESCENDER', + 1180 : 'CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE', + 1181 : 'CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE', + 1182 : 'CYRILLIC CAPITAL LETTER KA WITH STROKE', + 1183 : 'CYRILLIC SMALL LETTER KA WITH STROKE', + 1184 : 'CYRILLIC CAPITAL LETTER BASHKIR KA', + 1185 : 'CYRILLIC SMALL LETTER BASHKIR KA', + 1186 : 'CYRILLIC CAPITAL LETTER EN WITH DESCENDER', + 1187 : 'CYRILLIC SMALL LETTER EN WITH DESCENDER', + 1188 : 'CYRILLIC CAPITAL LIGATURE EN GHE', + 1189 : 'CYRILLIC SMALL LIGATURE EN GHE', + 1190 : 'CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK', + 1191 : 'CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK', + 1192 : 'CYRILLIC CAPITAL LETTER ABKHASIAN HA', + 1193 : 'CYRILLIC SMALL LETTER ABKHASIAN HA', + 1194 : 'CYRILLIC CAPITAL LETTER ES WITH DESCENDER', + 1195 : 'CYRILLIC SMALL LETTER ES WITH DESCENDER', + 1196 : 'CYRILLIC CAPITAL LETTER TE WITH DESCENDER', + 1197 : 'CYRILLIC SMALL LETTER TE WITH DESCENDER', + 1198 : 'CYRILLIC CAPITAL LETTER STRAIGHT U', + 1199 : 'CYRILLIC SMALL LETTER STRAIGHT U', + 1200 : 'CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE', + 1201 : 'CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE', + 1202 : 'CYRILLIC CAPITAL LETTER HA WITH DESCENDER', + 1203 : 'CYRILLIC SMALL LETTER HA WITH DESCENDER', + 1204 : 'CYRILLIC CAPITAL LIGATURE TE TSE', + 1205 : 'CYRILLIC SMALL LIGATURE TE TSE', + 1206 : 'CYRILLIC CAPITAL LETTER CHE WITH DESCENDER', + 1207 : 'CYRILLIC SMALL LETTER CHE WITH DESCENDER', + 1208 : 'CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE', + 1209 : 'CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE', + 1210 : 'CYRILLIC CAPITAL LETTER SHHA', + 1211 : 'CYRILLIC SMALL LETTER SHHA', + 1212 : 'CYRILLIC CAPITAL LETTER ABKHASIAN CHE', + 1213 : 'CYRILLIC SMALL LETTER ABKHASIAN CHE', + 1214 : 'CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER', + 1215 : 'CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER', + 1216 : 'CYRILLIC LETTER PALOCHKA', + 1217 : 'CYRILLIC CAPITAL LETTER ZHE WITH BREVE', + 1218 : 'CYRILLIC SMALL LETTER ZHE WITH BREVE', + 1219 : 'CYRILLIC CAPITAL LETTER KA WITH HOOK', + 1220 : 'CYRILLIC SMALL LETTER KA WITH HOOK', + 1221 : 'CYRILLIC CAPITAL LETTER EL WITH TAIL', + 1222 : 'CYRILLIC SMALL LETTER EL WITH TAIL', + 1223 : 'CYRILLIC CAPITAL LETTER EN WITH HOOK', + 1224 : 'CYRILLIC SMALL LETTER EN WITH HOOK', + 1225 : 'CYRILLIC CAPITAL LETTER EN WITH TAIL', + 1226 : 'CYRILLIC SMALL LETTER EN WITH TAIL', + 1227 : 'CYRILLIC CAPITAL LETTER KHAKASSIAN CHE', + 1228 : 'CYRILLIC SMALL LETTER KHAKASSIAN CHE', + 1229 : 'CYRILLIC CAPITAL LETTER EM WITH TAIL', + 1230 : 'CYRILLIC SMALL LETTER EM WITH TAIL', + 1232 : 'CYRILLIC CAPITAL LETTER A WITH BREVE', + 1233 : 'CYRILLIC SMALL LETTER A WITH BREVE', + 1234 : 'CYRILLIC CAPITAL LETTER A WITH DIAERESIS', + 1235 : 'CYRILLIC SMALL LETTER A WITH DIAERESIS', + 1236 : 'CYRILLIC CAPITAL LIGATURE A IE', + 1237 : 'CYRILLIC SMALL LIGATURE A IE', + 1238 : 'CYRILLIC CAPITAL LETTER IE WITH BREVE', + 1239 : 'CYRILLIC SMALL LETTER IE WITH BREVE', + 1240 : 'CYRILLIC CAPITAL LETTER SCHWA', + 1241 : 'CYRILLIC SMALL LETTER SCHWA', + 1242 : 'CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS', + 1243 : 'CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS', + 1244 : 'CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS', + 1245 : 'CYRILLIC SMALL LETTER ZHE WITH DIAERESIS', + 1246 : 'CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS', + 1247 : 'CYRILLIC SMALL LETTER ZE WITH DIAERESIS', + 1248 : 'CYRILLIC CAPITAL LETTER ABKHASIAN DZE', + 1249 : 'CYRILLIC SMALL LETTER ABKHASIAN DZE', + 1250 : 'CYRILLIC CAPITAL LETTER I WITH MACRON', + 1251 : 'CYRILLIC SMALL LETTER I WITH MACRON', + 1252 : 'CYRILLIC CAPITAL LETTER I WITH DIAERESIS', + 1253 : 'CYRILLIC SMALL LETTER I WITH DIAERESIS', + 1254 : 'CYRILLIC CAPITAL LETTER O WITH DIAERESIS', + 1255 : 'CYRILLIC SMALL LETTER O WITH DIAERESIS', + 1256 : 'CYRILLIC CAPITAL LETTER BARRED O', + 1257 : 'CYRILLIC SMALL LETTER BARRED O', + 1258 : 'CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS', + 1259 : 'CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS', + 1260 : 'CYRILLIC CAPITAL LETTER E WITH DIAERESIS', + 1261 : 'CYRILLIC SMALL LETTER E WITH DIAERESIS', + 1262 : 'CYRILLIC CAPITAL LETTER U WITH MACRON', + 1263 : 'CYRILLIC SMALL LETTER U WITH MACRON', + 1264 : 'CYRILLIC CAPITAL LETTER U WITH DIAERESIS', + 1265 : 'CYRILLIC SMALL LETTER U WITH DIAERESIS', + 1266 : 'CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE', + 1267 : 'CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE', + 1268 : 'CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS', + 1269 : 'CYRILLIC SMALL LETTER CHE WITH DIAERESIS', + 1272 : 'CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS', + 1273 : 'CYRILLIC SMALL LETTER YERU WITH DIAERESIS', + 1280 : 'CYRILLIC CAPITAL LETTER KOMI DE', + 1281 : 'CYRILLIC SMALL LETTER KOMI DE', + 1282 : 'CYRILLIC CAPITAL LETTER KOMI DJE', + 1283 : 'CYRILLIC SMALL LETTER KOMI DJE', + 1284 : 'CYRILLIC CAPITAL LETTER KOMI ZJE', + 1285 : 'CYRILLIC SMALL LETTER KOMI ZJE', + 1286 : 'CYRILLIC CAPITAL LETTER KOMI DZJE', + 1287 : 'CYRILLIC SMALL LETTER KOMI DZJE', + 1288 : 'CYRILLIC CAPITAL LETTER KOMI LJE', + 1289 : 'CYRILLIC SMALL LETTER KOMI LJE', + 1290 : 'CYRILLIC CAPITAL LETTER KOMI NJE', + 1291 : 'CYRILLIC SMALL LETTER KOMI NJE', + 1292 : 'CYRILLIC CAPITAL LETTER KOMI SJE', + 1293 : 'CYRILLIC SMALL LETTER KOMI SJE', + 1294 : 'CYRILLIC CAPITAL LETTER KOMI TJE', + 1295 : 'CYRILLIC SMALL LETTER KOMI TJE', + 1329 : 'ARMENIAN CAPITAL LETTER AYB', + 1330 : 'ARMENIAN CAPITAL LETTER BEN', + 1331 : 'ARMENIAN CAPITAL LETTER GIM', + 1332 : 'ARMENIAN CAPITAL LETTER DA', + 1333 : 'ARMENIAN CAPITAL LETTER ECH', + 1334 : 'ARMENIAN CAPITAL LETTER ZA', + 1335 : 'ARMENIAN CAPITAL LETTER EH', + 1336 : 'ARMENIAN CAPITAL LETTER ET', + 1337 : 'ARMENIAN CAPITAL LETTER TO', + 1338 : 'ARMENIAN CAPITAL LETTER ZHE', + 1339 : 'ARMENIAN CAPITAL LETTER INI', + 1340 : 'ARMENIAN CAPITAL LETTER LIWN', + 1341 : 'ARMENIAN CAPITAL LETTER XEH', + 1342 : 'ARMENIAN CAPITAL LETTER CA', + 1343 : 'ARMENIAN CAPITAL LETTER KEN', + 1344 : 'ARMENIAN CAPITAL LETTER HO', + 1345 : 'ARMENIAN CAPITAL LETTER JA', + 1346 : 'ARMENIAN CAPITAL LETTER GHAD', + 1347 : 'ARMENIAN CAPITAL LETTER CHEH', + 1348 : 'ARMENIAN CAPITAL LETTER MEN', + 1349 : 'ARMENIAN CAPITAL LETTER YI', + 1350 : 'ARMENIAN CAPITAL LETTER NOW', + 1351 : 'ARMENIAN CAPITAL LETTER SHA', + 1352 : 'ARMENIAN CAPITAL LETTER VO', + 1353 : 'ARMENIAN CAPITAL LETTER CHA', + 1354 : 'ARMENIAN CAPITAL LETTER PEH', + 1355 : 'ARMENIAN CAPITAL LETTER JHEH', + 1356 : 'ARMENIAN CAPITAL LETTER RA', + 1357 : 'ARMENIAN CAPITAL LETTER SEH', + 1358 : 'ARMENIAN CAPITAL LETTER VEW', + 1359 : 'ARMENIAN CAPITAL LETTER TIWN', + 1360 : 'ARMENIAN CAPITAL LETTER REH', + 1361 : 'ARMENIAN CAPITAL LETTER CO', + 1362 : 'ARMENIAN CAPITAL LETTER YIWN', + 1363 : 'ARMENIAN CAPITAL LETTER PIWR', + 1364 : 'ARMENIAN CAPITAL LETTER KEH', + 1365 : 'ARMENIAN CAPITAL LETTER OH', + 1366 : 'ARMENIAN CAPITAL LETTER FEH', + 1369 : 'ARMENIAN MODIFIER LETTER LEFT HALF RING', + 1370 : 'ARMENIAN APOSTROPHE', + 1371 : 'ARMENIAN EMPHASIS MARK', + 1372 : 'ARMENIAN EXCLAMATION MARK', + 1373 : 'ARMENIAN COMMA', + 1374 : 'ARMENIAN QUESTION MARK', + 1375 : 'ARMENIAN ABBREVIATION MARK', + 1377 : 'ARMENIAN SMALL LETTER AYB', + 1378 : 'ARMENIAN SMALL LETTER BEN', + 1379 : 'ARMENIAN SMALL LETTER GIM', + 1380 : 'ARMENIAN SMALL LETTER DA', + 1381 : 'ARMENIAN SMALL LETTER ECH', + 1382 : 'ARMENIAN SMALL LETTER ZA', + 1383 : 'ARMENIAN SMALL LETTER EH', + 1384 : 'ARMENIAN SMALL LETTER ET', + 1385 : 'ARMENIAN SMALL LETTER TO', + 1386 : 'ARMENIAN SMALL LETTER ZHE', + 1387 : 'ARMENIAN SMALL LETTER INI', + 1388 : 'ARMENIAN SMALL LETTER LIWN', + 1389 : 'ARMENIAN SMALL LETTER XEH', + 1390 : 'ARMENIAN SMALL LETTER CA', + 1391 : 'ARMENIAN SMALL LETTER KEN', + 1392 : 'ARMENIAN SMALL LETTER HO', + 1393 : 'ARMENIAN SMALL LETTER JA', + 1394 : 'ARMENIAN SMALL LETTER GHAD', + 1395 : 'ARMENIAN SMALL LETTER CHEH', + 1396 : 'ARMENIAN SMALL LETTER MEN', + 1397 : 'ARMENIAN SMALL LETTER YI', + 1398 : 'ARMENIAN SMALL LETTER NOW', + 1399 : 'ARMENIAN SMALL LETTER SHA', + 1400 : 'ARMENIAN SMALL LETTER VO', + 1401 : 'ARMENIAN SMALL LETTER CHA', + 1402 : 'ARMENIAN SMALL LETTER PEH', + 1403 : 'ARMENIAN SMALL LETTER JHEH', + 1404 : 'ARMENIAN SMALL LETTER RA', + 1405 : 'ARMENIAN SMALL LETTER SEH', + 1406 : 'ARMENIAN SMALL LETTER VEW', + 1407 : 'ARMENIAN SMALL LETTER TIWN', + 1408 : 'ARMENIAN SMALL LETTER REH', + 1409 : 'ARMENIAN SMALL LETTER CO', + 1410 : 'ARMENIAN SMALL LETTER YIWN', + 1411 : 'ARMENIAN SMALL LETTER PIWR', + 1412 : 'ARMENIAN SMALL LETTER KEH', + 1413 : 'ARMENIAN SMALL LETTER OH', + 1414 : 'ARMENIAN SMALL LETTER FEH', + 1415 : 'ARMENIAN SMALL LIGATURE ECH YIWN', + 1417 : 'ARMENIAN FULL STOP', + 1418 : 'ARMENIAN HYPHEN', + 1425 : 'HEBREW ACCENT ETNAHTA', + 1426 : 'HEBREW ACCENT SEGOL', + 1427 : 'HEBREW ACCENT SHALSHELET', + 1428 : 'HEBREW ACCENT ZAQEF QATAN', + 1429 : 'HEBREW ACCENT ZAQEF GADOL', + 1430 : 'HEBREW ACCENT TIPEHA', + 1431 : 'HEBREW ACCENT REVIA', + 1432 : 'HEBREW ACCENT ZARQA', + 1433 : 'HEBREW ACCENT PASHTA', + 1434 : 'HEBREW ACCENT YETIV', + 1435 : 'HEBREW ACCENT TEVIR', + 1436 : 'HEBREW ACCENT GERESH', + 1437 : 'HEBREW ACCENT GERESH MUQDAM', + 1438 : 'HEBREW ACCENT GERSHAYIM', + 1439 : 'HEBREW ACCENT QARNEY PARA', + 1440 : 'HEBREW ACCENT TELISHA GEDOLA', + 1441 : 'HEBREW ACCENT PAZER', + 1443 : 'HEBREW ACCENT MUNAH', + 1444 : 'HEBREW ACCENT MAHAPAKH', + 1445 : 'HEBREW ACCENT MERKHA', + 1446 : 'HEBREW ACCENT MERKHA KEFULA', + 1447 : 'HEBREW ACCENT DARGA', + 1448 : 'HEBREW ACCENT QADMA', + 1449 : 'HEBREW ACCENT TELISHA QETANA', + 1450 : 'HEBREW ACCENT YERAH BEN YOMO', + 1451 : 'HEBREW ACCENT OLE', + 1452 : 'HEBREW ACCENT ILUY', + 1453 : 'HEBREW ACCENT DEHI', + 1454 : 'HEBREW ACCENT ZINOR', + 1455 : 'HEBREW MARK MASORA CIRCLE', + 1456 : 'HEBREW POINT SHEVA', + 1457 : 'HEBREW POINT HATAF SEGOL', + 1458 : 'HEBREW POINT HATAF PATAH', + 1459 : 'HEBREW POINT HATAF QAMATS', + 1460 : 'HEBREW POINT HIRIQ', + 1461 : 'HEBREW POINT TSERE', + 1462 : 'HEBREW POINT SEGOL', + 1463 : 'HEBREW POINT PATAH', + 1464 : 'HEBREW POINT QAMATS', + 1465 : 'HEBREW POINT HOLAM', + 1467 : 'HEBREW POINT QUBUTS', + 1468 : 'HEBREW POINT DAGESH OR MAPIQ', + 1469 : 'HEBREW POINT METEG', + 1470 : 'HEBREW PUNCTUATION MAQAF', + 1471 : 'HEBREW POINT RAFE', + 1472 : 'HEBREW PUNCTUATION PASEQ', + 1473 : 'HEBREW POINT SHIN DOT', + 1474 : 'HEBREW POINT SIN DOT', + 1475 : 'HEBREW PUNCTUATION SOF PASUQ', + 1476 : 'HEBREW MARK UPPER DOT', + 1488 : 'HEBREW LETTER ALEF', + 1489 : 'HEBREW LETTER BET', + 1490 : 'HEBREW LETTER GIMEL', + 1491 : 'HEBREW LETTER DALET', + 1492 : 'HEBREW LETTER HE', + 1493 : 'HEBREW LETTER VAV', + 1494 : 'HEBREW LETTER ZAYIN', + 1495 : 'HEBREW LETTER HET', + 1496 : 'HEBREW LETTER TET', + 1497 : 'HEBREW LETTER YOD', + 1498 : 'HEBREW LETTER FINAL KAF', + 1499 : 'HEBREW LETTER KAF', + 1500 : 'HEBREW LETTER LAMED', + 1501 : 'HEBREW LETTER FINAL MEM', + 1502 : 'HEBREW LETTER MEM', + 1503 : 'HEBREW LETTER FINAL NUN', + 1504 : 'HEBREW LETTER NUN', + 1505 : 'HEBREW LETTER SAMEKH', + 1506 : 'HEBREW LETTER AYIN', + 1507 : 'HEBREW LETTER FINAL PE', + 1508 : 'HEBREW LETTER PE', + 1509 : 'HEBREW LETTER FINAL TSADI', + 1510 : 'HEBREW LETTER TSADI', + 1511 : 'HEBREW LETTER QOF', + 1512 : 'HEBREW LETTER RESH', + 1513 : 'HEBREW LETTER SHIN', + 1514 : 'HEBREW LETTER TAV', + 1520 : 'HEBREW LIGATURE YIDDISH DOUBLE VAV', + 1521 : 'HEBREW LIGATURE YIDDISH VAV YOD', + 1522 : 'HEBREW LIGATURE YIDDISH DOUBLE YOD', + 1523 : 'HEBREW PUNCTUATION GERESH', + 1524 : 'HEBREW PUNCTUATION GERSHAYIM', + 1548 : 'ARABIC COMMA', + 1563 : 'ARABIC SEMICOLON', + 1567 : 'ARABIC QUESTION MARK', + 1569 : 'ARABIC LETTER HAMZA', + 1570 : 'ARABIC LETTER ALEF WITH MADDA ABOVE', + 1571 : 'ARABIC LETTER ALEF WITH HAMZA ABOVE', + 1572 : 'ARABIC LETTER WAW WITH HAMZA ABOVE', + 1573 : 'ARABIC LETTER ALEF WITH HAMZA BELOW', + 1574 : 'ARABIC LETTER YEH WITH HAMZA ABOVE', + 1575 : 'ARABIC LETTER ALEF', + 1576 : 'ARABIC LETTER BEH', + 1577 : 'ARABIC LETTER TEH MARBUTA', + 1578 : 'ARABIC LETTER TEH', + 1579 : 'ARABIC LETTER THEH', + 1580 : 'ARABIC LETTER JEEM', + 1581 : 'ARABIC LETTER HAH', + 1582 : 'ARABIC LETTER KHAH', + 1583 : 'ARABIC LETTER DAL', + 1584 : 'ARABIC LETTER THAL', + 1585 : 'ARABIC LETTER REH', + 1586 : 'ARABIC LETTER ZAIN', + 1587 : 'ARABIC LETTER SEEN', + 1588 : 'ARABIC LETTER SHEEN', + 1589 : 'ARABIC LETTER SAD', + 1590 : 'ARABIC LETTER DAD', + 1591 : 'ARABIC LETTER TAH', + 1592 : 'ARABIC LETTER ZAH', + 1593 : 'ARABIC LETTER AIN', + 1594 : 'ARABIC LETTER GHAIN', + 1600 : 'ARABIC TATWEEL', + 1601 : 'ARABIC LETTER FEH', + 1602 : 'ARABIC LETTER QAF', + 1603 : 'ARABIC LETTER KAF', + 1604 : 'ARABIC LETTER LAM', + 1605 : 'ARABIC LETTER MEEM', + 1606 : 'ARABIC LETTER NOON', + 1607 : 'ARABIC LETTER HEH', + 1608 : 'ARABIC LETTER WAW', + 1609 : 'ARABIC LETTER ALEF MAKSURA', + 1610 : 'ARABIC LETTER YEH', + 1611 : 'ARABIC FATHATAN', + 1612 : 'ARABIC DAMMATAN', + 1613 : 'ARABIC KASRATAN', + 1614 : 'ARABIC FATHA', + 1615 : 'ARABIC DAMMA', + 1616 : 'ARABIC KASRA', + 1617 : 'ARABIC SHADDA', + 1618 : 'ARABIC SUKUN', + 1619 : 'ARABIC MADDAH ABOVE', + 1620 : 'ARABIC HAMZA ABOVE', + 1621 : 'ARABIC HAMZA BELOW', + 1632 : 'ARABIC-INDIC DIGIT ZERO', + 1633 : 'ARABIC-INDIC DIGIT ONE', + 1634 : 'ARABIC-INDIC DIGIT TWO', + 1635 : 'ARABIC-INDIC DIGIT THREE', + 1636 : 'ARABIC-INDIC DIGIT FOUR', + 1637 : 'ARABIC-INDIC DIGIT FIVE', + 1638 : 'ARABIC-INDIC DIGIT SIX', + 1639 : 'ARABIC-INDIC DIGIT SEVEN', + 1640 : 'ARABIC-INDIC DIGIT EIGHT', + 1641 : 'ARABIC-INDIC DIGIT NINE', + 1642 : 'ARABIC PERCENT SIGN', + 1643 : 'ARABIC DECIMAL SEPARATOR', + 1644 : 'ARABIC THOUSANDS SEPARATOR', + 1645 : 'ARABIC FIVE POINTED STAR', + 1646 : 'ARABIC LETTER DOTLESS BEH', + 1647 : 'ARABIC LETTER DOTLESS QAF', + 1648 : 'ARABIC LETTER SUPERSCRIPT ALEF', + 1649 : 'ARABIC LETTER ALEF WASLA', + 1650 : 'ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE', + 1651 : 'ARABIC LETTER ALEF WITH WAVY HAMZA BELOW', + 1652 : 'ARABIC LETTER HIGH HAMZA', + 1653 : 'ARABIC LETTER HIGH HAMZA ALEF', + 1654 : 'ARABIC LETTER HIGH HAMZA WAW', + 1655 : 'ARABIC LETTER U WITH HAMZA ABOVE', + 1656 : 'ARABIC LETTER HIGH HAMZA YEH', + 1657 : 'ARABIC LETTER TTEH', + 1658 : 'ARABIC LETTER TTEHEH', + 1659 : 'ARABIC LETTER BEEH', + 1660 : 'ARABIC LETTER TEH WITH RING', + 1661 : 'ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS', + 1662 : 'ARABIC LETTER PEH', + 1663 : 'ARABIC LETTER TEHEH', + 1664 : 'ARABIC LETTER BEHEH', + 1665 : 'ARABIC LETTER HAH WITH HAMZA ABOVE', + 1666 : 'ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE', + 1667 : 'ARABIC LETTER NYEH', + 1668 : 'ARABIC LETTER DYEH', + 1669 : 'ARABIC LETTER HAH WITH THREE DOTS ABOVE', + 1670 : 'ARABIC LETTER TCHEH', + 1671 : 'ARABIC LETTER TCHEHEH', + 1672 : 'ARABIC LETTER DDAL', + 1673 : 'ARABIC LETTER DAL WITH RING', + 1674 : 'ARABIC LETTER DAL WITH DOT BELOW', + 1675 : 'ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH', + 1676 : 'ARABIC LETTER DAHAL', + 1677 : 'ARABIC LETTER DDAHAL', + 1678 : 'ARABIC LETTER DUL', + 1679 : 'ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS', + 1680 : 'ARABIC LETTER DAL WITH FOUR DOTS ABOVE', + 1681 : 'ARABIC LETTER RREH', + 1682 : 'ARABIC LETTER REH WITH SMALL V', + 1683 : 'ARABIC LETTER REH WITH RING', + 1684 : 'ARABIC LETTER REH WITH DOT BELOW', + 1685 : 'ARABIC LETTER REH WITH SMALL V BELOW', + 1686 : 'ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE', + 1687 : 'ARABIC LETTER REH WITH TWO DOTS ABOVE', + 1688 : 'ARABIC LETTER JEH', + 1689 : 'ARABIC LETTER REH WITH FOUR DOTS ABOVE', + 1690 : 'ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE', + 1691 : 'ARABIC LETTER SEEN WITH THREE DOTS BELOW', + 1692 : 'ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE', + 1693 : 'ARABIC LETTER SAD WITH TWO DOTS BELOW', + 1694 : 'ARABIC LETTER SAD WITH THREE DOTS ABOVE', + 1695 : 'ARABIC LETTER TAH WITH THREE DOTS ABOVE', + 1696 : 'ARABIC LETTER AIN WITH THREE DOTS ABOVE', + 1697 : 'ARABIC LETTER DOTLESS FEH', + 1698 : 'ARABIC LETTER FEH WITH DOT MOVED BELOW', + 1699 : 'ARABIC LETTER FEH WITH DOT BELOW', + 1700 : 'ARABIC LETTER VEH', + 1701 : 'ARABIC LETTER FEH WITH THREE DOTS BELOW', + 1702 : 'ARABIC LETTER PEHEH', + 1703 : 'ARABIC LETTER QAF WITH DOT ABOVE', + 1704 : 'ARABIC LETTER QAF WITH THREE DOTS ABOVE', + 1705 : 'ARABIC LETTER KEHEH', + 1706 : 'ARABIC LETTER SWASH KAF', + 1707 : 'ARABIC LETTER KAF WITH RING', + 1708 : 'ARABIC LETTER KAF WITH DOT ABOVE', + 1709 : 'ARABIC LETTER NG', + 1710 : 'ARABIC LETTER KAF WITH THREE DOTS BELOW', + 1711 : 'ARABIC LETTER GAF', + 1712 : 'ARABIC LETTER GAF WITH RING', + 1713 : 'ARABIC LETTER NGOEH', + 1714 : 'ARABIC LETTER GAF WITH TWO DOTS BELOW', + 1715 : 'ARABIC LETTER GUEH', + 1716 : 'ARABIC LETTER GAF WITH THREE DOTS ABOVE', + 1717 : 'ARABIC LETTER LAM WITH SMALL V', + 1718 : 'ARABIC LETTER LAM WITH DOT ABOVE', + 1719 : 'ARABIC LETTER LAM WITH THREE DOTS ABOVE', + 1720 : 'ARABIC LETTER LAM WITH THREE DOTS BELOW', + 1721 : 'ARABIC LETTER NOON WITH DOT BELOW', + 1722 : 'ARABIC LETTER NOON GHUNNA', + 1723 : 'ARABIC LETTER RNOON', + 1724 : 'ARABIC LETTER NOON WITH RING', + 1725 : 'ARABIC LETTER NOON WITH THREE DOTS ABOVE', + 1726 : 'ARABIC LETTER HEH DOACHASHMEE', + 1727 : 'ARABIC LETTER TCHEH WITH DOT ABOVE', + 1728 : 'ARABIC LETTER HEH WITH YEH ABOVE', + 1729 : 'ARABIC LETTER HEH GOAL', + 1730 : 'ARABIC LETTER HEH GOAL WITH HAMZA ABOVE', + 1731 : 'ARABIC LETTER TEH MARBUTA GOAL', + 1732 : 'ARABIC LETTER WAW WITH RING', + 1733 : 'ARABIC LETTER KIRGHIZ OE', + 1734 : 'ARABIC LETTER OE', + 1735 : 'ARABIC LETTER U', + 1736 : 'ARABIC LETTER YU', + 1737 : 'ARABIC LETTER KIRGHIZ YU', + 1738 : 'ARABIC LETTER WAW WITH TWO DOTS ABOVE', + 1739 : 'ARABIC LETTER VE', + 1740 : 'ARABIC LETTER FARSI YEH', + 1741 : 'ARABIC LETTER YEH WITH TAIL', + 1742 : 'ARABIC LETTER YEH WITH SMALL V', + 1743 : 'ARABIC LETTER WAW WITH DOT ABOVE', + 1744 : 'ARABIC LETTER E', + 1745 : 'ARABIC LETTER YEH WITH THREE DOTS BELOW', + 1746 : 'ARABIC LETTER YEH BARREE', + 1747 : 'ARABIC LETTER YEH BARREE WITH HAMZA ABOVE', + 1748 : 'ARABIC FULL STOP', + 1749 : 'ARABIC LETTER AE', + 1750 : 'ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA', + 1751 : 'ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA', + 1752 : 'ARABIC SMALL HIGH MEEM INITIAL FORM', + 1753 : 'ARABIC SMALL HIGH LAM ALEF', + 1754 : 'ARABIC SMALL HIGH JEEM', + 1755 : 'ARABIC SMALL HIGH THREE DOTS', + 1756 : 'ARABIC SMALL HIGH SEEN', + 1757 : 'ARABIC END OF AYAH', + 1758 : 'ARABIC START OF RUB EL HIZB', + 1759 : 'ARABIC SMALL HIGH ROUNDED ZERO', + 1760 : 'ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO', + 1761 : 'ARABIC SMALL HIGH DOTLESS HEAD OF KHAH', + 1762 : 'ARABIC SMALL HIGH MEEM ISOLATED FORM', + 1763 : 'ARABIC SMALL LOW SEEN', + 1764 : 'ARABIC SMALL HIGH MADDA', + 1765 : 'ARABIC SMALL WAW', + 1766 : 'ARABIC SMALL YEH', + 1767 : 'ARABIC SMALL HIGH YEH', + 1768 : 'ARABIC SMALL HIGH NOON', + 1769 : 'ARABIC PLACE OF SAJDAH', + 1770 : 'ARABIC EMPTY CENTRE LOW STOP', + 1771 : 'ARABIC EMPTY CENTRE HIGH STOP', + 1772 : 'ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE', + 1773 : 'ARABIC SMALL LOW MEEM', + 1776 : 'EXTENDED ARABIC-INDIC DIGIT ZERO', + 1777 : 'EXTENDED ARABIC-INDIC DIGIT ONE', + 1778 : 'EXTENDED ARABIC-INDIC DIGIT TWO', + 1779 : 'EXTENDED ARABIC-INDIC DIGIT THREE', + 1780 : 'EXTENDED ARABIC-INDIC DIGIT FOUR', + 1781 : 'EXTENDED ARABIC-INDIC DIGIT FIVE', + 1782 : 'EXTENDED ARABIC-INDIC DIGIT SIX', + 1783 : 'EXTENDED ARABIC-INDIC DIGIT SEVEN', + 1784 : 'EXTENDED ARABIC-INDIC DIGIT EIGHT', + 1785 : 'EXTENDED ARABIC-INDIC DIGIT NINE', + 1786 : 'ARABIC LETTER SHEEN WITH DOT BELOW', + 1787 : 'ARABIC LETTER DAD WITH DOT BELOW', + 1788 : 'ARABIC LETTER GHAIN WITH DOT BELOW', + 1789 : 'ARABIC SIGN SINDHI AMPERSAND', + 1790 : 'ARABIC SIGN SINDHI POSTPOSITION MEN', + 1792 : 'SYRIAC END OF PARAGRAPH', + 1793 : 'SYRIAC SUPRALINEAR FULL STOP', + 1794 : 'SYRIAC SUBLINEAR FULL STOP', + 1795 : 'SYRIAC SUPRALINEAR COLON', + 1796 : 'SYRIAC SUBLINEAR COLON', + 1797 : 'SYRIAC HORIZONTAL COLON', + 1798 : 'SYRIAC COLON SKEWED LEFT', + 1799 : 'SYRIAC COLON SKEWED RIGHT', + 1800 : 'SYRIAC SUPRALINEAR COLON SKEWED LEFT', + 1801 : 'SYRIAC SUBLINEAR COLON SKEWED RIGHT', + 1802 : 'SYRIAC CONTRACTION', + 1803 : 'SYRIAC HARKLEAN OBELUS', + 1804 : 'SYRIAC HARKLEAN METOBELUS', + 1805 : 'SYRIAC HARKLEAN ASTERISCUS', + 1807 : 'SYRIAC ABBREVIATION MARK', + 1808 : 'SYRIAC LETTER ALAPH', + 1809 : 'SYRIAC LETTER SUPERSCRIPT ALAPH', + 1810 : 'SYRIAC LETTER BETH', + 1811 : 'SYRIAC LETTER GAMAL', + 1812 : 'SYRIAC LETTER GAMAL GARSHUNI', + 1813 : 'SYRIAC LETTER DALATH', + 1814 : 'SYRIAC LETTER DOTLESS DALATH RISH', + 1815 : 'SYRIAC LETTER HE', + 1816 : 'SYRIAC LETTER WAW', + 1817 : 'SYRIAC LETTER ZAIN', + 1818 : 'SYRIAC LETTER HETH', + 1819 : 'SYRIAC LETTER TETH', + 1820 : 'SYRIAC LETTER TETH GARSHUNI', + 1821 : 'SYRIAC LETTER YUDH', + 1822 : 'SYRIAC LETTER YUDH HE', + 1823 : 'SYRIAC LETTER KAPH', + 1824 : 'SYRIAC LETTER LAMADH', + 1825 : 'SYRIAC LETTER MIM', + 1826 : 'SYRIAC LETTER NUN', + 1827 : 'SYRIAC LETTER SEMKATH', + 1828 : 'SYRIAC LETTER FINAL SEMKATH', + 1829 : 'SYRIAC LETTER E', + 1830 : 'SYRIAC LETTER PE', + 1831 : 'SYRIAC LETTER REVERSED PE', + 1832 : 'SYRIAC LETTER SADHE', + 1833 : 'SYRIAC LETTER QAPH', + 1834 : 'SYRIAC LETTER RISH', + 1835 : 'SYRIAC LETTER SHIN', + 1836 : 'SYRIAC LETTER TAW', + 1840 : 'SYRIAC PTHAHA ABOVE', + 1841 : 'SYRIAC PTHAHA BELOW', + 1842 : 'SYRIAC PTHAHA DOTTED', + 1843 : 'SYRIAC ZQAPHA ABOVE', + 1844 : 'SYRIAC ZQAPHA BELOW', + 1845 : 'SYRIAC ZQAPHA DOTTED', + 1846 : 'SYRIAC RBASA ABOVE', + 1847 : 'SYRIAC RBASA BELOW', + 1848 : 'SYRIAC DOTTED ZLAMA HORIZONTAL', + 1849 : 'SYRIAC DOTTED ZLAMA ANGULAR', + 1850 : 'SYRIAC HBASA ABOVE', + 1851 : 'SYRIAC HBASA BELOW', + 1852 : 'SYRIAC HBASA-ESASA DOTTED', + 1853 : 'SYRIAC ESASA ABOVE', + 1854 : 'SYRIAC ESASA BELOW', + 1855 : 'SYRIAC RWAHA', + 1856 : 'SYRIAC FEMININE DOT', + 1857 : 'SYRIAC QUSHSHAYA', + 1858 : 'SYRIAC RUKKAKHA', + 1859 : 'SYRIAC TWO VERTICAL DOTS ABOVE', + 1860 : 'SYRIAC TWO VERTICAL DOTS BELOW', + 1861 : 'SYRIAC THREE DOTS ABOVE', + 1862 : 'SYRIAC THREE DOTS BELOW', + 1863 : 'SYRIAC OBLIQUE LINE ABOVE', + 1864 : 'SYRIAC OBLIQUE LINE BELOW', + 1865 : 'SYRIAC MUSIC', + 1866 : 'SYRIAC BARREKH', + 1920 : 'THAANA LETTER HAA', + 1921 : 'THAANA LETTER SHAVIYANI', + 1922 : 'THAANA LETTER NOONU', + 1923 : 'THAANA LETTER RAA', + 1924 : 'THAANA LETTER BAA', + 1925 : 'THAANA LETTER LHAVIYANI', + 1926 : 'THAANA LETTER KAAFU', + 1927 : 'THAANA LETTER ALIFU', + 1928 : 'THAANA LETTER VAAVU', + 1929 : 'THAANA LETTER MEEMU', + 1930 : 'THAANA LETTER FAAFU', + 1931 : 'THAANA LETTER DHAALU', + 1932 : 'THAANA LETTER THAA', + 1933 : 'THAANA LETTER LAAMU', + 1934 : 'THAANA LETTER GAAFU', + 1935 : 'THAANA LETTER GNAVIYANI', + 1936 : 'THAANA LETTER SEENU', + 1937 : 'THAANA LETTER DAVIYANI', + 1938 : 'THAANA LETTER ZAVIYANI', + 1939 : 'THAANA LETTER TAVIYANI', + 1940 : 'THAANA LETTER YAA', + 1941 : 'THAANA LETTER PAVIYANI', + 1942 : 'THAANA LETTER JAVIYANI', + 1943 : 'THAANA LETTER CHAVIYANI', + 1944 : 'THAANA LETTER TTAA', + 1945 : 'THAANA LETTER HHAA', + 1946 : 'THAANA LETTER KHAA', + 1947 : 'THAANA LETTER THAALU', + 1948 : 'THAANA LETTER ZAA', + 1949 : 'THAANA LETTER SHEENU', + 1950 : 'THAANA LETTER SAADHU', + 1951 : 'THAANA LETTER DAADHU', + 1952 : 'THAANA LETTER TO', + 1953 : 'THAANA LETTER ZO', + 1954 : 'THAANA LETTER AINU', + 1955 : 'THAANA LETTER GHAINU', + 1956 : 'THAANA LETTER QAAFU', + 1957 : 'THAANA LETTER WAAVU', + 1958 : 'THAANA ABAFILI', + 1959 : 'THAANA AABAAFILI', + 1960 : 'THAANA IBIFILI', + 1961 : 'THAANA EEBEEFILI', + 1962 : 'THAANA UBUFILI', + 1963 : 'THAANA OOBOOFILI', + 1964 : 'THAANA EBEFILI', + 1965 : 'THAANA EYBEYFILI', + 1966 : 'THAANA OBOFILI', + 1967 : 'THAANA OABOAFILI', + 1968 : 'THAANA SUKUN', + 1969 : 'THAANA LETTER NAA', + 2305 : 'DEVANAGARI SIGN CANDRABINDU', + 2306 : 'DEVANAGARI SIGN ANUSVARA', + 2307 : 'DEVANAGARI SIGN VISARGA', + 2309 : 'DEVANAGARI LETTER A', + 2310 : 'DEVANAGARI LETTER AA', + 2311 : 'DEVANAGARI LETTER I', + 2312 : 'DEVANAGARI LETTER II', + 2313 : 'DEVANAGARI LETTER U', + 2314 : 'DEVANAGARI LETTER UU', + 2315 : 'DEVANAGARI LETTER VOCALIC R', + 2316 : 'DEVANAGARI LETTER VOCALIC L', + 2317 : 'DEVANAGARI LETTER CANDRA E', + 2318 : 'DEVANAGARI LETTER SHORT E', + 2319 : 'DEVANAGARI LETTER E', + 2320 : 'DEVANAGARI LETTER AI', + 2321 : 'DEVANAGARI LETTER CANDRA O', + 2322 : 'DEVANAGARI LETTER SHORT O', + 2323 : 'DEVANAGARI LETTER O', + 2324 : 'DEVANAGARI LETTER AU', + 2325 : 'DEVANAGARI LETTER KA', + 2326 : 'DEVANAGARI LETTER KHA', + 2327 : 'DEVANAGARI LETTER GA', + 2328 : 'DEVANAGARI LETTER GHA', + 2329 : 'DEVANAGARI LETTER NGA', + 2330 : 'DEVANAGARI LETTER CA', + 2331 : 'DEVANAGARI LETTER CHA', + 2332 : 'DEVANAGARI LETTER JA', + 2333 : 'DEVANAGARI LETTER JHA', + 2334 : 'DEVANAGARI LETTER NYA', + 2335 : 'DEVANAGARI LETTER TTA', + 2336 : 'DEVANAGARI LETTER TTHA', + 2337 : 'DEVANAGARI LETTER DDA', + 2338 : 'DEVANAGARI LETTER DDHA', + 2339 : 'DEVANAGARI LETTER NNA', + 2340 : 'DEVANAGARI LETTER TA', + 2341 : 'DEVANAGARI LETTER THA', + 2342 : 'DEVANAGARI LETTER DA', + 2343 : 'DEVANAGARI LETTER DHA', + 2344 : 'DEVANAGARI LETTER NA', + 2345 : 'DEVANAGARI LETTER NNNA', + 2346 : 'DEVANAGARI LETTER PA', + 2347 : 'DEVANAGARI LETTER PHA', + 2348 : 'DEVANAGARI LETTER BA', + 2349 : 'DEVANAGARI LETTER BHA', + 2350 : 'DEVANAGARI LETTER MA', + 2351 : 'DEVANAGARI LETTER YA', + 2352 : 'DEVANAGARI LETTER RA', + 2353 : 'DEVANAGARI LETTER RRA', + 2354 : 'DEVANAGARI LETTER LA', + 2355 : 'DEVANAGARI LETTER LLA', + 2356 : 'DEVANAGARI LETTER LLLA', + 2357 : 'DEVANAGARI LETTER VA', + 2358 : 'DEVANAGARI LETTER SHA', + 2359 : 'DEVANAGARI LETTER SSA', + 2360 : 'DEVANAGARI LETTER SA', + 2361 : 'DEVANAGARI LETTER HA', + 2364 : 'DEVANAGARI SIGN NUKTA', + 2365 : 'DEVANAGARI SIGN AVAGRAHA', + 2366 : 'DEVANAGARI VOWEL SIGN AA', + 2367 : 'DEVANAGARI VOWEL SIGN I', + 2368 : 'DEVANAGARI VOWEL SIGN II', + 2369 : 'DEVANAGARI VOWEL SIGN U', + 2370 : 'DEVANAGARI VOWEL SIGN UU', + 2371 : 'DEVANAGARI VOWEL SIGN VOCALIC R', + 2372 : 'DEVANAGARI VOWEL SIGN VOCALIC RR', + 2373 : 'DEVANAGARI VOWEL SIGN CANDRA E', + 2374 : 'DEVANAGARI VOWEL SIGN SHORT E', + 2375 : 'DEVANAGARI VOWEL SIGN E', + 2376 : 'DEVANAGARI VOWEL SIGN AI', + 2377 : 'DEVANAGARI VOWEL SIGN CANDRA O', + 2378 : 'DEVANAGARI VOWEL SIGN SHORT O', + 2379 : 'DEVANAGARI VOWEL SIGN O', + 2380 : 'DEVANAGARI VOWEL SIGN AU', + 2381 : 'DEVANAGARI SIGN VIRAMA', + 2384 : 'DEVANAGARI OM', + 2385 : 'DEVANAGARI STRESS SIGN UDATTA', + 2386 : 'DEVANAGARI STRESS SIGN ANUDATTA', + 2387 : 'DEVANAGARI GRAVE ACCENT', + 2388 : 'DEVANAGARI ACUTE ACCENT', + 2392 : 'DEVANAGARI LETTER QA', + 2393 : 'DEVANAGARI LETTER KHHA', + 2394 : 'DEVANAGARI LETTER GHHA', + 2395 : 'DEVANAGARI LETTER ZA', + 2396 : 'DEVANAGARI LETTER DDDHA', + 2397 : 'DEVANAGARI LETTER RHA', + 2398 : 'DEVANAGARI LETTER FA', + 2399 : 'DEVANAGARI LETTER YYA', + 2400 : 'DEVANAGARI LETTER VOCALIC RR', + 2401 : 'DEVANAGARI LETTER VOCALIC LL', + 2402 : 'DEVANAGARI VOWEL SIGN VOCALIC L', + 2403 : 'DEVANAGARI VOWEL SIGN VOCALIC LL', + 2404 : 'DEVANAGARI DANDA', + 2405 : 'DEVANAGARI DOUBLE DANDA', + 2406 : 'DEVANAGARI DIGIT ZERO', + 2407 : 'DEVANAGARI DIGIT ONE', + 2408 : 'DEVANAGARI DIGIT TWO', + 2409 : 'DEVANAGARI DIGIT THREE', + 2410 : 'DEVANAGARI DIGIT FOUR', + 2411 : 'DEVANAGARI DIGIT FIVE', + 2412 : 'DEVANAGARI DIGIT SIX', + 2413 : 'DEVANAGARI DIGIT SEVEN', + 2414 : 'DEVANAGARI DIGIT EIGHT', + 2415 : 'DEVANAGARI DIGIT NINE', + 2416 : 'DEVANAGARI ABBREVIATION SIGN', + 2433 : 'BENGALI SIGN CANDRABINDU', + 2434 : 'BENGALI SIGN ANUSVARA', + 2435 : 'BENGALI SIGN VISARGA', + 2437 : 'BENGALI LETTER A', + 2438 : 'BENGALI LETTER AA', + 2439 : 'BENGALI LETTER I', + 2440 : 'BENGALI LETTER II', + 2441 : 'BENGALI LETTER U', + 2442 : 'BENGALI LETTER UU', + 2443 : 'BENGALI LETTER VOCALIC R', + 2444 : 'BENGALI LETTER VOCALIC L', + 2447 : 'BENGALI LETTER E', + 2448 : 'BENGALI LETTER AI', + 2451 : 'BENGALI LETTER O', + 2452 : 'BENGALI LETTER AU', + 2453 : 'BENGALI LETTER KA', + 2454 : 'BENGALI LETTER KHA', + 2455 : 'BENGALI LETTER GA', + 2456 : 'BENGALI LETTER GHA', + 2457 : 'BENGALI LETTER NGA', + 2458 : 'BENGALI LETTER CA', + 2459 : 'BENGALI LETTER CHA', + 2460 : 'BENGALI LETTER JA', + 2461 : 'BENGALI LETTER JHA', + 2462 : 'BENGALI LETTER NYA', + 2463 : 'BENGALI LETTER TTA', + 2464 : 'BENGALI LETTER TTHA', + 2465 : 'BENGALI LETTER DDA', + 2466 : 'BENGALI LETTER DDHA', + 2467 : 'BENGALI LETTER NNA', + 2468 : 'BENGALI LETTER TA', + 2469 : 'BENGALI LETTER THA', + 2470 : 'BENGALI LETTER DA', + 2471 : 'BENGALI LETTER DHA', + 2472 : 'BENGALI LETTER NA', + 2474 : 'BENGALI LETTER PA', + 2475 : 'BENGALI LETTER PHA', + 2476 : 'BENGALI LETTER BA', + 2477 : 'BENGALI LETTER BHA', + 2478 : 'BENGALI LETTER MA', + 2479 : 'BENGALI LETTER YA', + 2480 : 'BENGALI LETTER RA', + 2482 : 'BENGALI LETTER LA', + 2486 : 'BENGALI LETTER SHA', + 2487 : 'BENGALI LETTER SSA', + 2488 : 'BENGALI LETTER SA', + 2489 : 'BENGALI LETTER HA', + 2492 : 'BENGALI SIGN NUKTA', + 2494 : 'BENGALI VOWEL SIGN AA', + 2495 : 'BENGALI VOWEL SIGN I', + 2496 : 'BENGALI VOWEL SIGN II', + 2497 : 'BENGALI VOWEL SIGN U', + 2498 : 'BENGALI VOWEL SIGN UU', + 2499 : 'BENGALI VOWEL SIGN VOCALIC R', + 2500 : 'BENGALI VOWEL SIGN VOCALIC RR', + 2503 : 'BENGALI VOWEL SIGN E', + 2504 : 'BENGALI VOWEL SIGN AI', + 2507 : 'BENGALI VOWEL SIGN O', + 2508 : 'BENGALI VOWEL SIGN AU', + 2509 : 'BENGALI SIGN VIRAMA', + 2519 : 'BENGALI AU LENGTH MARK', + 2524 : 'BENGALI LETTER RRA', + 2525 : 'BENGALI LETTER RHA', + 2527 : 'BENGALI LETTER YYA', + 2528 : 'BENGALI LETTER VOCALIC RR', + 2529 : 'BENGALI LETTER VOCALIC LL', + 2530 : 'BENGALI VOWEL SIGN VOCALIC L', + 2531 : 'BENGALI VOWEL SIGN VOCALIC LL', + 2534 : 'BENGALI DIGIT ZERO', + 2535 : 'BENGALI DIGIT ONE', + 2536 : 'BENGALI DIGIT TWO', + 2537 : 'BENGALI DIGIT THREE', + 2538 : 'BENGALI DIGIT FOUR', + 2539 : 'BENGALI DIGIT FIVE', + 2540 : 'BENGALI DIGIT SIX', + 2541 : 'BENGALI DIGIT SEVEN', + 2542 : 'BENGALI DIGIT EIGHT', + 2543 : 'BENGALI DIGIT NINE', + 2544 : 'BENGALI LETTER RA WITH MIDDLE DIAGONAL', + 2545 : 'BENGALI LETTER RA WITH LOWER DIAGONAL', + 2546 : 'BENGALI RUPEE MARK', + 2547 : 'BENGALI RUPEE SIGN', + 2548 : 'BENGALI CURRENCY NUMERATOR ONE', + 2549 : 'BENGALI CURRENCY NUMERATOR TWO', + 2550 : 'BENGALI CURRENCY NUMERATOR THREE', + 2551 : 'BENGALI CURRENCY NUMERATOR FOUR', + 2552 : 'BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR', + 2553 : 'BENGALI CURRENCY DENOMINATOR SIXTEEN', + 2554 : 'BENGALI ISSHAR', + 2562 : 'GURMUKHI SIGN BINDI', + 2565 : 'GURMUKHI LETTER A', + 2566 : 'GURMUKHI LETTER AA', + 2567 : 'GURMUKHI LETTER I', + 2568 : 'GURMUKHI LETTER II', + 2569 : 'GURMUKHI LETTER U', + 2570 : 'GURMUKHI LETTER UU', + 2575 : 'GURMUKHI LETTER EE', + 2576 : 'GURMUKHI LETTER AI', + 2579 : 'GURMUKHI LETTER OO', + 2580 : 'GURMUKHI LETTER AU', + 2581 : 'GURMUKHI LETTER KA', + 2582 : 'GURMUKHI LETTER KHA', + 2583 : 'GURMUKHI LETTER GA', + 2584 : 'GURMUKHI LETTER GHA', + 2585 : 'GURMUKHI LETTER NGA', + 2586 : 'GURMUKHI LETTER CA', + 2587 : 'GURMUKHI LETTER CHA', + 2588 : 'GURMUKHI LETTER JA', + 2589 : 'GURMUKHI LETTER JHA', + 2590 : 'GURMUKHI LETTER NYA', + 2591 : 'GURMUKHI LETTER TTA', + 2592 : 'GURMUKHI LETTER TTHA', + 2593 : 'GURMUKHI LETTER DDA', + 2594 : 'GURMUKHI LETTER DDHA', + 2595 : 'GURMUKHI LETTER NNA', + 2596 : 'GURMUKHI LETTER TA', + 2597 : 'GURMUKHI LETTER THA', + 2598 : 'GURMUKHI LETTER DA', + 2599 : 'GURMUKHI LETTER DHA', + 2600 : 'GURMUKHI LETTER NA', + 2602 : 'GURMUKHI LETTER PA', + 2603 : 'GURMUKHI LETTER PHA', + 2604 : 'GURMUKHI LETTER BA', + 2605 : 'GURMUKHI LETTER BHA', + 2606 : 'GURMUKHI LETTER MA', + 2607 : 'GURMUKHI LETTER YA', + 2608 : 'GURMUKHI LETTER RA', + 2610 : 'GURMUKHI LETTER LA', + 2611 : 'GURMUKHI LETTER LLA', + 2613 : 'GURMUKHI LETTER VA', + 2614 : 'GURMUKHI LETTER SHA', + 2616 : 'GURMUKHI LETTER SA', + 2617 : 'GURMUKHI LETTER HA', + 2620 : 'GURMUKHI SIGN NUKTA', + 2622 : 'GURMUKHI VOWEL SIGN AA', + 2623 : 'GURMUKHI VOWEL SIGN I', + 2624 : 'GURMUKHI VOWEL SIGN II', + 2625 : 'GURMUKHI VOWEL SIGN U', + 2626 : 'GURMUKHI VOWEL SIGN UU', + 2631 : 'GURMUKHI VOWEL SIGN EE', + 2632 : 'GURMUKHI VOWEL SIGN AI', + 2635 : 'GURMUKHI VOWEL SIGN OO', + 2636 : 'GURMUKHI VOWEL SIGN AU', + 2637 : 'GURMUKHI SIGN VIRAMA', + 2649 : 'GURMUKHI LETTER KHHA', + 2650 : 'GURMUKHI LETTER GHHA', + 2651 : 'GURMUKHI LETTER ZA', + 2652 : 'GURMUKHI LETTER RRA', + 2654 : 'GURMUKHI LETTER FA', + 2662 : 'GURMUKHI DIGIT ZERO', + 2663 : 'GURMUKHI DIGIT ONE', + 2664 : 'GURMUKHI DIGIT TWO', + 2665 : 'GURMUKHI DIGIT THREE', + 2666 : 'GURMUKHI DIGIT FOUR', + 2667 : 'GURMUKHI DIGIT FIVE', + 2668 : 'GURMUKHI DIGIT SIX', + 2669 : 'GURMUKHI DIGIT SEVEN', + 2670 : 'GURMUKHI DIGIT EIGHT', + 2671 : 'GURMUKHI DIGIT NINE', + 2672 : 'GURMUKHI TIPPI', + 2673 : 'GURMUKHI ADDAK', + 2674 : 'GURMUKHI IRI', + 2675 : 'GURMUKHI URA', + 2676 : 'GURMUKHI EK ONKAR', + 2689 : 'GUJARATI SIGN CANDRABINDU', + 2690 : 'GUJARATI SIGN ANUSVARA', + 2691 : 'GUJARATI SIGN VISARGA', + 2693 : 'GUJARATI LETTER A', + 2694 : 'GUJARATI LETTER AA', + 2695 : 'GUJARATI LETTER I', + 2696 : 'GUJARATI LETTER II', + 2697 : 'GUJARATI LETTER U', + 2698 : 'GUJARATI LETTER UU', + 2699 : 'GUJARATI LETTER VOCALIC R', + 2701 : 'GUJARATI VOWEL CANDRA E', + 2703 : 'GUJARATI LETTER E', + 2704 : 'GUJARATI LETTER AI', + 2705 : 'GUJARATI VOWEL CANDRA O', + 2707 : 'GUJARATI LETTER O', + 2708 : 'GUJARATI LETTER AU', + 2709 : 'GUJARATI LETTER KA', + 2710 : 'GUJARATI LETTER KHA', + 2711 : 'GUJARATI LETTER GA', + 2712 : 'GUJARATI LETTER GHA', + 2713 : 'GUJARATI LETTER NGA', + 2714 : 'GUJARATI LETTER CA', + 2715 : 'GUJARATI LETTER CHA', + 2716 : 'GUJARATI LETTER JA', + 2717 : 'GUJARATI LETTER JHA', + 2718 : 'GUJARATI LETTER NYA', + 2719 : 'GUJARATI LETTER TTA', + 2720 : 'GUJARATI LETTER TTHA', + 2721 : 'GUJARATI LETTER DDA', + 2722 : 'GUJARATI LETTER DDHA', + 2723 : 'GUJARATI LETTER NNA', + 2724 : 'GUJARATI LETTER TA', + 2725 : 'GUJARATI LETTER THA', + 2726 : 'GUJARATI LETTER DA', + 2727 : 'GUJARATI LETTER DHA', + 2728 : 'GUJARATI LETTER NA', + 2730 : 'GUJARATI LETTER PA', + 2731 : 'GUJARATI LETTER PHA', + 2732 : 'GUJARATI LETTER BA', + 2733 : 'GUJARATI LETTER BHA', + 2734 : 'GUJARATI LETTER MA', + 2735 : 'GUJARATI LETTER YA', + 2736 : 'GUJARATI LETTER RA', + 2738 : 'GUJARATI LETTER LA', + 2739 : 'GUJARATI LETTER LLA', + 2741 : 'GUJARATI LETTER VA', + 2742 : 'GUJARATI LETTER SHA', + 2743 : 'GUJARATI LETTER SSA', + 2744 : 'GUJARATI LETTER SA', + 2745 : 'GUJARATI LETTER HA', + 2748 : 'GUJARATI SIGN NUKTA', + 2749 : 'GUJARATI SIGN AVAGRAHA', + 2750 : 'GUJARATI VOWEL SIGN AA', + 2751 : 'GUJARATI VOWEL SIGN I', + 2752 : 'GUJARATI VOWEL SIGN II', + 2753 : 'GUJARATI VOWEL SIGN U', + 2754 : 'GUJARATI VOWEL SIGN UU', + 2755 : 'GUJARATI VOWEL SIGN VOCALIC R', + 2756 : 'GUJARATI VOWEL SIGN VOCALIC RR', + 2757 : 'GUJARATI VOWEL SIGN CANDRA E', + 2759 : 'GUJARATI VOWEL SIGN E', + 2760 : 'GUJARATI VOWEL SIGN AI', + 2761 : 'GUJARATI VOWEL SIGN CANDRA O', + 2763 : 'GUJARATI VOWEL SIGN O', + 2764 : 'GUJARATI VOWEL SIGN AU', + 2765 : 'GUJARATI SIGN VIRAMA', + 2768 : 'GUJARATI OM', + 2784 : 'GUJARATI LETTER VOCALIC RR', + 2790 : 'GUJARATI DIGIT ZERO', + 2791 : 'GUJARATI DIGIT ONE', + 2792 : 'GUJARATI DIGIT TWO', + 2793 : 'GUJARATI DIGIT THREE', + 2794 : 'GUJARATI DIGIT FOUR', + 2795 : 'GUJARATI DIGIT FIVE', + 2796 : 'GUJARATI DIGIT SIX', + 2797 : 'GUJARATI DIGIT SEVEN', + 2798 : 'GUJARATI DIGIT EIGHT', + 2799 : 'GUJARATI DIGIT NINE', + 2817 : 'ORIYA SIGN CANDRABINDU', + 2818 : 'ORIYA SIGN ANUSVARA', + 2819 : 'ORIYA SIGN VISARGA', + 2821 : 'ORIYA LETTER A', + 2822 : 'ORIYA LETTER AA', + 2823 : 'ORIYA LETTER I', + 2824 : 'ORIYA LETTER II', + 2825 : 'ORIYA LETTER U', + 2826 : 'ORIYA LETTER UU', + 2827 : 'ORIYA LETTER VOCALIC R', + 2828 : 'ORIYA LETTER VOCALIC L', + 2831 : 'ORIYA LETTER E', + 2832 : 'ORIYA LETTER AI', + 2835 : 'ORIYA LETTER O', + 2836 : 'ORIYA LETTER AU', + 2837 : 'ORIYA LETTER KA', + 2838 : 'ORIYA LETTER KHA', + 2839 : 'ORIYA LETTER GA', + 2840 : 'ORIYA LETTER GHA', + 2841 : 'ORIYA LETTER NGA', + 2842 : 'ORIYA LETTER CA', + 2843 : 'ORIYA LETTER CHA', + 2844 : 'ORIYA LETTER JA', + 2845 : 'ORIYA LETTER JHA', + 2846 : 'ORIYA LETTER NYA', + 2847 : 'ORIYA LETTER TTA', + 2848 : 'ORIYA LETTER TTHA', + 2849 : 'ORIYA LETTER DDA', + 2850 : 'ORIYA LETTER DDHA', + 2851 : 'ORIYA LETTER NNA', + 2852 : 'ORIYA LETTER TA', + 2853 : 'ORIYA LETTER THA', + 2854 : 'ORIYA LETTER DA', + 2855 : 'ORIYA LETTER DHA', + 2856 : 'ORIYA LETTER NA', + 2858 : 'ORIYA LETTER PA', + 2859 : 'ORIYA LETTER PHA', + 2860 : 'ORIYA LETTER BA', + 2861 : 'ORIYA LETTER BHA', + 2862 : 'ORIYA LETTER MA', + 2863 : 'ORIYA LETTER YA', + 2864 : 'ORIYA LETTER RA', + 2866 : 'ORIYA LETTER LA', + 2867 : 'ORIYA LETTER LLA', + 2870 : 'ORIYA LETTER SHA', + 2871 : 'ORIYA LETTER SSA', + 2872 : 'ORIYA LETTER SA', + 2873 : 'ORIYA LETTER HA', + 2876 : 'ORIYA SIGN NUKTA', + 2877 : 'ORIYA SIGN AVAGRAHA', + 2878 : 'ORIYA VOWEL SIGN AA', + 2879 : 'ORIYA VOWEL SIGN I', + 2880 : 'ORIYA VOWEL SIGN II', + 2881 : 'ORIYA VOWEL SIGN U', + 2882 : 'ORIYA VOWEL SIGN UU', + 2883 : 'ORIYA VOWEL SIGN VOCALIC R', + 2887 : 'ORIYA VOWEL SIGN E', + 2888 : 'ORIYA VOWEL SIGN AI', + 2891 : 'ORIYA VOWEL SIGN O', + 2892 : 'ORIYA VOWEL SIGN AU', + 2893 : 'ORIYA SIGN VIRAMA', + 2902 : 'ORIYA AI LENGTH MARK', + 2903 : 'ORIYA AU LENGTH MARK', + 2908 : 'ORIYA LETTER RRA', + 2909 : 'ORIYA LETTER RHA', + 2911 : 'ORIYA LETTER YYA', + 2912 : 'ORIYA LETTER VOCALIC RR', + 2913 : 'ORIYA LETTER VOCALIC LL', + 2918 : 'ORIYA DIGIT ZERO', + 2919 : 'ORIYA DIGIT ONE', + 2920 : 'ORIYA DIGIT TWO', + 2921 : 'ORIYA DIGIT THREE', + 2922 : 'ORIYA DIGIT FOUR', + 2923 : 'ORIYA DIGIT FIVE', + 2924 : 'ORIYA DIGIT SIX', + 2925 : 'ORIYA DIGIT SEVEN', + 2926 : 'ORIYA DIGIT EIGHT', + 2927 : 'ORIYA DIGIT NINE', + 2928 : 'ORIYA ISSHAR', + 2946 : 'TAMIL SIGN ANUSVARA', + 2947 : 'TAMIL SIGN VISARGA', + 2949 : 'TAMIL LETTER A', + 2950 : 'TAMIL LETTER AA', + 2951 : 'TAMIL LETTER I', + 2952 : 'TAMIL LETTER II', + 2953 : 'TAMIL LETTER U', + 2954 : 'TAMIL LETTER UU', + 2958 : 'TAMIL LETTER E', + 2959 : 'TAMIL LETTER EE', + 2960 : 'TAMIL LETTER AI', + 2962 : 'TAMIL LETTER O', + 2963 : 'TAMIL LETTER OO', + 2964 : 'TAMIL LETTER AU', + 2965 : 'TAMIL LETTER KA', + 2969 : 'TAMIL LETTER NGA', + 2970 : 'TAMIL LETTER CA', + 2972 : 'TAMIL LETTER JA', + 2974 : 'TAMIL LETTER NYA', + 2975 : 'TAMIL LETTER TTA', + 2979 : 'TAMIL LETTER NNA', + 2980 : 'TAMIL LETTER TA', + 2984 : 'TAMIL LETTER NA', + 2985 : 'TAMIL LETTER NNNA', + 2986 : 'TAMIL LETTER PA', + 2990 : 'TAMIL LETTER MA', + 2991 : 'TAMIL LETTER YA', + 2992 : 'TAMIL LETTER RA', + 2993 : 'TAMIL LETTER RRA', + 2994 : 'TAMIL LETTER LA', + 2995 : 'TAMIL LETTER LLA', + 2996 : 'TAMIL LETTER LLLA', + 2997 : 'TAMIL LETTER VA', + 2999 : 'TAMIL LETTER SSA', + 3000 : 'TAMIL LETTER SA', + 3001 : 'TAMIL LETTER HA', + 3006 : 'TAMIL VOWEL SIGN AA', + 3007 : 'TAMIL VOWEL SIGN I', + 3008 : 'TAMIL VOWEL SIGN II', + 3009 : 'TAMIL VOWEL SIGN U', + 3010 : 'TAMIL VOWEL SIGN UU', + 3014 : 'TAMIL VOWEL SIGN E', + 3015 : 'TAMIL VOWEL SIGN EE', + 3016 : 'TAMIL VOWEL SIGN AI', + 3018 : 'TAMIL VOWEL SIGN O', + 3019 : 'TAMIL VOWEL SIGN OO', + 3020 : 'TAMIL VOWEL SIGN AU', + 3021 : 'TAMIL SIGN VIRAMA', + 3031 : 'TAMIL AU LENGTH MARK', + 3047 : 'TAMIL DIGIT ONE', + 3048 : 'TAMIL DIGIT TWO', + 3049 : 'TAMIL DIGIT THREE', + 3050 : 'TAMIL DIGIT FOUR', + 3051 : 'TAMIL DIGIT FIVE', + 3052 : 'TAMIL DIGIT SIX', + 3053 : 'TAMIL DIGIT SEVEN', + 3054 : 'TAMIL DIGIT EIGHT', + 3055 : 'TAMIL DIGIT NINE', + 3056 : 'TAMIL NUMBER TEN', + 3057 : 'TAMIL NUMBER ONE HUNDRED', + 3058 : 'TAMIL NUMBER ONE THOUSAND', + 3073 : 'TELUGU SIGN CANDRABINDU', + 3074 : 'TELUGU SIGN ANUSVARA', + 3075 : 'TELUGU SIGN VISARGA', + 3077 : 'TELUGU LETTER A', + 3078 : 'TELUGU LETTER AA', + 3079 : 'TELUGU LETTER I', + 3080 : 'TELUGU LETTER II', + 3081 : 'TELUGU LETTER U', + 3082 : 'TELUGU LETTER UU', + 3083 : 'TELUGU LETTER VOCALIC R', + 3084 : 'TELUGU LETTER VOCALIC L', + 3086 : 'TELUGU LETTER E', + 3087 : 'TELUGU LETTER EE', + 3088 : 'TELUGU LETTER AI', + 3090 : 'TELUGU LETTER O', + 3091 : 'TELUGU LETTER OO', + 3092 : 'TELUGU LETTER AU', + 3093 : 'TELUGU LETTER KA', + 3094 : 'TELUGU LETTER KHA', + 3095 : 'TELUGU LETTER GA', + 3096 : 'TELUGU LETTER GHA', + 3097 : 'TELUGU LETTER NGA', + 3098 : 'TELUGU LETTER CA', + 3099 : 'TELUGU LETTER CHA', + 3100 : 'TELUGU LETTER JA', + 3101 : 'TELUGU LETTER JHA', + 3102 : 'TELUGU LETTER NYA', + 3103 : 'TELUGU LETTER TTA', + 3104 : 'TELUGU LETTER TTHA', + 3105 : 'TELUGU LETTER DDA', + 3106 : 'TELUGU LETTER DDHA', + 3107 : 'TELUGU LETTER NNA', + 3108 : 'TELUGU LETTER TA', + 3109 : 'TELUGU LETTER THA', + 3110 : 'TELUGU LETTER DA', + 3111 : 'TELUGU LETTER DHA', + 3112 : 'TELUGU LETTER NA', + 3114 : 'TELUGU LETTER PA', + 3115 : 'TELUGU LETTER PHA', + 3116 : 'TELUGU LETTER BA', + 3117 : 'TELUGU LETTER BHA', + 3118 : 'TELUGU LETTER MA', + 3119 : 'TELUGU LETTER YA', + 3120 : 'TELUGU LETTER RA', + 3121 : 'TELUGU LETTER RRA', + 3122 : 'TELUGU LETTER LA', + 3123 : 'TELUGU LETTER LLA', + 3125 : 'TELUGU LETTER VA', + 3126 : 'TELUGU LETTER SHA', + 3127 : 'TELUGU LETTER SSA', + 3128 : 'TELUGU LETTER SA', + 3129 : 'TELUGU LETTER HA', + 3134 : 'TELUGU VOWEL SIGN AA', + 3135 : 'TELUGU VOWEL SIGN I', + 3136 : 'TELUGU VOWEL SIGN II', + 3137 : 'TELUGU VOWEL SIGN U', + 3138 : 'TELUGU VOWEL SIGN UU', + 3139 : 'TELUGU VOWEL SIGN VOCALIC R', + 3140 : 'TELUGU VOWEL SIGN VOCALIC RR', + 3142 : 'TELUGU VOWEL SIGN E', + 3143 : 'TELUGU VOWEL SIGN EE', + 3144 : 'TELUGU VOWEL SIGN AI', + 3146 : 'TELUGU VOWEL SIGN O', + 3147 : 'TELUGU VOWEL SIGN OO', + 3148 : 'TELUGU VOWEL SIGN AU', + 3149 : 'TELUGU SIGN VIRAMA', + 3157 : 'TELUGU LENGTH MARK', + 3158 : 'TELUGU AI LENGTH MARK', + 3168 : 'TELUGU LETTER VOCALIC RR', + 3169 : 'TELUGU LETTER VOCALIC LL', + 3174 : 'TELUGU DIGIT ZERO', + 3175 : 'TELUGU DIGIT ONE', + 3176 : 'TELUGU DIGIT TWO', + 3177 : 'TELUGU DIGIT THREE', + 3178 : 'TELUGU DIGIT FOUR', + 3179 : 'TELUGU DIGIT FIVE', + 3180 : 'TELUGU DIGIT SIX', + 3181 : 'TELUGU DIGIT SEVEN', + 3182 : 'TELUGU DIGIT EIGHT', + 3183 : 'TELUGU DIGIT NINE', + 3202 : 'KANNADA SIGN ANUSVARA', + 3203 : 'KANNADA SIGN VISARGA', + 3205 : 'KANNADA LETTER A', + 3206 : 'KANNADA LETTER AA', + 3207 : 'KANNADA LETTER I', + 3208 : 'KANNADA LETTER II', + 3209 : 'KANNADA LETTER U', + 3210 : 'KANNADA LETTER UU', + 3211 : 'KANNADA LETTER VOCALIC R', + 3212 : 'KANNADA LETTER VOCALIC L', + 3214 : 'KANNADA LETTER E', + 3215 : 'KANNADA LETTER EE', + 3216 : 'KANNADA LETTER AI', + 3218 : 'KANNADA LETTER O', + 3219 : 'KANNADA LETTER OO', + 3220 : 'KANNADA LETTER AU', + 3221 : 'KANNADA LETTER KA', + 3222 : 'KANNADA LETTER KHA', + 3223 : 'KANNADA LETTER GA', + 3224 : 'KANNADA LETTER GHA', + 3225 : 'KANNADA LETTER NGA', + 3226 : 'KANNADA LETTER CA', + 3227 : 'KANNADA LETTER CHA', + 3228 : 'KANNADA LETTER JA', + 3229 : 'KANNADA LETTER JHA', + 3230 : 'KANNADA LETTER NYA', + 3231 : 'KANNADA LETTER TTA', + 3232 : 'KANNADA LETTER TTHA', + 3233 : 'KANNADA LETTER DDA', + 3234 : 'KANNADA LETTER DDHA', + 3235 : 'KANNADA LETTER NNA', + 3236 : 'KANNADA LETTER TA', + 3237 : 'KANNADA LETTER THA', + 3238 : 'KANNADA LETTER DA', + 3239 : 'KANNADA LETTER DHA', + 3240 : 'KANNADA LETTER NA', + 3242 : 'KANNADA LETTER PA', + 3243 : 'KANNADA LETTER PHA', + 3244 : 'KANNADA LETTER BA', + 3245 : 'KANNADA LETTER BHA', + 3246 : 'KANNADA LETTER MA', + 3247 : 'KANNADA LETTER YA', + 3248 : 'KANNADA LETTER RA', + 3249 : 'KANNADA LETTER RRA', + 3250 : 'KANNADA LETTER LA', + 3251 : 'KANNADA LETTER LLA', + 3253 : 'KANNADA LETTER VA', + 3254 : 'KANNADA LETTER SHA', + 3255 : 'KANNADA LETTER SSA', + 3256 : 'KANNADA LETTER SA', + 3257 : 'KANNADA LETTER HA', + 3262 : 'KANNADA VOWEL SIGN AA', + 3263 : 'KANNADA VOWEL SIGN I', + 3264 : 'KANNADA VOWEL SIGN II', + 3265 : 'KANNADA VOWEL SIGN U', + 3266 : 'KANNADA VOWEL SIGN UU', + 3267 : 'KANNADA VOWEL SIGN VOCALIC R', + 3268 : 'KANNADA VOWEL SIGN VOCALIC RR', + 3270 : 'KANNADA VOWEL SIGN E', + 3271 : 'KANNADA VOWEL SIGN EE', + 3272 : 'KANNADA VOWEL SIGN AI', + 3274 : 'KANNADA VOWEL SIGN O', + 3275 : 'KANNADA VOWEL SIGN OO', + 3276 : 'KANNADA VOWEL SIGN AU', + 3277 : 'KANNADA SIGN VIRAMA', + 3285 : 'KANNADA LENGTH MARK', + 3286 : 'KANNADA AI LENGTH MARK', + 3294 : 'KANNADA LETTER FA', + 3296 : 'KANNADA LETTER VOCALIC RR', + 3297 : 'KANNADA LETTER VOCALIC LL', + 3302 : 'KANNADA DIGIT ZERO', + 3303 : 'KANNADA DIGIT ONE', + 3304 : 'KANNADA DIGIT TWO', + 3305 : 'KANNADA DIGIT THREE', + 3306 : 'KANNADA DIGIT FOUR', + 3307 : 'KANNADA DIGIT FIVE', + 3308 : 'KANNADA DIGIT SIX', + 3309 : 'KANNADA DIGIT SEVEN', + 3310 : 'KANNADA DIGIT EIGHT', + 3311 : 'KANNADA DIGIT NINE', + 3330 : 'MALAYALAM SIGN ANUSVARA', + 3331 : 'MALAYALAM SIGN VISARGA', + 3333 : 'MALAYALAM LETTER A', + 3334 : 'MALAYALAM LETTER AA', + 3335 : 'MALAYALAM LETTER I', + 3336 : 'MALAYALAM LETTER II', + 3337 : 'MALAYALAM LETTER U', + 3338 : 'MALAYALAM LETTER UU', + 3339 : 'MALAYALAM LETTER VOCALIC R', + 3340 : 'MALAYALAM LETTER VOCALIC L', + 3342 : 'MALAYALAM LETTER E', + 3343 : 'MALAYALAM LETTER EE', + 3344 : 'MALAYALAM LETTER AI', + 3346 : 'MALAYALAM LETTER O', + 3347 : 'MALAYALAM LETTER OO', + 3348 : 'MALAYALAM LETTER AU', + 3349 : 'MALAYALAM LETTER KA', + 3350 : 'MALAYALAM LETTER KHA', + 3351 : 'MALAYALAM LETTER GA', + 3352 : 'MALAYALAM LETTER GHA', + 3353 : 'MALAYALAM LETTER NGA', + 3354 : 'MALAYALAM LETTER CA', + 3355 : 'MALAYALAM LETTER CHA', + 3356 : 'MALAYALAM LETTER JA', + 3357 : 'MALAYALAM LETTER JHA', + 3358 : 'MALAYALAM LETTER NYA', + 3359 : 'MALAYALAM LETTER TTA', + 3360 : 'MALAYALAM LETTER TTHA', + 3361 : 'MALAYALAM LETTER DDA', + 3362 : 'MALAYALAM LETTER DDHA', + 3363 : 'MALAYALAM LETTER NNA', + 3364 : 'MALAYALAM LETTER TA', + 3365 : 'MALAYALAM LETTER THA', + 3366 : 'MALAYALAM LETTER DA', + 3367 : 'MALAYALAM LETTER DHA', + 3368 : 'MALAYALAM LETTER NA', + 3370 : 'MALAYALAM LETTER PA', + 3371 : 'MALAYALAM LETTER PHA', + 3372 : 'MALAYALAM LETTER BA', + 3373 : 'MALAYALAM LETTER BHA', + 3374 : 'MALAYALAM LETTER MA', + 3375 : 'MALAYALAM LETTER YA', + 3376 : 'MALAYALAM LETTER RA', + 3377 : 'MALAYALAM LETTER RRA', + 3378 : 'MALAYALAM LETTER LA', + 3379 : 'MALAYALAM LETTER LLA', + 3380 : 'MALAYALAM LETTER LLLA', + 3381 : 'MALAYALAM LETTER VA', + 3382 : 'MALAYALAM LETTER SHA', + 3383 : 'MALAYALAM LETTER SSA', + 3384 : 'MALAYALAM LETTER SA', + 3385 : 'MALAYALAM LETTER HA', + 3390 : 'MALAYALAM VOWEL SIGN AA', + 3391 : 'MALAYALAM VOWEL SIGN I', + 3392 : 'MALAYALAM VOWEL SIGN II', + 3393 : 'MALAYALAM VOWEL SIGN U', + 3394 : 'MALAYALAM VOWEL SIGN UU', + 3395 : 'MALAYALAM VOWEL SIGN VOCALIC R', + 3398 : 'MALAYALAM VOWEL SIGN E', + 3399 : 'MALAYALAM VOWEL SIGN EE', + 3400 : 'MALAYALAM VOWEL SIGN AI', + 3402 : 'MALAYALAM VOWEL SIGN O', + 3403 : 'MALAYALAM VOWEL SIGN OO', + 3404 : 'MALAYALAM VOWEL SIGN AU', + 3405 : 'MALAYALAM SIGN VIRAMA', + 3415 : 'MALAYALAM AU LENGTH MARK', + 3424 : 'MALAYALAM LETTER VOCALIC RR', + 3425 : 'MALAYALAM LETTER VOCALIC LL', + 3430 : 'MALAYALAM DIGIT ZERO', + 3431 : 'MALAYALAM DIGIT ONE', + 3432 : 'MALAYALAM DIGIT TWO', + 3433 : 'MALAYALAM DIGIT THREE', + 3434 : 'MALAYALAM DIGIT FOUR', + 3435 : 'MALAYALAM DIGIT FIVE', + 3436 : 'MALAYALAM DIGIT SIX', + 3437 : 'MALAYALAM DIGIT SEVEN', + 3438 : 'MALAYALAM DIGIT EIGHT', + 3439 : 'MALAYALAM DIGIT NINE', + 3458 : 'SINHALA SIGN ANUSVARAYA', + 3459 : 'SINHALA SIGN VISARGAYA', + 3461 : 'SINHALA LETTER AYANNA', + 3462 : 'SINHALA LETTER AAYANNA', + 3463 : 'SINHALA LETTER AEYANNA', + 3464 : 'SINHALA LETTER AEEYANNA', + 3465 : 'SINHALA LETTER IYANNA', + 3466 : 'SINHALA LETTER IIYANNA', + 3467 : 'SINHALA LETTER UYANNA', + 3468 : 'SINHALA LETTER UUYANNA', + 3469 : 'SINHALA LETTER IRUYANNA', + 3470 : 'SINHALA LETTER IRUUYANNA', + 3471 : 'SINHALA LETTER ILUYANNA', + 3472 : 'SINHALA LETTER ILUUYANNA', + 3473 : 'SINHALA LETTER EYANNA', + 3474 : 'SINHALA LETTER EEYANNA', + 3475 : 'SINHALA LETTER AIYANNA', + 3476 : 'SINHALA LETTER OYANNA', + 3477 : 'SINHALA LETTER OOYANNA', + 3478 : 'SINHALA LETTER AUYANNA', + 3482 : 'SINHALA LETTER ALPAPRAANA KAYANNA', + 3483 : 'SINHALA LETTER MAHAAPRAANA KAYANNA', + 3484 : 'SINHALA LETTER ALPAPRAANA GAYANNA', + 3485 : 'SINHALA LETTER MAHAAPRAANA GAYANNA', + 3486 : 'SINHALA LETTER KANTAJA NAASIKYAYA', + 3487 : 'SINHALA LETTER SANYAKA GAYANNA', + 3488 : 'SINHALA LETTER ALPAPRAANA CAYANNA', + 3489 : 'SINHALA LETTER MAHAAPRAANA CAYANNA', + 3490 : 'SINHALA LETTER ALPAPRAANA JAYANNA', + 3491 : 'SINHALA LETTER MAHAAPRAANA JAYANNA', + 3492 : 'SINHALA LETTER TAALUJA NAASIKYAYA', + 3493 : 'SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA', + 3494 : 'SINHALA LETTER SANYAKA JAYANNA', + 3495 : 'SINHALA LETTER ALPAPRAANA TTAYANNA', + 3496 : 'SINHALA LETTER MAHAAPRAANA TTAYANNA', + 3497 : 'SINHALA LETTER ALPAPRAANA DDAYANNA', + 3498 : 'SINHALA LETTER MAHAAPRAANA DDAYANNA', + 3499 : 'SINHALA LETTER MUURDHAJA NAYANNA', + 3500 : 'SINHALA LETTER SANYAKA DDAYANNA', + 3501 : 'SINHALA LETTER ALPAPRAANA TAYANNA', + 3502 : 'SINHALA LETTER MAHAAPRAANA TAYANNA', + 3503 : 'SINHALA LETTER ALPAPRAANA DAYANNA', + 3504 : 'SINHALA LETTER MAHAAPRAANA DAYANNA', + 3505 : 'SINHALA LETTER DANTAJA NAYANNA', + 3507 : 'SINHALA LETTER SANYAKA DAYANNA', + 3508 : 'SINHALA LETTER ALPAPRAANA PAYANNA', + 3509 : 'SINHALA LETTER MAHAAPRAANA PAYANNA', + 3510 : 'SINHALA LETTER ALPAPRAANA BAYANNA', + 3511 : 'SINHALA LETTER MAHAAPRAANA BAYANNA', + 3512 : 'SINHALA LETTER MAYANNA', + 3513 : 'SINHALA LETTER AMBA BAYANNA', + 3514 : 'SINHALA LETTER YAYANNA', + 3515 : 'SINHALA LETTER RAYANNA', + 3517 : 'SINHALA LETTER DANTAJA LAYANNA', + 3520 : 'SINHALA LETTER VAYANNA', + 3521 : 'SINHALA LETTER TAALUJA SAYANNA', + 3522 : 'SINHALA LETTER MUURDHAJA SAYANNA', + 3523 : 'SINHALA LETTER DANTAJA SAYANNA', + 3524 : 'SINHALA LETTER HAYANNA', + 3525 : 'SINHALA LETTER MUURDHAJA LAYANNA', + 3526 : 'SINHALA LETTER FAYANNA', + 3530 : 'SINHALA SIGN AL-LAKUNA', + 3535 : 'SINHALA VOWEL SIGN AELA-PILLA', + 3536 : 'SINHALA VOWEL SIGN KETTI AEDA-PILLA', + 3537 : 'SINHALA VOWEL SIGN DIGA AEDA-PILLA', + 3538 : 'SINHALA VOWEL SIGN KETTI IS-PILLA', + 3539 : 'SINHALA VOWEL SIGN DIGA IS-PILLA', + 3540 : 'SINHALA VOWEL SIGN KETTI PAA-PILLA', + 3542 : 'SINHALA VOWEL SIGN DIGA PAA-PILLA', + 3544 : 'SINHALA VOWEL SIGN GAETTA-PILLA', + 3545 : 'SINHALA VOWEL SIGN KOMBUVA', + 3546 : 'SINHALA VOWEL SIGN DIGA KOMBUVA', + 3547 : 'SINHALA VOWEL SIGN KOMBU DEKA', + 3548 : 'SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA', + 3549 : 'SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA', + 3550 : 'SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA', + 3551 : 'SINHALA VOWEL SIGN GAYANUKITTA', + 3570 : 'SINHALA VOWEL SIGN DIGA GAETTA-PILLA', + 3571 : 'SINHALA VOWEL SIGN DIGA GAYANUKITTA', + 3572 : 'SINHALA PUNCTUATION KUNDDALIYA', + 3585 : 'THAI CHARACTER KO KAI', + 3586 : 'THAI CHARACTER KHO KHAI', + 3587 : 'THAI CHARACTER KHO KHUAT', + 3588 : 'THAI CHARACTER KHO KHWAI', + 3589 : 'THAI CHARACTER KHO KHON', + 3590 : 'THAI CHARACTER KHO RAKHANG', + 3591 : 'THAI CHARACTER NGO NGU', + 3592 : 'THAI CHARACTER CHO CHAN', + 3593 : 'THAI CHARACTER CHO CHING', + 3594 : 'THAI CHARACTER CHO CHANG', + 3595 : 'THAI CHARACTER SO SO', + 3596 : 'THAI CHARACTER CHO CHOE', + 3597 : 'THAI CHARACTER YO YING', + 3598 : 'THAI CHARACTER DO CHADA', + 3599 : 'THAI CHARACTER TO PATAK', + 3600 : 'THAI CHARACTER THO THAN', + 3601 : 'THAI CHARACTER THO NANGMONTHO', + 3602 : 'THAI CHARACTER THO PHUTHAO', + 3603 : 'THAI CHARACTER NO NEN', + 3604 : 'THAI CHARACTER DO DEK', + 3605 : 'THAI CHARACTER TO TAO', + 3606 : 'THAI CHARACTER THO THUNG', + 3607 : 'THAI CHARACTER THO THAHAN', + 3608 : 'THAI CHARACTER THO THONG', + 3609 : 'THAI CHARACTER NO NU', + 3610 : 'THAI CHARACTER BO BAIMAI', + 3611 : 'THAI CHARACTER PO PLA', + 3612 : 'THAI CHARACTER PHO PHUNG', + 3613 : 'THAI CHARACTER FO FA', + 3614 : 'THAI CHARACTER PHO PHAN', + 3615 : 'THAI CHARACTER FO FAN', + 3616 : 'THAI CHARACTER PHO SAMPHAO', + 3617 : 'THAI CHARACTER MO MA', + 3618 : 'THAI CHARACTER YO YAK', + 3619 : 'THAI CHARACTER RO RUA', + 3620 : 'THAI CHARACTER RU', + 3621 : 'THAI CHARACTER LO LING', + 3622 : 'THAI CHARACTER LU', + 3623 : 'THAI CHARACTER WO WAEN', + 3624 : 'THAI CHARACTER SO SALA', + 3625 : 'THAI CHARACTER SO RUSI', + 3626 : 'THAI CHARACTER SO SUA', + 3627 : 'THAI CHARACTER HO HIP', + 3628 : 'THAI CHARACTER LO CHULA', + 3629 : 'THAI CHARACTER O ANG', + 3630 : 'THAI CHARACTER HO NOKHUK', + 3631 : 'THAI CHARACTER PAIYANNOI', + 3632 : 'THAI CHARACTER SARA A', + 3633 : 'THAI CHARACTER MAI HAN-AKAT', + 3634 : 'THAI CHARACTER SARA AA', + 3635 : 'THAI CHARACTER SARA AM', + 3636 : 'THAI CHARACTER SARA I', + 3637 : 'THAI CHARACTER SARA II', + 3638 : 'THAI CHARACTER SARA UE', + 3639 : 'THAI CHARACTER SARA UEE', + 3640 : 'THAI CHARACTER SARA U', + 3641 : 'THAI CHARACTER SARA UU', + 3642 : 'THAI CHARACTER PHINTHU', + 3647 : 'THAI CURRENCY SYMBOL BAHT', + 3648 : 'THAI CHARACTER SARA E', + 3649 : 'THAI CHARACTER SARA AE', + 3650 : 'THAI CHARACTER SARA O', + 3651 : 'THAI CHARACTER SARA AI MAIMUAN', + 3652 : 'THAI CHARACTER SARA AI MAIMALAI', + 3653 : 'THAI CHARACTER LAKKHANGYAO', + 3654 : 'THAI CHARACTER MAIYAMOK', + 3655 : 'THAI CHARACTER MAITAIKHU', + 3656 : 'THAI CHARACTER MAI EK', + 3657 : 'THAI CHARACTER MAI THO', + 3658 : 'THAI CHARACTER MAI TRI', + 3659 : 'THAI CHARACTER MAI CHATTAWA', + 3660 : 'THAI CHARACTER THANTHAKHAT', + 3661 : 'THAI CHARACTER NIKHAHIT', + 3662 : 'THAI CHARACTER YAMAKKAN', + 3663 : 'THAI CHARACTER FONGMAN', + 3664 : 'THAI DIGIT ZERO', + 3665 : 'THAI DIGIT ONE', + 3666 : 'THAI DIGIT TWO', + 3667 : 'THAI DIGIT THREE', + 3668 : 'THAI DIGIT FOUR', + 3669 : 'THAI DIGIT FIVE', + 3670 : 'THAI DIGIT SIX', + 3671 : 'THAI DIGIT SEVEN', + 3672 : 'THAI DIGIT EIGHT', + 3673 : 'THAI DIGIT NINE', + 3674 : 'THAI CHARACTER ANGKHANKHU', + 3675 : 'THAI CHARACTER KHOMUT', + 3713 : 'LAO LETTER KO', + 3714 : 'LAO LETTER KHO SUNG', + 3716 : 'LAO LETTER KHO TAM', + 3719 : 'LAO LETTER NGO', + 3720 : 'LAO LETTER CO', + 3722 : 'LAO LETTER SO TAM', + 3725 : 'LAO LETTER NYO', + 3732 : 'LAO LETTER DO', + 3733 : 'LAO LETTER TO', + 3734 : 'LAO LETTER THO SUNG', + 3735 : 'LAO LETTER THO TAM', + 3737 : 'LAO LETTER NO', + 3738 : 'LAO LETTER BO', + 3739 : 'LAO LETTER PO', + 3740 : 'LAO LETTER PHO SUNG', + 3741 : 'LAO LETTER FO TAM', + 3742 : 'LAO LETTER PHO TAM', + 3743 : 'LAO LETTER FO SUNG', + 3745 : 'LAO LETTER MO', + 3746 : 'LAO LETTER YO', + 3747 : 'LAO LETTER LO LING', + 3749 : 'LAO LETTER LO LOOT', + 3751 : 'LAO LETTER WO', + 3754 : 'LAO LETTER SO SUNG', + 3755 : 'LAO LETTER HO SUNG', + 3757 : 'LAO LETTER O', + 3758 : 'LAO LETTER HO TAM', + 3759 : 'LAO ELLIPSIS', + 3760 : 'LAO VOWEL SIGN A', + 3761 : 'LAO VOWEL SIGN MAI KAN', + 3762 : 'LAO VOWEL SIGN AA', + 3763 : 'LAO VOWEL SIGN AM', + 3764 : 'LAO VOWEL SIGN I', + 3765 : 'LAO VOWEL SIGN II', + 3766 : 'LAO VOWEL SIGN Y', + 3767 : 'LAO VOWEL SIGN YY', + 3768 : 'LAO VOWEL SIGN U', + 3769 : 'LAO VOWEL SIGN UU', + 3771 : 'LAO VOWEL SIGN MAI KON', + 3772 : 'LAO SEMIVOWEL SIGN LO', + 3773 : 'LAO SEMIVOWEL SIGN NYO', + 3776 : 'LAO VOWEL SIGN E', + 3777 : 'LAO VOWEL SIGN EI', + 3778 : 'LAO VOWEL SIGN O', + 3779 : 'LAO VOWEL SIGN AY', + 3780 : 'LAO VOWEL SIGN AI', + 3782 : 'LAO KO LA', + 3784 : 'LAO TONE MAI EK', + 3785 : 'LAO TONE MAI THO', + 3786 : 'LAO TONE MAI TI', + 3787 : 'LAO TONE MAI CATAWA', + 3788 : 'LAO CANCELLATION MARK', + 3789 : 'LAO NIGGAHITA', + 3792 : 'LAO DIGIT ZERO', + 3793 : 'LAO DIGIT ONE', + 3794 : 'LAO DIGIT TWO', + 3795 : 'LAO DIGIT THREE', + 3796 : 'LAO DIGIT FOUR', + 3797 : 'LAO DIGIT FIVE', + 3798 : 'LAO DIGIT SIX', + 3799 : 'LAO DIGIT SEVEN', + 3800 : 'LAO DIGIT EIGHT', + 3801 : 'LAO DIGIT NINE', + 3804 : 'LAO HO NO', + 3805 : 'LAO HO MO', + 3840 : 'TIBETAN SYLLABLE OM', + 3841 : 'TIBETAN MARK GTER YIG MGO TRUNCATED A', + 3842 : 'TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA', + 3843 : 'TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA', + 3844 : 'TIBETAN MARK INITIAL YIG MGO MDUN MA', + 3845 : 'TIBETAN MARK CLOSING YIG MGO SGAB MA', + 3846 : 'TIBETAN MARK CARET YIG MGO PHUR SHAD MA', + 3847 : 'TIBETAN MARK YIG MGO TSHEG SHAD MA', + 3848 : 'TIBETAN MARK SBRUL SHAD', + 3849 : 'TIBETAN MARK BSKUR YIG MGO', + 3850 : 'TIBETAN MARK BKA- SHOG YIG MGO', + 3851 : 'TIBETAN MARK INTERSYLLABIC TSHEG', + 3852 : 'TIBETAN MARK DELIMITER TSHEG BSTAR', + 3853 : 'TIBETAN MARK SHAD', + 3854 : 'TIBETAN MARK NYIS SHAD', + 3855 : 'TIBETAN MARK TSHEG SHAD', + 3856 : 'TIBETAN MARK NYIS TSHEG SHAD', + 3857 : 'TIBETAN MARK RIN CHEN SPUNGS SHAD', + 3858 : 'TIBETAN MARK RGYA GRAM SHAD', + 3859 : 'TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN', + 3860 : 'TIBETAN MARK GTER TSHEG', + 3861 : 'TIBETAN LOGOTYPE SIGN CHAD RTAGS', + 3862 : 'TIBETAN LOGOTYPE SIGN LHAG RTAGS', + 3863 : 'TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS', + 3864 : 'TIBETAN ASTROLOGICAL SIGN -KHYUD PA', + 3865 : 'TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS', + 3866 : 'TIBETAN SIGN RDEL DKAR GCIG', + 3867 : 'TIBETAN SIGN RDEL DKAR GNYIS', + 3868 : 'TIBETAN SIGN RDEL DKAR GSUM', + 3869 : 'TIBETAN SIGN RDEL NAG GCIG', + 3870 : 'TIBETAN SIGN RDEL NAG GNYIS', + 3871 : 'TIBETAN SIGN RDEL DKAR RDEL NAG', + 3872 : 'TIBETAN DIGIT ZERO', + 3873 : 'TIBETAN DIGIT ONE', + 3874 : 'TIBETAN DIGIT TWO', + 3875 : 'TIBETAN DIGIT THREE', + 3876 : 'TIBETAN DIGIT FOUR', + 3877 : 'TIBETAN DIGIT FIVE', + 3878 : 'TIBETAN DIGIT SIX', + 3879 : 'TIBETAN DIGIT SEVEN', + 3880 : 'TIBETAN DIGIT EIGHT', + 3881 : 'TIBETAN DIGIT NINE', + 3882 : 'TIBETAN DIGIT HALF ONE', + 3883 : 'TIBETAN DIGIT HALF TWO', + 3884 : 'TIBETAN DIGIT HALF THREE', + 3885 : 'TIBETAN DIGIT HALF FOUR', + 3886 : 'TIBETAN DIGIT HALF FIVE', + 3887 : 'TIBETAN DIGIT HALF SIX', + 3888 : 'TIBETAN DIGIT HALF SEVEN', + 3889 : 'TIBETAN DIGIT HALF EIGHT', + 3890 : 'TIBETAN DIGIT HALF NINE', + 3891 : 'TIBETAN DIGIT HALF ZERO', + 3892 : 'TIBETAN MARK BSDUS RTAGS', + 3893 : 'TIBETAN MARK NGAS BZUNG NYI ZLA', + 3894 : 'TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN', + 3895 : 'TIBETAN MARK NGAS BZUNG SGOR RTAGS', + 3896 : 'TIBETAN MARK CHE MGO', + 3897 : 'TIBETAN MARK TSA -PHRU', + 3898 : 'TIBETAN MARK GUG RTAGS GYON', + 3899 : 'TIBETAN MARK GUG RTAGS GYAS', + 3900 : 'TIBETAN MARK ANG KHANG GYON', + 3901 : 'TIBETAN MARK ANG KHANG GYAS', + 3902 : 'TIBETAN SIGN YAR TSHES', + 3903 : 'TIBETAN SIGN MAR TSHES', + 3904 : 'TIBETAN LETTER KA', + 3905 : 'TIBETAN LETTER KHA', + 3906 : 'TIBETAN LETTER GA', + 3907 : 'TIBETAN LETTER GHA', + 3908 : 'TIBETAN LETTER NGA', + 3909 : 'TIBETAN LETTER CA', + 3910 : 'TIBETAN LETTER CHA', + 3911 : 'TIBETAN LETTER JA', + 3913 : 'TIBETAN LETTER NYA', + 3914 : 'TIBETAN LETTER TTA', + 3915 : 'TIBETAN LETTER TTHA', + 3916 : 'TIBETAN LETTER DDA', + 3917 : 'TIBETAN LETTER DDHA', + 3918 : 'TIBETAN LETTER NNA', + 3919 : 'TIBETAN LETTER TA', + 3920 : 'TIBETAN LETTER THA', + 3921 : 'TIBETAN LETTER DA', + 3922 : 'TIBETAN LETTER DHA', + 3923 : 'TIBETAN LETTER NA', + 3924 : 'TIBETAN LETTER PA', + 3925 : 'TIBETAN LETTER PHA', + 3926 : 'TIBETAN LETTER BA', + 3927 : 'TIBETAN LETTER BHA', + 3928 : 'TIBETAN LETTER MA', + 3929 : 'TIBETAN LETTER TSA', + 3930 : 'TIBETAN LETTER TSHA', + 3931 : 'TIBETAN LETTER DZA', + 3932 : 'TIBETAN LETTER DZHA', + 3933 : 'TIBETAN LETTER WA', + 3934 : 'TIBETAN LETTER ZHA', + 3935 : 'TIBETAN LETTER ZA', + 3936 : 'TIBETAN LETTER -A', + 3937 : 'TIBETAN LETTER YA', + 3938 : 'TIBETAN LETTER RA', + 3939 : 'TIBETAN LETTER LA', + 3940 : 'TIBETAN LETTER SHA', + 3941 : 'TIBETAN LETTER SSA', + 3942 : 'TIBETAN LETTER SA', + 3943 : 'TIBETAN LETTER HA', + 3944 : 'TIBETAN LETTER A', + 3945 : 'TIBETAN LETTER KSSA', + 3946 : 'TIBETAN LETTER FIXED-FORM RA', + 3953 : 'TIBETAN VOWEL SIGN AA', + 3954 : 'TIBETAN VOWEL SIGN I', + 3955 : 'TIBETAN VOWEL SIGN II', + 3956 : 'TIBETAN VOWEL SIGN U', + 3957 : 'TIBETAN VOWEL SIGN UU', + 3958 : 'TIBETAN VOWEL SIGN VOCALIC R', + 3959 : 'TIBETAN VOWEL SIGN VOCALIC RR', + 3960 : 'TIBETAN VOWEL SIGN VOCALIC L', + 3961 : 'TIBETAN VOWEL SIGN VOCALIC LL', + 3962 : 'TIBETAN VOWEL SIGN E', + 3963 : 'TIBETAN VOWEL SIGN EE', + 3964 : 'TIBETAN VOWEL SIGN O', + 3965 : 'TIBETAN VOWEL SIGN OO', + 3966 : 'TIBETAN SIGN RJES SU NGA RO', + 3967 : 'TIBETAN SIGN RNAM BCAD', + 3968 : 'TIBETAN VOWEL SIGN REVERSED I', + 3969 : 'TIBETAN VOWEL SIGN REVERSED II', + 3970 : 'TIBETAN SIGN NYI ZLA NAA DA', + 3971 : 'TIBETAN SIGN SNA LDAN', + 3972 : 'TIBETAN MARK HALANTA', + 3973 : 'TIBETAN MARK PALUTA', + 3974 : 'TIBETAN SIGN LCI RTAGS', + 3975 : 'TIBETAN SIGN YANG RTAGS', + 3976 : 'TIBETAN SIGN LCE TSA CAN', + 3977 : 'TIBETAN SIGN MCHU CAN', + 3978 : 'TIBETAN SIGN GRU CAN RGYINGS', + 3979 : 'TIBETAN SIGN GRU MED RGYINGS', + 3984 : 'TIBETAN SUBJOINED LETTER KA', + 3985 : 'TIBETAN SUBJOINED LETTER KHA', + 3986 : 'TIBETAN SUBJOINED LETTER GA', + 3987 : 'TIBETAN SUBJOINED LETTER GHA', + 3988 : 'TIBETAN SUBJOINED LETTER NGA', + 3989 : 'TIBETAN SUBJOINED LETTER CA', + 3990 : 'TIBETAN SUBJOINED LETTER CHA', + 3991 : 'TIBETAN SUBJOINED LETTER JA', + 3993 : 'TIBETAN SUBJOINED LETTER NYA', + 3994 : 'TIBETAN SUBJOINED LETTER TTA', + 3995 : 'TIBETAN SUBJOINED LETTER TTHA', + 3996 : 'TIBETAN SUBJOINED LETTER DDA', + 3997 : 'TIBETAN SUBJOINED LETTER DDHA', + 3998 : 'TIBETAN SUBJOINED LETTER NNA', + 3999 : 'TIBETAN SUBJOINED LETTER TA', + 4000 : 'TIBETAN SUBJOINED LETTER THA', + 4001 : 'TIBETAN SUBJOINED LETTER DA', + 4002 : 'TIBETAN SUBJOINED LETTER DHA', + 4003 : 'TIBETAN SUBJOINED LETTER NA', + 4004 : 'TIBETAN SUBJOINED LETTER PA', + 4005 : 'TIBETAN SUBJOINED LETTER PHA', + 4006 : 'TIBETAN SUBJOINED LETTER BA', + 4007 : 'TIBETAN SUBJOINED LETTER BHA', + 4008 : 'TIBETAN SUBJOINED LETTER MA', + 4009 : 'TIBETAN SUBJOINED LETTER TSA', + 4010 : 'TIBETAN SUBJOINED LETTER TSHA', + 4011 : 'TIBETAN SUBJOINED LETTER DZA', + 4012 : 'TIBETAN SUBJOINED LETTER DZHA', + 4013 : 'TIBETAN SUBJOINED LETTER WA', + 4014 : 'TIBETAN SUBJOINED LETTER ZHA', + 4015 : 'TIBETAN SUBJOINED LETTER ZA', + 4016 : 'TIBETAN SUBJOINED LETTER -A', + 4017 : 'TIBETAN SUBJOINED LETTER YA', + 4018 : 'TIBETAN SUBJOINED LETTER RA', + 4019 : 'TIBETAN SUBJOINED LETTER LA', + 4020 : 'TIBETAN SUBJOINED LETTER SHA', + 4021 : 'TIBETAN SUBJOINED LETTER SSA', + 4022 : 'TIBETAN SUBJOINED LETTER SA', + 4023 : 'TIBETAN SUBJOINED LETTER HA', + 4024 : 'TIBETAN SUBJOINED LETTER A', + 4025 : 'TIBETAN SUBJOINED LETTER KSSA', + 4026 : 'TIBETAN SUBJOINED LETTER FIXED-FORM WA', + 4027 : 'TIBETAN SUBJOINED LETTER FIXED-FORM YA', + 4028 : 'TIBETAN SUBJOINED LETTER FIXED-FORM RA', + 4030 : 'TIBETAN KU RU KHA', + 4031 : 'TIBETAN KU RU KHA BZHI MIG CAN', + 4032 : 'TIBETAN CANTILLATION SIGN HEAVY BEAT', + 4033 : 'TIBETAN CANTILLATION SIGN LIGHT BEAT', + 4034 : 'TIBETAN CANTILLATION SIGN CANG TE-U', + 4035 : 'TIBETAN CANTILLATION SIGN SBUB -CHAL', + 4036 : 'TIBETAN SYMBOL DRIL BU', + 4037 : 'TIBETAN SYMBOL RDO RJE', + 4038 : 'TIBETAN SYMBOL PADMA GDAN', + 4039 : 'TIBETAN SYMBOL RDO RJE RGYA GRAM', + 4040 : 'TIBETAN SYMBOL PHUR PA', + 4041 : 'TIBETAN SYMBOL NOR BU', + 4042 : 'TIBETAN SYMBOL NOR BU NYIS -KHYIL', + 4043 : 'TIBETAN SYMBOL NOR BU GSUM -KHYIL', + 4044 : 'TIBETAN SYMBOL NOR BU BZHI -KHYIL', + 4047 : 'TIBETAN SIGN RDEL NAG GSUM', + 4096 : 'MYANMAR LETTER KA', + 4097 : 'MYANMAR LETTER KHA', + 4098 : 'MYANMAR LETTER GA', + 4099 : 'MYANMAR LETTER GHA', + 4100 : 'MYANMAR LETTER NGA', + 4101 : 'MYANMAR LETTER CA', + 4102 : 'MYANMAR LETTER CHA', + 4103 : 'MYANMAR LETTER JA', + 4104 : 'MYANMAR LETTER JHA', + 4105 : 'MYANMAR LETTER NYA', + 4106 : 'MYANMAR LETTER NNYA', + 4107 : 'MYANMAR LETTER TTA', + 4108 : 'MYANMAR LETTER TTHA', + 4109 : 'MYANMAR LETTER DDA', + 4110 : 'MYANMAR LETTER DDHA', + 4111 : 'MYANMAR LETTER NNA', + 4112 : 'MYANMAR LETTER TA', + 4113 : 'MYANMAR LETTER THA', + 4114 : 'MYANMAR LETTER DA', + 4115 : 'MYANMAR LETTER DHA', + 4116 : 'MYANMAR LETTER NA', + 4117 : 'MYANMAR LETTER PA', + 4118 : 'MYANMAR LETTER PHA', + 4119 : 'MYANMAR LETTER BA', + 4120 : 'MYANMAR LETTER BHA', + 4121 : 'MYANMAR LETTER MA', + 4122 : 'MYANMAR LETTER YA', + 4123 : 'MYANMAR LETTER RA', + 4124 : 'MYANMAR LETTER LA', + 4125 : 'MYANMAR LETTER WA', + 4126 : 'MYANMAR LETTER SA', + 4127 : 'MYANMAR LETTER HA', + 4128 : 'MYANMAR LETTER LLA', + 4129 : 'MYANMAR LETTER A', + 4131 : 'MYANMAR LETTER I', + 4132 : 'MYANMAR LETTER II', + 4133 : 'MYANMAR LETTER U', + 4134 : 'MYANMAR LETTER UU', + 4135 : 'MYANMAR LETTER E', + 4137 : 'MYANMAR LETTER O', + 4138 : 'MYANMAR LETTER AU', + 4140 : 'MYANMAR VOWEL SIGN AA', + 4141 : 'MYANMAR VOWEL SIGN I', + 4142 : 'MYANMAR VOWEL SIGN II', + 4143 : 'MYANMAR VOWEL SIGN U', + 4144 : 'MYANMAR VOWEL SIGN UU', + 4145 : 'MYANMAR VOWEL SIGN E', + 4146 : 'MYANMAR VOWEL SIGN AI', + 4150 : 'MYANMAR SIGN ANUSVARA', + 4151 : 'MYANMAR SIGN DOT BELOW', + 4152 : 'MYANMAR SIGN VISARGA', + 4153 : 'MYANMAR SIGN VIRAMA', + 4160 : 'MYANMAR DIGIT ZERO', + 4161 : 'MYANMAR DIGIT ONE', + 4162 : 'MYANMAR DIGIT TWO', + 4163 : 'MYANMAR DIGIT THREE', + 4164 : 'MYANMAR DIGIT FOUR', + 4165 : 'MYANMAR DIGIT FIVE', + 4166 : 'MYANMAR DIGIT SIX', + 4167 : 'MYANMAR DIGIT SEVEN', + 4168 : 'MYANMAR DIGIT EIGHT', + 4169 : 'MYANMAR DIGIT NINE', + 4170 : 'MYANMAR SIGN LITTLE SECTION', + 4171 : 'MYANMAR SIGN SECTION', + 4172 : 'MYANMAR SYMBOL LOCATIVE', + 4173 : 'MYANMAR SYMBOL COMPLETED', + 4174 : 'MYANMAR SYMBOL AFOREMENTIONED', + 4175 : 'MYANMAR SYMBOL GENITIVE', + 4176 : 'MYANMAR LETTER SHA', + 4177 : 'MYANMAR LETTER SSA', + 4178 : 'MYANMAR LETTER VOCALIC R', + 4179 : 'MYANMAR LETTER VOCALIC RR', + 4180 : 'MYANMAR LETTER VOCALIC L', + 4181 : 'MYANMAR LETTER VOCALIC LL', + 4182 : 'MYANMAR VOWEL SIGN VOCALIC R', + 4183 : 'MYANMAR VOWEL SIGN VOCALIC RR', + 4184 : 'MYANMAR VOWEL SIGN VOCALIC L', + 4185 : 'MYANMAR VOWEL SIGN VOCALIC LL', + 4256 : 'GEORGIAN CAPITAL LETTER AN', + 4257 : 'GEORGIAN CAPITAL LETTER BAN', + 4258 : 'GEORGIAN CAPITAL LETTER GAN', + 4259 : 'GEORGIAN CAPITAL LETTER DON', + 4260 : 'GEORGIAN CAPITAL LETTER EN', + 4261 : 'GEORGIAN CAPITAL LETTER VIN', + 4262 : 'GEORGIAN CAPITAL LETTER ZEN', + 4263 : 'GEORGIAN CAPITAL LETTER TAN', + 4264 : 'GEORGIAN CAPITAL LETTER IN', + 4265 : 'GEORGIAN CAPITAL LETTER KAN', + 4266 : 'GEORGIAN CAPITAL LETTER LAS', + 4267 : 'GEORGIAN CAPITAL LETTER MAN', + 4268 : 'GEORGIAN CAPITAL LETTER NAR', + 4269 : 'GEORGIAN CAPITAL LETTER ON', + 4270 : 'GEORGIAN CAPITAL LETTER PAR', + 4271 : 'GEORGIAN CAPITAL LETTER ZHAR', + 4272 : 'GEORGIAN CAPITAL LETTER RAE', + 4273 : 'GEORGIAN CAPITAL LETTER SAN', + 4274 : 'GEORGIAN CAPITAL LETTER TAR', + 4275 : 'GEORGIAN CAPITAL LETTER UN', + 4276 : 'GEORGIAN CAPITAL LETTER PHAR', + 4277 : 'GEORGIAN CAPITAL LETTER KHAR', + 4278 : 'GEORGIAN CAPITAL LETTER GHAN', + 4279 : 'GEORGIAN CAPITAL LETTER QAR', + 4280 : 'GEORGIAN CAPITAL LETTER SHIN', + 4281 : 'GEORGIAN CAPITAL LETTER CHIN', + 4282 : 'GEORGIAN CAPITAL LETTER CAN', + 4283 : 'GEORGIAN CAPITAL LETTER JIL', + 4284 : 'GEORGIAN CAPITAL LETTER CIL', + 4285 : 'GEORGIAN CAPITAL LETTER CHAR', + 4286 : 'GEORGIAN CAPITAL LETTER XAN', + 4287 : 'GEORGIAN CAPITAL LETTER JHAN', + 4288 : 'GEORGIAN CAPITAL LETTER HAE', + 4289 : 'GEORGIAN CAPITAL LETTER HE', + 4290 : 'GEORGIAN CAPITAL LETTER HIE', + 4291 : 'GEORGIAN CAPITAL LETTER WE', + 4292 : 'GEORGIAN CAPITAL LETTER HAR', + 4293 : 'GEORGIAN CAPITAL LETTER HOE', + 4304 : 'GEORGIAN LETTER AN', + 4305 : 'GEORGIAN LETTER BAN', + 4306 : 'GEORGIAN LETTER GAN', + 4307 : 'GEORGIAN LETTER DON', + 4308 : 'GEORGIAN LETTER EN', + 4309 : 'GEORGIAN LETTER VIN', + 4310 : 'GEORGIAN LETTER ZEN', + 4311 : 'GEORGIAN LETTER TAN', + 4312 : 'GEORGIAN LETTER IN', + 4313 : 'GEORGIAN LETTER KAN', + 4314 : 'GEORGIAN LETTER LAS', + 4315 : 'GEORGIAN LETTER MAN', + 4316 : 'GEORGIAN LETTER NAR', + 4317 : 'GEORGIAN LETTER ON', + 4318 : 'GEORGIAN LETTER PAR', + 4319 : 'GEORGIAN LETTER ZHAR', + 4320 : 'GEORGIAN LETTER RAE', + 4321 : 'GEORGIAN LETTER SAN', + 4322 : 'GEORGIAN LETTER TAR', + 4323 : 'GEORGIAN LETTER UN', + 4324 : 'GEORGIAN LETTER PHAR', + 4325 : 'GEORGIAN LETTER KHAR', + 4326 : 'GEORGIAN LETTER GHAN', + 4327 : 'GEORGIAN LETTER QAR', + 4328 : 'GEORGIAN LETTER SHIN', + 4329 : 'GEORGIAN LETTER CHIN', + 4330 : 'GEORGIAN LETTER CAN', + 4331 : 'GEORGIAN LETTER JIL', + 4332 : 'GEORGIAN LETTER CIL', + 4333 : 'GEORGIAN LETTER CHAR', + 4334 : 'GEORGIAN LETTER XAN', + 4335 : 'GEORGIAN LETTER JHAN', + 4336 : 'GEORGIAN LETTER HAE', + 4337 : 'GEORGIAN LETTER HE', + 4338 : 'GEORGIAN LETTER HIE', + 4339 : 'GEORGIAN LETTER WE', + 4340 : 'GEORGIAN LETTER HAR', + 4341 : 'GEORGIAN LETTER HOE', + 4342 : 'GEORGIAN LETTER FI', + 4343 : 'GEORGIAN LETTER YN', + 4344 : 'GEORGIAN LETTER ELIFI', + 4347 : 'GEORGIAN PARAGRAPH SEPARATOR', + 4352 : 'HANGUL CHOSEONG KIYEOK', + 4353 : 'HANGUL CHOSEONG SSANGKIYEOK', + 4354 : 'HANGUL CHOSEONG NIEUN', + 4355 : 'HANGUL CHOSEONG TIKEUT', + 4356 : 'HANGUL CHOSEONG SSANGTIKEUT', + 4357 : 'HANGUL CHOSEONG RIEUL', + 4358 : 'HANGUL CHOSEONG MIEUM', + 4359 : 'HANGUL CHOSEONG PIEUP', + 4360 : 'HANGUL CHOSEONG SSANGPIEUP', + 4361 : 'HANGUL CHOSEONG SIOS', + 4362 : 'HANGUL CHOSEONG SSANGSIOS', + 4363 : 'HANGUL CHOSEONG IEUNG', + 4364 : 'HANGUL CHOSEONG CIEUC', + 4365 : 'HANGUL CHOSEONG SSANGCIEUC', + 4366 : 'HANGUL CHOSEONG CHIEUCH', + 4367 : 'HANGUL CHOSEONG KHIEUKH', + 4368 : 'HANGUL CHOSEONG THIEUTH', + 4369 : 'HANGUL CHOSEONG PHIEUPH', + 4370 : 'HANGUL CHOSEONG HIEUH', + 4371 : 'HANGUL CHOSEONG NIEUN-KIYEOK', + 4372 : 'HANGUL CHOSEONG SSANGNIEUN', + 4373 : 'HANGUL CHOSEONG NIEUN-TIKEUT', + 4374 : 'HANGUL CHOSEONG NIEUN-PIEUP', + 4375 : 'HANGUL CHOSEONG TIKEUT-KIYEOK', + 4376 : 'HANGUL CHOSEONG RIEUL-NIEUN', + 4377 : 'HANGUL CHOSEONG SSANGRIEUL', + 4378 : 'HANGUL CHOSEONG RIEUL-HIEUH', + 4379 : 'HANGUL CHOSEONG KAPYEOUNRIEUL', + 4380 : 'HANGUL CHOSEONG MIEUM-PIEUP', + 4381 : 'HANGUL CHOSEONG KAPYEOUNMIEUM', + 4382 : 'HANGUL CHOSEONG PIEUP-KIYEOK', + 4383 : 'HANGUL CHOSEONG PIEUP-NIEUN', + 4384 : 'HANGUL CHOSEONG PIEUP-TIKEUT', + 4385 : 'HANGUL CHOSEONG PIEUP-SIOS', + 4386 : 'HANGUL CHOSEONG PIEUP-SIOS-KIYEOK', + 4387 : 'HANGUL CHOSEONG PIEUP-SIOS-TIKEUT', + 4388 : 'HANGUL CHOSEONG PIEUP-SIOS-PIEUP', + 4389 : 'HANGUL CHOSEONG PIEUP-SSANGSIOS', + 4390 : 'HANGUL CHOSEONG PIEUP-SIOS-CIEUC', + 4391 : 'HANGUL CHOSEONG PIEUP-CIEUC', + 4392 : 'HANGUL CHOSEONG PIEUP-CHIEUCH', + 4393 : 'HANGUL CHOSEONG PIEUP-THIEUTH', + 4394 : 'HANGUL CHOSEONG PIEUP-PHIEUPH', + 4395 : 'HANGUL CHOSEONG KAPYEOUNPIEUP', + 4396 : 'HANGUL CHOSEONG KAPYEOUNSSANGPIEUP', + 4397 : 'HANGUL CHOSEONG SIOS-KIYEOK', + 4398 : 'HANGUL CHOSEONG SIOS-NIEUN', + 4399 : 'HANGUL CHOSEONG SIOS-TIKEUT', + 4400 : 'HANGUL CHOSEONG SIOS-RIEUL', + 4401 : 'HANGUL CHOSEONG SIOS-MIEUM', + 4402 : 'HANGUL CHOSEONG SIOS-PIEUP', + 4403 : 'HANGUL CHOSEONG SIOS-PIEUP-KIYEOK', + 4404 : 'HANGUL CHOSEONG SIOS-SSANGSIOS', + 4405 : 'HANGUL CHOSEONG SIOS-IEUNG', + 4406 : 'HANGUL CHOSEONG SIOS-CIEUC', + 4407 : 'HANGUL CHOSEONG SIOS-CHIEUCH', + 4408 : 'HANGUL CHOSEONG SIOS-KHIEUKH', + 4409 : 'HANGUL CHOSEONG SIOS-THIEUTH', + 4410 : 'HANGUL CHOSEONG SIOS-PHIEUPH', + 4411 : 'HANGUL CHOSEONG SIOS-HIEUH', + 4412 : 'HANGUL CHOSEONG CHITUEUMSIOS', + 4413 : 'HANGUL CHOSEONG CHITUEUMSSANGSIOS', + 4414 : 'HANGUL CHOSEONG CEONGCHIEUMSIOS', + 4415 : 'HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS', + 4416 : 'HANGUL CHOSEONG PANSIOS', + 4417 : 'HANGUL CHOSEONG IEUNG-KIYEOK', + 4418 : 'HANGUL CHOSEONG IEUNG-TIKEUT', + 4419 : 'HANGUL CHOSEONG IEUNG-MIEUM', + 4420 : 'HANGUL CHOSEONG IEUNG-PIEUP', + 4421 : 'HANGUL CHOSEONG IEUNG-SIOS', + 4422 : 'HANGUL CHOSEONG IEUNG-PANSIOS', + 4423 : 'HANGUL CHOSEONG SSANGIEUNG', + 4424 : 'HANGUL CHOSEONG IEUNG-CIEUC', + 4425 : 'HANGUL CHOSEONG IEUNG-CHIEUCH', + 4426 : 'HANGUL CHOSEONG IEUNG-THIEUTH', + 4427 : 'HANGUL CHOSEONG IEUNG-PHIEUPH', + 4428 : 'HANGUL CHOSEONG YESIEUNG', + 4429 : 'HANGUL CHOSEONG CIEUC-IEUNG', + 4430 : 'HANGUL CHOSEONG CHITUEUMCIEUC', + 4431 : 'HANGUL CHOSEONG CHITUEUMSSANGCIEUC', + 4432 : 'HANGUL CHOSEONG CEONGCHIEUMCIEUC', + 4433 : 'HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC', + 4434 : 'HANGUL CHOSEONG CHIEUCH-KHIEUKH', + 4435 : 'HANGUL CHOSEONG CHIEUCH-HIEUH', + 4436 : 'HANGUL CHOSEONG CHITUEUMCHIEUCH', + 4437 : 'HANGUL CHOSEONG CEONGCHIEUMCHIEUCH', + 4438 : 'HANGUL CHOSEONG PHIEUPH-PIEUP', + 4439 : 'HANGUL CHOSEONG KAPYEOUNPHIEUPH', + 4440 : 'HANGUL CHOSEONG SSANGHIEUH', + 4441 : 'HANGUL CHOSEONG YEORINHIEUH', + 4447 : 'HANGUL CHOSEONG FILLER', + 4448 : 'HANGUL JUNGSEONG FILLER', + 4449 : 'HANGUL JUNGSEONG A', + 4450 : 'HANGUL JUNGSEONG AE', + 4451 : 'HANGUL JUNGSEONG YA', + 4452 : 'HANGUL JUNGSEONG YAE', + 4453 : 'HANGUL JUNGSEONG EO', + 4454 : 'HANGUL JUNGSEONG E', + 4455 : 'HANGUL JUNGSEONG YEO', + 4456 : 'HANGUL JUNGSEONG YE', + 4457 : 'HANGUL JUNGSEONG O', + 4458 : 'HANGUL JUNGSEONG WA', + 4459 : 'HANGUL JUNGSEONG WAE', + 4460 : 'HANGUL JUNGSEONG OE', + 4461 : 'HANGUL JUNGSEONG YO', + 4462 : 'HANGUL JUNGSEONG U', + 4463 : 'HANGUL JUNGSEONG WEO', + 4464 : 'HANGUL JUNGSEONG WE', + 4465 : 'HANGUL JUNGSEONG WI', + 4466 : 'HANGUL JUNGSEONG YU', + 4467 : 'HANGUL JUNGSEONG EU', + 4468 : 'HANGUL JUNGSEONG YI', + 4469 : 'HANGUL JUNGSEONG I', + 4470 : 'HANGUL JUNGSEONG A-O', + 4471 : 'HANGUL JUNGSEONG A-U', + 4472 : 'HANGUL JUNGSEONG YA-O', + 4473 : 'HANGUL JUNGSEONG YA-YO', + 4474 : 'HANGUL JUNGSEONG EO-O', + 4475 : 'HANGUL JUNGSEONG EO-U', + 4476 : 'HANGUL JUNGSEONG EO-EU', + 4477 : 'HANGUL JUNGSEONG YEO-O', + 4478 : 'HANGUL JUNGSEONG YEO-U', + 4479 : 'HANGUL JUNGSEONG O-EO', + 4480 : 'HANGUL JUNGSEONG O-E', + 4481 : 'HANGUL JUNGSEONG O-YE', + 4482 : 'HANGUL JUNGSEONG O-O', + 4483 : 'HANGUL JUNGSEONG O-U', + 4484 : 'HANGUL JUNGSEONG YO-YA', + 4485 : 'HANGUL JUNGSEONG YO-YAE', + 4486 : 'HANGUL JUNGSEONG YO-YEO', + 4487 : 'HANGUL JUNGSEONG YO-O', + 4488 : 'HANGUL JUNGSEONG YO-I', + 4489 : 'HANGUL JUNGSEONG U-A', + 4490 : 'HANGUL JUNGSEONG U-AE', + 4491 : 'HANGUL JUNGSEONG U-EO-EU', + 4492 : 'HANGUL JUNGSEONG U-YE', + 4493 : 'HANGUL JUNGSEONG U-U', + 4494 : 'HANGUL JUNGSEONG YU-A', + 4495 : 'HANGUL JUNGSEONG YU-EO', + 4496 : 'HANGUL JUNGSEONG YU-E', + 4497 : 'HANGUL JUNGSEONG YU-YEO', + 4498 : 'HANGUL JUNGSEONG YU-YE', + 4499 : 'HANGUL JUNGSEONG YU-U', + 4500 : 'HANGUL JUNGSEONG YU-I', + 4501 : 'HANGUL JUNGSEONG EU-U', + 4502 : 'HANGUL JUNGSEONG EU-EU', + 4503 : 'HANGUL JUNGSEONG YI-U', + 4504 : 'HANGUL JUNGSEONG I-A', + 4505 : 'HANGUL JUNGSEONG I-YA', + 4506 : 'HANGUL JUNGSEONG I-O', + 4507 : 'HANGUL JUNGSEONG I-U', + 4508 : 'HANGUL JUNGSEONG I-EU', + 4509 : 'HANGUL JUNGSEONG I-ARAEA', + 4510 : 'HANGUL JUNGSEONG ARAEA', + 4511 : 'HANGUL JUNGSEONG ARAEA-EO', + 4512 : 'HANGUL JUNGSEONG ARAEA-U', + 4513 : 'HANGUL JUNGSEONG ARAEA-I', + 4514 : 'HANGUL JUNGSEONG SSANGARAEA', + 4520 : 'HANGUL JONGSEONG KIYEOK', + 4521 : 'HANGUL JONGSEONG SSANGKIYEOK', + 4522 : 'HANGUL JONGSEONG KIYEOK-SIOS', + 4523 : 'HANGUL JONGSEONG NIEUN', + 4524 : 'HANGUL JONGSEONG NIEUN-CIEUC', + 4525 : 'HANGUL JONGSEONG NIEUN-HIEUH', + 4526 : 'HANGUL JONGSEONG TIKEUT', + 4527 : 'HANGUL JONGSEONG RIEUL', + 4528 : 'HANGUL JONGSEONG RIEUL-KIYEOK', + 4529 : 'HANGUL JONGSEONG RIEUL-MIEUM', + 4530 : 'HANGUL JONGSEONG RIEUL-PIEUP', + 4531 : 'HANGUL JONGSEONG RIEUL-SIOS', + 4532 : 'HANGUL JONGSEONG RIEUL-THIEUTH', + 4533 : 'HANGUL JONGSEONG RIEUL-PHIEUPH', + 4534 : 'HANGUL JONGSEONG RIEUL-HIEUH', + 4535 : 'HANGUL JONGSEONG MIEUM', + 4536 : 'HANGUL JONGSEONG PIEUP', + 4537 : 'HANGUL JONGSEONG PIEUP-SIOS', + 4538 : 'HANGUL JONGSEONG SIOS', + 4539 : 'HANGUL JONGSEONG SSANGSIOS', + 4540 : 'HANGUL JONGSEONG IEUNG', + 4541 : 'HANGUL JONGSEONG CIEUC', + 4542 : 'HANGUL JONGSEONG CHIEUCH', + 4543 : 'HANGUL JONGSEONG KHIEUKH', + 4544 : 'HANGUL JONGSEONG THIEUTH', + 4545 : 'HANGUL JONGSEONG PHIEUPH', + 4546 : 'HANGUL JONGSEONG HIEUH', + 4547 : 'HANGUL JONGSEONG KIYEOK-RIEUL', + 4548 : 'HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK', + 4549 : 'HANGUL JONGSEONG NIEUN-KIYEOK', + 4550 : 'HANGUL JONGSEONG NIEUN-TIKEUT', + 4551 : 'HANGUL JONGSEONG NIEUN-SIOS', + 4552 : 'HANGUL JONGSEONG NIEUN-PANSIOS', + 4553 : 'HANGUL JONGSEONG NIEUN-THIEUTH', + 4554 : 'HANGUL JONGSEONG TIKEUT-KIYEOK', + 4555 : 'HANGUL JONGSEONG TIKEUT-RIEUL', + 4556 : 'HANGUL JONGSEONG RIEUL-KIYEOK-SIOS', + 4557 : 'HANGUL JONGSEONG RIEUL-NIEUN', + 4558 : 'HANGUL JONGSEONG RIEUL-TIKEUT', + 4559 : 'HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH', + 4560 : 'HANGUL JONGSEONG SSANGRIEUL', + 4561 : 'HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK', + 4562 : 'HANGUL JONGSEONG RIEUL-MIEUM-SIOS', + 4563 : 'HANGUL JONGSEONG RIEUL-PIEUP-SIOS', + 4564 : 'HANGUL JONGSEONG RIEUL-PIEUP-HIEUH', + 4565 : 'HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP', + 4566 : 'HANGUL JONGSEONG RIEUL-SSANGSIOS', + 4567 : 'HANGUL JONGSEONG RIEUL-PANSIOS', + 4568 : 'HANGUL JONGSEONG RIEUL-KHIEUKH', + 4569 : 'HANGUL JONGSEONG RIEUL-YEORINHIEUH', + 4570 : 'HANGUL JONGSEONG MIEUM-KIYEOK', + 4571 : 'HANGUL JONGSEONG MIEUM-RIEUL', + 4572 : 'HANGUL JONGSEONG MIEUM-PIEUP', + 4573 : 'HANGUL JONGSEONG MIEUM-SIOS', + 4574 : 'HANGUL JONGSEONG MIEUM-SSANGSIOS', + 4575 : 'HANGUL JONGSEONG MIEUM-PANSIOS', + 4576 : 'HANGUL JONGSEONG MIEUM-CHIEUCH', + 4577 : 'HANGUL JONGSEONG MIEUM-HIEUH', + 4578 : 'HANGUL JONGSEONG KAPYEOUNMIEUM', + 4579 : 'HANGUL JONGSEONG PIEUP-RIEUL', + 4580 : 'HANGUL JONGSEONG PIEUP-PHIEUPH', + 4581 : 'HANGUL JONGSEONG PIEUP-HIEUH', + 4582 : 'HANGUL JONGSEONG KAPYEOUNPIEUP', + 4583 : 'HANGUL JONGSEONG SIOS-KIYEOK', + 4584 : 'HANGUL JONGSEONG SIOS-TIKEUT', + 4585 : 'HANGUL JONGSEONG SIOS-RIEUL', + 4586 : 'HANGUL JONGSEONG SIOS-PIEUP', + 4587 : 'HANGUL JONGSEONG PANSIOS', + 4588 : 'HANGUL JONGSEONG IEUNG-KIYEOK', + 4589 : 'HANGUL JONGSEONG IEUNG-SSANGKIYEOK', + 4590 : 'HANGUL JONGSEONG SSANGIEUNG', + 4591 : 'HANGUL JONGSEONG IEUNG-KHIEUKH', + 4592 : 'HANGUL JONGSEONG YESIEUNG', + 4593 : 'HANGUL JONGSEONG YESIEUNG-SIOS', + 4594 : 'HANGUL JONGSEONG YESIEUNG-PANSIOS', + 4595 : 'HANGUL JONGSEONG PHIEUPH-PIEUP', + 4596 : 'HANGUL JONGSEONG KAPYEOUNPHIEUPH', + 4597 : 'HANGUL JONGSEONG HIEUH-NIEUN', + 4598 : 'HANGUL JONGSEONG HIEUH-RIEUL', + 4599 : 'HANGUL JONGSEONG HIEUH-MIEUM', + 4600 : 'HANGUL JONGSEONG HIEUH-PIEUP', + 4601 : 'HANGUL JONGSEONG YEORINHIEUH', + 4608 : 'ETHIOPIC SYLLABLE HA', + 4609 : 'ETHIOPIC SYLLABLE HU', + 4610 : 'ETHIOPIC SYLLABLE HI', + 4611 : 'ETHIOPIC SYLLABLE HAA', + 4612 : 'ETHIOPIC SYLLABLE HEE', + 4613 : 'ETHIOPIC SYLLABLE HE', + 4614 : 'ETHIOPIC SYLLABLE HO', + 4616 : 'ETHIOPIC SYLLABLE LA', + 4617 : 'ETHIOPIC SYLLABLE LU', + 4618 : 'ETHIOPIC SYLLABLE LI', + 4619 : 'ETHIOPIC SYLLABLE LAA', + 4620 : 'ETHIOPIC SYLLABLE LEE', + 4621 : 'ETHIOPIC SYLLABLE LE', + 4622 : 'ETHIOPIC SYLLABLE LO', + 4623 : 'ETHIOPIC SYLLABLE LWA', + 4624 : 'ETHIOPIC SYLLABLE HHA', + 4625 : 'ETHIOPIC SYLLABLE HHU', + 4626 : 'ETHIOPIC SYLLABLE HHI', + 4627 : 'ETHIOPIC SYLLABLE HHAA', + 4628 : 'ETHIOPIC SYLLABLE HHEE', + 4629 : 'ETHIOPIC SYLLABLE HHE', + 4630 : 'ETHIOPIC SYLLABLE HHO', + 4631 : 'ETHIOPIC SYLLABLE HHWA', + 4632 : 'ETHIOPIC SYLLABLE MA', + 4633 : 'ETHIOPIC SYLLABLE MU', + 4634 : 'ETHIOPIC SYLLABLE MI', + 4635 : 'ETHIOPIC SYLLABLE MAA', + 4636 : 'ETHIOPIC SYLLABLE MEE', + 4637 : 'ETHIOPIC SYLLABLE ME', + 4638 : 'ETHIOPIC SYLLABLE MO', + 4639 : 'ETHIOPIC SYLLABLE MWA', + 4640 : 'ETHIOPIC SYLLABLE SZA', + 4641 : 'ETHIOPIC SYLLABLE SZU', + 4642 : 'ETHIOPIC SYLLABLE SZI', + 4643 : 'ETHIOPIC SYLLABLE SZAA', + 4644 : 'ETHIOPIC SYLLABLE SZEE', + 4645 : 'ETHIOPIC SYLLABLE SZE', + 4646 : 'ETHIOPIC SYLLABLE SZO', + 4647 : 'ETHIOPIC SYLLABLE SZWA', + 4648 : 'ETHIOPIC SYLLABLE RA', + 4649 : 'ETHIOPIC SYLLABLE RU', + 4650 : 'ETHIOPIC SYLLABLE RI', + 4651 : 'ETHIOPIC SYLLABLE RAA', + 4652 : 'ETHIOPIC SYLLABLE REE', + 4653 : 'ETHIOPIC SYLLABLE RE', + 4654 : 'ETHIOPIC SYLLABLE RO', + 4655 : 'ETHIOPIC SYLLABLE RWA', + 4656 : 'ETHIOPIC SYLLABLE SA', + 4657 : 'ETHIOPIC SYLLABLE SU', + 4658 : 'ETHIOPIC SYLLABLE SI', + 4659 : 'ETHIOPIC SYLLABLE SAA', + 4660 : 'ETHIOPIC SYLLABLE SEE', + 4661 : 'ETHIOPIC SYLLABLE SE', + 4662 : 'ETHIOPIC SYLLABLE SO', + 4663 : 'ETHIOPIC SYLLABLE SWA', + 4664 : 'ETHIOPIC SYLLABLE SHA', + 4665 : 'ETHIOPIC SYLLABLE SHU', + 4666 : 'ETHIOPIC SYLLABLE SHI', + 4667 : 'ETHIOPIC SYLLABLE SHAA', + 4668 : 'ETHIOPIC SYLLABLE SHEE', + 4669 : 'ETHIOPIC SYLLABLE SHE', + 4670 : 'ETHIOPIC SYLLABLE SHO', + 4671 : 'ETHIOPIC SYLLABLE SHWA', + 4672 : 'ETHIOPIC SYLLABLE QA', + 4673 : 'ETHIOPIC SYLLABLE QU', + 4674 : 'ETHIOPIC SYLLABLE QI', + 4675 : 'ETHIOPIC SYLLABLE QAA', + 4676 : 'ETHIOPIC SYLLABLE QEE', + 4677 : 'ETHIOPIC SYLLABLE QE', + 4678 : 'ETHIOPIC SYLLABLE QO', + 4680 : 'ETHIOPIC SYLLABLE QWA', + 4682 : 'ETHIOPIC SYLLABLE QWI', + 4683 : 'ETHIOPIC SYLLABLE QWAA', + 4684 : 'ETHIOPIC SYLLABLE QWEE', + 4685 : 'ETHIOPIC SYLLABLE QWE', + 4688 : 'ETHIOPIC SYLLABLE QHA', + 4689 : 'ETHIOPIC SYLLABLE QHU', + 4690 : 'ETHIOPIC SYLLABLE QHI', + 4691 : 'ETHIOPIC SYLLABLE QHAA', + 4692 : 'ETHIOPIC SYLLABLE QHEE', + 4693 : 'ETHIOPIC SYLLABLE QHE', + 4694 : 'ETHIOPIC SYLLABLE QHO', + 4696 : 'ETHIOPIC SYLLABLE QHWA', + 4698 : 'ETHIOPIC SYLLABLE QHWI', + 4699 : 'ETHIOPIC SYLLABLE QHWAA', + 4700 : 'ETHIOPIC SYLLABLE QHWEE', + 4701 : 'ETHIOPIC SYLLABLE QHWE', + 4704 : 'ETHIOPIC SYLLABLE BA', + 4705 : 'ETHIOPIC SYLLABLE BU', + 4706 : 'ETHIOPIC SYLLABLE BI', + 4707 : 'ETHIOPIC SYLLABLE BAA', + 4708 : 'ETHIOPIC SYLLABLE BEE', + 4709 : 'ETHIOPIC SYLLABLE BE', + 4710 : 'ETHIOPIC SYLLABLE BO', + 4711 : 'ETHIOPIC SYLLABLE BWA', + 4712 : 'ETHIOPIC SYLLABLE VA', + 4713 : 'ETHIOPIC SYLLABLE VU', + 4714 : 'ETHIOPIC SYLLABLE VI', + 4715 : 'ETHIOPIC SYLLABLE VAA', + 4716 : 'ETHIOPIC SYLLABLE VEE', + 4717 : 'ETHIOPIC SYLLABLE VE', + 4718 : 'ETHIOPIC SYLLABLE VO', + 4719 : 'ETHIOPIC SYLLABLE VWA', + 4720 : 'ETHIOPIC SYLLABLE TA', + 4721 : 'ETHIOPIC SYLLABLE TU', + 4722 : 'ETHIOPIC SYLLABLE TI', + 4723 : 'ETHIOPIC SYLLABLE TAA', + 4724 : 'ETHIOPIC SYLLABLE TEE', + 4725 : 'ETHIOPIC SYLLABLE TE', + 4726 : 'ETHIOPIC SYLLABLE TO', + 4727 : 'ETHIOPIC SYLLABLE TWA', + 4728 : 'ETHIOPIC SYLLABLE CA', + 4729 : 'ETHIOPIC SYLLABLE CU', + 4730 : 'ETHIOPIC SYLLABLE CI', + 4731 : 'ETHIOPIC SYLLABLE CAA', + 4732 : 'ETHIOPIC SYLLABLE CEE', + 4733 : 'ETHIOPIC SYLLABLE CE', + 4734 : 'ETHIOPIC SYLLABLE CO', + 4735 : 'ETHIOPIC SYLLABLE CWA', + 4736 : 'ETHIOPIC SYLLABLE XA', + 4737 : 'ETHIOPIC SYLLABLE XU', + 4738 : 'ETHIOPIC SYLLABLE XI', + 4739 : 'ETHIOPIC SYLLABLE XAA', + 4740 : 'ETHIOPIC SYLLABLE XEE', + 4741 : 'ETHIOPIC SYLLABLE XE', + 4742 : 'ETHIOPIC SYLLABLE XO', + 4744 : 'ETHIOPIC SYLLABLE XWA', + 4746 : 'ETHIOPIC SYLLABLE XWI', + 4747 : 'ETHIOPIC SYLLABLE XWAA', + 4748 : 'ETHIOPIC SYLLABLE XWEE', + 4749 : 'ETHIOPIC SYLLABLE XWE', + 4752 : 'ETHIOPIC SYLLABLE NA', + 4753 : 'ETHIOPIC SYLLABLE NU', + 4754 : 'ETHIOPIC SYLLABLE NI', + 4755 : 'ETHIOPIC SYLLABLE NAA', + 4756 : 'ETHIOPIC SYLLABLE NEE', + 4757 : 'ETHIOPIC SYLLABLE NE', + 4758 : 'ETHIOPIC SYLLABLE NO', + 4759 : 'ETHIOPIC SYLLABLE NWA', + 4760 : 'ETHIOPIC SYLLABLE NYA', + 4761 : 'ETHIOPIC SYLLABLE NYU', + 4762 : 'ETHIOPIC SYLLABLE NYI', + 4763 : 'ETHIOPIC SYLLABLE NYAA', + 4764 : 'ETHIOPIC SYLLABLE NYEE', + 4765 : 'ETHIOPIC SYLLABLE NYE', + 4766 : 'ETHIOPIC SYLLABLE NYO', + 4767 : 'ETHIOPIC SYLLABLE NYWA', + 4768 : 'ETHIOPIC SYLLABLE GLOTTAL A', + 4769 : 'ETHIOPIC SYLLABLE GLOTTAL U', + 4770 : 'ETHIOPIC SYLLABLE GLOTTAL I', + 4771 : 'ETHIOPIC SYLLABLE GLOTTAL AA', + 4772 : 'ETHIOPIC SYLLABLE GLOTTAL EE', + 4773 : 'ETHIOPIC SYLLABLE GLOTTAL E', + 4774 : 'ETHIOPIC SYLLABLE GLOTTAL O', + 4775 : 'ETHIOPIC SYLLABLE GLOTTAL WA', + 4776 : 'ETHIOPIC SYLLABLE KA', + 4777 : 'ETHIOPIC SYLLABLE KU', + 4778 : 'ETHIOPIC SYLLABLE KI', + 4779 : 'ETHIOPIC SYLLABLE KAA', + 4780 : 'ETHIOPIC SYLLABLE KEE', + 4781 : 'ETHIOPIC SYLLABLE KE', + 4782 : 'ETHIOPIC SYLLABLE KO', + 4784 : 'ETHIOPIC SYLLABLE KWA', + 4786 : 'ETHIOPIC SYLLABLE KWI', + 4787 : 'ETHIOPIC SYLLABLE KWAA', + 4788 : 'ETHIOPIC SYLLABLE KWEE', + 4789 : 'ETHIOPIC SYLLABLE KWE', + 4792 : 'ETHIOPIC SYLLABLE KXA', + 4793 : 'ETHIOPIC SYLLABLE KXU', + 4794 : 'ETHIOPIC SYLLABLE KXI', + 4795 : 'ETHIOPIC SYLLABLE KXAA', + 4796 : 'ETHIOPIC SYLLABLE KXEE', + 4797 : 'ETHIOPIC SYLLABLE KXE', + 4798 : 'ETHIOPIC SYLLABLE KXO', + 4800 : 'ETHIOPIC SYLLABLE KXWA', + 4802 : 'ETHIOPIC SYLLABLE KXWI', + 4803 : 'ETHIOPIC SYLLABLE KXWAA', + 4804 : 'ETHIOPIC SYLLABLE KXWEE', + 4805 : 'ETHIOPIC SYLLABLE KXWE', + 4808 : 'ETHIOPIC SYLLABLE WA', + 4809 : 'ETHIOPIC SYLLABLE WU', + 4810 : 'ETHIOPIC SYLLABLE WI', + 4811 : 'ETHIOPIC SYLLABLE WAA', + 4812 : 'ETHIOPIC SYLLABLE WEE', + 4813 : 'ETHIOPIC SYLLABLE WE', + 4814 : 'ETHIOPIC SYLLABLE WO', + 4816 : 'ETHIOPIC SYLLABLE PHARYNGEAL A', + 4817 : 'ETHIOPIC SYLLABLE PHARYNGEAL U', + 4818 : 'ETHIOPIC SYLLABLE PHARYNGEAL I', + 4819 : 'ETHIOPIC SYLLABLE PHARYNGEAL AA', + 4820 : 'ETHIOPIC SYLLABLE PHARYNGEAL EE', + 4821 : 'ETHIOPIC SYLLABLE PHARYNGEAL E', + 4822 : 'ETHIOPIC SYLLABLE PHARYNGEAL O', + 4824 : 'ETHIOPIC SYLLABLE ZA', + 4825 : 'ETHIOPIC SYLLABLE ZU', + 4826 : 'ETHIOPIC SYLLABLE ZI', + 4827 : 'ETHIOPIC SYLLABLE ZAA', + 4828 : 'ETHIOPIC SYLLABLE ZEE', + 4829 : 'ETHIOPIC SYLLABLE ZE', + 4830 : 'ETHIOPIC SYLLABLE ZO', + 4831 : 'ETHIOPIC SYLLABLE ZWA', + 4832 : 'ETHIOPIC SYLLABLE ZHA', + 4833 : 'ETHIOPIC SYLLABLE ZHU', + 4834 : 'ETHIOPIC SYLLABLE ZHI', + 4835 : 'ETHIOPIC SYLLABLE ZHAA', + 4836 : 'ETHIOPIC SYLLABLE ZHEE', + 4837 : 'ETHIOPIC SYLLABLE ZHE', + 4838 : 'ETHIOPIC SYLLABLE ZHO', + 4839 : 'ETHIOPIC SYLLABLE ZHWA', + 4840 : 'ETHIOPIC SYLLABLE YA', + 4841 : 'ETHIOPIC SYLLABLE YU', + 4842 : 'ETHIOPIC SYLLABLE YI', + 4843 : 'ETHIOPIC SYLLABLE YAA', + 4844 : 'ETHIOPIC SYLLABLE YEE', + 4845 : 'ETHIOPIC SYLLABLE YE', + 4846 : 'ETHIOPIC SYLLABLE YO', + 4848 : 'ETHIOPIC SYLLABLE DA', + 4849 : 'ETHIOPIC SYLLABLE DU', + 4850 : 'ETHIOPIC SYLLABLE DI', + 4851 : 'ETHIOPIC SYLLABLE DAA', + 4852 : 'ETHIOPIC SYLLABLE DEE', + 4853 : 'ETHIOPIC SYLLABLE DE', + 4854 : 'ETHIOPIC SYLLABLE DO', + 4855 : 'ETHIOPIC SYLLABLE DWA', + 4856 : 'ETHIOPIC SYLLABLE DDA', + 4857 : 'ETHIOPIC SYLLABLE DDU', + 4858 : 'ETHIOPIC SYLLABLE DDI', + 4859 : 'ETHIOPIC SYLLABLE DDAA', + 4860 : 'ETHIOPIC SYLLABLE DDEE', + 4861 : 'ETHIOPIC SYLLABLE DDE', + 4862 : 'ETHIOPIC SYLLABLE DDO', + 4863 : 'ETHIOPIC SYLLABLE DDWA', + 4864 : 'ETHIOPIC SYLLABLE JA', + 4865 : 'ETHIOPIC SYLLABLE JU', + 4866 : 'ETHIOPIC SYLLABLE JI', + 4867 : 'ETHIOPIC SYLLABLE JAA', + 4868 : 'ETHIOPIC SYLLABLE JEE', + 4869 : 'ETHIOPIC SYLLABLE JE', + 4870 : 'ETHIOPIC SYLLABLE JO', + 4871 : 'ETHIOPIC SYLLABLE JWA', + 4872 : 'ETHIOPIC SYLLABLE GA', + 4873 : 'ETHIOPIC SYLLABLE GU', + 4874 : 'ETHIOPIC SYLLABLE GI', + 4875 : 'ETHIOPIC SYLLABLE GAA', + 4876 : 'ETHIOPIC SYLLABLE GEE', + 4877 : 'ETHIOPIC SYLLABLE GE', + 4878 : 'ETHIOPIC SYLLABLE GO', + 4880 : 'ETHIOPIC SYLLABLE GWA', + 4882 : 'ETHIOPIC SYLLABLE GWI', + 4883 : 'ETHIOPIC SYLLABLE GWAA', + 4884 : 'ETHIOPIC SYLLABLE GWEE', + 4885 : 'ETHIOPIC SYLLABLE GWE', + 4888 : 'ETHIOPIC SYLLABLE GGA', + 4889 : 'ETHIOPIC SYLLABLE GGU', + 4890 : 'ETHIOPIC SYLLABLE GGI', + 4891 : 'ETHIOPIC SYLLABLE GGAA', + 4892 : 'ETHIOPIC SYLLABLE GGEE', + 4893 : 'ETHIOPIC SYLLABLE GGE', + 4894 : 'ETHIOPIC SYLLABLE GGO', + 4896 : 'ETHIOPIC SYLLABLE THA', + 4897 : 'ETHIOPIC SYLLABLE THU', + 4898 : 'ETHIOPIC SYLLABLE THI', + 4899 : 'ETHIOPIC SYLLABLE THAA', + 4900 : 'ETHIOPIC SYLLABLE THEE', + 4901 : 'ETHIOPIC SYLLABLE THE', + 4902 : 'ETHIOPIC SYLLABLE THO', + 4903 : 'ETHIOPIC SYLLABLE THWA', + 4904 : 'ETHIOPIC SYLLABLE CHA', + 4905 : 'ETHIOPIC SYLLABLE CHU', + 4906 : 'ETHIOPIC SYLLABLE CHI', + 4907 : 'ETHIOPIC SYLLABLE CHAA', + 4908 : 'ETHIOPIC SYLLABLE CHEE', + 4909 : 'ETHIOPIC SYLLABLE CHE', + 4910 : 'ETHIOPIC SYLLABLE CHO', + 4911 : 'ETHIOPIC SYLLABLE CHWA', + 4912 : 'ETHIOPIC SYLLABLE PHA', + 4913 : 'ETHIOPIC SYLLABLE PHU', + 4914 : 'ETHIOPIC SYLLABLE PHI', + 4915 : 'ETHIOPIC SYLLABLE PHAA', + 4916 : 'ETHIOPIC SYLLABLE PHEE', + 4917 : 'ETHIOPIC SYLLABLE PHE', + 4918 : 'ETHIOPIC SYLLABLE PHO', + 4919 : 'ETHIOPIC SYLLABLE PHWA', + 4920 : 'ETHIOPIC SYLLABLE TSA', + 4921 : 'ETHIOPIC SYLLABLE TSU', + 4922 : 'ETHIOPIC SYLLABLE TSI', + 4923 : 'ETHIOPIC SYLLABLE TSAA', + 4924 : 'ETHIOPIC SYLLABLE TSEE', + 4925 : 'ETHIOPIC SYLLABLE TSE', + 4926 : 'ETHIOPIC SYLLABLE TSO', + 4927 : 'ETHIOPIC SYLLABLE TSWA', + 4928 : 'ETHIOPIC SYLLABLE TZA', + 4929 : 'ETHIOPIC SYLLABLE TZU', + 4930 : 'ETHIOPIC SYLLABLE TZI', + 4931 : 'ETHIOPIC SYLLABLE TZAA', + 4932 : 'ETHIOPIC SYLLABLE TZEE', + 4933 : 'ETHIOPIC SYLLABLE TZE', + 4934 : 'ETHIOPIC SYLLABLE TZO', + 4936 : 'ETHIOPIC SYLLABLE FA', + 4937 : 'ETHIOPIC SYLLABLE FU', + 4938 : 'ETHIOPIC SYLLABLE FI', + 4939 : 'ETHIOPIC SYLLABLE FAA', + 4940 : 'ETHIOPIC SYLLABLE FEE', + 4941 : 'ETHIOPIC SYLLABLE FE', + 4942 : 'ETHIOPIC SYLLABLE FO', + 4943 : 'ETHIOPIC SYLLABLE FWA', + 4944 : 'ETHIOPIC SYLLABLE PA', + 4945 : 'ETHIOPIC SYLLABLE PU', + 4946 : 'ETHIOPIC SYLLABLE PI', + 4947 : 'ETHIOPIC SYLLABLE PAA', + 4948 : 'ETHIOPIC SYLLABLE PEE', + 4949 : 'ETHIOPIC SYLLABLE PE', + 4950 : 'ETHIOPIC SYLLABLE PO', + 4951 : 'ETHIOPIC SYLLABLE PWA', + 4952 : 'ETHIOPIC SYLLABLE RYA', + 4953 : 'ETHIOPIC SYLLABLE MYA', + 4954 : 'ETHIOPIC SYLLABLE FYA', + 4961 : 'ETHIOPIC WORDSPACE', + 4962 : 'ETHIOPIC FULL STOP', + 4963 : 'ETHIOPIC COMMA', + 4964 : 'ETHIOPIC SEMICOLON', + 4965 : 'ETHIOPIC COLON', + 4966 : 'ETHIOPIC PREFACE COLON', + 4967 : 'ETHIOPIC QUESTION MARK', + 4968 : 'ETHIOPIC PARAGRAPH SEPARATOR', + 4969 : 'ETHIOPIC DIGIT ONE', + 4970 : 'ETHIOPIC DIGIT TWO', + 4971 : 'ETHIOPIC DIGIT THREE', + 4972 : 'ETHIOPIC DIGIT FOUR', + 4973 : 'ETHIOPIC DIGIT FIVE', + 4974 : 'ETHIOPIC DIGIT SIX', + 4975 : 'ETHIOPIC DIGIT SEVEN', + 4976 : 'ETHIOPIC DIGIT EIGHT', + 4977 : 'ETHIOPIC DIGIT NINE', + 4978 : 'ETHIOPIC NUMBER TEN', + 4979 : 'ETHIOPIC NUMBER TWENTY', + 4980 : 'ETHIOPIC NUMBER THIRTY', + 4981 : 'ETHIOPIC NUMBER FORTY', + 4982 : 'ETHIOPIC NUMBER FIFTY', + 4983 : 'ETHIOPIC NUMBER SIXTY', + 4984 : 'ETHIOPIC NUMBER SEVENTY', + 4985 : 'ETHIOPIC NUMBER EIGHTY', + 4986 : 'ETHIOPIC NUMBER NINETY', + 4987 : 'ETHIOPIC NUMBER HUNDRED', + 4988 : 'ETHIOPIC NUMBER TEN THOUSAND', + 5024 : 'CHEROKEE LETTER A', + 5025 : 'CHEROKEE LETTER E', + 5026 : 'CHEROKEE LETTER I', + 5027 : 'CHEROKEE LETTER O', + 5028 : 'CHEROKEE LETTER U', + 5029 : 'CHEROKEE LETTER V', + 5030 : 'CHEROKEE LETTER GA', + 5031 : 'CHEROKEE LETTER KA', + 5032 : 'CHEROKEE LETTER GE', + 5033 : 'CHEROKEE LETTER GI', + 5034 : 'CHEROKEE LETTER GO', + 5035 : 'CHEROKEE LETTER GU', + 5036 : 'CHEROKEE LETTER GV', + 5037 : 'CHEROKEE LETTER HA', + 5038 : 'CHEROKEE LETTER HE', + 5039 : 'CHEROKEE LETTER HI', + 5040 : 'CHEROKEE LETTER HO', + 5041 : 'CHEROKEE LETTER HU', + 5042 : 'CHEROKEE LETTER HV', + 5043 : 'CHEROKEE LETTER LA', + 5044 : 'CHEROKEE LETTER LE', + 5045 : 'CHEROKEE LETTER LI', + 5046 : 'CHEROKEE LETTER LO', + 5047 : 'CHEROKEE LETTER LU', + 5048 : 'CHEROKEE LETTER LV', + 5049 : 'CHEROKEE LETTER MA', + 5050 : 'CHEROKEE LETTER ME', + 5051 : 'CHEROKEE LETTER MI', + 5052 : 'CHEROKEE LETTER MO', + 5053 : 'CHEROKEE LETTER MU', + 5054 : 'CHEROKEE LETTER NA', + 5055 : 'CHEROKEE LETTER HNA', + 5056 : 'CHEROKEE LETTER NAH', + 5057 : 'CHEROKEE LETTER NE', + 5058 : 'CHEROKEE LETTER NI', + 5059 : 'CHEROKEE LETTER NO', + 5060 : 'CHEROKEE LETTER NU', + 5061 : 'CHEROKEE LETTER NV', + 5062 : 'CHEROKEE LETTER QUA', + 5063 : 'CHEROKEE LETTER QUE', + 5064 : 'CHEROKEE LETTER QUI', + 5065 : 'CHEROKEE LETTER QUO', + 5066 : 'CHEROKEE LETTER QUU', + 5067 : 'CHEROKEE LETTER QUV', + 5068 : 'CHEROKEE LETTER SA', + 5069 : 'CHEROKEE LETTER S', + 5070 : 'CHEROKEE LETTER SE', + 5071 : 'CHEROKEE LETTER SI', + 5072 : 'CHEROKEE LETTER SO', + 5073 : 'CHEROKEE LETTER SU', + 5074 : 'CHEROKEE LETTER SV', + 5075 : 'CHEROKEE LETTER DA', + 5076 : 'CHEROKEE LETTER TA', + 5077 : 'CHEROKEE LETTER DE', + 5078 : 'CHEROKEE LETTER TE', + 5079 : 'CHEROKEE LETTER DI', + 5080 : 'CHEROKEE LETTER TI', + 5081 : 'CHEROKEE LETTER DO', + 5082 : 'CHEROKEE LETTER DU', + 5083 : 'CHEROKEE LETTER DV', + 5084 : 'CHEROKEE LETTER DLA', + 5085 : 'CHEROKEE LETTER TLA', + 5086 : 'CHEROKEE LETTER TLE', + 5087 : 'CHEROKEE LETTER TLI', + 5088 : 'CHEROKEE LETTER TLO', + 5089 : 'CHEROKEE LETTER TLU', + 5090 : 'CHEROKEE LETTER TLV', + 5091 : 'CHEROKEE LETTER TSA', + 5092 : 'CHEROKEE LETTER TSE', + 5093 : 'CHEROKEE LETTER TSI', + 5094 : 'CHEROKEE LETTER TSO', + 5095 : 'CHEROKEE LETTER TSU', + 5096 : 'CHEROKEE LETTER TSV', + 5097 : 'CHEROKEE LETTER WA', + 5098 : 'CHEROKEE LETTER WE', + 5099 : 'CHEROKEE LETTER WI', + 5100 : 'CHEROKEE LETTER WO', + 5101 : 'CHEROKEE LETTER WU', + 5102 : 'CHEROKEE LETTER WV', + 5103 : 'CHEROKEE LETTER YA', + 5104 : 'CHEROKEE LETTER YE', + 5105 : 'CHEROKEE LETTER YI', + 5106 : 'CHEROKEE LETTER YO', + 5107 : 'CHEROKEE LETTER YU', + 5108 : 'CHEROKEE LETTER YV', + 5121 : 'CANADIAN SYLLABICS E', + 5122 : 'CANADIAN SYLLABICS AAI', + 5123 : 'CANADIAN SYLLABICS I', + 5124 : 'CANADIAN SYLLABICS II', + 5125 : 'CANADIAN SYLLABICS O', + 5126 : 'CANADIAN SYLLABICS OO', + 5127 : 'CANADIAN SYLLABICS Y-CREE OO', + 5128 : 'CANADIAN SYLLABICS CARRIER EE', + 5129 : 'CANADIAN SYLLABICS CARRIER I', + 5130 : 'CANADIAN SYLLABICS A', + 5131 : 'CANADIAN SYLLABICS AA', + 5132 : 'CANADIAN SYLLABICS WE', + 5133 : 'CANADIAN SYLLABICS WEST-CREE WE', + 5134 : 'CANADIAN SYLLABICS WI', + 5135 : 'CANADIAN SYLLABICS WEST-CREE WI', + 5136 : 'CANADIAN SYLLABICS WII', + 5137 : 'CANADIAN SYLLABICS WEST-CREE WII', + 5138 : 'CANADIAN SYLLABICS WO', + 5139 : 'CANADIAN SYLLABICS WEST-CREE WO', + 5140 : 'CANADIAN SYLLABICS WOO', + 5141 : 'CANADIAN SYLLABICS WEST-CREE WOO', + 5142 : 'CANADIAN SYLLABICS NASKAPI WOO', + 5143 : 'CANADIAN SYLLABICS WA', + 5144 : 'CANADIAN SYLLABICS WEST-CREE WA', + 5145 : 'CANADIAN SYLLABICS WAA', + 5146 : 'CANADIAN SYLLABICS WEST-CREE WAA', + 5147 : 'CANADIAN SYLLABICS NASKAPI WAA', + 5148 : 'CANADIAN SYLLABICS AI', + 5149 : 'CANADIAN SYLLABICS Y-CREE W', + 5150 : 'CANADIAN SYLLABICS GLOTTAL STOP', + 5151 : 'CANADIAN SYLLABICS FINAL ACUTE', + 5152 : 'CANADIAN SYLLABICS FINAL GRAVE', + 5153 : 'CANADIAN SYLLABICS FINAL BOTTOM HALF RING', + 5154 : 'CANADIAN SYLLABICS FINAL TOP HALF RING', + 5155 : 'CANADIAN SYLLABICS FINAL RIGHT HALF RING', + 5156 : 'CANADIAN SYLLABICS FINAL RING', + 5157 : 'CANADIAN SYLLABICS FINAL DOUBLE ACUTE', + 5158 : 'CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES', + 5159 : 'CANADIAN SYLLABICS FINAL MIDDLE DOT', + 5160 : 'CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE', + 5161 : 'CANADIAN SYLLABICS FINAL PLUS', + 5162 : 'CANADIAN SYLLABICS FINAL DOWN TACK', + 5163 : 'CANADIAN SYLLABICS EN', + 5164 : 'CANADIAN SYLLABICS IN', + 5165 : 'CANADIAN SYLLABICS ON', + 5166 : 'CANADIAN SYLLABICS AN', + 5167 : 'CANADIAN SYLLABICS PE', + 5168 : 'CANADIAN SYLLABICS PAAI', + 5169 : 'CANADIAN SYLLABICS PI', + 5170 : 'CANADIAN SYLLABICS PII', + 5171 : 'CANADIAN SYLLABICS PO', + 5172 : 'CANADIAN SYLLABICS POO', + 5173 : 'CANADIAN SYLLABICS Y-CREE POO', + 5174 : 'CANADIAN SYLLABICS CARRIER HEE', + 5175 : 'CANADIAN SYLLABICS CARRIER HI', + 5176 : 'CANADIAN SYLLABICS PA', + 5177 : 'CANADIAN SYLLABICS PAA', + 5178 : 'CANADIAN SYLLABICS PWE', + 5179 : 'CANADIAN SYLLABICS WEST-CREE PWE', + 5180 : 'CANADIAN SYLLABICS PWI', + 5181 : 'CANADIAN SYLLABICS WEST-CREE PWI', + 5182 : 'CANADIAN SYLLABICS PWII', + 5183 : 'CANADIAN SYLLABICS WEST-CREE PWII', + 5184 : 'CANADIAN SYLLABICS PWO', + 5185 : 'CANADIAN SYLLABICS WEST-CREE PWO', + 5186 : 'CANADIAN SYLLABICS PWOO', + 5187 : 'CANADIAN SYLLABICS WEST-CREE PWOO', + 5188 : 'CANADIAN SYLLABICS PWA', + 5189 : 'CANADIAN SYLLABICS WEST-CREE PWA', + 5190 : 'CANADIAN SYLLABICS PWAA', + 5191 : 'CANADIAN SYLLABICS WEST-CREE PWAA', + 5192 : 'CANADIAN SYLLABICS Y-CREE PWAA', + 5193 : 'CANADIAN SYLLABICS P', + 5194 : 'CANADIAN SYLLABICS WEST-CREE P', + 5195 : 'CANADIAN SYLLABICS CARRIER H', + 5196 : 'CANADIAN SYLLABICS TE', + 5197 : 'CANADIAN SYLLABICS TAAI', + 5198 : 'CANADIAN SYLLABICS TI', + 5199 : 'CANADIAN SYLLABICS TII', + 5200 : 'CANADIAN SYLLABICS TO', + 5201 : 'CANADIAN SYLLABICS TOO', + 5202 : 'CANADIAN SYLLABICS Y-CREE TOO', + 5203 : 'CANADIAN SYLLABICS CARRIER DEE', + 5204 : 'CANADIAN SYLLABICS CARRIER DI', + 5205 : 'CANADIAN SYLLABICS TA', + 5206 : 'CANADIAN SYLLABICS TAA', + 5207 : 'CANADIAN SYLLABICS TWE', + 5208 : 'CANADIAN SYLLABICS WEST-CREE TWE', + 5209 : 'CANADIAN SYLLABICS TWI', + 5210 : 'CANADIAN SYLLABICS WEST-CREE TWI', + 5211 : 'CANADIAN SYLLABICS TWII', + 5212 : 'CANADIAN SYLLABICS WEST-CREE TWII', + 5213 : 'CANADIAN SYLLABICS TWO', + 5214 : 'CANADIAN SYLLABICS WEST-CREE TWO', + 5215 : 'CANADIAN SYLLABICS TWOO', + 5216 : 'CANADIAN SYLLABICS WEST-CREE TWOO', + 5217 : 'CANADIAN SYLLABICS TWA', + 5218 : 'CANADIAN SYLLABICS WEST-CREE TWA', + 5219 : 'CANADIAN SYLLABICS TWAA', + 5220 : 'CANADIAN SYLLABICS WEST-CREE TWAA', + 5221 : 'CANADIAN SYLLABICS NASKAPI TWAA', + 5222 : 'CANADIAN SYLLABICS T', + 5223 : 'CANADIAN SYLLABICS TTE', + 5224 : 'CANADIAN SYLLABICS TTI', + 5225 : 'CANADIAN SYLLABICS TTO', + 5226 : 'CANADIAN SYLLABICS TTA', + 5227 : 'CANADIAN SYLLABICS KE', + 5228 : 'CANADIAN SYLLABICS KAAI', + 5229 : 'CANADIAN SYLLABICS KI', + 5230 : 'CANADIAN SYLLABICS KII', + 5231 : 'CANADIAN SYLLABICS KO', + 5232 : 'CANADIAN SYLLABICS KOO', + 5233 : 'CANADIAN SYLLABICS Y-CREE KOO', + 5234 : 'CANADIAN SYLLABICS KA', + 5235 : 'CANADIAN SYLLABICS KAA', + 5236 : 'CANADIAN SYLLABICS KWE', + 5237 : 'CANADIAN SYLLABICS WEST-CREE KWE', + 5238 : 'CANADIAN SYLLABICS KWI', + 5239 : 'CANADIAN SYLLABICS WEST-CREE KWI', + 5240 : 'CANADIAN SYLLABICS KWII', + 5241 : 'CANADIAN SYLLABICS WEST-CREE KWII', + 5242 : 'CANADIAN SYLLABICS KWO', + 5243 : 'CANADIAN SYLLABICS WEST-CREE KWO', + 5244 : 'CANADIAN SYLLABICS KWOO', + 5245 : 'CANADIAN SYLLABICS WEST-CREE KWOO', + 5246 : 'CANADIAN SYLLABICS KWA', + 5247 : 'CANADIAN SYLLABICS WEST-CREE KWA', + 5248 : 'CANADIAN SYLLABICS KWAA', + 5249 : 'CANADIAN SYLLABICS WEST-CREE KWAA', + 5250 : 'CANADIAN SYLLABICS NASKAPI KWAA', + 5251 : 'CANADIAN SYLLABICS K', + 5252 : 'CANADIAN SYLLABICS KW', + 5253 : 'CANADIAN SYLLABICS SOUTH-SLAVEY KEH', + 5254 : 'CANADIAN SYLLABICS SOUTH-SLAVEY KIH', + 5255 : 'CANADIAN SYLLABICS SOUTH-SLAVEY KOH', + 5256 : 'CANADIAN SYLLABICS SOUTH-SLAVEY KAH', + 5257 : 'CANADIAN SYLLABICS CE', + 5258 : 'CANADIAN SYLLABICS CAAI', + 5259 : 'CANADIAN SYLLABICS CI', + 5260 : 'CANADIAN SYLLABICS CII', + 5261 : 'CANADIAN SYLLABICS CO', + 5262 : 'CANADIAN SYLLABICS COO', + 5263 : 'CANADIAN SYLLABICS Y-CREE COO', + 5264 : 'CANADIAN SYLLABICS CA', + 5265 : 'CANADIAN SYLLABICS CAA', + 5266 : 'CANADIAN SYLLABICS CWE', + 5267 : 'CANADIAN SYLLABICS WEST-CREE CWE', + 5268 : 'CANADIAN SYLLABICS CWI', + 5269 : 'CANADIAN SYLLABICS WEST-CREE CWI', + 5270 : 'CANADIAN SYLLABICS CWII', + 5271 : 'CANADIAN SYLLABICS WEST-CREE CWII', + 5272 : 'CANADIAN SYLLABICS CWO', + 5273 : 'CANADIAN SYLLABICS WEST-CREE CWO', + 5274 : 'CANADIAN SYLLABICS CWOO', + 5275 : 'CANADIAN SYLLABICS WEST-CREE CWOO', + 5276 : 'CANADIAN SYLLABICS CWA', + 5277 : 'CANADIAN SYLLABICS WEST-CREE CWA', + 5278 : 'CANADIAN SYLLABICS CWAA', + 5279 : 'CANADIAN SYLLABICS WEST-CREE CWAA', + 5280 : 'CANADIAN SYLLABICS NASKAPI CWAA', + 5281 : 'CANADIAN SYLLABICS C', + 5282 : 'CANADIAN SYLLABICS SAYISI TH', + 5283 : 'CANADIAN SYLLABICS ME', + 5284 : 'CANADIAN SYLLABICS MAAI', + 5285 : 'CANADIAN SYLLABICS MI', + 5286 : 'CANADIAN SYLLABICS MII', + 5287 : 'CANADIAN SYLLABICS MO', + 5288 : 'CANADIAN SYLLABICS MOO', + 5289 : 'CANADIAN SYLLABICS Y-CREE MOO', + 5290 : 'CANADIAN SYLLABICS MA', + 5291 : 'CANADIAN SYLLABICS MAA', + 5292 : 'CANADIAN SYLLABICS MWE', + 5293 : 'CANADIAN SYLLABICS WEST-CREE MWE', + 5294 : 'CANADIAN SYLLABICS MWI', + 5295 : 'CANADIAN SYLLABICS WEST-CREE MWI', + 5296 : 'CANADIAN SYLLABICS MWII', + 5297 : 'CANADIAN SYLLABICS WEST-CREE MWII', + 5298 : 'CANADIAN SYLLABICS MWO', + 5299 : 'CANADIAN SYLLABICS WEST-CREE MWO', + 5300 : 'CANADIAN SYLLABICS MWOO', + 5301 : 'CANADIAN SYLLABICS WEST-CREE MWOO', + 5302 : 'CANADIAN SYLLABICS MWA', + 5303 : 'CANADIAN SYLLABICS WEST-CREE MWA', + 5304 : 'CANADIAN SYLLABICS MWAA', + 5305 : 'CANADIAN SYLLABICS WEST-CREE MWAA', + 5306 : 'CANADIAN SYLLABICS NASKAPI MWAA', + 5307 : 'CANADIAN SYLLABICS M', + 5308 : 'CANADIAN SYLLABICS WEST-CREE M', + 5309 : 'CANADIAN SYLLABICS MH', + 5310 : 'CANADIAN SYLLABICS ATHAPASCAN M', + 5311 : 'CANADIAN SYLLABICS SAYISI M', + 5312 : 'CANADIAN SYLLABICS NE', + 5313 : 'CANADIAN SYLLABICS NAAI', + 5314 : 'CANADIAN SYLLABICS NI', + 5315 : 'CANADIAN SYLLABICS NII', + 5316 : 'CANADIAN SYLLABICS NO', + 5317 : 'CANADIAN SYLLABICS NOO', + 5318 : 'CANADIAN SYLLABICS Y-CREE NOO', + 5319 : 'CANADIAN SYLLABICS NA', + 5320 : 'CANADIAN SYLLABICS NAA', + 5321 : 'CANADIAN SYLLABICS NWE', + 5322 : 'CANADIAN SYLLABICS WEST-CREE NWE', + 5323 : 'CANADIAN SYLLABICS NWA', + 5324 : 'CANADIAN SYLLABICS WEST-CREE NWA', + 5325 : 'CANADIAN SYLLABICS NWAA', + 5326 : 'CANADIAN SYLLABICS WEST-CREE NWAA', + 5327 : 'CANADIAN SYLLABICS NASKAPI NWAA', + 5328 : 'CANADIAN SYLLABICS N', + 5329 : 'CANADIAN SYLLABICS CARRIER NG', + 5330 : 'CANADIAN SYLLABICS NH', + 5331 : 'CANADIAN SYLLABICS LE', + 5332 : 'CANADIAN SYLLABICS LAAI', + 5333 : 'CANADIAN SYLLABICS LI', + 5334 : 'CANADIAN SYLLABICS LII', + 5335 : 'CANADIAN SYLLABICS LO', + 5336 : 'CANADIAN SYLLABICS LOO', + 5337 : 'CANADIAN SYLLABICS Y-CREE LOO', + 5338 : 'CANADIAN SYLLABICS LA', + 5339 : 'CANADIAN SYLLABICS LAA', + 5340 : 'CANADIAN SYLLABICS LWE', + 5341 : 'CANADIAN SYLLABICS WEST-CREE LWE', + 5342 : 'CANADIAN SYLLABICS LWI', + 5343 : 'CANADIAN SYLLABICS WEST-CREE LWI', + 5344 : 'CANADIAN SYLLABICS LWII', + 5345 : 'CANADIAN SYLLABICS WEST-CREE LWII', + 5346 : 'CANADIAN SYLLABICS LWO', + 5347 : 'CANADIAN SYLLABICS WEST-CREE LWO', + 5348 : 'CANADIAN SYLLABICS LWOO', + 5349 : 'CANADIAN SYLLABICS WEST-CREE LWOO', + 5350 : 'CANADIAN SYLLABICS LWA', + 5351 : 'CANADIAN SYLLABICS WEST-CREE LWA', + 5352 : 'CANADIAN SYLLABICS LWAA', + 5353 : 'CANADIAN SYLLABICS WEST-CREE LWAA', + 5354 : 'CANADIAN SYLLABICS L', + 5355 : 'CANADIAN SYLLABICS WEST-CREE L', + 5356 : 'CANADIAN SYLLABICS MEDIAL L', + 5357 : 'CANADIAN SYLLABICS SE', + 5358 : 'CANADIAN SYLLABICS SAAI', + 5359 : 'CANADIAN SYLLABICS SI', + 5360 : 'CANADIAN SYLLABICS SII', + 5361 : 'CANADIAN SYLLABICS SO', + 5362 : 'CANADIAN SYLLABICS SOO', + 5363 : 'CANADIAN SYLLABICS Y-CREE SOO', + 5364 : 'CANADIAN SYLLABICS SA', + 5365 : 'CANADIAN SYLLABICS SAA', + 5366 : 'CANADIAN SYLLABICS SWE', + 5367 : 'CANADIAN SYLLABICS WEST-CREE SWE', + 5368 : 'CANADIAN SYLLABICS SWI', + 5369 : 'CANADIAN SYLLABICS WEST-CREE SWI', + 5370 : 'CANADIAN SYLLABICS SWII', + 5371 : 'CANADIAN SYLLABICS WEST-CREE SWII', + 5372 : 'CANADIAN SYLLABICS SWO', + 5373 : 'CANADIAN SYLLABICS WEST-CREE SWO', + 5374 : 'CANADIAN SYLLABICS SWOO', + 5375 : 'CANADIAN SYLLABICS WEST-CREE SWOO', + 5376 : 'CANADIAN SYLLABICS SWA', + 5377 : 'CANADIAN SYLLABICS WEST-CREE SWA', + 5378 : 'CANADIAN SYLLABICS SWAA', + 5379 : 'CANADIAN SYLLABICS WEST-CREE SWAA', + 5380 : 'CANADIAN SYLLABICS NASKAPI SWAA', + 5381 : 'CANADIAN SYLLABICS S', + 5382 : 'CANADIAN SYLLABICS ATHAPASCAN S', + 5383 : 'CANADIAN SYLLABICS SW', + 5384 : 'CANADIAN SYLLABICS BLACKFOOT S', + 5385 : 'CANADIAN SYLLABICS MOOSE-CREE SK', + 5386 : 'CANADIAN SYLLABICS NASKAPI SKW', + 5387 : 'CANADIAN SYLLABICS NASKAPI S-W', + 5388 : 'CANADIAN SYLLABICS NASKAPI SPWA', + 5389 : 'CANADIAN SYLLABICS NASKAPI STWA', + 5390 : 'CANADIAN SYLLABICS NASKAPI SKWA', + 5391 : 'CANADIAN SYLLABICS NASKAPI SCWA', + 5392 : 'CANADIAN SYLLABICS SHE', + 5393 : 'CANADIAN SYLLABICS SHI', + 5394 : 'CANADIAN SYLLABICS SHII', + 5395 : 'CANADIAN SYLLABICS SHO', + 5396 : 'CANADIAN SYLLABICS SHOO', + 5397 : 'CANADIAN SYLLABICS SHA', + 5398 : 'CANADIAN SYLLABICS SHAA', + 5399 : 'CANADIAN SYLLABICS SHWE', + 5400 : 'CANADIAN SYLLABICS WEST-CREE SHWE', + 5401 : 'CANADIAN SYLLABICS SHWI', + 5402 : 'CANADIAN SYLLABICS WEST-CREE SHWI', + 5403 : 'CANADIAN SYLLABICS SHWII', + 5404 : 'CANADIAN SYLLABICS WEST-CREE SHWII', + 5405 : 'CANADIAN SYLLABICS SHWO', + 5406 : 'CANADIAN SYLLABICS WEST-CREE SHWO', + 5407 : 'CANADIAN SYLLABICS SHWOO', + 5408 : 'CANADIAN SYLLABICS WEST-CREE SHWOO', + 5409 : 'CANADIAN SYLLABICS SHWA', + 5410 : 'CANADIAN SYLLABICS WEST-CREE SHWA', + 5411 : 'CANADIAN SYLLABICS SHWAA', + 5412 : 'CANADIAN SYLLABICS WEST-CREE SHWAA', + 5413 : 'CANADIAN SYLLABICS SH', + 5414 : 'CANADIAN SYLLABICS YE', + 5415 : 'CANADIAN SYLLABICS YAAI', + 5416 : 'CANADIAN SYLLABICS YI', + 5417 : 'CANADIAN SYLLABICS YII', + 5418 : 'CANADIAN SYLLABICS YO', + 5419 : 'CANADIAN SYLLABICS YOO', + 5420 : 'CANADIAN SYLLABICS Y-CREE YOO', + 5421 : 'CANADIAN SYLLABICS YA', + 5422 : 'CANADIAN SYLLABICS YAA', + 5423 : 'CANADIAN SYLLABICS YWE', + 5424 : 'CANADIAN SYLLABICS WEST-CREE YWE', + 5425 : 'CANADIAN SYLLABICS YWI', + 5426 : 'CANADIAN SYLLABICS WEST-CREE YWI', + 5427 : 'CANADIAN SYLLABICS YWII', + 5428 : 'CANADIAN SYLLABICS WEST-CREE YWII', + 5429 : 'CANADIAN SYLLABICS YWO', + 5430 : 'CANADIAN SYLLABICS WEST-CREE YWO', + 5431 : 'CANADIAN SYLLABICS YWOO', + 5432 : 'CANADIAN SYLLABICS WEST-CREE YWOO', + 5433 : 'CANADIAN SYLLABICS YWA', + 5434 : 'CANADIAN SYLLABICS WEST-CREE YWA', + 5435 : 'CANADIAN SYLLABICS YWAA', + 5436 : 'CANADIAN SYLLABICS WEST-CREE YWAA', + 5437 : 'CANADIAN SYLLABICS NASKAPI YWAA', + 5438 : 'CANADIAN SYLLABICS Y', + 5439 : 'CANADIAN SYLLABICS BIBLE-CREE Y', + 5440 : 'CANADIAN SYLLABICS WEST-CREE Y', + 5441 : 'CANADIAN SYLLABICS SAYISI YI', + 5442 : 'CANADIAN SYLLABICS RE', + 5443 : 'CANADIAN SYLLABICS R-CREE RE', + 5444 : 'CANADIAN SYLLABICS WEST-CREE LE', + 5445 : 'CANADIAN SYLLABICS RAAI', + 5446 : 'CANADIAN SYLLABICS RI', + 5447 : 'CANADIAN SYLLABICS RII', + 5448 : 'CANADIAN SYLLABICS RO', + 5449 : 'CANADIAN SYLLABICS ROO', + 5450 : 'CANADIAN SYLLABICS WEST-CREE LO', + 5451 : 'CANADIAN SYLLABICS RA', + 5452 : 'CANADIAN SYLLABICS RAA', + 5453 : 'CANADIAN SYLLABICS WEST-CREE LA', + 5454 : 'CANADIAN SYLLABICS RWAA', + 5455 : 'CANADIAN SYLLABICS WEST-CREE RWAA', + 5456 : 'CANADIAN SYLLABICS R', + 5457 : 'CANADIAN SYLLABICS WEST-CREE R', + 5458 : 'CANADIAN SYLLABICS MEDIAL R', + 5459 : 'CANADIAN SYLLABICS FE', + 5460 : 'CANADIAN SYLLABICS FAAI', + 5461 : 'CANADIAN SYLLABICS FI', + 5462 : 'CANADIAN SYLLABICS FII', + 5463 : 'CANADIAN SYLLABICS FO', + 5464 : 'CANADIAN SYLLABICS FOO', + 5465 : 'CANADIAN SYLLABICS FA', + 5466 : 'CANADIAN SYLLABICS FAA', + 5467 : 'CANADIAN SYLLABICS FWAA', + 5468 : 'CANADIAN SYLLABICS WEST-CREE FWAA', + 5469 : 'CANADIAN SYLLABICS F', + 5470 : 'CANADIAN SYLLABICS THE', + 5471 : 'CANADIAN SYLLABICS N-CREE THE', + 5472 : 'CANADIAN SYLLABICS THI', + 5473 : 'CANADIAN SYLLABICS N-CREE THI', + 5474 : 'CANADIAN SYLLABICS THII', + 5475 : 'CANADIAN SYLLABICS N-CREE THII', + 5476 : 'CANADIAN SYLLABICS THO', + 5477 : 'CANADIAN SYLLABICS THOO', + 5478 : 'CANADIAN SYLLABICS THA', + 5479 : 'CANADIAN SYLLABICS THAA', + 5480 : 'CANADIAN SYLLABICS THWAA', + 5481 : 'CANADIAN SYLLABICS WEST-CREE THWAA', + 5482 : 'CANADIAN SYLLABICS TH', + 5483 : 'CANADIAN SYLLABICS TTHE', + 5484 : 'CANADIAN SYLLABICS TTHI', + 5485 : 'CANADIAN SYLLABICS TTHO', + 5486 : 'CANADIAN SYLLABICS TTHA', + 5487 : 'CANADIAN SYLLABICS TTH', + 5488 : 'CANADIAN SYLLABICS TYE', + 5489 : 'CANADIAN SYLLABICS TYI', + 5490 : 'CANADIAN SYLLABICS TYO', + 5491 : 'CANADIAN SYLLABICS TYA', + 5492 : 'CANADIAN SYLLABICS NUNAVIK HE', + 5493 : 'CANADIAN SYLLABICS NUNAVIK HI', + 5494 : 'CANADIAN SYLLABICS NUNAVIK HII', + 5495 : 'CANADIAN SYLLABICS NUNAVIK HO', + 5496 : 'CANADIAN SYLLABICS NUNAVIK HOO', + 5497 : 'CANADIAN SYLLABICS NUNAVIK HA', + 5498 : 'CANADIAN SYLLABICS NUNAVIK HAA', + 5499 : 'CANADIAN SYLLABICS NUNAVIK H', + 5500 : 'CANADIAN SYLLABICS NUNAVUT H', + 5501 : 'CANADIAN SYLLABICS HK', + 5502 : 'CANADIAN SYLLABICS QAAI', + 5503 : 'CANADIAN SYLLABICS QI', + 5504 : 'CANADIAN SYLLABICS QII', + 5505 : 'CANADIAN SYLLABICS QO', + 5506 : 'CANADIAN SYLLABICS QOO', + 5507 : 'CANADIAN SYLLABICS QA', + 5508 : 'CANADIAN SYLLABICS QAA', + 5509 : 'CANADIAN SYLLABICS Q', + 5510 : 'CANADIAN SYLLABICS TLHE', + 5511 : 'CANADIAN SYLLABICS TLHI', + 5512 : 'CANADIAN SYLLABICS TLHO', + 5513 : 'CANADIAN SYLLABICS TLHA', + 5514 : 'CANADIAN SYLLABICS WEST-CREE RE', + 5515 : 'CANADIAN SYLLABICS WEST-CREE RI', + 5516 : 'CANADIAN SYLLABICS WEST-CREE RO', + 5517 : 'CANADIAN SYLLABICS WEST-CREE RA', + 5518 : 'CANADIAN SYLLABICS NGAAI', + 5519 : 'CANADIAN SYLLABICS NGI', + 5520 : 'CANADIAN SYLLABICS NGII', + 5521 : 'CANADIAN SYLLABICS NGO', + 5522 : 'CANADIAN SYLLABICS NGOO', + 5523 : 'CANADIAN SYLLABICS NGA', + 5524 : 'CANADIAN SYLLABICS NGAA', + 5525 : 'CANADIAN SYLLABICS NG', + 5526 : 'CANADIAN SYLLABICS NNG', + 5527 : 'CANADIAN SYLLABICS SAYISI SHE', + 5528 : 'CANADIAN SYLLABICS SAYISI SHI', + 5529 : 'CANADIAN SYLLABICS SAYISI SHO', + 5530 : 'CANADIAN SYLLABICS SAYISI SHA', + 5531 : 'CANADIAN SYLLABICS WOODS-CREE THE', + 5532 : 'CANADIAN SYLLABICS WOODS-CREE THI', + 5533 : 'CANADIAN SYLLABICS WOODS-CREE THO', + 5534 : 'CANADIAN SYLLABICS WOODS-CREE THA', + 5535 : 'CANADIAN SYLLABICS WOODS-CREE TH', + 5536 : 'CANADIAN SYLLABICS LHI', + 5537 : 'CANADIAN SYLLABICS LHII', + 5538 : 'CANADIAN SYLLABICS LHO', + 5539 : 'CANADIAN SYLLABICS LHOO', + 5540 : 'CANADIAN SYLLABICS LHA', + 5541 : 'CANADIAN SYLLABICS LHAA', + 5542 : 'CANADIAN SYLLABICS LH', + 5543 : 'CANADIAN SYLLABICS TH-CREE THE', + 5544 : 'CANADIAN SYLLABICS TH-CREE THI', + 5545 : 'CANADIAN SYLLABICS TH-CREE THII', + 5546 : 'CANADIAN SYLLABICS TH-CREE THO', + 5547 : 'CANADIAN SYLLABICS TH-CREE THOO', + 5548 : 'CANADIAN SYLLABICS TH-CREE THA', + 5549 : 'CANADIAN SYLLABICS TH-CREE THAA', + 5550 : 'CANADIAN SYLLABICS TH-CREE TH', + 5551 : 'CANADIAN SYLLABICS AIVILIK B', + 5552 : 'CANADIAN SYLLABICS BLACKFOOT E', + 5553 : 'CANADIAN SYLLABICS BLACKFOOT I', + 5554 : 'CANADIAN SYLLABICS BLACKFOOT O', + 5555 : 'CANADIAN SYLLABICS BLACKFOOT A', + 5556 : 'CANADIAN SYLLABICS BLACKFOOT WE', + 5557 : 'CANADIAN SYLLABICS BLACKFOOT WI', + 5558 : 'CANADIAN SYLLABICS BLACKFOOT WO', + 5559 : 'CANADIAN SYLLABICS BLACKFOOT WA', + 5560 : 'CANADIAN SYLLABICS BLACKFOOT NE', + 5561 : 'CANADIAN SYLLABICS BLACKFOOT NI', + 5562 : 'CANADIAN SYLLABICS BLACKFOOT NO', + 5563 : 'CANADIAN SYLLABICS BLACKFOOT NA', + 5564 : 'CANADIAN SYLLABICS BLACKFOOT KE', + 5565 : 'CANADIAN SYLLABICS BLACKFOOT KI', + 5566 : 'CANADIAN SYLLABICS BLACKFOOT KO', + 5567 : 'CANADIAN SYLLABICS BLACKFOOT KA', + 5568 : 'CANADIAN SYLLABICS SAYISI HE', + 5569 : 'CANADIAN SYLLABICS SAYISI HI', + 5570 : 'CANADIAN SYLLABICS SAYISI HO', + 5571 : 'CANADIAN SYLLABICS SAYISI HA', + 5572 : 'CANADIAN SYLLABICS CARRIER GHU', + 5573 : 'CANADIAN SYLLABICS CARRIER GHO', + 5574 : 'CANADIAN SYLLABICS CARRIER GHE', + 5575 : 'CANADIAN SYLLABICS CARRIER GHEE', + 5576 : 'CANADIAN SYLLABICS CARRIER GHI', + 5577 : 'CANADIAN SYLLABICS CARRIER GHA', + 5578 : 'CANADIAN SYLLABICS CARRIER RU', + 5579 : 'CANADIAN SYLLABICS CARRIER RO', + 5580 : 'CANADIAN SYLLABICS CARRIER RE', + 5581 : 'CANADIAN SYLLABICS CARRIER REE', + 5582 : 'CANADIAN SYLLABICS CARRIER RI', + 5583 : 'CANADIAN SYLLABICS CARRIER RA', + 5584 : 'CANADIAN SYLLABICS CARRIER WU', + 5585 : 'CANADIAN SYLLABICS CARRIER WO', + 5586 : 'CANADIAN SYLLABICS CARRIER WE', + 5587 : 'CANADIAN SYLLABICS CARRIER WEE', + 5588 : 'CANADIAN SYLLABICS CARRIER WI', + 5589 : 'CANADIAN SYLLABICS CARRIER WA', + 5590 : 'CANADIAN SYLLABICS CARRIER HWU', + 5591 : 'CANADIAN SYLLABICS CARRIER HWO', + 5592 : 'CANADIAN SYLLABICS CARRIER HWE', + 5593 : 'CANADIAN SYLLABICS CARRIER HWEE', + 5594 : 'CANADIAN SYLLABICS CARRIER HWI', + 5595 : 'CANADIAN SYLLABICS CARRIER HWA', + 5596 : 'CANADIAN SYLLABICS CARRIER THU', + 5597 : 'CANADIAN SYLLABICS CARRIER THO', + 5598 : 'CANADIAN SYLLABICS CARRIER THE', + 5599 : 'CANADIAN SYLLABICS CARRIER THEE', + 5600 : 'CANADIAN SYLLABICS CARRIER THI', + 5601 : 'CANADIAN SYLLABICS CARRIER THA', + 5602 : 'CANADIAN SYLLABICS CARRIER TTU', + 5603 : 'CANADIAN SYLLABICS CARRIER TTO', + 5604 : 'CANADIAN SYLLABICS CARRIER TTE', + 5605 : 'CANADIAN SYLLABICS CARRIER TTEE', + 5606 : 'CANADIAN SYLLABICS CARRIER TTI', + 5607 : 'CANADIAN SYLLABICS CARRIER TTA', + 5608 : 'CANADIAN SYLLABICS CARRIER PU', + 5609 : 'CANADIAN SYLLABICS CARRIER PO', + 5610 : 'CANADIAN SYLLABICS CARRIER PE', + 5611 : 'CANADIAN SYLLABICS CARRIER PEE', + 5612 : 'CANADIAN SYLLABICS CARRIER PI', + 5613 : 'CANADIAN SYLLABICS CARRIER PA', + 5614 : 'CANADIAN SYLLABICS CARRIER P', + 5615 : 'CANADIAN SYLLABICS CARRIER GU', + 5616 : 'CANADIAN SYLLABICS CARRIER GO', + 5617 : 'CANADIAN SYLLABICS CARRIER GE', + 5618 : 'CANADIAN SYLLABICS CARRIER GEE', + 5619 : 'CANADIAN SYLLABICS CARRIER GI', + 5620 : 'CANADIAN SYLLABICS CARRIER GA', + 5621 : 'CANADIAN SYLLABICS CARRIER KHU', + 5622 : 'CANADIAN SYLLABICS CARRIER KHO', + 5623 : 'CANADIAN SYLLABICS CARRIER KHE', + 5624 : 'CANADIAN SYLLABICS CARRIER KHEE', + 5625 : 'CANADIAN SYLLABICS CARRIER KHI', + 5626 : 'CANADIAN SYLLABICS CARRIER KHA', + 5627 : 'CANADIAN SYLLABICS CARRIER KKU', + 5628 : 'CANADIAN SYLLABICS CARRIER KKO', + 5629 : 'CANADIAN SYLLABICS CARRIER KKE', + 5630 : 'CANADIAN SYLLABICS CARRIER KKEE', + 5631 : 'CANADIAN SYLLABICS CARRIER KKI', + 5632 : 'CANADIAN SYLLABICS CARRIER KKA', + 5633 : 'CANADIAN SYLLABICS CARRIER KK', + 5634 : 'CANADIAN SYLLABICS CARRIER NU', + 5635 : 'CANADIAN SYLLABICS CARRIER NO', + 5636 : 'CANADIAN SYLLABICS CARRIER NE', + 5637 : 'CANADIAN SYLLABICS CARRIER NEE', + 5638 : 'CANADIAN SYLLABICS CARRIER NI', + 5639 : 'CANADIAN SYLLABICS CARRIER NA', + 5640 : 'CANADIAN SYLLABICS CARRIER MU', + 5641 : 'CANADIAN SYLLABICS CARRIER MO', + 5642 : 'CANADIAN SYLLABICS CARRIER ME', + 5643 : 'CANADIAN SYLLABICS CARRIER MEE', + 5644 : 'CANADIAN SYLLABICS CARRIER MI', + 5645 : 'CANADIAN SYLLABICS CARRIER MA', + 5646 : 'CANADIAN SYLLABICS CARRIER YU', + 5647 : 'CANADIAN SYLLABICS CARRIER YO', + 5648 : 'CANADIAN SYLLABICS CARRIER YE', + 5649 : 'CANADIAN SYLLABICS CARRIER YEE', + 5650 : 'CANADIAN SYLLABICS CARRIER YI', + 5651 : 'CANADIAN SYLLABICS CARRIER YA', + 5652 : 'CANADIAN SYLLABICS CARRIER JU', + 5653 : 'CANADIAN SYLLABICS SAYISI JU', + 5654 : 'CANADIAN SYLLABICS CARRIER JO', + 5655 : 'CANADIAN SYLLABICS CARRIER JE', + 5656 : 'CANADIAN SYLLABICS CARRIER JEE', + 5657 : 'CANADIAN SYLLABICS CARRIER JI', + 5658 : 'CANADIAN SYLLABICS SAYISI JI', + 5659 : 'CANADIAN SYLLABICS CARRIER JA', + 5660 : 'CANADIAN SYLLABICS CARRIER JJU', + 5661 : 'CANADIAN SYLLABICS CARRIER JJO', + 5662 : 'CANADIAN SYLLABICS CARRIER JJE', + 5663 : 'CANADIAN SYLLABICS CARRIER JJEE', + 5664 : 'CANADIAN SYLLABICS CARRIER JJI', + 5665 : 'CANADIAN SYLLABICS CARRIER JJA', + 5666 : 'CANADIAN SYLLABICS CARRIER LU', + 5667 : 'CANADIAN SYLLABICS CARRIER LO', + 5668 : 'CANADIAN SYLLABICS CARRIER LE', + 5669 : 'CANADIAN SYLLABICS CARRIER LEE', + 5670 : 'CANADIAN SYLLABICS CARRIER LI', + 5671 : 'CANADIAN SYLLABICS CARRIER LA', + 5672 : 'CANADIAN SYLLABICS CARRIER DLU', + 5673 : 'CANADIAN SYLLABICS CARRIER DLO', + 5674 : 'CANADIAN SYLLABICS CARRIER DLE', + 5675 : 'CANADIAN SYLLABICS CARRIER DLEE', + 5676 : 'CANADIAN SYLLABICS CARRIER DLI', + 5677 : 'CANADIAN SYLLABICS CARRIER DLA', + 5678 : 'CANADIAN SYLLABICS CARRIER LHU', + 5679 : 'CANADIAN SYLLABICS CARRIER LHO', + 5680 : 'CANADIAN SYLLABICS CARRIER LHE', + 5681 : 'CANADIAN SYLLABICS CARRIER LHEE', + 5682 : 'CANADIAN SYLLABICS CARRIER LHI', + 5683 : 'CANADIAN SYLLABICS CARRIER LHA', + 5684 : 'CANADIAN SYLLABICS CARRIER TLHU', + 5685 : 'CANADIAN SYLLABICS CARRIER TLHO', + 5686 : 'CANADIAN SYLLABICS CARRIER TLHE', + 5687 : 'CANADIAN SYLLABICS CARRIER TLHEE', + 5688 : 'CANADIAN SYLLABICS CARRIER TLHI', + 5689 : 'CANADIAN SYLLABICS CARRIER TLHA', + 5690 : 'CANADIAN SYLLABICS CARRIER TLU', + 5691 : 'CANADIAN SYLLABICS CARRIER TLO', + 5692 : 'CANADIAN SYLLABICS CARRIER TLE', + 5693 : 'CANADIAN SYLLABICS CARRIER TLEE', + 5694 : 'CANADIAN SYLLABICS CARRIER TLI', + 5695 : 'CANADIAN SYLLABICS CARRIER TLA', + 5696 : 'CANADIAN SYLLABICS CARRIER ZU', + 5697 : 'CANADIAN SYLLABICS CARRIER ZO', + 5698 : 'CANADIAN SYLLABICS CARRIER ZE', + 5699 : 'CANADIAN SYLLABICS CARRIER ZEE', + 5700 : 'CANADIAN SYLLABICS CARRIER ZI', + 5701 : 'CANADIAN SYLLABICS CARRIER ZA', + 5702 : 'CANADIAN SYLLABICS CARRIER Z', + 5703 : 'CANADIAN SYLLABICS CARRIER INITIAL Z', + 5704 : 'CANADIAN SYLLABICS CARRIER DZU', + 5705 : 'CANADIAN SYLLABICS CARRIER DZO', + 5706 : 'CANADIAN SYLLABICS CARRIER DZE', + 5707 : 'CANADIAN SYLLABICS CARRIER DZEE', + 5708 : 'CANADIAN SYLLABICS CARRIER DZI', + 5709 : 'CANADIAN SYLLABICS CARRIER DZA', + 5710 : 'CANADIAN SYLLABICS CARRIER SU', + 5711 : 'CANADIAN SYLLABICS CARRIER SO', + 5712 : 'CANADIAN SYLLABICS CARRIER SE', + 5713 : 'CANADIAN SYLLABICS CARRIER SEE', + 5714 : 'CANADIAN SYLLABICS CARRIER SI', + 5715 : 'CANADIAN SYLLABICS CARRIER SA', + 5716 : 'CANADIAN SYLLABICS CARRIER SHU', + 5717 : 'CANADIAN SYLLABICS CARRIER SHO', + 5718 : 'CANADIAN SYLLABICS CARRIER SHE', + 5719 : 'CANADIAN SYLLABICS CARRIER SHEE', + 5720 : 'CANADIAN SYLLABICS CARRIER SHI', + 5721 : 'CANADIAN SYLLABICS CARRIER SHA', + 5722 : 'CANADIAN SYLLABICS CARRIER SH', + 5723 : 'CANADIAN SYLLABICS CARRIER TSU', + 5724 : 'CANADIAN SYLLABICS CARRIER TSO', + 5725 : 'CANADIAN SYLLABICS CARRIER TSE', + 5726 : 'CANADIAN SYLLABICS CARRIER TSEE', + 5727 : 'CANADIAN SYLLABICS CARRIER TSI', + 5728 : 'CANADIAN SYLLABICS CARRIER TSA', + 5729 : 'CANADIAN SYLLABICS CARRIER CHU', + 5730 : 'CANADIAN SYLLABICS CARRIER CHO', + 5731 : 'CANADIAN SYLLABICS CARRIER CHE', + 5732 : 'CANADIAN SYLLABICS CARRIER CHEE', + 5733 : 'CANADIAN SYLLABICS CARRIER CHI', + 5734 : 'CANADIAN SYLLABICS CARRIER CHA', + 5735 : 'CANADIAN SYLLABICS CARRIER TTSU', + 5736 : 'CANADIAN SYLLABICS CARRIER TTSO', + 5737 : 'CANADIAN SYLLABICS CARRIER TTSE', + 5738 : 'CANADIAN SYLLABICS CARRIER TTSEE', + 5739 : 'CANADIAN SYLLABICS CARRIER TTSI', + 5740 : 'CANADIAN SYLLABICS CARRIER TTSA', + 5741 : 'CANADIAN SYLLABICS CHI SIGN', + 5742 : 'CANADIAN SYLLABICS FULL STOP', + 5743 : 'CANADIAN SYLLABICS QAI', + 5744 : 'CANADIAN SYLLABICS NGAI', + 5745 : 'CANADIAN SYLLABICS NNGI', + 5746 : 'CANADIAN SYLLABICS NNGII', + 5747 : 'CANADIAN SYLLABICS NNGO', + 5748 : 'CANADIAN SYLLABICS NNGOO', + 5749 : 'CANADIAN SYLLABICS NNGA', + 5750 : 'CANADIAN SYLLABICS NNGAA', + 5760 : 'OGHAM SPACE MARK', + 5761 : 'OGHAM LETTER BEITH', + 5762 : 'OGHAM LETTER LUIS', + 5763 : 'OGHAM LETTER FEARN', + 5764 : 'OGHAM LETTER SAIL', + 5765 : 'OGHAM LETTER NION', + 5766 : 'OGHAM LETTER UATH', + 5767 : 'OGHAM LETTER DAIR', + 5768 : 'OGHAM LETTER TINNE', + 5769 : 'OGHAM LETTER COLL', + 5770 : 'OGHAM LETTER CEIRT', + 5771 : 'OGHAM LETTER MUIN', + 5772 : 'OGHAM LETTER GORT', + 5773 : 'OGHAM LETTER NGEADAL', + 5774 : 'OGHAM LETTER STRAIF', + 5775 : 'OGHAM LETTER RUIS', + 5776 : 'OGHAM LETTER AILM', + 5777 : 'OGHAM LETTER ONN', + 5778 : 'OGHAM LETTER UR', + 5779 : 'OGHAM LETTER EADHADH', + 5780 : 'OGHAM LETTER IODHADH', + 5781 : 'OGHAM LETTER EABHADH', + 5782 : 'OGHAM LETTER OR', + 5783 : 'OGHAM LETTER UILLEANN', + 5784 : 'OGHAM LETTER IFIN', + 5785 : 'OGHAM LETTER EAMHANCHOLL', + 5786 : 'OGHAM LETTER PEITH', + 5787 : 'OGHAM FEATHER MARK', + 5788 : 'OGHAM REVERSED FEATHER MARK', + 5792 : 'RUNIC LETTER FEHU FEOH FE F', + 5793 : 'RUNIC LETTER V', + 5794 : 'RUNIC LETTER URUZ UR U', + 5795 : 'RUNIC LETTER YR', + 5796 : 'RUNIC LETTER Y', + 5797 : 'RUNIC LETTER W', + 5798 : 'RUNIC LETTER THURISAZ THURS THORN', + 5799 : 'RUNIC LETTER ETH', + 5800 : 'RUNIC LETTER ANSUZ A', + 5801 : 'RUNIC LETTER OS O', + 5802 : 'RUNIC LETTER AC A', + 5803 : 'RUNIC LETTER AESC', + 5804 : 'RUNIC LETTER LONG-BRANCH-OSS O', + 5805 : 'RUNIC LETTER SHORT-TWIG-OSS O', + 5806 : 'RUNIC LETTER O', + 5807 : 'RUNIC LETTER OE', + 5808 : 'RUNIC LETTER ON', + 5809 : 'RUNIC LETTER RAIDO RAD REID R', + 5810 : 'RUNIC LETTER KAUNA', + 5811 : 'RUNIC LETTER CEN', + 5812 : 'RUNIC LETTER KAUN K', + 5813 : 'RUNIC LETTER G', + 5814 : 'RUNIC LETTER ENG', + 5815 : 'RUNIC LETTER GEBO GYFU G', + 5816 : 'RUNIC LETTER GAR', + 5817 : 'RUNIC LETTER WUNJO WYNN W', + 5818 : 'RUNIC LETTER HAGLAZ H', + 5819 : 'RUNIC LETTER HAEGL H', + 5820 : 'RUNIC LETTER LONG-BRANCH-HAGALL H', + 5821 : 'RUNIC LETTER SHORT-TWIG-HAGALL H', + 5822 : 'RUNIC LETTER NAUDIZ NYD NAUD N', + 5823 : 'RUNIC LETTER SHORT-TWIG-NAUD N', + 5824 : 'RUNIC LETTER DOTTED-N', + 5825 : 'RUNIC LETTER ISAZ IS ISS I', + 5826 : 'RUNIC LETTER E', + 5827 : 'RUNIC LETTER JERAN J', + 5828 : 'RUNIC LETTER GER', + 5829 : 'RUNIC LETTER LONG-BRANCH-AR AE', + 5830 : 'RUNIC LETTER SHORT-TWIG-AR A', + 5831 : 'RUNIC LETTER IWAZ EOH', + 5832 : 'RUNIC LETTER PERTHO PEORTH P', + 5833 : 'RUNIC LETTER ALGIZ EOLHX', + 5834 : 'RUNIC LETTER SOWILO S', + 5835 : 'RUNIC LETTER SIGEL LONG-BRANCH-SOL S', + 5836 : 'RUNIC LETTER SHORT-TWIG-SOL S', + 5837 : 'RUNIC LETTER C', + 5838 : 'RUNIC LETTER Z', + 5839 : 'RUNIC LETTER TIWAZ TIR TYR T', + 5840 : 'RUNIC LETTER SHORT-TWIG-TYR T', + 5841 : 'RUNIC LETTER D', + 5842 : 'RUNIC LETTER BERKANAN BEORC BJARKAN B', + 5843 : 'RUNIC LETTER SHORT-TWIG-BJARKAN B', + 5844 : 'RUNIC LETTER DOTTED-P', + 5845 : 'RUNIC LETTER OPEN-P', + 5846 : 'RUNIC LETTER EHWAZ EH E', + 5847 : 'RUNIC LETTER MANNAZ MAN M', + 5848 : 'RUNIC LETTER LONG-BRANCH-MADR M', + 5849 : 'RUNIC LETTER SHORT-TWIG-MADR M', + 5850 : 'RUNIC LETTER LAUKAZ LAGU LOGR L', + 5851 : 'RUNIC LETTER DOTTED-L', + 5852 : 'RUNIC LETTER INGWAZ', + 5853 : 'RUNIC LETTER ING', + 5854 : 'RUNIC LETTER DAGAZ DAEG D', + 5855 : 'RUNIC LETTER OTHALAN ETHEL O', + 5856 : 'RUNIC LETTER EAR', + 5857 : 'RUNIC LETTER IOR', + 5858 : 'RUNIC LETTER CWEORTH', + 5859 : 'RUNIC LETTER CALC', + 5860 : 'RUNIC LETTER CEALC', + 5861 : 'RUNIC LETTER STAN', + 5862 : 'RUNIC LETTER LONG-BRANCH-YR', + 5863 : 'RUNIC LETTER SHORT-TWIG-YR', + 5864 : 'RUNIC LETTER ICELANDIC-YR', + 5865 : 'RUNIC LETTER Q', + 5866 : 'RUNIC LETTER X', + 5867 : 'RUNIC SINGLE PUNCTUATION', + 5868 : 'RUNIC MULTIPLE PUNCTUATION', + 5869 : 'RUNIC CROSS PUNCTUATION', + 5870 : 'RUNIC ARLAUG SYMBOL', + 5871 : 'RUNIC TVIMADUR SYMBOL', + 5872 : 'RUNIC BELGTHOR SYMBOL', + 5888 : 'TAGALOG LETTER A', + 5889 : 'TAGALOG LETTER I', + 5890 : 'TAGALOG LETTER U', + 5891 : 'TAGALOG LETTER KA', + 5892 : 'TAGALOG LETTER GA', + 5893 : 'TAGALOG LETTER NGA', + 5894 : 'TAGALOG LETTER TA', + 5895 : 'TAGALOG LETTER DA', + 5896 : 'TAGALOG LETTER NA', + 5897 : 'TAGALOG LETTER PA', + 5898 : 'TAGALOG LETTER BA', + 5899 : 'TAGALOG LETTER MA', + 5900 : 'TAGALOG LETTER YA', + 5902 : 'TAGALOG LETTER LA', + 5903 : 'TAGALOG LETTER WA', + 5904 : 'TAGALOG LETTER SA', + 5905 : 'TAGALOG LETTER HA', + 5906 : 'TAGALOG VOWEL SIGN I', + 5907 : 'TAGALOG VOWEL SIGN U', + 5908 : 'TAGALOG SIGN VIRAMA', + 5920 : 'HANUNOO LETTER A', + 5921 : 'HANUNOO LETTER I', + 5922 : 'HANUNOO LETTER U', + 5923 : 'HANUNOO LETTER KA', + 5924 : 'HANUNOO LETTER GA', + 5925 : 'HANUNOO LETTER NGA', + 5926 : 'HANUNOO LETTER TA', + 5927 : 'HANUNOO LETTER DA', + 5928 : 'HANUNOO LETTER NA', + 5929 : 'HANUNOO LETTER PA', + 5930 : 'HANUNOO LETTER BA', + 5931 : 'HANUNOO LETTER MA', + 5932 : 'HANUNOO LETTER YA', + 5933 : 'HANUNOO LETTER RA', + 5934 : 'HANUNOO LETTER LA', + 5935 : 'HANUNOO LETTER WA', + 5936 : 'HANUNOO LETTER SA', + 5937 : 'HANUNOO LETTER HA', + 5938 : 'HANUNOO VOWEL SIGN I', + 5939 : 'HANUNOO VOWEL SIGN U', + 5940 : 'HANUNOO SIGN PAMUDPOD', + 5941 : 'PHILIPPINE SINGLE PUNCTUATION', + 5942 : 'PHILIPPINE DOUBLE PUNCTUATION', + 5952 : 'BUHID LETTER A', + 5953 : 'BUHID LETTER I', + 5954 : 'BUHID LETTER U', + 5955 : 'BUHID LETTER KA', + 5956 : 'BUHID LETTER GA', + 5957 : 'BUHID LETTER NGA', + 5958 : 'BUHID LETTER TA', + 5959 : 'BUHID LETTER DA', + 5960 : 'BUHID LETTER NA', + 5961 : 'BUHID LETTER PA', + 5962 : 'BUHID LETTER BA', + 5963 : 'BUHID LETTER MA', + 5964 : 'BUHID LETTER YA', + 5965 : 'BUHID LETTER RA', + 5966 : 'BUHID LETTER LA', + 5967 : 'BUHID LETTER WA', + 5968 : 'BUHID LETTER SA', + 5969 : 'BUHID LETTER HA', + 5970 : 'BUHID VOWEL SIGN I', + 5971 : 'BUHID VOWEL SIGN U', + 5984 : 'TAGBANWA LETTER A', + 5985 : 'TAGBANWA LETTER I', + 5986 : 'TAGBANWA LETTER U', + 5987 : 'TAGBANWA LETTER KA', + 5988 : 'TAGBANWA LETTER GA', + 5989 : 'TAGBANWA LETTER NGA', + 5990 : 'TAGBANWA LETTER TA', + 5991 : 'TAGBANWA LETTER DA', + 5992 : 'TAGBANWA LETTER NA', + 5993 : 'TAGBANWA LETTER PA', + 5994 : 'TAGBANWA LETTER BA', + 5995 : 'TAGBANWA LETTER MA', + 5996 : 'TAGBANWA LETTER YA', + 5998 : 'TAGBANWA LETTER LA', + 5999 : 'TAGBANWA LETTER WA', + 6000 : 'TAGBANWA LETTER SA', + 6002 : 'TAGBANWA VOWEL SIGN I', + 6003 : 'TAGBANWA VOWEL SIGN U', + 6016 : 'KHMER LETTER KA', + 6017 : 'KHMER LETTER KHA', + 6018 : 'KHMER LETTER KO', + 6019 : 'KHMER LETTER KHO', + 6020 : 'KHMER LETTER NGO', + 6021 : 'KHMER LETTER CA', + 6022 : 'KHMER LETTER CHA', + 6023 : 'KHMER LETTER CO', + 6024 : 'KHMER LETTER CHO', + 6025 : 'KHMER LETTER NYO', + 6026 : 'KHMER LETTER DA', + 6027 : 'KHMER LETTER TTHA', + 6028 : 'KHMER LETTER DO', + 6029 : 'KHMER LETTER TTHO', + 6030 : 'KHMER LETTER NNO', + 6031 : 'KHMER LETTER TA', + 6032 : 'KHMER LETTER THA', + 6033 : 'KHMER LETTER TO', + 6034 : 'KHMER LETTER THO', + 6035 : 'KHMER LETTER NO', + 6036 : 'KHMER LETTER BA', + 6037 : 'KHMER LETTER PHA', + 6038 : 'KHMER LETTER PO', + 6039 : 'KHMER LETTER PHO', + 6040 : 'KHMER LETTER MO', + 6041 : 'KHMER LETTER YO', + 6042 : 'KHMER LETTER RO', + 6043 : 'KHMER LETTER LO', + 6044 : 'KHMER LETTER VO', + 6045 : 'KHMER LETTER SHA', + 6046 : 'KHMER LETTER SSO', + 6047 : 'KHMER LETTER SA', + 6048 : 'KHMER LETTER HA', + 6049 : 'KHMER LETTER LA', + 6050 : 'KHMER LETTER QA', + 6051 : 'KHMER INDEPENDENT VOWEL QAQ', + 6052 : 'KHMER INDEPENDENT VOWEL QAA', + 6053 : 'KHMER INDEPENDENT VOWEL QI', + 6054 : 'KHMER INDEPENDENT VOWEL QII', + 6055 : 'KHMER INDEPENDENT VOWEL QU', + 6056 : 'KHMER INDEPENDENT VOWEL QUK', + 6057 : 'KHMER INDEPENDENT VOWEL QUU', + 6058 : 'KHMER INDEPENDENT VOWEL QUUV', + 6059 : 'KHMER INDEPENDENT VOWEL RY', + 6060 : 'KHMER INDEPENDENT VOWEL RYY', + 6061 : 'KHMER INDEPENDENT VOWEL LY', + 6062 : 'KHMER INDEPENDENT VOWEL LYY', + 6063 : 'KHMER INDEPENDENT VOWEL QE', + 6064 : 'KHMER INDEPENDENT VOWEL QAI', + 6065 : 'KHMER INDEPENDENT VOWEL QOO TYPE ONE', + 6066 : 'KHMER INDEPENDENT VOWEL QOO TYPE TWO', + 6067 : 'KHMER INDEPENDENT VOWEL QAU', + 6068 : 'KHMER VOWEL INHERENT AQ', + 6069 : 'KHMER VOWEL INHERENT AA', + 6070 : 'KHMER VOWEL SIGN AA', + 6071 : 'KHMER VOWEL SIGN I', + 6072 : 'KHMER VOWEL SIGN II', + 6073 : 'KHMER VOWEL SIGN Y', + 6074 : 'KHMER VOWEL SIGN YY', + 6075 : 'KHMER VOWEL SIGN U', + 6076 : 'KHMER VOWEL SIGN UU', + 6077 : 'KHMER VOWEL SIGN UA', + 6078 : 'KHMER VOWEL SIGN OE', + 6079 : 'KHMER VOWEL SIGN YA', + 6080 : 'KHMER VOWEL SIGN IE', + 6081 : 'KHMER VOWEL SIGN E', + 6082 : 'KHMER VOWEL SIGN AE', + 6083 : 'KHMER VOWEL SIGN AI', + 6084 : 'KHMER VOWEL SIGN OO', + 6085 : 'KHMER VOWEL SIGN AU', + 6086 : 'KHMER SIGN NIKAHIT', + 6087 : 'KHMER SIGN REAHMUK', + 6088 : 'KHMER SIGN YUUKALEAPINTU', + 6089 : 'KHMER SIGN MUUSIKATOAN', + 6090 : 'KHMER SIGN TRIISAP', + 6091 : 'KHMER SIGN BANTOC', + 6092 : 'KHMER SIGN ROBAT', + 6093 : 'KHMER SIGN TOANDAKHIAT', + 6094 : 'KHMER SIGN KAKABAT', + 6095 : 'KHMER SIGN AHSDA', + 6096 : 'KHMER SIGN SAMYOK SANNYA', + 6097 : 'KHMER SIGN VIRIAM', + 6098 : 'KHMER SIGN COENG', + 6099 : 'KHMER SIGN BATHAMASAT', + 6100 : 'KHMER SIGN KHAN', + 6101 : 'KHMER SIGN BARIYOOSAN', + 6102 : 'KHMER SIGN CAMNUC PII KUUH', + 6103 : 'KHMER SIGN LEK TOO', + 6104 : 'KHMER SIGN BEYYAL', + 6105 : 'KHMER SIGN PHNAEK MUAN', + 6106 : 'KHMER SIGN KOOMUUT', + 6107 : 'KHMER CURRENCY SYMBOL RIEL', + 6108 : 'KHMER SIGN AVAKRAHASANYA', + 6112 : 'KHMER DIGIT ZERO', + 6113 : 'KHMER DIGIT ONE', + 6114 : 'KHMER DIGIT TWO', + 6115 : 'KHMER DIGIT THREE', + 6116 : 'KHMER DIGIT FOUR', + 6117 : 'KHMER DIGIT FIVE', + 6118 : 'KHMER DIGIT SIX', + 6119 : 'KHMER DIGIT SEVEN', + 6120 : 'KHMER DIGIT EIGHT', + 6121 : 'KHMER DIGIT NINE', + 6144 : 'MONGOLIAN BIRGA', + 6145 : 'MONGOLIAN ELLIPSIS', + 6146 : 'MONGOLIAN COMMA', + 6147 : 'MONGOLIAN FULL STOP', + 6148 : 'MONGOLIAN COLON', + 6149 : 'MONGOLIAN FOUR DOTS', + 6150 : 'MONGOLIAN TODO SOFT HYPHEN', + 6151 : 'MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER', + 6152 : 'MONGOLIAN MANCHU COMMA', + 6153 : 'MONGOLIAN MANCHU FULL STOP', + 6154 : 'MONGOLIAN NIRUGU', + 6155 : 'MONGOLIAN FREE VARIATION SELECTOR ONE', + 6156 : 'MONGOLIAN FREE VARIATION SELECTOR TWO', + 6157 : 'MONGOLIAN FREE VARIATION SELECTOR THREE', + 6158 : 'MONGOLIAN VOWEL SEPARATOR', + 6160 : 'MONGOLIAN DIGIT ZERO', + 6161 : 'MONGOLIAN DIGIT ONE', + 6162 : 'MONGOLIAN DIGIT TWO', + 6163 : 'MONGOLIAN DIGIT THREE', + 6164 : 'MONGOLIAN DIGIT FOUR', + 6165 : 'MONGOLIAN DIGIT FIVE', + 6166 : 'MONGOLIAN DIGIT SIX', + 6167 : 'MONGOLIAN DIGIT SEVEN', + 6168 : 'MONGOLIAN DIGIT EIGHT', + 6169 : 'MONGOLIAN DIGIT NINE', + 6176 : 'MONGOLIAN LETTER A', + 6177 : 'MONGOLIAN LETTER E', + 6178 : 'MONGOLIAN LETTER I', + 6179 : 'MONGOLIAN LETTER O', + 6180 : 'MONGOLIAN LETTER U', + 6181 : 'MONGOLIAN LETTER OE', + 6182 : 'MONGOLIAN LETTER UE', + 6183 : 'MONGOLIAN LETTER EE', + 6184 : 'MONGOLIAN LETTER NA', + 6185 : 'MONGOLIAN LETTER ANG', + 6186 : 'MONGOLIAN LETTER BA', + 6187 : 'MONGOLIAN LETTER PA', + 6188 : 'MONGOLIAN LETTER QA', + 6189 : 'MONGOLIAN LETTER GA', + 6190 : 'MONGOLIAN LETTER MA', + 6191 : 'MONGOLIAN LETTER LA', + 6192 : 'MONGOLIAN LETTER SA', + 6193 : 'MONGOLIAN LETTER SHA', + 6194 : 'MONGOLIAN LETTER TA', + 6195 : 'MONGOLIAN LETTER DA', + 6196 : 'MONGOLIAN LETTER CHA', + 6197 : 'MONGOLIAN LETTER JA', + 6198 : 'MONGOLIAN LETTER YA', + 6199 : 'MONGOLIAN LETTER RA', + 6200 : 'MONGOLIAN LETTER WA', + 6201 : 'MONGOLIAN LETTER FA', + 6202 : 'MONGOLIAN LETTER KA', + 6203 : 'MONGOLIAN LETTER KHA', + 6204 : 'MONGOLIAN LETTER TSA', + 6205 : 'MONGOLIAN LETTER ZA', + 6206 : 'MONGOLIAN LETTER HAA', + 6207 : 'MONGOLIAN LETTER ZRA', + 6208 : 'MONGOLIAN LETTER LHA', + 6209 : 'MONGOLIAN LETTER ZHI', + 6210 : 'MONGOLIAN LETTER CHI', + 6211 : 'MONGOLIAN LETTER TODO LONG VOWEL SIGN', + 6212 : 'MONGOLIAN LETTER TODO E', + 6213 : 'MONGOLIAN LETTER TODO I', + 6214 : 'MONGOLIAN LETTER TODO O', + 6215 : 'MONGOLIAN LETTER TODO U', + 6216 : 'MONGOLIAN LETTER TODO OE', + 6217 : 'MONGOLIAN LETTER TODO UE', + 6218 : 'MONGOLIAN LETTER TODO ANG', + 6219 : 'MONGOLIAN LETTER TODO BA', + 6220 : 'MONGOLIAN LETTER TODO PA', + 6221 : 'MONGOLIAN LETTER TODO QA', + 6222 : 'MONGOLIAN LETTER TODO GA', + 6223 : 'MONGOLIAN LETTER TODO MA', + 6224 : 'MONGOLIAN LETTER TODO TA', + 6225 : 'MONGOLIAN LETTER TODO DA', + 6226 : 'MONGOLIAN LETTER TODO CHA', + 6227 : 'MONGOLIAN LETTER TODO JA', + 6228 : 'MONGOLIAN LETTER TODO TSA', + 6229 : 'MONGOLIAN LETTER TODO YA', + 6230 : 'MONGOLIAN LETTER TODO WA', + 6231 : 'MONGOLIAN LETTER TODO KA', + 6232 : 'MONGOLIAN LETTER TODO GAA', + 6233 : 'MONGOLIAN LETTER TODO HAA', + 6234 : 'MONGOLIAN LETTER TODO JIA', + 6235 : 'MONGOLIAN LETTER TODO NIA', + 6236 : 'MONGOLIAN LETTER TODO DZA', + 6237 : 'MONGOLIAN LETTER SIBE E', + 6238 : 'MONGOLIAN LETTER SIBE I', + 6239 : 'MONGOLIAN LETTER SIBE IY', + 6240 : 'MONGOLIAN LETTER SIBE UE', + 6241 : 'MONGOLIAN LETTER SIBE U', + 6242 : 'MONGOLIAN LETTER SIBE ANG', + 6243 : 'MONGOLIAN LETTER SIBE KA', + 6244 : 'MONGOLIAN LETTER SIBE GA', + 6245 : 'MONGOLIAN LETTER SIBE HA', + 6246 : 'MONGOLIAN LETTER SIBE PA', + 6247 : 'MONGOLIAN LETTER SIBE SHA', + 6248 : 'MONGOLIAN LETTER SIBE TA', + 6249 : 'MONGOLIAN LETTER SIBE DA', + 6250 : 'MONGOLIAN LETTER SIBE JA', + 6251 : 'MONGOLIAN LETTER SIBE FA', + 6252 : 'MONGOLIAN LETTER SIBE GAA', + 6253 : 'MONGOLIAN LETTER SIBE HAA', + 6254 : 'MONGOLIAN LETTER SIBE TSA', + 6255 : 'MONGOLIAN LETTER SIBE ZA', + 6256 : 'MONGOLIAN LETTER SIBE RAA', + 6257 : 'MONGOLIAN LETTER SIBE CHA', + 6258 : 'MONGOLIAN LETTER SIBE ZHA', + 6259 : 'MONGOLIAN LETTER MANCHU I', + 6260 : 'MONGOLIAN LETTER MANCHU KA', + 6261 : 'MONGOLIAN LETTER MANCHU RA', + 6262 : 'MONGOLIAN LETTER MANCHU FA', + 6263 : 'MONGOLIAN LETTER MANCHU ZHA', + 6272 : 'MONGOLIAN LETTER ALI GALI ANUSVARA ONE', + 6273 : 'MONGOLIAN LETTER ALI GALI VISARGA ONE', + 6274 : 'MONGOLIAN LETTER ALI GALI DAMARU', + 6275 : 'MONGOLIAN LETTER ALI GALI UBADAMA', + 6276 : 'MONGOLIAN LETTER ALI GALI INVERTED UBADAMA', + 6277 : 'MONGOLIAN LETTER ALI GALI BALUDA', + 6278 : 'MONGOLIAN LETTER ALI GALI THREE BALUDA', + 6279 : 'MONGOLIAN LETTER ALI GALI A', + 6280 : 'MONGOLIAN LETTER ALI GALI I', + 6281 : 'MONGOLIAN LETTER ALI GALI KA', + 6282 : 'MONGOLIAN LETTER ALI GALI NGA', + 6283 : 'MONGOLIAN LETTER ALI GALI CA', + 6284 : 'MONGOLIAN LETTER ALI GALI TTA', + 6285 : 'MONGOLIAN LETTER ALI GALI TTHA', + 6286 : 'MONGOLIAN LETTER ALI GALI DDA', + 6287 : 'MONGOLIAN LETTER ALI GALI NNA', + 6288 : 'MONGOLIAN LETTER ALI GALI TA', + 6289 : 'MONGOLIAN LETTER ALI GALI DA', + 6290 : 'MONGOLIAN LETTER ALI GALI PA', + 6291 : 'MONGOLIAN LETTER ALI GALI PHA', + 6292 : 'MONGOLIAN LETTER ALI GALI SSA', + 6293 : 'MONGOLIAN LETTER ALI GALI ZHA', + 6294 : 'MONGOLIAN LETTER ALI GALI ZA', + 6295 : 'MONGOLIAN LETTER ALI GALI AH', + 6296 : 'MONGOLIAN LETTER TODO ALI GALI TA', + 6297 : 'MONGOLIAN LETTER TODO ALI GALI ZHA', + 6298 : 'MONGOLIAN LETTER MANCHU ALI GALI GHA', + 6299 : 'MONGOLIAN LETTER MANCHU ALI GALI NGA', + 6300 : 'MONGOLIAN LETTER MANCHU ALI GALI CA', + 6301 : 'MONGOLIAN LETTER MANCHU ALI GALI JHA', + 6302 : 'MONGOLIAN LETTER MANCHU ALI GALI TTA', + 6303 : 'MONGOLIAN LETTER MANCHU ALI GALI DDHA', + 6304 : 'MONGOLIAN LETTER MANCHU ALI GALI TA', + 6305 : 'MONGOLIAN LETTER MANCHU ALI GALI DHA', + 6306 : 'MONGOLIAN LETTER MANCHU ALI GALI SSA', + 6307 : 'MONGOLIAN LETTER MANCHU ALI GALI CYA', + 6308 : 'MONGOLIAN LETTER MANCHU ALI GALI ZHA', + 6309 : 'MONGOLIAN LETTER MANCHU ALI GALI ZA', + 6310 : 'MONGOLIAN LETTER ALI GALI HALF U', + 6311 : 'MONGOLIAN LETTER ALI GALI HALF YA', + 6312 : 'MONGOLIAN LETTER MANCHU ALI GALI BHA', + 6313 : 'MONGOLIAN LETTER ALI GALI DAGALGA', + 7680 : 'LATIN CAPITAL LETTER A WITH RING BELOW', + 7681 : 'LATIN SMALL LETTER A WITH RING BELOW', + 7682 : 'LATIN CAPITAL LETTER B WITH DOT ABOVE', + 7683 : 'LATIN SMALL LETTER B WITH DOT ABOVE', + 7684 : 'LATIN CAPITAL LETTER B WITH DOT BELOW', + 7685 : 'LATIN SMALL LETTER B WITH DOT BELOW', + 7686 : 'LATIN CAPITAL LETTER B WITH LINE BELOW', + 7687 : 'LATIN SMALL LETTER B WITH LINE BELOW', + 7688 : 'LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE', + 7689 : 'LATIN SMALL LETTER C WITH CEDILLA AND ACUTE', + 7690 : 'LATIN CAPITAL LETTER D WITH DOT ABOVE', + 7691 : 'LATIN SMALL LETTER D WITH DOT ABOVE', + 7692 : 'LATIN CAPITAL LETTER D WITH DOT BELOW', + 7693 : 'LATIN SMALL LETTER D WITH DOT BELOW', + 7694 : 'LATIN CAPITAL LETTER D WITH LINE BELOW', + 7695 : 'LATIN SMALL LETTER D WITH LINE BELOW', + 7696 : 'LATIN CAPITAL LETTER D WITH CEDILLA', + 7697 : 'LATIN SMALL LETTER D WITH CEDILLA', + 7698 : 'LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW', + 7699 : 'LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW', + 7700 : 'LATIN CAPITAL LETTER E WITH MACRON AND GRAVE', + 7701 : 'LATIN SMALL LETTER E WITH MACRON AND GRAVE', + 7702 : 'LATIN CAPITAL LETTER E WITH MACRON AND ACUTE', + 7703 : 'LATIN SMALL LETTER E WITH MACRON AND ACUTE', + 7704 : 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW', + 7705 : 'LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW', + 7706 : 'LATIN CAPITAL LETTER E WITH TILDE BELOW', + 7707 : 'LATIN SMALL LETTER E WITH TILDE BELOW', + 7708 : 'LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE', + 7709 : 'LATIN SMALL LETTER E WITH CEDILLA AND BREVE', + 7710 : 'LATIN CAPITAL LETTER F WITH DOT ABOVE', + 7711 : 'LATIN SMALL LETTER F WITH DOT ABOVE', + 7712 : 'LATIN CAPITAL LETTER G WITH MACRON', + 7713 : 'LATIN SMALL LETTER G WITH MACRON', + 7714 : 'LATIN CAPITAL LETTER H WITH DOT ABOVE', + 7715 : 'LATIN SMALL LETTER H WITH DOT ABOVE', + 7716 : 'LATIN CAPITAL LETTER H WITH DOT BELOW', + 7717 : 'LATIN SMALL LETTER H WITH DOT BELOW', + 7718 : 'LATIN CAPITAL LETTER H WITH DIAERESIS', + 7719 : 'LATIN SMALL LETTER H WITH DIAERESIS', + 7720 : 'LATIN CAPITAL LETTER H WITH CEDILLA', + 7721 : 'LATIN SMALL LETTER H WITH CEDILLA', + 7722 : 'LATIN CAPITAL LETTER H WITH BREVE BELOW', + 7723 : 'LATIN SMALL LETTER H WITH BREVE BELOW', + 7724 : 'LATIN CAPITAL LETTER I WITH TILDE BELOW', + 7725 : 'LATIN SMALL LETTER I WITH TILDE BELOW', + 7726 : 'LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE', + 7727 : 'LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE', + 7728 : 'LATIN CAPITAL LETTER K WITH ACUTE', + 7729 : 'LATIN SMALL LETTER K WITH ACUTE', + 7730 : 'LATIN CAPITAL LETTER K WITH DOT BELOW', + 7731 : 'LATIN SMALL LETTER K WITH DOT BELOW', + 7732 : 'LATIN CAPITAL LETTER K WITH LINE BELOW', + 7733 : 'LATIN SMALL LETTER K WITH LINE BELOW', + 7734 : 'LATIN CAPITAL LETTER L WITH DOT BELOW', + 7735 : 'LATIN SMALL LETTER L WITH DOT BELOW', + 7736 : 'LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON', + 7737 : 'LATIN SMALL LETTER L WITH DOT BELOW AND MACRON', + 7738 : 'LATIN CAPITAL LETTER L WITH LINE BELOW', + 7739 : 'LATIN SMALL LETTER L WITH LINE BELOW', + 7740 : 'LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW', + 7741 : 'LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW', + 7742 : 'LATIN CAPITAL LETTER M WITH ACUTE', + 7743 : 'LATIN SMALL LETTER M WITH ACUTE', + 7744 : 'LATIN CAPITAL LETTER M WITH DOT ABOVE', + 7745 : 'LATIN SMALL LETTER M WITH DOT ABOVE', + 7746 : 'LATIN CAPITAL LETTER M WITH DOT BELOW', + 7747 : 'LATIN SMALL LETTER M WITH DOT BELOW', + 7748 : 'LATIN CAPITAL LETTER N WITH DOT ABOVE', + 7749 : 'LATIN SMALL LETTER N WITH DOT ABOVE', + 7750 : 'LATIN CAPITAL LETTER N WITH DOT BELOW', + 7751 : 'LATIN SMALL LETTER N WITH DOT BELOW', + 7752 : 'LATIN CAPITAL LETTER N WITH LINE BELOW', + 7753 : 'LATIN SMALL LETTER N WITH LINE BELOW', + 7754 : 'LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW', + 7755 : 'LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW', + 7756 : 'LATIN CAPITAL LETTER O WITH TILDE AND ACUTE', + 7757 : 'LATIN SMALL LETTER O WITH TILDE AND ACUTE', + 7758 : 'LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS', + 7759 : 'LATIN SMALL LETTER O WITH TILDE AND DIAERESIS', + 7760 : 'LATIN CAPITAL LETTER O WITH MACRON AND GRAVE', + 7761 : 'LATIN SMALL LETTER O WITH MACRON AND GRAVE', + 7762 : 'LATIN CAPITAL LETTER O WITH MACRON AND ACUTE', + 7763 : 'LATIN SMALL LETTER O WITH MACRON AND ACUTE', + 7764 : 'LATIN CAPITAL LETTER P WITH ACUTE', + 7765 : 'LATIN SMALL LETTER P WITH ACUTE', + 7766 : 'LATIN CAPITAL LETTER P WITH DOT ABOVE', + 7767 : 'LATIN SMALL LETTER P WITH DOT ABOVE', + 7768 : 'LATIN CAPITAL LETTER R WITH DOT ABOVE', + 7769 : 'LATIN SMALL LETTER R WITH DOT ABOVE', + 7770 : 'LATIN CAPITAL LETTER R WITH DOT BELOW', + 7771 : 'LATIN SMALL LETTER R WITH DOT BELOW', + 7772 : 'LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON', + 7773 : 'LATIN SMALL LETTER R WITH DOT BELOW AND MACRON', + 7774 : 'LATIN CAPITAL LETTER R WITH LINE BELOW', + 7775 : 'LATIN SMALL LETTER R WITH LINE BELOW', + 7776 : 'LATIN CAPITAL LETTER S WITH DOT ABOVE', + 7777 : 'LATIN SMALL LETTER S WITH DOT ABOVE', + 7778 : 'LATIN CAPITAL LETTER S WITH DOT BELOW', + 7779 : 'LATIN SMALL LETTER S WITH DOT BELOW', + 7780 : 'LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE', + 7781 : 'LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE', + 7782 : 'LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE', + 7783 : 'LATIN SMALL LETTER S WITH CARON AND DOT ABOVE', + 7784 : 'LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE', + 7785 : 'LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE', + 7786 : 'LATIN CAPITAL LETTER T WITH DOT ABOVE', + 7787 : 'LATIN SMALL LETTER T WITH DOT ABOVE', + 7788 : 'LATIN CAPITAL LETTER T WITH DOT BELOW', + 7789 : 'LATIN SMALL LETTER T WITH DOT BELOW', + 7790 : 'LATIN CAPITAL LETTER T WITH LINE BELOW', + 7791 : 'LATIN SMALL LETTER T WITH LINE BELOW', + 7792 : 'LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW', + 7793 : 'LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW', + 7794 : 'LATIN CAPITAL LETTER U WITH DIAERESIS BELOW', + 7795 : 'LATIN SMALL LETTER U WITH DIAERESIS BELOW', + 7796 : 'LATIN CAPITAL LETTER U WITH TILDE BELOW', + 7797 : 'LATIN SMALL LETTER U WITH TILDE BELOW', + 7798 : 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW', + 7799 : 'LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW', + 7800 : 'LATIN CAPITAL LETTER U WITH TILDE AND ACUTE', + 7801 : 'LATIN SMALL LETTER U WITH TILDE AND ACUTE', + 7802 : 'LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS', + 7803 : 'LATIN SMALL LETTER U WITH MACRON AND DIAERESIS', + 7804 : 'LATIN CAPITAL LETTER V WITH TILDE', + 7805 : 'LATIN SMALL LETTER V WITH TILDE', + 7806 : 'LATIN CAPITAL LETTER V WITH DOT BELOW', + 7807 : 'LATIN SMALL LETTER V WITH DOT BELOW', + 7808 : 'LATIN CAPITAL LETTER W WITH GRAVE', + 7809 : 'LATIN SMALL LETTER W WITH GRAVE', + 7810 : 'LATIN CAPITAL LETTER W WITH ACUTE', + 7811 : 'LATIN SMALL LETTER W WITH ACUTE', + 7812 : 'LATIN CAPITAL LETTER W WITH DIAERESIS', + 7813 : 'LATIN SMALL LETTER W WITH DIAERESIS', + 7814 : 'LATIN CAPITAL LETTER W WITH DOT ABOVE', + 7815 : 'LATIN SMALL LETTER W WITH DOT ABOVE', + 7816 : 'LATIN CAPITAL LETTER W WITH DOT BELOW', + 7817 : 'LATIN SMALL LETTER W WITH DOT BELOW', + 7818 : 'LATIN CAPITAL LETTER X WITH DOT ABOVE', + 7819 : 'LATIN SMALL LETTER X WITH DOT ABOVE', + 7820 : 'LATIN CAPITAL LETTER X WITH DIAERESIS', + 7821 : 'LATIN SMALL LETTER X WITH DIAERESIS', + 7822 : 'LATIN CAPITAL LETTER Y WITH DOT ABOVE', + 7823 : 'LATIN SMALL LETTER Y WITH DOT ABOVE', + 7824 : 'LATIN CAPITAL LETTER Z WITH CIRCUMFLEX', + 7825 : 'LATIN SMALL LETTER Z WITH CIRCUMFLEX', + 7826 : 'LATIN CAPITAL LETTER Z WITH DOT BELOW', + 7827 : 'LATIN SMALL LETTER Z WITH DOT BELOW', + 7828 : 'LATIN CAPITAL LETTER Z WITH LINE BELOW', + 7829 : 'LATIN SMALL LETTER Z WITH LINE BELOW', + 7830 : 'LATIN SMALL LETTER H WITH LINE BELOW', + 7831 : 'LATIN SMALL LETTER T WITH DIAERESIS', + 7832 : 'LATIN SMALL LETTER W WITH RING ABOVE', + 7833 : 'LATIN SMALL LETTER Y WITH RING ABOVE', + 7834 : 'LATIN SMALL LETTER A WITH RIGHT HALF RING', + 7835 : 'LATIN SMALL LETTER LONG S WITH DOT ABOVE', + 7840 : 'LATIN CAPITAL LETTER A WITH DOT BELOW', + 7841 : 'LATIN SMALL LETTER A WITH DOT BELOW', + 7842 : 'LATIN CAPITAL LETTER A WITH HOOK ABOVE', + 7843 : 'LATIN SMALL LETTER A WITH HOOK ABOVE', + 7844 : 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE', + 7845 : 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE', + 7846 : 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE', + 7847 : 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE', + 7848 : 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE', + 7849 : 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE', + 7850 : 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE', + 7851 : 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE', + 7852 : 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW', + 7853 : 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW', + 7854 : 'LATIN CAPITAL LETTER A WITH BREVE AND ACUTE', + 7855 : 'LATIN SMALL LETTER A WITH BREVE AND ACUTE', + 7856 : 'LATIN CAPITAL LETTER A WITH BREVE AND GRAVE', + 7857 : 'LATIN SMALL LETTER A WITH BREVE AND GRAVE', + 7858 : 'LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE', + 7859 : 'LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE', + 7860 : 'LATIN CAPITAL LETTER A WITH BREVE AND TILDE', + 7861 : 'LATIN SMALL LETTER A WITH BREVE AND TILDE', + 7862 : 'LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW', + 7863 : 'LATIN SMALL LETTER A WITH BREVE AND DOT BELOW', + 7864 : 'LATIN CAPITAL LETTER E WITH DOT BELOW', + 7865 : 'LATIN SMALL LETTER E WITH DOT BELOW', + 7866 : 'LATIN CAPITAL LETTER E WITH HOOK ABOVE', + 7867 : 'LATIN SMALL LETTER E WITH HOOK ABOVE', + 7868 : 'LATIN CAPITAL LETTER E WITH TILDE', + 7869 : 'LATIN SMALL LETTER E WITH TILDE', + 7870 : 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE', + 7871 : 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE', + 7872 : 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE', + 7873 : 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE', + 7874 : 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE', + 7875 : 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE', + 7876 : 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE', + 7877 : 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE', + 7878 : 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW', + 7879 : 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW', + 7880 : 'LATIN CAPITAL LETTER I WITH HOOK ABOVE', + 7881 : 'LATIN SMALL LETTER I WITH HOOK ABOVE', + 7882 : 'LATIN CAPITAL LETTER I WITH DOT BELOW', + 7883 : 'LATIN SMALL LETTER I WITH DOT BELOW', + 7884 : 'LATIN CAPITAL LETTER O WITH DOT BELOW', + 7885 : 'LATIN SMALL LETTER O WITH DOT BELOW', + 7886 : 'LATIN CAPITAL LETTER O WITH HOOK ABOVE', + 7887 : 'LATIN SMALL LETTER O WITH HOOK ABOVE', + 7888 : 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE', + 7889 : 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE', + 7890 : 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE', + 7891 : 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE', + 7892 : 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE', + 7893 : 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE', + 7894 : 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE', + 7895 : 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE', + 7896 : 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW', + 7897 : 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW', + 7898 : 'LATIN CAPITAL LETTER O WITH HORN AND ACUTE', + 7899 : 'LATIN SMALL LETTER O WITH HORN AND ACUTE', + 7900 : 'LATIN CAPITAL LETTER O WITH HORN AND GRAVE', + 7901 : 'LATIN SMALL LETTER O WITH HORN AND GRAVE', + 7902 : 'LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE', + 7903 : 'LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE', + 7904 : 'LATIN CAPITAL LETTER O WITH HORN AND TILDE', + 7905 : 'LATIN SMALL LETTER O WITH HORN AND TILDE', + 7906 : 'LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW', + 7907 : 'LATIN SMALL LETTER O WITH HORN AND DOT BELOW', + 7908 : 'LATIN CAPITAL LETTER U WITH DOT BELOW', + 7909 : 'LATIN SMALL LETTER U WITH DOT BELOW', + 7910 : 'LATIN CAPITAL LETTER U WITH HOOK ABOVE', + 7911 : 'LATIN SMALL LETTER U WITH HOOK ABOVE', + 7912 : 'LATIN CAPITAL LETTER U WITH HORN AND ACUTE', + 7913 : 'LATIN SMALL LETTER U WITH HORN AND ACUTE', + 7914 : 'LATIN CAPITAL LETTER U WITH HORN AND GRAVE', + 7915 : 'LATIN SMALL LETTER U WITH HORN AND GRAVE', + 7916 : 'LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE', + 7917 : 'LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE', + 7918 : 'LATIN CAPITAL LETTER U WITH HORN AND TILDE', + 7919 : 'LATIN SMALL LETTER U WITH HORN AND TILDE', + 7920 : 'LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW', + 7921 : 'LATIN SMALL LETTER U WITH HORN AND DOT BELOW', + 7922 : 'LATIN CAPITAL LETTER Y WITH GRAVE', + 7923 : 'LATIN SMALL LETTER Y WITH GRAVE', + 7924 : 'LATIN CAPITAL LETTER Y WITH DOT BELOW', + 7925 : 'LATIN SMALL LETTER Y WITH DOT BELOW', + 7926 : 'LATIN CAPITAL LETTER Y WITH HOOK ABOVE', + 7927 : 'LATIN SMALL LETTER Y WITH HOOK ABOVE', + 7928 : 'LATIN CAPITAL LETTER Y WITH TILDE', + 7929 : 'LATIN SMALL LETTER Y WITH TILDE', + 7936 : 'GREEK SMALL LETTER ALPHA WITH PSILI', + 7937 : 'GREEK SMALL LETTER ALPHA WITH DASIA', + 7938 : 'GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA', + 7939 : 'GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA', + 7940 : 'GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA', + 7941 : 'GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA', + 7942 : 'GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI', + 7943 : 'GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI', + 7944 : 'GREEK CAPITAL LETTER ALPHA WITH PSILI', + 7945 : 'GREEK CAPITAL LETTER ALPHA WITH DASIA', + 7946 : 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA', + 7947 : 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA', + 7948 : 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA', + 7949 : 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA', + 7950 : 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI', + 7951 : 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI', + 7952 : 'GREEK SMALL LETTER EPSILON WITH PSILI', + 7953 : 'GREEK SMALL LETTER EPSILON WITH DASIA', + 7954 : 'GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA', + 7955 : 'GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA', + 7956 : 'GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA', + 7957 : 'GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA', + 7960 : 'GREEK CAPITAL LETTER EPSILON WITH PSILI', + 7961 : 'GREEK CAPITAL LETTER EPSILON WITH DASIA', + 7962 : 'GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA', + 7963 : 'GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA', + 7964 : 'GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA', + 7965 : 'GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA', + 7968 : 'GREEK SMALL LETTER ETA WITH PSILI', + 7969 : 'GREEK SMALL LETTER ETA WITH DASIA', + 7970 : 'GREEK SMALL LETTER ETA WITH PSILI AND VARIA', + 7971 : 'GREEK SMALL LETTER ETA WITH DASIA AND VARIA', + 7972 : 'GREEK SMALL LETTER ETA WITH PSILI AND OXIA', + 7973 : 'GREEK SMALL LETTER ETA WITH DASIA AND OXIA', + 7974 : 'GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI', + 7975 : 'GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI', + 7976 : 'GREEK CAPITAL LETTER ETA WITH PSILI', + 7977 : 'GREEK CAPITAL LETTER ETA WITH DASIA', + 7978 : 'GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA', + 7979 : 'GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA', + 7980 : 'GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA', + 7981 : 'GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA', + 7982 : 'GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI', + 7983 : 'GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI', + 7984 : 'GREEK SMALL LETTER IOTA WITH PSILI', + 7985 : 'GREEK SMALL LETTER IOTA WITH DASIA', + 7986 : 'GREEK SMALL LETTER IOTA WITH PSILI AND VARIA', + 7987 : 'GREEK SMALL LETTER IOTA WITH DASIA AND VARIA', + 7988 : 'GREEK SMALL LETTER IOTA WITH PSILI AND OXIA', + 7989 : 'GREEK SMALL LETTER IOTA WITH DASIA AND OXIA', + 7990 : 'GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI', + 7991 : 'GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI', + 7992 : 'GREEK CAPITAL LETTER IOTA WITH PSILI', + 7993 : 'GREEK CAPITAL LETTER IOTA WITH DASIA', + 7994 : 'GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA', + 7995 : 'GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA', + 7996 : 'GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA', + 7997 : 'GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA', + 7998 : 'GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI', + 7999 : 'GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI', + 8000 : 'GREEK SMALL LETTER OMICRON WITH PSILI', + 8001 : 'GREEK SMALL LETTER OMICRON WITH DASIA', + 8002 : 'GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA', + 8003 : 'GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA', + 8004 : 'GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA', + 8005 : 'GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA', + 8008 : 'GREEK CAPITAL LETTER OMICRON WITH PSILI', + 8009 : 'GREEK CAPITAL LETTER OMICRON WITH DASIA', + 8010 : 'GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA', + 8011 : 'GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA', + 8012 : 'GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA', + 8013 : 'GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA', + 8016 : 'GREEK SMALL LETTER UPSILON WITH PSILI', + 8017 : 'GREEK SMALL LETTER UPSILON WITH DASIA', + 8018 : 'GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA', + 8019 : 'GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA', + 8020 : 'GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA', + 8021 : 'GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA', + 8022 : 'GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI', + 8023 : 'GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI', + 8025 : 'GREEK CAPITAL LETTER UPSILON WITH DASIA', + 8027 : 'GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA', + 8029 : 'GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA', + 8031 : 'GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI', + 8032 : 'GREEK SMALL LETTER OMEGA WITH PSILI', + 8033 : 'GREEK SMALL LETTER OMEGA WITH DASIA', + 8034 : 'GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA', + 8035 : 'GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA', + 8036 : 'GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA', + 8037 : 'GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA', + 8038 : 'GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI', + 8039 : 'GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI', + 8040 : 'GREEK CAPITAL LETTER OMEGA WITH PSILI', + 8041 : 'GREEK CAPITAL LETTER OMEGA WITH DASIA', + 8042 : 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA', + 8043 : 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA', + 8044 : 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA', + 8045 : 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA', + 8046 : 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI', + 8047 : 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI', + 8048 : 'GREEK SMALL LETTER ALPHA WITH VARIA', + 8049 : 'GREEK SMALL LETTER ALPHA WITH OXIA', + 8050 : 'GREEK SMALL LETTER EPSILON WITH VARIA', + 8051 : 'GREEK SMALL LETTER EPSILON WITH OXIA', + 8052 : 'GREEK SMALL LETTER ETA WITH VARIA', + 8053 : 'GREEK SMALL LETTER ETA WITH OXIA', + 8054 : 'GREEK SMALL LETTER IOTA WITH VARIA', + 8055 : 'GREEK SMALL LETTER IOTA WITH OXIA', + 8056 : 'GREEK SMALL LETTER OMICRON WITH VARIA', + 8057 : 'GREEK SMALL LETTER OMICRON WITH OXIA', + 8058 : 'GREEK SMALL LETTER UPSILON WITH VARIA', + 8059 : 'GREEK SMALL LETTER UPSILON WITH OXIA', + 8060 : 'GREEK SMALL LETTER OMEGA WITH VARIA', + 8061 : 'GREEK SMALL LETTER OMEGA WITH OXIA', + 8064 : 'GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI', + 8065 : 'GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI', + 8066 : 'GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI', + 8067 : 'GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI', + 8068 : 'GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI', + 8069 : 'GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI', + 8070 : 'GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI', + 8071 : 'GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI', + 8072 : 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI', + 8073 : 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI', + 8074 : 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI', + 8075 : 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI', + 8076 : 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI', + 8077 : 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI', + 8078 : 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI', + 8079 : 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI', + 8080 : 'GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI', + 8081 : 'GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI', + 8082 : 'GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI', + 8083 : 'GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI', + 8084 : 'GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI', + 8085 : 'GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI', + 8086 : 'GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI', + 8087 : 'GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI', + 8088 : 'GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI', + 8089 : 'GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI', + 8090 : 'GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI', + 8091 : 'GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI', + 8092 : 'GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI', + 8093 : 'GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI', + 8094 : 'GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI', + 8095 : 'GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI', + 8096 : 'GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI', + 8097 : 'GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI', + 8098 : 'GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI', + 8099 : 'GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI', + 8100 : 'GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI', + 8101 : 'GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI', + 8102 : 'GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI', + 8103 : 'GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI', + 8104 : 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI', + 8105 : 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI', + 8106 : 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI', + 8107 : 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI', + 8108 : 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI', + 8109 : 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI', + 8110 : 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI', + 8111 : 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI', + 8112 : 'GREEK SMALL LETTER ALPHA WITH VRACHY', + 8113 : 'GREEK SMALL LETTER ALPHA WITH MACRON', + 8114 : 'GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI', + 8115 : 'GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI', + 8116 : 'GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI', + 8118 : 'GREEK SMALL LETTER ALPHA WITH PERISPOMENI', + 8119 : 'GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI', + 8120 : 'GREEK CAPITAL LETTER ALPHA WITH VRACHY', + 8121 : 'GREEK CAPITAL LETTER ALPHA WITH MACRON', + 8122 : 'GREEK CAPITAL LETTER ALPHA WITH VARIA', + 8123 : 'GREEK CAPITAL LETTER ALPHA WITH OXIA', + 8124 : 'GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI', + 8125 : 'GREEK KORONIS', + 8126 : 'GREEK PROSGEGRAMMENI', + 8127 : 'GREEK PSILI', + 8128 : 'GREEK PERISPOMENI', + 8129 : 'GREEK DIALYTIKA AND PERISPOMENI', + 8130 : 'GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI', + 8131 : 'GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI', + 8132 : 'GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI', + 8134 : 'GREEK SMALL LETTER ETA WITH PERISPOMENI', + 8135 : 'GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI', + 8136 : 'GREEK CAPITAL LETTER EPSILON WITH VARIA', + 8137 : 'GREEK CAPITAL LETTER EPSILON WITH OXIA', + 8138 : 'GREEK CAPITAL LETTER ETA WITH VARIA', + 8139 : 'GREEK CAPITAL LETTER ETA WITH OXIA', + 8140 : 'GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI', + 8141 : 'GREEK PSILI AND VARIA', + 8142 : 'GREEK PSILI AND OXIA', + 8143 : 'GREEK PSILI AND PERISPOMENI', + 8144 : 'GREEK SMALL LETTER IOTA WITH VRACHY', + 8145 : 'GREEK SMALL LETTER IOTA WITH MACRON', + 8146 : 'GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA', + 8147 : 'GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA', + 8150 : 'GREEK SMALL LETTER IOTA WITH PERISPOMENI', + 8151 : 'GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI', + 8152 : 'GREEK CAPITAL LETTER IOTA WITH VRACHY', + 8153 : 'GREEK CAPITAL LETTER IOTA WITH MACRON', + 8154 : 'GREEK CAPITAL LETTER IOTA WITH VARIA', + 8155 : 'GREEK CAPITAL LETTER IOTA WITH OXIA', + 8157 : 'GREEK DASIA AND VARIA', + 8158 : 'GREEK DASIA AND OXIA', + 8159 : 'GREEK DASIA AND PERISPOMENI', + 8160 : 'GREEK SMALL LETTER UPSILON WITH VRACHY', + 8161 : 'GREEK SMALL LETTER UPSILON WITH MACRON', + 8162 : 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA', + 8163 : 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA', + 8164 : 'GREEK SMALL LETTER RHO WITH PSILI', + 8165 : 'GREEK SMALL LETTER RHO WITH DASIA', + 8166 : 'GREEK SMALL LETTER UPSILON WITH PERISPOMENI', + 8167 : 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI', + 8168 : 'GREEK CAPITAL LETTER UPSILON WITH VRACHY', + 8169 : 'GREEK CAPITAL LETTER UPSILON WITH MACRON', + 8170 : 'GREEK CAPITAL LETTER UPSILON WITH VARIA', + 8171 : 'GREEK CAPITAL LETTER UPSILON WITH OXIA', + 8172 : 'GREEK CAPITAL LETTER RHO WITH DASIA', + 8173 : 'GREEK DIALYTIKA AND VARIA', + 8174 : 'GREEK DIALYTIKA AND OXIA', + 8175 : 'GREEK VARIA', + 8178 : 'GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI', + 8179 : 'GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI', + 8180 : 'GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI', + 8182 : 'GREEK SMALL LETTER OMEGA WITH PERISPOMENI', + 8183 : 'GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI', + 8184 : 'GREEK CAPITAL LETTER OMICRON WITH VARIA', + 8185 : 'GREEK CAPITAL LETTER OMICRON WITH OXIA', + 8186 : 'GREEK CAPITAL LETTER OMEGA WITH VARIA', + 8187 : 'GREEK CAPITAL LETTER OMEGA WITH OXIA', + 8188 : 'GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI', + 8189 : 'GREEK OXIA', + 8190 : 'GREEK DASIA', + 8192 : 'EN QUAD', + 8193 : 'EM QUAD', + 8194 : 'EN SPACE', + 8195 : 'EM SPACE', + 8196 : 'THREE-PER-EM SPACE', + 8197 : 'FOUR-PER-EM SPACE', + 8198 : 'SIX-PER-EM SPACE', + 8199 : 'FIGURE SPACE', + 8200 : 'PUNCTUATION SPACE', + 8201 : 'THIN SPACE', + 8202 : 'HAIR SPACE', + 8203 : 'ZERO WIDTH SPACE', + 8204 : 'ZERO WIDTH NON-JOINER', + 8205 : 'ZERO WIDTH JOINER', + 8206 : 'LEFT-TO-RIGHT MARK', + 8207 : 'RIGHT-TO-LEFT MARK', + 8208 : 'HYPHEN', + 8209 : 'NON-BREAKING HYPHEN', + 8210 : 'FIGURE DASH', + 8211 : 'EN DASH', + 8212 : 'EM DASH', + 8213 : 'HORIZONTAL BAR', + 8214 : 'DOUBLE VERTICAL LINE', + 8215 : 'DOUBLE LOW LINE', + 8216 : 'LEFT SINGLE QUOTATION MARK', + 8217 : 'RIGHT SINGLE QUOTATION MARK', + 8218 : 'SINGLE LOW-9 QUOTATION MARK', + 8219 : 'SINGLE HIGH-REVERSED-9 QUOTATION MARK', + 8220 : 'LEFT DOUBLE QUOTATION MARK', + 8221 : 'RIGHT DOUBLE QUOTATION MARK', + 8222 : 'DOUBLE LOW-9 QUOTATION MARK', + 8223 : 'DOUBLE HIGH-REVERSED-9 QUOTATION MARK', + 8224 : 'DAGGER', + 8225 : 'DOUBLE DAGGER', + 8226 : 'BULLET', + 8227 : 'TRIANGULAR BULLET', + 8228 : 'ONE DOT LEADER', + 8229 : 'TWO DOT LEADER', + 8230 : 'HORIZONTAL ELLIPSIS', + 8231 : 'HYPHENATION POINT', + 8232 : 'LINE SEPARATOR', + 8233 : 'PARAGRAPH SEPARATOR', + 8234 : 'LEFT-TO-RIGHT EMBEDDING', + 8235 : 'RIGHT-TO-LEFT EMBEDDING', + 8236 : 'POP DIRECTIONAL FORMATTING', + 8237 : 'LEFT-TO-RIGHT OVERRIDE', + 8238 : 'RIGHT-TO-LEFT OVERRIDE', + 8239 : 'NARROW NO-BREAK SPACE', + 8240 : 'PER MILLE SIGN', + 8241 : 'PER TEN THOUSAND SIGN', + 8242 : 'PRIME', + 8243 : 'DOUBLE PRIME', + 8244 : 'TRIPLE PRIME', + 8245 : 'REVERSED PRIME', + 8246 : 'REVERSED DOUBLE PRIME', + 8247 : 'REVERSED TRIPLE PRIME', + 8248 : 'CARET', + 8249 : 'SINGLE LEFT-POINTING ANGLE QUOTATION MARK', + 8250 : 'SINGLE RIGHT-POINTING ANGLE QUOTATION MARK', + 8251 : 'REFERENCE MARK', + 8252 : 'DOUBLE EXCLAMATION MARK', + 8253 : 'INTERROBANG', + 8254 : 'OVERLINE', + 8255 : 'UNDERTIE', + 8256 : 'CHARACTER TIE', + 8257 : 'CARET INSERTION POINT', + 8258 : 'ASTERISM', + 8259 : 'HYPHEN BULLET', + 8260 : 'FRACTION SLASH', + 8261 : 'LEFT SQUARE BRACKET WITH QUILL', + 8262 : 'RIGHT SQUARE BRACKET WITH QUILL', + 8263 : 'DOUBLE QUESTION MARK', + 8264 : 'QUESTION EXCLAMATION MARK', + 8265 : 'EXCLAMATION QUESTION MARK', + 8266 : 'TIRONIAN SIGN ET', + 8267 : 'REVERSED PILCROW SIGN', + 8268 : 'BLACK LEFTWARDS BULLET', + 8269 : 'BLACK RIGHTWARDS BULLET', + 8270 : 'LOW ASTERISK', + 8271 : 'REVERSED SEMICOLON', + 8272 : 'CLOSE UP', + 8273 : 'TWO ASTERISKS ALIGNED VERTICALLY', + 8274 : 'COMMERCIAL MINUS SIGN', + 8279 : 'QUADRUPLE PRIME', + 8287 : 'MEDIUM MATHEMATICAL SPACE', + 8288 : 'WORD JOINER', + 8289 : 'FUNCTION APPLICATION', + 8290 : 'INVISIBLE TIMES', + 8291 : 'INVISIBLE SEPARATOR', + 8298 : 'INHIBIT SYMMETRIC SWAPPING', + 8299 : 'ACTIVATE SYMMETRIC SWAPPING', + 8300 : 'INHIBIT ARABIC FORM SHAPING', + 8301 : 'ACTIVATE ARABIC FORM SHAPING', + 8302 : 'NATIONAL DIGIT SHAPES', + 8303 : 'NOMINAL DIGIT SHAPES', + 8304 : 'SUPERSCRIPT ZERO', + 8305 : 'SUPERSCRIPT LATIN SMALL LETTER I', + 8308 : 'SUPERSCRIPT FOUR', + 8309 : 'SUPERSCRIPT FIVE', + 8310 : 'SUPERSCRIPT SIX', + 8311 : 'SUPERSCRIPT SEVEN', + 8312 : 'SUPERSCRIPT EIGHT', + 8313 : 'SUPERSCRIPT NINE', + 8314 : 'SUPERSCRIPT PLUS SIGN', + 8315 : 'SUPERSCRIPT MINUS', + 8316 : 'SUPERSCRIPT EQUALS SIGN', + 8317 : 'SUPERSCRIPT LEFT PARENTHESIS', + 8318 : 'SUPERSCRIPT RIGHT PARENTHESIS', + 8319 : 'SUPERSCRIPT LATIN SMALL LETTER N', + 8320 : 'SUBSCRIPT ZERO', + 8321 : 'SUBSCRIPT ONE', + 8322 : 'SUBSCRIPT TWO', + 8323 : 'SUBSCRIPT THREE', + 8324 : 'SUBSCRIPT FOUR', + 8325 : 'SUBSCRIPT FIVE', + 8326 : 'SUBSCRIPT SIX', + 8327 : 'SUBSCRIPT SEVEN', + 8328 : 'SUBSCRIPT EIGHT', + 8329 : 'SUBSCRIPT NINE', + 8330 : 'SUBSCRIPT PLUS SIGN', + 8331 : 'SUBSCRIPT MINUS', + 8332 : 'SUBSCRIPT EQUALS SIGN', + 8333 : 'SUBSCRIPT LEFT PARENTHESIS', + 8334 : 'SUBSCRIPT RIGHT PARENTHESIS', + 8352 : 'EURO-CURRENCY SIGN', + 8353 : 'COLON SIGN', + 8354 : 'CRUZEIRO SIGN', + 8355 : 'FRENCH FRANC SIGN', + 8356 : 'LIRA SIGN', + 8357 : 'MILL SIGN', + 8358 : 'NAIRA SIGN', + 8359 : 'PESETA SIGN', + 8360 : 'RUPEE SIGN', + 8361 : 'WON SIGN', + 8362 : 'NEW SHEQEL SIGN', + 8363 : 'DONG SIGN', + 8364 : 'EURO SIGN', + 8365 : 'KIP SIGN', + 8366 : 'TUGRIK SIGN', + 8367 : 'DRACHMA SIGN', + 8368 : 'GERMAN PENNY SIGN', + 8369 : 'PESO SIGN', + 8400 : 'COMBINING LEFT HARPOON ABOVE', + 8401 : 'COMBINING RIGHT HARPOON ABOVE', + 8402 : 'COMBINING LONG VERTICAL LINE OVERLAY', + 8403 : 'COMBINING SHORT VERTICAL LINE OVERLAY', + 8404 : 'COMBINING ANTICLOCKWISE ARROW ABOVE', + 8405 : 'COMBINING CLOCKWISE ARROW ABOVE', + 8406 : 'COMBINING LEFT ARROW ABOVE', + 8407 : 'COMBINING RIGHT ARROW ABOVE', + 8408 : 'COMBINING RING OVERLAY', + 8409 : 'COMBINING CLOCKWISE RING OVERLAY', + 8410 : 'COMBINING ANTICLOCKWISE RING OVERLAY', + 8411 : 'COMBINING THREE DOTS ABOVE', + 8412 : 'COMBINING FOUR DOTS ABOVE', + 8413 : 'COMBINING ENCLOSING CIRCLE', + 8414 : 'COMBINING ENCLOSING SQUARE', + 8415 : 'COMBINING ENCLOSING DIAMOND', + 8416 : 'COMBINING ENCLOSING CIRCLE BACKSLASH', + 8417 : 'COMBINING LEFT RIGHT ARROW ABOVE', + 8418 : 'COMBINING ENCLOSING SCREEN', + 8419 : 'COMBINING ENCLOSING KEYCAP', + 8420 : 'COMBINING ENCLOSING UPWARD POINTING TRIANGLE', + 8421 : 'COMBINING REVERSE SOLIDUS OVERLAY', + 8422 : 'COMBINING DOUBLE VERTICAL STROKE OVERLAY', + 8423 : 'COMBINING ANNUITY SYMBOL', + 8424 : 'COMBINING TRIPLE UNDERDOT', + 8425 : 'COMBINING WIDE BRIDGE ABOVE', + 8426 : 'COMBINING LEFTWARDS ARROW OVERLAY', + 8448 : 'ACCOUNT OF', + 8449 : 'ADDRESSED TO THE SUBJECT', + 8450 : 'DOUBLE-STRUCK CAPITAL C', + 8451 : 'DEGREE CELSIUS', + 8452 : 'CENTRE LINE SYMBOL', + 8453 : 'CARE OF', + 8454 : 'CADA UNA', + 8455 : 'EULER CONSTANT', + 8456 : 'SCRUPLE', + 8457 : 'DEGREE FAHRENHEIT', + 8458 : 'SCRIPT SMALL G', + 8459 : 'SCRIPT CAPITAL H', + 8460 : 'BLACK-LETTER CAPITAL H', + 8461 : 'DOUBLE-STRUCK CAPITAL H', + 8462 : 'PLANCK CONSTANT', + 8463 : 'PLANCK CONSTANT OVER TWO PI', + 8464 : 'SCRIPT CAPITAL I', + 8465 : 'BLACK-LETTER CAPITAL I', + 8466 : 'SCRIPT CAPITAL L', + 8467 : 'SCRIPT SMALL L', + 8468 : 'L B BAR SYMBOL', + 8469 : 'DOUBLE-STRUCK CAPITAL N', + 8470 : 'NUMERO SIGN', + 8471 : 'SOUND RECORDING COPYRIGHT', + 8472 : 'SCRIPT CAPITAL P', + 8473 : 'DOUBLE-STRUCK CAPITAL P', + 8474 : 'DOUBLE-STRUCK CAPITAL Q', + 8475 : 'SCRIPT CAPITAL R', + 8476 : 'BLACK-LETTER CAPITAL R', + 8477 : 'DOUBLE-STRUCK CAPITAL R', + 8478 : 'PRESCRIPTION TAKE', + 8479 : 'RESPONSE', + 8480 : 'SERVICE MARK', + 8481 : 'TELEPHONE SIGN', + 8482 : 'TRADE MARK SIGN', + 8483 : 'VERSICLE', + 8484 : 'DOUBLE-STRUCK CAPITAL Z', + 8485 : 'OUNCE SIGN', + 8486 : 'OHM SIGN', + 8487 : 'INVERTED OHM SIGN', + 8488 : 'BLACK-LETTER CAPITAL Z', + 8489 : 'TURNED GREEK SMALL LETTER IOTA', + 8490 : 'KELVIN SIGN', + 8491 : 'ANGSTROM SIGN', + 8492 : 'SCRIPT CAPITAL B', + 8493 : 'BLACK-LETTER CAPITAL C', + 8494 : 'ESTIMATED SYMBOL', + 8495 : 'SCRIPT SMALL E', + 8496 : 'SCRIPT CAPITAL E', + 8497 : 'SCRIPT CAPITAL F', + 8498 : 'TURNED CAPITAL F', + 8499 : 'SCRIPT CAPITAL M', + 8500 : 'SCRIPT SMALL O', + 8501 : 'ALEF SYMBOL', + 8502 : 'BET SYMBOL', + 8503 : 'GIMEL SYMBOL', + 8504 : 'DALET SYMBOL', + 8505 : 'INFORMATION SOURCE', + 8506 : 'ROTATED CAPITAL Q', + 8509 : 'DOUBLE-STRUCK SMALL GAMMA', + 8510 : 'DOUBLE-STRUCK CAPITAL GAMMA', + 8511 : 'DOUBLE-STRUCK CAPITAL PI', + 8512 : 'DOUBLE-STRUCK N-ARY SUMMATION', + 8513 : 'TURNED SANS-SERIF CAPITAL G', + 8514 : 'TURNED SANS-SERIF CAPITAL L', + 8515 : 'REVERSED SANS-SERIF CAPITAL L', + 8516 : 'TURNED SANS-SERIF CAPITAL Y', + 8517 : 'DOUBLE-STRUCK ITALIC CAPITAL D', + 8518 : 'DOUBLE-STRUCK ITALIC SMALL D', + 8519 : 'DOUBLE-STRUCK ITALIC SMALL E', + 8520 : 'DOUBLE-STRUCK ITALIC SMALL I', + 8521 : 'DOUBLE-STRUCK ITALIC SMALL J', + 8522 : 'PROPERTY LINE', + 8523 : 'TURNED AMPERSAND', + 8531 : 'VULGAR FRACTION ONE THIRD', + 8532 : 'VULGAR FRACTION TWO THIRDS', + 8533 : 'VULGAR FRACTION ONE FIFTH', + 8534 : 'VULGAR FRACTION TWO FIFTHS', + 8535 : 'VULGAR FRACTION THREE FIFTHS', + 8536 : 'VULGAR FRACTION FOUR FIFTHS', + 8537 : 'VULGAR FRACTION ONE SIXTH', + 8538 : 'VULGAR FRACTION FIVE SIXTHS', + 8539 : 'VULGAR FRACTION ONE EIGHTH', + 8540 : 'VULGAR FRACTION THREE EIGHTHS', + 8541 : 'VULGAR FRACTION FIVE EIGHTHS', + 8542 : 'VULGAR FRACTION SEVEN EIGHTHS', + 8543 : 'FRACTION NUMERATOR ONE', + 8544 : 'ROMAN NUMERAL ONE', + 8545 : 'ROMAN NUMERAL TWO', + 8546 : 'ROMAN NUMERAL THREE', + 8547 : 'ROMAN NUMERAL FOUR', + 8548 : 'ROMAN NUMERAL FIVE', + 8549 : 'ROMAN NUMERAL SIX', + 8550 : 'ROMAN NUMERAL SEVEN', + 8551 : 'ROMAN NUMERAL EIGHT', + 8552 : 'ROMAN NUMERAL NINE', + 8553 : 'ROMAN NUMERAL TEN', + 8554 : 'ROMAN NUMERAL ELEVEN', + 8555 : 'ROMAN NUMERAL TWELVE', + 8556 : 'ROMAN NUMERAL FIFTY', + 8557 : 'ROMAN NUMERAL ONE HUNDRED', + 8558 : 'ROMAN NUMERAL FIVE HUNDRED', + 8559 : 'ROMAN NUMERAL ONE THOUSAND', + 8560 : 'SMALL ROMAN NUMERAL ONE', + 8561 : 'SMALL ROMAN NUMERAL TWO', + 8562 : 'SMALL ROMAN NUMERAL THREE', + 8563 : 'SMALL ROMAN NUMERAL FOUR', + 8564 : 'SMALL ROMAN NUMERAL FIVE', + 8565 : 'SMALL ROMAN NUMERAL SIX', + 8566 : 'SMALL ROMAN NUMERAL SEVEN', + 8567 : 'SMALL ROMAN NUMERAL EIGHT', + 8568 : 'SMALL ROMAN NUMERAL NINE', + 8569 : 'SMALL ROMAN NUMERAL TEN', + 8570 : 'SMALL ROMAN NUMERAL ELEVEN', + 8571 : 'SMALL ROMAN NUMERAL TWELVE', + 8572 : 'SMALL ROMAN NUMERAL FIFTY', + 8573 : 'SMALL ROMAN NUMERAL ONE HUNDRED', + 8574 : 'SMALL ROMAN NUMERAL FIVE HUNDRED', + 8575 : 'SMALL ROMAN NUMERAL ONE THOUSAND', + 8576 : 'ROMAN NUMERAL ONE THOUSAND C D', + 8577 : 'ROMAN NUMERAL FIVE THOUSAND', + 8578 : 'ROMAN NUMERAL TEN THOUSAND', + 8579 : 'ROMAN NUMERAL REVERSED ONE HUNDRED', + 8592 : 'LEFTWARDS ARROW', + 8593 : 'UPWARDS ARROW', + 8594 : 'RIGHTWARDS ARROW', + 8595 : 'DOWNWARDS ARROW', + 8596 : 'LEFT RIGHT ARROW', + 8597 : 'UP DOWN ARROW', + 8598 : 'NORTH WEST ARROW', + 8599 : 'NORTH EAST ARROW', + 8600 : 'SOUTH EAST ARROW', + 8601 : 'SOUTH WEST ARROW', + 8602 : 'LEFTWARDS ARROW WITH STROKE', + 8603 : 'RIGHTWARDS ARROW WITH STROKE', + 8604 : 'LEFTWARDS WAVE ARROW', + 8605 : 'RIGHTWARDS WAVE ARROW', + 8606 : 'LEFTWARDS TWO HEADED ARROW', + 8607 : 'UPWARDS TWO HEADED ARROW', + 8608 : 'RIGHTWARDS TWO HEADED ARROW', + 8609 : 'DOWNWARDS TWO HEADED ARROW', + 8610 : 'LEFTWARDS ARROW WITH TAIL', + 8611 : 'RIGHTWARDS ARROW WITH TAIL', + 8612 : 'LEFTWARDS ARROW FROM BAR', + 8613 : 'UPWARDS ARROW FROM BAR', + 8614 : 'RIGHTWARDS ARROW FROM BAR', + 8615 : 'DOWNWARDS ARROW FROM BAR', + 8616 : 'UP DOWN ARROW WITH BASE', + 8617 : 'LEFTWARDS ARROW WITH HOOK', + 8618 : 'RIGHTWARDS ARROW WITH HOOK', + 8619 : 'LEFTWARDS ARROW WITH LOOP', + 8620 : 'RIGHTWARDS ARROW WITH LOOP', + 8621 : 'LEFT RIGHT WAVE ARROW', + 8622 : 'LEFT RIGHT ARROW WITH STROKE', + 8623 : 'DOWNWARDS ZIGZAG ARROW', + 8624 : 'UPWARDS ARROW WITH TIP LEFTWARDS', + 8625 : 'UPWARDS ARROW WITH TIP RIGHTWARDS', + 8626 : 'DOWNWARDS ARROW WITH TIP LEFTWARDS', + 8627 : 'DOWNWARDS ARROW WITH TIP RIGHTWARDS', + 8628 : 'RIGHTWARDS ARROW WITH CORNER DOWNWARDS', + 8629 : 'DOWNWARDS ARROW WITH CORNER LEFTWARDS', + 8630 : 'ANTICLOCKWISE TOP SEMICIRCLE ARROW', + 8631 : 'CLOCKWISE TOP SEMICIRCLE ARROW', + 8632 : 'NORTH WEST ARROW TO LONG BAR', + 8633 : 'LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR', + 8634 : 'ANTICLOCKWISE OPEN CIRCLE ARROW', + 8635 : 'CLOCKWISE OPEN CIRCLE ARROW', + 8636 : 'LEFTWARDS HARPOON WITH BARB UPWARDS', + 8637 : 'LEFTWARDS HARPOON WITH BARB DOWNWARDS', + 8638 : 'UPWARDS HARPOON WITH BARB RIGHTWARDS', + 8639 : 'UPWARDS HARPOON WITH BARB LEFTWARDS', + 8640 : 'RIGHTWARDS HARPOON WITH BARB UPWARDS', + 8641 : 'RIGHTWARDS HARPOON WITH BARB DOWNWARDS', + 8642 : 'DOWNWARDS HARPOON WITH BARB RIGHTWARDS', + 8643 : 'DOWNWARDS HARPOON WITH BARB LEFTWARDS', + 8644 : 'RIGHTWARDS ARROW OVER LEFTWARDS ARROW', + 8645 : 'UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW', + 8646 : 'LEFTWARDS ARROW OVER RIGHTWARDS ARROW', + 8647 : 'LEFTWARDS PAIRED ARROWS', + 8648 : 'UPWARDS PAIRED ARROWS', + 8649 : 'RIGHTWARDS PAIRED ARROWS', + 8650 : 'DOWNWARDS PAIRED ARROWS', + 8651 : 'LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON', + 8652 : 'RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON', + 8653 : 'LEFTWARDS DOUBLE ARROW WITH STROKE', + 8654 : 'LEFT RIGHT DOUBLE ARROW WITH STROKE', + 8655 : 'RIGHTWARDS DOUBLE ARROW WITH STROKE', + 8656 : 'LEFTWARDS DOUBLE ARROW', + 8657 : 'UPWARDS DOUBLE ARROW', + 8658 : 'RIGHTWARDS DOUBLE ARROW', + 8659 : 'DOWNWARDS DOUBLE ARROW', + 8660 : 'LEFT RIGHT DOUBLE ARROW', + 8661 : 'UP DOWN DOUBLE ARROW', + 8662 : 'NORTH WEST DOUBLE ARROW', + 8663 : 'NORTH EAST DOUBLE ARROW', + 8664 : 'SOUTH EAST DOUBLE ARROW', + 8665 : 'SOUTH WEST DOUBLE ARROW', + 8666 : 'LEFTWARDS TRIPLE ARROW', + 8667 : 'RIGHTWARDS TRIPLE ARROW', + 8668 : 'LEFTWARDS SQUIGGLE ARROW', + 8669 : 'RIGHTWARDS SQUIGGLE ARROW', + 8670 : 'UPWARDS ARROW WITH DOUBLE STROKE', + 8671 : 'DOWNWARDS ARROW WITH DOUBLE STROKE', + 8672 : 'LEFTWARDS DASHED ARROW', + 8673 : 'UPWARDS DASHED ARROW', + 8674 : 'RIGHTWARDS DASHED ARROW', + 8675 : 'DOWNWARDS DASHED ARROW', + 8676 : 'LEFTWARDS ARROW TO BAR', + 8677 : 'RIGHTWARDS ARROW TO BAR', + 8678 : 'LEFTWARDS WHITE ARROW', + 8679 : 'UPWARDS WHITE ARROW', + 8680 : 'RIGHTWARDS WHITE ARROW', + 8681 : 'DOWNWARDS WHITE ARROW', + 8682 : 'UPWARDS WHITE ARROW FROM BAR', + 8683 : 'UPWARDS WHITE ARROW ON PEDESTAL', + 8684 : 'UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR', + 8685 : 'UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR', + 8686 : 'UPWARDS WHITE DOUBLE ARROW', + 8687 : 'UPWARDS WHITE DOUBLE ARROW ON PEDESTAL', + 8688 : 'RIGHTWARDS WHITE ARROW FROM WALL', + 8689 : 'NORTH WEST ARROW TO CORNER', + 8690 : 'SOUTH EAST ARROW TO CORNER', + 8691 : 'UP DOWN WHITE ARROW', + 8692 : 'RIGHT ARROW WITH SMALL CIRCLE', + 8693 : 'DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW', + 8694 : 'THREE RIGHTWARDS ARROWS', + 8695 : 'LEFTWARDS ARROW WITH VERTICAL STROKE', + 8696 : 'RIGHTWARDS ARROW WITH VERTICAL STROKE', + 8697 : 'LEFT RIGHT ARROW WITH VERTICAL STROKE', + 8698 : 'LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE', + 8699 : 'RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE', + 8700 : 'LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE', + 8701 : 'LEFTWARDS OPEN-HEADED ARROW', + 8702 : 'RIGHTWARDS OPEN-HEADED ARROW', + 8703 : 'LEFT RIGHT OPEN-HEADED ARROW', + 8704 : 'FOR ALL', + 8705 : 'COMPLEMENT', + 8706 : 'PARTIAL DIFFERENTIAL', + 8707 : 'THERE EXISTS', + 8708 : 'THERE DOES NOT EXIST', + 8709 : 'EMPTY SET', + 8710 : 'INCREMENT', + 8711 : 'NABLA', + 8712 : 'ELEMENT OF', + 8713 : 'NOT AN ELEMENT OF', + 8714 : 'SMALL ELEMENT OF', + 8715 : 'CONTAINS AS MEMBER', + 8716 : 'DOES NOT CONTAIN AS MEMBER', + 8717 : 'SMALL CONTAINS AS MEMBER', + 8718 : 'END OF PROOF', + 8719 : 'N-ARY PRODUCT', + 8720 : 'N-ARY COPRODUCT', + 8721 : 'N-ARY SUMMATION', + 8722 : 'MINUS SIGN', + 8723 : 'MINUS-OR-PLUS SIGN', + 8724 : 'DOT PLUS', + 8725 : 'DIVISION SLASH', + 8726 : 'SET MINUS', + 8727 : 'ASTERISK OPERATOR', + 8728 : 'RING OPERATOR', + 8729 : 'BULLET OPERATOR', + 8730 : 'SQUARE ROOT', + 8731 : 'CUBE ROOT', + 8732 : 'FOURTH ROOT', + 8733 : 'PROPORTIONAL TO', + 8734 : 'INFINITY', + 8735 : 'RIGHT ANGLE', + 8736 : 'ANGLE', + 8737 : 'MEASURED ANGLE', + 8738 : 'SPHERICAL ANGLE', + 8739 : 'DIVIDES', + 8740 : 'DOES NOT DIVIDE', + 8741 : 'PARALLEL TO', + 8742 : 'NOT PARALLEL TO', + 8743 : 'LOGICAL AND', + 8744 : 'LOGICAL OR', + 8745 : 'INTERSECTION', + 8746 : 'UNION', + 8747 : 'INTEGRAL', + 8748 : 'DOUBLE INTEGRAL', + 8749 : 'TRIPLE INTEGRAL', + 8750 : 'CONTOUR INTEGRAL', + 8751 : 'SURFACE INTEGRAL', + 8752 : 'VOLUME INTEGRAL', + 8753 : 'CLOCKWISE INTEGRAL', + 8754 : 'CLOCKWISE CONTOUR INTEGRAL', + 8755 : 'ANTICLOCKWISE CONTOUR INTEGRAL', + 8756 : 'THEREFORE', + 8757 : 'BECAUSE', + 8758 : 'RATIO', + 8759 : 'PROPORTION', + 8760 : 'DOT MINUS', + 8761 : 'EXCESS', + 8762 : 'GEOMETRIC PROPORTION', + 8763 : 'HOMOTHETIC', + 8764 : 'TILDE OPERATOR', + 8765 : 'REVERSED TILDE', + 8766 : 'INVERTED LAZY S', + 8767 : 'SINE WAVE', + 8768 : 'WREATH PRODUCT', + 8769 : 'NOT TILDE', + 8770 : 'MINUS TILDE', + 8771 : 'ASYMPTOTICALLY EQUAL TO', + 8772 : 'NOT ASYMPTOTICALLY EQUAL TO', + 8773 : 'APPROXIMATELY EQUAL TO', + 8774 : 'APPROXIMATELY BUT NOT ACTUALLY EQUAL TO', + 8775 : 'NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO', + 8776 : 'ALMOST EQUAL TO', + 8777 : 'NOT ALMOST EQUAL TO', + 8778 : 'ALMOST EQUAL OR EQUAL TO', + 8779 : 'TRIPLE TILDE', + 8780 : 'ALL EQUAL TO', + 8781 : 'EQUIVALENT TO', + 8782 : 'GEOMETRICALLY EQUIVALENT TO', + 8783 : 'DIFFERENCE BETWEEN', + 8784 : 'APPROACHES THE LIMIT', + 8785 : 'GEOMETRICALLY EQUAL TO', + 8786 : 'APPROXIMATELY EQUAL TO OR THE IMAGE OF', + 8787 : 'IMAGE OF OR APPROXIMATELY EQUAL TO', + 8788 : 'COLON EQUALS', + 8789 : 'EQUALS COLON', + 8790 : 'RING IN EQUAL TO', + 8791 : 'RING EQUAL TO', + 8792 : 'CORRESPONDS TO', + 8793 : 'ESTIMATES', + 8794 : 'EQUIANGULAR TO', + 8795 : 'STAR EQUALS', + 8796 : 'DELTA EQUAL TO', + 8797 : 'EQUAL TO BY DEFINITION', + 8798 : 'MEASURED BY', + 8799 : 'QUESTIONED EQUAL TO', + 8800 : 'NOT EQUAL TO', + 8801 : 'IDENTICAL TO', + 8802 : 'NOT IDENTICAL TO', + 8803 : 'STRICTLY EQUIVALENT TO', + 8804 : 'LESS-THAN OR EQUAL TO', + 8805 : 'GREATER-THAN OR EQUAL TO', + 8806 : 'LESS-THAN OVER EQUAL TO', + 8807 : 'GREATER-THAN OVER EQUAL TO', + 8808 : 'LESS-THAN BUT NOT EQUAL TO', + 8809 : 'GREATER-THAN BUT NOT EQUAL TO', + 8810 : 'MUCH LESS-THAN', + 8811 : 'MUCH GREATER-THAN', + 8812 : 'BETWEEN', + 8813 : 'NOT EQUIVALENT TO', + 8814 : 'NOT LESS-THAN', + 8815 : 'NOT GREATER-THAN', + 8816 : 'NEITHER LESS-THAN NOR EQUAL TO', + 8817 : 'NEITHER GREATER-THAN NOR EQUAL TO', + 8818 : 'LESS-THAN OR EQUIVALENT TO', + 8819 : 'GREATER-THAN OR EQUIVALENT TO', + 8820 : 'NEITHER LESS-THAN NOR EQUIVALENT TO', + 8821 : 'NEITHER GREATER-THAN NOR EQUIVALENT TO', + 8822 : 'LESS-THAN OR GREATER-THAN', + 8823 : 'GREATER-THAN OR LESS-THAN', + 8824 : 'NEITHER LESS-THAN NOR GREATER-THAN', + 8825 : 'NEITHER GREATER-THAN NOR LESS-THAN', + 8826 : 'PRECEDES', + 8827 : 'SUCCEEDS', + 8828 : 'PRECEDES OR EQUAL TO', + 8829 : 'SUCCEEDS OR EQUAL TO', + 8830 : 'PRECEDES OR EQUIVALENT TO', + 8831 : 'SUCCEEDS OR EQUIVALENT TO', + 8832 : 'DOES NOT PRECEDE', + 8833 : 'DOES NOT SUCCEED', + 8834 : 'SUBSET OF', + 8835 : 'SUPERSET OF', + 8836 : 'NOT A SUBSET OF', + 8837 : 'NOT A SUPERSET OF', + 8838 : 'SUBSET OF OR EQUAL TO', + 8839 : 'SUPERSET OF OR EQUAL TO', + 8840 : 'NEITHER A SUBSET OF NOR EQUAL TO', + 8841 : 'NEITHER A SUPERSET OF NOR EQUAL TO', + 8842 : 'SUBSET OF WITH NOT EQUAL TO', + 8843 : 'SUPERSET OF WITH NOT EQUAL TO', + 8844 : 'MULTISET', + 8845 : 'MULTISET MULTIPLICATION', + 8846 : 'MULTISET UNION', + 8847 : 'SQUARE IMAGE OF', + 8848 : 'SQUARE ORIGINAL OF', + 8849 : 'SQUARE IMAGE OF OR EQUAL TO', + 8850 : 'SQUARE ORIGINAL OF OR EQUAL TO', + 8851 : 'SQUARE CAP', + 8852 : 'SQUARE CUP', + 8853 : 'CIRCLED PLUS', + 8854 : 'CIRCLED MINUS', + 8855 : 'CIRCLED TIMES', + 8856 : 'CIRCLED DIVISION SLASH', + 8857 : 'CIRCLED DOT OPERATOR', + 8858 : 'CIRCLED RING OPERATOR', + 8859 : 'CIRCLED ASTERISK OPERATOR', + 8860 : 'CIRCLED EQUALS', + 8861 : 'CIRCLED DASH', + 8862 : 'SQUARED PLUS', + 8863 : 'SQUARED MINUS', + 8864 : 'SQUARED TIMES', + 8865 : 'SQUARED DOT OPERATOR', + 8866 : 'RIGHT TACK', + 8867 : 'LEFT TACK', + 8868 : 'DOWN TACK', + 8869 : 'UP TACK', + 8870 : 'ASSERTION', + 8871 : 'MODELS', + 8872 : 'TRUE', + 8873 : 'FORCES', + 8874 : 'TRIPLE VERTICAL BAR RIGHT TURNSTILE', + 8875 : 'DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE', + 8876 : 'DOES NOT PROVE', + 8877 : 'NOT TRUE', + 8878 : 'DOES NOT FORCE', + 8879 : 'NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE', + 8880 : 'PRECEDES UNDER RELATION', + 8881 : 'SUCCEEDS UNDER RELATION', + 8882 : 'NORMAL SUBGROUP OF', + 8883 : 'CONTAINS AS NORMAL SUBGROUP', + 8884 : 'NORMAL SUBGROUP OF OR EQUAL TO', + 8885 : 'CONTAINS AS NORMAL SUBGROUP OR EQUAL TO', + 8886 : 'ORIGINAL OF', + 8887 : 'IMAGE OF', + 8888 : 'MULTIMAP', + 8889 : 'HERMITIAN CONJUGATE MATRIX', + 8890 : 'INTERCALATE', + 8891 : 'XOR', + 8892 : 'NAND', + 8893 : 'NOR', + 8894 : 'RIGHT ANGLE WITH ARC', + 8895 : 'RIGHT TRIANGLE', + 8896 : 'N-ARY LOGICAL AND', + 8897 : 'N-ARY LOGICAL OR', + 8898 : 'N-ARY INTERSECTION', + 8899 : 'N-ARY UNION', + 8900 : 'DIAMOND OPERATOR', + 8901 : 'DOT OPERATOR', + 8902 : 'STAR OPERATOR', + 8903 : 'DIVISION TIMES', + 8904 : 'BOWTIE', + 8905 : 'LEFT NORMAL FACTOR SEMIDIRECT PRODUCT', + 8906 : 'RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT', + 8907 : 'LEFT SEMIDIRECT PRODUCT', + 8908 : 'RIGHT SEMIDIRECT PRODUCT', + 8909 : 'REVERSED TILDE EQUALS', + 8910 : 'CURLY LOGICAL OR', + 8911 : 'CURLY LOGICAL AND', + 8912 : 'DOUBLE SUBSET', + 8913 : 'DOUBLE SUPERSET', + 8914 : 'DOUBLE INTERSECTION', + 8915 : 'DOUBLE UNION', + 8916 : 'PITCHFORK', + 8917 : 'EQUAL AND PARALLEL TO', + 8918 : 'LESS-THAN WITH DOT', + 8919 : 'GREATER-THAN WITH DOT', + 8920 : 'VERY MUCH LESS-THAN', + 8921 : 'VERY MUCH GREATER-THAN', + 8922 : 'LESS-THAN EQUAL TO OR GREATER-THAN', + 8923 : 'GREATER-THAN EQUAL TO OR LESS-THAN', + 8924 : 'EQUAL TO OR LESS-THAN', + 8925 : 'EQUAL TO OR GREATER-THAN', + 8926 : 'EQUAL TO OR PRECEDES', + 8927 : 'EQUAL TO OR SUCCEEDS', + 8928 : 'DOES NOT PRECEDE OR EQUAL', + 8929 : 'DOES NOT SUCCEED OR EQUAL', + 8930 : 'NOT SQUARE IMAGE OF OR EQUAL TO', + 8931 : 'NOT SQUARE ORIGINAL OF OR EQUAL TO', + 8932 : 'SQUARE IMAGE OF OR NOT EQUAL TO', + 8933 : 'SQUARE ORIGINAL OF OR NOT EQUAL TO', + 8934 : 'LESS-THAN BUT NOT EQUIVALENT TO', + 8935 : 'GREATER-THAN BUT NOT EQUIVALENT TO', + 8936 : 'PRECEDES BUT NOT EQUIVALENT TO', + 8937 : 'SUCCEEDS BUT NOT EQUIVALENT TO', + 8938 : 'NOT NORMAL SUBGROUP OF', + 8939 : 'DOES NOT CONTAIN AS NORMAL SUBGROUP', + 8940 : 'NOT NORMAL SUBGROUP OF OR EQUAL TO', + 8941 : 'DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL', + 8942 : 'VERTICAL ELLIPSIS', + 8943 : 'MIDLINE HORIZONTAL ELLIPSIS', + 8944 : 'UP RIGHT DIAGONAL ELLIPSIS', + 8945 : 'DOWN RIGHT DIAGONAL ELLIPSIS', + 8946 : 'ELEMENT OF WITH LONG HORIZONTAL STROKE', + 8947 : 'ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE', + 8948 : 'SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE', + 8949 : 'ELEMENT OF WITH DOT ABOVE', + 8950 : 'ELEMENT OF WITH OVERBAR', + 8951 : 'SMALL ELEMENT OF WITH OVERBAR', + 8952 : 'ELEMENT OF WITH UNDERBAR', + 8953 : 'ELEMENT OF WITH TWO HORIZONTAL STROKES', + 8954 : 'CONTAINS WITH LONG HORIZONTAL STROKE', + 8955 : 'CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE', + 8956 : 'SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE', + 8957 : 'CONTAINS WITH OVERBAR', + 8958 : 'SMALL CONTAINS WITH OVERBAR', + 8959 : 'Z NOTATION BAG MEMBERSHIP', + 8960 : 'DIAMETER SIGN', + 8961 : 'ELECTRIC ARROW', + 8962 : 'HOUSE', + 8963 : 'UP ARROWHEAD', + 8964 : 'DOWN ARROWHEAD', + 8965 : 'PROJECTIVE', + 8966 : 'PERSPECTIVE', + 8967 : 'WAVY LINE', + 8968 : 'LEFT CEILING', + 8969 : 'RIGHT CEILING', + 8970 : 'LEFT FLOOR', + 8971 : 'RIGHT FLOOR', + 8972 : 'BOTTOM RIGHT CROP', + 8973 : 'BOTTOM LEFT CROP', + 8974 : 'TOP RIGHT CROP', + 8975 : 'TOP LEFT CROP', + 8976 : 'REVERSED NOT SIGN', + 8977 : 'SQUARE LOZENGE', + 8978 : 'ARC', + 8979 : 'SEGMENT', + 8980 : 'SECTOR', + 8981 : 'TELEPHONE RECORDER', + 8982 : 'POSITION INDICATOR', + 8983 : 'VIEWDATA SQUARE', + 8984 : 'PLACE OF INTEREST SIGN', + 8985 : 'TURNED NOT SIGN', + 8986 : 'WATCH', + 8987 : 'HOURGLASS', + 8988 : 'TOP LEFT CORNER', + 8989 : 'TOP RIGHT CORNER', + 8990 : 'BOTTOM LEFT CORNER', + 8991 : 'BOTTOM RIGHT CORNER', + 8992 : 'TOP HALF INTEGRAL', + 8993 : 'BOTTOM HALF INTEGRAL', + 8994 : 'FROWN', + 8995 : 'SMILE', + 8996 : 'UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS', + 8997 : 'OPTION KEY', + 8998 : 'ERASE TO THE RIGHT', + 8999 : 'X IN A RECTANGLE BOX', + 9000 : 'KEYBOARD', + 9001 : 'LEFT-POINTING ANGLE BRACKET', + 9002 : 'RIGHT-POINTING ANGLE BRACKET', + 9003 : 'ERASE TO THE LEFT', + 9004 : 'BENZENE RING', + 9005 : 'CYLINDRICITY', + 9006 : 'ALL AROUND-PROFILE', + 9007 : 'SYMMETRY', + 9008 : 'TOTAL RUNOUT', + 9009 : 'DIMENSION ORIGIN', + 9010 : 'CONICAL TAPER', + 9011 : 'SLOPE', + 9012 : 'COUNTERBORE', + 9013 : 'COUNTERSINK', + 9014 : 'APL FUNCTIONAL SYMBOL I-BEAM', + 9015 : 'APL FUNCTIONAL SYMBOL SQUISH QUAD', + 9016 : 'APL FUNCTIONAL SYMBOL QUAD EQUAL', + 9017 : 'APL FUNCTIONAL SYMBOL QUAD DIVIDE', + 9018 : 'APL FUNCTIONAL SYMBOL QUAD DIAMOND', + 9019 : 'APL FUNCTIONAL SYMBOL QUAD JOT', + 9020 : 'APL FUNCTIONAL SYMBOL QUAD CIRCLE', + 9021 : 'APL FUNCTIONAL SYMBOL CIRCLE STILE', + 9022 : 'APL FUNCTIONAL SYMBOL CIRCLE JOT', + 9023 : 'APL FUNCTIONAL SYMBOL SLASH BAR', + 9024 : 'APL FUNCTIONAL SYMBOL BACKSLASH BAR', + 9025 : 'APL FUNCTIONAL SYMBOL QUAD SLASH', + 9026 : 'APL FUNCTIONAL SYMBOL QUAD BACKSLASH', + 9027 : 'APL FUNCTIONAL SYMBOL QUAD LESS-THAN', + 9028 : 'APL FUNCTIONAL SYMBOL QUAD GREATER-THAN', + 9029 : 'APL FUNCTIONAL SYMBOL LEFTWARDS VANE', + 9030 : 'APL FUNCTIONAL SYMBOL RIGHTWARDS VANE', + 9031 : 'APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW', + 9032 : 'APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW', + 9033 : 'APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH', + 9034 : 'APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR', + 9035 : 'APL FUNCTIONAL SYMBOL DELTA STILE', + 9036 : 'APL FUNCTIONAL SYMBOL QUAD DOWN CARET', + 9037 : 'APL FUNCTIONAL SYMBOL QUAD DELTA', + 9038 : 'APL FUNCTIONAL SYMBOL DOWN TACK JOT', + 9039 : 'APL FUNCTIONAL SYMBOL UPWARDS VANE', + 9040 : 'APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW', + 9041 : 'APL FUNCTIONAL SYMBOL UP TACK OVERBAR', + 9042 : 'APL FUNCTIONAL SYMBOL DEL STILE', + 9043 : 'APL FUNCTIONAL SYMBOL QUAD UP CARET', + 9044 : 'APL FUNCTIONAL SYMBOL QUAD DEL', + 9045 : 'APL FUNCTIONAL SYMBOL UP TACK JOT', + 9046 : 'APL FUNCTIONAL SYMBOL DOWNWARDS VANE', + 9047 : 'APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW', + 9048 : 'APL FUNCTIONAL SYMBOL QUOTE UNDERBAR', + 9049 : 'APL FUNCTIONAL SYMBOL DELTA UNDERBAR', + 9050 : 'APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR', + 9051 : 'APL FUNCTIONAL SYMBOL JOT UNDERBAR', + 9052 : 'APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR', + 9053 : 'APL FUNCTIONAL SYMBOL UP SHOE JOT', + 9054 : 'APL FUNCTIONAL SYMBOL QUOTE QUAD', + 9055 : 'APL FUNCTIONAL SYMBOL CIRCLE STAR', + 9056 : 'APL FUNCTIONAL SYMBOL QUAD COLON', + 9057 : 'APL FUNCTIONAL SYMBOL UP TACK DIAERESIS', + 9058 : 'APL FUNCTIONAL SYMBOL DEL DIAERESIS', + 9059 : 'APL FUNCTIONAL SYMBOL STAR DIAERESIS', + 9060 : 'APL FUNCTIONAL SYMBOL JOT DIAERESIS', + 9061 : 'APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS', + 9062 : 'APL FUNCTIONAL SYMBOL DOWN SHOE STILE', + 9063 : 'APL FUNCTIONAL SYMBOL LEFT SHOE STILE', + 9064 : 'APL FUNCTIONAL SYMBOL TILDE DIAERESIS', + 9065 : 'APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS', + 9066 : 'APL FUNCTIONAL SYMBOL COMMA BAR', + 9067 : 'APL FUNCTIONAL SYMBOL DEL TILDE', + 9068 : 'APL FUNCTIONAL SYMBOL ZILDE', + 9069 : 'APL FUNCTIONAL SYMBOL STILE TILDE', + 9070 : 'APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR', + 9071 : 'APL FUNCTIONAL SYMBOL QUAD NOT EQUAL', + 9072 : 'APL FUNCTIONAL SYMBOL QUAD QUESTION', + 9073 : 'APL FUNCTIONAL SYMBOL DOWN CARET TILDE', + 9074 : 'APL FUNCTIONAL SYMBOL UP CARET TILDE', + 9075 : 'APL FUNCTIONAL SYMBOL IOTA', + 9076 : 'APL FUNCTIONAL SYMBOL RHO', + 9077 : 'APL FUNCTIONAL SYMBOL OMEGA', + 9078 : 'APL FUNCTIONAL SYMBOL ALPHA UNDERBAR', + 9079 : 'APL FUNCTIONAL SYMBOL EPSILON UNDERBAR', + 9080 : 'APL FUNCTIONAL SYMBOL IOTA UNDERBAR', + 9081 : 'APL FUNCTIONAL SYMBOL OMEGA UNDERBAR', + 9082 : 'APL FUNCTIONAL SYMBOL ALPHA', + 9083 : 'NOT CHECK MARK', + 9084 : 'RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW', + 9085 : 'SHOULDERED OPEN BOX', + 9086 : 'BELL SYMBOL', + 9087 : 'VERTICAL LINE WITH MIDDLE DOT', + 9088 : 'INSERTION SYMBOL', + 9089 : 'CONTINUOUS UNDERLINE SYMBOL', + 9090 : 'DISCONTINUOUS UNDERLINE SYMBOL', + 9091 : 'EMPHASIS SYMBOL', + 9092 : 'COMPOSITION SYMBOL', + 9093 : 'WHITE SQUARE WITH CENTRE VERTICAL LINE', + 9094 : 'ENTER SYMBOL', + 9095 : 'ALTERNATIVE KEY SYMBOL', + 9096 : 'HELM SYMBOL', + 9097 : 'CIRCLED HORIZONTAL BAR WITH NOTCH', + 9098 : 'CIRCLED TRIANGLE DOWN', + 9099 : 'BROKEN CIRCLE WITH NORTHWEST ARROW', + 9100 : 'UNDO SYMBOL', + 9101 : 'MONOSTABLE SYMBOL', + 9102 : 'HYSTERESIS SYMBOL', + 9103 : 'OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL', + 9104 : 'OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL', + 9105 : 'PASSIVE-PULL-DOWN-OUTPUT SYMBOL', + 9106 : 'PASSIVE-PULL-UP-OUTPUT SYMBOL', + 9107 : 'DIRECT CURRENT SYMBOL FORM TWO', + 9108 : 'SOFTWARE-FUNCTION SYMBOL', + 9109 : 'APL FUNCTIONAL SYMBOL QUAD', + 9110 : 'DECIMAL SEPARATOR KEY SYMBOL', + 9111 : 'PREVIOUS PAGE', + 9112 : 'NEXT PAGE', + 9113 : 'PRINT SCREEN SYMBOL', + 9114 : 'CLEAR SCREEN SYMBOL', + 9115 : 'LEFT PARENTHESIS UPPER HOOK', + 9116 : 'LEFT PARENTHESIS EXTENSION', + 9117 : 'LEFT PARENTHESIS LOWER HOOK', + 9118 : 'RIGHT PARENTHESIS UPPER HOOK', + 9119 : 'RIGHT PARENTHESIS EXTENSION', + 9120 : 'RIGHT PARENTHESIS LOWER HOOK', + 9121 : 'LEFT SQUARE BRACKET UPPER CORNER', + 9122 : 'LEFT SQUARE BRACKET EXTENSION', + 9123 : 'LEFT SQUARE BRACKET LOWER CORNER', + 9124 : 'RIGHT SQUARE BRACKET UPPER CORNER', + 9125 : 'RIGHT SQUARE BRACKET EXTENSION', + 9126 : 'RIGHT SQUARE BRACKET LOWER CORNER', + 9127 : 'LEFT CURLY BRACKET UPPER HOOK', + 9128 : 'LEFT CURLY BRACKET MIDDLE PIECE', + 9129 : 'LEFT CURLY BRACKET LOWER HOOK', + 9130 : 'CURLY BRACKET EXTENSION', + 9131 : 'RIGHT CURLY BRACKET UPPER HOOK', + 9132 : 'RIGHT CURLY BRACKET MIDDLE PIECE', + 9133 : 'RIGHT CURLY BRACKET LOWER HOOK', + 9134 : 'INTEGRAL EXTENSION', + 9135 : 'HORIZONTAL LINE EXTENSION', + 9136 : 'UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION', + 9137 : 'UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION', + 9138 : 'SUMMATION TOP', + 9139 : 'SUMMATION BOTTOM', + 9140 : 'TOP SQUARE BRACKET', + 9141 : 'BOTTOM SQUARE BRACKET', + 9142 : 'BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET', + 9143 : 'RADICAL SYMBOL BOTTOM', + 9144 : 'LEFT VERTICAL BOX LINE', + 9145 : 'RIGHT VERTICAL BOX LINE', + 9146 : 'HORIZONTAL SCAN LINE-1', + 9147 : 'HORIZONTAL SCAN LINE-3', + 9148 : 'HORIZONTAL SCAN LINE-7', + 9149 : 'HORIZONTAL SCAN LINE-9', + 9150 : 'DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT', + 9151 : 'DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT', + 9152 : 'DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE', + 9153 : 'DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE', + 9154 : 'DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE', + 9155 : 'DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE', + 9156 : 'DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE', + 9157 : 'DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE', + 9158 : 'DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE', + 9159 : 'DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE', + 9160 : 'DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE', + 9161 : 'DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL', + 9162 : 'DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL', + 9163 : 'DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT', + 9164 : 'DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT', + 9165 : 'SQUARE FOOT', + 9166 : 'RETURN SYMBOL', + 9216 : 'SYMBOL FOR NULL', + 9217 : 'SYMBOL FOR START OF HEADING', + 9218 : 'SYMBOL FOR START OF TEXT', + 9219 : 'SYMBOL FOR END OF TEXT', + 9220 : 'SYMBOL FOR END OF TRANSMISSION', + 9221 : 'SYMBOL FOR ENQUIRY', + 9222 : 'SYMBOL FOR ACKNOWLEDGE', + 9223 : 'SYMBOL FOR BELL', + 9224 : 'SYMBOL FOR BACKSPACE', + 9225 : 'SYMBOL FOR HORIZONTAL TABULATION', + 9226 : 'SYMBOL FOR LINE FEED', + 9227 : 'SYMBOL FOR VERTICAL TABULATION', + 9228 : 'SYMBOL FOR FORM FEED', + 9229 : 'SYMBOL FOR CARRIAGE RETURN', + 9230 : 'SYMBOL FOR SHIFT OUT', + 9231 : 'SYMBOL FOR SHIFT IN', + 9232 : 'SYMBOL FOR DATA LINK ESCAPE', + 9233 : 'SYMBOL FOR DEVICE CONTROL ONE', + 9234 : 'SYMBOL FOR DEVICE CONTROL TWO', + 9235 : 'SYMBOL FOR DEVICE CONTROL THREE', + 9236 : 'SYMBOL FOR DEVICE CONTROL FOUR', + 9237 : 'SYMBOL FOR NEGATIVE ACKNOWLEDGE', + 9238 : 'SYMBOL FOR SYNCHRONOUS IDLE', + 9239 : 'SYMBOL FOR END OF TRANSMISSION BLOCK', + 9240 : 'SYMBOL FOR CANCEL', + 9241 : 'SYMBOL FOR END OF MEDIUM', + 9242 : 'SYMBOL FOR SUBSTITUTE', + 9243 : 'SYMBOL FOR ESCAPE', + 9244 : 'SYMBOL FOR FILE SEPARATOR', + 9245 : 'SYMBOL FOR GROUP SEPARATOR', + 9246 : 'SYMBOL FOR RECORD SEPARATOR', + 9247 : 'SYMBOL FOR UNIT SEPARATOR', + 9248 : 'SYMBOL FOR SPACE', + 9249 : 'SYMBOL FOR DELETE', + 9250 : 'BLANK SYMBOL', + 9251 : 'OPEN BOX', + 9252 : 'SYMBOL FOR NEWLINE', + 9253 : 'SYMBOL FOR DELETE FORM TWO', + 9254 : 'SYMBOL FOR SUBSTITUTE FORM TWO', + 9280 : 'OCR HOOK', + 9281 : 'OCR CHAIR', + 9282 : 'OCR FORK', + 9283 : 'OCR INVERTED FORK', + 9284 : 'OCR BELT BUCKLE', + 9285 : 'OCR BOW TIE', + 9286 : 'OCR BRANCH BANK IDENTIFICATION', + 9287 : 'OCR AMOUNT OF CHECK', + 9288 : 'OCR DASH', + 9289 : 'OCR CUSTOMER ACCOUNT NUMBER', + 9290 : 'OCR DOUBLE BACKSLASH', + 9312 : 'CIRCLED DIGIT ONE', + 9313 : 'CIRCLED DIGIT TWO', + 9314 : 'CIRCLED DIGIT THREE', + 9315 : 'CIRCLED DIGIT FOUR', + 9316 : 'CIRCLED DIGIT FIVE', + 9317 : 'CIRCLED DIGIT SIX', + 9318 : 'CIRCLED DIGIT SEVEN', + 9319 : 'CIRCLED DIGIT EIGHT', + 9320 : 'CIRCLED DIGIT NINE', + 9321 : 'CIRCLED NUMBER TEN', + 9322 : 'CIRCLED NUMBER ELEVEN', + 9323 : 'CIRCLED NUMBER TWELVE', + 9324 : 'CIRCLED NUMBER THIRTEEN', + 9325 : 'CIRCLED NUMBER FOURTEEN', + 9326 : 'CIRCLED NUMBER FIFTEEN', + 9327 : 'CIRCLED NUMBER SIXTEEN', + 9328 : 'CIRCLED NUMBER SEVENTEEN', + 9329 : 'CIRCLED NUMBER EIGHTEEN', + 9330 : 'CIRCLED NUMBER NINETEEN', + 9331 : 'CIRCLED NUMBER TWENTY', + 9332 : 'PARENTHESIZED DIGIT ONE', + 9333 : 'PARENTHESIZED DIGIT TWO', + 9334 : 'PARENTHESIZED DIGIT THREE', + 9335 : 'PARENTHESIZED DIGIT FOUR', + 9336 : 'PARENTHESIZED DIGIT FIVE', + 9337 : 'PARENTHESIZED DIGIT SIX', + 9338 : 'PARENTHESIZED DIGIT SEVEN', + 9339 : 'PARENTHESIZED DIGIT EIGHT', + 9340 : 'PARENTHESIZED DIGIT NINE', + 9341 : 'PARENTHESIZED NUMBER TEN', + 9342 : 'PARENTHESIZED NUMBER ELEVEN', + 9343 : 'PARENTHESIZED NUMBER TWELVE', + 9344 : 'PARENTHESIZED NUMBER THIRTEEN', + 9345 : 'PARENTHESIZED NUMBER FOURTEEN', + 9346 : 'PARENTHESIZED NUMBER FIFTEEN', + 9347 : 'PARENTHESIZED NUMBER SIXTEEN', + 9348 : 'PARENTHESIZED NUMBER SEVENTEEN', + 9349 : 'PARENTHESIZED NUMBER EIGHTEEN', + 9350 : 'PARENTHESIZED NUMBER NINETEEN', + 9351 : 'PARENTHESIZED NUMBER TWENTY', + 9352 : 'DIGIT ONE FULL STOP', + 9353 : 'DIGIT TWO FULL STOP', + 9354 : 'DIGIT THREE FULL STOP', + 9355 : 'DIGIT FOUR FULL STOP', + 9356 : 'DIGIT FIVE FULL STOP', + 9357 : 'DIGIT SIX FULL STOP', + 9358 : 'DIGIT SEVEN FULL STOP', + 9359 : 'DIGIT EIGHT FULL STOP', + 9360 : 'DIGIT NINE FULL STOP', + 9361 : 'NUMBER TEN FULL STOP', + 9362 : 'NUMBER ELEVEN FULL STOP', + 9363 : 'NUMBER TWELVE FULL STOP', + 9364 : 'NUMBER THIRTEEN FULL STOP', + 9365 : 'NUMBER FOURTEEN FULL STOP', + 9366 : 'NUMBER FIFTEEN FULL STOP', + 9367 : 'NUMBER SIXTEEN FULL STOP', + 9368 : 'NUMBER SEVENTEEN FULL STOP', + 9369 : 'NUMBER EIGHTEEN FULL STOP', + 9370 : 'NUMBER NINETEEN FULL STOP', + 9371 : 'NUMBER TWENTY FULL STOP', + 9372 : 'PARENTHESIZED LATIN SMALL LETTER A', + 9373 : 'PARENTHESIZED LATIN SMALL LETTER B', + 9374 : 'PARENTHESIZED LATIN SMALL LETTER C', + 9375 : 'PARENTHESIZED LATIN SMALL LETTER D', + 9376 : 'PARENTHESIZED LATIN SMALL LETTER E', + 9377 : 'PARENTHESIZED LATIN SMALL LETTER F', + 9378 : 'PARENTHESIZED LATIN SMALL LETTER G', + 9379 : 'PARENTHESIZED LATIN SMALL LETTER H', + 9380 : 'PARENTHESIZED LATIN SMALL LETTER I', + 9381 : 'PARENTHESIZED LATIN SMALL LETTER J', + 9382 : 'PARENTHESIZED LATIN SMALL LETTER K', + 9383 : 'PARENTHESIZED LATIN SMALL LETTER L', + 9384 : 'PARENTHESIZED LATIN SMALL LETTER M', + 9385 : 'PARENTHESIZED LATIN SMALL LETTER N', + 9386 : 'PARENTHESIZED LATIN SMALL LETTER O', + 9387 : 'PARENTHESIZED LATIN SMALL LETTER P', + 9388 : 'PARENTHESIZED LATIN SMALL LETTER Q', + 9389 : 'PARENTHESIZED LATIN SMALL LETTER R', + 9390 : 'PARENTHESIZED LATIN SMALL LETTER S', + 9391 : 'PARENTHESIZED LATIN SMALL LETTER T', + 9392 : 'PARENTHESIZED LATIN SMALL LETTER U', + 9393 : 'PARENTHESIZED LATIN SMALL LETTER V', + 9394 : 'PARENTHESIZED LATIN SMALL LETTER W', + 9395 : 'PARENTHESIZED LATIN SMALL LETTER X', + 9396 : 'PARENTHESIZED LATIN SMALL LETTER Y', + 9397 : 'PARENTHESIZED LATIN SMALL LETTER Z', + 9398 : 'CIRCLED LATIN CAPITAL LETTER A', + 9399 : 'CIRCLED LATIN CAPITAL LETTER B', + 9400 : 'CIRCLED LATIN CAPITAL LETTER C', + 9401 : 'CIRCLED LATIN CAPITAL LETTER D', + 9402 : 'CIRCLED LATIN CAPITAL LETTER E', + 9403 : 'CIRCLED LATIN CAPITAL LETTER F', + 9404 : 'CIRCLED LATIN CAPITAL LETTER G', + 9405 : 'CIRCLED LATIN CAPITAL LETTER H', + 9406 : 'CIRCLED LATIN CAPITAL LETTER I', + 9407 : 'CIRCLED LATIN CAPITAL LETTER J', + 9408 : 'CIRCLED LATIN CAPITAL LETTER K', + 9409 : 'CIRCLED LATIN CAPITAL LETTER L', + 9410 : 'CIRCLED LATIN CAPITAL LETTER M', + 9411 : 'CIRCLED LATIN CAPITAL LETTER N', + 9412 : 'CIRCLED LATIN CAPITAL LETTER O', + 9413 : 'CIRCLED LATIN CAPITAL LETTER P', + 9414 : 'CIRCLED LATIN CAPITAL LETTER Q', + 9415 : 'CIRCLED LATIN CAPITAL LETTER R', + 9416 : 'CIRCLED LATIN CAPITAL LETTER S', + 9417 : 'CIRCLED LATIN CAPITAL LETTER T', + 9418 : 'CIRCLED LATIN CAPITAL LETTER U', + 9419 : 'CIRCLED LATIN CAPITAL LETTER V', + 9420 : 'CIRCLED LATIN CAPITAL LETTER W', + 9421 : 'CIRCLED LATIN CAPITAL LETTER X', + 9422 : 'CIRCLED LATIN CAPITAL LETTER Y', + 9423 : 'CIRCLED LATIN CAPITAL LETTER Z', + 9424 : 'CIRCLED LATIN SMALL LETTER A', + 9425 : 'CIRCLED LATIN SMALL LETTER B', + 9426 : 'CIRCLED LATIN SMALL LETTER C', + 9427 : 'CIRCLED LATIN SMALL LETTER D', + 9428 : 'CIRCLED LATIN SMALL LETTER E', + 9429 : 'CIRCLED LATIN SMALL LETTER F', + 9430 : 'CIRCLED LATIN SMALL LETTER G', + 9431 : 'CIRCLED LATIN SMALL LETTER H', + 9432 : 'CIRCLED LATIN SMALL LETTER I', + 9433 : 'CIRCLED LATIN SMALL LETTER J', + 9434 : 'CIRCLED LATIN SMALL LETTER K', + 9435 : 'CIRCLED LATIN SMALL LETTER L', + 9436 : 'CIRCLED LATIN SMALL LETTER M', + 9437 : 'CIRCLED LATIN SMALL LETTER N', + 9438 : 'CIRCLED LATIN SMALL LETTER O', + 9439 : 'CIRCLED LATIN SMALL LETTER P', + 9440 : 'CIRCLED LATIN SMALL LETTER Q', + 9441 : 'CIRCLED LATIN SMALL LETTER R', + 9442 : 'CIRCLED LATIN SMALL LETTER S', + 9443 : 'CIRCLED LATIN SMALL LETTER T', + 9444 : 'CIRCLED LATIN SMALL LETTER U', + 9445 : 'CIRCLED LATIN SMALL LETTER V', + 9446 : 'CIRCLED LATIN SMALL LETTER W', + 9447 : 'CIRCLED LATIN SMALL LETTER X', + 9448 : 'CIRCLED LATIN SMALL LETTER Y', + 9449 : 'CIRCLED LATIN SMALL LETTER Z', + 9450 : 'CIRCLED DIGIT ZERO', + 9451 : 'NEGATIVE CIRCLED NUMBER ELEVEN', + 9452 : 'NEGATIVE CIRCLED NUMBER TWELVE', + 9453 : 'NEGATIVE CIRCLED NUMBER THIRTEEN', + 9454 : 'NEGATIVE CIRCLED NUMBER FOURTEEN', + 9455 : 'NEGATIVE CIRCLED NUMBER FIFTEEN', + 9456 : 'NEGATIVE CIRCLED NUMBER SIXTEEN', + 9457 : 'NEGATIVE CIRCLED NUMBER SEVENTEEN', + 9458 : 'NEGATIVE CIRCLED NUMBER EIGHTEEN', + 9459 : 'NEGATIVE CIRCLED NUMBER NINETEEN', + 9460 : 'NEGATIVE CIRCLED NUMBER TWENTY', + 9461 : 'DOUBLE CIRCLED DIGIT ONE', + 9462 : 'DOUBLE CIRCLED DIGIT TWO', + 9463 : 'DOUBLE CIRCLED DIGIT THREE', + 9464 : 'DOUBLE CIRCLED DIGIT FOUR', + 9465 : 'DOUBLE CIRCLED DIGIT FIVE', + 9466 : 'DOUBLE CIRCLED DIGIT SIX', + 9467 : 'DOUBLE CIRCLED DIGIT SEVEN', + 9468 : 'DOUBLE CIRCLED DIGIT EIGHT', + 9469 : 'DOUBLE CIRCLED DIGIT NINE', + 9470 : 'DOUBLE CIRCLED NUMBER TEN', + 9472 : 'BOX DRAWINGS LIGHT HORIZONTAL', + 9473 : 'BOX DRAWINGS HEAVY HORIZONTAL', + 9474 : 'BOX DRAWINGS LIGHT VERTICAL', + 9475 : 'BOX DRAWINGS HEAVY VERTICAL', + 9476 : 'BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL', + 9477 : 'BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL', + 9478 : 'BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL', + 9479 : 'BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL', + 9480 : 'BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL', + 9481 : 'BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL', + 9482 : 'BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL', + 9483 : 'BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL', + 9484 : 'BOX DRAWINGS LIGHT DOWN AND RIGHT', + 9485 : 'BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY', + 9486 : 'BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT', + 9487 : 'BOX DRAWINGS HEAVY DOWN AND RIGHT', + 9488 : 'BOX DRAWINGS LIGHT DOWN AND LEFT', + 9489 : 'BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY', + 9490 : 'BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT', + 9491 : 'BOX DRAWINGS HEAVY DOWN AND LEFT', + 9492 : 'BOX DRAWINGS LIGHT UP AND RIGHT', + 9493 : 'BOX DRAWINGS UP LIGHT AND RIGHT HEAVY', + 9494 : 'BOX DRAWINGS UP HEAVY AND RIGHT LIGHT', + 9495 : 'BOX DRAWINGS HEAVY UP AND RIGHT', + 9496 : 'BOX DRAWINGS LIGHT UP AND LEFT', + 9497 : 'BOX DRAWINGS UP LIGHT AND LEFT HEAVY', + 9498 : 'BOX DRAWINGS UP HEAVY AND LEFT LIGHT', + 9499 : 'BOX DRAWINGS HEAVY UP AND LEFT', + 9500 : 'BOX DRAWINGS LIGHT VERTICAL AND RIGHT', + 9501 : 'BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY', + 9502 : 'BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT', + 9503 : 'BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT', + 9504 : 'BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT', + 9505 : 'BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY', + 9506 : 'BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY', + 9507 : 'BOX DRAWINGS HEAVY VERTICAL AND RIGHT', + 9508 : 'BOX DRAWINGS LIGHT VERTICAL AND LEFT', + 9509 : 'BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY', + 9510 : 'BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT', + 9511 : 'BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT', + 9512 : 'BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT', + 9513 : 'BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY', + 9514 : 'BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY', + 9515 : 'BOX DRAWINGS HEAVY VERTICAL AND LEFT', + 9516 : 'BOX DRAWINGS LIGHT DOWN AND HORIZONTAL', + 9517 : 'BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT', + 9518 : 'BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT', + 9519 : 'BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY', + 9520 : 'BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT', + 9521 : 'BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY', + 9522 : 'BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY', + 9523 : 'BOX DRAWINGS HEAVY DOWN AND HORIZONTAL', + 9524 : 'BOX DRAWINGS LIGHT UP AND HORIZONTAL', + 9525 : 'BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT', + 9526 : 'BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT', + 9527 : 'BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY', + 9528 : 'BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT', + 9529 : 'BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY', + 9530 : 'BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY', + 9531 : 'BOX DRAWINGS HEAVY UP AND HORIZONTAL', + 9532 : 'BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL', + 9533 : 'BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT', + 9534 : 'BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT', + 9535 : 'BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY', + 9536 : 'BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT', + 9537 : 'BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT', + 9538 : 'BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT', + 9539 : 'BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT', + 9540 : 'BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT', + 9541 : 'BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT', + 9542 : 'BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT', + 9543 : 'BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY', + 9544 : 'BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY', + 9545 : 'BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY', + 9546 : 'BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY', + 9547 : 'BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL', + 9548 : 'BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL', + 9549 : 'BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL', + 9550 : 'BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL', + 9551 : 'BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL', + 9552 : 'BOX DRAWINGS DOUBLE HORIZONTAL', + 9553 : 'BOX DRAWINGS DOUBLE VERTICAL', + 9554 : 'BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE', + 9555 : 'BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE', + 9556 : 'BOX DRAWINGS DOUBLE DOWN AND RIGHT', + 9557 : 'BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE', + 9558 : 'BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE', + 9559 : 'BOX DRAWINGS DOUBLE DOWN AND LEFT', + 9560 : 'BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE', + 9561 : 'BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE', + 9562 : 'BOX DRAWINGS DOUBLE UP AND RIGHT', + 9563 : 'BOX DRAWINGS UP SINGLE AND LEFT DOUBLE', + 9564 : 'BOX DRAWINGS UP DOUBLE AND LEFT SINGLE', + 9565 : 'BOX DRAWINGS DOUBLE UP AND LEFT', + 9566 : 'BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE', + 9567 : 'BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE', + 9568 : 'BOX DRAWINGS DOUBLE VERTICAL AND RIGHT', + 9569 : 'BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE', + 9570 : 'BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE', + 9571 : 'BOX DRAWINGS DOUBLE VERTICAL AND LEFT', + 9572 : 'BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE', + 9573 : 'BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE', + 9574 : 'BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL', + 9575 : 'BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE', + 9576 : 'BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE', + 9577 : 'BOX DRAWINGS DOUBLE UP AND HORIZONTAL', + 9578 : 'BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE', + 9579 : 'BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE', + 9580 : 'BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL', + 9581 : 'BOX DRAWINGS LIGHT ARC DOWN AND RIGHT', + 9582 : 'BOX DRAWINGS LIGHT ARC DOWN AND LEFT', + 9583 : 'BOX DRAWINGS LIGHT ARC UP AND LEFT', + 9584 : 'BOX DRAWINGS LIGHT ARC UP AND RIGHT', + 9585 : 'BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT', + 9586 : 'BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT', + 9587 : 'BOX DRAWINGS LIGHT DIAGONAL CROSS', + 9588 : 'BOX DRAWINGS LIGHT LEFT', + 9589 : 'BOX DRAWINGS LIGHT UP', + 9590 : 'BOX DRAWINGS LIGHT RIGHT', + 9591 : 'BOX DRAWINGS LIGHT DOWN', + 9592 : 'BOX DRAWINGS HEAVY LEFT', + 9593 : 'BOX DRAWINGS HEAVY UP', + 9594 : 'BOX DRAWINGS HEAVY RIGHT', + 9595 : 'BOX DRAWINGS HEAVY DOWN', + 9596 : 'BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT', + 9597 : 'BOX DRAWINGS LIGHT UP AND HEAVY DOWN', + 9598 : 'BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT', + 9599 : 'BOX DRAWINGS HEAVY UP AND LIGHT DOWN', + 9600 : 'UPPER HALF BLOCK', + 9601 : 'LOWER ONE EIGHTH BLOCK', + 9602 : 'LOWER ONE QUARTER BLOCK', + 9603 : 'LOWER THREE EIGHTHS BLOCK', + 9604 : 'LOWER HALF BLOCK', + 9605 : 'LOWER FIVE EIGHTHS BLOCK', + 9606 : 'LOWER THREE QUARTERS BLOCK', + 9607 : 'LOWER SEVEN EIGHTHS BLOCK', + 9608 : 'FULL BLOCK', + 9609 : 'LEFT SEVEN EIGHTHS BLOCK', + 9610 : 'LEFT THREE QUARTERS BLOCK', + 9611 : 'LEFT FIVE EIGHTHS BLOCK', + 9612 : 'LEFT HALF BLOCK', + 9613 : 'LEFT THREE EIGHTHS BLOCK', + 9614 : 'LEFT ONE QUARTER BLOCK', + 9615 : 'LEFT ONE EIGHTH BLOCK', + 9616 : 'RIGHT HALF BLOCK', + 9617 : 'LIGHT SHADE', + 9618 : 'MEDIUM SHADE', + 9619 : 'DARK SHADE', + 9620 : 'UPPER ONE EIGHTH BLOCK', + 9621 : 'RIGHT ONE EIGHTH BLOCK', + 9622 : 'QUADRANT LOWER LEFT', + 9623 : 'QUADRANT LOWER RIGHT', + 9624 : 'QUADRANT UPPER LEFT', + 9625 : 'QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT', + 9626 : 'QUADRANT UPPER LEFT AND LOWER RIGHT', + 9627 : 'QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT', + 9628 : 'QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT', + 9629 : 'QUADRANT UPPER RIGHT', + 9630 : 'QUADRANT UPPER RIGHT AND LOWER LEFT', + 9631 : 'QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT', + 9632 : 'BLACK SQUARE', + 9633 : 'WHITE SQUARE', + 9634 : 'WHITE SQUARE WITH ROUNDED CORNERS', + 9635 : 'WHITE SQUARE CONTAINING BLACK SMALL SQUARE', + 9636 : 'SQUARE WITH HORIZONTAL FILL', + 9637 : 'SQUARE WITH VERTICAL FILL', + 9638 : 'SQUARE WITH ORTHOGONAL CROSSHATCH FILL', + 9639 : 'SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL', + 9640 : 'SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL', + 9641 : 'SQUARE WITH DIAGONAL CROSSHATCH FILL', + 9642 : 'BLACK SMALL SQUARE', + 9643 : 'WHITE SMALL SQUARE', + 9644 : 'BLACK RECTANGLE', + 9645 : 'WHITE RECTANGLE', + 9646 : 'BLACK VERTICAL RECTANGLE', + 9647 : 'WHITE VERTICAL RECTANGLE', + 9648 : 'BLACK PARALLELOGRAM', + 9649 : 'WHITE PARALLELOGRAM', + 9650 : 'BLACK UP-POINTING TRIANGLE', + 9651 : 'WHITE UP-POINTING TRIANGLE', + 9652 : 'BLACK UP-POINTING SMALL TRIANGLE', + 9653 : 'WHITE UP-POINTING SMALL TRIANGLE', + 9654 : 'BLACK RIGHT-POINTING TRIANGLE', + 9655 : 'WHITE RIGHT-POINTING TRIANGLE', + 9656 : 'BLACK RIGHT-POINTING SMALL TRIANGLE', + 9657 : 'WHITE RIGHT-POINTING SMALL TRIANGLE', + 9658 : 'BLACK RIGHT-POINTING POINTER', + 9659 : 'WHITE RIGHT-POINTING POINTER', + 9660 : 'BLACK DOWN-POINTING TRIANGLE', + 9661 : 'WHITE DOWN-POINTING TRIANGLE', + 9662 : 'BLACK DOWN-POINTING SMALL TRIANGLE', + 9663 : 'WHITE DOWN-POINTING SMALL TRIANGLE', + 9664 : 'BLACK LEFT-POINTING TRIANGLE', + 9665 : 'WHITE LEFT-POINTING TRIANGLE', + 9666 : 'BLACK LEFT-POINTING SMALL TRIANGLE', + 9667 : 'WHITE LEFT-POINTING SMALL TRIANGLE', + 9668 : 'BLACK LEFT-POINTING POINTER', + 9669 : 'WHITE LEFT-POINTING POINTER', + 9670 : 'BLACK DIAMOND', + 9671 : 'WHITE DIAMOND', + 9672 : 'WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND', + 9673 : 'FISHEYE', + 9674 : 'LOZENGE', + 9675 : 'WHITE CIRCLE', + 9676 : 'DOTTED CIRCLE', + 9677 : 'CIRCLE WITH VERTICAL FILL', + 9678 : 'BULLSEYE', + 9679 : 'BLACK CIRCLE', + 9680 : 'CIRCLE WITH LEFT HALF BLACK', + 9681 : 'CIRCLE WITH RIGHT HALF BLACK', + 9682 : 'CIRCLE WITH LOWER HALF BLACK', + 9683 : 'CIRCLE WITH UPPER HALF BLACK', + 9684 : 'CIRCLE WITH UPPER RIGHT QUADRANT BLACK', + 9685 : 'CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK', + 9686 : 'LEFT HALF BLACK CIRCLE', + 9687 : 'RIGHT HALF BLACK CIRCLE', + 9688 : 'INVERSE BULLET', + 9689 : 'INVERSE WHITE CIRCLE', + 9690 : 'UPPER HALF INVERSE WHITE CIRCLE', + 9691 : 'LOWER HALF INVERSE WHITE CIRCLE', + 9692 : 'UPPER LEFT QUADRANT CIRCULAR ARC', + 9693 : 'UPPER RIGHT QUADRANT CIRCULAR ARC', + 9694 : 'LOWER RIGHT QUADRANT CIRCULAR ARC', + 9695 : 'LOWER LEFT QUADRANT CIRCULAR ARC', + 9696 : 'UPPER HALF CIRCLE', + 9697 : 'LOWER HALF CIRCLE', + 9698 : 'BLACK LOWER RIGHT TRIANGLE', + 9699 : 'BLACK LOWER LEFT TRIANGLE', + 9700 : 'BLACK UPPER LEFT TRIANGLE', + 9701 : 'BLACK UPPER RIGHT TRIANGLE', + 9702 : 'WHITE BULLET', + 9703 : 'SQUARE WITH LEFT HALF BLACK', + 9704 : 'SQUARE WITH RIGHT HALF BLACK', + 9705 : 'SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK', + 9706 : 'SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK', + 9707 : 'WHITE SQUARE WITH VERTICAL BISECTING LINE', + 9708 : 'WHITE UP-POINTING TRIANGLE WITH DOT', + 9709 : 'UP-POINTING TRIANGLE WITH LEFT HALF BLACK', + 9710 : 'UP-POINTING TRIANGLE WITH RIGHT HALF BLACK', + 9711 : 'LARGE CIRCLE', + 9712 : 'WHITE SQUARE WITH UPPER LEFT QUADRANT', + 9713 : 'WHITE SQUARE WITH LOWER LEFT QUADRANT', + 9714 : 'WHITE SQUARE WITH LOWER RIGHT QUADRANT', + 9715 : 'WHITE SQUARE WITH UPPER RIGHT QUADRANT', + 9716 : 'WHITE CIRCLE WITH UPPER LEFT QUADRANT', + 9717 : 'WHITE CIRCLE WITH LOWER LEFT QUADRANT', + 9718 : 'WHITE CIRCLE WITH LOWER RIGHT QUADRANT', + 9719 : 'WHITE CIRCLE WITH UPPER RIGHT QUADRANT', + 9720 : 'UPPER LEFT TRIANGLE', + 9721 : 'UPPER RIGHT TRIANGLE', + 9722 : 'LOWER LEFT TRIANGLE', + 9723 : 'WHITE MEDIUM SQUARE', + 9724 : 'BLACK MEDIUM SQUARE', + 9725 : 'WHITE MEDIUM SMALL SQUARE', + 9726 : 'BLACK MEDIUM SMALL SQUARE', + 9727 : 'LOWER RIGHT TRIANGLE', + 9728 : 'BLACK SUN WITH RAYS', + 9729 : 'CLOUD', + 9730 : 'UMBRELLA', + 9731 : 'SNOWMAN', + 9732 : 'COMET', + 9733 : 'BLACK STAR', + 9734 : 'WHITE STAR', + 9735 : 'LIGHTNING', + 9736 : 'THUNDERSTORM', + 9737 : 'SUN', + 9738 : 'ASCENDING NODE', + 9739 : 'DESCENDING NODE', + 9740 : 'CONJUNCTION', + 9741 : 'OPPOSITION', + 9742 : 'BLACK TELEPHONE', + 9743 : 'WHITE TELEPHONE', + 9744 : 'BALLOT BOX', + 9745 : 'BALLOT BOX WITH CHECK', + 9746 : 'BALLOT BOX WITH X', + 9747 : 'SALTIRE', + 9750 : 'WHITE SHOGI PIECE', + 9751 : 'BLACK SHOGI PIECE', + 9753 : 'REVERSED ROTATED FLORAL HEART BULLET', + 9754 : 'BLACK LEFT POINTING INDEX', + 9755 : 'BLACK RIGHT POINTING INDEX', + 9756 : 'WHITE LEFT POINTING INDEX', + 9757 : 'WHITE UP POINTING INDEX', + 9758 : 'WHITE RIGHT POINTING INDEX', + 9759 : 'WHITE DOWN POINTING INDEX', + 9760 : 'SKULL AND CROSSBONES', + 9761 : 'CAUTION SIGN', + 9762 : 'RADIOACTIVE SIGN', + 9763 : 'BIOHAZARD SIGN', + 9764 : 'CADUCEUS', + 9765 : 'ANKH', + 9766 : 'ORTHODOX CROSS', + 9767 : 'CHI RHO', + 9768 : 'CROSS OF LORRAINE', + 9769 : 'CROSS OF JERUSALEM', + 9770 : 'STAR AND CRESCENT', + 9771 : 'FARSI SYMBOL', + 9772 : 'ADI SHAKTI', + 9773 : 'HAMMER AND SICKLE', + 9774 : 'PEACE SYMBOL', + 9775 : 'YIN YANG', + 9776 : 'TRIGRAM FOR HEAVEN', + 9777 : 'TRIGRAM FOR LAKE', + 9778 : 'TRIGRAM FOR FIRE', + 9779 : 'TRIGRAM FOR THUNDER', + 9780 : 'TRIGRAM FOR WIND', + 9781 : 'TRIGRAM FOR WATER', + 9782 : 'TRIGRAM FOR MOUNTAIN', + 9783 : 'TRIGRAM FOR EARTH', + 9784 : 'WHEEL OF DHARMA', + 9785 : 'WHITE FROWNING FACE', + 9786 : 'WHITE SMILING FACE', + 9787 : 'BLACK SMILING FACE', + 9788 : 'WHITE SUN WITH RAYS', + 9789 : 'FIRST QUARTER MOON', + 9790 : 'LAST QUARTER MOON', + 9791 : 'MERCURY', + 9792 : 'FEMALE SIGN', + 9793 : 'EARTH', + 9794 : 'MALE SIGN', + 9795 : 'JUPITER', + 9796 : 'SATURN', + 9797 : 'URANUS', + 9798 : 'NEPTUNE', + 9799 : 'PLUTO', + 9800 : 'ARIES', + 9801 : 'TAURUS', + 9802 : 'GEMINI', + 9803 : 'CANCER', + 9804 : 'LEO', + 9805 : 'VIRGO', + 9806 : 'LIBRA', + 9807 : 'SCORPIUS', + 9808 : 'SAGITTARIUS', + 9809 : 'CAPRICORN', + 9810 : 'AQUARIUS', + 9811 : 'PISCES', + 9812 : 'WHITE CHESS KING', + 9813 : 'WHITE CHESS QUEEN', + 9814 : 'WHITE CHESS ROOK', + 9815 : 'WHITE CHESS BISHOP', + 9816 : 'WHITE CHESS KNIGHT', + 9817 : 'WHITE CHESS PAWN', + 9818 : 'BLACK CHESS KING', + 9819 : 'BLACK CHESS QUEEN', + 9820 : 'BLACK CHESS ROOK', + 9821 : 'BLACK CHESS BISHOP', + 9822 : 'BLACK CHESS KNIGHT', + 9823 : 'BLACK CHESS PAWN', + 9824 : 'BLACK SPADE SUIT', + 9825 : 'WHITE HEART SUIT', + 9826 : 'WHITE DIAMOND SUIT', + 9827 : 'BLACK CLUB SUIT', + 9828 : 'WHITE SPADE SUIT', + 9829 : 'BLACK HEART SUIT', + 9830 : 'BLACK DIAMOND SUIT', + 9831 : 'WHITE CLUB SUIT', + 9832 : 'HOT SPRINGS', + 9833 : 'QUARTER NOTE', + 9834 : 'EIGHTH NOTE', + 9835 : 'BEAMED EIGHTH NOTES', + 9836 : 'BEAMED SIXTEENTH NOTES', + 9837 : 'MUSIC FLAT SIGN', + 9838 : 'MUSIC NATURAL SIGN', + 9839 : 'MUSIC SHARP SIGN', + 9840 : 'WEST SYRIAC CROSS', + 9841 : 'EAST SYRIAC CROSS', + 9842 : 'UNIVERSAL RECYCLING SYMBOL', + 9843 : 'RECYCLING SYMBOL FOR TYPE-1 PLASTICS', + 9844 : 'RECYCLING SYMBOL FOR TYPE-2 PLASTICS', + 9845 : 'RECYCLING SYMBOL FOR TYPE-3 PLASTICS', + 9846 : 'RECYCLING SYMBOL FOR TYPE-4 PLASTICS', + 9847 : 'RECYCLING SYMBOL FOR TYPE-5 PLASTICS', + 9848 : 'RECYCLING SYMBOL FOR TYPE-6 PLASTICS', + 9849 : 'RECYCLING SYMBOL FOR TYPE-7 PLASTICS', + 9850 : 'RECYCLING SYMBOL FOR GENERIC MATERIALS', + 9851 : 'BLACK UNIVERSAL RECYCLING SYMBOL', + 9852 : 'RECYCLED PAPER SYMBOL', + 9853 : 'PARTIALLY-RECYCLED PAPER SYMBOL', + 9856 : 'DIE FACE-1', + 9857 : 'DIE FACE-2', + 9858 : 'DIE FACE-3', + 9859 : 'DIE FACE-4', + 9860 : 'DIE FACE-5', + 9861 : 'DIE FACE-6', + 9862 : 'WHITE CIRCLE WITH DOT RIGHT', + 9863 : 'WHITE CIRCLE WITH TWO DOTS', + 9864 : 'BLACK CIRCLE WITH WHITE DOT RIGHT', + 9865 : 'BLACK CIRCLE WITH TWO WHITE DOTS', + 9985 : 'UPPER BLADE SCISSORS', + 9986 : 'BLACK SCISSORS', + 9987 : 'LOWER BLADE SCISSORS', + 9988 : 'WHITE SCISSORS', + 9990 : 'TELEPHONE LOCATION SIGN', + 9991 : 'TAPE DRIVE', + 9992 : 'AIRPLANE', + 9993 : 'ENVELOPE', + 9996 : 'VICTORY HAND', + 9997 : 'WRITING HAND', + 9998 : 'LOWER RIGHT PENCIL', + 9999 : 'PENCIL', + 10000 : 'UPPER RIGHT PENCIL', + 10001 : 'WHITE NIB', + 10002 : 'BLACK NIB', + 10003 : 'CHECK MARK', + 10004 : 'HEAVY CHECK MARK', + 10005 : 'MULTIPLICATION X', + 10006 : 'HEAVY MULTIPLICATION X', + 10007 : 'BALLOT X', + 10008 : 'HEAVY BALLOT X', + 10009 : 'OUTLINED GREEK CROSS', + 10010 : 'HEAVY GREEK CROSS', + 10011 : 'OPEN CENTRE CROSS', + 10012 : 'HEAVY OPEN CENTRE CROSS', + 10013 : 'LATIN CROSS', + 10014 : 'SHADOWED WHITE LATIN CROSS', + 10015 : 'OUTLINED LATIN CROSS', + 10016 : 'MALTESE CROSS', + 10017 : 'STAR OF DAVID', + 10018 : 'FOUR TEARDROP-SPOKED ASTERISK', + 10019 : 'FOUR BALLOON-SPOKED ASTERISK', + 10020 : 'HEAVY FOUR BALLOON-SPOKED ASTERISK', + 10021 : 'FOUR CLUB-SPOKED ASTERISK', + 10022 : 'BLACK FOUR POINTED STAR', + 10023 : 'WHITE FOUR POINTED STAR', + 10025 : 'STRESS OUTLINED WHITE STAR', + 10026 : 'CIRCLED WHITE STAR', + 10027 : 'OPEN CENTRE BLACK STAR', + 10028 : 'BLACK CENTRE WHITE STAR', + 10029 : 'OUTLINED BLACK STAR', + 10030 : 'HEAVY OUTLINED BLACK STAR', + 10031 : 'PINWHEEL STAR', + 10032 : 'SHADOWED WHITE STAR', + 10033 : 'HEAVY ASTERISK', + 10034 : 'OPEN CENTRE ASTERISK', + 10035 : 'EIGHT SPOKED ASTERISK', + 10036 : 'EIGHT POINTED BLACK STAR', + 10037 : 'EIGHT POINTED PINWHEEL STAR', + 10038 : 'SIX POINTED BLACK STAR', + 10039 : 'EIGHT POINTED RECTILINEAR BLACK STAR', + 10040 : 'HEAVY EIGHT POINTED RECTILINEAR BLACK STAR', + 10041 : 'TWELVE POINTED BLACK STAR', + 10042 : 'SIXTEEN POINTED ASTERISK', + 10043 : 'TEARDROP-SPOKED ASTERISK', + 10044 : 'OPEN CENTRE TEARDROP-SPOKED ASTERISK', + 10045 : 'HEAVY TEARDROP-SPOKED ASTERISK', + 10046 : 'SIX PETALLED BLACK AND WHITE FLORETTE', + 10047 : 'BLACK FLORETTE', + 10048 : 'WHITE FLORETTE', + 10049 : 'EIGHT PETALLED OUTLINED BLACK FLORETTE', + 10050 : 'CIRCLED OPEN CENTRE EIGHT POINTED STAR', + 10051 : 'HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK', + 10052 : 'SNOWFLAKE', + 10053 : 'TIGHT TRIFOLIATE SNOWFLAKE', + 10054 : 'HEAVY CHEVRON SNOWFLAKE', + 10055 : 'SPARKLE', + 10056 : 'HEAVY SPARKLE', + 10057 : 'BALLOON-SPOKED ASTERISK', + 10058 : 'EIGHT TEARDROP-SPOKED PROPELLER ASTERISK', + 10059 : 'HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK', + 10061 : 'SHADOWED WHITE CIRCLE', + 10063 : 'LOWER RIGHT DROP-SHADOWED WHITE SQUARE', + 10064 : 'UPPER RIGHT DROP-SHADOWED WHITE SQUARE', + 10065 : 'LOWER RIGHT SHADOWED WHITE SQUARE', + 10066 : 'UPPER RIGHT SHADOWED WHITE SQUARE', + 10070 : 'BLACK DIAMOND MINUS WHITE X', + 10072 : 'LIGHT VERTICAL BAR', + 10073 : 'MEDIUM VERTICAL BAR', + 10074 : 'HEAVY VERTICAL BAR', + 10075 : 'HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT', + 10076 : 'HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT', + 10077 : 'HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT', + 10078 : 'HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT', + 10081 : 'CURVED STEM PARAGRAPH SIGN ORNAMENT', + 10082 : 'HEAVY EXCLAMATION MARK ORNAMENT', + 10083 : 'HEAVY HEART EXCLAMATION MARK ORNAMENT', + 10084 : 'HEAVY BLACK HEART', + 10085 : 'ROTATED HEAVY BLACK HEART BULLET', + 10086 : 'FLORAL HEART', + 10087 : 'ROTATED FLORAL HEART BULLET', + 10088 : 'MEDIUM LEFT PARENTHESIS ORNAMENT', + 10089 : 'MEDIUM RIGHT PARENTHESIS ORNAMENT', + 10090 : 'MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT', + 10091 : 'MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT', + 10092 : 'MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT', + 10093 : 'MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT', + 10094 : 'HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT', + 10095 : 'HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT', + 10096 : 'HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT', + 10097 : 'HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT', + 10098 : 'LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT', + 10099 : 'LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT', + 10100 : 'MEDIUM LEFT CURLY BRACKET ORNAMENT', + 10101 : 'MEDIUM RIGHT CURLY BRACKET ORNAMENT', + 10102 : 'DINGBAT NEGATIVE CIRCLED DIGIT ONE', + 10103 : 'DINGBAT NEGATIVE CIRCLED DIGIT TWO', + 10104 : 'DINGBAT NEGATIVE CIRCLED DIGIT THREE', + 10105 : 'DINGBAT NEGATIVE CIRCLED DIGIT FOUR', + 10106 : 'DINGBAT NEGATIVE CIRCLED DIGIT FIVE', + 10107 : 'DINGBAT NEGATIVE CIRCLED DIGIT SIX', + 10108 : 'DINGBAT NEGATIVE CIRCLED DIGIT SEVEN', + 10109 : 'DINGBAT NEGATIVE CIRCLED DIGIT EIGHT', + 10110 : 'DINGBAT NEGATIVE CIRCLED DIGIT NINE', + 10111 : 'DINGBAT NEGATIVE CIRCLED NUMBER TEN', + 10112 : 'DINGBAT CIRCLED SANS-SERIF DIGIT ONE', + 10113 : 'DINGBAT CIRCLED SANS-SERIF DIGIT TWO', + 10114 : 'DINGBAT CIRCLED SANS-SERIF DIGIT THREE', + 10115 : 'DINGBAT CIRCLED SANS-SERIF DIGIT FOUR', + 10116 : 'DINGBAT CIRCLED SANS-SERIF DIGIT FIVE', + 10117 : 'DINGBAT CIRCLED SANS-SERIF DIGIT SIX', + 10118 : 'DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN', + 10119 : 'DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT', + 10120 : 'DINGBAT CIRCLED SANS-SERIF DIGIT NINE', + 10121 : 'DINGBAT CIRCLED SANS-SERIF NUMBER TEN', + 10122 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE', + 10123 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO', + 10124 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE', + 10125 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR', + 10126 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE', + 10127 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX', + 10128 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN', + 10129 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT', + 10130 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE', + 10131 : 'DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN', + 10132 : 'HEAVY WIDE-HEADED RIGHTWARDS ARROW', + 10136 : 'HEAVY SOUTH EAST ARROW', + 10137 : 'HEAVY RIGHTWARDS ARROW', + 10138 : 'HEAVY NORTH EAST ARROW', + 10139 : 'DRAFTING POINT RIGHTWARDS ARROW', + 10140 : 'HEAVY ROUND-TIPPED RIGHTWARDS ARROW', + 10141 : 'TRIANGLE-HEADED RIGHTWARDS ARROW', + 10142 : 'HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW', + 10143 : 'DASHED TRIANGLE-HEADED RIGHTWARDS ARROW', + 10144 : 'HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW', + 10145 : 'BLACK RIGHTWARDS ARROW', + 10146 : 'THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD', + 10147 : 'THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD', + 10148 : 'BLACK RIGHTWARDS ARROWHEAD', + 10149 : 'HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW', + 10150 : 'HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW', + 10151 : 'SQUAT BLACK RIGHTWARDS ARROW', + 10152 : 'HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW', + 10153 : 'RIGHT-SHADED WHITE RIGHTWARDS ARROW', + 10154 : 'LEFT-SHADED WHITE RIGHTWARDS ARROW', + 10155 : 'BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW', + 10156 : 'FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW', + 10157 : 'HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW', + 10158 : 'HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW', + 10159 : 'NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW', + 10161 : 'NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW', + 10162 : 'CIRCLED HEAVY WHITE RIGHTWARDS ARROW', + 10163 : 'WHITE-FEATHERED RIGHTWARDS ARROW', + 10164 : 'BLACK-FEATHERED SOUTH EAST ARROW', + 10165 : 'BLACK-FEATHERED RIGHTWARDS ARROW', + 10166 : 'BLACK-FEATHERED NORTH EAST ARROW', + 10167 : 'HEAVY BLACK-FEATHERED SOUTH EAST ARROW', + 10168 : 'HEAVY BLACK-FEATHERED RIGHTWARDS ARROW', + 10169 : 'HEAVY BLACK-FEATHERED NORTH EAST ARROW', + 10170 : 'TEARDROP-BARBED RIGHTWARDS ARROW', + 10171 : 'HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW', + 10172 : 'WEDGE-TAILED RIGHTWARDS ARROW', + 10173 : 'HEAVY WEDGE-TAILED RIGHTWARDS ARROW', + 10174 : 'OPEN-OUTLINED RIGHTWARDS ARROW', + 10192 : 'WHITE DIAMOND WITH CENTRED DOT', + 10193 : 'AND WITH DOT', + 10194 : 'ELEMENT OF OPENING UPWARDS', + 10195 : 'LOWER RIGHT CORNER WITH DOT', + 10196 : 'UPPER LEFT CORNER WITH DOT', + 10197 : 'LEFT OUTER JOIN', + 10198 : 'RIGHT OUTER JOIN', + 10199 : 'FULL OUTER JOIN', + 10200 : 'LARGE UP TACK', + 10201 : 'LARGE DOWN TACK', + 10202 : 'LEFT AND RIGHT DOUBLE TURNSTILE', + 10203 : 'LEFT AND RIGHT TACK', + 10204 : 'LEFT MULTIMAP', + 10205 : 'LONG RIGHT TACK', + 10206 : 'LONG LEFT TACK', + 10207 : 'UP TACK WITH CIRCLE ABOVE', + 10208 : 'LOZENGE DIVIDED BY HORIZONTAL RULE', + 10209 : 'WHITE CONCAVE-SIDED DIAMOND', + 10210 : 'WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK', + 10211 : 'WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK', + 10212 : 'WHITE SQUARE WITH LEFTWARDS TICK', + 10213 : 'WHITE SQUARE WITH RIGHTWARDS TICK', + 10214 : 'MATHEMATICAL LEFT WHITE SQUARE BRACKET', + 10215 : 'MATHEMATICAL RIGHT WHITE SQUARE BRACKET', + 10216 : 'MATHEMATICAL LEFT ANGLE BRACKET', + 10217 : 'MATHEMATICAL RIGHT ANGLE BRACKET', + 10218 : 'MATHEMATICAL LEFT DOUBLE ANGLE BRACKET', + 10219 : 'MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET', + 10224 : 'UPWARDS QUADRUPLE ARROW', + 10225 : 'DOWNWARDS QUADRUPLE ARROW', + 10226 : 'ANTICLOCKWISE GAPPED CIRCLE ARROW', + 10227 : 'CLOCKWISE GAPPED CIRCLE ARROW', + 10228 : 'RIGHT ARROW WITH CIRCLED PLUS', + 10229 : 'LONG LEFTWARDS ARROW', + 10230 : 'LONG RIGHTWARDS ARROW', + 10231 : 'LONG LEFT RIGHT ARROW', + 10232 : 'LONG LEFTWARDS DOUBLE ARROW', + 10233 : 'LONG RIGHTWARDS DOUBLE ARROW', + 10234 : 'LONG LEFT RIGHT DOUBLE ARROW', + 10235 : 'LONG LEFTWARDS ARROW FROM BAR', + 10236 : 'LONG RIGHTWARDS ARROW FROM BAR', + 10237 : 'LONG LEFTWARDS DOUBLE ARROW FROM BAR', + 10238 : 'LONG RIGHTWARDS DOUBLE ARROW FROM BAR', + 10239 : 'LONG RIGHTWARDS SQUIGGLE ARROW', + 10240 : 'BRAILLE PATTERN BLANK', + 10241 : 'BRAILLE PATTERN DOTS-1', + 10242 : 'BRAILLE PATTERN DOTS-2', + 10243 : 'BRAILLE PATTERN DOTS-12', + 10244 : 'BRAILLE PATTERN DOTS-3', + 10245 : 'BRAILLE PATTERN DOTS-13', + 10246 : 'BRAILLE PATTERN DOTS-23', + 10247 : 'BRAILLE PATTERN DOTS-123', + 10248 : 'BRAILLE PATTERN DOTS-4', + 10249 : 'BRAILLE PATTERN DOTS-14', + 10250 : 'BRAILLE PATTERN DOTS-24', + 10251 : 'BRAILLE PATTERN DOTS-124', + 10252 : 'BRAILLE PATTERN DOTS-34', + 10253 : 'BRAILLE PATTERN DOTS-134', + 10254 : 'BRAILLE PATTERN DOTS-234', + 10255 : 'BRAILLE PATTERN DOTS-1234', + 10256 : 'BRAILLE PATTERN DOTS-5', + 10257 : 'BRAILLE PATTERN DOTS-15', + 10258 : 'BRAILLE PATTERN DOTS-25', + 10259 : 'BRAILLE PATTERN DOTS-125', + 10260 : 'BRAILLE PATTERN DOTS-35', + 10261 : 'BRAILLE PATTERN DOTS-135', + 10262 : 'BRAILLE PATTERN DOTS-235', + 10263 : 'BRAILLE PATTERN DOTS-1235', + 10264 : 'BRAILLE PATTERN DOTS-45', + 10265 : 'BRAILLE PATTERN DOTS-145', + 10266 : 'BRAILLE PATTERN DOTS-245', + 10267 : 'BRAILLE PATTERN DOTS-1245', + 10268 : 'BRAILLE PATTERN DOTS-345', + 10269 : 'BRAILLE PATTERN DOTS-1345', + 10270 : 'BRAILLE PATTERN DOTS-2345', + 10271 : 'BRAILLE PATTERN DOTS-12345', + 10272 : 'BRAILLE PATTERN DOTS-6', + 10273 : 'BRAILLE PATTERN DOTS-16', + 10274 : 'BRAILLE PATTERN DOTS-26', + 10275 : 'BRAILLE PATTERN DOTS-126', + 10276 : 'BRAILLE PATTERN DOTS-36', + 10277 : 'BRAILLE PATTERN DOTS-136', + 10278 : 'BRAILLE PATTERN DOTS-236', + 10279 : 'BRAILLE PATTERN DOTS-1236', + 10280 : 'BRAILLE PATTERN DOTS-46', + 10281 : 'BRAILLE PATTERN DOTS-146', + 10282 : 'BRAILLE PATTERN DOTS-246', + 10283 : 'BRAILLE PATTERN DOTS-1246', + 10284 : 'BRAILLE PATTERN DOTS-346', + 10285 : 'BRAILLE PATTERN DOTS-1346', + 10286 : 'BRAILLE PATTERN DOTS-2346', + 10287 : 'BRAILLE PATTERN DOTS-12346', + 10288 : 'BRAILLE PATTERN DOTS-56', + 10289 : 'BRAILLE PATTERN DOTS-156', + 10290 : 'BRAILLE PATTERN DOTS-256', + 10291 : 'BRAILLE PATTERN DOTS-1256', + 10292 : 'BRAILLE PATTERN DOTS-356', + 10293 : 'BRAILLE PATTERN DOTS-1356', + 10294 : 'BRAILLE PATTERN DOTS-2356', + 10295 : 'BRAILLE PATTERN DOTS-12356', + 10296 : 'BRAILLE PATTERN DOTS-456', + 10297 : 'BRAILLE PATTERN DOTS-1456', + 10298 : 'BRAILLE PATTERN DOTS-2456', + 10299 : 'BRAILLE PATTERN DOTS-12456', + 10300 : 'BRAILLE PATTERN DOTS-3456', + 10301 : 'BRAILLE PATTERN DOTS-13456', + 10302 : 'BRAILLE PATTERN DOTS-23456', + 10303 : 'BRAILLE PATTERN DOTS-123456', + 10304 : 'BRAILLE PATTERN DOTS-7', + 10305 : 'BRAILLE PATTERN DOTS-17', + 10306 : 'BRAILLE PATTERN DOTS-27', + 10307 : 'BRAILLE PATTERN DOTS-127', + 10308 : 'BRAILLE PATTERN DOTS-37', + 10309 : 'BRAILLE PATTERN DOTS-137', + 10310 : 'BRAILLE PATTERN DOTS-237', + 10311 : 'BRAILLE PATTERN DOTS-1237', + 10312 : 'BRAILLE PATTERN DOTS-47', + 10313 : 'BRAILLE PATTERN DOTS-147', + 10314 : 'BRAILLE PATTERN DOTS-247', + 10315 : 'BRAILLE PATTERN DOTS-1247', + 10316 : 'BRAILLE PATTERN DOTS-347', + 10317 : 'BRAILLE PATTERN DOTS-1347', + 10318 : 'BRAILLE PATTERN DOTS-2347', + 10319 : 'BRAILLE PATTERN DOTS-12347', + 10320 : 'BRAILLE PATTERN DOTS-57', + 10321 : 'BRAILLE PATTERN DOTS-157', + 10322 : 'BRAILLE PATTERN DOTS-257', + 10323 : 'BRAILLE PATTERN DOTS-1257', + 10324 : 'BRAILLE PATTERN DOTS-357', + 10325 : 'BRAILLE PATTERN DOTS-1357', + 10326 : 'BRAILLE PATTERN DOTS-2357', + 10327 : 'BRAILLE PATTERN DOTS-12357', + 10328 : 'BRAILLE PATTERN DOTS-457', + 10329 : 'BRAILLE PATTERN DOTS-1457', + 10330 : 'BRAILLE PATTERN DOTS-2457', + 10331 : 'BRAILLE PATTERN DOTS-12457', + 10332 : 'BRAILLE PATTERN DOTS-3457', + 10333 : 'BRAILLE PATTERN DOTS-13457', + 10334 : 'BRAILLE PATTERN DOTS-23457', + 10335 : 'BRAILLE PATTERN DOTS-123457', + 10336 : 'BRAILLE PATTERN DOTS-67', + 10337 : 'BRAILLE PATTERN DOTS-167', + 10338 : 'BRAILLE PATTERN DOTS-267', + 10339 : 'BRAILLE PATTERN DOTS-1267', + 10340 : 'BRAILLE PATTERN DOTS-367', + 10341 : 'BRAILLE PATTERN DOTS-1367', + 10342 : 'BRAILLE PATTERN DOTS-2367', + 10343 : 'BRAILLE PATTERN DOTS-12367', + 10344 : 'BRAILLE PATTERN DOTS-467', + 10345 : 'BRAILLE PATTERN DOTS-1467', + 10346 : 'BRAILLE PATTERN DOTS-2467', + 10347 : 'BRAILLE PATTERN DOTS-12467', + 10348 : 'BRAILLE PATTERN DOTS-3467', + 10349 : 'BRAILLE PATTERN DOTS-13467', + 10350 : 'BRAILLE PATTERN DOTS-23467', + 10351 : 'BRAILLE PATTERN DOTS-123467', + 10352 : 'BRAILLE PATTERN DOTS-567', + 10353 : 'BRAILLE PATTERN DOTS-1567', + 10354 : 'BRAILLE PATTERN DOTS-2567', + 10355 : 'BRAILLE PATTERN DOTS-12567', + 10356 : 'BRAILLE PATTERN DOTS-3567', + 10357 : 'BRAILLE PATTERN DOTS-13567', + 10358 : 'BRAILLE PATTERN DOTS-23567', + 10359 : 'BRAILLE PATTERN DOTS-123567', + 10360 : 'BRAILLE PATTERN DOTS-4567', + 10361 : 'BRAILLE PATTERN DOTS-14567', + 10362 : 'BRAILLE PATTERN DOTS-24567', + 10363 : 'BRAILLE PATTERN DOTS-124567', + 10364 : 'BRAILLE PATTERN DOTS-34567', + 10365 : 'BRAILLE PATTERN DOTS-134567', + 10366 : 'BRAILLE PATTERN DOTS-234567', + 10367 : 'BRAILLE PATTERN DOTS-1234567', + 10368 : 'BRAILLE PATTERN DOTS-8', + 10369 : 'BRAILLE PATTERN DOTS-18', + 10370 : 'BRAILLE PATTERN DOTS-28', + 10371 : 'BRAILLE PATTERN DOTS-128', + 10372 : 'BRAILLE PATTERN DOTS-38', + 10373 : 'BRAILLE PATTERN DOTS-138', + 10374 : 'BRAILLE PATTERN DOTS-238', + 10375 : 'BRAILLE PATTERN DOTS-1238', + 10376 : 'BRAILLE PATTERN DOTS-48', + 10377 : 'BRAILLE PATTERN DOTS-148', + 10378 : 'BRAILLE PATTERN DOTS-248', + 10379 : 'BRAILLE PATTERN DOTS-1248', + 10380 : 'BRAILLE PATTERN DOTS-348', + 10381 : 'BRAILLE PATTERN DOTS-1348', + 10382 : 'BRAILLE PATTERN DOTS-2348', + 10383 : 'BRAILLE PATTERN DOTS-12348', + 10384 : 'BRAILLE PATTERN DOTS-58', + 10385 : 'BRAILLE PATTERN DOTS-158', + 10386 : 'BRAILLE PATTERN DOTS-258', + 10387 : 'BRAILLE PATTERN DOTS-1258', + 10388 : 'BRAILLE PATTERN DOTS-358', + 10389 : 'BRAILLE PATTERN DOTS-1358', + 10390 : 'BRAILLE PATTERN DOTS-2358', + 10391 : 'BRAILLE PATTERN DOTS-12358', + 10392 : 'BRAILLE PATTERN DOTS-458', + 10393 : 'BRAILLE PATTERN DOTS-1458', + 10394 : 'BRAILLE PATTERN DOTS-2458', + 10395 : 'BRAILLE PATTERN DOTS-12458', + 10396 : 'BRAILLE PATTERN DOTS-3458', + 10397 : 'BRAILLE PATTERN DOTS-13458', + 10398 : 'BRAILLE PATTERN DOTS-23458', + 10399 : 'BRAILLE PATTERN DOTS-123458', + 10400 : 'BRAILLE PATTERN DOTS-68', + 10401 : 'BRAILLE PATTERN DOTS-168', + 10402 : 'BRAILLE PATTERN DOTS-268', + 10403 : 'BRAILLE PATTERN DOTS-1268', + 10404 : 'BRAILLE PATTERN DOTS-368', + 10405 : 'BRAILLE PATTERN DOTS-1368', + 10406 : 'BRAILLE PATTERN DOTS-2368', + 10407 : 'BRAILLE PATTERN DOTS-12368', + 10408 : 'BRAILLE PATTERN DOTS-468', + 10409 : 'BRAILLE PATTERN DOTS-1468', + 10410 : 'BRAILLE PATTERN DOTS-2468', + 10411 : 'BRAILLE PATTERN DOTS-12468', + 10412 : 'BRAILLE PATTERN DOTS-3468', + 10413 : 'BRAILLE PATTERN DOTS-13468', + 10414 : 'BRAILLE PATTERN DOTS-23468', + 10415 : 'BRAILLE PATTERN DOTS-123468', + 10416 : 'BRAILLE PATTERN DOTS-568', + 10417 : 'BRAILLE PATTERN DOTS-1568', + 10418 : 'BRAILLE PATTERN DOTS-2568', + 10419 : 'BRAILLE PATTERN DOTS-12568', + 10420 : 'BRAILLE PATTERN DOTS-3568', + 10421 : 'BRAILLE PATTERN DOTS-13568', + 10422 : 'BRAILLE PATTERN DOTS-23568', + 10423 : 'BRAILLE PATTERN DOTS-123568', + 10424 : 'BRAILLE PATTERN DOTS-4568', + 10425 : 'BRAILLE PATTERN DOTS-14568', + 10426 : 'BRAILLE PATTERN DOTS-24568', + 10427 : 'BRAILLE PATTERN DOTS-124568', + 10428 : 'BRAILLE PATTERN DOTS-34568', + 10429 : 'BRAILLE PATTERN DOTS-134568', + 10430 : 'BRAILLE PATTERN DOTS-234568', + 10431 : 'BRAILLE PATTERN DOTS-1234568', + 10432 : 'BRAILLE PATTERN DOTS-78', + 10433 : 'BRAILLE PATTERN DOTS-178', + 10434 : 'BRAILLE PATTERN DOTS-278', + 10435 : 'BRAILLE PATTERN DOTS-1278', + 10436 : 'BRAILLE PATTERN DOTS-378', + 10437 : 'BRAILLE PATTERN DOTS-1378', + 10438 : 'BRAILLE PATTERN DOTS-2378', + 10439 : 'BRAILLE PATTERN DOTS-12378', + 10440 : 'BRAILLE PATTERN DOTS-478', + 10441 : 'BRAILLE PATTERN DOTS-1478', + 10442 : 'BRAILLE PATTERN DOTS-2478', + 10443 : 'BRAILLE PATTERN DOTS-12478', + 10444 : 'BRAILLE PATTERN DOTS-3478', + 10445 : 'BRAILLE PATTERN DOTS-13478', + 10446 : 'BRAILLE PATTERN DOTS-23478', + 10447 : 'BRAILLE PATTERN DOTS-123478', + 10448 : 'BRAILLE PATTERN DOTS-578', + 10449 : 'BRAILLE PATTERN DOTS-1578', + 10450 : 'BRAILLE PATTERN DOTS-2578', + 10451 : 'BRAILLE PATTERN DOTS-12578', + 10452 : 'BRAILLE PATTERN DOTS-3578', + 10453 : 'BRAILLE PATTERN DOTS-13578', + 10454 : 'BRAILLE PATTERN DOTS-23578', + 10455 : 'BRAILLE PATTERN DOTS-123578', + 10456 : 'BRAILLE PATTERN DOTS-4578', + 10457 : 'BRAILLE PATTERN DOTS-14578', + 10458 : 'BRAILLE PATTERN DOTS-24578', + 10459 : 'BRAILLE PATTERN DOTS-124578', + 10460 : 'BRAILLE PATTERN DOTS-34578', + 10461 : 'BRAILLE PATTERN DOTS-134578', + 10462 : 'BRAILLE PATTERN DOTS-234578', + 10463 : 'BRAILLE PATTERN DOTS-1234578', + 10464 : 'BRAILLE PATTERN DOTS-678', + 10465 : 'BRAILLE PATTERN DOTS-1678', + 10466 : 'BRAILLE PATTERN DOTS-2678', + 10467 : 'BRAILLE PATTERN DOTS-12678', + 10468 : 'BRAILLE PATTERN DOTS-3678', + 10469 : 'BRAILLE PATTERN DOTS-13678', + 10470 : 'BRAILLE PATTERN DOTS-23678', + 10471 : 'BRAILLE PATTERN DOTS-123678', + 10472 : 'BRAILLE PATTERN DOTS-4678', + 10473 : 'BRAILLE PATTERN DOTS-14678', + 10474 : 'BRAILLE PATTERN DOTS-24678', + 10475 : 'BRAILLE PATTERN DOTS-124678', + 10476 : 'BRAILLE PATTERN DOTS-34678', + 10477 : 'BRAILLE PATTERN DOTS-134678', + 10478 : 'BRAILLE PATTERN DOTS-234678', + 10479 : 'BRAILLE PATTERN DOTS-1234678', + 10480 : 'BRAILLE PATTERN DOTS-5678', + 10481 : 'BRAILLE PATTERN DOTS-15678', + 10482 : 'BRAILLE PATTERN DOTS-25678', + 10483 : 'BRAILLE PATTERN DOTS-125678', + 10484 : 'BRAILLE PATTERN DOTS-35678', + 10485 : 'BRAILLE PATTERN DOTS-135678', + 10486 : 'BRAILLE PATTERN DOTS-235678', + 10487 : 'BRAILLE PATTERN DOTS-1235678', + 10488 : 'BRAILLE PATTERN DOTS-45678', + 10489 : 'BRAILLE PATTERN DOTS-145678', + 10490 : 'BRAILLE PATTERN DOTS-245678', + 10491 : 'BRAILLE PATTERN DOTS-1245678', + 10492 : 'BRAILLE PATTERN DOTS-345678', + 10493 : 'BRAILLE PATTERN DOTS-1345678', + 10494 : 'BRAILLE PATTERN DOTS-2345678', + 10495 : 'BRAILLE PATTERN DOTS-12345678', + 10496 : 'RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE', + 10497 : 'RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE', + 10498 : 'LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE', + 10499 : 'RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE', + 10500 : 'LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE', + 10501 : 'RIGHTWARDS TWO-HEADED ARROW FROM BAR', + 10502 : 'LEFTWARDS DOUBLE ARROW FROM BAR', + 10503 : 'RIGHTWARDS DOUBLE ARROW FROM BAR', + 10504 : 'DOWNWARDS ARROW WITH HORIZONTAL STROKE', + 10505 : 'UPWARDS ARROW WITH HORIZONTAL STROKE', + 10506 : 'UPWARDS TRIPLE ARROW', + 10507 : 'DOWNWARDS TRIPLE ARROW', + 10508 : 'LEFTWARDS DOUBLE DASH ARROW', + 10509 : 'RIGHTWARDS DOUBLE DASH ARROW', + 10510 : 'LEFTWARDS TRIPLE DASH ARROW', + 10511 : 'RIGHTWARDS TRIPLE DASH ARROW', + 10512 : 'RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW', + 10513 : 'RIGHTWARDS ARROW WITH DOTTED STEM', + 10514 : 'UPWARDS ARROW TO BAR', + 10515 : 'DOWNWARDS ARROW TO BAR', + 10516 : 'RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE', + 10517 : 'RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE', + 10518 : 'RIGHTWARDS TWO-HEADED ARROW WITH TAIL', + 10519 : 'RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE', + 10520 : 'RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE', + 10521 : 'LEFTWARDS ARROW-TAIL', + 10522 : 'RIGHTWARDS ARROW-TAIL', + 10523 : 'LEFTWARDS DOUBLE ARROW-TAIL', + 10524 : 'RIGHTWARDS DOUBLE ARROW-TAIL', + 10525 : 'LEFTWARDS ARROW TO BLACK DIAMOND', + 10526 : 'RIGHTWARDS ARROW TO BLACK DIAMOND', + 10527 : 'LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND', + 10528 : 'RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND', + 10529 : 'NORTH WEST AND SOUTH EAST ARROW', + 10530 : 'NORTH EAST AND SOUTH WEST ARROW', + 10531 : 'NORTH WEST ARROW WITH HOOK', + 10532 : 'NORTH EAST ARROW WITH HOOK', + 10533 : 'SOUTH EAST ARROW WITH HOOK', + 10534 : 'SOUTH WEST ARROW WITH HOOK', + 10535 : 'NORTH WEST ARROW AND NORTH EAST ARROW', + 10536 : 'NORTH EAST ARROW AND SOUTH EAST ARROW', + 10537 : 'SOUTH EAST ARROW AND SOUTH WEST ARROW', + 10538 : 'SOUTH WEST ARROW AND NORTH WEST ARROW', + 10539 : 'RISING DIAGONAL CROSSING FALLING DIAGONAL', + 10540 : 'FALLING DIAGONAL CROSSING RISING DIAGONAL', + 10541 : 'SOUTH EAST ARROW CROSSING NORTH EAST ARROW', + 10542 : 'NORTH EAST ARROW CROSSING SOUTH EAST ARROW', + 10543 : 'FALLING DIAGONAL CROSSING NORTH EAST ARROW', + 10544 : 'RISING DIAGONAL CROSSING SOUTH EAST ARROW', + 10545 : 'NORTH EAST ARROW CROSSING NORTH WEST ARROW', + 10546 : 'NORTH WEST ARROW CROSSING NORTH EAST ARROW', + 10547 : 'WAVE ARROW POINTING DIRECTLY RIGHT', + 10548 : 'ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS', + 10549 : 'ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS', + 10550 : 'ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS', + 10551 : 'ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS', + 10552 : 'RIGHT-SIDE ARC CLOCKWISE ARROW', + 10553 : 'LEFT-SIDE ARC ANTICLOCKWISE ARROW', + 10554 : 'TOP ARC ANTICLOCKWISE ARROW', + 10555 : 'BOTTOM ARC ANTICLOCKWISE ARROW', + 10556 : 'TOP ARC CLOCKWISE ARROW WITH MINUS', + 10557 : 'TOP ARC ANTICLOCKWISE ARROW WITH PLUS', + 10558 : 'LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW', + 10559 : 'LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW', + 10560 : 'ANTICLOCKWISE CLOSED CIRCLE ARROW', + 10561 : 'CLOCKWISE CLOSED CIRCLE ARROW', + 10562 : 'RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW', + 10563 : 'LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW', + 10564 : 'SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW', + 10565 : 'RIGHTWARDS ARROW WITH PLUS BELOW', + 10566 : 'LEFTWARDS ARROW WITH PLUS BELOW', + 10567 : 'RIGHTWARDS ARROW THROUGH X', + 10568 : 'LEFT RIGHT ARROW THROUGH SMALL CIRCLE', + 10569 : 'UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE', + 10570 : 'LEFT BARB UP RIGHT BARB DOWN HARPOON', + 10571 : 'LEFT BARB DOWN RIGHT BARB UP HARPOON', + 10572 : 'UP BARB RIGHT DOWN BARB LEFT HARPOON', + 10573 : 'UP BARB LEFT DOWN BARB RIGHT HARPOON', + 10574 : 'LEFT BARB UP RIGHT BARB UP HARPOON', + 10575 : 'UP BARB RIGHT DOWN BARB RIGHT HARPOON', + 10576 : 'LEFT BARB DOWN RIGHT BARB DOWN HARPOON', + 10577 : 'UP BARB LEFT DOWN BARB LEFT HARPOON', + 10578 : 'LEFTWARDS HARPOON WITH BARB UP TO BAR', + 10579 : 'RIGHTWARDS HARPOON WITH BARB UP TO BAR', + 10580 : 'UPWARDS HARPOON WITH BARB RIGHT TO BAR', + 10581 : 'DOWNWARDS HARPOON WITH BARB RIGHT TO BAR', + 10582 : 'LEFTWARDS HARPOON WITH BARB DOWN TO BAR', + 10583 : 'RIGHTWARDS HARPOON WITH BARB DOWN TO BAR', + 10584 : 'UPWARDS HARPOON WITH BARB LEFT TO BAR', + 10585 : 'DOWNWARDS HARPOON WITH BARB LEFT TO BAR', + 10586 : 'LEFTWARDS HARPOON WITH BARB UP FROM BAR', + 10587 : 'RIGHTWARDS HARPOON WITH BARB UP FROM BAR', + 10588 : 'UPWARDS HARPOON WITH BARB RIGHT FROM BAR', + 10589 : 'DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR', + 10590 : 'LEFTWARDS HARPOON WITH BARB DOWN FROM BAR', + 10591 : 'RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR', + 10592 : 'UPWARDS HARPOON WITH BARB LEFT FROM BAR', + 10593 : 'DOWNWARDS HARPOON WITH BARB LEFT FROM BAR', + 10594 : 'LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN', + 10595 : 'UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT', + 10596 : 'RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN', + 10597 : 'DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT', + 10598 : 'LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP', + 10599 : 'LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN', + 10600 : 'RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP', + 10601 : 'RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN', + 10602 : 'LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH', + 10603 : 'LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH', + 10604 : 'RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH', + 10605 : 'RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH', + 10606 : 'UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT', + 10607 : 'DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT', + 10608 : 'RIGHT DOUBLE ARROW WITH ROUNDED HEAD', + 10609 : 'EQUALS SIGN ABOVE RIGHTWARDS ARROW', + 10610 : 'TILDE OPERATOR ABOVE RIGHTWARDS ARROW', + 10611 : 'LEFTWARDS ARROW ABOVE TILDE OPERATOR', + 10612 : 'RIGHTWARDS ARROW ABOVE TILDE OPERATOR', + 10613 : 'RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO', + 10614 : 'LESS-THAN ABOVE LEFTWARDS ARROW', + 10615 : 'LEFTWARDS ARROW THROUGH LESS-THAN', + 10616 : 'GREATER-THAN ABOVE RIGHTWARDS ARROW', + 10617 : 'SUBSET ABOVE RIGHTWARDS ARROW', + 10618 : 'LEFTWARDS ARROW THROUGH SUBSET', + 10619 : 'SUPERSET ABOVE LEFTWARDS ARROW', + 10620 : 'LEFT FISH TAIL', + 10621 : 'RIGHT FISH TAIL', + 10622 : 'UP FISH TAIL', + 10623 : 'DOWN FISH TAIL', + 10624 : 'TRIPLE VERTICAL BAR DELIMITER', + 10625 : 'Z NOTATION SPOT', + 10626 : 'Z NOTATION TYPE COLON', + 10627 : 'LEFT WHITE CURLY BRACKET', + 10628 : 'RIGHT WHITE CURLY BRACKET', + 10629 : 'LEFT WHITE PARENTHESIS', + 10630 : 'RIGHT WHITE PARENTHESIS', + 10631 : 'Z NOTATION LEFT IMAGE BRACKET', + 10632 : 'Z NOTATION RIGHT IMAGE BRACKET', + 10633 : 'Z NOTATION LEFT BINDING BRACKET', + 10634 : 'Z NOTATION RIGHT BINDING BRACKET', + 10635 : 'LEFT SQUARE BRACKET WITH UNDERBAR', + 10636 : 'RIGHT SQUARE BRACKET WITH UNDERBAR', + 10637 : 'LEFT SQUARE BRACKET WITH TICK IN TOP CORNER', + 10638 : 'RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER', + 10639 : 'LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER', + 10640 : 'RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER', + 10641 : 'LEFT ANGLE BRACKET WITH DOT', + 10642 : 'RIGHT ANGLE BRACKET WITH DOT', + 10643 : 'LEFT ARC LESS-THAN BRACKET', + 10644 : 'RIGHT ARC GREATER-THAN BRACKET', + 10645 : 'DOUBLE LEFT ARC GREATER-THAN BRACKET', + 10646 : 'DOUBLE RIGHT ARC LESS-THAN BRACKET', + 10647 : 'LEFT BLACK TORTOISE SHELL BRACKET', + 10648 : 'RIGHT BLACK TORTOISE SHELL BRACKET', + 10649 : 'DOTTED FENCE', + 10650 : 'VERTICAL ZIGZAG LINE', + 10651 : 'MEASURED ANGLE OPENING LEFT', + 10652 : 'RIGHT ANGLE VARIANT WITH SQUARE', + 10653 : 'MEASURED RIGHT ANGLE WITH DOT', + 10654 : 'ANGLE WITH S INSIDE', + 10655 : 'ACUTE ANGLE', + 10656 : 'SPHERICAL ANGLE OPENING LEFT', + 10657 : 'SPHERICAL ANGLE OPENING UP', + 10658 : 'TURNED ANGLE', + 10659 : 'REVERSED ANGLE', + 10660 : 'ANGLE WITH UNDERBAR', + 10661 : 'REVERSED ANGLE WITH UNDERBAR', + 10662 : 'OBLIQUE ANGLE OPENING UP', + 10663 : 'OBLIQUE ANGLE OPENING DOWN', + 10664 : 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT', + 10665 : 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT', + 10666 : 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT', + 10667 : 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT', + 10668 : 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP', + 10669 : 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP', + 10670 : 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN', + 10671 : 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN', + 10672 : 'REVERSED EMPTY SET', + 10673 : 'EMPTY SET WITH OVERBAR', + 10674 : 'EMPTY SET WITH SMALL CIRCLE ABOVE', + 10675 : 'EMPTY SET WITH RIGHT ARROW ABOVE', + 10676 : 'EMPTY SET WITH LEFT ARROW ABOVE', + 10677 : 'CIRCLE WITH HORIZONTAL BAR', + 10678 : 'CIRCLED VERTICAL BAR', + 10679 : 'CIRCLED PARALLEL', + 10680 : 'CIRCLED REVERSE SOLIDUS', + 10681 : 'CIRCLED PERPENDICULAR', + 10682 : 'CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR', + 10683 : 'CIRCLE WITH SUPERIMPOSED X', + 10684 : 'CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN', + 10685 : 'UP ARROW THROUGH CIRCLE', + 10686 : 'CIRCLED WHITE BULLET', + 10687 : 'CIRCLED BULLET', + 10688 : 'CIRCLED LESS-THAN', + 10689 : 'CIRCLED GREATER-THAN', + 10690 : 'CIRCLE WITH SMALL CIRCLE TO THE RIGHT', + 10691 : 'CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT', + 10692 : 'SQUARED RISING DIAGONAL SLASH', + 10693 : 'SQUARED FALLING DIAGONAL SLASH', + 10694 : 'SQUARED ASTERISK', + 10695 : 'SQUARED SMALL CIRCLE', + 10696 : 'SQUARED SQUARE', + 10697 : 'TWO JOINED SQUARES', + 10698 : 'TRIANGLE WITH DOT ABOVE', + 10699 : 'TRIANGLE WITH UNDERBAR', + 10700 : 'S IN TRIANGLE', + 10701 : 'TRIANGLE WITH SERIFS AT BOTTOM', + 10702 : 'RIGHT TRIANGLE ABOVE LEFT TRIANGLE', + 10703 : 'LEFT TRIANGLE BESIDE VERTICAL BAR', + 10704 : 'VERTICAL BAR BESIDE RIGHT TRIANGLE', + 10705 : 'BOWTIE WITH LEFT HALF BLACK', + 10706 : 'BOWTIE WITH RIGHT HALF BLACK', + 10707 : 'BLACK BOWTIE', + 10708 : 'TIMES WITH LEFT HALF BLACK', + 10709 : 'TIMES WITH RIGHT HALF BLACK', + 10710 : 'WHITE HOURGLASS', + 10711 : 'BLACK HOURGLASS', + 10712 : 'LEFT WIGGLY FENCE', + 10713 : 'RIGHT WIGGLY FENCE', + 10714 : 'LEFT DOUBLE WIGGLY FENCE', + 10715 : 'RIGHT DOUBLE WIGGLY FENCE', + 10716 : 'INCOMPLETE INFINITY', + 10717 : 'TIE OVER INFINITY', + 10718 : 'INFINITY NEGATED WITH VERTICAL BAR', + 10719 : 'DOUBLE-ENDED MULTIMAP', + 10720 : 'SQUARE WITH CONTOURED OUTLINE', + 10721 : 'INCREASES AS', + 10722 : 'SHUFFLE PRODUCT', + 10723 : 'EQUALS SIGN AND SLANTED PARALLEL', + 10724 : 'EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE', + 10725 : 'IDENTICAL TO AND SLANTED PARALLEL', + 10726 : 'GLEICH STARK', + 10727 : 'THERMODYNAMIC', + 10728 : 'DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK', + 10729 : 'DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK', + 10730 : 'BLACK DIAMOND WITH DOWN ARROW', + 10731 : 'BLACK LOZENGE', + 10732 : 'WHITE CIRCLE WITH DOWN ARROW', + 10733 : 'BLACK CIRCLE WITH DOWN ARROW', + 10734 : 'ERROR-BARRED WHITE SQUARE', + 10735 : 'ERROR-BARRED BLACK SQUARE', + 10736 : 'ERROR-BARRED WHITE DIAMOND', + 10737 : 'ERROR-BARRED BLACK DIAMOND', + 10738 : 'ERROR-BARRED WHITE CIRCLE', + 10739 : 'ERROR-BARRED BLACK CIRCLE', + 10740 : 'RULE-DELAYED', + 10741 : 'REVERSE SOLIDUS OPERATOR', + 10742 : 'SOLIDUS WITH OVERBAR', + 10743 : 'REVERSE SOLIDUS WITH HORIZONTAL STROKE', + 10744 : 'BIG SOLIDUS', + 10745 : 'BIG REVERSE SOLIDUS', + 10746 : 'DOUBLE PLUS', + 10747 : 'TRIPLE PLUS', + 10748 : 'LEFT-POINTING CURVED ANGLE BRACKET', + 10749 : 'RIGHT-POINTING CURVED ANGLE BRACKET', + 10750 : 'TINY', + 10751 : 'MINY', + 10752 : 'N-ARY CIRCLED DOT OPERATOR', + 10753 : 'N-ARY CIRCLED PLUS OPERATOR', + 10754 : 'N-ARY CIRCLED TIMES OPERATOR', + 10755 : 'N-ARY UNION OPERATOR WITH DOT', + 10756 : 'N-ARY UNION OPERATOR WITH PLUS', + 10757 : 'N-ARY SQUARE INTERSECTION OPERATOR', + 10758 : 'N-ARY SQUARE UNION OPERATOR', + 10759 : 'TWO LOGICAL AND OPERATOR', + 10760 : 'TWO LOGICAL OR OPERATOR', + 10761 : 'N-ARY TIMES OPERATOR', + 10762 : 'MODULO TWO SUM', + 10763 : 'SUMMATION WITH INTEGRAL', + 10764 : 'QUADRUPLE INTEGRAL OPERATOR', + 10765 : 'FINITE PART INTEGRAL', + 10766 : 'INTEGRAL WITH DOUBLE STROKE', + 10767 : 'INTEGRAL AVERAGE WITH SLASH', + 10768 : 'CIRCULATION FUNCTION', + 10769 : 'ANTICLOCKWISE INTEGRATION', + 10770 : 'LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE', + 10771 : 'LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE', + 10772 : 'LINE INTEGRATION NOT INCLUDING THE POLE', + 10773 : 'INTEGRAL AROUND A POINT OPERATOR', + 10774 : 'QUATERNION INTEGRAL OPERATOR', + 10775 : 'INTEGRAL WITH LEFTWARDS ARROW WITH HOOK', + 10776 : 'INTEGRAL WITH TIMES SIGN', + 10777 : 'INTEGRAL WITH INTERSECTION', + 10778 : 'INTEGRAL WITH UNION', + 10779 : 'INTEGRAL WITH OVERBAR', + 10780 : 'INTEGRAL WITH UNDERBAR', + 10781 : 'JOIN', + 10782 : 'LARGE LEFT TRIANGLE OPERATOR', + 10783 : 'Z NOTATION SCHEMA COMPOSITION', + 10784 : 'Z NOTATION SCHEMA PIPING', + 10785 : 'Z NOTATION SCHEMA PROJECTION', + 10786 : 'PLUS SIGN WITH SMALL CIRCLE ABOVE', + 10787 : 'PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE', + 10788 : 'PLUS SIGN WITH TILDE ABOVE', + 10789 : 'PLUS SIGN WITH DOT BELOW', + 10790 : 'PLUS SIGN WITH TILDE BELOW', + 10791 : 'PLUS SIGN WITH SUBSCRIPT TWO', + 10792 : 'PLUS SIGN WITH BLACK TRIANGLE', + 10793 : 'MINUS SIGN WITH COMMA ABOVE', + 10794 : 'MINUS SIGN WITH DOT BELOW', + 10795 : 'MINUS SIGN WITH FALLING DOTS', + 10796 : 'MINUS SIGN WITH RISING DOTS', + 10797 : 'PLUS SIGN IN LEFT HALF CIRCLE', + 10798 : 'PLUS SIGN IN RIGHT HALF CIRCLE', + 10799 : 'VECTOR OR CROSS PRODUCT', + 10800 : 'MULTIPLICATION SIGN WITH DOT ABOVE', + 10801 : 'MULTIPLICATION SIGN WITH UNDERBAR', + 10802 : 'SEMIDIRECT PRODUCT WITH BOTTOM CLOSED', + 10803 : 'SMASH PRODUCT', + 10804 : 'MULTIPLICATION SIGN IN LEFT HALF CIRCLE', + 10805 : 'MULTIPLICATION SIGN IN RIGHT HALF CIRCLE', + 10806 : 'CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT', + 10807 : 'MULTIPLICATION SIGN IN DOUBLE CIRCLE', + 10808 : 'CIRCLED DIVISION SIGN', + 10809 : 'PLUS SIGN IN TRIANGLE', + 10810 : 'MINUS SIGN IN TRIANGLE', + 10811 : 'MULTIPLICATION SIGN IN TRIANGLE', + 10812 : 'INTERIOR PRODUCT', + 10813 : 'RIGHTHAND INTERIOR PRODUCT', + 10814 : 'Z NOTATION RELATIONAL COMPOSITION', + 10815 : 'AMALGAMATION OR COPRODUCT', + 10816 : 'INTERSECTION WITH DOT', + 10817 : 'UNION WITH MINUS SIGN', + 10818 : 'UNION WITH OVERBAR', + 10819 : 'INTERSECTION WITH OVERBAR', + 10820 : 'INTERSECTION WITH LOGICAL AND', + 10821 : 'UNION WITH LOGICAL OR', + 10822 : 'UNION ABOVE INTERSECTION', + 10823 : 'INTERSECTION ABOVE UNION', + 10824 : 'UNION ABOVE BAR ABOVE INTERSECTION', + 10825 : 'INTERSECTION ABOVE BAR ABOVE UNION', + 10826 : 'UNION BESIDE AND JOINED WITH UNION', + 10827 : 'INTERSECTION BESIDE AND JOINED WITH INTERSECTION', + 10828 : 'CLOSED UNION WITH SERIFS', + 10829 : 'CLOSED INTERSECTION WITH SERIFS', + 10830 : 'DOUBLE SQUARE INTERSECTION', + 10831 : 'DOUBLE SQUARE UNION', + 10832 : 'CLOSED UNION WITH SERIFS AND SMASH PRODUCT', + 10833 : 'LOGICAL AND WITH DOT ABOVE', + 10834 : 'LOGICAL OR WITH DOT ABOVE', + 10835 : 'DOUBLE LOGICAL AND', + 10836 : 'DOUBLE LOGICAL OR', + 10837 : 'TWO INTERSECTING LOGICAL AND', + 10838 : 'TWO INTERSECTING LOGICAL OR', + 10839 : 'SLOPING LARGE OR', + 10840 : 'SLOPING LARGE AND', + 10841 : 'LOGICAL OR OVERLAPPING LOGICAL AND', + 10842 : 'LOGICAL AND WITH MIDDLE STEM', + 10843 : 'LOGICAL OR WITH MIDDLE STEM', + 10844 : 'LOGICAL AND WITH HORIZONTAL DASH', + 10845 : 'LOGICAL OR WITH HORIZONTAL DASH', + 10846 : 'LOGICAL AND WITH DOUBLE OVERBAR', + 10847 : 'LOGICAL AND WITH UNDERBAR', + 10848 : 'LOGICAL AND WITH DOUBLE UNDERBAR', + 10849 : 'SMALL VEE WITH UNDERBAR', + 10850 : 'LOGICAL OR WITH DOUBLE OVERBAR', + 10851 : 'LOGICAL OR WITH DOUBLE UNDERBAR', + 10852 : 'Z NOTATION DOMAIN ANTIRESTRICTION', + 10853 : 'Z NOTATION RANGE ANTIRESTRICTION', + 10854 : 'EQUALS SIGN WITH DOT BELOW', + 10855 : 'IDENTICAL WITH DOT ABOVE', + 10856 : 'TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE', + 10857 : 'TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE', + 10858 : 'TILDE OPERATOR WITH DOT ABOVE', + 10859 : 'TILDE OPERATOR WITH RISING DOTS', + 10860 : 'SIMILAR MINUS SIMILAR', + 10861 : 'CONGRUENT WITH DOT ABOVE', + 10862 : 'EQUALS WITH ASTERISK', + 10863 : 'ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT', + 10864 : 'APPROXIMATELY EQUAL OR EQUAL TO', + 10865 : 'EQUALS SIGN ABOVE PLUS SIGN', + 10866 : 'PLUS SIGN ABOVE EQUALS SIGN', + 10867 : 'EQUALS SIGN ABOVE TILDE OPERATOR', + 10868 : 'DOUBLE COLON EQUAL', + 10869 : 'TWO CONSECUTIVE EQUALS SIGNS', + 10870 : 'THREE CONSECUTIVE EQUALS SIGNS', + 10871 : 'EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW', + 10872 : 'EQUIVALENT WITH FOUR DOTS ABOVE', + 10873 : 'LESS-THAN WITH CIRCLE INSIDE', + 10874 : 'GREATER-THAN WITH CIRCLE INSIDE', + 10875 : 'LESS-THAN WITH QUESTION MARK ABOVE', + 10876 : 'GREATER-THAN WITH QUESTION MARK ABOVE', + 10877 : 'LESS-THAN OR SLANTED EQUAL TO', + 10878 : 'GREATER-THAN OR SLANTED EQUAL TO', + 10879 : 'LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE', + 10880 : 'GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE', + 10881 : 'LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE', + 10882 : 'GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE', + 10883 : 'LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT', + 10884 : 'GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT', + 10885 : 'LESS-THAN OR APPROXIMATE', + 10886 : 'GREATER-THAN OR APPROXIMATE', + 10887 : 'LESS-THAN AND SINGLE-LINE NOT EQUAL TO', + 10888 : 'GREATER-THAN AND SINGLE-LINE NOT EQUAL TO', + 10889 : 'LESS-THAN AND NOT APPROXIMATE', + 10890 : 'GREATER-THAN AND NOT APPROXIMATE', + 10891 : 'LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN', + 10892 : 'GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN', + 10893 : 'LESS-THAN ABOVE SIMILAR OR EQUAL', + 10894 : 'GREATER-THAN ABOVE SIMILAR OR EQUAL', + 10895 : 'LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN', + 10896 : 'GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN', + 10897 : 'LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL', + 10898 : 'GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL', + 10899 : 'LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL', + 10900 : 'GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL', + 10901 : 'SLANTED EQUAL TO OR LESS-THAN', + 10902 : 'SLANTED EQUAL TO OR GREATER-THAN', + 10903 : 'SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE', + 10904 : 'SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE', + 10905 : 'DOUBLE-LINE EQUAL TO OR LESS-THAN', + 10906 : 'DOUBLE-LINE EQUAL TO OR GREATER-THAN', + 10907 : 'DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN', + 10908 : 'DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN', + 10909 : 'SIMILAR OR LESS-THAN', + 10910 : 'SIMILAR OR GREATER-THAN', + 10911 : 'SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN', + 10912 : 'SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN', + 10913 : 'DOUBLE NESTED LESS-THAN', + 10914 : 'DOUBLE NESTED GREATER-THAN', + 10915 : 'DOUBLE NESTED LESS-THAN WITH UNDERBAR', + 10916 : 'GREATER-THAN OVERLAPPING LESS-THAN', + 10917 : 'GREATER-THAN BESIDE LESS-THAN', + 10918 : 'LESS-THAN CLOSED BY CURVE', + 10919 : 'GREATER-THAN CLOSED BY CURVE', + 10920 : 'LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL', + 10921 : 'GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL', + 10922 : 'SMALLER THAN', + 10923 : 'LARGER THAN', + 10924 : 'SMALLER THAN OR EQUAL TO', + 10925 : 'LARGER THAN OR EQUAL TO', + 10926 : 'EQUALS SIGN WITH BUMPY ABOVE', + 10927 : 'PRECEDES ABOVE SINGLE-LINE EQUALS SIGN', + 10928 : 'SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN', + 10929 : 'PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO', + 10930 : 'SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO', + 10931 : 'PRECEDES ABOVE EQUALS SIGN', + 10932 : 'SUCCEEDS ABOVE EQUALS SIGN', + 10933 : 'PRECEDES ABOVE NOT EQUAL TO', + 10934 : 'SUCCEEDS ABOVE NOT EQUAL TO', + 10935 : 'PRECEDES ABOVE ALMOST EQUAL TO', + 10936 : 'SUCCEEDS ABOVE ALMOST EQUAL TO', + 10937 : 'PRECEDES ABOVE NOT ALMOST EQUAL TO', + 10938 : 'SUCCEEDS ABOVE NOT ALMOST EQUAL TO', + 10939 : 'DOUBLE PRECEDES', + 10940 : 'DOUBLE SUCCEEDS', + 10941 : 'SUBSET WITH DOT', + 10942 : 'SUPERSET WITH DOT', + 10943 : 'SUBSET WITH PLUS SIGN BELOW', + 10944 : 'SUPERSET WITH PLUS SIGN BELOW', + 10945 : 'SUBSET WITH MULTIPLICATION SIGN BELOW', + 10946 : 'SUPERSET WITH MULTIPLICATION SIGN BELOW', + 10947 : 'SUBSET OF OR EQUAL TO WITH DOT ABOVE', + 10948 : 'SUPERSET OF OR EQUAL TO WITH DOT ABOVE', + 10949 : 'SUBSET OF ABOVE EQUALS SIGN', + 10950 : 'SUPERSET OF ABOVE EQUALS SIGN', + 10951 : 'SUBSET OF ABOVE TILDE OPERATOR', + 10952 : 'SUPERSET OF ABOVE TILDE OPERATOR', + 10953 : 'SUBSET OF ABOVE ALMOST EQUAL TO', + 10954 : 'SUPERSET OF ABOVE ALMOST EQUAL TO', + 10955 : 'SUBSET OF ABOVE NOT EQUAL TO', + 10956 : 'SUPERSET OF ABOVE NOT EQUAL TO', + 10957 : 'SQUARE LEFT OPEN BOX OPERATOR', + 10958 : 'SQUARE RIGHT OPEN BOX OPERATOR', + 10959 : 'CLOSED SUBSET', + 10960 : 'CLOSED SUPERSET', + 10961 : 'CLOSED SUBSET OR EQUAL TO', + 10962 : 'CLOSED SUPERSET OR EQUAL TO', + 10963 : 'SUBSET ABOVE SUPERSET', + 10964 : 'SUPERSET ABOVE SUBSET', + 10965 : 'SUBSET ABOVE SUBSET', + 10966 : 'SUPERSET ABOVE SUPERSET', + 10967 : 'SUPERSET BESIDE SUBSET', + 10968 : 'SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET', + 10969 : 'ELEMENT OF OPENING DOWNWARDS', + 10970 : 'PITCHFORK WITH TEE TOP', + 10971 : 'TRANSVERSAL INTERSECTION', + 10972 : 'FORKING', + 10973 : 'NONFORKING', + 10974 : 'SHORT LEFT TACK', + 10975 : 'SHORT DOWN TACK', + 10976 : 'SHORT UP TACK', + 10977 : 'PERPENDICULAR WITH S', + 10978 : 'VERTICAL BAR TRIPLE RIGHT TURNSTILE', + 10979 : 'DOUBLE VERTICAL BAR LEFT TURNSTILE', + 10980 : 'VERTICAL BAR DOUBLE LEFT TURNSTILE', + 10981 : 'DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE', + 10982 : 'LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL', + 10983 : 'SHORT DOWN TACK WITH OVERBAR', + 10984 : 'SHORT UP TACK WITH UNDERBAR', + 10985 : 'SHORT UP TACK ABOVE SHORT DOWN TACK', + 10986 : 'DOUBLE DOWN TACK', + 10987 : 'DOUBLE UP TACK', + 10988 : 'DOUBLE STROKE NOT SIGN', + 10989 : 'REVERSED DOUBLE STROKE NOT SIGN', + 10990 : 'DOES NOT DIVIDE WITH REVERSED NEGATION SLASH', + 10991 : 'VERTICAL LINE WITH CIRCLE ABOVE', + 10992 : 'VERTICAL LINE WITH CIRCLE BELOW', + 10993 : 'DOWN TACK WITH CIRCLE BELOW', + 10994 : 'PARALLEL WITH HORIZONTAL STROKE', + 10995 : 'PARALLEL WITH TILDE OPERATOR', + 10996 : 'TRIPLE VERTICAL BAR BINARY RELATION', + 10997 : 'TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE', + 10998 : 'TRIPLE COLON OPERATOR', + 10999 : 'TRIPLE NESTED LESS-THAN', + 11000 : 'TRIPLE NESTED GREATER-THAN', + 11001 : 'DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO', + 11002 : 'DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO', + 11003 : 'TRIPLE SOLIDUS BINARY RELATION', + 11004 : 'LARGE TRIPLE VERTICAL BAR OPERATOR', + 11005 : 'DOUBLE SOLIDUS OPERATOR', + 11006 : 'WHITE VERTICAL BAR', + 11007 : 'N-ARY WHITE VERTICAL BAR', + 11904 : 'CJK RADICAL REPEAT', + 11905 : 'CJK RADICAL CLIFF', + 11906 : 'CJK RADICAL SECOND ONE', + 11907 : 'CJK RADICAL SECOND TWO', + 11908 : 'CJK RADICAL SECOND THREE', + 11909 : 'CJK RADICAL PERSON', + 11910 : 'CJK RADICAL BOX', + 11911 : 'CJK RADICAL TABLE', + 11912 : 'CJK RADICAL KNIFE ONE', + 11913 : 'CJK RADICAL KNIFE TWO', + 11914 : 'CJK RADICAL DIVINATION', + 11915 : 'CJK RADICAL SEAL', + 11916 : 'CJK RADICAL SMALL ONE', + 11917 : 'CJK RADICAL SMALL TWO', + 11918 : 'CJK RADICAL LAME ONE', + 11919 : 'CJK RADICAL LAME TWO', + 11920 : 'CJK RADICAL LAME THREE', + 11921 : 'CJK RADICAL LAME FOUR', + 11922 : 'CJK RADICAL SNAKE', + 11923 : 'CJK RADICAL THREAD', + 11924 : 'CJK RADICAL SNOUT ONE', + 11925 : 'CJK RADICAL SNOUT TWO', + 11926 : 'CJK RADICAL HEART ONE', + 11927 : 'CJK RADICAL HEART TWO', + 11928 : 'CJK RADICAL HAND', + 11929 : 'CJK RADICAL RAP', + 11931 : 'CJK RADICAL CHOKE', + 11932 : 'CJK RADICAL SUN', + 11933 : 'CJK RADICAL MOON', + 11934 : 'CJK RADICAL DEATH', + 11935 : 'CJK RADICAL MOTHER', + 11936 : 'CJK RADICAL CIVILIAN', + 11937 : 'CJK RADICAL WATER ONE', + 11938 : 'CJK RADICAL WATER TWO', + 11939 : 'CJK RADICAL FIRE', + 11940 : 'CJK RADICAL PAW ONE', + 11941 : 'CJK RADICAL PAW TWO', + 11942 : 'CJK RADICAL SIMPLIFIED HALF TREE TRUNK', + 11943 : 'CJK RADICAL COW', + 11944 : 'CJK RADICAL DOG', + 11945 : 'CJK RADICAL JADE', + 11946 : 'CJK RADICAL BOLT OF CLOTH', + 11947 : 'CJK RADICAL EYE', + 11948 : 'CJK RADICAL SPIRIT ONE', + 11949 : 'CJK RADICAL SPIRIT TWO', + 11950 : 'CJK RADICAL BAMBOO', + 11951 : 'CJK RADICAL SILK', + 11952 : 'CJK RADICAL C-SIMPLIFIED SILK', + 11953 : 'CJK RADICAL NET ONE', + 11954 : 'CJK RADICAL NET TWO', + 11955 : 'CJK RADICAL NET THREE', + 11956 : 'CJK RADICAL NET FOUR', + 11957 : 'CJK RADICAL MESH', + 11958 : 'CJK RADICAL SHEEP', + 11959 : 'CJK RADICAL RAM', + 11960 : 'CJK RADICAL EWE', + 11961 : 'CJK RADICAL OLD', + 11962 : 'CJK RADICAL BRUSH ONE', + 11963 : 'CJK RADICAL BRUSH TWO', + 11964 : 'CJK RADICAL MEAT', + 11965 : 'CJK RADICAL MORTAR', + 11966 : 'CJK RADICAL GRASS ONE', + 11967 : 'CJK RADICAL GRASS TWO', + 11968 : 'CJK RADICAL GRASS THREE', + 11969 : 'CJK RADICAL TIGER', + 11970 : 'CJK RADICAL CLOTHES', + 11971 : 'CJK RADICAL WEST ONE', + 11972 : 'CJK RADICAL WEST TWO', + 11973 : 'CJK RADICAL C-SIMPLIFIED SEE', + 11974 : 'CJK RADICAL SIMPLIFIED HORN', + 11975 : 'CJK RADICAL HORN', + 11976 : 'CJK RADICAL C-SIMPLIFIED SPEECH', + 11977 : 'CJK RADICAL C-SIMPLIFIED SHELL', + 11978 : 'CJK RADICAL FOOT', + 11979 : 'CJK RADICAL C-SIMPLIFIED CART', + 11980 : 'CJK RADICAL SIMPLIFIED WALK', + 11981 : 'CJK RADICAL WALK ONE', + 11982 : 'CJK RADICAL WALK TWO', + 11983 : 'CJK RADICAL CITY', + 11984 : 'CJK RADICAL C-SIMPLIFIED GOLD', + 11985 : 'CJK RADICAL LONG ONE', + 11986 : 'CJK RADICAL LONG TWO', + 11987 : 'CJK RADICAL C-SIMPLIFIED LONG', + 11988 : 'CJK RADICAL C-SIMPLIFIED GATE', + 11989 : 'CJK RADICAL MOUND ONE', + 11990 : 'CJK RADICAL MOUND TWO', + 11991 : 'CJK RADICAL RAIN', + 11992 : 'CJK RADICAL BLUE', + 11993 : 'CJK RADICAL C-SIMPLIFIED TANNED LEATHER', + 11994 : 'CJK RADICAL C-SIMPLIFIED LEAF', + 11995 : 'CJK RADICAL C-SIMPLIFIED WIND', + 11996 : 'CJK RADICAL C-SIMPLIFIED FLY', + 11997 : 'CJK RADICAL EAT ONE', + 11998 : 'CJK RADICAL EAT TWO', + 11999 : 'CJK RADICAL EAT THREE', + 12000 : 'CJK RADICAL C-SIMPLIFIED EAT', + 12001 : 'CJK RADICAL HEAD', + 12002 : 'CJK RADICAL C-SIMPLIFIED HORSE', + 12003 : 'CJK RADICAL BONE', + 12004 : 'CJK RADICAL GHOST', + 12005 : 'CJK RADICAL C-SIMPLIFIED FISH', + 12006 : 'CJK RADICAL C-SIMPLIFIED BIRD', + 12007 : 'CJK RADICAL C-SIMPLIFIED SALT', + 12008 : 'CJK RADICAL SIMPLIFIED WHEAT', + 12009 : 'CJK RADICAL SIMPLIFIED YELLOW', + 12010 : 'CJK RADICAL C-SIMPLIFIED FROG', + 12011 : 'CJK RADICAL J-SIMPLIFIED EVEN', + 12012 : 'CJK RADICAL C-SIMPLIFIED EVEN', + 12013 : 'CJK RADICAL J-SIMPLIFIED TOOTH', + 12014 : 'CJK RADICAL C-SIMPLIFIED TOOTH', + 12015 : 'CJK RADICAL J-SIMPLIFIED DRAGON', + 12016 : 'CJK RADICAL C-SIMPLIFIED DRAGON', + 12017 : 'CJK RADICAL TURTLE', + 12018 : 'CJK RADICAL J-SIMPLIFIED TURTLE', + 12019 : 'CJK RADICAL C-SIMPLIFIED TURTLE', + 12032 : 'KANGXI RADICAL ONE', + 12033 : 'KANGXI RADICAL LINE', + 12034 : 'KANGXI RADICAL DOT', + 12035 : 'KANGXI RADICAL SLASH', + 12036 : 'KANGXI RADICAL SECOND', + 12037 : 'KANGXI RADICAL HOOK', + 12038 : 'KANGXI RADICAL TWO', + 12039 : 'KANGXI RADICAL LID', + 12040 : 'KANGXI RADICAL MAN', + 12041 : 'KANGXI RADICAL LEGS', + 12042 : 'KANGXI RADICAL ENTER', + 12043 : 'KANGXI RADICAL EIGHT', + 12044 : 'KANGXI RADICAL DOWN BOX', + 12045 : 'KANGXI RADICAL COVER', + 12046 : 'KANGXI RADICAL ICE', + 12047 : 'KANGXI RADICAL TABLE', + 12048 : 'KANGXI RADICAL OPEN BOX', + 12049 : 'KANGXI RADICAL KNIFE', + 12050 : 'KANGXI RADICAL POWER', + 12051 : 'KANGXI RADICAL WRAP', + 12052 : 'KANGXI RADICAL SPOON', + 12053 : 'KANGXI RADICAL RIGHT OPEN BOX', + 12054 : 'KANGXI RADICAL HIDING ENCLOSURE', + 12055 : 'KANGXI RADICAL TEN', + 12056 : 'KANGXI RADICAL DIVINATION', + 12057 : 'KANGXI RADICAL SEAL', + 12058 : 'KANGXI RADICAL CLIFF', + 12059 : 'KANGXI RADICAL PRIVATE', + 12060 : 'KANGXI RADICAL AGAIN', + 12061 : 'KANGXI RADICAL MOUTH', + 12062 : 'KANGXI RADICAL ENCLOSURE', + 12063 : 'KANGXI RADICAL EARTH', + 12064 : 'KANGXI RADICAL SCHOLAR', + 12065 : 'KANGXI RADICAL GO', + 12066 : 'KANGXI RADICAL GO SLOWLY', + 12067 : 'KANGXI RADICAL EVENING', + 12068 : 'KANGXI RADICAL BIG', + 12069 : 'KANGXI RADICAL WOMAN', + 12070 : 'KANGXI RADICAL CHILD', + 12071 : 'KANGXI RADICAL ROOF', + 12072 : 'KANGXI RADICAL INCH', + 12073 : 'KANGXI RADICAL SMALL', + 12074 : 'KANGXI RADICAL LAME', + 12075 : 'KANGXI RADICAL CORPSE', + 12076 : 'KANGXI RADICAL SPROUT', + 12077 : 'KANGXI RADICAL MOUNTAIN', + 12078 : 'KANGXI RADICAL RIVER', + 12079 : 'KANGXI RADICAL WORK', + 12080 : 'KANGXI RADICAL ONESELF', + 12081 : 'KANGXI RADICAL TURBAN', + 12082 : 'KANGXI RADICAL DRY', + 12083 : 'KANGXI RADICAL SHORT THREAD', + 12084 : 'KANGXI RADICAL DOTTED CLIFF', + 12085 : 'KANGXI RADICAL LONG STRIDE', + 12086 : 'KANGXI RADICAL TWO HANDS', + 12087 : 'KANGXI RADICAL SHOOT', + 12088 : 'KANGXI RADICAL BOW', + 12089 : 'KANGXI RADICAL SNOUT', + 12090 : 'KANGXI RADICAL BRISTLE', + 12091 : 'KANGXI RADICAL STEP', + 12092 : 'KANGXI RADICAL HEART', + 12093 : 'KANGXI RADICAL HALBERD', + 12094 : 'KANGXI RADICAL DOOR', + 12095 : 'KANGXI RADICAL HAND', + 12096 : 'KANGXI RADICAL BRANCH', + 12097 : 'KANGXI RADICAL RAP', + 12098 : 'KANGXI RADICAL SCRIPT', + 12099 : 'KANGXI RADICAL DIPPER', + 12100 : 'KANGXI RADICAL AXE', + 12101 : 'KANGXI RADICAL SQUARE', + 12102 : 'KANGXI RADICAL NOT', + 12103 : 'KANGXI RADICAL SUN', + 12104 : 'KANGXI RADICAL SAY', + 12105 : 'KANGXI RADICAL MOON', + 12106 : 'KANGXI RADICAL TREE', + 12107 : 'KANGXI RADICAL LACK', + 12108 : 'KANGXI RADICAL STOP', + 12109 : 'KANGXI RADICAL DEATH', + 12110 : 'KANGXI RADICAL WEAPON', + 12111 : 'KANGXI RADICAL DO NOT', + 12112 : 'KANGXI RADICAL COMPARE', + 12113 : 'KANGXI RADICAL FUR', + 12114 : 'KANGXI RADICAL CLAN', + 12115 : 'KANGXI RADICAL STEAM', + 12116 : 'KANGXI RADICAL WATER', + 12117 : 'KANGXI RADICAL FIRE', + 12118 : 'KANGXI RADICAL CLAW', + 12119 : 'KANGXI RADICAL FATHER', + 12120 : 'KANGXI RADICAL DOUBLE X', + 12121 : 'KANGXI RADICAL HALF TREE TRUNK', + 12122 : 'KANGXI RADICAL SLICE', + 12123 : 'KANGXI RADICAL FANG', + 12124 : 'KANGXI RADICAL COW', + 12125 : 'KANGXI RADICAL DOG', + 12126 : 'KANGXI RADICAL PROFOUND', + 12127 : 'KANGXI RADICAL JADE', + 12128 : 'KANGXI RADICAL MELON', + 12129 : 'KANGXI RADICAL TILE', + 12130 : 'KANGXI RADICAL SWEET', + 12131 : 'KANGXI RADICAL LIFE', + 12132 : 'KANGXI RADICAL USE', + 12133 : 'KANGXI RADICAL FIELD', + 12134 : 'KANGXI RADICAL BOLT OF CLOTH', + 12135 : 'KANGXI RADICAL SICKNESS', + 12136 : 'KANGXI RADICAL DOTTED TENT', + 12137 : 'KANGXI RADICAL WHITE', + 12138 : 'KANGXI RADICAL SKIN', + 12139 : 'KANGXI RADICAL DISH', + 12140 : 'KANGXI RADICAL EYE', + 12141 : 'KANGXI RADICAL SPEAR', + 12142 : 'KANGXI RADICAL ARROW', + 12143 : 'KANGXI RADICAL STONE', + 12144 : 'KANGXI RADICAL SPIRIT', + 12145 : 'KANGXI RADICAL TRACK', + 12146 : 'KANGXI RADICAL GRAIN', + 12147 : 'KANGXI RADICAL CAVE', + 12148 : 'KANGXI RADICAL STAND', + 12149 : 'KANGXI RADICAL BAMBOO', + 12150 : 'KANGXI RADICAL RICE', + 12151 : 'KANGXI RADICAL SILK', + 12152 : 'KANGXI RADICAL JAR', + 12153 : 'KANGXI RADICAL NET', + 12154 : 'KANGXI RADICAL SHEEP', + 12155 : 'KANGXI RADICAL FEATHER', + 12156 : 'KANGXI RADICAL OLD', + 12157 : 'KANGXI RADICAL AND', + 12158 : 'KANGXI RADICAL PLOW', + 12159 : 'KANGXI RADICAL EAR', + 12160 : 'KANGXI RADICAL BRUSH', + 12161 : 'KANGXI RADICAL MEAT', + 12162 : 'KANGXI RADICAL MINISTER', + 12163 : 'KANGXI RADICAL SELF', + 12164 : 'KANGXI RADICAL ARRIVE', + 12165 : 'KANGXI RADICAL MORTAR', + 12166 : 'KANGXI RADICAL TONGUE', + 12167 : 'KANGXI RADICAL OPPOSE', + 12168 : 'KANGXI RADICAL BOAT', + 12169 : 'KANGXI RADICAL STOPPING', + 12170 : 'KANGXI RADICAL COLOR', + 12171 : 'KANGXI RADICAL GRASS', + 12172 : 'KANGXI RADICAL TIGER', + 12173 : 'KANGXI RADICAL INSECT', + 12174 : 'KANGXI RADICAL BLOOD', + 12175 : 'KANGXI RADICAL WALK ENCLOSURE', + 12176 : 'KANGXI RADICAL CLOTHES', + 12177 : 'KANGXI RADICAL WEST', + 12178 : 'KANGXI RADICAL SEE', + 12179 : 'KANGXI RADICAL HORN', + 12180 : 'KANGXI RADICAL SPEECH', + 12181 : 'KANGXI RADICAL VALLEY', + 12182 : 'KANGXI RADICAL BEAN', + 12183 : 'KANGXI RADICAL PIG', + 12184 : 'KANGXI RADICAL BADGER', + 12185 : 'KANGXI RADICAL SHELL', + 12186 : 'KANGXI RADICAL RED', + 12187 : 'KANGXI RADICAL RUN', + 12188 : 'KANGXI RADICAL FOOT', + 12189 : 'KANGXI RADICAL BODY', + 12190 : 'KANGXI RADICAL CART', + 12191 : 'KANGXI RADICAL BITTER', + 12192 : 'KANGXI RADICAL MORNING', + 12193 : 'KANGXI RADICAL WALK', + 12194 : 'KANGXI RADICAL CITY', + 12195 : 'KANGXI RADICAL WINE', + 12196 : 'KANGXI RADICAL DISTINGUISH', + 12197 : 'KANGXI RADICAL VILLAGE', + 12198 : 'KANGXI RADICAL GOLD', + 12199 : 'KANGXI RADICAL LONG', + 12200 : 'KANGXI RADICAL GATE', + 12201 : 'KANGXI RADICAL MOUND', + 12202 : 'KANGXI RADICAL SLAVE', + 12203 : 'KANGXI RADICAL SHORT TAILED BIRD', + 12204 : 'KANGXI RADICAL RAIN', + 12205 : 'KANGXI RADICAL BLUE', + 12206 : 'KANGXI RADICAL WRONG', + 12207 : 'KANGXI RADICAL FACE', + 12208 : 'KANGXI RADICAL LEATHER', + 12209 : 'KANGXI RADICAL TANNED LEATHER', + 12210 : 'KANGXI RADICAL LEEK', + 12211 : 'KANGXI RADICAL SOUND', + 12212 : 'KANGXI RADICAL LEAF', + 12213 : 'KANGXI RADICAL WIND', + 12214 : 'KANGXI RADICAL FLY', + 12215 : 'KANGXI RADICAL EAT', + 12216 : 'KANGXI RADICAL HEAD', + 12217 : 'KANGXI RADICAL FRAGRANT', + 12218 : 'KANGXI RADICAL HORSE', + 12219 : 'KANGXI RADICAL BONE', + 12220 : 'KANGXI RADICAL TALL', + 12221 : 'KANGXI RADICAL HAIR', + 12222 : 'KANGXI RADICAL FIGHT', + 12223 : 'KANGXI RADICAL SACRIFICIAL WINE', + 12224 : 'KANGXI RADICAL CAULDRON', + 12225 : 'KANGXI RADICAL GHOST', + 12226 : 'KANGXI RADICAL FISH', + 12227 : 'KANGXI RADICAL BIRD', + 12228 : 'KANGXI RADICAL SALT', + 12229 : 'KANGXI RADICAL DEER', + 12230 : 'KANGXI RADICAL WHEAT', + 12231 : 'KANGXI RADICAL HEMP', + 12232 : 'KANGXI RADICAL YELLOW', + 12233 : 'KANGXI RADICAL MILLET', + 12234 : 'KANGXI RADICAL BLACK', + 12235 : 'KANGXI RADICAL EMBROIDERY', + 12236 : 'KANGXI RADICAL FROG', + 12237 : 'KANGXI RADICAL TRIPOD', + 12238 : 'KANGXI RADICAL DRUM', + 12239 : 'KANGXI RADICAL RAT', + 12240 : 'KANGXI RADICAL NOSE', + 12241 : 'KANGXI RADICAL EVEN', + 12242 : 'KANGXI RADICAL TOOTH', + 12243 : 'KANGXI RADICAL DRAGON', + 12244 : 'KANGXI RADICAL TURTLE', + 12245 : 'KANGXI RADICAL FLUTE', + 12272 : 'IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT', + 12273 : 'IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW', + 12274 : 'IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT', + 12275 : 'IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW', + 12276 : 'IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND', + 12277 : 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE', + 12278 : 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW', + 12279 : 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT', + 12280 : 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT', + 12281 : 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT', + 12282 : 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT', + 12283 : 'IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID', + 12288 : 'IDEOGRAPHIC SPACE', + 12289 : 'IDEOGRAPHIC COMMA', + 12290 : 'IDEOGRAPHIC FULL STOP', + 12291 : 'DITTO MARK', + 12292 : 'JAPANESE INDUSTRIAL STANDARD SYMBOL', + 12293 : 'IDEOGRAPHIC ITERATION MARK', + 12294 : 'IDEOGRAPHIC CLOSING MARK', + 12295 : 'IDEOGRAPHIC NUMBER ZERO', + 12296 : 'LEFT ANGLE BRACKET', + 12297 : 'RIGHT ANGLE BRACKET', + 12298 : 'LEFT DOUBLE ANGLE BRACKET', + 12299 : 'RIGHT DOUBLE ANGLE BRACKET', + 12300 : 'LEFT CORNER BRACKET', + 12301 : 'RIGHT CORNER BRACKET', + 12302 : 'LEFT WHITE CORNER BRACKET', + 12303 : 'RIGHT WHITE CORNER BRACKET', + 12304 : 'LEFT BLACK LENTICULAR BRACKET', + 12305 : 'RIGHT BLACK LENTICULAR BRACKET', + 12306 : 'POSTAL MARK', + 12307 : 'GETA MARK', + 12308 : 'LEFT TORTOISE SHELL BRACKET', + 12309 : 'RIGHT TORTOISE SHELL BRACKET', + 12310 : 'LEFT WHITE LENTICULAR BRACKET', + 12311 : 'RIGHT WHITE LENTICULAR BRACKET', + 12312 : 'LEFT WHITE TORTOISE SHELL BRACKET', + 12313 : 'RIGHT WHITE TORTOISE SHELL BRACKET', + 12314 : 'LEFT WHITE SQUARE BRACKET', + 12315 : 'RIGHT WHITE SQUARE BRACKET', + 12316 : 'WAVE DASH', + 12317 : 'REVERSED DOUBLE PRIME QUOTATION MARK', + 12318 : 'DOUBLE PRIME QUOTATION MARK', + 12319 : 'LOW DOUBLE PRIME QUOTATION MARK', + 12320 : 'POSTAL MARK FACE', + 12321 : 'HANGZHOU NUMERAL ONE', + 12322 : 'HANGZHOU NUMERAL TWO', + 12323 : 'HANGZHOU NUMERAL THREE', + 12324 : 'HANGZHOU NUMERAL FOUR', + 12325 : 'HANGZHOU NUMERAL FIVE', + 12326 : 'HANGZHOU NUMERAL SIX', + 12327 : 'HANGZHOU NUMERAL SEVEN', + 12328 : 'HANGZHOU NUMERAL EIGHT', + 12329 : 'HANGZHOU NUMERAL NINE', + 12330 : 'IDEOGRAPHIC LEVEL TONE MARK', + 12331 : 'IDEOGRAPHIC RISING TONE MARK', + 12332 : 'IDEOGRAPHIC DEPARTING TONE MARK', + 12333 : 'IDEOGRAPHIC ENTERING TONE MARK', + 12334 : 'HANGUL SINGLE DOT TONE MARK', + 12335 : 'HANGUL DOUBLE DOT TONE MARK', + 12336 : 'WAVY DASH', + 12337 : 'VERTICAL KANA REPEAT MARK', + 12338 : 'VERTICAL KANA REPEAT WITH VOICED SOUND MARK', + 12339 : 'VERTICAL KANA REPEAT MARK UPPER HALF', + 12340 : 'VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF', + 12341 : 'VERTICAL KANA REPEAT MARK LOWER HALF', + 12342 : 'CIRCLED POSTAL MARK', + 12343 : 'IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL', + 12344 : 'HANGZHOU NUMERAL TEN', + 12345 : 'HANGZHOU NUMERAL TWENTY', + 12346 : 'HANGZHOU NUMERAL THIRTY', + 12347 : 'VERTICAL IDEOGRAPHIC ITERATION MARK', + 12348 : 'MASU MARK', + 12349 : 'PART ALTERNATION MARK', + 12350 : 'IDEOGRAPHIC VARIATION INDICATOR', + 12351 : 'IDEOGRAPHIC HALF FILL SPACE', + 12353 : 'HIRAGANA LETTER SMALL A', + 12354 : 'HIRAGANA LETTER A', + 12355 : 'HIRAGANA LETTER SMALL I', + 12356 : 'HIRAGANA LETTER I', + 12357 : 'HIRAGANA LETTER SMALL U', + 12358 : 'HIRAGANA LETTER U', + 12359 : 'HIRAGANA LETTER SMALL E', + 12360 : 'HIRAGANA LETTER E', + 12361 : 'HIRAGANA LETTER SMALL O', + 12362 : 'HIRAGANA LETTER O', + 12363 : 'HIRAGANA LETTER KA', + 12364 : 'HIRAGANA LETTER GA', + 12365 : 'HIRAGANA LETTER KI', + 12366 : 'HIRAGANA LETTER GI', + 12367 : 'HIRAGANA LETTER KU', + 12368 : 'HIRAGANA LETTER GU', + 12369 : 'HIRAGANA LETTER KE', + 12370 : 'HIRAGANA LETTER GE', + 12371 : 'HIRAGANA LETTER KO', + 12372 : 'HIRAGANA LETTER GO', + 12373 : 'HIRAGANA LETTER SA', + 12374 : 'HIRAGANA LETTER ZA', + 12375 : 'HIRAGANA LETTER SI', + 12376 : 'HIRAGANA LETTER ZI', + 12377 : 'HIRAGANA LETTER SU', + 12378 : 'HIRAGANA LETTER ZU', + 12379 : 'HIRAGANA LETTER SE', + 12380 : 'HIRAGANA LETTER ZE', + 12381 : 'HIRAGANA LETTER SO', + 12382 : 'HIRAGANA LETTER ZO', + 12383 : 'HIRAGANA LETTER TA', + 12384 : 'HIRAGANA LETTER DA', + 12385 : 'HIRAGANA LETTER TI', + 12386 : 'HIRAGANA LETTER DI', + 12387 : 'HIRAGANA LETTER SMALL TU', + 12388 : 'HIRAGANA LETTER TU', + 12389 : 'HIRAGANA LETTER DU', + 12390 : 'HIRAGANA LETTER TE', + 12391 : 'HIRAGANA LETTER DE', + 12392 : 'HIRAGANA LETTER TO', + 12393 : 'HIRAGANA LETTER DO', + 12394 : 'HIRAGANA LETTER NA', + 12395 : 'HIRAGANA LETTER NI', + 12396 : 'HIRAGANA LETTER NU', + 12397 : 'HIRAGANA LETTER NE', + 12398 : 'HIRAGANA LETTER NO', + 12399 : 'HIRAGANA LETTER HA', + 12400 : 'HIRAGANA LETTER BA', + 12401 : 'HIRAGANA LETTER PA', + 12402 : 'HIRAGANA LETTER HI', + 12403 : 'HIRAGANA LETTER BI', + 12404 : 'HIRAGANA LETTER PI', + 12405 : 'HIRAGANA LETTER HU', + 12406 : 'HIRAGANA LETTER BU', + 12407 : 'HIRAGANA LETTER PU', + 12408 : 'HIRAGANA LETTER HE', + 12409 : 'HIRAGANA LETTER BE', + 12410 : 'HIRAGANA LETTER PE', + 12411 : 'HIRAGANA LETTER HO', + 12412 : 'HIRAGANA LETTER BO', + 12413 : 'HIRAGANA LETTER PO', + 12414 : 'HIRAGANA LETTER MA', + 12415 : 'HIRAGANA LETTER MI', + 12416 : 'HIRAGANA LETTER MU', + 12417 : 'HIRAGANA LETTER ME', + 12418 : 'HIRAGANA LETTER MO', + 12419 : 'HIRAGANA LETTER SMALL YA', + 12420 : 'HIRAGANA LETTER YA', + 12421 : 'HIRAGANA LETTER SMALL YU', + 12422 : 'HIRAGANA LETTER YU', + 12423 : 'HIRAGANA LETTER SMALL YO', + 12424 : 'HIRAGANA LETTER YO', + 12425 : 'HIRAGANA LETTER RA', + 12426 : 'HIRAGANA LETTER RI', + 12427 : 'HIRAGANA LETTER RU', + 12428 : 'HIRAGANA LETTER RE', + 12429 : 'HIRAGANA LETTER RO', + 12430 : 'HIRAGANA LETTER SMALL WA', + 12431 : 'HIRAGANA LETTER WA', + 12432 : 'HIRAGANA LETTER WI', + 12433 : 'HIRAGANA LETTER WE', + 12434 : 'HIRAGANA LETTER WO', + 12435 : 'HIRAGANA LETTER N', + 12436 : 'HIRAGANA LETTER VU', + 12437 : 'HIRAGANA LETTER SMALL KA', + 12438 : 'HIRAGANA LETTER SMALL KE', + 12441 : 'COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK', + 12442 : 'COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK', + 12443 : 'KATAKANA-HIRAGANA VOICED SOUND MARK', + 12444 : 'KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK', + 12445 : 'HIRAGANA ITERATION MARK', + 12446 : 'HIRAGANA VOICED ITERATION MARK', + 12447 : 'HIRAGANA DIGRAPH YORI', + 12448 : 'KATAKANA-HIRAGANA DOUBLE HYPHEN', + 12449 : 'KATAKANA LETTER SMALL A', + 12450 : 'KATAKANA LETTER A', + 12451 : 'KATAKANA LETTER SMALL I', + 12452 : 'KATAKANA LETTER I', + 12453 : 'KATAKANA LETTER SMALL U', + 12454 : 'KATAKANA LETTER U', + 12455 : 'KATAKANA LETTER SMALL E', + 12456 : 'KATAKANA LETTER E', + 12457 : 'KATAKANA LETTER SMALL O', + 12458 : 'KATAKANA LETTER O', + 12459 : 'KATAKANA LETTER KA', + 12460 : 'KATAKANA LETTER GA', + 12461 : 'KATAKANA LETTER KI', + 12462 : 'KATAKANA LETTER GI', + 12463 : 'KATAKANA LETTER KU', + 12464 : 'KATAKANA LETTER GU', + 12465 : 'KATAKANA LETTER KE', + 12466 : 'KATAKANA LETTER GE', + 12467 : 'KATAKANA LETTER KO', + 12468 : 'KATAKANA LETTER GO', + 12469 : 'KATAKANA LETTER SA', + 12470 : 'KATAKANA LETTER ZA', + 12471 : 'KATAKANA LETTER SI', + 12472 : 'KATAKANA LETTER ZI', + 12473 : 'KATAKANA LETTER SU', + 12474 : 'KATAKANA LETTER ZU', + 12475 : 'KATAKANA LETTER SE', + 12476 : 'KATAKANA LETTER ZE', + 12477 : 'KATAKANA LETTER SO', + 12478 : 'KATAKANA LETTER ZO', + 12479 : 'KATAKANA LETTER TA', + 12480 : 'KATAKANA LETTER DA', + 12481 : 'KATAKANA LETTER TI', + 12482 : 'KATAKANA LETTER DI', + 12483 : 'KATAKANA LETTER SMALL TU', + 12484 : 'KATAKANA LETTER TU', + 12485 : 'KATAKANA LETTER DU', + 12486 : 'KATAKANA LETTER TE', + 12487 : 'KATAKANA LETTER DE', + 12488 : 'KATAKANA LETTER TO', + 12489 : 'KATAKANA LETTER DO', + 12490 : 'KATAKANA LETTER NA', + 12491 : 'KATAKANA LETTER NI', + 12492 : 'KATAKANA LETTER NU', + 12493 : 'KATAKANA LETTER NE', + 12494 : 'KATAKANA LETTER NO', + 12495 : 'KATAKANA LETTER HA', + 12496 : 'KATAKANA LETTER BA', + 12497 : 'KATAKANA LETTER PA', + 12498 : 'KATAKANA LETTER HI', + 12499 : 'KATAKANA LETTER BI', + 12500 : 'KATAKANA LETTER PI', + 12501 : 'KATAKANA LETTER HU', + 12502 : 'KATAKANA LETTER BU', + 12503 : 'KATAKANA LETTER PU', + 12504 : 'KATAKANA LETTER HE', + 12505 : 'KATAKANA LETTER BE', + 12506 : 'KATAKANA LETTER PE', + 12507 : 'KATAKANA LETTER HO', + 12508 : 'KATAKANA LETTER BO', + 12509 : 'KATAKANA LETTER PO', + 12510 : 'KATAKANA LETTER MA', + 12511 : 'KATAKANA LETTER MI', + 12512 : 'KATAKANA LETTER MU', + 12513 : 'KATAKANA LETTER ME', + 12514 : 'KATAKANA LETTER MO', + 12515 : 'KATAKANA LETTER SMALL YA', + 12516 : 'KATAKANA LETTER YA', + 12517 : 'KATAKANA LETTER SMALL YU', + 12518 : 'KATAKANA LETTER YU', + 12519 : 'KATAKANA LETTER SMALL YO', + 12520 : 'KATAKANA LETTER YO', + 12521 : 'KATAKANA LETTER RA', + 12522 : 'KATAKANA LETTER RI', + 12523 : 'KATAKANA LETTER RU', + 12524 : 'KATAKANA LETTER RE', + 12525 : 'KATAKANA LETTER RO', + 12526 : 'KATAKANA LETTER SMALL WA', + 12527 : 'KATAKANA LETTER WA', + 12528 : 'KATAKANA LETTER WI', + 12529 : 'KATAKANA LETTER WE', + 12530 : 'KATAKANA LETTER WO', + 12531 : 'KATAKANA LETTER N', + 12532 : 'KATAKANA LETTER VU', + 12533 : 'KATAKANA LETTER SMALL KA', + 12534 : 'KATAKANA LETTER SMALL KE', + 12535 : 'KATAKANA LETTER VA', + 12536 : 'KATAKANA LETTER VI', + 12537 : 'KATAKANA LETTER VE', + 12538 : 'KATAKANA LETTER VO', + 12539 : 'KATAKANA MIDDLE DOT', + 12540 : 'KATAKANA-HIRAGANA PROLONGED SOUND MARK', + 12541 : 'KATAKANA ITERATION MARK', + 12542 : 'KATAKANA VOICED ITERATION MARK', + 12543 : 'KATAKANA DIGRAPH KOTO', + 12549 : 'BOPOMOFO LETTER B', + 12550 : 'BOPOMOFO LETTER P', + 12551 : 'BOPOMOFO LETTER M', + 12552 : 'BOPOMOFO LETTER F', + 12553 : 'BOPOMOFO LETTER D', + 12554 : 'BOPOMOFO LETTER T', + 12555 : 'BOPOMOFO LETTER N', + 12556 : 'BOPOMOFO LETTER L', + 12557 : 'BOPOMOFO LETTER G', + 12558 : 'BOPOMOFO LETTER K', + 12559 : 'BOPOMOFO LETTER H', + 12560 : 'BOPOMOFO LETTER J', + 12561 : 'BOPOMOFO LETTER Q', + 12562 : 'BOPOMOFO LETTER X', + 12563 : 'BOPOMOFO LETTER ZH', + 12564 : 'BOPOMOFO LETTER CH', + 12565 : 'BOPOMOFO LETTER SH', + 12566 : 'BOPOMOFO LETTER R', + 12567 : 'BOPOMOFO LETTER Z', + 12568 : 'BOPOMOFO LETTER C', + 12569 : 'BOPOMOFO LETTER S', + 12570 : 'BOPOMOFO LETTER A', + 12571 : 'BOPOMOFO LETTER O', + 12572 : 'BOPOMOFO LETTER E', + 12573 : 'BOPOMOFO LETTER EH', + 12574 : 'BOPOMOFO LETTER AI', + 12575 : 'BOPOMOFO LETTER EI', + 12576 : 'BOPOMOFO LETTER AU', + 12577 : 'BOPOMOFO LETTER OU', + 12578 : 'BOPOMOFO LETTER AN', + 12579 : 'BOPOMOFO LETTER EN', + 12580 : 'BOPOMOFO LETTER ANG', + 12581 : 'BOPOMOFO LETTER ENG', + 12582 : 'BOPOMOFO LETTER ER', + 12583 : 'BOPOMOFO LETTER I', + 12584 : 'BOPOMOFO LETTER U', + 12585 : 'BOPOMOFO LETTER IU', + 12586 : 'BOPOMOFO LETTER V', + 12587 : 'BOPOMOFO LETTER NG', + 12588 : 'BOPOMOFO LETTER GN', + 12593 : 'HANGUL LETTER KIYEOK', + 12594 : 'HANGUL LETTER SSANGKIYEOK', + 12595 : 'HANGUL LETTER KIYEOK-SIOS', + 12596 : 'HANGUL LETTER NIEUN', + 12597 : 'HANGUL LETTER NIEUN-CIEUC', + 12598 : 'HANGUL LETTER NIEUN-HIEUH', + 12599 : 'HANGUL LETTER TIKEUT', + 12600 : 'HANGUL LETTER SSANGTIKEUT', + 12601 : 'HANGUL LETTER RIEUL', + 12602 : 'HANGUL LETTER RIEUL-KIYEOK', + 12603 : 'HANGUL LETTER RIEUL-MIEUM', + 12604 : 'HANGUL LETTER RIEUL-PIEUP', + 12605 : 'HANGUL LETTER RIEUL-SIOS', + 12606 : 'HANGUL LETTER RIEUL-THIEUTH', + 12607 : 'HANGUL LETTER RIEUL-PHIEUPH', + 12608 : 'HANGUL LETTER RIEUL-HIEUH', + 12609 : 'HANGUL LETTER MIEUM', + 12610 : 'HANGUL LETTER PIEUP', + 12611 : 'HANGUL LETTER SSANGPIEUP', + 12612 : 'HANGUL LETTER PIEUP-SIOS', + 12613 : 'HANGUL LETTER SIOS', + 12614 : 'HANGUL LETTER SSANGSIOS', + 12615 : 'HANGUL LETTER IEUNG', + 12616 : 'HANGUL LETTER CIEUC', + 12617 : 'HANGUL LETTER SSANGCIEUC', + 12618 : 'HANGUL LETTER CHIEUCH', + 12619 : 'HANGUL LETTER KHIEUKH', + 12620 : 'HANGUL LETTER THIEUTH', + 12621 : 'HANGUL LETTER PHIEUPH', + 12622 : 'HANGUL LETTER HIEUH', + 12623 : 'HANGUL LETTER A', + 12624 : 'HANGUL LETTER AE', + 12625 : 'HANGUL LETTER YA', + 12626 : 'HANGUL LETTER YAE', + 12627 : 'HANGUL LETTER EO', + 12628 : 'HANGUL LETTER E', + 12629 : 'HANGUL LETTER YEO', + 12630 : 'HANGUL LETTER YE', + 12631 : 'HANGUL LETTER O', + 12632 : 'HANGUL LETTER WA', + 12633 : 'HANGUL LETTER WAE', + 12634 : 'HANGUL LETTER OE', + 12635 : 'HANGUL LETTER YO', + 12636 : 'HANGUL LETTER U', + 12637 : 'HANGUL LETTER WEO', + 12638 : 'HANGUL LETTER WE', + 12639 : 'HANGUL LETTER WI', + 12640 : 'HANGUL LETTER YU', + 12641 : 'HANGUL LETTER EU', + 12642 : 'HANGUL LETTER YI', + 12643 : 'HANGUL LETTER I', + 12644 : 'HANGUL FILLER', + 12645 : 'HANGUL LETTER SSANGNIEUN', + 12646 : 'HANGUL LETTER NIEUN-TIKEUT', + 12647 : 'HANGUL LETTER NIEUN-SIOS', + 12648 : 'HANGUL LETTER NIEUN-PANSIOS', + 12649 : 'HANGUL LETTER RIEUL-KIYEOK-SIOS', + 12650 : 'HANGUL LETTER RIEUL-TIKEUT', + 12651 : 'HANGUL LETTER RIEUL-PIEUP-SIOS', + 12652 : 'HANGUL LETTER RIEUL-PANSIOS', + 12653 : 'HANGUL LETTER RIEUL-YEORINHIEUH', + 12654 : 'HANGUL LETTER MIEUM-PIEUP', + 12655 : 'HANGUL LETTER MIEUM-SIOS', + 12656 : 'HANGUL LETTER MIEUM-PANSIOS', + 12657 : 'HANGUL LETTER KAPYEOUNMIEUM', + 12658 : 'HANGUL LETTER PIEUP-KIYEOK', + 12659 : 'HANGUL LETTER PIEUP-TIKEUT', + 12660 : 'HANGUL LETTER PIEUP-SIOS-KIYEOK', + 12661 : 'HANGUL LETTER PIEUP-SIOS-TIKEUT', + 12662 : 'HANGUL LETTER PIEUP-CIEUC', + 12663 : 'HANGUL LETTER PIEUP-THIEUTH', + 12664 : 'HANGUL LETTER KAPYEOUNPIEUP', + 12665 : 'HANGUL LETTER KAPYEOUNSSANGPIEUP', + 12666 : 'HANGUL LETTER SIOS-KIYEOK', + 12667 : 'HANGUL LETTER SIOS-NIEUN', + 12668 : 'HANGUL LETTER SIOS-TIKEUT', + 12669 : 'HANGUL LETTER SIOS-PIEUP', + 12670 : 'HANGUL LETTER SIOS-CIEUC', + 12671 : 'HANGUL LETTER PANSIOS', + 12672 : 'HANGUL LETTER SSANGIEUNG', + 12673 : 'HANGUL LETTER YESIEUNG', + 12674 : 'HANGUL LETTER YESIEUNG-SIOS', + 12675 : 'HANGUL LETTER YESIEUNG-PANSIOS', + 12676 : 'HANGUL LETTER KAPYEOUNPHIEUPH', + 12677 : 'HANGUL LETTER SSANGHIEUH', + 12678 : 'HANGUL LETTER YEORINHIEUH', + 12679 : 'HANGUL LETTER YO-YA', + 12680 : 'HANGUL LETTER YO-YAE', + 12681 : 'HANGUL LETTER YO-I', + 12682 : 'HANGUL LETTER YU-YEO', + 12683 : 'HANGUL LETTER YU-YE', + 12684 : 'HANGUL LETTER YU-I', + 12685 : 'HANGUL LETTER ARAEA', + 12686 : 'HANGUL LETTER ARAEAE', + 12688 : 'IDEOGRAPHIC ANNOTATION LINKING MARK', + 12689 : 'IDEOGRAPHIC ANNOTATION REVERSE MARK', + 12690 : 'IDEOGRAPHIC ANNOTATION ONE MARK', + 12691 : 'IDEOGRAPHIC ANNOTATION TWO MARK', + 12692 : 'IDEOGRAPHIC ANNOTATION THREE MARK', + 12693 : 'IDEOGRAPHIC ANNOTATION FOUR MARK', + 12694 : 'IDEOGRAPHIC ANNOTATION TOP MARK', + 12695 : 'IDEOGRAPHIC ANNOTATION MIDDLE MARK', + 12696 : 'IDEOGRAPHIC ANNOTATION BOTTOM MARK', + 12697 : 'IDEOGRAPHIC ANNOTATION FIRST MARK', + 12698 : 'IDEOGRAPHIC ANNOTATION SECOND MARK', + 12699 : 'IDEOGRAPHIC ANNOTATION THIRD MARK', + 12700 : 'IDEOGRAPHIC ANNOTATION FOURTH MARK', + 12701 : 'IDEOGRAPHIC ANNOTATION HEAVEN MARK', + 12702 : 'IDEOGRAPHIC ANNOTATION EARTH MARK', + 12703 : 'IDEOGRAPHIC ANNOTATION MAN MARK', + 12704 : 'BOPOMOFO LETTER BU', + 12705 : 'BOPOMOFO LETTER ZI', + 12706 : 'BOPOMOFO LETTER JI', + 12707 : 'BOPOMOFO LETTER GU', + 12708 : 'BOPOMOFO LETTER EE', + 12709 : 'BOPOMOFO LETTER ENN', + 12710 : 'BOPOMOFO LETTER OO', + 12711 : 'BOPOMOFO LETTER ONN', + 12712 : 'BOPOMOFO LETTER IR', + 12713 : 'BOPOMOFO LETTER ANN', + 12714 : 'BOPOMOFO LETTER INN', + 12715 : 'BOPOMOFO LETTER UNN', + 12716 : 'BOPOMOFO LETTER IM', + 12717 : 'BOPOMOFO LETTER NGG', + 12718 : 'BOPOMOFO LETTER AINN', + 12719 : 'BOPOMOFO LETTER AUNN', + 12720 : 'BOPOMOFO LETTER AM', + 12721 : 'BOPOMOFO LETTER OM', + 12722 : 'BOPOMOFO LETTER ONG', + 12723 : 'BOPOMOFO LETTER INNN', + 12724 : 'BOPOMOFO FINAL LETTER P', + 12725 : 'BOPOMOFO FINAL LETTER T', + 12726 : 'BOPOMOFO FINAL LETTER K', + 12727 : 'BOPOMOFO FINAL LETTER H', + 12784 : 'KATAKANA LETTER SMALL KU', + 12785 : 'KATAKANA LETTER SMALL SI', + 12786 : 'KATAKANA LETTER SMALL SU', + 12787 : 'KATAKANA LETTER SMALL TO', + 12788 : 'KATAKANA LETTER SMALL NU', + 12789 : 'KATAKANA LETTER SMALL HA', + 12790 : 'KATAKANA LETTER SMALL HI', + 12791 : 'KATAKANA LETTER SMALL HU', + 12792 : 'KATAKANA LETTER SMALL HE', + 12793 : 'KATAKANA LETTER SMALL HO', + 12794 : 'KATAKANA LETTER SMALL MU', + 12795 : 'KATAKANA LETTER SMALL RA', + 12796 : 'KATAKANA LETTER SMALL RI', + 12797 : 'KATAKANA LETTER SMALL RU', + 12798 : 'KATAKANA LETTER SMALL RE', + 12799 : 'KATAKANA LETTER SMALL RO', + 12800 : 'PARENTHESIZED HANGUL KIYEOK', + 12801 : 'PARENTHESIZED HANGUL NIEUN', + 12802 : 'PARENTHESIZED HANGUL TIKEUT', + 12803 : 'PARENTHESIZED HANGUL RIEUL', + 12804 : 'PARENTHESIZED HANGUL MIEUM', + 12805 : 'PARENTHESIZED HANGUL PIEUP', + 12806 : 'PARENTHESIZED HANGUL SIOS', + 12807 : 'PARENTHESIZED HANGUL IEUNG', + 12808 : 'PARENTHESIZED HANGUL CIEUC', + 12809 : 'PARENTHESIZED HANGUL CHIEUCH', + 12810 : 'PARENTHESIZED HANGUL KHIEUKH', + 12811 : 'PARENTHESIZED HANGUL THIEUTH', + 12812 : 'PARENTHESIZED HANGUL PHIEUPH', + 12813 : 'PARENTHESIZED HANGUL HIEUH', + 12814 : 'PARENTHESIZED HANGUL KIYEOK A', + 12815 : 'PARENTHESIZED HANGUL NIEUN A', + 12816 : 'PARENTHESIZED HANGUL TIKEUT A', + 12817 : 'PARENTHESIZED HANGUL RIEUL A', + 12818 : 'PARENTHESIZED HANGUL MIEUM A', + 12819 : 'PARENTHESIZED HANGUL PIEUP A', + 12820 : 'PARENTHESIZED HANGUL SIOS A', + 12821 : 'PARENTHESIZED HANGUL IEUNG A', + 12822 : 'PARENTHESIZED HANGUL CIEUC A', + 12823 : 'PARENTHESIZED HANGUL CHIEUCH A', + 12824 : 'PARENTHESIZED HANGUL KHIEUKH A', + 12825 : 'PARENTHESIZED HANGUL THIEUTH A', + 12826 : 'PARENTHESIZED HANGUL PHIEUPH A', + 12827 : 'PARENTHESIZED HANGUL HIEUH A', + 12828 : 'PARENTHESIZED HANGUL CIEUC U', + 12832 : 'PARENTHESIZED IDEOGRAPH ONE', + 12833 : 'PARENTHESIZED IDEOGRAPH TWO', + 12834 : 'PARENTHESIZED IDEOGRAPH THREE', + 12835 : 'PARENTHESIZED IDEOGRAPH FOUR', + 12836 : 'PARENTHESIZED IDEOGRAPH FIVE', + 12837 : 'PARENTHESIZED IDEOGRAPH SIX', + 12838 : 'PARENTHESIZED IDEOGRAPH SEVEN', + 12839 : 'PARENTHESIZED IDEOGRAPH EIGHT', + 12840 : 'PARENTHESIZED IDEOGRAPH NINE', + 12841 : 'PARENTHESIZED IDEOGRAPH TEN', + 12842 : 'PARENTHESIZED IDEOGRAPH MOON', + 12843 : 'PARENTHESIZED IDEOGRAPH FIRE', + 12844 : 'PARENTHESIZED IDEOGRAPH WATER', + 12845 : 'PARENTHESIZED IDEOGRAPH WOOD', + 12846 : 'PARENTHESIZED IDEOGRAPH METAL', + 12847 : 'PARENTHESIZED IDEOGRAPH EARTH', + 12848 : 'PARENTHESIZED IDEOGRAPH SUN', + 12849 : 'PARENTHESIZED IDEOGRAPH STOCK', + 12850 : 'PARENTHESIZED IDEOGRAPH HAVE', + 12851 : 'PARENTHESIZED IDEOGRAPH SOCIETY', + 12852 : 'PARENTHESIZED IDEOGRAPH NAME', + 12853 : 'PARENTHESIZED IDEOGRAPH SPECIAL', + 12854 : 'PARENTHESIZED IDEOGRAPH FINANCIAL', + 12855 : 'PARENTHESIZED IDEOGRAPH CONGRATULATION', + 12856 : 'PARENTHESIZED IDEOGRAPH LABOR', + 12857 : 'PARENTHESIZED IDEOGRAPH REPRESENT', + 12858 : 'PARENTHESIZED IDEOGRAPH CALL', + 12859 : 'PARENTHESIZED IDEOGRAPH STUDY', + 12860 : 'PARENTHESIZED IDEOGRAPH SUPERVISE', + 12861 : 'PARENTHESIZED IDEOGRAPH ENTERPRISE', + 12862 : 'PARENTHESIZED IDEOGRAPH RESOURCE', + 12863 : 'PARENTHESIZED IDEOGRAPH ALLIANCE', + 12864 : 'PARENTHESIZED IDEOGRAPH FESTIVAL', + 12865 : 'PARENTHESIZED IDEOGRAPH REST', + 12866 : 'PARENTHESIZED IDEOGRAPH SELF', + 12867 : 'PARENTHESIZED IDEOGRAPH REACH', + 12881 : 'CIRCLED NUMBER TWENTY ONE', + 12882 : 'CIRCLED NUMBER TWENTY TWO', + 12883 : 'CIRCLED NUMBER TWENTY THREE', + 12884 : 'CIRCLED NUMBER TWENTY FOUR', + 12885 : 'CIRCLED NUMBER TWENTY FIVE', + 12886 : 'CIRCLED NUMBER TWENTY SIX', + 12887 : 'CIRCLED NUMBER TWENTY SEVEN', + 12888 : 'CIRCLED NUMBER TWENTY EIGHT', + 12889 : 'CIRCLED NUMBER TWENTY NINE', + 12890 : 'CIRCLED NUMBER THIRTY', + 12891 : 'CIRCLED NUMBER THIRTY ONE', + 12892 : 'CIRCLED NUMBER THIRTY TWO', + 12893 : 'CIRCLED NUMBER THIRTY THREE', + 12894 : 'CIRCLED NUMBER THIRTY FOUR', + 12895 : 'CIRCLED NUMBER THIRTY FIVE', + 12896 : 'CIRCLED HANGUL KIYEOK', + 12897 : 'CIRCLED HANGUL NIEUN', + 12898 : 'CIRCLED HANGUL TIKEUT', + 12899 : 'CIRCLED HANGUL RIEUL', + 12900 : 'CIRCLED HANGUL MIEUM', + 12901 : 'CIRCLED HANGUL PIEUP', + 12902 : 'CIRCLED HANGUL SIOS', + 12903 : 'CIRCLED HANGUL IEUNG', + 12904 : 'CIRCLED HANGUL CIEUC', + 12905 : 'CIRCLED HANGUL CHIEUCH', + 12906 : 'CIRCLED HANGUL KHIEUKH', + 12907 : 'CIRCLED HANGUL THIEUTH', + 12908 : 'CIRCLED HANGUL PHIEUPH', + 12909 : 'CIRCLED HANGUL HIEUH', + 12910 : 'CIRCLED HANGUL KIYEOK A', + 12911 : 'CIRCLED HANGUL NIEUN A', + 12912 : 'CIRCLED HANGUL TIKEUT A', + 12913 : 'CIRCLED HANGUL RIEUL A', + 12914 : 'CIRCLED HANGUL MIEUM A', + 12915 : 'CIRCLED HANGUL PIEUP A', + 12916 : 'CIRCLED HANGUL SIOS A', + 12917 : 'CIRCLED HANGUL IEUNG A', + 12918 : 'CIRCLED HANGUL CIEUC A', + 12919 : 'CIRCLED HANGUL CHIEUCH A', + 12920 : 'CIRCLED HANGUL KHIEUKH A', + 12921 : 'CIRCLED HANGUL THIEUTH A', + 12922 : 'CIRCLED HANGUL PHIEUPH A', + 12923 : 'CIRCLED HANGUL HIEUH A', + 12927 : 'KOREAN STANDARD SYMBOL', + 12928 : 'CIRCLED IDEOGRAPH ONE', + 12929 : 'CIRCLED IDEOGRAPH TWO', + 12930 : 'CIRCLED IDEOGRAPH THREE', + 12931 : 'CIRCLED IDEOGRAPH FOUR', + 12932 : 'CIRCLED IDEOGRAPH FIVE', + 12933 : 'CIRCLED IDEOGRAPH SIX', + 12934 : 'CIRCLED IDEOGRAPH SEVEN', + 12935 : 'CIRCLED IDEOGRAPH EIGHT', + 12936 : 'CIRCLED IDEOGRAPH NINE', + 12937 : 'CIRCLED IDEOGRAPH TEN', + 12938 : 'CIRCLED IDEOGRAPH MOON', + 12939 : 'CIRCLED IDEOGRAPH FIRE', + 12940 : 'CIRCLED IDEOGRAPH WATER', + 12941 : 'CIRCLED IDEOGRAPH WOOD', + 12942 : 'CIRCLED IDEOGRAPH METAL', + 12943 : 'CIRCLED IDEOGRAPH EARTH', + 12944 : 'CIRCLED IDEOGRAPH SUN', + 12945 : 'CIRCLED IDEOGRAPH STOCK', + 12946 : 'CIRCLED IDEOGRAPH HAVE', + 12947 : 'CIRCLED IDEOGRAPH SOCIETY', + 12948 : 'CIRCLED IDEOGRAPH NAME', + 12949 : 'CIRCLED IDEOGRAPH SPECIAL', + 12950 : 'CIRCLED IDEOGRAPH FINANCIAL', + 12951 : 'CIRCLED IDEOGRAPH CONGRATULATION', + 12952 : 'CIRCLED IDEOGRAPH LABOR', + 12953 : 'CIRCLED IDEOGRAPH SECRET', + 12954 : 'CIRCLED IDEOGRAPH MALE', + 12955 : 'CIRCLED IDEOGRAPH FEMALE', + 12956 : 'CIRCLED IDEOGRAPH SUITABLE', + 12957 : 'CIRCLED IDEOGRAPH EXCELLENT', + 12958 : 'CIRCLED IDEOGRAPH PRINT', + 12959 : 'CIRCLED IDEOGRAPH ATTENTION', + 12960 : 'CIRCLED IDEOGRAPH ITEM', + 12961 : 'CIRCLED IDEOGRAPH REST', + 12962 : 'CIRCLED IDEOGRAPH COPY', + 12963 : 'CIRCLED IDEOGRAPH CORRECT', + 12964 : 'CIRCLED IDEOGRAPH HIGH', + 12965 : 'CIRCLED IDEOGRAPH CENTRE', + 12966 : 'CIRCLED IDEOGRAPH LOW', + 12967 : 'CIRCLED IDEOGRAPH LEFT', + 12968 : 'CIRCLED IDEOGRAPH RIGHT', + 12969 : 'CIRCLED IDEOGRAPH MEDICINE', + 12970 : 'CIRCLED IDEOGRAPH RELIGION', + 12971 : 'CIRCLED IDEOGRAPH STUDY', + 12972 : 'CIRCLED IDEOGRAPH SUPERVISE', + 12973 : 'CIRCLED IDEOGRAPH ENTERPRISE', + 12974 : 'CIRCLED IDEOGRAPH RESOURCE', + 12975 : 'CIRCLED IDEOGRAPH ALLIANCE', + 12976 : 'CIRCLED IDEOGRAPH NIGHT', + 12977 : 'CIRCLED NUMBER THIRTY SIX', + 12978 : 'CIRCLED NUMBER THIRTY SEVEN', + 12979 : 'CIRCLED NUMBER THIRTY EIGHT', + 12980 : 'CIRCLED NUMBER THIRTY NINE', + 12981 : 'CIRCLED NUMBER FORTY', + 12982 : 'CIRCLED NUMBER FORTY ONE', + 12983 : 'CIRCLED NUMBER FORTY TWO', + 12984 : 'CIRCLED NUMBER FORTY THREE', + 12985 : 'CIRCLED NUMBER FORTY FOUR', + 12986 : 'CIRCLED NUMBER FORTY FIVE', + 12987 : 'CIRCLED NUMBER FORTY SIX', + 12988 : 'CIRCLED NUMBER FORTY SEVEN', + 12989 : 'CIRCLED NUMBER FORTY EIGHT', + 12990 : 'CIRCLED NUMBER FORTY NINE', + 12991 : 'CIRCLED NUMBER FIFTY', + 12992 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY', + 12993 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY', + 12994 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH', + 12995 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL', + 12996 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY', + 12997 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE', + 12998 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY', + 12999 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST', + 13000 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER', + 13001 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER', + 13002 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER', + 13003 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER', + 13008 : 'CIRCLED KATAKANA A', + 13009 : 'CIRCLED KATAKANA I', + 13010 : 'CIRCLED KATAKANA U', + 13011 : 'CIRCLED KATAKANA E', + 13012 : 'CIRCLED KATAKANA O', + 13013 : 'CIRCLED KATAKANA KA', + 13014 : 'CIRCLED KATAKANA KI', + 13015 : 'CIRCLED KATAKANA KU', + 13016 : 'CIRCLED KATAKANA KE', + 13017 : 'CIRCLED KATAKANA KO', + 13018 : 'CIRCLED KATAKANA SA', + 13019 : 'CIRCLED KATAKANA SI', + 13020 : 'CIRCLED KATAKANA SU', + 13021 : 'CIRCLED KATAKANA SE', + 13022 : 'CIRCLED KATAKANA SO', + 13023 : 'CIRCLED KATAKANA TA', + 13024 : 'CIRCLED KATAKANA TI', + 13025 : 'CIRCLED KATAKANA TU', + 13026 : 'CIRCLED KATAKANA TE', + 13027 : 'CIRCLED KATAKANA TO', + 13028 : 'CIRCLED KATAKANA NA', + 13029 : 'CIRCLED KATAKANA NI', + 13030 : 'CIRCLED KATAKANA NU', + 13031 : 'CIRCLED KATAKANA NE', + 13032 : 'CIRCLED KATAKANA NO', + 13033 : 'CIRCLED KATAKANA HA', + 13034 : 'CIRCLED KATAKANA HI', + 13035 : 'CIRCLED KATAKANA HU', + 13036 : 'CIRCLED KATAKANA HE', + 13037 : 'CIRCLED KATAKANA HO', + 13038 : 'CIRCLED KATAKANA MA', + 13039 : 'CIRCLED KATAKANA MI', + 13040 : 'CIRCLED KATAKANA MU', + 13041 : 'CIRCLED KATAKANA ME', + 13042 : 'CIRCLED KATAKANA MO', + 13043 : 'CIRCLED KATAKANA YA', + 13044 : 'CIRCLED KATAKANA YU', + 13045 : 'CIRCLED KATAKANA YO', + 13046 : 'CIRCLED KATAKANA RA', + 13047 : 'CIRCLED KATAKANA RI', + 13048 : 'CIRCLED KATAKANA RU', + 13049 : 'CIRCLED KATAKANA RE', + 13050 : 'CIRCLED KATAKANA RO', + 13051 : 'CIRCLED KATAKANA WA', + 13052 : 'CIRCLED KATAKANA WI', + 13053 : 'CIRCLED KATAKANA WE', + 13054 : 'CIRCLED KATAKANA WO', + 13056 : 'SQUARE APAATO', + 13057 : 'SQUARE ARUHUA', + 13058 : 'SQUARE ANPEA', + 13059 : 'SQUARE AARU', + 13060 : 'SQUARE ININGU', + 13061 : 'SQUARE INTI', + 13062 : 'SQUARE UON', + 13063 : 'SQUARE ESUKUUDO', + 13064 : 'SQUARE EEKAA', + 13065 : 'SQUARE ONSU', + 13066 : 'SQUARE OOMU', + 13067 : 'SQUARE KAIRI', + 13068 : 'SQUARE KARATTO', + 13069 : 'SQUARE KARORII', + 13070 : 'SQUARE GARON', + 13071 : 'SQUARE GANMA', + 13072 : 'SQUARE GIGA', + 13073 : 'SQUARE GINII', + 13074 : 'SQUARE KYURII', + 13075 : 'SQUARE GIRUDAA', + 13076 : 'SQUARE KIRO', + 13077 : 'SQUARE KIROGURAMU', + 13078 : 'SQUARE KIROMEETORU', + 13079 : 'SQUARE KIROWATTO', + 13080 : 'SQUARE GURAMU', + 13081 : 'SQUARE GURAMUTON', + 13082 : 'SQUARE KURUZEIRO', + 13083 : 'SQUARE KUROONE', + 13084 : 'SQUARE KEESU', + 13085 : 'SQUARE KORUNA', + 13086 : 'SQUARE KOOPO', + 13087 : 'SQUARE SAIKURU', + 13088 : 'SQUARE SANTIIMU', + 13089 : 'SQUARE SIRINGU', + 13090 : 'SQUARE SENTI', + 13091 : 'SQUARE SENTO', + 13092 : 'SQUARE DAASU', + 13093 : 'SQUARE DESI', + 13094 : 'SQUARE DORU', + 13095 : 'SQUARE TON', + 13096 : 'SQUARE NANO', + 13097 : 'SQUARE NOTTO', + 13098 : 'SQUARE HAITU', + 13099 : 'SQUARE PAASENTO', + 13100 : 'SQUARE PAATU', + 13101 : 'SQUARE BAARERU', + 13102 : 'SQUARE PIASUTORU', + 13103 : 'SQUARE PIKURU', + 13104 : 'SQUARE PIKO', + 13105 : 'SQUARE BIRU', + 13106 : 'SQUARE HUARADDO', + 13107 : 'SQUARE HUIITO', + 13108 : 'SQUARE BUSSYERU', + 13109 : 'SQUARE HURAN', + 13110 : 'SQUARE HEKUTAARU', + 13111 : 'SQUARE PESO', + 13112 : 'SQUARE PENIHI', + 13113 : 'SQUARE HERUTU', + 13114 : 'SQUARE PENSU', + 13115 : 'SQUARE PEEZI', + 13116 : 'SQUARE BEETA', + 13117 : 'SQUARE POINTO', + 13118 : 'SQUARE BORUTO', + 13119 : 'SQUARE HON', + 13120 : 'SQUARE PONDO', + 13121 : 'SQUARE HOORU', + 13122 : 'SQUARE HOON', + 13123 : 'SQUARE MAIKURO', + 13124 : 'SQUARE MAIRU', + 13125 : 'SQUARE MAHHA', + 13126 : 'SQUARE MARUKU', + 13127 : 'SQUARE MANSYON', + 13128 : 'SQUARE MIKURON', + 13129 : 'SQUARE MIRI', + 13130 : 'SQUARE MIRIBAARU', + 13131 : 'SQUARE MEGA', + 13132 : 'SQUARE MEGATON', + 13133 : 'SQUARE MEETORU', + 13134 : 'SQUARE YAADO', + 13135 : 'SQUARE YAARU', + 13136 : 'SQUARE YUAN', + 13137 : 'SQUARE RITTORU', + 13138 : 'SQUARE RIRA', + 13139 : 'SQUARE RUPII', + 13140 : 'SQUARE RUUBURU', + 13141 : 'SQUARE REMU', + 13142 : 'SQUARE RENTOGEN', + 13143 : 'SQUARE WATTO', + 13144 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO', + 13145 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE', + 13146 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO', + 13147 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE', + 13148 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR', + 13149 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE', + 13150 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX', + 13151 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN', + 13152 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT', + 13153 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE', + 13154 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN', + 13155 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN', + 13156 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE', + 13157 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN', + 13158 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN', + 13159 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN', + 13160 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN', + 13161 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN', + 13162 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN', + 13163 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN', + 13164 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY', + 13165 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE', + 13166 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO', + 13167 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE', + 13168 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR', + 13169 : 'SQUARE HPA', + 13170 : 'SQUARE DA', + 13171 : 'SQUARE AU', + 13172 : 'SQUARE BAR', + 13173 : 'SQUARE OV', + 13174 : 'SQUARE PC', + 13179 : 'SQUARE ERA NAME HEISEI', + 13180 : 'SQUARE ERA NAME SYOUWA', + 13181 : 'SQUARE ERA NAME TAISYOU', + 13182 : 'SQUARE ERA NAME MEIZI', + 13183 : 'SQUARE CORPORATION', + 13184 : 'SQUARE PA AMPS', + 13185 : 'SQUARE NA', + 13186 : 'SQUARE MU A', + 13187 : 'SQUARE MA', + 13188 : 'SQUARE KA', + 13189 : 'SQUARE KB', + 13190 : 'SQUARE MB', + 13191 : 'SQUARE GB', + 13192 : 'SQUARE CAL', + 13193 : 'SQUARE KCAL', + 13194 : 'SQUARE PF', + 13195 : 'SQUARE NF', + 13196 : 'SQUARE MU F', + 13197 : 'SQUARE MU G', + 13198 : 'SQUARE MG', + 13199 : 'SQUARE KG', + 13200 : 'SQUARE HZ', + 13201 : 'SQUARE KHZ', + 13202 : 'SQUARE MHZ', + 13203 : 'SQUARE GHZ', + 13204 : 'SQUARE THZ', + 13205 : 'SQUARE MU L', + 13206 : 'SQUARE ML', + 13207 : 'SQUARE DL', + 13208 : 'SQUARE KL', + 13209 : 'SQUARE FM', + 13210 : 'SQUARE NM', + 13211 : 'SQUARE MU M', + 13212 : 'SQUARE MM', + 13213 : 'SQUARE CM', + 13214 : 'SQUARE KM', + 13215 : 'SQUARE MM SQUARED', + 13216 : 'SQUARE CM SQUARED', + 13217 : 'SQUARE M SQUARED', + 13218 : 'SQUARE KM SQUARED', + 13219 : 'SQUARE MM CUBED', + 13220 : 'SQUARE CM CUBED', + 13221 : 'SQUARE M CUBED', + 13222 : 'SQUARE KM CUBED', + 13223 : 'SQUARE M OVER S', + 13224 : 'SQUARE M OVER S SQUARED', + 13225 : 'SQUARE PA', + 13226 : 'SQUARE KPA', + 13227 : 'SQUARE MPA', + 13228 : 'SQUARE GPA', + 13229 : 'SQUARE RAD', + 13230 : 'SQUARE RAD OVER S', + 13231 : 'SQUARE RAD OVER S SQUARED', + 13232 : 'SQUARE PS', + 13233 : 'SQUARE NS', + 13234 : 'SQUARE MU S', + 13235 : 'SQUARE MS', + 13236 : 'SQUARE PV', + 13237 : 'SQUARE NV', + 13238 : 'SQUARE MU V', + 13239 : 'SQUARE MV', + 13240 : 'SQUARE KV', + 13241 : 'SQUARE MV MEGA', + 13242 : 'SQUARE PW', + 13243 : 'SQUARE NW', + 13244 : 'SQUARE MU W', + 13245 : 'SQUARE MW', + 13246 : 'SQUARE KW', + 13247 : 'SQUARE MW MEGA', + 13248 : 'SQUARE K OHM', + 13249 : 'SQUARE M OHM', + 13250 : 'SQUARE AM', + 13251 : 'SQUARE BQ', + 13252 : 'SQUARE CC', + 13253 : 'SQUARE CD', + 13254 : 'SQUARE C OVER KG', + 13255 : 'SQUARE CO', + 13256 : 'SQUARE DB', + 13257 : 'SQUARE GY', + 13258 : 'SQUARE HA', + 13259 : 'SQUARE HP', + 13260 : 'SQUARE IN', + 13261 : 'SQUARE KK', + 13262 : 'SQUARE KM CAPITAL', + 13263 : 'SQUARE KT', + 13264 : 'SQUARE LM', + 13265 : 'SQUARE LN', + 13266 : 'SQUARE LOG', + 13267 : 'SQUARE LX', + 13268 : 'SQUARE MB SMALL', + 13269 : 'SQUARE MIL', + 13270 : 'SQUARE MOL', + 13271 : 'SQUARE PH', + 13272 : 'SQUARE PM', + 13273 : 'SQUARE PPM', + 13274 : 'SQUARE PR', + 13275 : 'SQUARE SR', + 13276 : 'SQUARE SV', + 13277 : 'SQUARE WB', + 13280 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE', + 13281 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO', + 13282 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE', + 13283 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR', + 13284 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE', + 13285 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX', + 13286 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN', + 13287 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT', + 13288 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE', + 13289 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN', + 13290 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN', + 13291 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE', + 13292 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN', + 13293 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN', + 13294 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN', + 13295 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN', + 13296 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN', + 13297 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN', + 13298 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN', + 13299 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY', + 13300 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE', + 13301 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO', + 13302 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE', + 13303 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR', + 13304 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE', + 13305 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX', + 13306 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN', + 13307 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT', + 13308 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE', + 13309 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY', + 13310 : 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE', + 13312 : '', + 19893 : '', + 19968 : '', + 40869 : '', + 40960 : 'YI SYLLABLE IT', + 40961 : 'YI SYLLABLE IX', + 40962 : 'YI SYLLABLE I', + 40963 : 'YI SYLLABLE IP', + 40964 : 'YI SYLLABLE IET', + 40965 : 'YI SYLLABLE IEX', + 40966 : 'YI SYLLABLE IE', + 40967 : 'YI SYLLABLE IEP', + 40968 : 'YI SYLLABLE AT', + 40969 : 'YI SYLLABLE AX', + 40970 : 'YI SYLLABLE A', + 40971 : 'YI SYLLABLE AP', + 40972 : 'YI SYLLABLE UOX', + 40973 : 'YI SYLLABLE UO', + 40974 : 'YI SYLLABLE UOP', + 40975 : 'YI SYLLABLE OT', + 40976 : 'YI SYLLABLE OX', + 40977 : 'YI SYLLABLE O', + 40978 : 'YI SYLLABLE OP', + 40979 : 'YI SYLLABLE EX', + 40980 : 'YI SYLLABLE E', + 40981 : 'YI SYLLABLE WU', + 40982 : 'YI SYLLABLE BIT', + 40983 : 'YI SYLLABLE BIX', + 40984 : 'YI SYLLABLE BI', + 40985 : 'YI SYLLABLE BIP', + 40986 : 'YI SYLLABLE BIET', + 40987 : 'YI SYLLABLE BIEX', + 40988 : 'YI SYLLABLE BIE', + 40989 : 'YI SYLLABLE BIEP', + 40990 : 'YI SYLLABLE BAT', + 40991 : 'YI SYLLABLE BAX', + 40992 : 'YI SYLLABLE BA', + 40993 : 'YI SYLLABLE BAP', + 40994 : 'YI SYLLABLE BUOX', + 40995 : 'YI SYLLABLE BUO', + 40996 : 'YI SYLLABLE BUOP', + 40997 : 'YI SYLLABLE BOT', + 40998 : 'YI SYLLABLE BOX', + 40999 : 'YI SYLLABLE BO', + 41000 : 'YI SYLLABLE BOP', + 41001 : 'YI SYLLABLE BEX', + 41002 : 'YI SYLLABLE BE', + 41003 : 'YI SYLLABLE BEP', + 41004 : 'YI SYLLABLE BUT', + 41005 : 'YI SYLLABLE BUX', + 41006 : 'YI SYLLABLE BU', + 41007 : 'YI SYLLABLE BUP', + 41008 : 'YI SYLLABLE BURX', + 41009 : 'YI SYLLABLE BUR', + 41010 : 'YI SYLLABLE BYT', + 41011 : 'YI SYLLABLE BYX', + 41012 : 'YI SYLLABLE BY', + 41013 : 'YI SYLLABLE BYP', + 41014 : 'YI SYLLABLE BYRX', + 41015 : 'YI SYLLABLE BYR', + 41016 : 'YI SYLLABLE PIT', + 41017 : 'YI SYLLABLE PIX', + 41018 : 'YI SYLLABLE PI', + 41019 : 'YI SYLLABLE PIP', + 41020 : 'YI SYLLABLE PIEX', + 41021 : 'YI SYLLABLE PIE', + 41022 : 'YI SYLLABLE PIEP', + 41023 : 'YI SYLLABLE PAT', + 41024 : 'YI SYLLABLE PAX', + 41025 : 'YI SYLLABLE PA', + 41026 : 'YI SYLLABLE PAP', + 41027 : 'YI SYLLABLE PUOX', + 41028 : 'YI SYLLABLE PUO', + 41029 : 'YI SYLLABLE PUOP', + 41030 : 'YI SYLLABLE POT', + 41031 : 'YI SYLLABLE POX', + 41032 : 'YI SYLLABLE PO', + 41033 : 'YI SYLLABLE POP', + 41034 : 'YI SYLLABLE PUT', + 41035 : 'YI SYLLABLE PUX', + 41036 : 'YI SYLLABLE PU', + 41037 : 'YI SYLLABLE PUP', + 41038 : 'YI SYLLABLE PURX', + 41039 : 'YI SYLLABLE PUR', + 41040 : 'YI SYLLABLE PYT', + 41041 : 'YI SYLLABLE PYX', + 41042 : 'YI SYLLABLE PY', + 41043 : 'YI SYLLABLE PYP', + 41044 : 'YI SYLLABLE PYRX', + 41045 : 'YI SYLLABLE PYR', + 41046 : 'YI SYLLABLE BBIT', + 41047 : 'YI SYLLABLE BBIX', + 41048 : 'YI SYLLABLE BBI', + 41049 : 'YI SYLLABLE BBIP', + 41050 : 'YI SYLLABLE BBIET', + 41051 : 'YI SYLLABLE BBIEX', + 41052 : 'YI SYLLABLE BBIE', + 41053 : 'YI SYLLABLE BBIEP', + 41054 : 'YI SYLLABLE BBAT', + 41055 : 'YI SYLLABLE BBAX', + 41056 : 'YI SYLLABLE BBA', + 41057 : 'YI SYLLABLE BBAP', + 41058 : 'YI SYLLABLE BBUOX', + 41059 : 'YI SYLLABLE BBUO', + 41060 : 'YI SYLLABLE BBUOP', + 41061 : 'YI SYLLABLE BBOT', + 41062 : 'YI SYLLABLE BBOX', + 41063 : 'YI SYLLABLE BBO', + 41064 : 'YI SYLLABLE BBOP', + 41065 : 'YI SYLLABLE BBEX', + 41066 : 'YI SYLLABLE BBE', + 41067 : 'YI SYLLABLE BBEP', + 41068 : 'YI SYLLABLE BBUT', + 41069 : 'YI SYLLABLE BBUX', + 41070 : 'YI SYLLABLE BBU', + 41071 : 'YI SYLLABLE BBUP', + 41072 : 'YI SYLLABLE BBURX', + 41073 : 'YI SYLLABLE BBUR', + 41074 : 'YI SYLLABLE BBYT', + 41075 : 'YI SYLLABLE BBYX', + 41076 : 'YI SYLLABLE BBY', + 41077 : 'YI SYLLABLE BBYP', + 41078 : 'YI SYLLABLE NBIT', + 41079 : 'YI SYLLABLE NBIX', + 41080 : 'YI SYLLABLE NBI', + 41081 : 'YI SYLLABLE NBIP', + 41082 : 'YI SYLLABLE NBIEX', + 41083 : 'YI SYLLABLE NBIE', + 41084 : 'YI SYLLABLE NBIEP', + 41085 : 'YI SYLLABLE NBAT', + 41086 : 'YI SYLLABLE NBAX', + 41087 : 'YI SYLLABLE NBA', + 41088 : 'YI SYLLABLE NBAP', + 41089 : 'YI SYLLABLE NBOT', + 41090 : 'YI SYLLABLE NBOX', + 41091 : 'YI SYLLABLE NBO', + 41092 : 'YI SYLLABLE NBOP', + 41093 : 'YI SYLLABLE NBUT', + 41094 : 'YI SYLLABLE NBUX', + 41095 : 'YI SYLLABLE NBU', + 41096 : 'YI SYLLABLE NBUP', + 41097 : 'YI SYLLABLE NBURX', + 41098 : 'YI SYLLABLE NBUR', + 41099 : 'YI SYLLABLE NBYT', + 41100 : 'YI SYLLABLE NBYX', + 41101 : 'YI SYLLABLE NBY', + 41102 : 'YI SYLLABLE NBYP', + 41103 : 'YI SYLLABLE NBYRX', + 41104 : 'YI SYLLABLE NBYR', + 41105 : 'YI SYLLABLE HMIT', + 41106 : 'YI SYLLABLE HMIX', + 41107 : 'YI SYLLABLE HMI', + 41108 : 'YI SYLLABLE HMIP', + 41109 : 'YI SYLLABLE HMIEX', + 41110 : 'YI SYLLABLE HMIE', + 41111 : 'YI SYLLABLE HMIEP', + 41112 : 'YI SYLLABLE HMAT', + 41113 : 'YI SYLLABLE HMAX', + 41114 : 'YI SYLLABLE HMA', + 41115 : 'YI SYLLABLE HMAP', + 41116 : 'YI SYLLABLE HMUOX', + 41117 : 'YI SYLLABLE HMUO', + 41118 : 'YI SYLLABLE HMUOP', + 41119 : 'YI SYLLABLE HMOT', + 41120 : 'YI SYLLABLE HMOX', + 41121 : 'YI SYLLABLE HMO', + 41122 : 'YI SYLLABLE HMOP', + 41123 : 'YI SYLLABLE HMUT', + 41124 : 'YI SYLLABLE HMUX', + 41125 : 'YI SYLLABLE HMU', + 41126 : 'YI SYLLABLE HMUP', + 41127 : 'YI SYLLABLE HMURX', + 41128 : 'YI SYLLABLE HMUR', + 41129 : 'YI SYLLABLE HMYX', + 41130 : 'YI SYLLABLE HMY', + 41131 : 'YI SYLLABLE HMYP', + 41132 : 'YI SYLLABLE HMYRX', + 41133 : 'YI SYLLABLE HMYR', + 41134 : 'YI SYLLABLE MIT', + 41135 : 'YI SYLLABLE MIX', + 41136 : 'YI SYLLABLE MI', + 41137 : 'YI SYLLABLE MIP', + 41138 : 'YI SYLLABLE MIEX', + 41139 : 'YI SYLLABLE MIE', + 41140 : 'YI SYLLABLE MIEP', + 41141 : 'YI SYLLABLE MAT', + 41142 : 'YI SYLLABLE MAX', + 41143 : 'YI SYLLABLE MA', + 41144 : 'YI SYLLABLE MAP', + 41145 : 'YI SYLLABLE MUOT', + 41146 : 'YI SYLLABLE MUOX', + 41147 : 'YI SYLLABLE MUO', + 41148 : 'YI SYLLABLE MUOP', + 41149 : 'YI SYLLABLE MOT', + 41150 : 'YI SYLLABLE MOX', + 41151 : 'YI SYLLABLE MO', + 41152 : 'YI SYLLABLE MOP', + 41153 : 'YI SYLLABLE MEX', + 41154 : 'YI SYLLABLE ME', + 41155 : 'YI SYLLABLE MUT', + 41156 : 'YI SYLLABLE MUX', + 41157 : 'YI SYLLABLE MU', + 41158 : 'YI SYLLABLE MUP', + 41159 : 'YI SYLLABLE MURX', + 41160 : 'YI SYLLABLE MUR', + 41161 : 'YI SYLLABLE MYT', + 41162 : 'YI SYLLABLE MYX', + 41163 : 'YI SYLLABLE MY', + 41164 : 'YI SYLLABLE MYP', + 41165 : 'YI SYLLABLE FIT', + 41166 : 'YI SYLLABLE FIX', + 41167 : 'YI SYLLABLE FI', + 41168 : 'YI SYLLABLE FIP', + 41169 : 'YI SYLLABLE FAT', + 41170 : 'YI SYLLABLE FAX', + 41171 : 'YI SYLLABLE FA', + 41172 : 'YI SYLLABLE FAP', + 41173 : 'YI SYLLABLE FOX', + 41174 : 'YI SYLLABLE FO', + 41175 : 'YI SYLLABLE FOP', + 41176 : 'YI SYLLABLE FUT', + 41177 : 'YI SYLLABLE FUX', + 41178 : 'YI SYLLABLE FU', + 41179 : 'YI SYLLABLE FUP', + 41180 : 'YI SYLLABLE FURX', + 41181 : 'YI SYLLABLE FUR', + 41182 : 'YI SYLLABLE FYT', + 41183 : 'YI SYLLABLE FYX', + 41184 : 'YI SYLLABLE FY', + 41185 : 'YI SYLLABLE FYP', + 41186 : 'YI SYLLABLE VIT', + 41187 : 'YI SYLLABLE VIX', + 41188 : 'YI SYLLABLE VI', + 41189 : 'YI SYLLABLE VIP', + 41190 : 'YI SYLLABLE VIET', + 41191 : 'YI SYLLABLE VIEX', + 41192 : 'YI SYLLABLE VIE', + 41193 : 'YI SYLLABLE VIEP', + 41194 : 'YI SYLLABLE VAT', + 41195 : 'YI SYLLABLE VAX', + 41196 : 'YI SYLLABLE VA', + 41197 : 'YI SYLLABLE VAP', + 41198 : 'YI SYLLABLE VOT', + 41199 : 'YI SYLLABLE VOX', + 41200 : 'YI SYLLABLE VO', + 41201 : 'YI SYLLABLE VOP', + 41202 : 'YI SYLLABLE VEX', + 41203 : 'YI SYLLABLE VEP', + 41204 : 'YI SYLLABLE VUT', + 41205 : 'YI SYLLABLE VUX', + 41206 : 'YI SYLLABLE VU', + 41207 : 'YI SYLLABLE VUP', + 41208 : 'YI SYLLABLE VURX', + 41209 : 'YI SYLLABLE VUR', + 41210 : 'YI SYLLABLE VYT', + 41211 : 'YI SYLLABLE VYX', + 41212 : 'YI SYLLABLE VY', + 41213 : 'YI SYLLABLE VYP', + 41214 : 'YI SYLLABLE VYRX', + 41215 : 'YI SYLLABLE VYR', + 41216 : 'YI SYLLABLE DIT', + 41217 : 'YI SYLLABLE DIX', + 41218 : 'YI SYLLABLE DI', + 41219 : 'YI SYLLABLE DIP', + 41220 : 'YI SYLLABLE DIEX', + 41221 : 'YI SYLLABLE DIE', + 41222 : 'YI SYLLABLE DIEP', + 41223 : 'YI SYLLABLE DAT', + 41224 : 'YI SYLLABLE DAX', + 41225 : 'YI SYLLABLE DA', + 41226 : 'YI SYLLABLE DAP', + 41227 : 'YI SYLLABLE DUOX', + 41228 : 'YI SYLLABLE DUO', + 41229 : 'YI SYLLABLE DOT', + 41230 : 'YI SYLLABLE DOX', + 41231 : 'YI SYLLABLE DO', + 41232 : 'YI SYLLABLE DOP', + 41233 : 'YI SYLLABLE DEX', + 41234 : 'YI SYLLABLE DE', + 41235 : 'YI SYLLABLE DEP', + 41236 : 'YI SYLLABLE DUT', + 41237 : 'YI SYLLABLE DUX', + 41238 : 'YI SYLLABLE DU', + 41239 : 'YI SYLLABLE DUP', + 41240 : 'YI SYLLABLE DURX', + 41241 : 'YI SYLLABLE DUR', + 41242 : 'YI SYLLABLE TIT', + 41243 : 'YI SYLLABLE TIX', + 41244 : 'YI SYLLABLE TI', + 41245 : 'YI SYLLABLE TIP', + 41246 : 'YI SYLLABLE TIEX', + 41247 : 'YI SYLLABLE TIE', + 41248 : 'YI SYLLABLE TIEP', + 41249 : 'YI SYLLABLE TAT', + 41250 : 'YI SYLLABLE TAX', + 41251 : 'YI SYLLABLE TA', + 41252 : 'YI SYLLABLE TAP', + 41253 : 'YI SYLLABLE TUOT', + 41254 : 'YI SYLLABLE TUOX', + 41255 : 'YI SYLLABLE TUO', + 41256 : 'YI SYLLABLE TUOP', + 41257 : 'YI SYLLABLE TOT', + 41258 : 'YI SYLLABLE TOX', + 41259 : 'YI SYLLABLE TO', + 41260 : 'YI SYLLABLE TOP', + 41261 : 'YI SYLLABLE TEX', + 41262 : 'YI SYLLABLE TE', + 41263 : 'YI SYLLABLE TEP', + 41264 : 'YI SYLLABLE TUT', + 41265 : 'YI SYLLABLE TUX', + 41266 : 'YI SYLLABLE TU', + 41267 : 'YI SYLLABLE TUP', + 41268 : 'YI SYLLABLE TURX', + 41269 : 'YI SYLLABLE TUR', + 41270 : 'YI SYLLABLE DDIT', + 41271 : 'YI SYLLABLE DDIX', + 41272 : 'YI SYLLABLE DDI', + 41273 : 'YI SYLLABLE DDIP', + 41274 : 'YI SYLLABLE DDIEX', + 41275 : 'YI SYLLABLE DDIE', + 41276 : 'YI SYLLABLE DDIEP', + 41277 : 'YI SYLLABLE DDAT', + 41278 : 'YI SYLLABLE DDAX', + 41279 : 'YI SYLLABLE DDA', + 41280 : 'YI SYLLABLE DDAP', + 41281 : 'YI SYLLABLE DDUOX', + 41282 : 'YI SYLLABLE DDUO', + 41283 : 'YI SYLLABLE DDUOP', + 41284 : 'YI SYLLABLE DDOT', + 41285 : 'YI SYLLABLE DDOX', + 41286 : 'YI SYLLABLE DDO', + 41287 : 'YI SYLLABLE DDOP', + 41288 : 'YI SYLLABLE DDEX', + 41289 : 'YI SYLLABLE DDE', + 41290 : 'YI SYLLABLE DDEP', + 41291 : 'YI SYLLABLE DDUT', + 41292 : 'YI SYLLABLE DDUX', + 41293 : 'YI SYLLABLE DDU', + 41294 : 'YI SYLLABLE DDUP', + 41295 : 'YI SYLLABLE DDURX', + 41296 : 'YI SYLLABLE DDUR', + 41297 : 'YI SYLLABLE NDIT', + 41298 : 'YI SYLLABLE NDIX', + 41299 : 'YI SYLLABLE NDI', + 41300 : 'YI SYLLABLE NDIP', + 41301 : 'YI SYLLABLE NDIEX', + 41302 : 'YI SYLLABLE NDIE', + 41303 : 'YI SYLLABLE NDAT', + 41304 : 'YI SYLLABLE NDAX', + 41305 : 'YI SYLLABLE NDA', + 41306 : 'YI SYLLABLE NDAP', + 41307 : 'YI SYLLABLE NDOT', + 41308 : 'YI SYLLABLE NDOX', + 41309 : 'YI SYLLABLE NDO', + 41310 : 'YI SYLLABLE NDOP', + 41311 : 'YI SYLLABLE NDEX', + 41312 : 'YI SYLLABLE NDE', + 41313 : 'YI SYLLABLE NDEP', + 41314 : 'YI SYLLABLE NDUT', + 41315 : 'YI SYLLABLE NDUX', + 41316 : 'YI SYLLABLE NDU', + 41317 : 'YI SYLLABLE NDUP', + 41318 : 'YI SYLLABLE NDURX', + 41319 : 'YI SYLLABLE NDUR', + 41320 : 'YI SYLLABLE HNIT', + 41321 : 'YI SYLLABLE HNIX', + 41322 : 'YI SYLLABLE HNI', + 41323 : 'YI SYLLABLE HNIP', + 41324 : 'YI SYLLABLE HNIET', + 41325 : 'YI SYLLABLE HNIEX', + 41326 : 'YI SYLLABLE HNIE', + 41327 : 'YI SYLLABLE HNIEP', + 41328 : 'YI SYLLABLE HNAT', + 41329 : 'YI SYLLABLE HNAX', + 41330 : 'YI SYLLABLE HNA', + 41331 : 'YI SYLLABLE HNAP', + 41332 : 'YI SYLLABLE HNUOX', + 41333 : 'YI SYLLABLE HNUO', + 41334 : 'YI SYLLABLE HNOT', + 41335 : 'YI SYLLABLE HNOX', + 41336 : 'YI SYLLABLE HNOP', + 41337 : 'YI SYLLABLE HNEX', + 41338 : 'YI SYLLABLE HNE', + 41339 : 'YI SYLLABLE HNEP', + 41340 : 'YI SYLLABLE HNUT', + 41341 : 'YI SYLLABLE NIT', + 41342 : 'YI SYLLABLE NIX', + 41343 : 'YI SYLLABLE NI', + 41344 : 'YI SYLLABLE NIP', + 41345 : 'YI SYLLABLE NIEX', + 41346 : 'YI SYLLABLE NIE', + 41347 : 'YI SYLLABLE NIEP', + 41348 : 'YI SYLLABLE NAX', + 41349 : 'YI SYLLABLE NA', + 41350 : 'YI SYLLABLE NAP', + 41351 : 'YI SYLLABLE NUOX', + 41352 : 'YI SYLLABLE NUO', + 41353 : 'YI SYLLABLE NUOP', + 41354 : 'YI SYLLABLE NOT', + 41355 : 'YI SYLLABLE NOX', + 41356 : 'YI SYLLABLE NO', + 41357 : 'YI SYLLABLE NOP', + 41358 : 'YI SYLLABLE NEX', + 41359 : 'YI SYLLABLE NE', + 41360 : 'YI SYLLABLE NEP', + 41361 : 'YI SYLLABLE NUT', + 41362 : 'YI SYLLABLE NUX', + 41363 : 'YI SYLLABLE NU', + 41364 : 'YI SYLLABLE NUP', + 41365 : 'YI SYLLABLE NURX', + 41366 : 'YI SYLLABLE NUR', + 41367 : 'YI SYLLABLE HLIT', + 41368 : 'YI SYLLABLE HLIX', + 41369 : 'YI SYLLABLE HLI', + 41370 : 'YI SYLLABLE HLIP', + 41371 : 'YI SYLLABLE HLIEX', + 41372 : 'YI SYLLABLE HLIE', + 41373 : 'YI SYLLABLE HLIEP', + 41374 : 'YI SYLLABLE HLAT', + 41375 : 'YI SYLLABLE HLAX', + 41376 : 'YI SYLLABLE HLA', + 41377 : 'YI SYLLABLE HLAP', + 41378 : 'YI SYLLABLE HLUOX', + 41379 : 'YI SYLLABLE HLUO', + 41380 : 'YI SYLLABLE HLUOP', + 41381 : 'YI SYLLABLE HLOX', + 41382 : 'YI SYLLABLE HLO', + 41383 : 'YI SYLLABLE HLOP', + 41384 : 'YI SYLLABLE HLEX', + 41385 : 'YI SYLLABLE HLE', + 41386 : 'YI SYLLABLE HLEP', + 41387 : 'YI SYLLABLE HLUT', + 41388 : 'YI SYLLABLE HLUX', + 41389 : 'YI SYLLABLE HLU', + 41390 : 'YI SYLLABLE HLUP', + 41391 : 'YI SYLLABLE HLURX', + 41392 : 'YI SYLLABLE HLUR', + 41393 : 'YI SYLLABLE HLYT', + 41394 : 'YI SYLLABLE HLYX', + 41395 : 'YI SYLLABLE HLY', + 41396 : 'YI SYLLABLE HLYP', + 41397 : 'YI SYLLABLE HLYRX', + 41398 : 'YI SYLLABLE HLYR', + 41399 : 'YI SYLLABLE LIT', + 41400 : 'YI SYLLABLE LIX', + 41401 : 'YI SYLLABLE LI', + 41402 : 'YI SYLLABLE LIP', + 41403 : 'YI SYLLABLE LIET', + 41404 : 'YI SYLLABLE LIEX', + 41405 : 'YI SYLLABLE LIE', + 41406 : 'YI SYLLABLE LIEP', + 41407 : 'YI SYLLABLE LAT', + 41408 : 'YI SYLLABLE LAX', + 41409 : 'YI SYLLABLE LA', + 41410 : 'YI SYLLABLE LAP', + 41411 : 'YI SYLLABLE LUOT', + 41412 : 'YI SYLLABLE LUOX', + 41413 : 'YI SYLLABLE LUO', + 41414 : 'YI SYLLABLE LUOP', + 41415 : 'YI SYLLABLE LOT', + 41416 : 'YI SYLLABLE LOX', + 41417 : 'YI SYLLABLE LO', + 41418 : 'YI SYLLABLE LOP', + 41419 : 'YI SYLLABLE LEX', + 41420 : 'YI SYLLABLE LE', + 41421 : 'YI SYLLABLE LEP', + 41422 : 'YI SYLLABLE LUT', + 41423 : 'YI SYLLABLE LUX', + 41424 : 'YI SYLLABLE LU', + 41425 : 'YI SYLLABLE LUP', + 41426 : 'YI SYLLABLE LURX', + 41427 : 'YI SYLLABLE LUR', + 41428 : 'YI SYLLABLE LYT', + 41429 : 'YI SYLLABLE LYX', + 41430 : 'YI SYLLABLE LY', + 41431 : 'YI SYLLABLE LYP', + 41432 : 'YI SYLLABLE LYRX', + 41433 : 'YI SYLLABLE LYR', + 41434 : 'YI SYLLABLE GIT', + 41435 : 'YI SYLLABLE GIX', + 41436 : 'YI SYLLABLE GI', + 41437 : 'YI SYLLABLE GIP', + 41438 : 'YI SYLLABLE GIET', + 41439 : 'YI SYLLABLE GIEX', + 41440 : 'YI SYLLABLE GIE', + 41441 : 'YI SYLLABLE GIEP', + 41442 : 'YI SYLLABLE GAT', + 41443 : 'YI SYLLABLE GAX', + 41444 : 'YI SYLLABLE GA', + 41445 : 'YI SYLLABLE GAP', + 41446 : 'YI SYLLABLE GUOT', + 41447 : 'YI SYLLABLE GUOX', + 41448 : 'YI SYLLABLE GUO', + 41449 : 'YI SYLLABLE GUOP', + 41450 : 'YI SYLLABLE GOT', + 41451 : 'YI SYLLABLE GOX', + 41452 : 'YI SYLLABLE GO', + 41453 : 'YI SYLLABLE GOP', + 41454 : 'YI SYLLABLE GET', + 41455 : 'YI SYLLABLE GEX', + 41456 : 'YI SYLLABLE GE', + 41457 : 'YI SYLLABLE GEP', + 41458 : 'YI SYLLABLE GUT', + 41459 : 'YI SYLLABLE GUX', + 41460 : 'YI SYLLABLE GU', + 41461 : 'YI SYLLABLE GUP', + 41462 : 'YI SYLLABLE GURX', + 41463 : 'YI SYLLABLE GUR', + 41464 : 'YI SYLLABLE KIT', + 41465 : 'YI SYLLABLE KIX', + 41466 : 'YI SYLLABLE KI', + 41467 : 'YI SYLLABLE KIP', + 41468 : 'YI SYLLABLE KIEX', + 41469 : 'YI SYLLABLE KIE', + 41470 : 'YI SYLLABLE KIEP', + 41471 : 'YI SYLLABLE KAT', + 41472 : 'YI SYLLABLE KAX', + 41473 : 'YI SYLLABLE KA', + 41474 : 'YI SYLLABLE KAP', + 41475 : 'YI SYLLABLE KUOX', + 41476 : 'YI SYLLABLE KUO', + 41477 : 'YI SYLLABLE KUOP', + 41478 : 'YI SYLLABLE KOT', + 41479 : 'YI SYLLABLE KOX', + 41480 : 'YI SYLLABLE KO', + 41481 : 'YI SYLLABLE KOP', + 41482 : 'YI SYLLABLE KET', + 41483 : 'YI SYLLABLE KEX', + 41484 : 'YI SYLLABLE KE', + 41485 : 'YI SYLLABLE KEP', + 41486 : 'YI SYLLABLE KUT', + 41487 : 'YI SYLLABLE KUX', + 41488 : 'YI SYLLABLE KU', + 41489 : 'YI SYLLABLE KUP', + 41490 : 'YI SYLLABLE KURX', + 41491 : 'YI SYLLABLE KUR', + 41492 : 'YI SYLLABLE GGIT', + 41493 : 'YI SYLLABLE GGIX', + 41494 : 'YI SYLLABLE GGI', + 41495 : 'YI SYLLABLE GGIEX', + 41496 : 'YI SYLLABLE GGIE', + 41497 : 'YI SYLLABLE GGIEP', + 41498 : 'YI SYLLABLE GGAT', + 41499 : 'YI SYLLABLE GGAX', + 41500 : 'YI SYLLABLE GGA', + 41501 : 'YI SYLLABLE GGAP', + 41502 : 'YI SYLLABLE GGUOT', + 41503 : 'YI SYLLABLE GGUOX', + 41504 : 'YI SYLLABLE GGUO', + 41505 : 'YI SYLLABLE GGUOP', + 41506 : 'YI SYLLABLE GGOT', + 41507 : 'YI SYLLABLE GGOX', + 41508 : 'YI SYLLABLE GGO', + 41509 : 'YI SYLLABLE GGOP', + 41510 : 'YI SYLLABLE GGET', + 41511 : 'YI SYLLABLE GGEX', + 41512 : 'YI SYLLABLE GGE', + 41513 : 'YI SYLLABLE GGEP', + 41514 : 'YI SYLLABLE GGUT', + 41515 : 'YI SYLLABLE GGUX', + 41516 : 'YI SYLLABLE GGU', + 41517 : 'YI SYLLABLE GGUP', + 41518 : 'YI SYLLABLE GGURX', + 41519 : 'YI SYLLABLE GGUR', + 41520 : 'YI SYLLABLE MGIEX', + 41521 : 'YI SYLLABLE MGIE', + 41522 : 'YI SYLLABLE MGAT', + 41523 : 'YI SYLLABLE MGAX', + 41524 : 'YI SYLLABLE MGA', + 41525 : 'YI SYLLABLE MGAP', + 41526 : 'YI SYLLABLE MGUOX', + 41527 : 'YI SYLLABLE MGUO', + 41528 : 'YI SYLLABLE MGUOP', + 41529 : 'YI SYLLABLE MGOT', + 41530 : 'YI SYLLABLE MGOX', + 41531 : 'YI SYLLABLE MGO', + 41532 : 'YI SYLLABLE MGOP', + 41533 : 'YI SYLLABLE MGEX', + 41534 : 'YI SYLLABLE MGE', + 41535 : 'YI SYLLABLE MGEP', + 41536 : 'YI SYLLABLE MGUT', + 41537 : 'YI SYLLABLE MGUX', + 41538 : 'YI SYLLABLE MGU', + 41539 : 'YI SYLLABLE MGUP', + 41540 : 'YI SYLLABLE MGURX', + 41541 : 'YI SYLLABLE MGUR', + 41542 : 'YI SYLLABLE HXIT', + 41543 : 'YI SYLLABLE HXIX', + 41544 : 'YI SYLLABLE HXI', + 41545 : 'YI SYLLABLE HXIP', + 41546 : 'YI SYLLABLE HXIET', + 41547 : 'YI SYLLABLE HXIEX', + 41548 : 'YI SYLLABLE HXIE', + 41549 : 'YI SYLLABLE HXIEP', + 41550 : 'YI SYLLABLE HXAT', + 41551 : 'YI SYLLABLE HXAX', + 41552 : 'YI SYLLABLE HXA', + 41553 : 'YI SYLLABLE HXAP', + 41554 : 'YI SYLLABLE HXUOT', + 41555 : 'YI SYLLABLE HXUOX', + 41556 : 'YI SYLLABLE HXUO', + 41557 : 'YI SYLLABLE HXUOP', + 41558 : 'YI SYLLABLE HXOT', + 41559 : 'YI SYLLABLE HXOX', + 41560 : 'YI SYLLABLE HXO', + 41561 : 'YI SYLLABLE HXOP', + 41562 : 'YI SYLLABLE HXEX', + 41563 : 'YI SYLLABLE HXE', + 41564 : 'YI SYLLABLE HXEP', + 41565 : 'YI SYLLABLE NGIEX', + 41566 : 'YI SYLLABLE NGIE', + 41567 : 'YI SYLLABLE NGIEP', + 41568 : 'YI SYLLABLE NGAT', + 41569 : 'YI SYLLABLE NGAX', + 41570 : 'YI SYLLABLE NGA', + 41571 : 'YI SYLLABLE NGAP', + 41572 : 'YI SYLLABLE NGUOT', + 41573 : 'YI SYLLABLE NGUOX', + 41574 : 'YI SYLLABLE NGUO', + 41575 : 'YI SYLLABLE NGOT', + 41576 : 'YI SYLLABLE NGOX', + 41577 : 'YI SYLLABLE NGO', + 41578 : 'YI SYLLABLE NGOP', + 41579 : 'YI SYLLABLE NGEX', + 41580 : 'YI SYLLABLE NGE', + 41581 : 'YI SYLLABLE NGEP', + 41582 : 'YI SYLLABLE HIT', + 41583 : 'YI SYLLABLE HIEX', + 41584 : 'YI SYLLABLE HIE', + 41585 : 'YI SYLLABLE HAT', + 41586 : 'YI SYLLABLE HAX', + 41587 : 'YI SYLLABLE HA', + 41588 : 'YI SYLLABLE HAP', + 41589 : 'YI SYLLABLE HUOT', + 41590 : 'YI SYLLABLE HUOX', + 41591 : 'YI SYLLABLE HUO', + 41592 : 'YI SYLLABLE HUOP', + 41593 : 'YI SYLLABLE HOT', + 41594 : 'YI SYLLABLE HOX', + 41595 : 'YI SYLLABLE HO', + 41596 : 'YI SYLLABLE HOP', + 41597 : 'YI SYLLABLE HEX', + 41598 : 'YI SYLLABLE HE', + 41599 : 'YI SYLLABLE HEP', + 41600 : 'YI SYLLABLE WAT', + 41601 : 'YI SYLLABLE WAX', + 41602 : 'YI SYLLABLE WA', + 41603 : 'YI SYLLABLE WAP', + 41604 : 'YI SYLLABLE WUOX', + 41605 : 'YI SYLLABLE WUO', + 41606 : 'YI SYLLABLE WUOP', + 41607 : 'YI SYLLABLE WOX', + 41608 : 'YI SYLLABLE WO', + 41609 : 'YI SYLLABLE WOP', + 41610 : 'YI SYLLABLE WEX', + 41611 : 'YI SYLLABLE WE', + 41612 : 'YI SYLLABLE WEP', + 41613 : 'YI SYLLABLE ZIT', + 41614 : 'YI SYLLABLE ZIX', + 41615 : 'YI SYLLABLE ZI', + 41616 : 'YI SYLLABLE ZIP', + 41617 : 'YI SYLLABLE ZIEX', + 41618 : 'YI SYLLABLE ZIE', + 41619 : 'YI SYLLABLE ZIEP', + 41620 : 'YI SYLLABLE ZAT', + 41621 : 'YI SYLLABLE ZAX', + 41622 : 'YI SYLLABLE ZA', + 41623 : 'YI SYLLABLE ZAP', + 41624 : 'YI SYLLABLE ZUOX', + 41625 : 'YI SYLLABLE ZUO', + 41626 : 'YI SYLLABLE ZUOP', + 41627 : 'YI SYLLABLE ZOT', + 41628 : 'YI SYLLABLE ZOX', + 41629 : 'YI SYLLABLE ZO', + 41630 : 'YI SYLLABLE ZOP', + 41631 : 'YI SYLLABLE ZEX', + 41632 : 'YI SYLLABLE ZE', + 41633 : 'YI SYLLABLE ZEP', + 41634 : 'YI SYLLABLE ZUT', + 41635 : 'YI SYLLABLE ZUX', + 41636 : 'YI SYLLABLE ZU', + 41637 : 'YI SYLLABLE ZUP', + 41638 : 'YI SYLLABLE ZURX', + 41639 : 'YI SYLLABLE ZUR', + 41640 : 'YI SYLLABLE ZYT', + 41641 : 'YI SYLLABLE ZYX', + 41642 : 'YI SYLLABLE ZY', + 41643 : 'YI SYLLABLE ZYP', + 41644 : 'YI SYLLABLE ZYRX', + 41645 : 'YI SYLLABLE ZYR', + 41646 : 'YI SYLLABLE CIT', + 41647 : 'YI SYLLABLE CIX', + 41648 : 'YI SYLLABLE CI', + 41649 : 'YI SYLLABLE CIP', + 41650 : 'YI SYLLABLE CIET', + 41651 : 'YI SYLLABLE CIEX', + 41652 : 'YI SYLLABLE CIE', + 41653 : 'YI SYLLABLE CIEP', + 41654 : 'YI SYLLABLE CAT', + 41655 : 'YI SYLLABLE CAX', + 41656 : 'YI SYLLABLE CA', + 41657 : 'YI SYLLABLE CAP', + 41658 : 'YI SYLLABLE CUOX', + 41659 : 'YI SYLLABLE CUO', + 41660 : 'YI SYLLABLE CUOP', + 41661 : 'YI SYLLABLE COT', + 41662 : 'YI SYLLABLE COX', + 41663 : 'YI SYLLABLE CO', + 41664 : 'YI SYLLABLE COP', + 41665 : 'YI SYLLABLE CEX', + 41666 : 'YI SYLLABLE CE', + 41667 : 'YI SYLLABLE CEP', + 41668 : 'YI SYLLABLE CUT', + 41669 : 'YI SYLLABLE CUX', + 41670 : 'YI SYLLABLE CU', + 41671 : 'YI SYLLABLE CUP', + 41672 : 'YI SYLLABLE CURX', + 41673 : 'YI SYLLABLE CUR', + 41674 : 'YI SYLLABLE CYT', + 41675 : 'YI SYLLABLE CYX', + 41676 : 'YI SYLLABLE CY', + 41677 : 'YI SYLLABLE CYP', + 41678 : 'YI SYLLABLE CYRX', + 41679 : 'YI SYLLABLE CYR', + 41680 : 'YI SYLLABLE ZZIT', + 41681 : 'YI SYLLABLE ZZIX', + 41682 : 'YI SYLLABLE ZZI', + 41683 : 'YI SYLLABLE ZZIP', + 41684 : 'YI SYLLABLE ZZIET', + 41685 : 'YI SYLLABLE ZZIEX', + 41686 : 'YI SYLLABLE ZZIE', + 41687 : 'YI SYLLABLE ZZIEP', + 41688 : 'YI SYLLABLE ZZAT', + 41689 : 'YI SYLLABLE ZZAX', + 41690 : 'YI SYLLABLE ZZA', + 41691 : 'YI SYLLABLE ZZAP', + 41692 : 'YI SYLLABLE ZZOX', + 41693 : 'YI SYLLABLE ZZO', + 41694 : 'YI SYLLABLE ZZOP', + 41695 : 'YI SYLLABLE ZZEX', + 41696 : 'YI SYLLABLE ZZE', + 41697 : 'YI SYLLABLE ZZEP', + 41698 : 'YI SYLLABLE ZZUX', + 41699 : 'YI SYLLABLE ZZU', + 41700 : 'YI SYLLABLE ZZUP', + 41701 : 'YI SYLLABLE ZZURX', + 41702 : 'YI SYLLABLE ZZUR', + 41703 : 'YI SYLLABLE ZZYT', + 41704 : 'YI SYLLABLE ZZYX', + 41705 : 'YI SYLLABLE ZZY', + 41706 : 'YI SYLLABLE ZZYP', + 41707 : 'YI SYLLABLE ZZYRX', + 41708 : 'YI SYLLABLE ZZYR', + 41709 : 'YI SYLLABLE NZIT', + 41710 : 'YI SYLLABLE NZIX', + 41711 : 'YI SYLLABLE NZI', + 41712 : 'YI SYLLABLE NZIP', + 41713 : 'YI SYLLABLE NZIEX', + 41714 : 'YI SYLLABLE NZIE', + 41715 : 'YI SYLLABLE NZIEP', + 41716 : 'YI SYLLABLE NZAT', + 41717 : 'YI SYLLABLE NZAX', + 41718 : 'YI SYLLABLE NZA', + 41719 : 'YI SYLLABLE NZAP', + 41720 : 'YI SYLLABLE NZUOX', + 41721 : 'YI SYLLABLE NZUO', + 41722 : 'YI SYLLABLE NZOX', + 41723 : 'YI SYLLABLE NZOP', + 41724 : 'YI SYLLABLE NZEX', + 41725 : 'YI SYLLABLE NZE', + 41726 : 'YI SYLLABLE NZUX', + 41727 : 'YI SYLLABLE NZU', + 41728 : 'YI SYLLABLE NZUP', + 41729 : 'YI SYLLABLE NZURX', + 41730 : 'YI SYLLABLE NZUR', + 41731 : 'YI SYLLABLE NZYT', + 41732 : 'YI SYLLABLE NZYX', + 41733 : 'YI SYLLABLE NZY', + 41734 : 'YI SYLLABLE NZYP', + 41735 : 'YI SYLLABLE NZYRX', + 41736 : 'YI SYLLABLE NZYR', + 41737 : 'YI SYLLABLE SIT', + 41738 : 'YI SYLLABLE SIX', + 41739 : 'YI SYLLABLE SI', + 41740 : 'YI SYLLABLE SIP', + 41741 : 'YI SYLLABLE SIEX', + 41742 : 'YI SYLLABLE SIE', + 41743 : 'YI SYLLABLE SIEP', + 41744 : 'YI SYLLABLE SAT', + 41745 : 'YI SYLLABLE SAX', + 41746 : 'YI SYLLABLE SA', + 41747 : 'YI SYLLABLE SAP', + 41748 : 'YI SYLLABLE SUOX', + 41749 : 'YI SYLLABLE SUO', + 41750 : 'YI SYLLABLE SUOP', + 41751 : 'YI SYLLABLE SOT', + 41752 : 'YI SYLLABLE SOX', + 41753 : 'YI SYLLABLE SO', + 41754 : 'YI SYLLABLE SOP', + 41755 : 'YI SYLLABLE SEX', + 41756 : 'YI SYLLABLE SE', + 41757 : 'YI SYLLABLE SEP', + 41758 : 'YI SYLLABLE SUT', + 41759 : 'YI SYLLABLE SUX', + 41760 : 'YI SYLLABLE SU', + 41761 : 'YI SYLLABLE SUP', + 41762 : 'YI SYLLABLE SURX', + 41763 : 'YI SYLLABLE SUR', + 41764 : 'YI SYLLABLE SYT', + 41765 : 'YI SYLLABLE SYX', + 41766 : 'YI SYLLABLE SY', + 41767 : 'YI SYLLABLE SYP', + 41768 : 'YI SYLLABLE SYRX', + 41769 : 'YI SYLLABLE SYR', + 41770 : 'YI SYLLABLE SSIT', + 41771 : 'YI SYLLABLE SSIX', + 41772 : 'YI SYLLABLE SSI', + 41773 : 'YI SYLLABLE SSIP', + 41774 : 'YI SYLLABLE SSIEX', + 41775 : 'YI SYLLABLE SSIE', + 41776 : 'YI SYLLABLE SSIEP', + 41777 : 'YI SYLLABLE SSAT', + 41778 : 'YI SYLLABLE SSAX', + 41779 : 'YI SYLLABLE SSA', + 41780 : 'YI SYLLABLE SSAP', + 41781 : 'YI SYLLABLE SSOT', + 41782 : 'YI SYLLABLE SSOX', + 41783 : 'YI SYLLABLE SSO', + 41784 : 'YI SYLLABLE SSOP', + 41785 : 'YI SYLLABLE SSEX', + 41786 : 'YI SYLLABLE SSE', + 41787 : 'YI SYLLABLE SSEP', + 41788 : 'YI SYLLABLE SSUT', + 41789 : 'YI SYLLABLE SSUX', + 41790 : 'YI SYLLABLE SSU', + 41791 : 'YI SYLLABLE SSUP', + 41792 : 'YI SYLLABLE SSYT', + 41793 : 'YI SYLLABLE SSYX', + 41794 : 'YI SYLLABLE SSY', + 41795 : 'YI SYLLABLE SSYP', + 41796 : 'YI SYLLABLE SSYRX', + 41797 : 'YI SYLLABLE SSYR', + 41798 : 'YI SYLLABLE ZHAT', + 41799 : 'YI SYLLABLE ZHAX', + 41800 : 'YI SYLLABLE ZHA', + 41801 : 'YI SYLLABLE ZHAP', + 41802 : 'YI SYLLABLE ZHUOX', + 41803 : 'YI SYLLABLE ZHUO', + 41804 : 'YI SYLLABLE ZHUOP', + 41805 : 'YI SYLLABLE ZHOT', + 41806 : 'YI SYLLABLE ZHOX', + 41807 : 'YI SYLLABLE ZHO', + 41808 : 'YI SYLLABLE ZHOP', + 41809 : 'YI SYLLABLE ZHET', + 41810 : 'YI SYLLABLE ZHEX', + 41811 : 'YI SYLLABLE ZHE', + 41812 : 'YI SYLLABLE ZHEP', + 41813 : 'YI SYLLABLE ZHUT', + 41814 : 'YI SYLLABLE ZHUX', + 41815 : 'YI SYLLABLE ZHU', + 41816 : 'YI SYLLABLE ZHUP', + 41817 : 'YI SYLLABLE ZHURX', + 41818 : 'YI SYLLABLE ZHUR', + 41819 : 'YI SYLLABLE ZHYT', + 41820 : 'YI SYLLABLE ZHYX', + 41821 : 'YI SYLLABLE ZHY', + 41822 : 'YI SYLLABLE ZHYP', + 41823 : 'YI SYLLABLE ZHYRX', + 41824 : 'YI SYLLABLE ZHYR', + 41825 : 'YI SYLLABLE CHAT', + 41826 : 'YI SYLLABLE CHAX', + 41827 : 'YI SYLLABLE CHA', + 41828 : 'YI SYLLABLE CHAP', + 41829 : 'YI SYLLABLE CHUOT', + 41830 : 'YI SYLLABLE CHUOX', + 41831 : 'YI SYLLABLE CHUO', + 41832 : 'YI SYLLABLE CHUOP', + 41833 : 'YI SYLLABLE CHOT', + 41834 : 'YI SYLLABLE CHOX', + 41835 : 'YI SYLLABLE CHO', + 41836 : 'YI SYLLABLE CHOP', + 41837 : 'YI SYLLABLE CHET', + 41838 : 'YI SYLLABLE CHEX', + 41839 : 'YI SYLLABLE CHE', + 41840 : 'YI SYLLABLE CHEP', + 41841 : 'YI SYLLABLE CHUX', + 41842 : 'YI SYLLABLE CHU', + 41843 : 'YI SYLLABLE CHUP', + 41844 : 'YI SYLLABLE CHURX', + 41845 : 'YI SYLLABLE CHUR', + 41846 : 'YI SYLLABLE CHYT', + 41847 : 'YI SYLLABLE CHYX', + 41848 : 'YI SYLLABLE CHY', + 41849 : 'YI SYLLABLE CHYP', + 41850 : 'YI SYLLABLE CHYRX', + 41851 : 'YI SYLLABLE CHYR', + 41852 : 'YI SYLLABLE RRAX', + 41853 : 'YI SYLLABLE RRA', + 41854 : 'YI SYLLABLE RRUOX', + 41855 : 'YI SYLLABLE RRUO', + 41856 : 'YI SYLLABLE RROT', + 41857 : 'YI SYLLABLE RROX', + 41858 : 'YI SYLLABLE RRO', + 41859 : 'YI SYLLABLE RROP', + 41860 : 'YI SYLLABLE RRET', + 41861 : 'YI SYLLABLE RREX', + 41862 : 'YI SYLLABLE RRE', + 41863 : 'YI SYLLABLE RREP', + 41864 : 'YI SYLLABLE RRUT', + 41865 : 'YI SYLLABLE RRUX', + 41866 : 'YI SYLLABLE RRU', + 41867 : 'YI SYLLABLE RRUP', + 41868 : 'YI SYLLABLE RRURX', + 41869 : 'YI SYLLABLE RRUR', + 41870 : 'YI SYLLABLE RRYT', + 41871 : 'YI SYLLABLE RRYX', + 41872 : 'YI SYLLABLE RRY', + 41873 : 'YI SYLLABLE RRYP', + 41874 : 'YI SYLLABLE RRYRX', + 41875 : 'YI SYLLABLE RRYR', + 41876 : 'YI SYLLABLE NRAT', + 41877 : 'YI SYLLABLE NRAX', + 41878 : 'YI SYLLABLE NRA', + 41879 : 'YI SYLLABLE NRAP', + 41880 : 'YI SYLLABLE NROX', + 41881 : 'YI SYLLABLE NRO', + 41882 : 'YI SYLLABLE NROP', + 41883 : 'YI SYLLABLE NRET', + 41884 : 'YI SYLLABLE NREX', + 41885 : 'YI SYLLABLE NRE', + 41886 : 'YI SYLLABLE NREP', + 41887 : 'YI SYLLABLE NRUT', + 41888 : 'YI SYLLABLE NRUX', + 41889 : 'YI SYLLABLE NRU', + 41890 : 'YI SYLLABLE NRUP', + 41891 : 'YI SYLLABLE NRURX', + 41892 : 'YI SYLLABLE NRUR', + 41893 : 'YI SYLLABLE NRYT', + 41894 : 'YI SYLLABLE NRYX', + 41895 : 'YI SYLLABLE NRY', + 41896 : 'YI SYLLABLE NRYP', + 41897 : 'YI SYLLABLE NRYRX', + 41898 : 'YI SYLLABLE NRYR', + 41899 : 'YI SYLLABLE SHAT', + 41900 : 'YI SYLLABLE SHAX', + 41901 : 'YI SYLLABLE SHA', + 41902 : 'YI SYLLABLE SHAP', + 41903 : 'YI SYLLABLE SHUOX', + 41904 : 'YI SYLLABLE SHUO', + 41905 : 'YI SYLLABLE SHUOP', + 41906 : 'YI SYLLABLE SHOT', + 41907 : 'YI SYLLABLE SHOX', + 41908 : 'YI SYLLABLE SHO', + 41909 : 'YI SYLLABLE SHOP', + 41910 : 'YI SYLLABLE SHET', + 41911 : 'YI SYLLABLE SHEX', + 41912 : 'YI SYLLABLE SHE', + 41913 : 'YI SYLLABLE SHEP', + 41914 : 'YI SYLLABLE SHUT', + 41915 : 'YI SYLLABLE SHUX', + 41916 : 'YI SYLLABLE SHU', + 41917 : 'YI SYLLABLE SHUP', + 41918 : 'YI SYLLABLE SHURX', + 41919 : 'YI SYLLABLE SHUR', + 41920 : 'YI SYLLABLE SHYT', + 41921 : 'YI SYLLABLE SHYX', + 41922 : 'YI SYLLABLE SHY', + 41923 : 'YI SYLLABLE SHYP', + 41924 : 'YI SYLLABLE SHYRX', + 41925 : 'YI SYLLABLE SHYR', + 41926 : 'YI SYLLABLE RAT', + 41927 : 'YI SYLLABLE RAX', + 41928 : 'YI SYLLABLE RA', + 41929 : 'YI SYLLABLE RAP', + 41930 : 'YI SYLLABLE RUOX', + 41931 : 'YI SYLLABLE RUO', + 41932 : 'YI SYLLABLE RUOP', + 41933 : 'YI SYLLABLE ROT', + 41934 : 'YI SYLLABLE ROX', + 41935 : 'YI SYLLABLE RO', + 41936 : 'YI SYLLABLE ROP', + 41937 : 'YI SYLLABLE REX', + 41938 : 'YI SYLLABLE RE', + 41939 : 'YI SYLLABLE REP', + 41940 : 'YI SYLLABLE RUT', + 41941 : 'YI SYLLABLE RUX', + 41942 : 'YI SYLLABLE RU', + 41943 : 'YI SYLLABLE RUP', + 41944 : 'YI SYLLABLE RURX', + 41945 : 'YI SYLLABLE RUR', + 41946 : 'YI SYLLABLE RYT', + 41947 : 'YI SYLLABLE RYX', + 41948 : 'YI SYLLABLE RY', + 41949 : 'YI SYLLABLE RYP', + 41950 : 'YI SYLLABLE RYRX', + 41951 : 'YI SYLLABLE RYR', + 41952 : 'YI SYLLABLE JIT', + 41953 : 'YI SYLLABLE JIX', + 41954 : 'YI SYLLABLE JI', + 41955 : 'YI SYLLABLE JIP', + 41956 : 'YI SYLLABLE JIET', + 41957 : 'YI SYLLABLE JIEX', + 41958 : 'YI SYLLABLE JIE', + 41959 : 'YI SYLLABLE JIEP', + 41960 : 'YI SYLLABLE JUOT', + 41961 : 'YI SYLLABLE JUOX', + 41962 : 'YI SYLLABLE JUO', + 41963 : 'YI SYLLABLE JUOP', + 41964 : 'YI SYLLABLE JOT', + 41965 : 'YI SYLLABLE JOX', + 41966 : 'YI SYLLABLE JO', + 41967 : 'YI SYLLABLE JOP', + 41968 : 'YI SYLLABLE JUT', + 41969 : 'YI SYLLABLE JUX', + 41970 : 'YI SYLLABLE JU', + 41971 : 'YI SYLLABLE JUP', + 41972 : 'YI SYLLABLE JURX', + 41973 : 'YI SYLLABLE JUR', + 41974 : 'YI SYLLABLE JYT', + 41975 : 'YI SYLLABLE JYX', + 41976 : 'YI SYLLABLE JY', + 41977 : 'YI SYLLABLE JYP', + 41978 : 'YI SYLLABLE JYRX', + 41979 : 'YI SYLLABLE JYR', + 41980 : 'YI SYLLABLE QIT', + 41981 : 'YI SYLLABLE QIX', + 41982 : 'YI SYLLABLE QI', + 41983 : 'YI SYLLABLE QIP', + 41984 : 'YI SYLLABLE QIET', + 41985 : 'YI SYLLABLE QIEX', + 41986 : 'YI SYLLABLE QIE', + 41987 : 'YI SYLLABLE QIEP', + 41988 : 'YI SYLLABLE QUOT', + 41989 : 'YI SYLLABLE QUOX', + 41990 : 'YI SYLLABLE QUO', + 41991 : 'YI SYLLABLE QUOP', + 41992 : 'YI SYLLABLE QOT', + 41993 : 'YI SYLLABLE QOX', + 41994 : 'YI SYLLABLE QO', + 41995 : 'YI SYLLABLE QOP', + 41996 : 'YI SYLLABLE QUT', + 41997 : 'YI SYLLABLE QUX', + 41998 : 'YI SYLLABLE QU', + 41999 : 'YI SYLLABLE QUP', + 42000 : 'YI SYLLABLE QURX', + 42001 : 'YI SYLLABLE QUR', + 42002 : 'YI SYLLABLE QYT', + 42003 : 'YI SYLLABLE QYX', + 42004 : 'YI SYLLABLE QY', + 42005 : 'YI SYLLABLE QYP', + 42006 : 'YI SYLLABLE QYRX', + 42007 : 'YI SYLLABLE QYR', + 42008 : 'YI SYLLABLE JJIT', + 42009 : 'YI SYLLABLE JJIX', + 42010 : 'YI SYLLABLE JJI', + 42011 : 'YI SYLLABLE JJIP', + 42012 : 'YI SYLLABLE JJIET', + 42013 : 'YI SYLLABLE JJIEX', + 42014 : 'YI SYLLABLE JJIE', + 42015 : 'YI SYLLABLE JJIEP', + 42016 : 'YI SYLLABLE JJUOX', + 42017 : 'YI SYLLABLE JJUO', + 42018 : 'YI SYLLABLE JJUOP', + 42019 : 'YI SYLLABLE JJOT', + 42020 : 'YI SYLLABLE JJOX', + 42021 : 'YI SYLLABLE JJO', + 42022 : 'YI SYLLABLE JJOP', + 42023 : 'YI SYLLABLE JJUT', + 42024 : 'YI SYLLABLE JJUX', + 42025 : 'YI SYLLABLE JJU', + 42026 : 'YI SYLLABLE JJUP', + 42027 : 'YI SYLLABLE JJURX', + 42028 : 'YI SYLLABLE JJUR', + 42029 : 'YI SYLLABLE JJYT', + 42030 : 'YI SYLLABLE JJYX', + 42031 : 'YI SYLLABLE JJY', + 42032 : 'YI SYLLABLE JJYP', + 42033 : 'YI SYLLABLE NJIT', + 42034 : 'YI SYLLABLE NJIX', + 42035 : 'YI SYLLABLE NJI', + 42036 : 'YI SYLLABLE NJIP', + 42037 : 'YI SYLLABLE NJIET', + 42038 : 'YI SYLLABLE NJIEX', + 42039 : 'YI SYLLABLE NJIE', + 42040 : 'YI SYLLABLE NJIEP', + 42041 : 'YI SYLLABLE NJUOX', + 42042 : 'YI SYLLABLE NJUO', + 42043 : 'YI SYLLABLE NJOT', + 42044 : 'YI SYLLABLE NJOX', + 42045 : 'YI SYLLABLE NJO', + 42046 : 'YI SYLLABLE NJOP', + 42047 : 'YI SYLLABLE NJUX', + 42048 : 'YI SYLLABLE NJU', + 42049 : 'YI SYLLABLE NJUP', + 42050 : 'YI SYLLABLE NJURX', + 42051 : 'YI SYLLABLE NJUR', + 42052 : 'YI SYLLABLE NJYT', + 42053 : 'YI SYLLABLE NJYX', + 42054 : 'YI SYLLABLE NJY', + 42055 : 'YI SYLLABLE NJYP', + 42056 : 'YI SYLLABLE NJYRX', + 42057 : 'YI SYLLABLE NJYR', + 42058 : 'YI SYLLABLE NYIT', + 42059 : 'YI SYLLABLE NYIX', + 42060 : 'YI SYLLABLE NYI', + 42061 : 'YI SYLLABLE NYIP', + 42062 : 'YI SYLLABLE NYIET', + 42063 : 'YI SYLLABLE NYIEX', + 42064 : 'YI SYLLABLE NYIE', + 42065 : 'YI SYLLABLE NYIEP', + 42066 : 'YI SYLLABLE NYUOX', + 42067 : 'YI SYLLABLE NYUO', + 42068 : 'YI SYLLABLE NYUOP', + 42069 : 'YI SYLLABLE NYOT', + 42070 : 'YI SYLLABLE NYOX', + 42071 : 'YI SYLLABLE NYO', + 42072 : 'YI SYLLABLE NYOP', + 42073 : 'YI SYLLABLE NYUT', + 42074 : 'YI SYLLABLE NYUX', + 42075 : 'YI SYLLABLE NYU', + 42076 : 'YI SYLLABLE NYUP', + 42077 : 'YI SYLLABLE XIT', + 42078 : 'YI SYLLABLE XIX', + 42079 : 'YI SYLLABLE XI', + 42080 : 'YI SYLLABLE XIP', + 42081 : 'YI SYLLABLE XIET', + 42082 : 'YI SYLLABLE XIEX', + 42083 : 'YI SYLLABLE XIE', + 42084 : 'YI SYLLABLE XIEP', + 42085 : 'YI SYLLABLE XUOX', + 42086 : 'YI SYLLABLE XUO', + 42087 : 'YI SYLLABLE XOT', + 42088 : 'YI SYLLABLE XOX', + 42089 : 'YI SYLLABLE XO', + 42090 : 'YI SYLLABLE XOP', + 42091 : 'YI SYLLABLE XYT', + 42092 : 'YI SYLLABLE XYX', + 42093 : 'YI SYLLABLE XY', + 42094 : 'YI SYLLABLE XYP', + 42095 : 'YI SYLLABLE XYRX', + 42096 : 'YI SYLLABLE XYR', + 42097 : 'YI SYLLABLE YIT', + 42098 : 'YI SYLLABLE YIX', + 42099 : 'YI SYLLABLE YI', + 42100 : 'YI SYLLABLE YIP', + 42101 : 'YI SYLLABLE YIET', + 42102 : 'YI SYLLABLE YIEX', + 42103 : 'YI SYLLABLE YIE', + 42104 : 'YI SYLLABLE YIEP', + 42105 : 'YI SYLLABLE YUOT', + 42106 : 'YI SYLLABLE YUOX', + 42107 : 'YI SYLLABLE YUO', + 42108 : 'YI SYLLABLE YUOP', + 42109 : 'YI SYLLABLE YOT', + 42110 : 'YI SYLLABLE YOX', + 42111 : 'YI SYLLABLE YO', + 42112 : 'YI SYLLABLE YOP', + 42113 : 'YI SYLLABLE YUT', + 42114 : 'YI SYLLABLE YUX', + 42115 : 'YI SYLLABLE YU', + 42116 : 'YI SYLLABLE YUP', + 42117 : 'YI SYLLABLE YURX', + 42118 : 'YI SYLLABLE YUR', + 42119 : 'YI SYLLABLE YYT', + 42120 : 'YI SYLLABLE YYX', + 42121 : 'YI SYLLABLE YY', + 42122 : 'YI SYLLABLE YYP', + 42123 : 'YI SYLLABLE YYRX', + 42124 : 'YI SYLLABLE YYR', + 42128 : 'YI RADICAL QOT', + 42129 : 'YI RADICAL LI', + 42130 : 'YI RADICAL KIT', + 42131 : 'YI RADICAL NYIP', + 42132 : 'YI RADICAL CYP', + 42133 : 'YI RADICAL SSI', + 42134 : 'YI RADICAL GGOP', + 42135 : 'YI RADICAL GEP', + 42136 : 'YI RADICAL MI', + 42137 : 'YI RADICAL HXIT', + 42138 : 'YI RADICAL LYR', + 42139 : 'YI RADICAL BBUT', + 42140 : 'YI RADICAL MOP', + 42141 : 'YI RADICAL YO', + 42142 : 'YI RADICAL PUT', + 42143 : 'YI RADICAL HXUO', + 42144 : 'YI RADICAL TAT', + 42145 : 'YI RADICAL GA', + 42146 : 'YI RADICAL ZUP', + 42147 : 'YI RADICAL CYT', + 42148 : 'YI RADICAL DDUR', + 42149 : 'YI RADICAL BUR', + 42150 : 'YI RADICAL GGUO', + 42151 : 'YI RADICAL NYOP', + 42152 : 'YI RADICAL TU', + 42153 : 'YI RADICAL OP', + 42154 : 'YI RADICAL JJUT', + 42155 : 'YI RADICAL ZOT', + 42156 : 'YI RADICAL PYT', + 42157 : 'YI RADICAL HMO', + 42158 : 'YI RADICAL YIT', + 42159 : 'YI RADICAL VUR', + 42160 : 'YI RADICAL SHY', + 42161 : 'YI RADICAL VEP', + 42162 : 'YI RADICAL ZA', + 42163 : 'YI RADICAL JO', + 42164 : 'YI RADICAL NZUP', + 42165 : 'YI RADICAL JJY', + 42166 : 'YI RADICAL GOT', + 42167 : 'YI RADICAL JJIE', + 42168 : 'YI RADICAL WO', + 42169 : 'YI RADICAL DU', + 42170 : 'YI RADICAL SHUR', + 42171 : 'YI RADICAL LIE', + 42172 : 'YI RADICAL CY', + 42173 : 'YI RADICAL CUOP', + 42174 : 'YI RADICAL CIP', + 42175 : 'YI RADICAL HXOP', + 42176 : 'YI RADICAL SHAT', + 42177 : 'YI RADICAL ZUR', + 42178 : 'YI RADICAL SHOP', + 42179 : 'YI RADICAL CHE', + 42180 : 'YI RADICAL ZZIET', + 42181 : 'YI RADICAL NBIE', + 42182 : 'YI RADICAL KE', + 44032 : '', + 55203 : '', + 55296 : '', + 56191 : '', + 56192 : '', + 56319 : '', + 56320 : '', + 57343 : '', + 57344 : '', + 63743 : '', + 63744 : 'CJK COMPATIBILITY IDEOGRAPH-F900', + 63745 : 'CJK COMPATIBILITY IDEOGRAPH-F901', + 63746 : 'CJK COMPATIBILITY IDEOGRAPH-F902', + 63747 : 'CJK COMPATIBILITY IDEOGRAPH-F903', + 63748 : 'CJK COMPATIBILITY IDEOGRAPH-F904', + 63749 : 'CJK COMPATIBILITY IDEOGRAPH-F905', + 63750 : 'CJK COMPATIBILITY IDEOGRAPH-F906', + 63751 : 'CJK COMPATIBILITY IDEOGRAPH-F907', + 63752 : 'CJK COMPATIBILITY IDEOGRAPH-F908', + 63753 : 'CJK COMPATIBILITY IDEOGRAPH-F909', + 63754 : 'CJK COMPATIBILITY IDEOGRAPH-F90A', + 63755 : 'CJK COMPATIBILITY IDEOGRAPH-F90B', + 63756 : 'CJK COMPATIBILITY IDEOGRAPH-F90C', + 63757 : 'CJK COMPATIBILITY IDEOGRAPH-F90D', + 63758 : 'CJK COMPATIBILITY IDEOGRAPH-F90E', + 63759 : 'CJK COMPATIBILITY IDEOGRAPH-F90F', + 63760 : 'CJK COMPATIBILITY IDEOGRAPH-F910', + 63761 : 'CJK COMPATIBILITY IDEOGRAPH-F911', + 63762 : 'CJK COMPATIBILITY IDEOGRAPH-F912', + 63763 : 'CJK COMPATIBILITY IDEOGRAPH-F913', + 63764 : 'CJK COMPATIBILITY IDEOGRAPH-F914', + 63765 : 'CJK COMPATIBILITY IDEOGRAPH-F915', + 63766 : 'CJK COMPATIBILITY IDEOGRAPH-F916', + 63767 : 'CJK COMPATIBILITY IDEOGRAPH-F917', + 63768 : 'CJK COMPATIBILITY IDEOGRAPH-F918', + 63769 : 'CJK COMPATIBILITY IDEOGRAPH-F919', + 63770 : 'CJK COMPATIBILITY IDEOGRAPH-F91A', + 63771 : 'CJK COMPATIBILITY IDEOGRAPH-F91B', + 63772 : 'CJK COMPATIBILITY IDEOGRAPH-F91C', + 63773 : 'CJK COMPATIBILITY IDEOGRAPH-F91D', + 63774 : 'CJK COMPATIBILITY IDEOGRAPH-F91E', + 63775 : 'CJK COMPATIBILITY IDEOGRAPH-F91F', + 63776 : 'CJK COMPATIBILITY IDEOGRAPH-F920', + 63777 : 'CJK COMPATIBILITY IDEOGRAPH-F921', + 63778 : 'CJK COMPATIBILITY IDEOGRAPH-F922', + 63779 : 'CJK COMPATIBILITY IDEOGRAPH-F923', + 63780 : 'CJK COMPATIBILITY IDEOGRAPH-F924', + 63781 : 'CJK COMPATIBILITY IDEOGRAPH-F925', + 63782 : 'CJK COMPATIBILITY IDEOGRAPH-F926', + 63783 : 'CJK COMPATIBILITY IDEOGRAPH-F927', + 63784 : 'CJK COMPATIBILITY IDEOGRAPH-F928', + 63785 : 'CJK COMPATIBILITY IDEOGRAPH-F929', + 63786 : 'CJK COMPATIBILITY IDEOGRAPH-F92A', + 63787 : 'CJK COMPATIBILITY IDEOGRAPH-F92B', + 63788 : 'CJK COMPATIBILITY IDEOGRAPH-F92C', + 63789 : 'CJK COMPATIBILITY IDEOGRAPH-F92D', + 63790 : 'CJK COMPATIBILITY IDEOGRAPH-F92E', + 63791 : 'CJK COMPATIBILITY IDEOGRAPH-F92F', + 63792 : 'CJK COMPATIBILITY IDEOGRAPH-F930', + 63793 : 'CJK COMPATIBILITY IDEOGRAPH-F931', + 63794 : 'CJK COMPATIBILITY IDEOGRAPH-F932', + 63795 : 'CJK COMPATIBILITY IDEOGRAPH-F933', + 63796 : 'CJK COMPATIBILITY IDEOGRAPH-F934', + 63797 : 'CJK COMPATIBILITY IDEOGRAPH-F935', + 63798 : 'CJK COMPATIBILITY IDEOGRAPH-F936', + 63799 : 'CJK COMPATIBILITY IDEOGRAPH-F937', + 63800 : 'CJK COMPATIBILITY IDEOGRAPH-F938', + 63801 : 'CJK COMPATIBILITY IDEOGRAPH-F939', + 63802 : 'CJK COMPATIBILITY IDEOGRAPH-F93A', + 63803 : 'CJK COMPATIBILITY IDEOGRAPH-F93B', + 63804 : 'CJK COMPATIBILITY IDEOGRAPH-F93C', + 63805 : 'CJK COMPATIBILITY IDEOGRAPH-F93D', + 63806 : 'CJK COMPATIBILITY IDEOGRAPH-F93E', + 63807 : 'CJK COMPATIBILITY IDEOGRAPH-F93F', + 63808 : 'CJK COMPATIBILITY IDEOGRAPH-F940', + 63809 : 'CJK COMPATIBILITY IDEOGRAPH-F941', + 63810 : 'CJK COMPATIBILITY IDEOGRAPH-F942', + 63811 : 'CJK COMPATIBILITY IDEOGRAPH-F943', + 63812 : 'CJK COMPATIBILITY IDEOGRAPH-F944', + 63813 : 'CJK COMPATIBILITY IDEOGRAPH-F945', + 63814 : 'CJK COMPATIBILITY IDEOGRAPH-F946', + 63815 : 'CJK COMPATIBILITY IDEOGRAPH-F947', + 63816 : 'CJK COMPATIBILITY IDEOGRAPH-F948', + 63817 : 'CJK COMPATIBILITY IDEOGRAPH-F949', + 63818 : 'CJK COMPATIBILITY IDEOGRAPH-F94A', + 63819 : 'CJK COMPATIBILITY IDEOGRAPH-F94B', + 63820 : 'CJK COMPATIBILITY IDEOGRAPH-F94C', + 63821 : 'CJK COMPATIBILITY IDEOGRAPH-F94D', + 63822 : 'CJK COMPATIBILITY IDEOGRAPH-F94E', + 63823 : 'CJK COMPATIBILITY IDEOGRAPH-F94F', + 63824 : 'CJK COMPATIBILITY IDEOGRAPH-F950', + 63825 : 'CJK COMPATIBILITY IDEOGRAPH-F951', + 63826 : 'CJK COMPATIBILITY IDEOGRAPH-F952', + 63827 : 'CJK COMPATIBILITY IDEOGRAPH-F953', + 63828 : 'CJK COMPATIBILITY IDEOGRAPH-F954', + 63829 : 'CJK COMPATIBILITY IDEOGRAPH-F955', + 63830 : 'CJK COMPATIBILITY IDEOGRAPH-F956', + 63831 : 'CJK COMPATIBILITY IDEOGRAPH-F957', + 63832 : 'CJK COMPATIBILITY IDEOGRAPH-F958', + 63833 : 'CJK COMPATIBILITY IDEOGRAPH-F959', + 63834 : 'CJK COMPATIBILITY IDEOGRAPH-F95A', + 63835 : 'CJK COMPATIBILITY IDEOGRAPH-F95B', + 63836 : 'CJK COMPATIBILITY IDEOGRAPH-F95C', + 63837 : 'CJK COMPATIBILITY IDEOGRAPH-F95D', + 63838 : 'CJK COMPATIBILITY IDEOGRAPH-F95E', + 63839 : 'CJK COMPATIBILITY IDEOGRAPH-F95F', + 63840 : 'CJK COMPATIBILITY IDEOGRAPH-F960', + 63841 : 'CJK COMPATIBILITY IDEOGRAPH-F961', + 63842 : 'CJK COMPATIBILITY IDEOGRAPH-F962', + 63843 : 'CJK COMPATIBILITY IDEOGRAPH-F963', + 63844 : 'CJK COMPATIBILITY IDEOGRAPH-F964', + 63845 : 'CJK COMPATIBILITY IDEOGRAPH-F965', + 63846 : 'CJK COMPATIBILITY IDEOGRAPH-F966', + 63847 : 'CJK COMPATIBILITY IDEOGRAPH-F967', + 63848 : 'CJK COMPATIBILITY IDEOGRAPH-F968', + 63849 : 'CJK COMPATIBILITY IDEOGRAPH-F969', + 63850 : 'CJK COMPATIBILITY IDEOGRAPH-F96A', + 63851 : 'CJK COMPATIBILITY IDEOGRAPH-F96B', + 63852 : 'CJK COMPATIBILITY IDEOGRAPH-F96C', + 63853 : 'CJK COMPATIBILITY IDEOGRAPH-F96D', + 63854 : 'CJK COMPATIBILITY IDEOGRAPH-F96E', + 63855 : 'CJK COMPATIBILITY IDEOGRAPH-F96F', + 63856 : 'CJK COMPATIBILITY IDEOGRAPH-F970', + 63857 : 'CJK COMPATIBILITY IDEOGRAPH-F971', + 63858 : 'CJK COMPATIBILITY IDEOGRAPH-F972', + 63859 : 'CJK COMPATIBILITY IDEOGRAPH-F973', + 63860 : 'CJK COMPATIBILITY IDEOGRAPH-F974', + 63861 : 'CJK COMPATIBILITY IDEOGRAPH-F975', + 63862 : 'CJK COMPATIBILITY IDEOGRAPH-F976', + 63863 : 'CJK COMPATIBILITY IDEOGRAPH-F977', + 63864 : 'CJK COMPATIBILITY IDEOGRAPH-F978', + 63865 : 'CJK COMPATIBILITY IDEOGRAPH-F979', + 63866 : 'CJK COMPATIBILITY IDEOGRAPH-F97A', + 63867 : 'CJK COMPATIBILITY IDEOGRAPH-F97B', + 63868 : 'CJK COMPATIBILITY IDEOGRAPH-F97C', + 63869 : 'CJK COMPATIBILITY IDEOGRAPH-F97D', + 63870 : 'CJK COMPATIBILITY IDEOGRAPH-F97E', + 63871 : 'CJK COMPATIBILITY IDEOGRAPH-F97F', + 63872 : 'CJK COMPATIBILITY IDEOGRAPH-F980', + 63873 : 'CJK COMPATIBILITY IDEOGRAPH-F981', + 63874 : 'CJK COMPATIBILITY IDEOGRAPH-F982', + 63875 : 'CJK COMPATIBILITY IDEOGRAPH-F983', + 63876 : 'CJK COMPATIBILITY IDEOGRAPH-F984', + 63877 : 'CJK COMPATIBILITY IDEOGRAPH-F985', + 63878 : 'CJK COMPATIBILITY IDEOGRAPH-F986', + 63879 : 'CJK COMPATIBILITY IDEOGRAPH-F987', + 63880 : 'CJK COMPATIBILITY IDEOGRAPH-F988', + 63881 : 'CJK COMPATIBILITY IDEOGRAPH-F989', + 63882 : 'CJK COMPATIBILITY IDEOGRAPH-F98A', + 63883 : 'CJK COMPATIBILITY IDEOGRAPH-F98B', + 63884 : 'CJK COMPATIBILITY IDEOGRAPH-F98C', + 63885 : 'CJK COMPATIBILITY IDEOGRAPH-F98D', + 63886 : 'CJK COMPATIBILITY IDEOGRAPH-F98E', + 63887 : 'CJK COMPATIBILITY IDEOGRAPH-F98F', + 63888 : 'CJK COMPATIBILITY IDEOGRAPH-F990', + 63889 : 'CJK COMPATIBILITY IDEOGRAPH-F991', + 63890 : 'CJK COMPATIBILITY IDEOGRAPH-F992', + 63891 : 'CJK COMPATIBILITY IDEOGRAPH-F993', + 63892 : 'CJK COMPATIBILITY IDEOGRAPH-F994', + 63893 : 'CJK COMPATIBILITY IDEOGRAPH-F995', + 63894 : 'CJK COMPATIBILITY IDEOGRAPH-F996', + 63895 : 'CJK COMPATIBILITY IDEOGRAPH-F997', + 63896 : 'CJK COMPATIBILITY IDEOGRAPH-F998', + 63897 : 'CJK COMPATIBILITY IDEOGRAPH-F999', + 63898 : 'CJK COMPATIBILITY IDEOGRAPH-F99A', + 63899 : 'CJK COMPATIBILITY IDEOGRAPH-F99B', + 63900 : 'CJK COMPATIBILITY IDEOGRAPH-F99C', + 63901 : 'CJK COMPATIBILITY IDEOGRAPH-F99D', + 63902 : 'CJK COMPATIBILITY IDEOGRAPH-F99E', + 63903 : 'CJK COMPATIBILITY IDEOGRAPH-F99F', + 63904 : 'CJK COMPATIBILITY IDEOGRAPH-F9A0', + 63905 : 'CJK COMPATIBILITY IDEOGRAPH-F9A1', + 63906 : 'CJK COMPATIBILITY IDEOGRAPH-F9A2', + 63907 : 'CJK COMPATIBILITY IDEOGRAPH-F9A3', + 63908 : 'CJK COMPATIBILITY IDEOGRAPH-F9A4', + 63909 : 'CJK COMPATIBILITY IDEOGRAPH-F9A5', + 63910 : 'CJK COMPATIBILITY IDEOGRAPH-F9A6', + 63911 : 'CJK COMPATIBILITY IDEOGRAPH-F9A7', + 63912 : 'CJK COMPATIBILITY IDEOGRAPH-F9A8', + 63913 : 'CJK COMPATIBILITY IDEOGRAPH-F9A9', + 63914 : 'CJK COMPATIBILITY IDEOGRAPH-F9AA', + 63915 : 'CJK COMPATIBILITY IDEOGRAPH-F9AB', + 63916 : 'CJK COMPATIBILITY IDEOGRAPH-F9AC', + 63917 : 'CJK COMPATIBILITY IDEOGRAPH-F9AD', + 63918 : 'CJK COMPATIBILITY IDEOGRAPH-F9AE', + 63919 : 'CJK COMPATIBILITY IDEOGRAPH-F9AF', + 63920 : 'CJK COMPATIBILITY IDEOGRAPH-F9B0', + 63921 : 'CJK COMPATIBILITY IDEOGRAPH-F9B1', + 63922 : 'CJK COMPATIBILITY IDEOGRAPH-F9B2', + 63923 : 'CJK COMPATIBILITY IDEOGRAPH-F9B3', + 63924 : 'CJK COMPATIBILITY IDEOGRAPH-F9B4', + 63925 : 'CJK COMPATIBILITY IDEOGRAPH-F9B5', + 63926 : 'CJK COMPATIBILITY IDEOGRAPH-F9B6', + 63927 : 'CJK COMPATIBILITY IDEOGRAPH-F9B7', + 63928 : 'CJK COMPATIBILITY IDEOGRAPH-F9B8', + 63929 : 'CJK COMPATIBILITY IDEOGRAPH-F9B9', + 63930 : 'CJK COMPATIBILITY IDEOGRAPH-F9BA', + 63931 : 'CJK COMPATIBILITY IDEOGRAPH-F9BB', + 63932 : 'CJK COMPATIBILITY IDEOGRAPH-F9BC', + 63933 : 'CJK COMPATIBILITY IDEOGRAPH-F9BD', + 63934 : 'CJK COMPATIBILITY IDEOGRAPH-F9BE', + 63935 : 'CJK COMPATIBILITY IDEOGRAPH-F9BF', + 63936 : 'CJK COMPATIBILITY IDEOGRAPH-F9C0', + 63937 : 'CJK COMPATIBILITY IDEOGRAPH-F9C1', + 63938 : 'CJK COMPATIBILITY IDEOGRAPH-F9C2', + 63939 : 'CJK COMPATIBILITY IDEOGRAPH-F9C3', + 63940 : 'CJK COMPATIBILITY IDEOGRAPH-F9C4', + 63941 : 'CJK COMPATIBILITY IDEOGRAPH-F9C5', + 63942 : 'CJK COMPATIBILITY IDEOGRAPH-F9C6', + 63943 : 'CJK COMPATIBILITY IDEOGRAPH-F9C7', + 63944 : 'CJK COMPATIBILITY IDEOGRAPH-F9C8', + 63945 : 'CJK COMPATIBILITY IDEOGRAPH-F9C9', + 63946 : 'CJK COMPATIBILITY IDEOGRAPH-F9CA', + 63947 : 'CJK COMPATIBILITY IDEOGRAPH-F9CB', + 63948 : 'CJK COMPATIBILITY IDEOGRAPH-F9CC', + 63949 : 'CJK COMPATIBILITY IDEOGRAPH-F9CD', + 63950 : 'CJK COMPATIBILITY IDEOGRAPH-F9CE', + 63951 : 'CJK COMPATIBILITY IDEOGRAPH-F9CF', + 63952 : 'CJK COMPATIBILITY IDEOGRAPH-F9D0', + 63953 : 'CJK COMPATIBILITY IDEOGRAPH-F9D1', + 63954 : 'CJK COMPATIBILITY IDEOGRAPH-F9D2', + 63955 : 'CJK COMPATIBILITY IDEOGRAPH-F9D3', + 63956 : 'CJK COMPATIBILITY IDEOGRAPH-F9D4', + 63957 : 'CJK COMPATIBILITY IDEOGRAPH-F9D5', + 63958 : 'CJK COMPATIBILITY IDEOGRAPH-F9D6', + 63959 : 'CJK COMPATIBILITY IDEOGRAPH-F9D7', + 63960 : 'CJK COMPATIBILITY IDEOGRAPH-F9D8', + 63961 : 'CJK COMPATIBILITY IDEOGRAPH-F9D9', + 63962 : 'CJK COMPATIBILITY IDEOGRAPH-F9DA', + 63963 : 'CJK COMPATIBILITY IDEOGRAPH-F9DB', + 63964 : 'CJK COMPATIBILITY IDEOGRAPH-F9DC', + 63965 : 'CJK COMPATIBILITY IDEOGRAPH-F9DD', + 63966 : 'CJK COMPATIBILITY IDEOGRAPH-F9DE', + 63967 : 'CJK COMPATIBILITY IDEOGRAPH-F9DF', + 63968 : 'CJK COMPATIBILITY IDEOGRAPH-F9E0', + 63969 : 'CJK COMPATIBILITY IDEOGRAPH-F9E1', + 63970 : 'CJK COMPATIBILITY IDEOGRAPH-F9E2', + 63971 : 'CJK COMPATIBILITY IDEOGRAPH-F9E3', + 63972 : 'CJK COMPATIBILITY IDEOGRAPH-F9E4', + 63973 : 'CJK COMPATIBILITY IDEOGRAPH-F9E5', + 63974 : 'CJK COMPATIBILITY IDEOGRAPH-F9E6', + 63975 : 'CJK COMPATIBILITY IDEOGRAPH-F9E7', + 63976 : 'CJK COMPATIBILITY IDEOGRAPH-F9E8', + 63977 : 'CJK COMPATIBILITY IDEOGRAPH-F9E9', + 63978 : 'CJK COMPATIBILITY IDEOGRAPH-F9EA', + 63979 : 'CJK COMPATIBILITY IDEOGRAPH-F9EB', + 63980 : 'CJK COMPATIBILITY IDEOGRAPH-F9EC', + 63981 : 'CJK COMPATIBILITY IDEOGRAPH-F9ED', + 63982 : 'CJK COMPATIBILITY IDEOGRAPH-F9EE', + 63983 : 'CJK COMPATIBILITY IDEOGRAPH-F9EF', + 63984 : 'CJK COMPATIBILITY IDEOGRAPH-F9F0', + 63985 : 'CJK COMPATIBILITY IDEOGRAPH-F9F1', + 63986 : 'CJK COMPATIBILITY IDEOGRAPH-F9F2', + 63987 : 'CJK COMPATIBILITY IDEOGRAPH-F9F3', + 63988 : 'CJK COMPATIBILITY IDEOGRAPH-F9F4', + 63989 : 'CJK COMPATIBILITY IDEOGRAPH-F9F5', + 63990 : 'CJK COMPATIBILITY IDEOGRAPH-F9F6', + 63991 : 'CJK COMPATIBILITY IDEOGRAPH-F9F7', + 63992 : 'CJK COMPATIBILITY IDEOGRAPH-F9F8', + 63993 : 'CJK COMPATIBILITY IDEOGRAPH-F9F9', + 63994 : 'CJK COMPATIBILITY IDEOGRAPH-F9FA', + 63995 : 'CJK COMPATIBILITY IDEOGRAPH-F9FB', + 63996 : 'CJK COMPATIBILITY IDEOGRAPH-F9FC', + 63997 : 'CJK COMPATIBILITY IDEOGRAPH-F9FD', + 63998 : 'CJK COMPATIBILITY IDEOGRAPH-F9FE', + 63999 : 'CJK COMPATIBILITY IDEOGRAPH-F9FF', + 64000 : 'CJK COMPATIBILITY IDEOGRAPH-FA00', + 64001 : 'CJK COMPATIBILITY IDEOGRAPH-FA01', + 64002 : 'CJK COMPATIBILITY IDEOGRAPH-FA02', + 64003 : 'CJK COMPATIBILITY IDEOGRAPH-FA03', + 64004 : 'CJK COMPATIBILITY IDEOGRAPH-FA04', + 64005 : 'CJK COMPATIBILITY IDEOGRAPH-FA05', + 64006 : 'CJK COMPATIBILITY IDEOGRAPH-FA06', + 64007 : 'CJK COMPATIBILITY IDEOGRAPH-FA07', + 64008 : 'CJK COMPATIBILITY IDEOGRAPH-FA08', + 64009 : 'CJK COMPATIBILITY IDEOGRAPH-FA09', + 64010 : 'CJK COMPATIBILITY IDEOGRAPH-FA0A', + 64011 : 'CJK COMPATIBILITY IDEOGRAPH-FA0B', + 64012 : 'CJK COMPATIBILITY IDEOGRAPH-FA0C', + 64013 : 'CJK COMPATIBILITY IDEOGRAPH-FA0D', + 64014 : 'CJK COMPATIBILITY IDEOGRAPH-FA0E', + 64015 : 'CJK COMPATIBILITY IDEOGRAPH-FA0F', + 64016 : 'CJK COMPATIBILITY IDEOGRAPH-FA10', + 64017 : 'CJK COMPATIBILITY IDEOGRAPH-FA11', + 64018 : 'CJK COMPATIBILITY IDEOGRAPH-FA12', + 64019 : 'CJK COMPATIBILITY IDEOGRAPH-FA13', + 64020 : 'CJK COMPATIBILITY IDEOGRAPH-FA14', + 64021 : 'CJK COMPATIBILITY IDEOGRAPH-FA15', + 64022 : 'CJK COMPATIBILITY IDEOGRAPH-FA16', + 64023 : 'CJK COMPATIBILITY IDEOGRAPH-FA17', + 64024 : 'CJK COMPATIBILITY IDEOGRAPH-FA18', + 64025 : 'CJK COMPATIBILITY IDEOGRAPH-FA19', + 64026 : 'CJK COMPATIBILITY IDEOGRAPH-FA1A', + 64027 : 'CJK COMPATIBILITY IDEOGRAPH-FA1B', + 64028 : 'CJK COMPATIBILITY IDEOGRAPH-FA1C', + 64029 : 'CJK COMPATIBILITY IDEOGRAPH-FA1D', + 64030 : 'CJK COMPATIBILITY IDEOGRAPH-FA1E', + 64031 : 'CJK COMPATIBILITY IDEOGRAPH-FA1F', + 64032 : 'CJK COMPATIBILITY IDEOGRAPH-FA20', + 64033 : 'CJK COMPATIBILITY IDEOGRAPH-FA21', + 64034 : 'CJK COMPATIBILITY IDEOGRAPH-FA22', + 64035 : 'CJK COMPATIBILITY IDEOGRAPH-FA23', + 64036 : 'CJK COMPATIBILITY IDEOGRAPH-FA24', + 64037 : 'CJK COMPATIBILITY IDEOGRAPH-FA25', + 64038 : 'CJK COMPATIBILITY IDEOGRAPH-FA26', + 64039 : 'CJK COMPATIBILITY IDEOGRAPH-FA27', + 64040 : 'CJK COMPATIBILITY IDEOGRAPH-FA28', + 64041 : 'CJK COMPATIBILITY IDEOGRAPH-FA29', + 64042 : 'CJK COMPATIBILITY IDEOGRAPH-FA2A', + 64043 : 'CJK COMPATIBILITY IDEOGRAPH-FA2B', + 64044 : 'CJK COMPATIBILITY IDEOGRAPH-FA2C', + 64045 : 'CJK COMPATIBILITY IDEOGRAPH-FA2D', + 64048 : 'CJK COMPATIBILITY IDEOGRAPH-FA30', + 64049 : 'CJK COMPATIBILITY IDEOGRAPH-FA31', + 64050 : 'CJK COMPATIBILITY IDEOGRAPH-FA32', + 64051 : 'CJK COMPATIBILITY IDEOGRAPH-FA33', + 64052 : 'CJK COMPATIBILITY IDEOGRAPH-FA34', + 64053 : 'CJK COMPATIBILITY IDEOGRAPH-FA35', + 64054 : 'CJK COMPATIBILITY IDEOGRAPH-FA36', + 64055 : 'CJK COMPATIBILITY IDEOGRAPH-FA37', + 64056 : 'CJK COMPATIBILITY IDEOGRAPH-FA38', + 64057 : 'CJK COMPATIBILITY IDEOGRAPH-FA39', + 64058 : 'CJK COMPATIBILITY IDEOGRAPH-FA3A', + 64059 : 'CJK COMPATIBILITY IDEOGRAPH-FA3B', + 64060 : 'CJK COMPATIBILITY IDEOGRAPH-FA3C', + 64061 : 'CJK COMPATIBILITY IDEOGRAPH-FA3D', + 64062 : 'CJK COMPATIBILITY IDEOGRAPH-FA3E', + 64063 : 'CJK COMPATIBILITY IDEOGRAPH-FA3F', + 64064 : 'CJK COMPATIBILITY IDEOGRAPH-FA40', + 64065 : 'CJK COMPATIBILITY IDEOGRAPH-FA41', + 64066 : 'CJK COMPATIBILITY IDEOGRAPH-FA42', + 64067 : 'CJK COMPATIBILITY IDEOGRAPH-FA43', + 64068 : 'CJK COMPATIBILITY IDEOGRAPH-FA44', + 64069 : 'CJK COMPATIBILITY IDEOGRAPH-FA45', + 64070 : 'CJK COMPATIBILITY IDEOGRAPH-FA46', + 64071 : 'CJK COMPATIBILITY IDEOGRAPH-FA47', + 64072 : 'CJK COMPATIBILITY IDEOGRAPH-FA48', + 64073 : 'CJK COMPATIBILITY IDEOGRAPH-FA49', + 64074 : 'CJK COMPATIBILITY IDEOGRAPH-FA4A', + 64075 : 'CJK COMPATIBILITY IDEOGRAPH-FA4B', + 64076 : 'CJK COMPATIBILITY IDEOGRAPH-FA4C', + 64077 : 'CJK COMPATIBILITY IDEOGRAPH-FA4D', + 64078 : 'CJK COMPATIBILITY IDEOGRAPH-FA4E', + 64079 : 'CJK COMPATIBILITY IDEOGRAPH-FA4F', + 64080 : 'CJK COMPATIBILITY IDEOGRAPH-FA50', + 64081 : 'CJK COMPATIBILITY IDEOGRAPH-FA51', + 64082 : 'CJK COMPATIBILITY IDEOGRAPH-FA52', + 64083 : 'CJK COMPATIBILITY IDEOGRAPH-FA53', + 64084 : 'CJK COMPATIBILITY IDEOGRAPH-FA54', + 64085 : 'CJK COMPATIBILITY IDEOGRAPH-FA55', + 64086 : 'CJK COMPATIBILITY IDEOGRAPH-FA56', + 64087 : 'CJK COMPATIBILITY IDEOGRAPH-FA57', + 64088 : 'CJK COMPATIBILITY IDEOGRAPH-FA58', + 64089 : 'CJK COMPATIBILITY IDEOGRAPH-FA59', + 64090 : 'CJK COMPATIBILITY IDEOGRAPH-FA5A', + 64091 : 'CJK COMPATIBILITY IDEOGRAPH-FA5B', + 64092 : 'CJK COMPATIBILITY IDEOGRAPH-FA5C', + 64093 : 'CJK COMPATIBILITY IDEOGRAPH-FA5D', + 64094 : 'CJK COMPATIBILITY IDEOGRAPH-FA5E', + 64095 : 'CJK COMPATIBILITY IDEOGRAPH-FA5F', + 64096 : 'CJK COMPATIBILITY IDEOGRAPH-FA60', + 64097 : 'CJK COMPATIBILITY IDEOGRAPH-FA61', + 64098 : 'CJK COMPATIBILITY IDEOGRAPH-FA62', + 64099 : 'CJK COMPATIBILITY IDEOGRAPH-FA63', + 64100 : 'CJK COMPATIBILITY IDEOGRAPH-FA64', + 64101 : 'CJK COMPATIBILITY IDEOGRAPH-FA65', + 64102 : 'CJK COMPATIBILITY IDEOGRAPH-FA66', + 64103 : 'CJK COMPATIBILITY IDEOGRAPH-FA67', + 64104 : 'CJK COMPATIBILITY IDEOGRAPH-FA68', + 64105 : 'CJK COMPATIBILITY IDEOGRAPH-FA69', + 64106 : 'CJK COMPATIBILITY IDEOGRAPH-FA6A', + 64256 : 'LATIN SMALL LIGATURE FF', + 64257 : 'LATIN SMALL LIGATURE FI', + 64258 : 'LATIN SMALL LIGATURE FL', + 64259 : 'LATIN SMALL LIGATURE FFI', + 64260 : 'LATIN SMALL LIGATURE FFL', + 64261 : 'LATIN SMALL LIGATURE LONG S T', + 64262 : 'LATIN SMALL LIGATURE ST', + 64275 : 'ARMENIAN SMALL LIGATURE MEN NOW', + 64276 : 'ARMENIAN SMALL LIGATURE MEN ECH', + 64277 : 'ARMENIAN SMALL LIGATURE MEN INI', + 64278 : 'ARMENIAN SMALL LIGATURE VEW NOW', + 64279 : 'ARMENIAN SMALL LIGATURE MEN XEH', + 64285 : 'HEBREW LETTER YOD WITH HIRIQ', + 64286 : 'HEBREW POINT JUDEO-SPANISH VARIKA', + 64287 : 'HEBREW LIGATURE YIDDISH YOD YOD PATAH', + 64288 : 'HEBREW LETTER ALTERNATIVE AYIN', + 64289 : 'HEBREW LETTER WIDE ALEF', + 64290 : 'HEBREW LETTER WIDE DALET', + 64291 : 'HEBREW LETTER WIDE HE', + 64292 : 'HEBREW LETTER WIDE KAF', + 64293 : 'HEBREW LETTER WIDE LAMED', + 64294 : 'HEBREW LETTER WIDE FINAL MEM', + 64295 : 'HEBREW LETTER WIDE RESH', + 64296 : 'HEBREW LETTER WIDE TAV', + 64297 : 'HEBREW LETTER ALTERNATIVE PLUS SIGN', + 64298 : 'HEBREW LETTER SHIN WITH SHIN DOT', + 64299 : 'HEBREW LETTER SHIN WITH SIN DOT', + 64300 : 'HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT', + 64301 : 'HEBREW LETTER SHIN WITH DAGESH AND SIN DOT', + 64302 : 'HEBREW LETTER ALEF WITH PATAH', + 64303 : 'HEBREW LETTER ALEF WITH QAMATS', + 64304 : 'HEBREW LETTER ALEF WITH MAPIQ', + 64305 : 'HEBREW LETTER BET WITH DAGESH', + 64306 : 'HEBREW LETTER GIMEL WITH DAGESH', + 64307 : 'HEBREW LETTER DALET WITH DAGESH', + 64308 : 'HEBREW LETTER HE WITH MAPIQ', + 64309 : 'HEBREW LETTER VAV WITH DAGESH', + 64310 : 'HEBREW LETTER ZAYIN WITH DAGESH', + 64312 : 'HEBREW LETTER TET WITH DAGESH', + 64313 : 'HEBREW LETTER YOD WITH DAGESH', + 64314 : 'HEBREW LETTER FINAL KAF WITH DAGESH', + 64315 : 'HEBREW LETTER KAF WITH DAGESH', + 64316 : 'HEBREW LETTER LAMED WITH DAGESH', + 64318 : 'HEBREW LETTER MEM WITH DAGESH', + 64320 : 'HEBREW LETTER NUN WITH DAGESH', + 64321 : 'HEBREW LETTER SAMEKH WITH DAGESH', + 64323 : 'HEBREW LETTER FINAL PE WITH DAGESH', + 64324 : 'HEBREW LETTER PE WITH DAGESH', + 64326 : 'HEBREW LETTER TSADI WITH DAGESH', + 64327 : 'HEBREW LETTER QOF WITH DAGESH', + 64328 : 'HEBREW LETTER RESH WITH DAGESH', + 64329 : 'HEBREW LETTER SHIN WITH DAGESH', + 64330 : 'HEBREW LETTER TAV WITH DAGESH', + 64331 : 'HEBREW LETTER VAV WITH HOLAM', + 64332 : 'HEBREW LETTER BET WITH RAFE', + 64333 : 'HEBREW LETTER KAF WITH RAFE', + 64334 : 'HEBREW LETTER PE WITH RAFE', + 64335 : 'HEBREW LIGATURE ALEF LAMED', + 64336 : 'ARABIC LETTER ALEF WASLA ISOLATED FORM', + 64337 : 'ARABIC LETTER ALEF WASLA FINAL FORM', + 64338 : 'ARABIC LETTER BEEH ISOLATED FORM', + 64339 : 'ARABIC LETTER BEEH FINAL FORM', + 64340 : 'ARABIC LETTER BEEH INITIAL FORM', + 64341 : 'ARABIC LETTER BEEH MEDIAL FORM', + 64342 : 'ARABIC LETTER PEH ISOLATED FORM', + 64343 : 'ARABIC LETTER PEH FINAL FORM', + 64344 : 'ARABIC LETTER PEH INITIAL FORM', + 64345 : 'ARABIC LETTER PEH MEDIAL FORM', + 64346 : 'ARABIC LETTER BEHEH ISOLATED FORM', + 64347 : 'ARABIC LETTER BEHEH FINAL FORM', + 64348 : 'ARABIC LETTER BEHEH INITIAL FORM', + 64349 : 'ARABIC LETTER BEHEH MEDIAL FORM', + 64350 : 'ARABIC LETTER TTEHEH ISOLATED FORM', + 64351 : 'ARABIC LETTER TTEHEH FINAL FORM', + 64352 : 'ARABIC LETTER TTEHEH INITIAL FORM', + 64353 : 'ARABIC LETTER TTEHEH MEDIAL FORM', + 64354 : 'ARABIC LETTER TEHEH ISOLATED FORM', + 64355 : 'ARABIC LETTER TEHEH FINAL FORM', + 64356 : 'ARABIC LETTER TEHEH INITIAL FORM', + 64357 : 'ARABIC LETTER TEHEH MEDIAL FORM', + 64358 : 'ARABIC LETTER TTEH ISOLATED FORM', + 64359 : 'ARABIC LETTER TTEH FINAL FORM', + 64360 : 'ARABIC LETTER TTEH INITIAL FORM', + 64361 : 'ARABIC LETTER TTEH MEDIAL FORM', + 64362 : 'ARABIC LETTER VEH ISOLATED FORM', + 64363 : 'ARABIC LETTER VEH FINAL FORM', + 64364 : 'ARABIC LETTER VEH INITIAL FORM', + 64365 : 'ARABIC LETTER VEH MEDIAL FORM', + 64366 : 'ARABIC LETTER PEHEH ISOLATED FORM', + 64367 : 'ARABIC LETTER PEHEH FINAL FORM', + 64368 : 'ARABIC LETTER PEHEH INITIAL FORM', + 64369 : 'ARABIC LETTER PEHEH MEDIAL FORM', + 64370 : 'ARABIC LETTER DYEH ISOLATED FORM', + 64371 : 'ARABIC LETTER DYEH FINAL FORM', + 64372 : 'ARABIC LETTER DYEH INITIAL FORM', + 64373 : 'ARABIC LETTER DYEH MEDIAL FORM', + 64374 : 'ARABIC LETTER NYEH ISOLATED FORM', + 64375 : 'ARABIC LETTER NYEH FINAL FORM', + 64376 : 'ARABIC LETTER NYEH INITIAL FORM', + 64377 : 'ARABIC LETTER NYEH MEDIAL FORM', + 64378 : 'ARABIC LETTER TCHEH ISOLATED FORM', + 64379 : 'ARABIC LETTER TCHEH FINAL FORM', + 64380 : 'ARABIC LETTER TCHEH INITIAL FORM', + 64381 : 'ARABIC LETTER TCHEH MEDIAL FORM', + 64382 : 'ARABIC LETTER TCHEHEH ISOLATED FORM', + 64383 : 'ARABIC LETTER TCHEHEH FINAL FORM', + 64384 : 'ARABIC LETTER TCHEHEH INITIAL FORM', + 64385 : 'ARABIC LETTER TCHEHEH MEDIAL FORM', + 64386 : 'ARABIC LETTER DDAHAL ISOLATED FORM', + 64387 : 'ARABIC LETTER DDAHAL FINAL FORM', + 64388 : 'ARABIC LETTER DAHAL ISOLATED FORM', + 64389 : 'ARABIC LETTER DAHAL FINAL FORM', + 64390 : 'ARABIC LETTER DUL ISOLATED FORM', + 64391 : 'ARABIC LETTER DUL FINAL FORM', + 64392 : 'ARABIC LETTER DDAL ISOLATED FORM', + 64393 : 'ARABIC LETTER DDAL FINAL FORM', + 64394 : 'ARABIC LETTER JEH ISOLATED FORM', + 64395 : 'ARABIC LETTER JEH FINAL FORM', + 64396 : 'ARABIC LETTER RREH ISOLATED FORM', + 64397 : 'ARABIC LETTER RREH FINAL FORM', + 64398 : 'ARABIC LETTER KEHEH ISOLATED FORM', + 64399 : 'ARABIC LETTER KEHEH FINAL FORM', + 64400 : 'ARABIC LETTER KEHEH INITIAL FORM', + 64401 : 'ARABIC LETTER KEHEH MEDIAL FORM', + 64402 : 'ARABIC LETTER GAF ISOLATED FORM', + 64403 : 'ARABIC LETTER GAF FINAL FORM', + 64404 : 'ARABIC LETTER GAF INITIAL FORM', + 64405 : 'ARABIC LETTER GAF MEDIAL FORM', + 64406 : 'ARABIC LETTER GUEH ISOLATED FORM', + 64407 : 'ARABIC LETTER GUEH FINAL FORM', + 64408 : 'ARABIC LETTER GUEH INITIAL FORM', + 64409 : 'ARABIC LETTER GUEH MEDIAL FORM', + 64410 : 'ARABIC LETTER NGOEH ISOLATED FORM', + 64411 : 'ARABIC LETTER NGOEH FINAL FORM', + 64412 : 'ARABIC LETTER NGOEH INITIAL FORM', + 64413 : 'ARABIC LETTER NGOEH MEDIAL FORM', + 64414 : 'ARABIC LETTER NOON GHUNNA ISOLATED FORM', + 64415 : 'ARABIC LETTER NOON GHUNNA FINAL FORM', + 64416 : 'ARABIC LETTER RNOON ISOLATED FORM', + 64417 : 'ARABIC LETTER RNOON FINAL FORM', + 64418 : 'ARABIC LETTER RNOON INITIAL FORM', + 64419 : 'ARABIC LETTER RNOON MEDIAL FORM', + 64420 : 'ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM', + 64421 : 'ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM', + 64422 : 'ARABIC LETTER HEH GOAL ISOLATED FORM', + 64423 : 'ARABIC LETTER HEH GOAL FINAL FORM', + 64424 : 'ARABIC LETTER HEH GOAL INITIAL FORM', + 64425 : 'ARABIC LETTER HEH GOAL MEDIAL FORM', + 64426 : 'ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM', + 64427 : 'ARABIC LETTER HEH DOACHASHMEE FINAL FORM', + 64428 : 'ARABIC LETTER HEH DOACHASHMEE INITIAL FORM', + 64429 : 'ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM', + 64430 : 'ARABIC LETTER YEH BARREE ISOLATED FORM', + 64431 : 'ARABIC LETTER YEH BARREE FINAL FORM', + 64432 : 'ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM', + 64433 : 'ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM', + 64467 : 'ARABIC LETTER NG ISOLATED FORM', + 64468 : 'ARABIC LETTER NG FINAL FORM', + 64469 : 'ARABIC LETTER NG INITIAL FORM', + 64470 : 'ARABIC LETTER NG MEDIAL FORM', + 64471 : 'ARABIC LETTER U ISOLATED FORM', + 64472 : 'ARABIC LETTER U FINAL FORM', + 64473 : 'ARABIC LETTER OE ISOLATED FORM', + 64474 : 'ARABIC LETTER OE FINAL FORM', + 64475 : 'ARABIC LETTER YU ISOLATED FORM', + 64476 : 'ARABIC LETTER YU FINAL FORM', + 64477 : 'ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM', + 64478 : 'ARABIC LETTER VE ISOLATED FORM', + 64479 : 'ARABIC LETTER VE FINAL FORM', + 64480 : 'ARABIC LETTER KIRGHIZ OE ISOLATED FORM', + 64481 : 'ARABIC LETTER KIRGHIZ OE FINAL FORM', + 64482 : 'ARABIC LETTER KIRGHIZ YU ISOLATED FORM', + 64483 : 'ARABIC LETTER KIRGHIZ YU FINAL FORM', + 64484 : 'ARABIC LETTER E ISOLATED FORM', + 64485 : 'ARABIC LETTER E FINAL FORM', + 64486 : 'ARABIC LETTER E INITIAL FORM', + 64487 : 'ARABIC LETTER E MEDIAL FORM', + 64488 : 'ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM', + 64489 : 'ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM', + 64490 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM', + 64491 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM', + 64492 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM', + 64493 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM', + 64494 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM', + 64495 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM', + 64496 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM', + 64497 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM', + 64498 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM', + 64499 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM', + 64500 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM', + 64501 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM', + 64502 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM', + 64503 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM', + 64504 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM', + 64505 : 'ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM', + 64506 : 'ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM', + 64507 : 'ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM', + 64508 : 'ARABIC LETTER FARSI YEH ISOLATED FORM', + 64509 : 'ARABIC LETTER FARSI YEH FINAL FORM', + 64510 : 'ARABIC LETTER FARSI YEH INITIAL FORM', + 64511 : 'ARABIC LETTER FARSI YEH MEDIAL FORM', + 64512 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM', + 64513 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM', + 64514 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM', + 64515 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM', + 64516 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM', + 64517 : 'ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM', + 64518 : 'ARABIC LIGATURE BEH WITH HAH ISOLATED FORM', + 64519 : 'ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM', + 64520 : 'ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM', + 64521 : 'ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM', + 64522 : 'ARABIC LIGATURE BEH WITH YEH ISOLATED FORM', + 64523 : 'ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM', + 64524 : 'ARABIC LIGATURE TEH WITH HAH ISOLATED FORM', + 64525 : 'ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM', + 64526 : 'ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM', + 64527 : 'ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM', + 64528 : 'ARABIC LIGATURE TEH WITH YEH ISOLATED FORM', + 64529 : 'ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM', + 64530 : 'ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM', + 64531 : 'ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM', + 64532 : 'ARABIC LIGATURE THEH WITH YEH ISOLATED FORM', + 64533 : 'ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM', + 64534 : 'ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM', + 64535 : 'ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM', + 64536 : 'ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM', + 64537 : 'ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM', + 64538 : 'ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM', + 64539 : 'ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM', + 64540 : 'ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM', + 64541 : 'ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM', + 64542 : 'ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM', + 64543 : 'ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM', + 64544 : 'ARABIC LIGATURE SAD WITH HAH ISOLATED FORM', + 64545 : 'ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM', + 64546 : 'ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM', + 64547 : 'ARABIC LIGATURE DAD WITH HAH ISOLATED FORM', + 64548 : 'ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM', + 64549 : 'ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM', + 64550 : 'ARABIC LIGATURE TAH WITH HAH ISOLATED FORM', + 64551 : 'ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM', + 64552 : 'ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM', + 64553 : 'ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM', + 64554 : 'ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM', + 64555 : 'ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM', + 64556 : 'ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM', + 64557 : 'ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM', + 64558 : 'ARABIC LIGATURE FEH WITH HAH ISOLATED FORM', + 64559 : 'ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM', + 64560 : 'ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM', + 64561 : 'ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM', + 64562 : 'ARABIC LIGATURE FEH WITH YEH ISOLATED FORM', + 64563 : 'ARABIC LIGATURE QAF WITH HAH ISOLATED FORM', + 64564 : 'ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM', + 64565 : 'ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM', + 64566 : 'ARABIC LIGATURE QAF WITH YEH ISOLATED FORM', + 64567 : 'ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM', + 64568 : 'ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM', + 64569 : 'ARABIC LIGATURE KAF WITH HAH ISOLATED FORM', + 64570 : 'ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM', + 64571 : 'ARABIC LIGATURE KAF WITH LAM ISOLATED FORM', + 64572 : 'ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM', + 64573 : 'ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM', + 64574 : 'ARABIC LIGATURE KAF WITH YEH ISOLATED FORM', + 64575 : 'ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM', + 64576 : 'ARABIC LIGATURE LAM WITH HAH ISOLATED FORM', + 64577 : 'ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM', + 64578 : 'ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM', + 64579 : 'ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM', + 64580 : 'ARABIC LIGATURE LAM WITH YEH ISOLATED FORM', + 64581 : 'ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM', + 64582 : 'ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM', + 64583 : 'ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM', + 64584 : 'ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM', + 64585 : 'ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM', + 64586 : 'ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM', + 64587 : 'ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM', + 64588 : 'ARABIC LIGATURE NOON WITH HAH ISOLATED FORM', + 64589 : 'ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM', + 64590 : 'ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM', + 64591 : 'ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM', + 64592 : 'ARABIC LIGATURE NOON WITH YEH ISOLATED FORM', + 64593 : 'ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM', + 64594 : 'ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM', + 64595 : 'ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM', + 64596 : 'ARABIC LIGATURE HEH WITH YEH ISOLATED FORM', + 64597 : 'ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM', + 64598 : 'ARABIC LIGATURE YEH WITH HAH ISOLATED FORM', + 64599 : 'ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM', + 64600 : 'ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM', + 64601 : 'ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM', + 64602 : 'ARABIC LIGATURE YEH WITH YEH ISOLATED FORM', + 64603 : 'ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM', + 64604 : 'ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM', + 64605 : 'ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM', + 64606 : 'ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM', + 64607 : 'ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM', + 64608 : 'ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM', + 64609 : 'ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM', + 64610 : 'ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM', + 64611 : 'ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM', + 64612 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM', + 64613 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM', + 64614 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM', + 64615 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM', + 64616 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM', + 64617 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM', + 64618 : 'ARABIC LIGATURE BEH WITH REH FINAL FORM', + 64619 : 'ARABIC LIGATURE BEH WITH ZAIN FINAL FORM', + 64620 : 'ARABIC LIGATURE BEH WITH MEEM FINAL FORM', + 64621 : 'ARABIC LIGATURE BEH WITH NOON FINAL FORM', + 64622 : 'ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM', + 64623 : 'ARABIC LIGATURE BEH WITH YEH FINAL FORM', + 64624 : 'ARABIC LIGATURE TEH WITH REH FINAL FORM', + 64625 : 'ARABIC LIGATURE TEH WITH ZAIN FINAL FORM', + 64626 : 'ARABIC LIGATURE TEH WITH MEEM FINAL FORM', + 64627 : 'ARABIC LIGATURE TEH WITH NOON FINAL FORM', + 64628 : 'ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM', + 64629 : 'ARABIC LIGATURE TEH WITH YEH FINAL FORM', + 64630 : 'ARABIC LIGATURE THEH WITH REH FINAL FORM', + 64631 : 'ARABIC LIGATURE THEH WITH ZAIN FINAL FORM', + 64632 : 'ARABIC LIGATURE THEH WITH MEEM FINAL FORM', + 64633 : 'ARABIC LIGATURE THEH WITH NOON FINAL FORM', + 64634 : 'ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM', + 64635 : 'ARABIC LIGATURE THEH WITH YEH FINAL FORM', + 64636 : 'ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM', + 64637 : 'ARABIC LIGATURE FEH WITH YEH FINAL FORM', + 64638 : 'ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM', + 64639 : 'ARABIC LIGATURE QAF WITH YEH FINAL FORM', + 64640 : 'ARABIC LIGATURE KAF WITH ALEF FINAL FORM', + 64641 : 'ARABIC LIGATURE KAF WITH LAM FINAL FORM', + 64642 : 'ARABIC LIGATURE KAF WITH MEEM FINAL FORM', + 64643 : 'ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM', + 64644 : 'ARABIC LIGATURE KAF WITH YEH FINAL FORM', + 64645 : 'ARABIC LIGATURE LAM WITH MEEM FINAL FORM', + 64646 : 'ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM', + 64647 : 'ARABIC LIGATURE LAM WITH YEH FINAL FORM', + 64648 : 'ARABIC LIGATURE MEEM WITH ALEF FINAL FORM', + 64649 : 'ARABIC LIGATURE MEEM WITH MEEM FINAL FORM', + 64650 : 'ARABIC LIGATURE NOON WITH REH FINAL FORM', + 64651 : 'ARABIC LIGATURE NOON WITH ZAIN FINAL FORM', + 64652 : 'ARABIC LIGATURE NOON WITH MEEM FINAL FORM', + 64653 : 'ARABIC LIGATURE NOON WITH NOON FINAL FORM', + 64654 : 'ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM', + 64655 : 'ARABIC LIGATURE NOON WITH YEH FINAL FORM', + 64656 : 'ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM', + 64657 : 'ARABIC LIGATURE YEH WITH REH FINAL FORM', + 64658 : 'ARABIC LIGATURE YEH WITH ZAIN FINAL FORM', + 64659 : 'ARABIC LIGATURE YEH WITH MEEM FINAL FORM', + 64660 : 'ARABIC LIGATURE YEH WITH NOON FINAL FORM', + 64661 : 'ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM', + 64662 : 'ARABIC LIGATURE YEH WITH YEH FINAL FORM', + 64663 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM', + 64664 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM', + 64665 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM', + 64666 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM', + 64667 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM', + 64668 : 'ARABIC LIGATURE BEH WITH JEEM INITIAL FORM', + 64669 : 'ARABIC LIGATURE BEH WITH HAH INITIAL FORM', + 64670 : 'ARABIC LIGATURE BEH WITH KHAH INITIAL FORM', + 64671 : 'ARABIC LIGATURE BEH WITH MEEM INITIAL FORM', + 64672 : 'ARABIC LIGATURE BEH WITH HEH INITIAL FORM', + 64673 : 'ARABIC LIGATURE TEH WITH JEEM INITIAL FORM', + 64674 : 'ARABIC LIGATURE TEH WITH HAH INITIAL FORM', + 64675 : 'ARABIC LIGATURE TEH WITH KHAH INITIAL FORM', + 64676 : 'ARABIC LIGATURE TEH WITH MEEM INITIAL FORM', + 64677 : 'ARABIC LIGATURE TEH WITH HEH INITIAL FORM', + 64678 : 'ARABIC LIGATURE THEH WITH MEEM INITIAL FORM', + 64679 : 'ARABIC LIGATURE JEEM WITH HAH INITIAL FORM', + 64680 : 'ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM', + 64681 : 'ARABIC LIGATURE HAH WITH JEEM INITIAL FORM', + 64682 : 'ARABIC LIGATURE HAH WITH MEEM INITIAL FORM', + 64683 : 'ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM', + 64684 : 'ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM', + 64685 : 'ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM', + 64686 : 'ARABIC LIGATURE SEEN WITH HAH INITIAL FORM', + 64687 : 'ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM', + 64688 : 'ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM', + 64689 : 'ARABIC LIGATURE SAD WITH HAH INITIAL FORM', + 64690 : 'ARABIC LIGATURE SAD WITH KHAH INITIAL FORM', + 64691 : 'ARABIC LIGATURE SAD WITH MEEM INITIAL FORM', + 64692 : 'ARABIC LIGATURE DAD WITH JEEM INITIAL FORM', + 64693 : 'ARABIC LIGATURE DAD WITH HAH INITIAL FORM', + 64694 : 'ARABIC LIGATURE DAD WITH KHAH INITIAL FORM', + 64695 : 'ARABIC LIGATURE DAD WITH MEEM INITIAL FORM', + 64696 : 'ARABIC LIGATURE TAH WITH HAH INITIAL FORM', + 64697 : 'ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM', + 64698 : 'ARABIC LIGATURE AIN WITH JEEM INITIAL FORM', + 64699 : 'ARABIC LIGATURE AIN WITH MEEM INITIAL FORM', + 64700 : 'ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM', + 64701 : 'ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM', + 64702 : 'ARABIC LIGATURE FEH WITH JEEM INITIAL FORM', + 64703 : 'ARABIC LIGATURE FEH WITH HAH INITIAL FORM', + 64704 : 'ARABIC LIGATURE FEH WITH KHAH INITIAL FORM', + 64705 : 'ARABIC LIGATURE FEH WITH MEEM INITIAL FORM', + 64706 : 'ARABIC LIGATURE QAF WITH HAH INITIAL FORM', + 64707 : 'ARABIC LIGATURE QAF WITH MEEM INITIAL FORM', + 64708 : 'ARABIC LIGATURE KAF WITH JEEM INITIAL FORM', + 64709 : 'ARABIC LIGATURE KAF WITH HAH INITIAL FORM', + 64710 : 'ARABIC LIGATURE KAF WITH KHAH INITIAL FORM', + 64711 : 'ARABIC LIGATURE KAF WITH LAM INITIAL FORM', + 64712 : 'ARABIC LIGATURE KAF WITH MEEM INITIAL FORM', + 64713 : 'ARABIC LIGATURE LAM WITH JEEM INITIAL FORM', + 64714 : 'ARABIC LIGATURE LAM WITH HAH INITIAL FORM', + 64715 : 'ARABIC LIGATURE LAM WITH KHAH INITIAL FORM', + 64716 : 'ARABIC LIGATURE LAM WITH MEEM INITIAL FORM', + 64717 : 'ARABIC LIGATURE LAM WITH HEH INITIAL FORM', + 64718 : 'ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM', + 64719 : 'ARABIC LIGATURE MEEM WITH HAH INITIAL FORM', + 64720 : 'ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM', + 64721 : 'ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM', + 64722 : 'ARABIC LIGATURE NOON WITH JEEM INITIAL FORM', + 64723 : 'ARABIC LIGATURE NOON WITH HAH INITIAL FORM', + 64724 : 'ARABIC LIGATURE NOON WITH KHAH INITIAL FORM', + 64725 : 'ARABIC LIGATURE NOON WITH MEEM INITIAL FORM', + 64726 : 'ARABIC LIGATURE NOON WITH HEH INITIAL FORM', + 64727 : 'ARABIC LIGATURE HEH WITH JEEM INITIAL FORM', + 64728 : 'ARABIC LIGATURE HEH WITH MEEM INITIAL FORM', + 64729 : 'ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM', + 64730 : 'ARABIC LIGATURE YEH WITH JEEM INITIAL FORM', + 64731 : 'ARABIC LIGATURE YEH WITH HAH INITIAL FORM', + 64732 : 'ARABIC LIGATURE YEH WITH KHAH INITIAL FORM', + 64733 : 'ARABIC LIGATURE YEH WITH MEEM INITIAL FORM', + 64734 : 'ARABIC LIGATURE YEH WITH HEH INITIAL FORM', + 64735 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM', + 64736 : 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM', + 64737 : 'ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM', + 64738 : 'ARABIC LIGATURE BEH WITH HEH MEDIAL FORM', + 64739 : 'ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM', + 64740 : 'ARABIC LIGATURE TEH WITH HEH MEDIAL FORM', + 64741 : 'ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM', + 64742 : 'ARABIC LIGATURE THEH WITH HEH MEDIAL FORM', + 64743 : 'ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM', + 64744 : 'ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM', + 64745 : 'ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM', + 64746 : 'ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM', + 64747 : 'ARABIC LIGATURE KAF WITH LAM MEDIAL FORM', + 64748 : 'ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM', + 64749 : 'ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM', + 64750 : 'ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM', + 64751 : 'ARABIC LIGATURE NOON WITH HEH MEDIAL FORM', + 64752 : 'ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM', + 64753 : 'ARABIC LIGATURE YEH WITH HEH MEDIAL FORM', + 64754 : 'ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM', + 64755 : 'ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM', + 64756 : 'ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM', + 64757 : 'ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM', + 64758 : 'ARABIC LIGATURE TAH WITH YEH ISOLATED FORM', + 64759 : 'ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM', + 64760 : 'ARABIC LIGATURE AIN WITH YEH ISOLATED FORM', + 64761 : 'ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM', + 64762 : 'ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM', + 64763 : 'ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM', + 64764 : 'ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM', + 64765 : 'ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM', + 64766 : 'ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM', + 64767 : 'ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM', + 64768 : 'ARABIC LIGATURE HAH WITH YEH ISOLATED FORM', + 64769 : 'ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM', + 64770 : 'ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM', + 64771 : 'ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM', + 64772 : 'ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM', + 64773 : 'ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM', + 64774 : 'ARABIC LIGATURE SAD WITH YEH ISOLATED FORM', + 64775 : 'ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM', + 64776 : 'ARABIC LIGATURE DAD WITH YEH ISOLATED FORM', + 64777 : 'ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM', + 64778 : 'ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM', + 64779 : 'ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM', + 64780 : 'ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM', + 64781 : 'ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM', + 64782 : 'ARABIC LIGATURE SEEN WITH REH ISOLATED FORM', + 64783 : 'ARABIC LIGATURE SAD WITH REH ISOLATED FORM', + 64784 : 'ARABIC LIGATURE DAD WITH REH ISOLATED FORM', + 64785 : 'ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM', + 64786 : 'ARABIC LIGATURE TAH WITH YEH FINAL FORM', + 64787 : 'ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM', + 64788 : 'ARABIC LIGATURE AIN WITH YEH FINAL FORM', + 64789 : 'ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM', + 64790 : 'ARABIC LIGATURE GHAIN WITH YEH FINAL FORM', + 64791 : 'ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM', + 64792 : 'ARABIC LIGATURE SEEN WITH YEH FINAL FORM', + 64793 : 'ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM', + 64794 : 'ARABIC LIGATURE SHEEN WITH YEH FINAL FORM', + 64795 : 'ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM', + 64796 : 'ARABIC LIGATURE HAH WITH YEH FINAL FORM', + 64797 : 'ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM', + 64798 : 'ARABIC LIGATURE JEEM WITH YEH FINAL FORM', + 64799 : 'ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM', + 64800 : 'ARABIC LIGATURE KHAH WITH YEH FINAL FORM', + 64801 : 'ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM', + 64802 : 'ARABIC LIGATURE SAD WITH YEH FINAL FORM', + 64803 : 'ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM', + 64804 : 'ARABIC LIGATURE DAD WITH YEH FINAL FORM', + 64805 : 'ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM', + 64806 : 'ARABIC LIGATURE SHEEN WITH HAH FINAL FORM', + 64807 : 'ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM', + 64808 : 'ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM', + 64809 : 'ARABIC LIGATURE SHEEN WITH REH FINAL FORM', + 64810 : 'ARABIC LIGATURE SEEN WITH REH FINAL FORM', + 64811 : 'ARABIC LIGATURE SAD WITH REH FINAL FORM', + 64812 : 'ARABIC LIGATURE DAD WITH REH FINAL FORM', + 64813 : 'ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM', + 64814 : 'ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM', + 64815 : 'ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM', + 64816 : 'ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM', + 64817 : 'ARABIC LIGATURE SEEN WITH HEH INITIAL FORM', + 64818 : 'ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM', + 64819 : 'ARABIC LIGATURE TAH WITH MEEM INITIAL FORM', + 64820 : 'ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM', + 64821 : 'ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM', + 64822 : 'ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM', + 64823 : 'ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM', + 64824 : 'ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM', + 64825 : 'ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM', + 64826 : 'ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM', + 64827 : 'ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM', + 64828 : 'ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM', + 64829 : 'ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM', + 64830 : 'ORNATE LEFT PARENTHESIS', + 64831 : 'ORNATE RIGHT PARENTHESIS', + 64848 : 'ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM', + 64849 : 'ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM', + 64850 : 'ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM', + 64851 : 'ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM', + 64852 : 'ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM', + 64853 : 'ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM', + 64854 : 'ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM', + 64855 : 'ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM', + 64856 : 'ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM', + 64857 : 'ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM', + 64858 : 'ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM', + 64859 : 'ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM', + 64860 : 'ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM', + 64861 : 'ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM', + 64862 : 'ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM', + 64863 : 'ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM', + 64864 : 'ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM', + 64865 : 'ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM', + 64866 : 'ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM', + 64867 : 'ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM', + 64868 : 'ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM', + 64869 : 'ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM', + 64870 : 'ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM', + 64871 : 'ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM', + 64872 : 'ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM', + 64873 : 'ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM', + 64874 : 'ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM', + 64875 : 'ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM', + 64876 : 'ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM', + 64877 : 'ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM', + 64878 : 'ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM', + 64879 : 'ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM', + 64880 : 'ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM', + 64881 : 'ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM', + 64882 : 'ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM', + 64883 : 'ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM', + 64884 : 'ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM', + 64885 : 'ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM', + 64886 : 'ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM', + 64887 : 'ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM', + 64888 : 'ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM', + 64889 : 'ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM', + 64890 : 'ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM', + 64891 : 'ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM', + 64892 : 'ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM', + 64893 : 'ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM', + 64894 : 'ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM', + 64895 : 'ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM', + 64896 : 'ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM', + 64897 : 'ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM', + 64898 : 'ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM', + 64899 : 'ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM', + 64900 : 'ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM', + 64901 : 'ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM', + 64902 : 'ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM', + 64903 : 'ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM', + 64904 : 'ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM', + 64905 : 'ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM', + 64906 : 'ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM', + 64907 : 'ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM', + 64908 : 'ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM', + 64909 : 'ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM', + 64910 : 'ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM', + 64911 : 'ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM', + 64914 : 'ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM', + 64915 : 'ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM', + 64916 : 'ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM', + 64917 : 'ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM', + 64918 : 'ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM', + 64919 : 'ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM', + 64920 : 'ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM', + 64921 : 'ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM', + 64922 : 'ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM', + 64923 : 'ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM', + 64924 : 'ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM', + 64925 : 'ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM', + 64926 : 'ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM', + 64927 : 'ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM', + 64928 : 'ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM', + 64929 : 'ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM', + 64930 : 'ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM', + 64931 : 'ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM', + 64932 : 'ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM', + 64933 : 'ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM', + 64934 : 'ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM', + 64935 : 'ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM', + 64936 : 'ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM', + 64937 : 'ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM', + 64938 : 'ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM', + 64939 : 'ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM', + 64940 : 'ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM', + 64941 : 'ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM', + 64942 : 'ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM', + 64943 : 'ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM', + 64944 : 'ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM', + 64945 : 'ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM', + 64946 : 'ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM', + 64947 : 'ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM', + 64948 : 'ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM', + 64949 : 'ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM', + 64950 : 'ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM', + 64951 : 'ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM', + 64952 : 'ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM', + 64953 : 'ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM', + 64954 : 'ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM', + 64955 : 'ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM', + 64956 : 'ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM', + 64957 : 'ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM', + 64958 : 'ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM', + 64959 : 'ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM', + 64960 : 'ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM', + 64961 : 'ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM', + 64962 : 'ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM', + 64963 : 'ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM', + 64964 : 'ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM', + 64965 : 'ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM', + 64966 : 'ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM', + 64967 : 'ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM', + 65008 : 'ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM', + 65009 : 'ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM', + 65010 : 'ARABIC LIGATURE ALLAH ISOLATED FORM', + 65011 : 'ARABIC LIGATURE AKBAR ISOLATED FORM', + 65012 : 'ARABIC LIGATURE MOHAMMAD ISOLATED FORM', + 65013 : 'ARABIC LIGATURE SALAM ISOLATED FORM', + 65014 : 'ARABIC LIGATURE RASOUL ISOLATED FORM', + 65015 : 'ARABIC LIGATURE ALAYHE ISOLATED FORM', + 65016 : 'ARABIC LIGATURE WASALLAM ISOLATED FORM', + 65017 : 'ARABIC LIGATURE SALLA ISOLATED FORM', + 65018 : 'ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM', + 65019 : 'ARABIC LIGATURE JALLAJALALOUHOU', + 65020 : 'RIAL SIGN', + 65024 : 'VARIATION SELECTOR-1', + 65025 : 'VARIATION SELECTOR-2', + 65026 : 'VARIATION SELECTOR-3', + 65027 : 'VARIATION SELECTOR-4', + 65028 : 'VARIATION SELECTOR-5', + 65029 : 'VARIATION SELECTOR-6', + 65030 : 'VARIATION SELECTOR-7', + 65031 : 'VARIATION SELECTOR-8', + 65032 : 'VARIATION SELECTOR-9', + 65033 : 'VARIATION SELECTOR-10', + 65034 : 'VARIATION SELECTOR-11', + 65035 : 'VARIATION SELECTOR-12', + 65036 : 'VARIATION SELECTOR-13', + 65037 : 'VARIATION SELECTOR-14', + 65038 : 'VARIATION SELECTOR-15', + 65039 : 'VARIATION SELECTOR-16', + 65056 : 'COMBINING LIGATURE LEFT HALF', + 65057 : 'COMBINING LIGATURE RIGHT HALF', + 65058 : 'COMBINING DOUBLE TILDE LEFT HALF', + 65059 : 'COMBINING DOUBLE TILDE RIGHT HALF', + 65072 : 'PRESENTATION FORM FOR VERTICAL TWO DOT LEADER', + 65073 : 'PRESENTATION FORM FOR VERTICAL EM DASH', + 65074 : 'PRESENTATION FORM FOR VERTICAL EN DASH', + 65075 : 'PRESENTATION FORM FOR VERTICAL LOW LINE', + 65076 : 'PRESENTATION FORM FOR VERTICAL WAVY LOW LINE', + 65077 : 'PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS', + 65078 : 'PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS', + 65079 : 'PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET', + 65080 : 'PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET', + 65081 : 'PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET', + 65082 : 'PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET', + 65083 : 'PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET', + 65084 : 'PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET', + 65085 : 'PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET', + 65086 : 'PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET', + 65087 : 'PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET', + 65088 : 'PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET', + 65089 : 'PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET', + 65090 : 'PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET', + 65091 : 'PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET', + 65092 : 'PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET', + 65093 : 'SESAME DOT', + 65094 : 'WHITE SESAME DOT', + 65097 : 'DASHED OVERLINE', + 65098 : 'CENTRELINE OVERLINE', + 65099 : 'WAVY OVERLINE', + 65100 : 'DOUBLE WAVY OVERLINE', + 65101 : 'DASHED LOW LINE', + 65102 : 'CENTRELINE LOW LINE', + 65103 : 'WAVY LOW LINE', + 65104 : 'SMALL COMMA', + 65105 : 'SMALL IDEOGRAPHIC COMMA', + 65106 : 'SMALL FULL STOP', + 65108 : 'SMALL SEMICOLON', + 65109 : 'SMALL COLON', + 65110 : 'SMALL QUESTION MARK', + 65111 : 'SMALL EXCLAMATION MARK', + 65112 : 'SMALL EM DASH', + 65113 : 'SMALL LEFT PARENTHESIS', + 65114 : 'SMALL RIGHT PARENTHESIS', + 65115 : 'SMALL LEFT CURLY BRACKET', + 65116 : 'SMALL RIGHT CURLY BRACKET', + 65117 : 'SMALL LEFT TORTOISE SHELL BRACKET', + 65118 : 'SMALL RIGHT TORTOISE SHELL BRACKET', + 65119 : 'SMALL NUMBER SIGN', + 65120 : 'SMALL AMPERSAND', + 65121 : 'SMALL ASTERISK', + 65122 : 'SMALL PLUS SIGN', + 65123 : 'SMALL HYPHEN-MINUS', + 65124 : 'SMALL LESS-THAN SIGN', + 65125 : 'SMALL GREATER-THAN SIGN', + 65126 : 'SMALL EQUALS SIGN', + 65128 : 'SMALL REVERSE SOLIDUS', + 65129 : 'SMALL DOLLAR SIGN', + 65130 : 'SMALL PERCENT SIGN', + 65131 : 'SMALL COMMERCIAL AT', + 65136 : 'ARABIC FATHATAN ISOLATED FORM', + 65137 : 'ARABIC TATWEEL WITH FATHATAN ABOVE', + 65138 : 'ARABIC DAMMATAN ISOLATED FORM', + 65139 : 'ARABIC TAIL FRAGMENT', + 65140 : 'ARABIC KASRATAN ISOLATED FORM', + 65142 : 'ARABIC FATHA ISOLATED FORM', + 65143 : 'ARABIC FATHA MEDIAL FORM', + 65144 : 'ARABIC DAMMA ISOLATED FORM', + 65145 : 'ARABIC DAMMA MEDIAL FORM', + 65146 : 'ARABIC KASRA ISOLATED FORM', + 65147 : 'ARABIC KASRA MEDIAL FORM', + 65148 : 'ARABIC SHADDA ISOLATED FORM', + 65149 : 'ARABIC SHADDA MEDIAL FORM', + 65150 : 'ARABIC SUKUN ISOLATED FORM', + 65151 : 'ARABIC SUKUN MEDIAL FORM', + 65152 : 'ARABIC LETTER HAMZA ISOLATED FORM', + 65153 : 'ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM', + 65154 : 'ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM', + 65155 : 'ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM', + 65156 : 'ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM', + 65157 : 'ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM', + 65158 : 'ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM', + 65159 : 'ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM', + 65160 : 'ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM', + 65161 : 'ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM', + 65162 : 'ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM', + 65163 : 'ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM', + 65164 : 'ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM', + 65165 : 'ARABIC LETTER ALEF ISOLATED FORM', + 65166 : 'ARABIC LETTER ALEF FINAL FORM', + 65167 : 'ARABIC LETTER BEH ISOLATED FORM', + 65168 : 'ARABIC LETTER BEH FINAL FORM', + 65169 : 'ARABIC LETTER BEH INITIAL FORM', + 65170 : 'ARABIC LETTER BEH MEDIAL FORM', + 65171 : 'ARABIC LETTER TEH MARBUTA ISOLATED FORM', + 65172 : 'ARABIC LETTER TEH MARBUTA FINAL FORM', + 65173 : 'ARABIC LETTER TEH ISOLATED FORM', + 65174 : 'ARABIC LETTER TEH FINAL FORM', + 65175 : 'ARABIC LETTER TEH INITIAL FORM', + 65176 : 'ARABIC LETTER TEH MEDIAL FORM', + 65177 : 'ARABIC LETTER THEH ISOLATED FORM', + 65178 : 'ARABIC LETTER THEH FINAL FORM', + 65179 : 'ARABIC LETTER THEH INITIAL FORM', + 65180 : 'ARABIC LETTER THEH MEDIAL FORM', + 65181 : 'ARABIC LETTER JEEM ISOLATED FORM', + 65182 : 'ARABIC LETTER JEEM FINAL FORM', + 65183 : 'ARABIC LETTER JEEM INITIAL FORM', + 65184 : 'ARABIC LETTER JEEM MEDIAL FORM', + 65185 : 'ARABIC LETTER HAH ISOLATED FORM', + 65186 : 'ARABIC LETTER HAH FINAL FORM', + 65187 : 'ARABIC LETTER HAH INITIAL FORM', + 65188 : 'ARABIC LETTER HAH MEDIAL FORM', + 65189 : 'ARABIC LETTER KHAH ISOLATED FORM', + 65190 : 'ARABIC LETTER KHAH FINAL FORM', + 65191 : 'ARABIC LETTER KHAH INITIAL FORM', + 65192 : 'ARABIC LETTER KHAH MEDIAL FORM', + 65193 : 'ARABIC LETTER DAL ISOLATED FORM', + 65194 : 'ARABIC LETTER DAL FINAL FORM', + 65195 : 'ARABIC LETTER THAL ISOLATED FORM', + 65196 : 'ARABIC LETTER THAL FINAL FORM', + 65197 : 'ARABIC LETTER REH ISOLATED FORM', + 65198 : 'ARABIC LETTER REH FINAL FORM', + 65199 : 'ARABIC LETTER ZAIN ISOLATED FORM', + 65200 : 'ARABIC LETTER ZAIN FINAL FORM', + 65201 : 'ARABIC LETTER SEEN ISOLATED FORM', + 65202 : 'ARABIC LETTER SEEN FINAL FORM', + 65203 : 'ARABIC LETTER SEEN INITIAL FORM', + 65204 : 'ARABIC LETTER SEEN MEDIAL FORM', + 65205 : 'ARABIC LETTER SHEEN ISOLATED FORM', + 65206 : 'ARABIC LETTER SHEEN FINAL FORM', + 65207 : 'ARABIC LETTER SHEEN INITIAL FORM', + 65208 : 'ARABIC LETTER SHEEN MEDIAL FORM', + 65209 : 'ARABIC LETTER SAD ISOLATED FORM', + 65210 : 'ARABIC LETTER SAD FINAL FORM', + 65211 : 'ARABIC LETTER SAD INITIAL FORM', + 65212 : 'ARABIC LETTER SAD MEDIAL FORM', + 65213 : 'ARABIC LETTER DAD ISOLATED FORM', + 65214 : 'ARABIC LETTER DAD FINAL FORM', + 65215 : 'ARABIC LETTER DAD INITIAL FORM', + 65216 : 'ARABIC LETTER DAD MEDIAL FORM', + 65217 : 'ARABIC LETTER TAH ISOLATED FORM', + 65218 : 'ARABIC LETTER TAH FINAL FORM', + 65219 : 'ARABIC LETTER TAH INITIAL FORM', + 65220 : 'ARABIC LETTER TAH MEDIAL FORM', + 65221 : 'ARABIC LETTER ZAH ISOLATED FORM', + 65222 : 'ARABIC LETTER ZAH FINAL FORM', + 65223 : 'ARABIC LETTER ZAH INITIAL FORM', + 65224 : 'ARABIC LETTER ZAH MEDIAL FORM', + 65225 : 'ARABIC LETTER AIN ISOLATED FORM', + 65226 : 'ARABIC LETTER AIN FINAL FORM', + 65227 : 'ARABIC LETTER AIN INITIAL FORM', + 65228 : 'ARABIC LETTER AIN MEDIAL FORM', + 65229 : 'ARABIC LETTER GHAIN ISOLATED FORM', + 65230 : 'ARABIC LETTER GHAIN FINAL FORM', + 65231 : 'ARABIC LETTER GHAIN INITIAL FORM', + 65232 : 'ARABIC LETTER GHAIN MEDIAL FORM', + 65233 : 'ARABIC LETTER FEH ISOLATED FORM', + 65234 : 'ARABIC LETTER FEH FINAL FORM', + 65235 : 'ARABIC LETTER FEH INITIAL FORM', + 65236 : 'ARABIC LETTER FEH MEDIAL FORM', + 65237 : 'ARABIC LETTER QAF ISOLATED FORM', + 65238 : 'ARABIC LETTER QAF FINAL FORM', + 65239 : 'ARABIC LETTER QAF INITIAL FORM', + 65240 : 'ARABIC LETTER QAF MEDIAL FORM', + 65241 : 'ARABIC LETTER KAF ISOLATED FORM', + 65242 : 'ARABIC LETTER KAF FINAL FORM', + 65243 : 'ARABIC LETTER KAF INITIAL FORM', + 65244 : 'ARABIC LETTER KAF MEDIAL FORM', + 65245 : 'ARABIC LETTER LAM ISOLATED FORM', + 65246 : 'ARABIC LETTER LAM FINAL FORM', + 65247 : 'ARABIC LETTER LAM INITIAL FORM', + 65248 : 'ARABIC LETTER LAM MEDIAL FORM', + 65249 : 'ARABIC LETTER MEEM ISOLATED FORM', + 65250 : 'ARABIC LETTER MEEM FINAL FORM', + 65251 : 'ARABIC LETTER MEEM INITIAL FORM', + 65252 : 'ARABIC LETTER MEEM MEDIAL FORM', + 65253 : 'ARABIC LETTER NOON ISOLATED FORM', + 65254 : 'ARABIC LETTER NOON FINAL FORM', + 65255 : 'ARABIC LETTER NOON INITIAL FORM', + 65256 : 'ARABIC LETTER NOON MEDIAL FORM', + 65257 : 'ARABIC LETTER HEH ISOLATED FORM', + 65258 : 'ARABIC LETTER HEH FINAL FORM', + 65259 : 'ARABIC LETTER HEH INITIAL FORM', + 65260 : 'ARABIC LETTER HEH MEDIAL FORM', + 65261 : 'ARABIC LETTER WAW ISOLATED FORM', + 65262 : 'ARABIC LETTER WAW FINAL FORM', + 65263 : 'ARABIC LETTER ALEF MAKSURA ISOLATED FORM', + 65264 : 'ARABIC LETTER ALEF MAKSURA FINAL FORM', + 65265 : 'ARABIC LETTER YEH ISOLATED FORM', + 65266 : 'ARABIC LETTER YEH FINAL FORM', + 65267 : 'ARABIC LETTER YEH INITIAL FORM', + 65268 : 'ARABIC LETTER YEH MEDIAL FORM', + 65269 : 'ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM', + 65270 : 'ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM', + 65271 : 'ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM', + 65272 : 'ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM', + 65273 : 'ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM', + 65274 : 'ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM', + 65275 : 'ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM', + 65276 : 'ARABIC LIGATURE LAM WITH ALEF FINAL FORM', + 65279 : 'ZERO WIDTH NO-BREAK SPACE', + 65281 : 'FULLWIDTH EXCLAMATION MARK', + 65282 : 'FULLWIDTH QUOTATION MARK', + 65283 : 'FULLWIDTH NUMBER SIGN', + 65284 : 'FULLWIDTH DOLLAR SIGN', + 65285 : 'FULLWIDTH PERCENT SIGN', + 65286 : 'FULLWIDTH AMPERSAND', + 65287 : 'FULLWIDTH APOSTROPHE', + 65288 : 'FULLWIDTH LEFT PARENTHESIS', + 65289 : 'FULLWIDTH RIGHT PARENTHESIS', + 65290 : 'FULLWIDTH ASTERISK', + 65291 : 'FULLWIDTH PLUS SIGN', + 65292 : 'FULLWIDTH COMMA', + 65293 : 'FULLWIDTH HYPHEN-MINUS', + 65294 : 'FULLWIDTH FULL STOP', + 65295 : 'FULLWIDTH SOLIDUS', + 65296 : 'FULLWIDTH DIGIT ZERO', + 65297 : 'FULLWIDTH DIGIT ONE', + 65298 : 'FULLWIDTH DIGIT TWO', + 65299 : 'FULLWIDTH DIGIT THREE', + 65300 : 'FULLWIDTH DIGIT FOUR', + 65301 : 'FULLWIDTH DIGIT FIVE', + 65302 : 'FULLWIDTH DIGIT SIX', + 65303 : 'FULLWIDTH DIGIT SEVEN', + 65304 : 'FULLWIDTH DIGIT EIGHT', + 65305 : 'FULLWIDTH DIGIT NINE', + 65306 : 'FULLWIDTH COLON', + 65307 : 'FULLWIDTH SEMICOLON', + 65308 : 'FULLWIDTH LESS-THAN SIGN', + 65309 : 'FULLWIDTH EQUALS SIGN', + 65310 : 'FULLWIDTH GREATER-THAN SIGN', + 65311 : 'FULLWIDTH QUESTION MARK', + 65312 : 'FULLWIDTH COMMERCIAL AT', + 65313 : 'FULLWIDTH LATIN CAPITAL LETTER A', + 65314 : 'FULLWIDTH LATIN CAPITAL LETTER B', + 65315 : 'FULLWIDTH LATIN CAPITAL LETTER C', + 65316 : 'FULLWIDTH LATIN CAPITAL LETTER D', + 65317 : 'FULLWIDTH LATIN CAPITAL LETTER E', + 65318 : 'FULLWIDTH LATIN CAPITAL LETTER F', + 65319 : 'FULLWIDTH LATIN CAPITAL LETTER G', + 65320 : 'FULLWIDTH LATIN CAPITAL LETTER H', + 65321 : 'FULLWIDTH LATIN CAPITAL LETTER I', + 65322 : 'FULLWIDTH LATIN CAPITAL LETTER J', + 65323 : 'FULLWIDTH LATIN CAPITAL LETTER K', + 65324 : 'FULLWIDTH LATIN CAPITAL LETTER L', + 65325 : 'FULLWIDTH LATIN CAPITAL LETTER M', + 65326 : 'FULLWIDTH LATIN CAPITAL LETTER N', + 65327 : 'FULLWIDTH LATIN CAPITAL LETTER O', + 65328 : 'FULLWIDTH LATIN CAPITAL LETTER P', + 65329 : 'FULLWIDTH LATIN CAPITAL LETTER Q', + 65330 : 'FULLWIDTH LATIN CAPITAL LETTER R', + 65331 : 'FULLWIDTH LATIN CAPITAL LETTER S', + 65332 : 'FULLWIDTH LATIN CAPITAL LETTER T', + 65333 : 'FULLWIDTH LATIN CAPITAL LETTER U', + 65334 : 'FULLWIDTH LATIN CAPITAL LETTER V', + 65335 : 'FULLWIDTH LATIN CAPITAL LETTER W', + 65336 : 'FULLWIDTH LATIN CAPITAL LETTER X', + 65337 : 'FULLWIDTH LATIN CAPITAL LETTER Y', + 65338 : 'FULLWIDTH LATIN CAPITAL LETTER Z', + 65339 : 'FULLWIDTH LEFT SQUARE BRACKET', + 65340 : 'FULLWIDTH REVERSE SOLIDUS', + 65341 : 'FULLWIDTH RIGHT SQUARE BRACKET', + 65342 : 'FULLWIDTH CIRCUMFLEX ACCENT', + 65343 : 'FULLWIDTH LOW LINE', + 65344 : 'FULLWIDTH GRAVE ACCENT', + 65345 : 'FULLWIDTH LATIN SMALL LETTER A', + 65346 : 'FULLWIDTH LATIN SMALL LETTER B', + 65347 : 'FULLWIDTH LATIN SMALL LETTER C', + 65348 : 'FULLWIDTH LATIN SMALL LETTER D', + 65349 : 'FULLWIDTH LATIN SMALL LETTER E', + 65350 : 'FULLWIDTH LATIN SMALL LETTER F', + 65351 : 'FULLWIDTH LATIN SMALL LETTER G', + 65352 : 'FULLWIDTH LATIN SMALL LETTER H', + 65353 : 'FULLWIDTH LATIN SMALL LETTER I', + 65354 : 'FULLWIDTH LATIN SMALL LETTER J', + 65355 : 'FULLWIDTH LATIN SMALL LETTER K', + 65356 : 'FULLWIDTH LATIN SMALL LETTER L', + 65357 : 'FULLWIDTH LATIN SMALL LETTER M', + 65358 : 'FULLWIDTH LATIN SMALL LETTER N', + 65359 : 'FULLWIDTH LATIN SMALL LETTER O', + 65360 : 'FULLWIDTH LATIN SMALL LETTER P', + 65361 : 'FULLWIDTH LATIN SMALL LETTER Q', + 65362 : 'FULLWIDTH LATIN SMALL LETTER R', + 65363 : 'FULLWIDTH LATIN SMALL LETTER S', + 65364 : 'FULLWIDTH LATIN SMALL LETTER T', + 65365 : 'FULLWIDTH LATIN SMALL LETTER U', + 65366 : 'FULLWIDTH LATIN SMALL LETTER V', + 65367 : 'FULLWIDTH LATIN SMALL LETTER W', + 65368 : 'FULLWIDTH LATIN SMALL LETTER X', + 65369 : 'FULLWIDTH LATIN SMALL LETTER Y', + 65370 : 'FULLWIDTH LATIN SMALL LETTER Z', + 65371 : 'FULLWIDTH LEFT CURLY BRACKET', + 65372 : 'FULLWIDTH VERTICAL LINE', + 65373 : 'FULLWIDTH RIGHT CURLY BRACKET', + 65374 : 'FULLWIDTH TILDE', + 65375 : 'FULLWIDTH LEFT WHITE PARENTHESIS', + 65376 : 'FULLWIDTH RIGHT WHITE PARENTHESIS', + 65377 : 'HALFWIDTH IDEOGRAPHIC FULL STOP', + 65378 : 'HALFWIDTH LEFT CORNER BRACKET', + 65379 : 'HALFWIDTH RIGHT CORNER BRACKET', + 65380 : 'HALFWIDTH IDEOGRAPHIC COMMA', + 65381 : 'HALFWIDTH KATAKANA MIDDLE DOT', + 65382 : 'HALFWIDTH KATAKANA LETTER WO', + 65383 : 'HALFWIDTH KATAKANA LETTER SMALL A', + 65384 : 'HALFWIDTH KATAKANA LETTER SMALL I', + 65385 : 'HALFWIDTH KATAKANA LETTER SMALL U', + 65386 : 'HALFWIDTH KATAKANA LETTER SMALL E', + 65387 : 'HALFWIDTH KATAKANA LETTER SMALL O', + 65388 : 'HALFWIDTH KATAKANA LETTER SMALL YA', + 65389 : 'HALFWIDTH KATAKANA LETTER SMALL YU', + 65390 : 'HALFWIDTH KATAKANA LETTER SMALL YO', + 65391 : 'HALFWIDTH KATAKANA LETTER SMALL TU', + 65392 : 'HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK', + 65393 : 'HALFWIDTH KATAKANA LETTER A', + 65394 : 'HALFWIDTH KATAKANA LETTER I', + 65395 : 'HALFWIDTH KATAKANA LETTER U', + 65396 : 'HALFWIDTH KATAKANA LETTER E', + 65397 : 'HALFWIDTH KATAKANA LETTER O', + 65398 : 'HALFWIDTH KATAKANA LETTER KA', + 65399 : 'HALFWIDTH KATAKANA LETTER KI', + 65400 : 'HALFWIDTH KATAKANA LETTER KU', + 65401 : 'HALFWIDTH KATAKANA LETTER KE', + 65402 : 'HALFWIDTH KATAKANA LETTER KO', + 65403 : 'HALFWIDTH KATAKANA LETTER SA', + 65404 : 'HALFWIDTH KATAKANA LETTER SI', + 65405 : 'HALFWIDTH KATAKANA LETTER SU', + 65406 : 'HALFWIDTH KATAKANA LETTER SE', + 65407 : 'HALFWIDTH KATAKANA LETTER SO', + 65408 : 'HALFWIDTH KATAKANA LETTER TA', + 65409 : 'HALFWIDTH KATAKANA LETTER TI', + 65410 : 'HALFWIDTH KATAKANA LETTER TU', + 65411 : 'HALFWIDTH KATAKANA LETTER TE', + 65412 : 'HALFWIDTH KATAKANA LETTER TO', + 65413 : 'HALFWIDTH KATAKANA LETTER NA', + 65414 : 'HALFWIDTH KATAKANA LETTER NI', + 65415 : 'HALFWIDTH KATAKANA LETTER NU', + 65416 : 'HALFWIDTH KATAKANA LETTER NE', + 65417 : 'HALFWIDTH KATAKANA LETTER NO', + 65418 : 'HALFWIDTH KATAKANA LETTER HA', + 65419 : 'HALFWIDTH KATAKANA LETTER HI', + 65420 : 'HALFWIDTH KATAKANA LETTER HU', + 65421 : 'HALFWIDTH KATAKANA LETTER HE', + 65422 : 'HALFWIDTH KATAKANA LETTER HO', + 65423 : 'HALFWIDTH KATAKANA LETTER MA', + 65424 : 'HALFWIDTH KATAKANA LETTER MI', + 65425 : 'HALFWIDTH KATAKANA LETTER MU', + 65426 : 'HALFWIDTH KATAKANA LETTER ME', + 65427 : 'HALFWIDTH KATAKANA LETTER MO', + 65428 : 'HALFWIDTH KATAKANA LETTER YA', + 65429 : 'HALFWIDTH KATAKANA LETTER YU', + 65430 : 'HALFWIDTH KATAKANA LETTER YO', + 65431 : 'HALFWIDTH KATAKANA LETTER RA', + 65432 : 'HALFWIDTH KATAKANA LETTER RI', + 65433 : 'HALFWIDTH KATAKANA LETTER RU', + 65434 : 'HALFWIDTH KATAKANA LETTER RE', + 65435 : 'HALFWIDTH KATAKANA LETTER RO', + 65436 : 'HALFWIDTH KATAKANA LETTER WA', + 65437 : 'HALFWIDTH KATAKANA LETTER N', + 65438 : 'HALFWIDTH KATAKANA VOICED SOUND MARK', + 65439 : 'HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK', + 65440 : 'HALFWIDTH HANGUL FILLER', + 65441 : 'HALFWIDTH HANGUL LETTER KIYEOK', + 65442 : 'HALFWIDTH HANGUL LETTER SSANGKIYEOK', + 65443 : 'HALFWIDTH HANGUL LETTER KIYEOK-SIOS', + 65444 : 'HALFWIDTH HANGUL LETTER NIEUN', + 65445 : 'HALFWIDTH HANGUL LETTER NIEUN-CIEUC', + 65446 : 'HALFWIDTH HANGUL LETTER NIEUN-HIEUH', + 65447 : 'HALFWIDTH HANGUL LETTER TIKEUT', + 65448 : 'HALFWIDTH HANGUL LETTER SSANGTIKEUT', + 65449 : 'HALFWIDTH HANGUL LETTER RIEUL', + 65450 : 'HALFWIDTH HANGUL LETTER RIEUL-KIYEOK', + 65451 : 'HALFWIDTH HANGUL LETTER RIEUL-MIEUM', + 65452 : 'HALFWIDTH HANGUL LETTER RIEUL-PIEUP', + 65453 : 'HALFWIDTH HANGUL LETTER RIEUL-SIOS', + 65454 : 'HALFWIDTH HANGUL LETTER RIEUL-THIEUTH', + 65455 : 'HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH', + 65456 : 'HALFWIDTH HANGUL LETTER RIEUL-HIEUH', + 65457 : 'HALFWIDTH HANGUL LETTER MIEUM', + 65458 : 'HALFWIDTH HANGUL LETTER PIEUP', + 65459 : 'HALFWIDTH HANGUL LETTER SSANGPIEUP', + 65460 : 'HALFWIDTH HANGUL LETTER PIEUP-SIOS', + 65461 : 'HALFWIDTH HANGUL LETTER SIOS', + 65462 : 'HALFWIDTH HANGUL LETTER SSANGSIOS', + 65463 : 'HALFWIDTH HANGUL LETTER IEUNG', + 65464 : 'HALFWIDTH HANGUL LETTER CIEUC', + 65465 : 'HALFWIDTH HANGUL LETTER SSANGCIEUC', + 65466 : 'HALFWIDTH HANGUL LETTER CHIEUCH', + 65467 : 'HALFWIDTH HANGUL LETTER KHIEUKH', + 65468 : 'HALFWIDTH HANGUL LETTER THIEUTH', + 65469 : 'HALFWIDTH HANGUL LETTER PHIEUPH', + 65470 : 'HALFWIDTH HANGUL LETTER HIEUH', + 65474 : 'HALFWIDTH HANGUL LETTER A', + 65475 : 'HALFWIDTH HANGUL LETTER AE', + 65476 : 'HALFWIDTH HANGUL LETTER YA', + 65477 : 'HALFWIDTH HANGUL LETTER YAE', + 65478 : 'HALFWIDTH HANGUL LETTER EO', + 65479 : 'HALFWIDTH HANGUL LETTER E', + 65482 : 'HALFWIDTH HANGUL LETTER YEO', + 65483 : 'HALFWIDTH HANGUL LETTER YE', + 65484 : 'HALFWIDTH HANGUL LETTER O', + 65485 : 'HALFWIDTH HANGUL LETTER WA', + 65486 : 'HALFWIDTH HANGUL LETTER WAE', + 65487 : 'HALFWIDTH HANGUL LETTER OE', + 65490 : 'HALFWIDTH HANGUL LETTER YO', + 65491 : 'HALFWIDTH HANGUL LETTER U', + 65492 : 'HALFWIDTH HANGUL LETTER WEO', + 65493 : 'HALFWIDTH HANGUL LETTER WE', + 65494 : 'HALFWIDTH HANGUL LETTER WI', + 65495 : 'HALFWIDTH HANGUL LETTER YU', + 65498 : 'HALFWIDTH HANGUL LETTER EU', + 65499 : 'HALFWIDTH HANGUL LETTER YI', + 65500 : 'HALFWIDTH HANGUL LETTER I', + 65504 : 'FULLWIDTH CENT SIGN', + 65505 : 'FULLWIDTH POUND SIGN', + 65506 : 'FULLWIDTH NOT SIGN', + 65507 : 'FULLWIDTH MACRON', + 65508 : 'FULLWIDTH BROKEN BAR', + 65509 : 'FULLWIDTH YEN SIGN', + 65510 : 'FULLWIDTH WON SIGN', + 65512 : 'HALFWIDTH FORMS LIGHT VERTICAL', + 65513 : 'HALFWIDTH LEFTWARDS ARROW', + 65514 : 'HALFWIDTH UPWARDS ARROW', + 65515 : 'HALFWIDTH RIGHTWARDS ARROW', + 65516 : 'HALFWIDTH DOWNWARDS ARROW', + 65517 : 'HALFWIDTH BLACK SQUARE', + 65518 : 'HALFWIDTH WHITE CIRCLE', + 65529 : 'INTERLINEAR ANNOTATION ANCHOR', + 65530 : 'INTERLINEAR ANNOTATION SEPARATOR', + 65531 : 'INTERLINEAR ANNOTATION TERMINATOR', + 65532 : 'OBJECT REPLACEMENT CHARACTER', + 65533 : 'REPLACEMENT CHARACTER', + 66304 : 'OLD ITALIC LETTER A', + 66305 : 'OLD ITALIC LETTER BE', + 66306 : 'OLD ITALIC LETTER KE', + 66307 : 'OLD ITALIC LETTER DE', + 66308 : 'OLD ITALIC LETTER E', + 66309 : 'OLD ITALIC LETTER VE', + 66310 : 'OLD ITALIC LETTER ZE', + 66311 : 'OLD ITALIC LETTER HE', + 66312 : 'OLD ITALIC LETTER THE', + 66313 : 'OLD ITALIC LETTER I', + 66314 : 'OLD ITALIC LETTER KA', + 66315 : 'OLD ITALIC LETTER EL', + 66316 : 'OLD ITALIC LETTER EM', + 66317 : 'OLD ITALIC LETTER EN', + 66318 : 'OLD ITALIC LETTER ESH', + 66319 : 'OLD ITALIC LETTER O', + 66320 : 'OLD ITALIC LETTER PE', + 66321 : 'OLD ITALIC LETTER SHE', + 66322 : 'OLD ITALIC LETTER KU', + 66323 : 'OLD ITALIC LETTER ER', + 66324 : 'OLD ITALIC LETTER ES', + 66325 : 'OLD ITALIC LETTER TE', + 66326 : 'OLD ITALIC LETTER U', + 66327 : 'OLD ITALIC LETTER EKS', + 66328 : 'OLD ITALIC LETTER PHE', + 66329 : 'OLD ITALIC LETTER KHE', + 66330 : 'OLD ITALIC LETTER EF', + 66331 : 'OLD ITALIC LETTER ERS', + 66332 : 'OLD ITALIC LETTER CHE', + 66333 : 'OLD ITALIC LETTER II', + 66334 : 'OLD ITALIC LETTER UU', + 66336 : 'OLD ITALIC NUMERAL ONE', + 66337 : 'OLD ITALIC NUMERAL FIVE', + 66338 : 'OLD ITALIC NUMERAL TEN', + 66339 : 'OLD ITALIC NUMERAL FIFTY', + 66352 : 'GOTHIC LETTER AHSA', + 66353 : 'GOTHIC LETTER BAIRKAN', + 66354 : 'GOTHIC LETTER GIBA', + 66355 : 'GOTHIC LETTER DAGS', + 66356 : 'GOTHIC LETTER AIHVUS', + 66357 : 'GOTHIC LETTER QAIRTHRA', + 66358 : 'GOTHIC LETTER IUJA', + 66359 : 'GOTHIC LETTER HAGL', + 66360 : 'GOTHIC LETTER THIUTH', + 66361 : 'GOTHIC LETTER EIS', + 66362 : 'GOTHIC LETTER KUSMA', + 66363 : 'GOTHIC LETTER LAGUS', + 66364 : 'GOTHIC LETTER MANNA', + 66365 : 'GOTHIC LETTER NAUTHS', + 66366 : 'GOTHIC LETTER JER', + 66367 : 'GOTHIC LETTER URUS', + 66368 : 'GOTHIC LETTER PAIRTHRA', + 66369 : 'GOTHIC LETTER NINETY', + 66370 : 'GOTHIC LETTER RAIDA', + 66371 : 'GOTHIC LETTER SAUIL', + 66372 : 'GOTHIC LETTER TEIWS', + 66373 : 'GOTHIC LETTER WINJA', + 66374 : 'GOTHIC LETTER FAIHU', + 66375 : 'GOTHIC LETTER IGGWS', + 66376 : 'GOTHIC LETTER HWAIR', + 66377 : 'GOTHIC LETTER OTHAL', + 66378 : 'GOTHIC LETTER NINE HUNDRED', + 66560 : 'DESERET CAPITAL LETTER LONG I', + 66561 : 'DESERET CAPITAL LETTER LONG E', + 66562 : 'DESERET CAPITAL LETTER LONG A', + 66563 : 'DESERET CAPITAL LETTER LONG AH', + 66564 : 'DESERET CAPITAL LETTER LONG O', + 66565 : 'DESERET CAPITAL LETTER LONG OO', + 66566 : 'DESERET CAPITAL LETTER SHORT I', + 66567 : 'DESERET CAPITAL LETTER SHORT E', + 66568 : 'DESERET CAPITAL LETTER SHORT A', + 66569 : 'DESERET CAPITAL LETTER SHORT AH', + 66570 : 'DESERET CAPITAL LETTER SHORT O', + 66571 : 'DESERET CAPITAL LETTER SHORT OO', + 66572 : 'DESERET CAPITAL LETTER AY', + 66573 : 'DESERET CAPITAL LETTER OW', + 66574 : 'DESERET CAPITAL LETTER WU', + 66575 : 'DESERET CAPITAL LETTER YEE', + 66576 : 'DESERET CAPITAL LETTER H', + 66577 : 'DESERET CAPITAL LETTER PEE', + 66578 : 'DESERET CAPITAL LETTER BEE', + 66579 : 'DESERET CAPITAL LETTER TEE', + 66580 : 'DESERET CAPITAL LETTER DEE', + 66581 : 'DESERET CAPITAL LETTER CHEE', + 66582 : 'DESERET CAPITAL LETTER JEE', + 66583 : 'DESERET CAPITAL LETTER KAY', + 66584 : 'DESERET CAPITAL LETTER GAY', + 66585 : 'DESERET CAPITAL LETTER EF', + 66586 : 'DESERET CAPITAL LETTER VEE', + 66587 : 'DESERET CAPITAL LETTER ETH', + 66588 : 'DESERET CAPITAL LETTER THEE', + 66589 : 'DESERET CAPITAL LETTER ES', + 66590 : 'DESERET CAPITAL LETTER ZEE', + 66591 : 'DESERET CAPITAL LETTER ESH', + 66592 : 'DESERET CAPITAL LETTER ZHEE', + 66593 : 'DESERET CAPITAL LETTER ER', + 66594 : 'DESERET CAPITAL LETTER EL', + 66595 : 'DESERET CAPITAL LETTER EM', + 66596 : 'DESERET CAPITAL LETTER EN', + 66597 : 'DESERET CAPITAL LETTER ENG', + 66600 : 'DESERET SMALL LETTER LONG I', + 66601 : 'DESERET SMALL LETTER LONG E', + 66602 : 'DESERET SMALL LETTER LONG A', + 66603 : 'DESERET SMALL LETTER LONG AH', + 66604 : 'DESERET SMALL LETTER LONG O', + 66605 : 'DESERET SMALL LETTER LONG OO', + 66606 : 'DESERET SMALL LETTER SHORT I', + 66607 : 'DESERET SMALL LETTER SHORT E', + 66608 : 'DESERET SMALL LETTER SHORT A', + 66609 : 'DESERET SMALL LETTER SHORT AH', + 66610 : 'DESERET SMALL LETTER SHORT O', + 66611 : 'DESERET SMALL LETTER SHORT OO', + 66612 : 'DESERET SMALL LETTER AY', + 66613 : 'DESERET SMALL LETTER OW', + 66614 : 'DESERET SMALL LETTER WU', + 66615 : 'DESERET SMALL LETTER YEE', + 66616 : 'DESERET SMALL LETTER H', + 66617 : 'DESERET SMALL LETTER PEE', + 66618 : 'DESERET SMALL LETTER BEE', + 66619 : 'DESERET SMALL LETTER TEE', + 66620 : 'DESERET SMALL LETTER DEE', + 66621 : 'DESERET SMALL LETTER CHEE', + 66622 : 'DESERET SMALL LETTER JEE', + 66623 : 'DESERET SMALL LETTER KAY', + 66624 : 'DESERET SMALL LETTER GAY', + 66625 : 'DESERET SMALL LETTER EF', + 66626 : 'DESERET SMALL LETTER VEE', + 66627 : 'DESERET SMALL LETTER ETH', + 66628 : 'DESERET SMALL LETTER THEE', + 66629 : 'DESERET SMALL LETTER ES', + 66630 : 'DESERET SMALL LETTER ZEE', + 66631 : 'DESERET SMALL LETTER ESH', + 66632 : 'DESERET SMALL LETTER ZHEE', + 66633 : 'DESERET SMALL LETTER ER', + 66634 : 'DESERET SMALL LETTER EL', + 66635 : 'DESERET SMALL LETTER EM', + 66636 : 'DESERET SMALL LETTER EN', + 66637 : 'DESERET SMALL LETTER ENG', + 118784 : 'BYZANTINE MUSICAL SYMBOL PSILI', + 118785 : 'BYZANTINE MUSICAL SYMBOL DASEIA', + 118786 : 'BYZANTINE MUSICAL SYMBOL PERISPOMENI', + 118787 : 'BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON', + 118788 : 'BYZANTINE MUSICAL SYMBOL OXEIA DIPLI', + 118789 : 'BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON', + 118790 : 'BYZANTINE MUSICAL SYMBOL VAREIA DIPLI', + 118791 : 'BYZANTINE MUSICAL SYMBOL KATHISTI', + 118792 : 'BYZANTINE MUSICAL SYMBOL SYRMATIKI', + 118793 : 'BYZANTINE MUSICAL SYMBOL PARAKLITIKI', + 118794 : 'BYZANTINE MUSICAL SYMBOL YPOKRISIS', + 118795 : 'BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI', + 118796 : 'BYZANTINE MUSICAL SYMBOL KREMASTI', + 118797 : 'BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON', + 118798 : 'BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON', + 118799 : 'BYZANTINE MUSICAL SYMBOL TELEIA', + 118800 : 'BYZANTINE MUSICAL SYMBOL KENTIMATA', + 118801 : 'BYZANTINE MUSICAL SYMBOL APOSTROFOS', + 118802 : 'BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI', + 118803 : 'BYZANTINE MUSICAL SYMBOL SYNEVMA', + 118804 : 'BYZANTINE MUSICAL SYMBOL THITA', + 118805 : 'BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION', + 118806 : 'BYZANTINE MUSICAL SYMBOL GORGON ARCHAION', + 118807 : 'BYZANTINE MUSICAL SYMBOL PSILON', + 118808 : 'BYZANTINE MUSICAL SYMBOL CHAMILON', + 118809 : 'BYZANTINE MUSICAL SYMBOL VATHY', + 118810 : 'BYZANTINE MUSICAL SYMBOL ISON ARCHAION', + 118811 : 'BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION', + 118812 : 'BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION', + 118813 : 'BYZANTINE MUSICAL SYMBOL SAXIMATA', + 118814 : 'BYZANTINE MUSICAL SYMBOL PARICHON', + 118815 : 'BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA', + 118816 : 'BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION', + 118817 : 'BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION', + 118818 : 'BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION', + 118819 : 'BYZANTINE MUSICAL SYMBOL APOTHEMA', + 118820 : 'BYZANTINE MUSICAL SYMBOL KLASMA', + 118821 : 'BYZANTINE MUSICAL SYMBOL REVMA', + 118822 : 'BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION', + 118823 : 'BYZANTINE MUSICAL SYMBOL TINAGMA', + 118824 : 'BYZANTINE MUSICAL SYMBOL ANATRICHISMA', + 118825 : 'BYZANTINE MUSICAL SYMBOL SEISMA', + 118826 : 'BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION', + 118827 : 'BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU', + 118828 : 'BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION', + 118829 : 'BYZANTINE MUSICAL SYMBOL THEMA', + 118830 : 'BYZANTINE MUSICAL SYMBOL LEMOI', + 118831 : 'BYZANTINE MUSICAL SYMBOL DYO', + 118832 : 'BYZANTINE MUSICAL SYMBOL TRIA', + 118833 : 'BYZANTINE MUSICAL SYMBOL TESSERA', + 118834 : 'BYZANTINE MUSICAL SYMBOL KRATIMATA', + 118835 : 'BYZANTINE MUSICAL SYMBOL APESO EXO NEO', + 118836 : 'BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION', + 118837 : 'BYZANTINE MUSICAL SYMBOL IMIFTHORA', + 118838 : 'BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION', + 118839 : 'BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON', + 118840 : 'BYZANTINE MUSICAL SYMBOL PELASTON', + 118841 : 'BYZANTINE MUSICAL SYMBOL PSIFISTON', + 118842 : 'BYZANTINE MUSICAL SYMBOL KONTEVMA', + 118843 : 'BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION', + 118844 : 'BYZANTINE MUSICAL SYMBOL RAPISMA', + 118845 : 'BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION', + 118846 : 'BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION', + 118847 : 'BYZANTINE MUSICAL SYMBOL ICHADIN', + 118848 : 'BYZANTINE MUSICAL SYMBOL NANA', + 118849 : 'BYZANTINE MUSICAL SYMBOL PETASMA', + 118850 : 'BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO', + 118851 : 'BYZANTINE MUSICAL SYMBOL TROMIKON ALLO', + 118852 : 'BYZANTINE MUSICAL SYMBOL STRAGGISMATA', + 118853 : 'BYZANTINE MUSICAL SYMBOL GRONTHISMATA', + 118854 : 'BYZANTINE MUSICAL SYMBOL ISON NEO', + 118855 : 'BYZANTINE MUSICAL SYMBOL OLIGON NEO', + 118856 : 'BYZANTINE MUSICAL SYMBOL OXEIA NEO', + 118857 : 'BYZANTINE MUSICAL SYMBOL PETASTI', + 118858 : 'BYZANTINE MUSICAL SYMBOL KOUFISMA', + 118859 : 'BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA', + 118860 : 'BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA', + 118861 : 'BYZANTINE MUSICAL SYMBOL PELASTON NEO', + 118862 : 'BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO', + 118863 : 'BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO', + 118864 : 'BYZANTINE MUSICAL SYMBOL YPSILI', + 118865 : 'BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO', + 118866 : 'BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO', + 118867 : 'BYZANTINE MUSICAL SYMBOL YPORROI', + 118868 : 'BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON', + 118869 : 'BYZANTINE MUSICAL SYMBOL ELAFRON', + 118870 : 'BYZANTINE MUSICAL SYMBOL CHAMILI', + 118871 : 'BYZANTINE MUSICAL SYMBOL MIKRON ISON', + 118872 : 'BYZANTINE MUSICAL SYMBOL VAREIA NEO', + 118873 : 'BYZANTINE MUSICAL SYMBOL PIASMA NEO', + 118874 : 'BYZANTINE MUSICAL SYMBOL PSIFISTON NEO', + 118875 : 'BYZANTINE MUSICAL SYMBOL OMALON', + 118876 : 'BYZANTINE MUSICAL SYMBOL ANTIKENOMA', + 118877 : 'BYZANTINE MUSICAL SYMBOL LYGISMA', + 118878 : 'BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO', + 118879 : 'BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO', + 118880 : 'BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA', + 118881 : 'BYZANTINE MUSICAL SYMBOL KYLISMA', + 118882 : 'BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA', + 118883 : 'BYZANTINE MUSICAL SYMBOL TROMIKON NEO', + 118884 : 'BYZANTINE MUSICAL SYMBOL EKSTREPTON', + 118885 : 'BYZANTINE MUSICAL SYMBOL SYNAGMA NEO', + 118886 : 'BYZANTINE MUSICAL SYMBOL SYRMA', + 118887 : 'BYZANTINE MUSICAL SYMBOL CHOREVMA NEO', + 118888 : 'BYZANTINE MUSICAL SYMBOL EPEGERMA', + 118889 : 'BYZANTINE MUSICAL SYMBOL SEISMA NEO', + 118890 : 'BYZANTINE MUSICAL SYMBOL XIRON KLASMA', + 118891 : 'BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON', + 118892 : 'BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA', + 118893 : 'BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA', + 118894 : 'BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA', + 118895 : 'BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA', + 118896 : 'BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA', + 118897 : 'BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA', + 118898 : 'BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON', + 118899 : 'BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON', + 118900 : 'BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON', + 118901 : 'BYZANTINE MUSICAL SYMBOL OYRANISMA NEO', + 118902 : 'BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO', + 118903 : 'BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO', + 118904 : 'BYZANTINE MUSICAL SYMBOL THEMA APLOUN', + 118905 : 'BYZANTINE MUSICAL SYMBOL THES KAI APOTHES', + 118906 : 'BYZANTINE MUSICAL SYMBOL KATAVASMA', + 118907 : 'BYZANTINE MUSICAL SYMBOL ENDOFONON', + 118908 : 'BYZANTINE MUSICAL SYMBOL YFEN KATO', + 118909 : 'BYZANTINE MUSICAL SYMBOL YFEN ANO', + 118910 : 'BYZANTINE MUSICAL SYMBOL STAVROS', + 118911 : 'BYZANTINE MUSICAL SYMBOL KLASMA ANO', + 118912 : 'BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION', + 118913 : 'BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION', + 118914 : 'BYZANTINE MUSICAL SYMBOL KRATIMA ALLO', + 118915 : 'BYZANTINE MUSICAL SYMBOL KRATIMA NEO', + 118916 : 'BYZANTINE MUSICAL SYMBOL APODERMA NEO', + 118917 : 'BYZANTINE MUSICAL SYMBOL APLI', + 118918 : 'BYZANTINE MUSICAL SYMBOL DIPLI', + 118919 : 'BYZANTINE MUSICAL SYMBOL TRIPLI', + 118920 : 'BYZANTINE MUSICAL SYMBOL TETRAPLI', + 118921 : 'BYZANTINE MUSICAL SYMBOL KORONIS', + 118922 : 'BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU', + 118923 : 'BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON', + 118924 : 'BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON', + 118925 : 'BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON', + 118926 : 'BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU', + 118927 : 'BYZANTINE MUSICAL SYMBOL GORGON NEO ANO', + 118928 : 'BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA', + 118929 : 'BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA', + 118930 : 'BYZANTINE MUSICAL SYMBOL DIGORGON', + 118931 : 'BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO', + 118932 : 'BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO', + 118933 : 'BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA', + 118934 : 'BYZANTINE MUSICAL SYMBOL TRIGORGON', + 118935 : 'BYZANTINE MUSICAL SYMBOL ARGON', + 118936 : 'BYZANTINE MUSICAL SYMBOL IMIDIARGON', + 118937 : 'BYZANTINE MUSICAL SYMBOL DIARGON', + 118938 : 'BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI', + 118939 : 'BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI', + 118940 : 'BYZANTINE MUSICAL SYMBOL AGOGI ARGI', + 118941 : 'BYZANTINE MUSICAL SYMBOL AGOGI METRIA', + 118942 : 'BYZANTINE MUSICAL SYMBOL AGOGI MESI', + 118943 : 'BYZANTINE MUSICAL SYMBOL AGOGI GORGI', + 118944 : 'BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI', + 118945 : 'BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI', + 118946 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS', + 118947 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS', + 118948 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS', + 118949 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS', + 118950 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS', + 118951 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS', + 118952 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS', + 118953 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS', + 118954 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS', + 118955 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS', + 118956 : 'BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS', + 118957 : 'BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS', + 118958 : 'BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS', + 118959 : 'BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS', + 118960 : 'BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS', + 118961 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS', + 118962 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS', + 118963 : 'BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS', + 118964 : 'BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN', + 118965 : 'BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN', + 118966 : 'BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU', + 118967 : 'BYZANTINE MUSICAL SYMBOL IMIFONON', + 118968 : 'BYZANTINE MUSICAL SYMBOL IMIFTHORON', + 118969 : 'BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU', + 118970 : 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA', + 118971 : 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA', + 118972 : 'BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS', + 118973 : 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI', + 118974 : 'BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI', + 118975 : 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE', + 118976 : 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO', + 118977 : 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO', + 118978 : 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO', + 118979 : 'BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS', + 118980 : 'BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS', + 118981 : 'BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS', + 118982 : 'BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI', + 118983 : 'BYZANTINE MUSICAL SYMBOL FTHORA NENANO', + 118984 : 'BYZANTINE MUSICAL SYMBOL CHROA ZYGOS', + 118985 : 'BYZANTINE MUSICAL SYMBOL CHROA KLITON', + 118986 : 'BYZANTINE MUSICAL SYMBOL CHROA SPATHI', + 118987 : 'BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION', + 118988 : 'BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA', + 118989 : 'BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION', + 118990 : 'BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION', + 118991 : 'BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION', + 118992 : 'BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA', + 118993 : 'BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA', + 118994 : 'BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA', + 118995 : 'BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA', + 118996 : 'BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA', + 118997 : 'BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA', + 118998 : 'BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA', + 118999 : 'BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA', + 119000 : 'BYZANTINE MUSICAL SYMBOL GENIKI DIESIS', + 119001 : 'BYZANTINE MUSICAL SYMBOL GENIKI YFESIS', + 119002 : 'BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI', + 119003 : 'BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI', + 119004 : 'BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI', + 119005 : 'BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS', + 119006 : 'BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS', + 119007 : 'BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU', + 119008 : 'BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU', + 119009 : 'BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU', + 119010 : 'BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS', + 119011 : 'BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU', + 119012 : 'BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU', + 119013 : 'BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU', + 119014 : 'BYZANTINE MUSICAL SYMBOL DIGRAMMA GG', + 119015 : 'BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU', + 119016 : 'BYZANTINE MUSICAL SYMBOL STIGMA', + 119017 : 'BYZANTINE MUSICAL SYMBOL ARKTIKO PA', + 119018 : 'BYZANTINE MUSICAL SYMBOL ARKTIKO VOU', + 119019 : 'BYZANTINE MUSICAL SYMBOL ARKTIKO GA', + 119020 : 'BYZANTINE MUSICAL SYMBOL ARKTIKO DI', + 119021 : 'BYZANTINE MUSICAL SYMBOL ARKTIKO KE', + 119022 : 'BYZANTINE MUSICAL SYMBOL ARKTIKO ZO', + 119023 : 'BYZANTINE MUSICAL SYMBOL ARKTIKO NI', + 119024 : 'BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO', + 119025 : 'BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO', + 119026 : 'BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO', + 119027 : 'BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO', + 119028 : 'BYZANTINE MUSICAL SYMBOL KLASMA KATO', + 119029 : 'BYZANTINE MUSICAL SYMBOL GORGON NEO KATO', + 119040 : 'MUSICAL SYMBOL SINGLE BARLINE', + 119041 : 'MUSICAL SYMBOL DOUBLE BARLINE', + 119042 : 'MUSICAL SYMBOL FINAL BARLINE', + 119043 : 'MUSICAL SYMBOL REVERSE FINAL BARLINE', + 119044 : 'MUSICAL SYMBOL DASHED BARLINE', + 119045 : 'MUSICAL SYMBOL SHORT BARLINE', + 119046 : 'MUSICAL SYMBOL LEFT REPEAT SIGN', + 119047 : 'MUSICAL SYMBOL RIGHT REPEAT SIGN', + 119048 : 'MUSICAL SYMBOL REPEAT DOTS', + 119049 : 'MUSICAL SYMBOL DAL SEGNO', + 119050 : 'MUSICAL SYMBOL DA CAPO', + 119051 : 'MUSICAL SYMBOL SEGNO', + 119052 : 'MUSICAL SYMBOL CODA', + 119053 : 'MUSICAL SYMBOL REPEATED FIGURE-1', + 119054 : 'MUSICAL SYMBOL REPEATED FIGURE-2', + 119055 : 'MUSICAL SYMBOL REPEATED FIGURE-3', + 119056 : 'MUSICAL SYMBOL FERMATA', + 119057 : 'MUSICAL SYMBOL FERMATA BELOW', + 119058 : 'MUSICAL SYMBOL BREATH MARK', + 119059 : 'MUSICAL SYMBOL CAESURA', + 119060 : 'MUSICAL SYMBOL BRACE', + 119061 : 'MUSICAL SYMBOL BRACKET', + 119062 : 'MUSICAL SYMBOL ONE-LINE STAFF', + 119063 : 'MUSICAL SYMBOL TWO-LINE STAFF', + 119064 : 'MUSICAL SYMBOL THREE-LINE STAFF', + 119065 : 'MUSICAL SYMBOL FOUR-LINE STAFF', + 119066 : 'MUSICAL SYMBOL FIVE-LINE STAFF', + 119067 : 'MUSICAL SYMBOL SIX-LINE STAFF', + 119068 : 'MUSICAL SYMBOL SIX-STRING FRETBOARD', + 119069 : 'MUSICAL SYMBOL FOUR-STRING FRETBOARD', + 119070 : 'MUSICAL SYMBOL G CLEF', + 119071 : 'MUSICAL SYMBOL G CLEF OTTAVA ALTA', + 119072 : 'MUSICAL SYMBOL G CLEF OTTAVA BASSA', + 119073 : 'MUSICAL SYMBOL C CLEF', + 119074 : 'MUSICAL SYMBOL F CLEF', + 119075 : 'MUSICAL SYMBOL F CLEF OTTAVA ALTA', + 119076 : 'MUSICAL SYMBOL F CLEF OTTAVA BASSA', + 119077 : 'MUSICAL SYMBOL DRUM CLEF-1', + 119078 : 'MUSICAL SYMBOL DRUM CLEF-2', + 119082 : 'MUSICAL SYMBOL DOUBLE SHARP', + 119083 : 'MUSICAL SYMBOL DOUBLE FLAT', + 119084 : 'MUSICAL SYMBOL FLAT UP', + 119085 : 'MUSICAL SYMBOL FLAT DOWN', + 119086 : 'MUSICAL SYMBOL NATURAL UP', + 119087 : 'MUSICAL SYMBOL NATURAL DOWN', + 119088 : 'MUSICAL SYMBOL SHARP UP', + 119089 : 'MUSICAL SYMBOL SHARP DOWN', + 119090 : 'MUSICAL SYMBOL QUARTER TONE SHARP', + 119091 : 'MUSICAL SYMBOL QUARTER TONE FLAT', + 119092 : 'MUSICAL SYMBOL COMMON TIME', + 119093 : 'MUSICAL SYMBOL CUT TIME', + 119094 : 'MUSICAL SYMBOL OTTAVA ALTA', + 119095 : 'MUSICAL SYMBOL OTTAVA BASSA', + 119096 : 'MUSICAL SYMBOL QUINDICESIMA ALTA', + 119097 : 'MUSICAL SYMBOL QUINDICESIMA BASSA', + 119098 : 'MUSICAL SYMBOL MULTI REST', + 119099 : 'MUSICAL SYMBOL WHOLE REST', + 119100 : 'MUSICAL SYMBOL HALF REST', + 119101 : 'MUSICAL SYMBOL QUARTER REST', + 119102 : 'MUSICAL SYMBOL EIGHTH REST', + 119103 : 'MUSICAL SYMBOL SIXTEENTH REST', + 119104 : 'MUSICAL SYMBOL THIRTY-SECOND REST', + 119105 : 'MUSICAL SYMBOL SIXTY-FOURTH REST', + 119106 : 'MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST', + 119107 : 'MUSICAL SYMBOL X NOTEHEAD', + 119108 : 'MUSICAL SYMBOL PLUS NOTEHEAD', + 119109 : 'MUSICAL SYMBOL CIRCLE X NOTEHEAD', + 119110 : 'MUSICAL SYMBOL SQUARE NOTEHEAD WHITE', + 119111 : 'MUSICAL SYMBOL SQUARE NOTEHEAD BLACK', + 119112 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE', + 119113 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK', + 119114 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE', + 119115 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK', + 119116 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE', + 119117 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK', + 119118 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE', + 119119 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK', + 119120 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE', + 119121 : 'MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK', + 119122 : 'MUSICAL SYMBOL MOON NOTEHEAD WHITE', + 119123 : 'MUSICAL SYMBOL MOON NOTEHEAD BLACK', + 119124 : 'MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE', + 119125 : 'MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK', + 119126 : 'MUSICAL SYMBOL PARENTHESIS NOTEHEAD', + 119127 : 'MUSICAL SYMBOL VOID NOTEHEAD', + 119128 : 'MUSICAL SYMBOL NOTEHEAD BLACK', + 119129 : 'MUSICAL SYMBOL NULL NOTEHEAD', + 119130 : 'MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE', + 119131 : 'MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK', + 119132 : 'MUSICAL SYMBOL BREVE', + 119133 : 'MUSICAL SYMBOL WHOLE NOTE', + 119134 : 'MUSICAL SYMBOL HALF NOTE', + 119135 : 'MUSICAL SYMBOL QUARTER NOTE', + 119136 : 'MUSICAL SYMBOL EIGHTH NOTE', + 119137 : 'MUSICAL SYMBOL SIXTEENTH NOTE', + 119138 : 'MUSICAL SYMBOL THIRTY-SECOND NOTE', + 119139 : 'MUSICAL SYMBOL SIXTY-FOURTH NOTE', + 119140 : 'MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE', + 119141 : 'MUSICAL SYMBOL COMBINING STEM', + 119142 : 'MUSICAL SYMBOL COMBINING SPRECHGESANG STEM', + 119143 : 'MUSICAL SYMBOL COMBINING TREMOLO-1', + 119144 : 'MUSICAL SYMBOL COMBINING TREMOLO-2', + 119145 : 'MUSICAL SYMBOL COMBINING TREMOLO-3', + 119146 : 'MUSICAL SYMBOL FINGERED TREMOLO-1', + 119147 : 'MUSICAL SYMBOL FINGERED TREMOLO-2', + 119148 : 'MUSICAL SYMBOL FINGERED TREMOLO-3', + 119149 : 'MUSICAL SYMBOL COMBINING AUGMENTATION DOT', + 119150 : 'MUSICAL SYMBOL COMBINING FLAG-1', + 119151 : 'MUSICAL SYMBOL COMBINING FLAG-2', + 119152 : 'MUSICAL SYMBOL COMBINING FLAG-3', + 119153 : 'MUSICAL SYMBOL COMBINING FLAG-4', + 119154 : 'MUSICAL SYMBOL COMBINING FLAG-5', + 119155 : 'MUSICAL SYMBOL BEGIN BEAM', + 119156 : 'MUSICAL SYMBOL END BEAM', + 119157 : 'MUSICAL SYMBOL BEGIN TIE', + 119158 : 'MUSICAL SYMBOL END TIE', + 119159 : 'MUSICAL SYMBOL BEGIN SLUR', + 119160 : 'MUSICAL SYMBOL END SLUR', + 119161 : 'MUSICAL SYMBOL BEGIN PHRASE', + 119162 : 'MUSICAL SYMBOL END PHRASE', + 119163 : 'MUSICAL SYMBOL COMBINING ACCENT', + 119164 : 'MUSICAL SYMBOL COMBINING STACCATO', + 119165 : 'MUSICAL SYMBOL COMBINING TENUTO', + 119166 : 'MUSICAL SYMBOL COMBINING STACCATISSIMO', + 119167 : 'MUSICAL SYMBOL COMBINING MARCATO', + 119168 : 'MUSICAL SYMBOL COMBINING MARCATO-STACCATO', + 119169 : 'MUSICAL SYMBOL COMBINING ACCENT-STACCATO', + 119170 : 'MUSICAL SYMBOL COMBINING LOURE', + 119171 : 'MUSICAL SYMBOL ARPEGGIATO UP', + 119172 : 'MUSICAL SYMBOL ARPEGGIATO DOWN', + 119173 : 'MUSICAL SYMBOL COMBINING DOIT', + 119174 : 'MUSICAL SYMBOL COMBINING RIP', + 119175 : 'MUSICAL SYMBOL COMBINING FLIP', + 119176 : 'MUSICAL SYMBOL COMBINING SMEAR', + 119177 : 'MUSICAL SYMBOL COMBINING BEND', + 119178 : 'MUSICAL SYMBOL COMBINING DOUBLE TONGUE', + 119179 : 'MUSICAL SYMBOL COMBINING TRIPLE TONGUE', + 119180 : 'MUSICAL SYMBOL RINFORZANDO', + 119181 : 'MUSICAL SYMBOL SUBITO', + 119182 : 'MUSICAL SYMBOL Z', + 119183 : 'MUSICAL SYMBOL PIANO', + 119184 : 'MUSICAL SYMBOL MEZZO', + 119185 : 'MUSICAL SYMBOL FORTE', + 119186 : 'MUSICAL SYMBOL CRESCENDO', + 119187 : 'MUSICAL SYMBOL DECRESCENDO', + 119188 : 'MUSICAL SYMBOL GRACE NOTE SLASH', + 119189 : 'MUSICAL SYMBOL GRACE NOTE NO SLASH', + 119190 : 'MUSICAL SYMBOL TR', + 119191 : 'MUSICAL SYMBOL TURN', + 119192 : 'MUSICAL SYMBOL INVERTED TURN', + 119193 : 'MUSICAL SYMBOL TURN SLASH', + 119194 : 'MUSICAL SYMBOL TURN UP', + 119195 : 'MUSICAL SYMBOL ORNAMENT STROKE-1', + 119196 : 'MUSICAL SYMBOL ORNAMENT STROKE-2', + 119197 : 'MUSICAL SYMBOL ORNAMENT STROKE-3', + 119198 : 'MUSICAL SYMBOL ORNAMENT STROKE-4', + 119199 : 'MUSICAL SYMBOL ORNAMENT STROKE-5', + 119200 : 'MUSICAL SYMBOL ORNAMENT STROKE-6', + 119201 : 'MUSICAL SYMBOL ORNAMENT STROKE-7', + 119202 : 'MUSICAL SYMBOL ORNAMENT STROKE-8', + 119203 : 'MUSICAL SYMBOL ORNAMENT STROKE-9', + 119204 : 'MUSICAL SYMBOL ORNAMENT STROKE-10', + 119205 : 'MUSICAL SYMBOL ORNAMENT STROKE-11', + 119206 : 'MUSICAL SYMBOL HAUPTSTIMME', + 119207 : 'MUSICAL SYMBOL NEBENSTIMME', + 119208 : 'MUSICAL SYMBOL END OF STIMME', + 119209 : 'MUSICAL SYMBOL DEGREE SLASH', + 119210 : 'MUSICAL SYMBOL COMBINING DOWN BOW', + 119211 : 'MUSICAL SYMBOL COMBINING UP BOW', + 119212 : 'MUSICAL SYMBOL COMBINING HARMONIC', + 119213 : 'MUSICAL SYMBOL COMBINING SNAP PIZZICATO', + 119214 : 'MUSICAL SYMBOL PEDAL MARK', + 119215 : 'MUSICAL SYMBOL PEDAL UP MARK', + 119216 : 'MUSICAL SYMBOL HALF PEDAL MARK', + 119217 : 'MUSICAL SYMBOL GLISSANDO UP', + 119218 : 'MUSICAL SYMBOL GLISSANDO DOWN', + 119219 : 'MUSICAL SYMBOL WITH FINGERNAILS', + 119220 : 'MUSICAL SYMBOL DAMP', + 119221 : 'MUSICAL SYMBOL DAMP ALL', + 119222 : 'MUSICAL SYMBOL MAXIMA', + 119223 : 'MUSICAL SYMBOL LONGA', + 119224 : 'MUSICAL SYMBOL BREVIS', + 119225 : 'MUSICAL SYMBOL SEMIBREVIS WHITE', + 119226 : 'MUSICAL SYMBOL SEMIBREVIS BLACK', + 119227 : 'MUSICAL SYMBOL MINIMA', + 119228 : 'MUSICAL SYMBOL MINIMA BLACK', + 119229 : 'MUSICAL SYMBOL SEMIMINIMA WHITE', + 119230 : 'MUSICAL SYMBOL SEMIMINIMA BLACK', + 119231 : 'MUSICAL SYMBOL FUSA WHITE', + 119232 : 'MUSICAL SYMBOL FUSA BLACK', + 119233 : 'MUSICAL SYMBOL LONGA PERFECTA REST', + 119234 : 'MUSICAL SYMBOL LONGA IMPERFECTA REST', + 119235 : 'MUSICAL SYMBOL BREVIS REST', + 119236 : 'MUSICAL SYMBOL SEMIBREVIS REST', + 119237 : 'MUSICAL SYMBOL MINIMA REST', + 119238 : 'MUSICAL SYMBOL SEMIMINIMA REST', + 119239 : 'MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA', + 119240 : 'MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA', + 119241 : 'MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1', + 119242 : 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA', + 119243 : 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA', + 119244 : 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1', + 119245 : 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2', + 119246 : 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3', + 119247 : 'MUSICAL SYMBOL CROIX', + 119248 : 'MUSICAL SYMBOL GREGORIAN C CLEF', + 119249 : 'MUSICAL SYMBOL GREGORIAN F CLEF', + 119250 : 'MUSICAL SYMBOL SQUARE B', + 119251 : 'MUSICAL SYMBOL VIRGA', + 119252 : 'MUSICAL SYMBOL PODATUS', + 119253 : 'MUSICAL SYMBOL CLIVIS', + 119254 : 'MUSICAL SYMBOL SCANDICUS', + 119255 : 'MUSICAL SYMBOL CLIMACUS', + 119256 : 'MUSICAL SYMBOL TORCULUS', + 119257 : 'MUSICAL SYMBOL PORRECTUS', + 119258 : 'MUSICAL SYMBOL PORRECTUS FLEXUS', + 119259 : 'MUSICAL SYMBOL SCANDICUS FLEXUS', + 119260 : 'MUSICAL SYMBOL TORCULUS RESUPINUS', + 119261 : 'MUSICAL SYMBOL PES SUBPUNCTIS', + 119808 : 'MATHEMATICAL BOLD CAPITAL A', + 119809 : 'MATHEMATICAL BOLD CAPITAL B', + 119810 : 'MATHEMATICAL BOLD CAPITAL C', + 119811 : 'MATHEMATICAL BOLD CAPITAL D', + 119812 : 'MATHEMATICAL BOLD CAPITAL E', + 119813 : 'MATHEMATICAL BOLD CAPITAL F', + 119814 : 'MATHEMATICAL BOLD CAPITAL G', + 119815 : 'MATHEMATICAL BOLD CAPITAL H', + 119816 : 'MATHEMATICAL BOLD CAPITAL I', + 119817 : 'MATHEMATICAL BOLD CAPITAL J', + 119818 : 'MATHEMATICAL BOLD CAPITAL K', + 119819 : 'MATHEMATICAL BOLD CAPITAL L', + 119820 : 'MATHEMATICAL BOLD CAPITAL M', + 119821 : 'MATHEMATICAL BOLD CAPITAL N', + 119822 : 'MATHEMATICAL BOLD CAPITAL O', + 119823 : 'MATHEMATICAL BOLD CAPITAL P', + 119824 : 'MATHEMATICAL BOLD CAPITAL Q', + 119825 : 'MATHEMATICAL BOLD CAPITAL R', + 119826 : 'MATHEMATICAL BOLD CAPITAL S', + 119827 : 'MATHEMATICAL BOLD CAPITAL T', + 119828 : 'MATHEMATICAL BOLD CAPITAL U', + 119829 : 'MATHEMATICAL BOLD CAPITAL V', + 119830 : 'MATHEMATICAL BOLD CAPITAL W', + 119831 : 'MATHEMATICAL BOLD CAPITAL X', + 119832 : 'MATHEMATICAL BOLD CAPITAL Y', + 119833 : 'MATHEMATICAL BOLD CAPITAL Z', + 119834 : 'MATHEMATICAL BOLD SMALL A', + 119835 : 'MATHEMATICAL BOLD SMALL B', + 119836 : 'MATHEMATICAL BOLD SMALL C', + 119837 : 'MATHEMATICAL BOLD SMALL D', + 119838 : 'MATHEMATICAL BOLD SMALL E', + 119839 : 'MATHEMATICAL BOLD SMALL F', + 119840 : 'MATHEMATICAL BOLD SMALL G', + 119841 : 'MATHEMATICAL BOLD SMALL H', + 119842 : 'MATHEMATICAL BOLD SMALL I', + 119843 : 'MATHEMATICAL BOLD SMALL J', + 119844 : 'MATHEMATICAL BOLD SMALL K', + 119845 : 'MATHEMATICAL BOLD SMALL L', + 119846 : 'MATHEMATICAL BOLD SMALL M', + 119847 : 'MATHEMATICAL BOLD SMALL N', + 119848 : 'MATHEMATICAL BOLD SMALL O', + 119849 : 'MATHEMATICAL BOLD SMALL P', + 119850 : 'MATHEMATICAL BOLD SMALL Q', + 119851 : 'MATHEMATICAL BOLD SMALL R', + 119852 : 'MATHEMATICAL BOLD SMALL S', + 119853 : 'MATHEMATICAL BOLD SMALL T', + 119854 : 'MATHEMATICAL BOLD SMALL U', + 119855 : 'MATHEMATICAL BOLD SMALL V', + 119856 : 'MATHEMATICAL BOLD SMALL W', + 119857 : 'MATHEMATICAL BOLD SMALL X', + 119858 : 'MATHEMATICAL BOLD SMALL Y', + 119859 : 'MATHEMATICAL BOLD SMALL Z', + 119860 : 'MATHEMATICAL ITALIC CAPITAL A', + 119861 : 'MATHEMATICAL ITALIC CAPITAL B', + 119862 : 'MATHEMATICAL ITALIC CAPITAL C', + 119863 : 'MATHEMATICAL ITALIC CAPITAL D', + 119864 : 'MATHEMATICAL ITALIC CAPITAL E', + 119865 : 'MATHEMATICAL ITALIC CAPITAL F', + 119866 : 'MATHEMATICAL ITALIC CAPITAL G', + 119867 : 'MATHEMATICAL ITALIC CAPITAL H', + 119868 : 'MATHEMATICAL ITALIC CAPITAL I', + 119869 : 'MATHEMATICAL ITALIC CAPITAL J', + 119870 : 'MATHEMATICAL ITALIC CAPITAL K', + 119871 : 'MATHEMATICAL ITALIC CAPITAL L', + 119872 : 'MATHEMATICAL ITALIC CAPITAL M', + 119873 : 'MATHEMATICAL ITALIC CAPITAL N', + 119874 : 'MATHEMATICAL ITALIC CAPITAL O', + 119875 : 'MATHEMATICAL ITALIC CAPITAL P', + 119876 : 'MATHEMATICAL ITALIC CAPITAL Q', + 119877 : 'MATHEMATICAL ITALIC CAPITAL R', + 119878 : 'MATHEMATICAL ITALIC CAPITAL S', + 119879 : 'MATHEMATICAL ITALIC CAPITAL T', + 119880 : 'MATHEMATICAL ITALIC CAPITAL U', + 119881 : 'MATHEMATICAL ITALIC CAPITAL V', + 119882 : 'MATHEMATICAL ITALIC CAPITAL W', + 119883 : 'MATHEMATICAL ITALIC CAPITAL X', + 119884 : 'MATHEMATICAL ITALIC CAPITAL Y', + 119885 : 'MATHEMATICAL ITALIC CAPITAL Z', + 119886 : 'MATHEMATICAL ITALIC SMALL A', + 119887 : 'MATHEMATICAL ITALIC SMALL B', + 119888 : 'MATHEMATICAL ITALIC SMALL C', + 119889 : 'MATHEMATICAL ITALIC SMALL D', + 119890 : 'MATHEMATICAL ITALIC SMALL E', + 119891 : 'MATHEMATICAL ITALIC SMALL F', + 119892 : 'MATHEMATICAL ITALIC SMALL G', + 119894 : 'MATHEMATICAL ITALIC SMALL I', + 119895 : 'MATHEMATICAL ITALIC SMALL J', + 119896 : 'MATHEMATICAL ITALIC SMALL K', + 119897 : 'MATHEMATICAL ITALIC SMALL L', + 119898 : 'MATHEMATICAL ITALIC SMALL M', + 119899 : 'MATHEMATICAL ITALIC SMALL N', + 119900 : 'MATHEMATICAL ITALIC SMALL O', + 119901 : 'MATHEMATICAL ITALIC SMALL P', + 119902 : 'MATHEMATICAL ITALIC SMALL Q', + 119903 : 'MATHEMATICAL ITALIC SMALL R', + 119904 : 'MATHEMATICAL ITALIC SMALL S', + 119905 : 'MATHEMATICAL ITALIC SMALL T', + 119906 : 'MATHEMATICAL ITALIC SMALL U', + 119907 : 'MATHEMATICAL ITALIC SMALL V', + 119908 : 'MATHEMATICAL ITALIC SMALL W', + 119909 : 'MATHEMATICAL ITALIC SMALL X', + 119910 : 'MATHEMATICAL ITALIC SMALL Y', + 119911 : 'MATHEMATICAL ITALIC SMALL Z', + 119912 : 'MATHEMATICAL BOLD ITALIC CAPITAL A', + 119913 : 'MATHEMATICAL BOLD ITALIC CAPITAL B', + 119914 : 'MATHEMATICAL BOLD ITALIC CAPITAL C', + 119915 : 'MATHEMATICAL BOLD ITALIC CAPITAL D', + 119916 : 'MATHEMATICAL BOLD ITALIC CAPITAL E', + 119917 : 'MATHEMATICAL BOLD ITALIC CAPITAL F', + 119918 : 'MATHEMATICAL BOLD ITALIC CAPITAL G', + 119919 : 'MATHEMATICAL BOLD ITALIC CAPITAL H', + 119920 : 'MATHEMATICAL BOLD ITALIC CAPITAL I', + 119921 : 'MATHEMATICAL BOLD ITALIC CAPITAL J', + 119922 : 'MATHEMATICAL BOLD ITALIC CAPITAL K', + 119923 : 'MATHEMATICAL BOLD ITALIC CAPITAL L', + 119924 : 'MATHEMATICAL BOLD ITALIC CAPITAL M', + 119925 : 'MATHEMATICAL BOLD ITALIC CAPITAL N', + 119926 : 'MATHEMATICAL BOLD ITALIC CAPITAL O', + 119927 : 'MATHEMATICAL BOLD ITALIC CAPITAL P', + 119928 : 'MATHEMATICAL BOLD ITALIC CAPITAL Q', + 119929 : 'MATHEMATICAL BOLD ITALIC CAPITAL R', + 119930 : 'MATHEMATICAL BOLD ITALIC CAPITAL S', + 119931 : 'MATHEMATICAL BOLD ITALIC CAPITAL T', + 119932 : 'MATHEMATICAL BOLD ITALIC CAPITAL U', + 119933 : 'MATHEMATICAL BOLD ITALIC CAPITAL V', + 119934 : 'MATHEMATICAL BOLD ITALIC CAPITAL W', + 119935 : 'MATHEMATICAL BOLD ITALIC CAPITAL X', + 119936 : 'MATHEMATICAL BOLD ITALIC CAPITAL Y', + 119937 : 'MATHEMATICAL BOLD ITALIC CAPITAL Z', + 119938 : 'MATHEMATICAL BOLD ITALIC SMALL A', + 119939 : 'MATHEMATICAL BOLD ITALIC SMALL B', + 119940 : 'MATHEMATICAL BOLD ITALIC SMALL C', + 119941 : 'MATHEMATICAL BOLD ITALIC SMALL D', + 119942 : 'MATHEMATICAL BOLD ITALIC SMALL E', + 119943 : 'MATHEMATICAL BOLD ITALIC SMALL F', + 119944 : 'MATHEMATICAL BOLD ITALIC SMALL G', + 119945 : 'MATHEMATICAL BOLD ITALIC SMALL H', + 119946 : 'MATHEMATICAL BOLD ITALIC SMALL I', + 119947 : 'MATHEMATICAL BOLD ITALIC SMALL J', + 119948 : 'MATHEMATICAL BOLD ITALIC SMALL K', + 119949 : 'MATHEMATICAL BOLD ITALIC SMALL L', + 119950 : 'MATHEMATICAL BOLD ITALIC SMALL M', + 119951 : 'MATHEMATICAL BOLD ITALIC SMALL N', + 119952 : 'MATHEMATICAL BOLD ITALIC SMALL O', + 119953 : 'MATHEMATICAL BOLD ITALIC SMALL P', + 119954 : 'MATHEMATICAL BOLD ITALIC SMALL Q', + 119955 : 'MATHEMATICAL BOLD ITALIC SMALL R', + 119956 : 'MATHEMATICAL BOLD ITALIC SMALL S', + 119957 : 'MATHEMATICAL BOLD ITALIC SMALL T', + 119958 : 'MATHEMATICAL BOLD ITALIC SMALL U', + 119959 : 'MATHEMATICAL BOLD ITALIC SMALL V', + 119960 : 'MATHEMATICAL BOLD ITALIC SMALL W', + 119961 : 'MATHEMATICAL BOLD ITALIC SMALL X', + 119962 : 'MATHEMATICAL BOLD ITALIC SMALL Y', + 119963 : 'MATHEMATICAL BOLD ITALIC SMALL Z', + 119964 : 'MATHEMATICAL SCRIPT CAPITAL A', + 119966 : 'MATHEMATICAL SCRIPT CAPITAL C', + 119967 : 'MATHEMATICAL SCRIPT CAPITAL D', + 119970 : 'MATHEMATICAL SCRIPT CAPITAL G', + 119973 : 'MATHEMATICAL SCRIPT CAPITAL J', + 119974 : 'MATHEMATICAL SCRIPT CAPITAL K', + 119977 : 'MATHEMATICAL SCRIPT CAPITAL N', + 119978 : 'MATHEMATICAL SCRIPT CAPITAL O', + 119979 : 'MATHEMATICAL SCRIPT CAPITAL P', + 119980 : 'MATHEMATICAL SCRIPT CAPITAL Q', + 119982 : 'MATHEMATICAL SCRIPT CAPITAL S', + 119983 : 'MATHEMATICAL SCRIPT CAPITAL T', + 119984 : 'MATHEMATICAL SCRIPT CAPITAL U', + 119985 : 'MATHEMATICAL SCRIPT CAPITAL V', + 119986 : 'MATHEMATICAL SCRIPT CAPITAL W', + 119987 : 'MATHEMATICAL SCRIPT CAPITAL X', + 119988 : 'MATHEMATICAL SCRIPT CAPITAL Y', + 119989 : 'MATHEMATICAL SCRIPT CAPITAL Z', + 119990 : 'MATHEMATICAL SCRIPT SMALL A', + 119991 : 'MATHEMATICAL SCRIPT SMALL B', + 119992 : 'MATHEMATICAL SCRIPT SMALL C', + 119993 : 'MATHEMATICAL SCRIPT SMALL D', + 119995 : 'MATHEMATICAL SCRIPT SMALL F', + 119997 : 'MATHEMATICAL SCRIPT SMALL H', + 119998 : 'MATHEMATICAL SCRIPT SMALL I', + 119999 : 'MATHEMATICAL SCRIPT SMALL J', + 120000 : 'MATHEMATICAL SCRIPT SMALL K', + 120002 : 'MATHEMATICAL SCRIPT SMALL M', + 120003 : 'MATHEMATICAL SCRIPT SMALL N', + 120005 : 'MATHEMATICAL SCRIPT SMALL P', + 120006 : 'MATHEMATICAL SCRIPT SMALL Q', + 120007 : 'MATHEMATICAL SCRIPT SMALL R', + 120008 : 'MATHEMATICAL SCRIPT SMALL S', + 120009 : 'MATHEMATICAL SCRIPT SMALL T', + 120010 : 'MATHEMATICAL SCRIPT SMALL U', + 120011 : 'MATHEMATICAL SCRIPT SMALL V', + 120012 : 'MATHEMATICAL SCRIPT SMALL W', + 120013 : 'MATHEMATICAL SCRIPT SMALL X', + 120014 : 'MATHEMATICAL SCRIPT SMALL Y', + 120015 : 'MATHEMATICAL SCRIPT SMALL Z', + 120016 : 'MATHEMATICAL BOLD SCRIPT CAPITAL A', + 120017 : 'MATHEMATICAL BOLD SCRIPT CAPITAL B', + 120018 : 'MATHEMATICAL BOLD SCRIPT CAPITAL C', + 120019 : 'MATHEMATICAL BOLD SCRIPT CAPITAL D', + 120020 : 'MATHEMATICAL BOLD SCRIPT CAPITAL E', + 120021 : 'MATHEMATICAL BOLD SCRIPT CAPITAL F', + 120022 : 'MATHEMATICAL BOLD SCRIPT CAPITAL G', + 120023 : 'MATHEMATICAL BOLD SCRIPT CAPITAL H', + 120024 : 'MATHEMATICAL BOLD SCRIPT CAPITAL I', + 120025 : 'MATHEMATICAL BOLD SCRIPT CAPITAL J', + 120026 : 'MATHEMATICAL BOLD SCRIPT CAPITAL K', + 120027 : 'MATHEMATICAL BOLD SCRIPT CAPITAL L', + 120028 : 'MATHEMATICAL BOLD SCRIPT CAPITAL M', + 120029 : 'MATHEMATICAL BOLD SCRIPT CAPITAL N', + 120030 : 'MATHEMATICAL BOLD SCRIPT CAPITAL O', + 120031 : 'MATHEMATICAL BOLD SCRIPT CAPITAL P', + 120032 : 'MATHEMATICAL BOLD SCRIPT CAPITAL Q', + 120033 : 'MATHEMATICAL BOLD SCRIPT CAPITAL R', + 120034 : 'MATHEMATICAL BOLD SCRIPT CAPITAL S', + 120035 : 'MATHEMATICAL BOLD SCRIPT CAPITAL T', + 120036 : 'MATHEMATICAL BOLD SCRIPT CAPITAL U', + 120037 : 'MATHEMATICAL BOLD SCRIPT CAPITAL V', + 120038 : 'MATHEMATICAL BOLD SCRIPT CAPITAL W', + 120039 : 'MATHEMATICAL BOLD SCRIPT CAPITAL X', + 120040 : 'MATHEMATICAL BOLD SCRIPT CAPITAL Y', + 120041 : 'MATHEMATICAL BOLD SCRIPT CAPITAL Z', + 120042 : 'MATHEMATICAL BOLD SCRIPT SMALL A', + 120043 : 'MATHEMATICAL BOLD SCRIPT SMALL B', + 120044 : 'MATHEMATICAL BOLD SCRIPT SMALL C', + 120045 : 'MATHEMATICAL BOLD SCRIPT SMALL D', + 120046 : 'MATHEMATICAL BOLD SCRIPT SMALL E', + 120047 : 'MATHEMATICAL BOLD SCRIPT SMALL F', + 120048 : 'MATHEMATICAL BOLD SCRIPT SMALL G', + 120049 : 'MATHEMATICAL BOLD SCRIPT SMALL H', + 120050 : 'MATHEMATICAL BOLD SCRIPT SMALL I', + 120051 : 'MATHEMATICAL BOLD SCRIPT SMALL J', + 120052 : 'MATHEMATICAL BOLD SCRIPT SMALL K', + 120053 : 'MATHEMATICAL BOLD SCRIPT SMALL L', + 120054 : 'MATHEMATICAL BOLD SCRIPT SMALL M', + 120055 : 'MATHEMATICAL BOLD SCRIPT SMALL N', + 120056 : 'MATHEMATICAL BOLD SCRIPT SMALL O', + 120057 : 'MATHEMATICAL BOLD SCRIPT SMALL P', + 120058 : 'MATHEMATICAL BOLD SCRIPT SMALL Q', + 120059 : 'MATHEMATICAL BOLD SCRIPT SMALL R', + 120060 : 'MATHEMATICAL BOLD SCRIPT SMALL S', + 120061 : 'MATHEMATICAL BOLD SCRIPT SMALL T', + 120062 : 'MATHEMATICAL BOLD SCRIPT SMALL U', + 120063 : 'MATHEMATICAL BOLD SCRIPT SMALL V', + 120064 : 'MATHEMATICAL BOLD SCRIPT SMALL W', + 120065 : 'MATHEMATICAL BOLD SCRIPT SMALL X', + 120066 : 'MATHEMATICAL BOLD SCRIPT SMALL Y', + 120067 : 'MATHEMATICAL BOLD SCRIPT SMALL Z', + 120068 : 'MATHEMATICAL FRAKTUR CAPITAL A', + 120069 : 'MATHEMATICAL FRAKTUR CAPITAL B', + 120071 : 'MATHEMATICAL FRAKTUR CAPITAL D', + 120072 : 'MATHEMATICAL FRAKTUR CAPITAL E', + 120073 : 'MATHEMATICAL FRAKTUR CAPITAL F', + 120074 : 'MATHEMATICAL FRAKTUR CAPITAL G', + 120077 : 'MATHEMATICAL FRAKTUR CAPITAL J', + 120078 : 'MATHEMATICAL FRAKTUR CAPITAL K', + 120079 : 'MATHEMATICAL FRAKTUR CAPITAL L', + 120080 : 'MATHEMATICAL FRAKTUR CAPITAL M', + 120081 : 'MATHEMATICAL FRAKTUR CAPITAL N', + 120082 : 'MATHEMATICAL FRAKTUR CAPITAL O', + 120083 : 'MATHEMATICAL FRAKTUR CAPITAL P', + 120084 : 'MATHEMATICAL FRAKTUR CAPITAL Q', + 120086 : 'MATHEMATICAL FRAKTUR CAPITAL S', + 120087 : 'MATHEMATICAL FRAKTUR CAPITAL T', + 120088 : 'MATHEMATICAL FRAKTUR CAPITAL U', + 120089 : 'MATHEMATICAL FRAKTUR CAPITAL V', + 120090 : 'MATHEMATICAL FRAKTUR CAPITAL W', + 120091 : 'MATHEMATICAL FRAKTUR CAPITAL X', + 120092 : 'MATHEMATICAL FRAKTUR CAPITAL Y', + 120094 : 'MATHEMATICAL FRAKTUR SMALL A', + 120095 : 'MATHEMATICAL FRAKTUR SMALL B', + 120096 : 'MATHEMATICAL FRAKTUR SMALL C', + 120097 : 'MATHEMATICAL FRAKTUR SMALL D', + 120098 : 'MATHEMATICAL FRAKTUR SMALL E', + 120099 : 'MATHEMATICAL FRAKTUR SMALL F', + 120100 : 'MATHEMATICAL FRAKTUR SMALL G', + 120101 : 'MATHEMATICAL FRAKTUR SMALL H', + 120102 : 'MATHEMATICAL FRAKTUR SMALL I', + 120103 : 'MATHEMATICAL FRAKTUR SMALL J', + 120104 : 'MATHEMATICAL FRAKTUR SMALL K', + 120105 : 'MATHEMATICAL FRAKTUR SMALL L', + 120106 : 'MATHEMATICAL FRAKTUR SMALL M', + 120107 : 'MATHEMATICAL FRAKTUR SMALL N', + 120108 : 'MATHEMATICAL FRAKTUR SMALL O', + 120109 : 'MATHEMATICAL FRAKTUR SMALL P', + 120110 : 'MATHEMATICAL FRAKTUR SMALL Q', + 120111 : 'MATHEMATICAL FRAKTUR SMALL R', + 120112 : 'MATHEMATICAL FRAKTUR SMALL S', + 120113 : 'MATHEMATICAL FRAKTUR SMALL T', + 120114 : 'MATHEMATICAL FRAKTUR SMALL U', + 120115 : 'MATHEMATICAL FRAKTUR SMALL V', + 120116 : 'MATHEMATICAL FRAKTUR SMALL W', + 120117 : 'MATHEMATICAL FRAKTUR SMALL X', + 120118 : 'MATHEMATICAL FRAKTUR SMALL Y', + 120119 : 'MATHEMATICAL FRAKTUR SMALL Z', + 120120 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL A', + 120121 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL B', + 120123 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL D', + 120124 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL E', + 120125 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL F', + 120126 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL G', + 120128 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL I', + 120129 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL J', + 120130 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL K', + 120131 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL L', + 120132 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL M', + 120134 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL O', + 120138 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL S', + 120139 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL T', + 120140 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL U', + 120141 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL V', + 120142 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL W', + 120143 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL X', + 120144 : 'MATHEMATICAL DOUBLE-STRUCK CAPITAL Y', + 120146 : 'MATHEMATICAL DOUBLE-STRUCK SMALL A', + 120147 : 'MATHEMATICAL DOUBLE-STRUCK SMALL B', + 120148 : 'MATHEMATICAL DOUBLE-STRUCK SMALL C', + 120149 : 'MATHEMATICAL DOUBLE-STRUCK SMALL D', + 120150 : 'MATHEMATICAL DOUBLE-STRUCK SMALL E', + 120151 : 'MATHEMATICAL DOUBLE-STRUCK SMALL F', + 120152 : 'MATHEMATICAL DOUBLE-STRUCK SMALL G', + 120153 : 'MATHEMATICAL DOUBLE-STRUCK SMALL H', + 120154 : 'MATHEMATICAL DOUBLE-STRUCK SMALL I', + 120155 : 'MATHEMATICAL DOUBLE-STRUCK SMALL J', + 120156 : 'MATHEMATICAL DOUBLE-STRUCK SMALL K', + 120157 : 'MATHEMATICAL DOUBLE-STRUCK SMALL L', + 120158 : 'MATHEMATICAL DOUBLE-STRUCK SMALL M', + 120159 : 'MATHEMATICAL DOUBLE-STRUCK SMALL N', + 120160 : 'MATHEMATICAL DOUBLE-STRUCK SMALL O', + 120161 : 'MATHEMATICAL DOUBLE-STRUCK SMALL P', + 120162 : 'MATHEMATICAL DOUBLE-STRUCK SMALL Q', + 120163 : 'MATHEMATICAL DOUBLE-STRUCK SMALL R', + 120164 : 'MATHEMATICAL DOUBLE-STRUCK SMALL S', + 120165 : 'MATHEMATICAL DOUBLE-STRUCK SMALL T', + 120166 : 'MATHEMATICAL DOUBLE-STRUCK SMALL U', + 120167 : 'MATHEMATICAL DOUBLE-STRUCK SMALL V', + 120168 : 'MATHEMATICAL DOUBLE-STRUCK SMALL W', + 120169 : 'MATHEMATICAL DOUBLE-STRUCK SMALL X', + 120170 : 'MATHEMATICAL DOUBLE-STRUCK SMALL Y', + 120171 : 'MATHEMATICAL DOUBLE-STRUCK SMALL Z', + 120172 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL A', + 120173 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL B', + 120174 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL C', + 120175 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL D', + 120176 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL E', + 120177 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL F', + 120178 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL G', + 120179 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL H', + 120180 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL I', + 120181 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL J', + 120182 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL K', + 120183 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL L', + 120184 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL M', + 120185 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL N', + 120186 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL O', + 120187 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL P', + 120188 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL Q', + 120189 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL R', + 120190 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL S', + 120191 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL T', + 120192 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL U', + 120193 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL V', + 120194 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL W', + 120195 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL X', + 120196 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL Y', + 120197 : 'MATHEMATICAL BOLD FRAKTUR CAPITAL Z', + 120198 : 'MATHEMATICAL BOLD FRAKTUR SMALL A', + 120199 : 'MATHEMATICAL BOLD FRAKTUR SMALL B', + 120200 : 'MATHEMATICAL BOLD FRAKTUR SMALL C', + 120201 : 'MATHEMATICAL BOLD FRAKTUR SMALL D', + 120202 : 'MATHEMATICAL BOLD FRAKTUR SMALL E', + 120203 : 'MATHEMATICAL BOLD FRAKTUR SMALL F', + 120204 : 'MATHEMATICAL BOLD FRAKTUR SMALL G', + 120205 : 'MATHEMATICAL BOLD FRAKTUR SMALL H', + 120206 : 'MATHEMATICAL BOLD FRAKTUR SMALL I', + 120207 : 'MATHEMATICAL BOLD FRAKTUR SMALL J', + 120208 : 'MATHEMATICAL BOLD FRAKTUR SMALL K', + 120209 : 'MATHEMATICAL BOLD FRAKTUR SMALL L', + 120210 : 'MATHEMATICAL BOLD FRAKTUR SMALL M', + 120211 : 'MATHEMATICAL BOLD FRAKTUR SMALL N', + 120212 : 'MATHEMATICAL BOLD FRAKTUR SMALL O', + 120213 : 'MATHEMATICAL BOLD FRAKTUR SMALL P', + 120214 : 'MATHEMATICAL BOLD FRAKTUR SMALL Q', + 120215 : 'MATHEMATICAL BOLD FRAKTUR SMALL R', + 120216 : 'MATHEMATICAL BOLD FRAKTUR SMALL S', + 120217 : 'MATHEMATICAL BOLD FRAKTUR SMALL T', + 120218 : 'MATHEMATICAL BOLD FRAKTUR SMALL U', + 120219 : 'MATHEMATICAL BOLD FRAKTUR SMALL V', + 120220 : 'MATHEMATICAL BOLD FRAKTUR SMALL W', + 120221 : 'MATHEMATICAL BOLD FRAKTUR SMALL X', + 120222 : 'MATHEMATICAL BOLD FRAKTUR SMALL Y', + 120223 : 'MATHEMATICAL BOLD FRAKTUR SMALL Z', + 120224 : 'MATHEMATICAL SANS-SERIF CAPITAL A', + 120225 : 'MATHEMATICAL SANS-SERIF CAPITAL B', + 120226 : 'MATHEMATICAL SANS-SERIF CAPITAL C', + 120227 : 'MATHEMATICAL SANS-SERIF CAPITAL D', + 120228 : 'MATHEMATICAL SANS-SERIF CAPITAL E', + 120229 : 'MATHEMATICAL SANS-SERIF CAPITAL F', + 120230 : 'MATHEMATICAL SANS-SERIF CAPITAL G', + 120231 : 'MATHEMATICAL SANS-SERIF CAPITAL H', + 120232 : 'MATHEMATICAL SANS-SERIF CAPITAL I', + 120233 : 'MATHEMATICAL SANS-SERIF CAPITAL J', + 120234 : 'MATHEMATICAL SANS-SERIF CAPITAL K', + 120235 : 'MATHEMATICAL SANS-SERIF CAPITAL L', + 120236 : 'MATHEMATICAL SANS-SERIF CAPITAL M', + 120237 : 'MATHEMATICAL SANS-SERIF CAPITAL N', + 120238 : 'MATHEMATICAL SANS-SERIF CAPITAL O', + 120239 : 'MATHEMATICAL SANS-SERIF CAPITAL P', + 120240 : 'MATHEMATICAL SANS-SERIF CAPITAL Q', + 120241 : 'MATHEMATICAL SANS-SERIF CAPITAL R', + 120242 : 'MATHEMATICAL SANS-SERIF CAPITAL S', + 120243 : 'MATHEMATICAL SANS-SERIF CAPITAL T', + 120244 : 'MATHEMATICAL SANS-SERIF CAPITAL U', + 120245 : 'MATHEMATICAL SANS-SERIF CAPITAL V', + 120246 : 'MATHEMATICAL SANS-SERIF CAPITAL W', + 120247 : 'MATHEMATICAL SANS-SERIF CAPITAL X', + 120248 : 'MATHEMATICAL SANS-SERIF CAPITAL Y', + 120249 : 'MATHEMATICAL SANS-SERIF CAPITAL Z', + 120250 : 'MATHEMATICAL SANS-SERIF SMALL A', + 120251 : 'MATHEMATICAL SANS-SERIF SMALL B', + 120252 : 'MATHEMATICAL SANS-SERIF SMALL C', + 120253 : 'MATHEMATICAL SANS-SERIF SMALL D', + 120254 : 'MATHEMATICAL SANS-SERIF SMALL E', + 120255 : 'MATHEMATICAL SANS-SERIF SMALL F', + 120256 : 'MATHEMATICAL SANS-SERIF SMALL G', + 120257 : 'MATHEMATICAL SANS-SERIF SMALL H', + 120258 : 'MATHEMATICAL SANS-SERIF SMALL I', + 120259 : 'MATHEMATICAL SANS-SERIF SMALL J', + 120260 : 'MATHEMATICAL SANS-SERIF SMALL K', + 120261 : 'MATHEMATICAL SANS-SERIF SMALL L', + 120262 : 'MATHEMATICAL SANS-SERIF SMALL M', + 120263 : 'MATHEMATICAL SANS-SERIF SMALL N', + 120264 : 'MATHEMATICAL SANS-SERIF SMALL O', + 120265 : 'MATHEMATICAL SANS-SERIF SMALL P', + 120266 : 'MATHEMATICAL SANS-SERIF SMALL Q', + 120267 : 'MATHEMATICAL SANS-SERIF SMALL R', + 120268 : 'MATHEMATICAL SANS-SERIF SMALL S', + 120269 : 'MATHEMATICAL SANS-SERIF SMALL T', + 120270 : 'MATHEMATICAL SANS-SERIF SMALL U', + 120271 : 'MATHEMATICAL SANS-SERIF SMALL V', + 120272 : 'MATHEMATICAL SANS-SERIF SMALL W', + 120273 : 'MATHEMATICAL SANS-SERIF SMALL X', + 120274 : 'MATHEMATICAL SANS-SERIF SMALL Y', + 120275 : 'MATHEMATICAL SANS-SERIF SMALL Z', + 120276 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL A', + 120277 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL B', + 120278 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL C', + 120279 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL D', + 120280 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL E', + 120281 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL F', + 120282 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL G', + 120283 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL H', + 120284 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL I', + 120285 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL J', + 120286 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL K', + 120287 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL L', + 120288 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL M', + 120289 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL N', + 120290 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL O', + 120291 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL P', + 120292 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL Q', + 120293 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL R', + 120294 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL S', + 120295 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL T', + 120296 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL U', + 120297 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL V', + 120298 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL W', + 120299 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL X', + 120300 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL Y', + 120301 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL Z', + 120302 : 'MATHEMATICAL SANS-SERIF BOLD SMALL A', + 120303 : 'MATHEMATICAL SANS-SERIF BOLD SMALL B', + 120304 : 'MATHEMATICAL SANS-SERIF BOLD SMALL C', + 120305 : 'MATHEMATICAL SANS-SERIF BOLD SMALL D', + 120306 : 'MATHEMATICAL SANS-SERIF BOLD SMALL E', + 120307 : 'MATHEMATICAL SANS-SERIF BOLD SMALL F', + 120308 : 'MATHEMATICAL SANS-SERIF BOLD SMALL G', + 120309 : 'MATHEMATICAL SANS-SERIF BOLD SMALL H', + 120310 : 'MATHEMATICAL SANS-SERIF BOLD SMALL I', + 120311 : 'MATHEMATICAL SANS-SERIF BOLD SMALL J', + 120312 : 'MATHEMATICAL SANS-SERIF BOLD SMALL K', + 120313 : 'MATHEMATICAL SANS-SERIF BOLD SMALL L', + 120314 : 'MATHEMATICAL SANS-SERIF BOLD SMALL M', + 120315 : 'MATHEMATICAL SANS-SERIF BOLD SMALL N', + 120316 : 'MATHEMATICAL SANS-SERIF BOLD SMALL O', + 120317 : 'MATHEMATICAL SANS-SERIF BOLD SMALL P', + 120318 : 'MATHEMATICAL SANS-SERIF BOLD SMALL Q', + 120319 : 'MATHEMATICAL SANS-SERIF BOLD SMALL R', + 120320 : 'MATHEMATICAL SANS-SERIF BOLD SMALL S', + 120321 : 'MATHEMATICAL SANS-SERIF BOLD SMALL T', + 120322 : 'MATHEMATICAL SANS-SERIF BOLD SMALL U', + 120323 : 'MATHEMATICAL SANS-SERIF BOLD SMALL V', + 120324 : 'MATHEMATICAL SANS-SERIF BOLD SMALL W', + 120325 : 'MATHEMATICAL SANS-SERIF BOLD SMALL X', + 120326 : 'MATHEMATICAL SANS-SERIF BOLD SMALL Y', + 120327 : 'MATHEMATICAL SANS-SERIF BOLD SMALL Z', + 120328 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL A', + 120329 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL B', + 120330 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL C', + 120331 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL D', + 120332 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL E', + 120333 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL F', + 120334 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL G', + 120335 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL H', + 120336 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL I', + 120337 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL J', + 120338 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL K', + 120339 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL L', + 120340 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL M', + 120341 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL N', + 120342 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL O', + 120343 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL P', + 120344 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q', + 120345 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL R', + 120346 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL S', + 120347 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL T', + 120348 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL U', + 120349 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL V', + 120350 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL W', + 120351 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL X', + 120352 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y', + 120353 : 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z', + 120354 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL A', + 120355 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL B', + 120356 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL C', + 120357 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL D', + 120358 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL E', + 120359 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL F', + 120360 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL G', + 120361 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL H', + 120362 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL I', + 120363 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL J', + 120364 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL K', + 120365 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL L', + 120366 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL M', + 120367 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL N', + 120368 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL O', + 120369 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL P', + 120370 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL Q', + 120371 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL R', + 120372 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL S', + 120373 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL T', + 120374 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL U', + 120375 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL V', + 120376 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL W', + 120377 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL X', + 120378 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL Y', + 120379 : 'MATHEMATICAL SANS-SERIF ITALIC SMALL Z', + 120380 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A', + 120381 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B', + 120382 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C', + 120383 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D', + 120384 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E', + 120385 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F', + 120386 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G', + 120387 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H', + 120388 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I', + 120389 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J', + 120390 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K', + 120391 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L', + 120392 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M', + 120393 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N', + 120394 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O', + 120395 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P', + 120396 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q', + 120397 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R', + 120398 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S', + 120399 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T', + 120400 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U', + 120401 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V', + 120402 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W', + 120403 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X', + 120404 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y', + 120405 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z', + 120406 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A', + 120407 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B', + 120408 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C', + 120409 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D', + 120410 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E', + 120411 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F', + 120412 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G', + 120413 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H', + 120414 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I', + 120415 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J', + 120416 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K', + 120417 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L', + 120418 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M', + 120419 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N', + 120420 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O', + 120421 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P', + 120422 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q', + 120423 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R', + 120424 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S', + 120425 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T', + 120426 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U', + 120427 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V', + 120428 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W', + 120429 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X', + 120430 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y', + 120431 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z', + 120432 : 'MATHEMATICAL MONOSPACE CAPITAL A', + 120433 : 'MATHEMATICAL MONOSPACE CAPITAL B', + 120434 : 'MATHEMATICAL MONOSPACE CAPITAL C', + 120435 : 'MATHEMATICAL MONOSPACE CAPITAL D', + 120436 : 'MATHEMATICAL MONOSPACE CAPITAL E', + 120437 : 'MATHEMATICAL MONOSPACE CAPITAL F', + 120438 : 'MATHEMATICAL MONOSPACE CAPITAL G', + 120439 : 'MATHEMATICAL MONOSPACE CAPITAL H', + 120440 : 'MATHEMATICAL MONOSPACE CAPITAL I', + 120441 : 'MATHEMATICAL MONOSPACE CAPITAL J', + 120442 : 'MATHEMATICAL MONOSPACE CAPITAL K', + 120443 : 'MATHEMATICAL MONOSPACE CAPITAL L', + 120444 : 'MATHEMATICAL MONOSPACE CAPITAL M', + 120445 : 'MATHEMATICAL MONOSPACE CAPITAL N', + 120446 : 'MATHEMATICAL MONOSPACE CAPITAL O', + 120447 : 'MATHEMATICAL MONOSPACE CAPITAL P', + 120448 : 'MATHEMATICAL MONOSPACE CAPITAL Q', + 120449 : 'MATHEMATICAL MONOSPACE CAPITAL R', + 120450 : 'MATHEMATICAL MONOSPACE CAPITAL S', + 120451 : 'MATHEMATICAL MONOSPACE CAPITAL T', + 120452 : 'MATHEMATICAL MONOSPACE CAPITAL U', + 120453 : 'MATHEMATICAL MONOSPACE CAPITAL V', + 120454 : 'MATHEMATICAL MONOSPACE CAPITAL W', + 120455 : 'MATHEMATICAL MONOSPACE CAPITAL X', + 120456 : 'MATHEMATICAL MONOSPACE CAPITAL Y', + 120457 : 'MATHEMATICAL MONOSPACE CAPITAL Z', + 120458 : 'MATHEMATICAL MONOSPACE SMALL A', + 120459 : 'MATHEMATICAL MONOSPACE SMALL B', + 120460 : 'MATHEMATICAL MONOSPACE SMALL C', + 120461 : 'MATHEMATICAL MONOSPACE SMALL D', + 120462 : 'MATHEMATICAL MONOSPACE SMALL E', + 120463 : 'MATHEMATICAL MONOSPACE SMALL F', + 120464 : 'MATHEMATICAL MONOSPACE SMALL G', + 120465 : 'MATHEMATICAL MONOSPACE SMALL H', + 120466 : 'MATHEMATICAL MONOSPACE SMALL I', + 120467 : 'MATHEMATICAL MONOSPACE SMALL J', + 120468 : 'MATHEMATICAL MONOSPACE SMALL K', + 120469 : 'MATHEMATICAL MONOSPACE SMALL L', + 120470 : 'MATHEMATICAL MONOSPACE SMALL M', + 120471 : 'MATHEMATICAL MONOSPACE SMALL N', + 120472 : 'MATHEMATICAL MONOSPACE SMALL O', + 120473 : 'MATHEMATICAL MONOSPACE SMALL P', + 120474 : 'MATHEMATICAL MONOSPACE SMALL Q', + 120475 : 'MATHEMATICAL MONOSPACE SMALL R', + 120476 : 'MATHEMATICAL MONOSPACE SMALL S', + 120477 : 'MATHEMATICAL MONOSPACE SMALL T', + 120478 : 'MATHEMATICAL MONOSPACE SMALL U', + 120479 : 'MATHEMATICAL MONOSPACE SMALL V', + 120480 : 'MATHEMATICAL MONOSPACE SMALL W', + 120481 : 'MATHEMATICAL MONOSPACE SMALL X', + 120482 : 'MATHEMATICAL MONOSPACE SMALL Y', + 120483 : 'MATHEMATICAL MONOSPACE SMALL Z', + 120488 : 'MATHEMATICAL BOLD CAPITAL ALPHA', + 120489 : 'MATHEMATICAL BOLD CAPITAL BETA', + 120490 : 'MATHEMATICAL BOLD CAPITAL GAMMA', + 120491 : 'MATHEMATICAL BOLD CAPITAL DELTA', + 120492 : 'MATHEMATICAL BOLD CAPITAL EPSILON', + 120493 : 'MATHEMATICAL BOLD CAPITAL ZETA', + 120494 : 'MATHEMATICAL BOLD CAPITAL ETA', + 120495 : 'MATHEMATICAL BOLD CAPITAL THETA', + 120496 : 'MATHEMATICAL BOLD CAPITAL IOTA', + 120497 : 'MATHEMATICAL BOLD CAPITAL KAPPA', + 120498 : 'MATHEMATICAL BOLD CAPITAL LAMDA', + 120499 : 'MATHEMATICAL BOLD CAPITAL MU', + 120500 : 'MATHEMATICAL BOLD CAPITAL NU', + 120501 : 'MATHEMATICAL BOLD CAPITAL XI', + 120502 : 'MATHEMATICAL BOLD CAPITAL OMICRON', + 120503 : 'MATHEMATICAL BOLD CAPITAL PI', + 120504 : 'MATHEMATICAL BOLD CAPITAL RHO', + 120505 : 'MATHEMATICAL BOLD CAPITAL THETA SYMBOL', + 120506 : 'MATHEMATICAL BOLD CAPITAL SIGMA', + 120507 : 'MATHEMATICAL BOLD CAPITAL TAU', + 120508 : 'MATHEMATICAL BOLD CAPITAL UPSILON', + 120509 : 'MATHEMATICAL BOLD CAPITAL PHI', + 120510 : 'MATHEMATICAL BOLD CAPITAL CHI', + 120511 : 'MATHEMATICAL BOLD CAPITAL PSI', + 120512 : 'MATHEMATICAL BOLD CAPITAL OMEGA', + 120513 : 'MATHEMATICAL BOLD NABLA', + 120514 : 'MATHEMATICAL BOLD SMALL ALPHA', + 120515 : 'MATHEMATICAL BOLD SMALL BETA', + 120516 : 'MATHEMATICAL BOLD SMALL GAMMA', + 120517 : 'MATHEMATICAL BOLD SMALL DELTA', + 120518 : 'MATHEMATICAL BOLD SMALL EPSILON', + 120519 : 'MATHEMATICAL BOLD SMALL ZETA', + 120520 : 'MATHEMATICAL BOLD SMALL ETA', + 120521 : 'MATHEMATICAL BOLD SMALL THETA', + 120522 : 'MATHEMATICAL BOLD SMALL IOTA', + 120523 : 'MATHEMATICAL BOLD SMALL KAPPA', + 120524 : 'MATHEMATICAL BOLD SMALL LAMDA', + 120525 : 'MATHEMATICAL BOLD SMALL MU', + 120526 : 'MATHEMATICAL BOLD SMALL NU', + 120527 : 'MATHEMATICAL BOLD SMALL XI', + 120528 : 'MATHEMATICAL BOLD SMALL OMICRON', + 120529 : 'MATHEMATICAL BOLD SMALL PI', + 120530 : 'MATHEMATICAL BOLD SMALL RHO', + 120531 : 'MATHEMATICAL BOLD SMALL FINAL SIGMA', + 120532 : 'MATHEMATICAL BOLD SMALL SIGMA', + 120533 : 'MATHEMATICAL BOLD SMALL TAU', + 120534 : 'MATHEMATICAL BOLD SMALL UPSILON', + 120535 : 'MATHEMATICAL BOLD SMALL PHI', + 120536 : 'MATHEMATICAL BOLD SMALL CHI', + 120537 : 'MATHEMATICAL BOLD SMALL PSI', + 120538 : 'MATHEMATICAL BOLD SMALL OMEGA', + 120539 : 'MATHEMATICAL BOLD PARTIAL DIFFERENTIAL', + 120540 : 'MATHEMATICAL BOLD EPSILON SYMBOL', + 120541 : 'MATHEMATICAL BOLD THETA SYMBOL', + 120542 : 'MATHEMATICAL BOLD KAPPA SYMBOL', + 120543 : 'MATHEMATICAL BOLD PHI SYMBOL', + 120544 : 'MATHEMATICAL BOLD RHO SYMBOL', + 120545 : 'MATHEMATICAL BOLD PI SYMBOL', + 120546 : 'MATHEMATICAL ITALIC CAPITAL ALPHA', + 120547 : 'MATHEMATICAL ITALIC CAPITAL BETA', + 120548 : 'MATHEMATICAL ITALIC CAPITAL GAMMA', + 120549 : 'MATHEMATICAL ITALIC CAPITAL DELTA', + 120550 : 'MATHEMATICAL ITALIC CAPITAL EPSILON', + 120551 : 'MATHEMATICAL ITALIC CAPITAL ZETA', + 120552 : 'MATHEMATICAL ITALIC CAPITAL ETA', + 120553 : 'MATHEMATICAL ITALIC CAPITAL THETA', + 120554 : 'MATHEMATICAL ITALIC CAPITAL IOTA', + 120555 : 'MATHEMATICAL ITALIC CAPITAL KAPPA', + 120556 : 'MATHEMATICAL ITALIC CAPITAL LAMDA', + 120557 : 'MATHEMATICAL ITALIC CAPITAL MU', + 120558 : 'MATHEMATICAL ITALIC CAPITAL NU', + 120559 : 'MATHEMATICAL ITALIC CAPITAL XI', + 120560 : 'MATHEMATICAL ITALIC CAPITAL OMICRON', + 120561 : 'MATHEMATICAL ITALIC CAPITAL PI', + 120562 : 'MATHEMATICAL ITALIC CAPITAL RHO', + 120563 : 'MATHEMATICAL ITALIC CAPITAL THETA SYMBOL', + 120564 : 'MATHEMATICAL ITALIC CAPITAL SIGMA', + 120565 : 'MATHEMATICAL ITALIC CAPITAL TAU', + 120566 : 'MATHEMATICAL ITALIC CAPITAL UPSILON', + 120567 : 'MATHEMATICAL ITALIC CAPITAL PHI', + 120568 : 'MATHEMATICAL ITALIC CAPITAL CHI', + 120569 : 'MATHEMATICAL ITALIC CAPITAL PSI', + 120570 : 'MATHEMATICAL ITALIC CAPITAL OMEGA', + 120571 : 'MATHEMATICAL ITALIC NABLA', + 120572 : 'MATHEMATICAL ITALIC SMALL ALPHA', + 120573 : 'MATHEMATICAL ITALIC SMALL BETA', + 120574 : 'MATHEMATICAL ITALIC SMALL GAMMA', + 120575 : 'MATHEMATICAL ITALIC SMALL DELTA', + 120576 : 'MATHEMATICAL ITALIC SMALL EPSILON', + 120577 : 'MATHEMATICAL ITALIC SMALL ZETA', + 120578 : 'MATHEMATICAL ITALIC SMALL ETA', + 120579 : 'MATHEMATICAL ITALIC SMALL THETA', + 120580 : 'MATHEMATICAL ITALIC SMALL IOTA', + 120581 : 'MATHEMATICAL ITALIC SMALL KAPPA', + 120582 : 'MATHEMATICAL ITALIC SMALL LAMDA', + 120583 : 'MATHEMATICAL ITALIC SMALL MU', + 120584 : 'MATHEMATICAL ITALIC SMALL NU', + 120585 : 'MATHEMATICAL ITALIC SMALL XI', + 120586 : 'MATHEMATICAL ITALIC SMALL OMICRON', + 120587 : 'MATHEMATICAL ITALIC SMALL PI', + 120588 : 'MATHEMATICAL ITALIC SMALL RHO', + 120589 : 'MATHEMATICAL ITALIC SMALL FINAL SIGMA', + 120590 : 'MATHEMATICAL ITALIC SMALL SIGMA', + 120591 : 'MATHEMATICAL ITALIC SMALL TAU', + 120592 : 'MATHEMATICAL ITALIC SMALL UPSILON', + 120593 : 'MATHEMATICAL ITALIC SMALL PHI', + 120594 : 'MATHEMATICAL ITALIC SMALL CHI', + 120595 : 'MATHEMATICAL ITALIC SMALL PSI', + 120596 : 'MATHEMATICAL ITALIC SMALL OMEGA', + 120597 : 'MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL', + 120598 : 'MATHEMATICAL ITALIC EPSILON SYMBOL', + 120599 : 'MATHEMATICAL ITALIC THETA SYMBOL', + 120600 : 'MATHEMATICAL ITALIC KAPPA SYMBOL', + 120601 : 'MATHEMATICAL ITALIC PHI SYMBOL', + 120602 : 'MATHEMATICAL ITALIC RHO SYMBOL', + 120603 : 'MATHEMATICAL ITALIC PI SYMBOL', + 120604 : 'MATHEMATICAL BOLD ITALIC CAPITAL ALPHA', + 120605 : 'MATHEMATICAL BOLD ITALIC CAPITAL BETA', + 120606 : 'MATHEMATICAL BOLD ITALIC CAPITAL GAMMA', + 120607 : 'MATHEMATICAL BOLD ITALIC CAPITAL DELTA', + 120608 : 'MATHEMATICAL BOLD ITALIC CAPITAL EPSILON', + 120609 : 'MATHEMATICAL BOLD ITALIC CAPITAL ZETA', + 120610 : 'MATHEMATICAL BOLD ITALIC CAPITAL ETA', + 120611 : 'MATHEMATICAL BOLD ITALIC CAPITAL THETA', + 120612 : 'MATHEMATICAL BOLD ITALIC CAPITAL IOTA', + 120613 : 'MATHEMATICAL BOLD ITALIC CAPITAL KAPPA', + 120614 : 'MATHEMATICAL BOLD ITALIC CAPITAL LAMDA', + 120615 : 'MATHEMATICAL BOLD ITALIC CAPITAL MU', + 120616 : 'MATHEMATICAL BOLD ITALIC CAPITAL NU', + 120617 : 'MATHEMATICAL BOLD ITALIC CAPITAL XI', + 120618 : 'MATHEMATICAL BOLD ITALIC CAPITAL OMICRON', + 120619 : 'MATHEMATICAL BOLD ITALIC CAPITAL PI', + 120620 : 'MATHEMATICAL BOLD ITALIC CAPITAL RHO', + 120621 : 'MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL', + 120622 : 'MATHEMATICAL BOLD ITALIC CAPITAL SIGMA', + 120623 : 'MATHEMATICAL BOLD ITALIC CAPITAL TAU', + 120624 : 'MATHEMATICAL BOLD ITALIC CAPITAL UPSILON', + 120625 : 'MATHEMATICAL BOLD ITALIC CAPITAL PHI', + 120626 : 'MATHEMATICAL BOLD ITALIC CAPITAL CHI', + 120627 : 'MATHEMATICAL BOLD ITALIC CAPITAL PSI', + 120628 : 'MATHEMATICAL BOLD ITALIC CAPITAL OMEGA', + 120629 : 'MATHEMATICAL BOLD ITALIC NABLA', + 120630 : 'MATHEMATICAL BOLD ITALIC SMALL ALPHA', + 120631 : 'MATHEMATICAL BOLD ITALIC SMALL BETA', + 120632 : 'MATHEMATICAL BOLD ITALIC SMALL GAMMA', + 120633 : 'MATHEMATICAL BOLD ITALIC SMALL DELTA', + 120634 : 'MATHEMATICAL BOLD ITALIC SMALL EPSILON', + 120635 : 'MATHEMATICAL BOLD ITALIC SMALL ZETA', + 120636 : 'MATHEMATICAL BOLD ITALIC SMALL ETA', + 120637 : 'MATHEMATICAL BOLD ITALIC SMALL THETA', + 120638 : 'MATHEMATICAL BOLD ITALIC SMALL IOTA', + 120639 : 'MATHEMATICAL BOLD ITALIC SMALL KAPPA', + 120640 : 'MATHEMATICAL BOLD ITALIC SMALL LAMDA', + 120641 : 'MATHEMATICAL BOLD ITALIC SMALL MU', + 120642 : 'MATHEMATICAL BOLD ITALIC SMALL NU', + 120643 : 'MATHEMATICAL BOLD ITALIC SMALL XI', + 120644 : 'MATHEMATICAL BOLD ITALIC SMALL OMICRON', + 120645 : 'MATHEMATICAL BOLD ITALIC SMALL PI', + 120646 : 'MATHEMATICAL BOLD ITALIC SMALL RHO', + 120647 : 'MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA', + 120648 : 'MATHEMATICAL BOLD ITALIC SMALL SIGMA', + 120649 : 'MATHEMATICAL BOLD ITALIC SMALL TAU', + 120650 : 'MATHEMATICAL BOLD ITALIC SMALL UPSILON', + 120651 : 'MATHEMATICAL BOLD ITALIC SMALL PHI', + 120652 : 'MATHEMATICAL BOLD ITALIC SMALL CHI', + 120653 : 'MATHEMATICAL BOLD ITALIC SMALL PSI', + 120654 : 'MATHEMATICAL BOLD ITALIC SMALL OMEGA', + 120655 : 'MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL', + 120656 : 'MATHEMATICAL BOLD ITALIC EPSILON SYMBOL', + 120657 : 'MATHEMATICAL BOLD ITALIC THETA SYMBOL', + 120658 : 'MATHEMATICAL BOLD ITALIC KAPPA SYMBOL', + 120659 : 'MATHEMATICAL BOLD ITALIC PHI SYMBOL', + 120660 : 'MATHEMATICAL BOLD ITALIC RHO SYMBOL', + 120661 : 'MATHEMATICAL BOLD ITALIC PI SYMBOL', + 120662 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA', + 120663 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA', + 120664 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA', + 120665 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA', + 120666 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON', + 120667 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA', + 120668 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA', + 120669 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA', + 120670 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA', + 120671 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA', + 120672 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA', + 120673 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL MU', + 120674 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL NU', + 120675 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL XI', + 120676 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON', + 120677 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL PI', + 120678 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO', + 120679 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL', + 120680 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA', + 120681 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU', + 120682 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON', + 120683 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI', + 120684 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI', + 120685 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI', + 120686 : 'MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA', + 120687 : 'MATHEMATICAL SANS-SERIF BOLD NABLA', + 120688 : 'MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA', + 120689 : 'MATHEMATICAL SANS-SERIF BOLD SMALL BETA', + 120690 : 'MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA', + 120691 : 'MATHEMATICAL SANS-SERIF BOLD SMALL DELTA', + 120692 : 'MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON', + 120693 : 'MATHEMATICAL SANS-SERIF BOLD SMALL ZETA', + 120694 : 'MATHEMATICAL SANS-SERIF BOLD SMALL ETA', + 120695 : 'MATHEMATICAL SANS-SERIF BOLD SMALL THETA', + 120696 : 'MATHEMATICAL SANS-SERIF BOLD SMALL IOTA', + 120697 : 'MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA', + 120698 : 'MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA', + 120699 : 'MATHEMATICAL SANS-SERIF BOLD SMALL MU', + 120700 : 'MATHEMATICAL SANS-SERIF BOLD SMALL NU', + 120701 : 'MATHEMATICAL SANS-SERIF BOLD SMALL XI', + 120702 : 'MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON', + 120703 : 'MATHEMATICAL SANS-SERIF BOLD SMALL PI', + 120704 : 'MATHEMATICAL SANS-SERIF BOLD SMALL RHO', + 120705 : 'MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA', + 120706 : 'MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA', + 120707 : 'MATHEMATICAL SANS-SERIF BOLD SMALL TAU', + 120708 : 'MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON', + 120709 : 'MATHEMATICAL SANS-SERIF BOLD SMALL PHI', + 120710 : 'MATHEMATICAL SANS-SERIF BOLD SMALL CHI', + 120711 : 'MATHEMATICAL SANS-SERIF BOLD SMALL PSI', + 120712 : 'MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA', + 120713 : 'MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL', + 120714 : 'MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL', + 120715 : 'MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL', + 120716 : 'MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL', + 120717 : 'MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL', + 120718 : 'MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL', + 120719 : 'MATHEMATICAL SANS-SERIF BOLD PI SYMBOL', + 120720 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA', + 120721 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA', + 120722 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA', + 120723 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA', + 120724 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON', + 120725 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA', + 120726 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA', + 120727 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA', + 120728 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA', + 120729 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA', + 120730 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA', + 120731 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU', + 120732 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU', + 120733 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI', + 120734 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON', + 120735 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI', + 120736 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO', + 120737 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL', + 120738 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA', + 120739 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU', + 120740 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON', + 120741 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI', + 120742 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI', + 120743 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI', + 120744 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA', + 120745 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA', + 120746 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA', + 120747 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA', + 120748 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA', + 120749 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA', + 120750 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON', + 120751 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA', + 120752 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA', + 120753 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA', + 120754 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA', + 120755 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA', + 120756 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA', + 120757 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU', + 120758 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU', + 120759 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI', + 120760 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON', + 120761 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI', + 120762 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO', + 120763 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA', + 120764 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA', + 120765 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU', + 120766 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON', + 120767 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI', + 120768 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI', + 120769 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI', + 120770 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA', + 120771 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL', + 120772 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL', + 120773 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL', + 120774 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL', + 120775 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL', + 120776 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL', + 120777 : 'MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL', + 120782 : 'MATHEMATICAL BOLD DIGIT ZERO', + 120783 : 'MATHEMATICAL BOLD DIGIT ONE', + 120784 : 'MATHEMATICAL BOLD DIGIT TWO', + 120785 : 'MATHEMATICAL BOLD DIGIT THREE', + 120786 : 'MATHEMATICAL BOLD DIGIT FOUR', + 120787 : 'MATHEMATICAL BOLD DIGIT FIVE', + 120788 : 'MATHEMATICAL BOLD DIGIT SIX', + 120789 : 'MATHEMATICAL BOLD DIGIT SEVEN', + 120790 : 'MATHEMATICAL BOLD DIGIT EIGHT', + 120791 : 'MATHEMATICAL BOLD DIGIT NINE', + 120792 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO', + 120793 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT ONE', + 120794 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT TWO', + 120795 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT THREE', + 120796 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR', + 120797 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE', + 120798 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT SIX', + 120799 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN', + 120800 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT', + 120801 : 'MATHEMATICAL DOUBLE-STRUCK DIGIT NINE', + 120802 : 'MATHEMATICAL SANS-SERIF DIGIT ZERO', + 120803 : 'MATHEMATICAL SANS-SERIF DIGIT ONE', + 120804 : 'MATHEMATICAL SANS-SERIF DIGIT TWO', + 120805 : 'MATHEMATICAL SANS-SERIF DIGIT THREE', + 120806 : 'MATHEMATICAL SANS-SERIF DIGIT FOUR', + 120807 : 'MATHEMATICAL SANS-SERIF DIGIT FIVE', + 120808 : 'MATHEMATICAL SANS-SERIF DIGIT SIX', + 120809 : 'MATHEMATICAL SANS-SERIF DIGIT SEVEN', + 120810 : 'MATHEMATICAL SANS-SERIF DIGIT EIGHT', + 120811 : 'MATHEMATICAL SANS-SERIF DIGIT NINE', + 120812 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO', + 120813 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT ONE', + 120814 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT TWO', + 120815 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT THREE', + 120816 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR', + 120817 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE', + 120818 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT SIX', + 120819 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN', + 120820 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT', + 120821 : 'MATHEMATICAL SANS-SERIF BOLD DIGIT NINE', + 120822 : 'MATHEMATICAL MONOSPACE DIGIT ZERO', + 120823 : 'MATHEMATICAL MONOSPACE DIGIT ONE', + 120824 : 'MATHEMATICAL MONOSPACE DIGIT TWO', + 120825 : 'MATHEMATICAL MONOSPACE DIGIT THREE', + 120826 : 'MATHEMATICAL MONOSPACE DIGIT FOUR', + 120827 : 'MATHEMATICAL MONOSPACE DIGIT FIVE', + 120828 : 'MATHEMATICAL MONOSPACE DIGIT SIX', + 120829 : 'MATHEMATICAL MONOSPACE DIGIT SEVEN', + 120830 : 'MATHEMATICAL MONOSPACE DIGIT EIGHT', + 120831 : 'MATHEMATICAL MONOSPACE DIGIT NINE', + 131072 : '', + 173782 : '', + 194560 : 'CJK COMPATIBILITY IDEOGRAPH-2F800', + 194561 : 'CJK COMPATIBILITY IDEOGRAPH-2F801', + 194562 : 'CJK COMPATIBILITY IDEOGRAPH-2F802', + 194563 : 'CJK COMPATIBILITY IDEOGRAPH-2F803', + 194564 : 'CJK COMPATIBILITY IDEOGRAPH-2F804', + 194565 : 'CJK COMPATIBILITY IDEOGRAPH-2F805', + 194566 : 'CJK COMPATIBILITY IDEOGRAPH-2F806', + 194567 : 'CJK COMPATIBILITY IDEOGRAPH-2F807', + 194568 : 'CJK COMPATIBILITY IDEOGRAPH-2F808', + 194569 : 'CJK COMPATIBILITY IDEOGRAPH-2F809', + 194570 : 'CJK COMPATIBILITY IDEOGRAPH-2F80A', + 194571 : 'CJK COMPATIBILITY IDEOGRAPH-2F80B', + 194572 : 'CJK COMPATIBILITY IDEOGRAPH-2F80C', + 194573 : 'CJK COMPATIBILITY IDEOGRAPH-2F80D', + 194574 : 'CJK COMPATIBILITY IDEOGRAPH-2F80E', + 194575 : 'CJK COMPATIBILITY IDEOGRAPH-2F80F', + 194576 : 'CJK COMPATIBILITY IDEOGRAPH-2F810', + 194577 : 'CJK COMPATIBILITY IDEOGRAPH-2F811', + 194578 : 'CJK COMPATIBILITY IDEOGRAPH-2F812', + 194579 : 'CJK COMPATIBILITY IDEOGRAPH-2F813', + 194580 : 'CJK COMPATIBILITY IDEOGRAPH-2F814', + 194581 : 'CJK COMPATIBILITY IDEOGRAPH-2F815', + 194582 : 'CJK COMPATIBILITY IDEOGRAPH-2F816', + 194583 : 'CJK COMPATIBILITY IDEOGRAPH-2F817', + 194584 : 'CJK COMPATIBILITY IDEOGRAPH-2F818', + 194585 : 'CJK COMPATIBILITY IDEOGRAPH-2F819', + 194586 : 'CJK COMPATIBILITY IDEOGRAPH-2F81A', + 194587 : 'CJK COMPATIBILITY IDEOGRAPH-2F81B', + 194588 : 'CJK COMPATIBILITY IDEOGRAPH-2F81C', + 194589 : 'CJK COMPATIBILITY IDEOGRAPH-2F81D', + 194590 : 'CJK COMPATIBILITY IDEOGRAPH-2F81E', + 194591 : 'CJK COMPATIBILITY IDEOGRAPH-2F81F', + 194592 : 'CJK COMPATIBILITY IDEOGRAPH-2F820', + 194593 : 'CJK COMPATIBILITY IDEOGRAPH-2F821', + 194594 : 'CJK COMPATIBILITY IDEOGRAPH-2F822', + 194595 : 'CJK COMPATIBILITY IDEOGRAPH-2F823', + 194596 : 'CJK COMPATIBILITY IDEOGRAPH-2F824', + 194597 : 'CJK COMPATIBILITY IDEOGRAPH-2F825', + 194598 : 'CJK COMPATIBILITY IDEOGRAPH-2F826', + 194599 : 'CJK COMPATIBILITY IDEOGRAPH-2F827', + 194600 : 'CJK COMPATIBILITY IDEOGRAPH-2F828', + 194601 : 'CJK COMPATIBILITY IDEOGRAPH-2F829', + 194602 : 'CJK COMPATIBILITY IDEOGRAPH-2F82A', + 194603 : 'CJK COMPATIBILITY IDEOGRAPH-2F82B', + 194604 : 'CJK COMPATIBILITY IDEOGRAPH-2F82C', + 194605 : 'CJK COMPATIBILITY IDEOGRAPH-2F82D', + 194606 : 'CJK COMPATIBILITY IDEOGRAPH-2F82E', + 194607 : 'CJK COMPATIBILITY IDEOGRAPH-2F82F', + 194608 : 'CJK COMPATIBILITY IDEOGRAPH-2F830', + 194609 : 'CJK COMPATIBILITY IDEOGRAPH-2F831', + 194610 : 'CJK COMPATIBILITY IDEOGRAPH-2F832', + 194611 : 'CJK COMPATIBILITY IDEOGRAPH-2F833', + 194612 : 'CJK COMPATIBILITY IDEOGRAPH-2F834', + 194613 : 'CJK COMPATIBILITY IDEOGRAPH-2F835', + 194614 : 'CJK COMPATIBILITY IDEOGRAPH-2F836', + 194615 : 'CJK COMPATIBILITY IDEOGRAPH-2F837', + 194616 : 'CJK COMPATIBILITY IDEOGRAPH-2F838', + 194617 : 'CJK COMPATIBILITY IDEOGRAPH-2F839', + 194618 : 'CJK COMPATIBILITY IDEOGRAPH-2F83A', + 194619 : 'CJK COMPATIBILITY IDEOGRAPH-2F83B', + 194620 : 'CJK COMPATIBILITY IDEOGRAPH-2F83C', + 194621 : 'CJK COMPATIBILITY IDEOGRAPH-2F83D', + 194622 : 'CJK COMPATIBILITY IDEOGRAPH-2F83E', + 194623 : 'CJK COMPATIBILITY IDEOGRAPH-2F83F', + 194624 : 'CJK COMPATIBILITY IDEOGRAPH-2F840', + 194625 : 'CJK COMPATIBILITY IDEOGRAPH-2F841', + 194626 : 'CJK COMPATIBILITY IDEOGRAPH-2F842', + 194627 : 'CJK COMPATIBILITY IDEOGRAPH-2F843', + 194628 : 'CJK COMPATIBILITY IDEOGRAPH-2F844', + 194629 : 'CJK COMPATIBILITY IDEOGRAPH-2F845', + 194630 : 'CJK COMPATIBILITY IDEOGRAPH-2F846', + 194631 : 'CJK COMPATIBILITY IDEOGRAPH-2F847', + 194632 : 'CJK COMPATIBILITY IDEOGRAPH-2F848', + 194633 : 'CJK COMPATIBILITY IDEOGRAPH-2F849', + 194634 : 'CJK COMPATIBILITY IDEOGRAPH-2F84A', + 194635 : 'CJK COMPATIBILITY IDEOGRAPH-2F84B', + 194636 : 'CJK COMPATIBILITY IDEOGRAPH-2F84C', + 194637 : 'CJK COMPATIBILITY IDEOGRAPH-2F84D', + 194638 : 'CJK COMPATIBILITY IDEOGRAPH-2F84E', + 194639 : 'CJK COMPATIBILITY IDEOGRAPH-2F84F', + 194640 : 'CJK COMPATIBILITY IDEOGRAPH-2F850', + 194641 : 'CJK COMPATIBILITY IDEOGRAPH-2F851', + 194642 : 'CJK COMPATIBILITY IDEOGRAPH-2F852', + 194643 : 'CJK COMPATIBILITY IDEOGRAPH-2F853', + 194644 : 'CJK COMPATIBILITY IDEOGRAPH-2F854', + 194645 : 'CJK COMPATIBILITY IDEOGRAPH-2F855', + 194646 : 'CJK COMPATIBILITY IDEOGRAPH-2F856', + 194647 : 'CJK COMPATIBILITY IDEOGRAPH-2F857', + 194648 : 'CJK COMPATIBILITY IDEOGRAPH-2F858', + 194649 : 'CJK COMPATIBILITY IDEOGRAPH-2F859', + 194650 : 'CJK COMPATIBILITY IDEOGRAPH-2F85A', + 194651 : 'CJK COMPATIBILITY IDEOGRAPH-2F85B', + 194652 : 'CJK COMPATIBILITY IDEOGRAPH-2F85C', + 194653 : 'CJK COMPATIBILITY IDEOGRAPH-2F85D', + 194654 : 'CJK COMPATIBILITY IDEOGRAPH-2F85E', + 194655 : 'CJK COMPATIBILITY IDEOGRAPH-2F85F', + 194656 : 'CJK COMPATIBILITY IDEOGRAPH-2F860', + 194657 : 'CJK COMPATIBILITY IDEOGRAPH-2F861', + 194658 : 'CJK COMPATIBILITY IDEOGRAPH-2F862', + 194659 : 'CJK COMPATIBILITY IDEOGRAPH-2F863', + 194660 : 'CJK COMPATIBILITY IDEOGRAPH-2F864', + 194661 : 'CJK COMPATIBILITY IDEOGRAPH-2F865', + 194662 : 'CJK COMPATIBILITY IDEOGRAPH-2F866', + 194663 : 'CJK COMPATIBILITY IDEOGRAPH-2F867', + 194664 : 'CJK COMPATIBILITY IDEOGRAPH-2F868', + 194665 : 'CJK COMPATIBILITY IDEOGRAPH-2F869', + 194666 : 'CJK COMPATIBILITY IDEOGRAPH-2F86A', + 194667 : 'CJK COMPATIBILITY IDEOGRAPH-2F86B', + 194668 : 'CJK COMPATIBILITY IDEOGRAPH-2F86C', + 194669 : 'CJK COMPATIBILITY IDEOGRAPH-2F86D', + 194670 : 'CJK COMPATIBILITY IDEOGRAPH-2F86E', + 194671 : 'CJK COMPATIBILITY IDEOGRAPH-2F86F', + 194672 : 'CJK COMPATIBILITY IDEOGRAPH-2F870', + 194673 : 'CJK COMPATIBILITY IDEOGRAPH-2F871', + 194674 : 'CJK COMPATIBILITY IDEOGRAPH-2F872', + 194675 : 'CJK COMPATIBILITY IDEOGRAPH-2F873', + 194676 : 'CJK COMPATIBILITY IDEOGRAPH-2F874', + 194677 : 'CJK COMPATIBILITY IDEOGRAPH-2F875', + 194678 : 'CJK COMPATIBILITY IDEOGRAPH-2F876', + 194679 : 'CJK COMPATIBILITY IDEOGRAPH-2F877', + 194680 : 'CJK COMPATIBILITY IDEOGRAPH-2F878', + 194681 : 'CJK COMPATIBILITY IDEOGRAPH-2F879', + 194682 : 'CJK COMPATIBILITY IDEOGRAPH-2F87A', + 194683 : 'CJK COMPATIBILITY IDEOGRAPH-2F87B', + 194684 : 'CJK COMPATIBILITY IDEOGRAPH-2F87C', + 194685 : 'CJK COMPATIBILITY IDEOGRAPH-2F87D', + 194686 : 'CJK COMPATIBILITY IDEOGRAPH-2F87E', + 194687 : 'CJK COMPATIBILITY IDEOGRAPH-2F87F', + 194688 : 'CJK COMPATIBILITY IDEOGRAPH-2F880', + 194689 : 'CJK COMPATIBILITY IDEOGRAPH-2F881', + 194690 : 'CJK COMPATIBILITY IDEOGRAPH-2F882', + 194691 : 'CJK COMPATIBILITY IDEOGRAPH-2F883', + 194692 : 'CJK COMPATIBILITY IDEOGRAPH-2F884', + 194693 : 'CJK COMPATIBILITY IDEOGRAPH-2F885', + 194694 : 'CJK COMPATIBILITY IDEOGRAPH-2F886', + 194695 : 'CJK COMPATIBILITY IDEOGRAPH-2F887', + 194696 : 'CJK COMPATIBILITY IDEOGRAPH-2F888', + 194697 : 'CJK COMPATIBILITY IDEOGRAPH-2F889', + 194698 : 'CJK COMPATIBILITY IDEOGRAPH-2F88A', + 194699 : 'CJK COMPATIBILITY IDEOGRAPH-2F88B', + 194700 : 'CJK COMPATIBILITY IDEOGRAPH-2F88C', + 194701 : 'CJK COMPATIBILITY IDEOGRAPH-2F88D', + 194702 : 'CJK COMPATIBILITY IDEOGRAPH-2F88E', + 194703 : 'CJK COMPATIBILITY IDEOGRAPH-2F88F', + 194704 : 'CJK COMPATIBILITY IDEOGRAPH-2F890', + 194705 : 'CJK COMPATIBILITY IDEOGRAPH-2F891', + 194706 : 'CJK COMPATIBILITY IDEOGRAPH-2F892', + 194707 : 'CJK COMPATIBILITY IDEOGRAPH-2F893', + 194708 : 'CJK COMPATIBILITY IDEOGRAPH-2F894', + 194709 : 'CJK COMPATIBILITY IDEOGRAPH-2F895', + 194710 : 'CJK COMPATIBILITY IDEOGRAPH-2F896', + 194711 : 'CJK COMPATIBILITY IDEOGRAPH-2F897', + 194712 : 'CJK COMPATIBILITY IDEOGRAPH-2F898', + 194713 : 'CJK COMPATIBILITY IDEOGRAPH-2F899', + 194714 : 'CJK COMPATIBILITY IDEOGRAPH-2F89A', + 194715 : 'CJK COMPATIBILITY IDEOGRAPH-2F89B', + 194716 : 'CJK COMPATIBILITY IDEOGRAPH-2F89C', + 194717 : 'CJK COMPATIBILITY IDEOGRAPH-2F89D', + 194718 : 'CJK COMPATIBILITY IDEOGRAPH-2F89E', + 194719 : 'CJK COMPATIBILITY IDEOGRAPH-2F89F', + 194720 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A0', + 194721 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A1', + 194722 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A2', + 194723 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A3', + 194724 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A4', + 194725 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A5', + 194726 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A6', + 194727 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A7', + 194728 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A8', + 194729 : 'CJK COMPATIBILITY IDEOGRAPH-2F8A9', + 194730 : 'CJK COMPATIBILITY IDEOGRAPH-2F8AA', + 194731 : 'CJK COMPATIBILITY IDEOGRAPH-2F8AB', + 194732 : 'CJK COMPATIBILITY IDEOGRAPH-2F8AC', + 194733 : 'CJK COMPATIBILITY IDEOGRAPH-2F8AD', + 194734 : 'CJK COMPATIBILITY IDEOGRAPH-2F8AE', + 194735 : 'CJK COMPATIBILITY IDEOGRAPH-2F8AF', + 194736 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B0', + 194737 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B1', + 194738 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B2', + 194739 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B3', + 194740 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B4', + 194741 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B5', + 194742 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B6', + 194743 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B7', + 194744 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B8', + 194745 : 'CJK COMPATIBILITY IDEOGRAPH-2F8B9', + 194746 : 'CJK COMPATIBILITY IDEOGRAPH-2F8BA', + 194747 : 'CJK COMPATIBILITY IDEOGRAPH-2F8BB', + 194748 : 'CJK COMPATIBILITY IDEOGRAPH-2F8BC', + 194749 : 'CJK COMPATIBILITY IDEOGRAPH-2F8BD', + 194750 : 'CJK COMPATIBILITY IDEOGRAPH-2F8BE', + 194751 : 'CJK COMPATIBILITY IDEOGRAPH-2F8BF', + 194752 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C0', + 194753 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C1', + 194754 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C2', + 194755 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C3', + 194756 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C4', + 194757 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C5', + 194758 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C6', + 194759 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C7', + 194760 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C8', + 194761 : 'CJK COMPATIBILITY IDEOGRAPH-2F8C9', + 194762 : 'CJK COMPATIBILITY IDEOGRAPH-2F8CA', + 194763 : 'CJK COMPATIBILITY IDEOGRAPH-2F8CB', + 194764 : 'CJK COMPATIBILITY IDEOGRAPH-2F8CC', + 194765 : 'CJK COMPATIBILITY IDEOGRAPH-2F8CD', + 194766 : 'CJK COMPATIBILITY IDEOGRAPH-2F8CE', + 194767 : 'CJK COMPATIBILITY IDEOGRAPH-2F8CF', + 194768 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D0', + 194769 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D1', + 194770 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D2', + 194771 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D3', + 194772 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D4', + 194773 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D5', + 194774 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D6', + 194775 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D7', + 194776 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D8', + 194777 : 'CJK COMPATIBILITY IDEOGRAPH-2F8D9', + 194778 : 'CJK COMPATIBILITY IDEOGRAPH-2F8DA', + 194779 : 'CJK COMPATIBILITY IDEOGRAPH-2F8DB', + 194780 : 'CJK COMPATIBILITY IDEOGRAPH-2F8DC', + 194781 : 'CJK COMPATIBILITY IDEOGRAPH-2F8DD', + 194782 : 'CJK COMPATIBILITY IDEOGRAPH-2F8DE', + 194783 : 'CJK COMPATIBILITY IDEOGRAPH-2F8DF', + 194784 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E0', + 194785 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E1', + 194786 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E2', + 194787 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E3', + 194788 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E4', + 194789 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E5', + 194790 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E6', + 194791 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E7', + 194792 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E8', + 194793 : 'CJK COMPATIBILITY IDEOGRAPH-2F8E9', + 194794 : 'CJK COMPATIBILITY IDEOGRAPH-2F8EA', + 194795 : 'CJK COMPATIBILITY IDEOGRAPH-2F8EB', + 194796 : 'CJK COMPATIBILITY IDEOGRAPH-2F8EC', + 194797 : 'CJK COMPATIBILITY IDEOGRAPH-2F8ED', + 194798 : 'CJK COMPATIBILITY IDEOGRAPH-2F8EE', + 194799 : 'CJK COMPATIBILITY IDEOGRAPH-2F8EF', + 194800 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F0', + 194801 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F1', + 194802 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F2', + 194803 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F3', + 194804 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F4', + 194805 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F5', + 194806 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F6', + 194807 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F7', + 194808 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F8', + 194809 : 'CJK COMPATIBILITY IDEOGRAPH-2F8F9', + 194810 : 'CJK COMPATIBILITY IDEOGRAPH-2F8FA', + 194811 : 'CJK COMPATIBILITY IDEOGRAPH-2F8FB', + 194812 : 'CJK COMPATIBILITY IDEOGRAPH-2F8FC', + 194813 : 'CJK COMPATIBILITY IDEOGRAPH-2F8FD', + 194814 : 'CJK COMPATIBILITY IDEOGRAPH-2F8FE', + 194815 : 'CJK COMPATIBILITY IDEOGRAPH-2F8FF', + 194816 : 'CJK COMPATIBILITY IDEOGRAPH-2F900', + 194817 : 'CJK COMPATIBILITY IDEOGRAPH-2F901', + 194818 : 'CJK COMPATIBILITY IDEOGRAPH-2F902', + 194819 : 'CJK COMPATIBILITY IDEOGRAPH-2F903', + 194820 : 'CJK COMPATIBILITY IDEOGRAPH-2F904', + 194821 : 'CJK COMPATIBILITY IDEOGRAPH-2F905', + 194822 : 'CJK COMPATIBILITY IDEOGRAPH-2F906', + 194823 : 'CJK COMPATIBILITY IDEOGRAPH-2F907', + 194824 : 'CJK COMPATIBILITY IDEOGRAPH-2F908', + 194825 : 'CJK COMPATIBILITY IDEOGRAPH-2F909', + 194826 : 'CJK COMPATIBILITY IDEOGRAPH-2F90A', + 194827 : 'CJK COMPATIBILITY IDEOGRAPH-2F90B', + 194828 : 'CJK COMPATIBILITY IDEOGRAPH-2F90C', + 194829 : 'CJK COMPATIBILITY IDEOGRAPH-2F90D', + 194830 : 'CJK COMPATIBILITY IDEOGRAPH-2F90E', + 194831 : 'CJK COMPATIBILITY IDEOGRAPH-2F90F', + 194832 : 'CJK COMPATIBILITY IDEOGRAPH-2F910', + 194833 : 'CJK COMPATIBILITY IDEOGRAPH-2F911', + 194834 : 'CJK COMPATIBILITY IDEOGRAPH-2F912', + 194835 : 'CJK COMPATIBILITY IDEOGRAPH-2F913', + 194836 : 'CJK COMPATIBILITY IDEOGRAPH-2F914', + 194837 : 'CJK COMPATIBILITY IDEOGRAPH-2F915', + 194838 : 'CJK COMPATIBILITY IDEOGRAPH-2F916', + 194839 : 'CJK COMPATIBILITY IDEOGRAPH-2F917', + 194840 : 'CJK COMPATIBILITY IDEOGRAPH-2F918', + 194841 : 'CJK COMPATIBILITY IDEOGRAPH-2F919', + 194842 : 'CJK COMPATIBILITY IDEOGRAPH-2F91A', + 194843 : 'CJK COMPATIBILITY IDEOGRAPH-2F91B', + 194844 : 'CJK COMPATIBILITY IDEOGRAPH-2F91C', + 194845 : 'CJK COMPATIBILITY IDEOGRAPH-2F91D', + 194846 : 'CJK COMPATIBILITY IDEOGRAPH-2F91E', + 194847 : 'CJK COMPATIBILITY IDEOGRAPH-2F91F', + 194848 : 'CJK COMPATIBILITY IDEOGRAPH-2F920', + 194849 : 'CJK COMPATIBILITY IDEOGRAPH-2F921', + 194850 : 'CJK COMPATIBILITY IDEOGRAPH-2F922', + 194851 : 'CJK COMPATIBILITY IDEOGRAPH-2F923', + 194852 : 'CJK COMPATIBILITY IDEOGRAPH-2F924', + 194853 : 'CJK COMPATIBILITY IDEOGRAPH-2F925', + 194854 : 'CJK COMPATIBILITY IDEOGRAPH-2F926', + 194855 : 'CJK COMPATIBILITY IDEOGRAPH-2F927', + 194856 : 'CJK COMPATIBILITY IDEOGRAPH-2F928', + 194857 : 'CJK COMPATIBILITY IDEOGRAPH-2F929', + 194858 : 'CJK COMPATIBILITY IDEOGRAPH-2F92A', + 194859 : 'CJK COMPATIBILITY IDEOGRAPH-2F92B', + 194860 : 'CJK COMPATIBILITY IDEOGRAPH-2F92C', + 194861 : 'CJK COMPATIBILITY IDEOGRAPH-2F92D', + 194862 : 'CJK COMPATIBILITY IDEOGRAPH-2F92E', + 194863 : 'CJK COMPATIBILITY IDEOGRAPH-2F92F', + 194864 : 'CJK COMPATIBILITY IDEOGRAPH-2F930', + 194865 : 'CJK COMPATIBILITY IDEOGRAPH-2F931', + 194866 : 'CJK COMPATIBILITY IDEOGRAPH-2F932', + 194867 : 'CJK COMPATIBILITY IDEOGRAPH-2F933', + 194868 : 'CJK COMPATIBILITY IDEOGRAPH-2F934', + 194869 : 'CJK COMPATIBILITY IDEOGRAPH-2F935', + 194870 : 'CJK COMPATIBILITY IDEOGRAPH-2F936', + 194871 : 'CJK COMPATIBILITY IDEOGRAPH-2F937', + 194872 : 'CJK COMPATIBILITY IDEOGRAPH-2F938', + 194873 : 'CJK COMPATIBILITY IDEOGRAPH-2F939', + 194874 : 'CJK COMPATIBILITY IDEOGRAPH-2F93A', + 194875 : 'CJK COMPATIBILITY IDEOGRAPH-2F93B', + 194876 : 'CJK COMPATIBILITY IDEOGRAPH-2F93C', + 194877 : 'CJK COMPATIBILITY IDEOGRAPH-2F93D', + 194878 : 'CJK COMPATIBILITY IDEOGRAPH-2F93E', + 194879 : 'CJK COMPATIBILITY IDEOGRAPH-2F93F', + 194880 : 'CJK COMPATIBILITY IDEOGRAPH-2F940', + 194881 : 'CJK COMPATIBILITY IDEOGRAPH-2F941', + 194882 : 'CJK COMPATIBILITY IDEOGRAPH-2F942', + 194883 : 'CJK COMPATIBILITY IDEOGRAPH-2F943', + 194884 : 'CJK COMPATIBILITY IDEOGRAPH-2F944', + 194885 : 'CJK COMPATIBILITY IDEOGRAPH-2F945', + 194886 : 'CJK COMPATIBILITY IDEOGRAPH-2F946', + 194887 : 'CJK COMPATIBILITY IDEOGRAPH-2F947', + 194888 : 'CJK COMPATIBILITY IDEOGRAPH-2F948', + 194889 : 'CJK COMPATIBILITY IDEOGRAPH-2F949', + 194890 : 'CJK COMPATIBILITY IDEOGRAPH-2F94A', + 194891 : 'CJK COMPATIBILITY IDEOGRAPH-2F94B', + 194892 : 'CJK COMPATIBILITY IDEOGRAPH-2F94C', + 194893 : 'CJK COMPATIBILITY IDEOGRAPH-2F94D', + 194894 : 'CJK COMPATIBILITY IDEOGRAPH-2F94E', + 194895 : 'CJK COMPATIBILITY IDEOGRAPH-2F94F', + 194896 : 'CJK COMPATIBILITY IDEOGRAPH-2F950', + 194897 : 'CJK COMPATIBILITY IDEOGRAPH-2F951', + 194898 : 'CJK COMPATIBILITY IDEOGRAPH-2F952', + 194899 : 'CJK COMPATIBILITY IDEOGRAPH-2F953', + 194900 : 'CJK COMPATIBILITY IDEOGRAPH-2F954', + 194901 : 'CJK COMPATIBILITY IDEOGRAPH-2F955', + 194902 : 'CJK COMPATIBILITY IDEOGRAPH-2F956', + 194903 : 'CJK COMPATIBILITY IDEOGRAPH-2F957', + 194904 : 'CJK COMPATIBILITY IDEOGRAPH-2F958', + 194905 : 'CJK COMPATIBILITY IDEOGRAPH-2F959', + 194906 : 'CJK COMPATIBILITY IDEOGRAPH-2F95A', + 194907 : 'CJK COMPATIBILITY IDEOGRAPH-2F95B', + 194908 : 'CJK COMPATIBILITY IDEOGRAPH-2F95C', + 194909 : 'CJK COMPATIBILITY IDEOGRAPH-2F95D', + 194910 : 'CJK COMPATIBILITY IDEOGRAPH-2F95E', + 194911 : 'CJK COMPATIBILITY IDEOGRAPH-2F95F', + 194912 : 'CJK COMPATIBILITY IDEOGRAPH-2F960', + 194913 : 'CJK COMPATIBILITY IDEOGRAPH-2F961', + 194914 : 'CJK COMPATIBILITY IDEOGRAPH-2F962', + 194915 : 'CJK COMPATIBILITY IDEOGRAPH-2F963', + 194916 : 'CJK COMPATIBILITY IDEOGRAPH-2F964', + 194917 : 'CJK COMPATIBILITY IDEOGRAPH-2F965', + 194918 : 'CJK COMPATIBILITY IDEOGRAPH-2F966', + 194919 : 'CJK COMPATIBILITY IDEOGRAPH-2F967', + 194920 : 'CJK COMPATIBILITY IDEOGRAPH-2F968', + 194921 : 'CJK COMPATIBILITY IDEOGRAPH-2F969', + 194922 : 'CJK COMPATIBILITY IDEOGRAPH-2F96A', + 194923 : 'CJK COMPATIBILITY IDEOGRAPH-2F96B', + 194924 : 'CJK COMPATIBILITY IDEOGRAPH-2F96C', + 194925 : 'CJK COMPATIBILITY IDEOGRAPH-2F96D', + 194926 : 'CJK COMPATIBILITY IDEOGRAPH-2F96E', + 194927 : 'CJK COMPATIBILITY IDEOGRAPH-2F96F', + 194928 : 'CJK COMPATIBILITY IDEOGRAPH-2F970', + 194929 : 'CJK COMPATIBILITY IDEOGRAPH-2F971', + 194930 : 'CJK COMPATIBILITY IDEOGRAPH-2F972', + 194931 : 'CJK COMPATIBILITY IDEOGRAPH-2F973', + 194932 : 'CJK COMPATIBILITY IDEOGRAPH-2F974', + 194933 : 'CJK COMPATIBILITY IDEOGRAPH-2F975', + 194934 : 'CJK COMPATIBILITY IDEOGRAPH-2F976', + 194935 : 'CJK COMPATIBILITY IDEOGRAPH-2F977', + 194936 : 'CJK COMPATIBILITY IDEOGRAPH-2F978', + 194937 : 'CJK COMPATIBILITY IDEOGRAPH-2F979', + 194938 : 'CJK COMPATIBILITY IDEOGRAPH-2F97A', + 194939 : 'CJK COMPATIBILITY IDEOGRAPH-2F97B', + 194940 : 'CJK COMPATIBILITY IDEOGRAPH-2F97C', + 194941 : 'CJK COMPATIBILITY IDEOGRAPH-2F97D', + 194942 : 'CJK COMPATIBILITY IDEOGRAPH-2F97E', + 194943 : 'CJK COMPATIBILITY IDEOGRAPH-2F97F', + 194944 : 'CJK COMPATIBILITY IDEOGRAPH-2F980', + 194945 : 'CJK COMPATIBILITY IDEOGRAPH-2F981', + 194946 : 'CJK COMPATIBILITY IDEOGRAPH-2F982', + 194947 : 'CJK COMPATIBILITY IDEOGRAPH-2F983', + 194948 : 'CJK COMPATIBILITY IDEOGRAPH-2F984', + 194949 : 'CJK COMPATIBILITY IDEOGRAPH-2F985', + 194950 : 'CJK COMPATIBILITY IDEOGRAPH-2F986', + 194951 : 'CJK COMPATIBILITY IDEOGRAPH-2F987', + 194952 : 'CJK COMPATIBILITY IDEOGRAPH-2F988', + 194953 : 'CJK COMPATIBILITY IDEOGRAPH-2F989', + 194954 : 'CJK COMPATIBILITY IDEOGRAPH-2F98A', + 194955 : 'CJK COMPATIBILITY IDEOGRAPH-2F98B', + 194956 : 'CJK COMPATIBILITY IDEOGRAPH-2F98C', + 194957 : 'CJK COMPATIBILITY IDEOGRAPH-2F98D', + 194958 : 'CJK COMPATIBILITY IDEOGRAPH-2F98E', + 194959 : 'CJK COMPATIBILITY IDEOGRAPH-2F98F', + 194960 : 'CJK COMPATIBILITY IDEOGRAPH-2F990', + 194961 : 'CJK COMPATIBILITY IDEOGRAPH-2F991', + 194962 : 'CJK COMPATIBILITY IDEOGRAPH-2F992', + 194963 : 'CJK COMPATIBILITY IDEOGRAPH-2F993', + 194964 : 'CJK COMPATIBILITY IDEOGRAPH-2F994', + 194965 : 'CJK COMPATIBILITY IDEOGRAPH-2F995', + 194966 : 'CJK COMPATIBILITY IDEOGRAPH-2F996', + 194967 : 'CJK COMPATIBILITY IDEOGRAPH-2F997', + 194968 : 'CJK COMPATIBILITY IDEOGRAPH-2F998', + 194969 : 'CJK COMPATIBILITY IDEOGRAPH-2F999', + 194970 : 'CJK COMPATIBILITY IDEOGRAPH-2F99A', + 194971 : 'CJK COMPATIBILITY IDEOGRAPH-2F99B', + 194972 : 'CJK COMPATIBILITY IDEOGRAPH-2F99C', + 194973 : 'CJK COMPATIBILITY IDEOGRAPH-2F99D', + 194974 : 'CJK COMPATIBILITY IDEOGRAPH-2F99E', + 194975 : 'CJK COMPATIBILITY IDEOGRAPH-2F99F', + 194976 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A0', + 194977 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A1', + 194978 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A2', + 194979 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A3', + 194980 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A4', + 194981 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A5', + 194982 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A6', + 194983 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A7', + 194984 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A8', + 194985 : 'CJK COMPATIBILITY IDEOGRAPH-2F9A9', + 194986 : 'CJK COMPATIBILITY IDEOGRAPH-2F9AA', + 194987 : 'CJK COMPATIBILITY IDEOGRAPH-2F9AB', + 194988 : 'CJK COMPATIBILITY IDEOGRAPH-2F9AC', + 194989 : 'CJK COMPATIBILITY IDEOGRAPH-2F9AD', + 194990 : 'CJK COMPATIBILITY IDEOGRAPH-2F9AE', + 194991 : 'CJK COMPATIBILITY IDEOGRAPH-2F9AF', + 194992 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B0', + 194993 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B1', + 194994 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B2', + 194995 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B3', + 194996 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B4', + 194997 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B5', + 194998 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B6', + 194999 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B7', + 195000 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B8', + 195001 : 'CJK COMPATIBILITY IDEOGRAPH-2F9B9', + 195002 : 'CJK COMPATIBILITY IDEOGRAPH-2F9BA', + 195003 : 'CJK COMPATIBILITY IDEOGRAPH-2F9BB', + 195004 : 'CJK COMPATIBILITY IDEOGRAPH-2F9BC', + 195005 : 'CJK COMPATIBILITY IDEOGRAPH-2F9BD', + 195006 : 'CJK COMPATIBILITY IDEOGRAPH-2F9BE', + 195007 : 'CJK COMPATIBILITY IDEOGRAPH-2F9BF', + 195008 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C0', + 195009 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C1', + 195010 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C2', + 195011 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C3', + 195012 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C4', + 195013 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C5', + 195014 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C6', + 195015 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C7', + 195016 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C8', + 195017 : 'CJK COMPATIBILITY IDEOGRAPH-2F9C9', + 195018 : 'CJK COMPATIBILITY IDEOGRAPH-2F9CA', + 195019 : 'CJK COMPATIBILITY IDEOGRAPH-2F9CB', + 195020 : 'CJK COMPATIBILITY IDEOGRAPH-2F9CC', + 195021 : 'CJK COMPATIBILITY IDEOGRAPH-2F9CD', + 195022 : 'CJK COMPATIBILITY IDEOGRAPH-2F9CE', + 195023 : 'CJK COMPATIBILITY IDEOGRAPH-2F9CF', + 195024 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D0', + 195025 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D1', + 195026 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D2', + 195027 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D3', + 195028 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D4', + 195029 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D5', + 195030 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D6', + 195031 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D7', + 195032 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D8', + 195033 : 'CJK COMPATIBILITY IDEOGRAPH-2F9D9', + 195034 : 'CJK COMPATIBILITY IDEOGRAPH-2F9DA', + 195035 : 'CJK COMPATIBILITY IDEOGRAPH-2F9DB', + 195036 : 'CJK COMPATIBILITY IDEOGRAPH-2F9DC', + 195037 : 'CJK COMPATIBILITY IDEOGRAPH-2F9DD', + 195038 : 'CJK COMPATIBILITY IDEOGRAPH-2F9DE', + 195039 : 'CJK COMPATIBILITY IDEOGRAPH-2F9DF', + 195040 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E0', + 195041 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E1', + 195042 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E2', + 195043 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E3', + 195044 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E4', + 195045 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E5', + 195046 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E6', + 195047 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E7', + 195048 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E8', + 195049 : 'CJK COMPATIBILITY IDEOGRAPH-2F9E9', + 195050 : 'CJK COMPATIBILITY IDEOGRAPH-2F9EA', + 195051 : 'CJK COMPATIBILITY IDEOGRAPH-2F9EB', + 195052 : 'CJK COMPATIBILITY IDEOGRAPH-2F9EC', + 195053 : 'CJK COMPATIBILITY IDEOGRAPH-2F9ED', + 195054 : 'CJK COMPATIBILITY IDEOGRAPH-2F9EE', + 195055 : 'CJK COMPATIBILITY IDEOGRAPH-2F9EF', + 195056 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F0', + 195057 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F1', + 195058 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F2', + 195059 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F3', + 195060 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F4', + 195061 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F5', + 195062 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F6', + 195063 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F7', + 195064 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F8', + 195065 : 'CJK COMPATIBILITY IDEOGRAPH-2F9F9', + 195066 : 'CJK COMPATIBILITY IDEOGRAPH-2F9FA', + 195067 : 'CJK COMPATIBILITY IDEOGRAPH-2F9FB', + 195068 : 'CJK COMPATIBILITY IDEOGRAPH-2F9FC', + 195069 : 'CJK COMPATIBILITY IDEOGRAPH-2F9FD', + 195070 : 'CJK COMPATIBILITY IDEOGRAPH-2F9FE', + 195071 : 'CJK COMPATIBILITY IDEOGRAPH-2F9FF', + 195072 : 'CJK COMPATIBILITY IDEOGRAPH-2FA00', + 195073 : 'CJK COMPATIBILITY IDEOGRAPH-2FA01', + 195074 : 'CJK COMPATIBILITY IDEOGRAPH-2FA02', + 195075 : 'CJK COMPATIBILITY IDEOGRAPH-2FA03', + 195076 : 'CJK COMPATIBILITY IDEOGRAPH-2FA04', + 195077 : 'CJK COMPATIBILITY IDEOGRAPH-2FA05', + 195078 : 'CJK COMPATIBILITY IDEOGRAPH-2FA06', + 195079 : 'CJK COMPATIBILITY IDEOGRAPH-2FA07', + 195080 : 'CJK COMPATIBILITY IDEOGRAPH-2FA08', + 195081 : 'CJK COMPATIBILITY IDEOGRAPH-2FA09', + 195082 : 'CJK COMPATIBILITY IDEOGRAPH-2FA0A', + 195083 : 'CJK COMPATIBILITY IDEOGRAPH-2FA0B', + 195084 : 'CJK COMPATIBILITY IDEOGRAPH-2FA0C', + 195085 : 'CJK COMPATIBILITY IDEOGRAPH-2FA0D', + 195086 : 'CJK COMPATIBILITY IDEOGRAPH-2FA0E', + 195087 : 'CJK COMPATIBILITY IDEOGRAPH-2FA0F', + 195088 : 'CJK COMPATIBILITY IDEOGRAPH-2FA10', + 195089 : 'CJK COMPATIBILITY IDEOGRAPH-2FA11', + 195090 : 'CJK COMPATIBILITY IDEOGRAPH-2FA12', + 195091 : 'CJK COMPATIBILITY IDEOGRAPH-2FA13', + 195092 : 'CJK COMPATIBILITY IDEOGRAPH-2FA14', + 195093 : 'CJK COMPATIBILITY IDEOGRAPH-2FA15', + 195094 : 'CJK COMPATIBILITY IDEOGRAPH-2FA16', + 195095 : 'CJK COMPATIBILITY IDEOGRAPH-2FA17', + 195096 : 'CJK COMPATIBILITY IDEOGRAPH-2FA18', + 195097 : 'CJK COMPATIBILITY IDEOGRAPH-2FA19', + 195098 : 'CJK COMPATIBILITY IDEOGRAPH-2FA1A', + 195099 : 'CJK COMPATIBILITY IDEOGRAPH-2FA1B', + 195100 : 'CJK COMPATIBILITY IDEOGRAPH-2FA1C', + 195101 : 'CJK COMPATIBILITY IDEOGRAPH-2FA1D', + 917505 : 'LANGUAGE TAG', + 917536 : 'TAG SPACE', + 917537 : 'TAG EXCLAMATION MARK', + 917538 : 'TAG QUOTATION MARK', + 917539 : 'TAG NUMBER SIGN', + 917540 : 'TAG DOLLAR SIGN', + 917541 : 'TAG PERCENT SIGN', + 917542 : 'TAG AMPERSAND', + 917543 : 'TAG APOSTROPHE', + 917544 : 'TAG LEFT PARENTHESIS', + 917545 : 'TAG RIGHT PARENTHESIS', + 917546 : 'TAG ASTERISK', + 917547 : 'TAG PLUS SIGN', + 917548 : 'TAG COMMA', + 917549 : 'TAG HYPHEN-MINUS', + 917550 : 'TAG FULL STOP', + 917551 : 'TAG SOLIDUS', + 917552 : 'TAG DIGIT ZERO', + 917553 : 'TAG DIGIT ONE', + 917554 : 'TAG DIGIT TWO', + 917555 : 'TAG DIGIT THREE', + 917556 : 'TAG DIGIT FOUR', + 917557 : 'TAG DIGIT FIVE', + 917558 : 'TAG DIGIT SIX', + 917559 : 'TAG DIGIT SEVEN', + 917560 : 'TAG DIGIT EIGHT', + 917561 : 'TAG DIGIT NINE', + 917562 : 'TAG COLON', + 917563 : 'TAG SEMICOLON', + 917564 : 'TAG LESS-THAN SIGN', + 917565 : 'TAG EQUALS SIGN', + 917566 : 'TAG GREATER-THAN SIGN', + 917567 : 'TAG QUESTION MARK', + 917568 : 'TAG COMMERCIAL AT', + 917569 : 'TAG LATIN CAPITAL LETTER A', + 917570 : 'TAG LATIN CAPITAL LETTER B', + 917571 : 'TAG LATIN CAPITAL LETTER C', + 917572 : 'TAG LATIN CAPITAL LETTER D', + 917573 : 'TAG LATIN CAPITAL LETTER E', + 917574 : 'TAG LATIN CAPITAL LETTER F', + 917575 : 'TAG LATIN CAPITAL LETTER G', + 917576 : 'TAG LATIN CAPITAL LETTER H', + 917577 : 'TAG LATIN CAPITAL LETTER I', + 917578 : 'TAG LATIN CAPITAL LETTER J', + 917579 : 'TAG LATIN CAPITAL LETTER K', + 917580 : 'TAG LATIN CAPITAL LETTER L', + 917581 : 'TAG LATIN CAPITAL LETTER M', + 917582 : 'TAG LATIN CAPITAL LETTER N', + 917583 : 'TAG LATIN CAPITAL LETTER O', + 917584 : 'TAG LATIN CAPITAL LETTER P', + 917585 : 'TAG LATIN CAPITAL LETTER Q', + 917586 : 'TAG LATIN CAPITAL LETTER R', + 917587 : 'TAG LATIN CAPITAL LETTER S', + 917588 : 'TAG LATIN CAPITAL LETTER T', + 917589 : 'TAG LATIN CAPITAL LETTER U', + 917590 : 'TAG LATIN CAPITAL LETTER V', + 917591 : 'TAG LATIN CAPITAL LETTER W', + 917592 : 'TAG LATIN CAPITAL LETTER X', + 917593 : 'TAG LATIN CAPITAL LETTER Y', + 917594 : 'TAG LATIN CAPITAL LETTER Z', + 917595 : 'TAG LEFT SQUARE BRACKET', + 917596 : 'TAG REVERSE SOLIDUS', + 917597 : 'TAG RIGHT SQUARE BRACKET', + 917598 : 'TAG CIRCUMFLEX ACCENT', + 917599 : 'TAG LOW LINE', + 917600 : 'TAG GRAVE ACCENT', + 917601 : 'TAG LATIN SMALL LETTER A', + 917602 : 'TAG LATIN SMALL LETTER B', + 917603 : 'TAG LATIN SMALL LETTER C', + 917604 : 'TAG LATIN SMALL LETTER D', + 917605 : 'TAG LATIN SMALL LETTER E', + 917606 : 'TAG LATIN SMALL LETTER F', + 917607 : 'TAG LATIN SMALL LETTER G', + 917608 : 'TAG LATIN SMALL LETTER H', + 917609 : 'TAG LATIN SMALL LETTER I', + 917610 : 'TAG LATIN SMALL LETTER J', + 917611 : 'TAG LATIN SMALL LETTER K', + 917612 : 'TAG LATIN SMALL LETTER L', + 917613 : 'TAG LATIN SMALL LETTER M', + 917614 : 'TAG LATIN SMALL LETTER N', + 917615 : 'TAG LATIN SMALL LETTER O', + 917616 : 'TAG LATIN SMALL LETTER P', + 917617 : 'TAG LATIN SMALL LETTER Q', + 917618 : 'TAG LATIN SMALL LETTER R', + 917619 : 'TAG LATIN SMALL LETTER S', + 917620 : 'TAG LATIN SMALL LETTER T', + 917621 : 'TAG LATIN SMALL LETTER U', + 917622 : 'TAG LATIN SMALL LETTER V', + 917623 : 'TAG LATIN SMALL LETTER W', + 917624 : 'TAG LATIN SMALL LETTER X', + 917625 : 'TAG LATIN SMALL LETTER Y', + 917626 : 'TAG LATIN SMALL LETTER Z', + 917627 : 'TAG LEFT CURLY BRACKET', + 917628 : 'TAG VERTICAL LINE', + 917629 : 'TAG RIGHT CURLY BRACKET', + 917630 : 'TAG TILDE', + 917631 : 'CANCEL TAG', + 983040 : '', + 1048573 : '', + 1048576 : '', + 1114109 : '', +} + +charcodeByName = { + '' : 13312, + '' : 19893, + '' : 131072, + '' : 173782, + '' : 19968, + '' : 40869, + '' : 44032, + '' : 55203, + '' : 56320, + '' : 57343, + '' : 55296, + '' : 56191, + '' : 983040, + '' : 1048573, + '' : 1048576, + '' : 1114109, + '' : 56192, + '' : 56319, + '' : 57344, + '' : 63743, + '' : 159, + 'ACCOUNT OF' : 8448, + 'ACTIVATE ARABIC FORM SHAPING' : 8301, + 'ACTIVATE SYMMETRIC SWAPPING' : 8299, + 'ACUTE ACCENT' : 180, + 'ACUTE ANGLE' : 10655, + 'ADDRESSED TO THE SUBJECT' : 8449, + 'ADI SHAKTI' : 9772, + 'AIRPLANE' : 9992, + 'ALEF SYMBOL' : 8501, + 'ALL AROUND-PROFILE' : 9006, + 'ALL EQUAL TO' : 8780, + 'ALMOST EQUAL OR EQUAL TO' : 8778, + 'ALMOST EQUAL TO' : 8776, + 'ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT' : 10863, + 'ALTERNATIVE KEY SYMBOL' : 9095, + 'AMALGAMATION OR COPRODUCT' : 10815, + 'AMPERSAND' : 38, + 'AND WITH DOT' : 10193, + 'ANGLE' : 8736, + 'ANGLE WITH S INSIDE' : 10654, + 'ANGLE WITH UNDERBAR' : 10660, + 'ANGSTROM SIGN' : 8491, + 'ANKH' : 9765, + 'ANTICLOCKWISE CLOSED CIRCLE ARROW' : 10560, + 'ANTICLOCKWISE CONTOUR INTEGRAL' : 8755, + 'ANTICLOCKWISE GAPPED CIRCLE ARROW' : 10226, + 'ANTICLOCKWISE INTEGRATION' : 10769, + 'ANTICLOCKWISE OPEN CIRCLE ARROW' : 8634, + 'ANTICLOCKWISE TOP SEMICIRCLE ARROW' : 8630, + 'APL FUNCTIONAL SYMBOL ALPHA' : 9082, + 'APL FUNCTIONAL SYMBOL ALPHA UNDERBAR' : 9078, + 'APL FUNCTIONAL SYMBOL BACKSLASH BAR' : 9024, + 'APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH' : 9033, + 'APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS' : 9061, + 'APL FUNCTIONAL SYMBOL CIRCLE JOT' : 9022, + 'APL FUNCTIONAL SYMBOL CIRCLE STAR' : 9055, + 'APL FUNCTIONAL SYMBOL CIRCLE STILE' : 9021, + 'APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR' : 9052, + 'APL FUNCTIONAL SYMBOL COMMA BAR' : 9066, + 'APL FUNCTIONAL SYMBOL DEL DIAERESIS' : 9058, + 'APL FUNCTIONAL SYMBOL DEL STILE' : 9042, + 'APL FUNCTIONAL SYMBOL DEL TILDE' : 9067, + 'APL FUNCTIONAL SYMBOL DELTA STILE' : 9035, + 'APL FUNCTIONAL SYMBOL DELTA UNDERBAR' : 9049, + 'APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR' : 9050, + 'APL FUNCTIONAL SYMBOL DOWN CARET TILDE' : 9073, + 'APL FUNCTIONAL SYMBOL DOWN SHOE STILE' : 9062, + 'APL FUNCTIONAL SYMBOL DOWN TACK JOT' : 9038, + 'APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR' : 9034, + 'APL FUNCTIONAL SYMBOL DOWNWARDS VANE' : 9046, + 'APL FUNCTIONAL SYMBOL EPSILON UNDERBAR' : 9079, + 'APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS' : 9065, + 'APL FUNCTIONAL SYMBOL I-BEAM' : 9014, + 'APL FUNCTIONAL SYMBOL IOTA' : 9075, + 'APL FUNCTIONAL SYMBOL IOTA UNDERBAR' : 9080, + 'APL FUNCTIONAL SYMBOL JOT DIAERESIS' : 9060, + 'APL FUNCTIONAL SYMBOL JOT UNDERBAR' : 9051, + 'APL FUNCTIONAL SYMBOL LEFT SHOE STILE' : 9063, + 'APL FUNCTIONAL SYMBOL LEFTWARDS VANE' : 9029, + 'APL FUNCTIONAL SYMBOL OMEGA' : 9077, + 'APL FUNCTIONAL SYMBOL OMEGA UNDERBAR' : 9081, + 'APL FUNCTIONAL SYMBOL QUAD' : 9109, + 'APL FUNCTIONAL SYMBOL QUAD BACKSLASH' : 9026, + 'APL FUNCTIONAL SYMBOL QUAD CIRCLE' : 9020, + 'APL FUNCTIONAL SYMBOL QUAD COLON' : 9056, + 'APL FUNCTIONAL SYMBOL QUAD DEL' : 9044, + 'APL FUNCTIONAL SYMBOL QUAD DELTA' : 9037, + 'APL FUNCTIONAL SYMBOL QUAD DIAMOND' : 9018, + 'APL FUNCTIONAL SYMBOL QUAD DIVIDE' : 9017, + 'APL FUNCTIONAL SYMBOL QUAD DOWN CARET' : 9036, + 'APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW' : 9047, + 'APL FUNCTIONAL SYMBOL QUAD EQUAL' : 9016, + 'APL FUNCTIONAL SYMBOL QUAD GREATER-THAN' : 9028, + 'APL FUNCTIONAL SYMBOL QUAD JOT' : 9019, + 'APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW' : 9031, + 'APL FUNCTIONAL SYMBOL QUAD LESS-THAN' : 9027, + 'APL FUNCTIONAL SYMBOL QUAD NOT EQUAL' : 9071, + 'APL FUNCTIONAL SYMBOL QUAD QUESTION' : 9072, + 'APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW' : 9032, + 'APL FUNCTIONAL SYMBOL QUAD SLASH' : 9025, + 'APL FUNCTIONAL SYMBOL QUAD UP CARET' : 9043, + 'APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW' : 9040, + 'APL FUNCTIONAL SYMBOL QUOTE QUAD' : 9054, + 'APL FUNCTIONAL SYMBOL QUOTE UNDERBAR' : 9048, + 'APL FUNCTIONAL SYMBOL RHO' : 9076, + 'APL FUNCTIONAL SYMBOL RIGHTWARDS VANE' : 9030, + 'APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR' : 9070, + 'APL FUNCTIONAL SYMBOL SLASH BAR' : 9023, + 'APL FUNCTIONAL SYMBOL SQUISH QUAD' : 9015, + 'APL FUNCTIONAL SYMBOL STAR DIAERESIS' : 9059, + 'APL FUNCTIONAL SYMBOL STILE TILDE' : 9069, + 'APL FUNCTIONAL SYMBOL TILDE DIAERESIS' : 9064, + 'APL FUNCTIONAL SYMBOL UP CARET TILDE' : 9074, + 'APL FUNCTIONAL SYMBOL UP SHOE JOT' : 9053, + 'APL FUNCTIONAL SYMBOL UP TACK DIAERESIS' : 9057, + 'APL FUNCTIONAL SYMBOL UP TACK JOT' : 9045, + 'APL FUNCTIONAL SYMBOL UP TACK OVERBAR' : 9041, + 'APL FUNCTIONAL SYMBOL UPWARDS VANE' : 9039, + 'APL FUNCTIONAL SYMBOL ZILDE' : 9068, + 'APOSTROPHE' : 39, + 'APPROACHES THE LIMIT' : 8784, + 'APPROXIMATELY BUT NOT ACTUALLY EQUAL TO' : 8774, + 'APPROXIMATELY EQUAL OR EQUAL TO' : 10864, + 'APPROXIMATELY EQUAL TO' : 8773, + 'APPROXIMATELY EQUAL TO OR THE IMAGE OF' : 8786, + 'AQUARIUS' : 9810, + 'ARABIC COMMA' : 1548, + 'ARABIC DAMMA' : 1615, + 'ARABIC DAMMA ISOLATED FORM' : 65144, + 'ARABIC DAMMA MEDIAL FORM' : 65145, + 'ARABIC DAMMATAN' : 1612, + 'ARABIC DAMMATAN ISOLATED FORM' : 65138, + 'ARABIC DECIMAL SEPARATOR' : 1643, + 'ARABIC EMPTY CENTRE HIGH STOP' : 1771, + 'ARABIC EMPTY CENTRE LOW STOP' : 1770, + 'ARABIC END OF AYAH' : 1757, + 'ARABIC FATHA' : 1614, + 'ARABIC FATHA ISOLATED FORM' : 65142, + 'ARABIC FATHA MEDIAL FORM' : 65143, + 'ARABIC FATHATAN' : 1611, + 'ARABIC FATHATAN ISOLATED FORM' : 65136, + 'ARABIC FIVE POINTED STAR' : 1645, + 'ARABIC FULL STOP' : 1748, + 'ARABIC HAMZA ABOVE' : 1620, + 'ARABIC HAMZA BELOW' : 1621, + 'ARABIC KASRA' : 1616, + 'ARABIC KASRA ISOLATED FORM' : 65146, + 'ARABIC KASRA MEDIAL FORM' : 65147, + 'ARABIC KASRATAN' : 1613, + 'ARABIC KASRATAN ISOLATED FORM' : 65140, + 'ARABIC LETTER AE' : 1749, + 'ARABIC LETTER AIN' : 1593, + 'ARABIC LETTER AIN FINAL FORM' : 65226, + 'ARABIC LETTER AIN INITIAL FORM' : 65227, + 'ARABIC LETTER AIN ISOLATED FORM' : 65225, + 'ARABIC LETTER AIN MEDIAL FORM' : 65228, + 'ARABIC LETTER AIN WITH THREE DOTS ABOVE' : 1696, + 'ARABIC LETTER ALEF' : 1575, + 'ARABIC LETTER ALEF FINAL FORM' : 65166, + 'ARABIC LETTER ALEF ISOLATED FORM' : 65165, + 'ARABIC LETTER ALEF MAKSURA' : 1609, + 'ARABIC LETTER ALEF MAKSURA FINAL FORM' : 65264, + 'ARABIC LETTER ALEF MAKSURA ISOLATED FORM' : 65263, + 'ARABIC LETTER ALEF WASLA' : 1649, + 'ARABIC LETTER ALEF WASLA FINAL FORM' : 64337, + 'ARABIC LETTER ALEF WASLA ISOLATED FORM' : 64336, + 'ARABIC LETTER ALEF WITH HAMZA ABOVE' : 1571, + 'ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM' : 65156, + 'ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM' : 65155, + 'ARABIC LETTER ALEF WITH HAMZA BELOW' : 1573, + 'ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM' : 65160, + 'ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM' : 65159, + 'ARABIC LETTER ALEF WITH MADDA ABOVE' : 1570, + 'ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM' : 65154, + 'ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM' : 65153, + 'ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE' : 1650, + 'ARABIC LETTER ALEF WITH WAVY HAMZA BELOW' : 1651, + 'ARABIC LETTER BEEH' : 1659, + 'ARABIC LETTER BEEH FINAL FORM' : 64339, + 'ARABIC LETTER BEEH INITIAL FORM' : 64340, + 'ARABIC LETTER BEEH ISOLATED FORM' : 64338, + 'ARABIC LETTER BEEH MEDIAL FORM' : 64341, + 'ARABIC LETTER BEH' : 1576, + 'ARABIC LETTER BEH FINAL FORM' : 65168, + 'ARABIC LETTER BEH INITIAL FORM' : 65169, + 'ARABIC LETTER BEH ISOLATED FORM' : 65167, + 'ARABIC LETTER BEH MEDIAL FORM' : 65170, + 'ARABIC LETTER BEHEH' : 1664, + 'ARABIC LETTER BEHEH FINAL FORM' : 64347, + 'ARABIC LETTER BEHEH INITIAL FORM' : 64348, + 'ARABIC LETTER BEHEH ISOLATED FORM' : 64346, + 'ARABIC LETTER BEHEH MEDIAL FORM' : 64349, + 'ARABIC LETTER DAD' : 1590, + 'ARABIC LETTER DAD FINAL FORM' : 65214, + 'ARABIC LETTER DAD INITIAL FORM' : 65215, + 'ARABIC LETTER DAD ISOLATED FORM' : 65213, + 'ARABIC LETTER DAD MEDIAL FORM' : 65216, + 'ARABIC LETTER DAD WITH DOT BELOW' : 1787, + 'ARABIC LETTER DAHAL' : 1676, + 'ARABIC LETTER DAHAL FINAL FORM' : 64389, + 'ARABIC LETTER DAHAL ISOLATED FORM' : 64388, + 'ARABIC LETTER DAL' : 1583, + 'ARABIC LETTER DAL FINAL FORM' : 65194, + 'ARABIC LETTER DAL ISOLATED FORM' : 65193, + 'ARABIC LETTER DAL WITH DOT BELOW' : 1674, + 'ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH' : 1675, + 'ARABIC LETTER DAL WITH FOUR DOTS ABOVE' : 1680, + 'ARABIC LETTER DAL WITH RING' : 1673, + 'ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS' : 1679, + 'ARABIC LETTER DDAHAL' : 1677, + 'ARABIC LETTER DDAHAL FINAL FORM' : 64387, + 'ARABIC LETTER DDAHAL ISOLATED FORM' : 64386, + 'ARABIC LETTER DDAL' : 1672, + 'ARABIC LETTER DDAL FINAL FORM' : 64393, + 'ARABIC LETTER DDAL ISOLATED FORM' : 64392, + 'ARABIC LETTER DOTLESS BEH' : 1646, + 'ARABIC LETTER DOTLESS FEH' : 1697, + 'ARABIC LETTER DOTLESS QAF' : 1647, + 'ARABIC LETTER DUL' : 1678, + 'ARABIC LETTER DUL FINAL FORM' : 64391, + 'ARABIC LETTER DUL ISOLATED FORM' : 64390, + 'ARABIC LETTER DYEH' : 1668, + 'ARABIC LETTER DYEH FINAL FORM' : 64371, + 'ARABIC LETTER DYEH INITIAL FORM' : 64372, + 'ARABIC LETTER DYEH ISOLATED FORM' : 64370, + 'ARABIC LETTER DYEH MEDIAL FORM' : 64373, + 'ARABIC LETTER E' : 1744, + 'ARABIC LETTER E FINAL FORM' : 64485, + 'ARABIC LETTER E INITIAL FORM' : 64486, + 'ARABIC LETTER E ISOLATED FORM' : 64484, + 'ARABIC LETTER E MEDIAL FORM' : 64487, + 'ARABIC LETTER FARSI YEH' : 1740, + 'ARABIC LETTER FARSI YEH FINAL FORM' : 64509, + 'ARABIC LETTER FARSI YEH INITIAL FORM' : 64510, + 'ARABIC LETTER FARSI YEH ISOLATED FORM' : 64508, + 'ARABIC LETTER FARSI YEH MEDIAL FORM' : 64511, + 'ARABIC LETTER FEH' : 1601, + 'ARABIC LETTER FEH FINAL FORM' : 65234, + 'ARABIC LETTER FEH INITIAL FORM' : 65235, + 'ARABIC LETTER FEH ISOLATED FORM' : 65233, + 'ARABIC LETTER FEH MEDIAL FORM' : 65236, + 'ARABIC LETTER FEH WITH DOT BELOW' : 1699, + 'ARABIC LETTER FEH WITH DOT MOVED BELOW' : 1698, + 'ARABIC LETTER FEH WITH THREE DOTS BELOW' : 1701, + 'ARABIC LETTER GAF' : 1711, + 'ARABIC LETTER GAF FINAL FORM' : 64403, + 'ARABIC LETTER GAF INITIAL FORM' : 64404, + 'ARABIC LETTER GAF ISOLATED FORM' : 64402, + 'ARABIC LETTER GAF MEDIAL FORM' : 64405, + 'ARABIC LETTER GAF WITH RING' : 1712, + 'ARABIC LETTER GAF WITH THREE DOTS ABOVE' : 1716, + 'ARABIC LETTER GAF WITH TWO DOTS BELOW' : 1714, + 'ARABIC LETTER GHAIN' : 1594, + 'ARABIC LETTER GHAIN FINAL FORM' : 65230, + 'ARABIC LETTER GHAIN INITIAL FORM' : 65231, + 'ARABIC LETTER GHAIN ISOLATED FORM' : 65229, + 'ARABIC LETTER GHAIN MEDIAL FORM' : 65232, + 'ARABIC LETTER GHAIN WITH DOT BELOW' : 1788, + 'ARABIC LETTER GUEH' : 1715, + 'ARABIC LETTER GUEH FINAL FORM' : 64407, + 'ARABIC LETTER GUEH INITIAL FORM' : 64408, + 'ARABIC LETTER GUEH ISOLATED FORM' : 64406, + 'ARABIC LETTER GUEH MEDIAL FORM' : 64409, + 'ARABIC LETTER HAH' : 1581, + 'ARABIC LETTER HAH FINAL FORM' : 65186, + 'ARABIC LETTER HAH INITIAL FORM' : 65187, + 'ARABIC LETTER HAH ISOLATED FORM' : 65185, + 'ARABIC LETTER HAH MEDIAL FORM' : 65188, + 'ARABIC LETTER HAH WITH HAMZA ABOVE' : 1665, + 'ARABIC LETTER HAH WITH THREE DOTS ABOVE' : 1669, + 'ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE' : 1666, + 'ARABIC LETTER HAMZA' : 1569, + 'ARABIC LETTER HAMZA ISOLATED FORM' : 65152, + 'ARABIC LETTER HEH' : 1607, + 'ARABIC LETTER HEH DOACHASHMEE' : 1726, + 'ARABIC LETTER HEH DOACHASHMEE FINAL FORM' : 64427, + 'ARABIC LETTER HEH DOACHASHMEE INITIAL FORM' : 64428, + 'ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM' : 64426, + 'ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM' : 64429, + 'ARABIC LETTER HEH FINAL FORM' : 65258, + 'ARABIC LETTER HEH GOAL' : 1729, + 'ARABIC LETTER HEH GOAL FINAL FORM' : 64423, + 'ARABIC LETTER HEH GOAL INITIAL FORM' : 64424, + 'ARABIC LETTER HEH GOAL ISOLATED FORM' : 64422, + 'ARABIC LETTER HEH GOAL MEDIAL FORM' : 64425, + 'ARABIC LETTER HEH GOAL WITH HAMZA ABOVE' : 1730, + 'ARABIC LETTER HEH INITIAL FORM' : 65259, + 'ARABIC LETTER HEH ISOLATED FORM' : 65257, + 'ARABIC LETTER HEH MEDIAL FORM' : 65260, + 'ARABIC LETTER HEH WITH YEH ABOVE' : 1728, + 'ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM' : 64421, + 'ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM' : 64420, + 'ARABIC LETTER HIGH HAMZA' : 1652, + 'ARABIC LETTER HIGH HAMZA ALEF' : 1653, + 'ARABIC LETTER HIGH HAMZA WAW' : 1654, + 'ARABIC LETTER HIGH HAMZA YEH' : 1656, + 'ARABIC LETTER JEEM' : 1580, + 'ARABIC LETTER JEEM FINAL FORM' : 65182, + 'ARABIC LETTER JEEM INITIAL FORM' : 65183, + 'ARABIC LETTER JEEM ISOLATED FORM' : 65181, + 'ARABIC LETTER JEEM MEDIAL FORM' : 65184, + 'ARABIC LETTER JEH' : 1688, + 'ARABIC LETTER JEH FINAL FORM' : 64395, + 'ARABIC LETTER JEH ISOLATED FORM' : 64394, + 'ARABIC LETTER KAF' : 1603, + 'ARABIC LETTER KAF FINAL FORM' : 65242, + 'ARABIC LETTER KAF INITIAL FORM' : 65243, + 'ARABIC LETTER KAF ISOLATED FORM' : 65241, + 'ARABIC LETTER KAF MEDIAL FORM' : 65244, + 'ARABIC LETTER KAF WITH DOT ABOVE' : 1708, + 'ARABIC LETTER KAF WITH RING' : 1707, + 'ARABIC LETTER KAF WITH THREE DOTS BELOW' : 1710, + 'ARABIC LETTER KEHEH' : 1705, + 'ARABIC LETTER KEHEH FINAL FORM' : 64399, + 'ARABIC LETTER KEHEH INITIAL FORM' : 64400, + 'ARABIC LETTER KEHEH ISOLATED FORM' : 64398, + 'ARABIC LETTER KEHEH MEDIAL FORM' : 64401, + 'ARABIC LETTER KHAH' : 1582, + 'ARABIC LETTER KHAH FINAL FORM' : 65190, + 'ARABIC LETTER KHAH INITIAL FORM' : 65191, + 'ARABIC LETTER KHAH ISOLATED FORM' : 65189, + 'ARABIC LETTER KHAH MEDIAL FORM' : 65192, + 'ARABIC LETTER KIRGHIZ OE' : 1733, + 'ARABIC LETTER KIRGHIZ OE FINAL FORM' : 64481, + 'ARABIC LETTER KIRGHIZ OE ISOLATED FORM' : 64480, + 'ARABIC LETTER KIRGHIZ YU' : 1737, + 'ARABIC LETTER KIRGHIZ YU FINAL FORM' : 64483, + 'ARABIC LETTER KIRGHIZ YU ISOLATED FORM' : 64482, + 'ARABIC LETTER LAM' : 1604, + 'ARABIC LETTER LAM FINAL FORM' : 65246, + 'ARABIC LETTER LAM INITIAL FORM' : 65247, + 'ARABIC LETTER LAM ISOLATED FORM' : 65245, + 'ARABIC LETTER LAM MEDIAL FORM' : 65248, + 'ARABIC LETTER LAM WITH DOT ABOVE' : 1718, + 'ARABIC LETTER LAM WITH SMALL V' : 1717, + 'ARABIC LETTER LAM WITH THREE DOTS ABOVE' : 1719, + 'ARABIC LETTER LAM WITH THREE DOTS BELOW' : 1720, + 'ARABIC LETTER MEEM' : 1605, + 'ARABIC LETTER MEEM FINAL FORM' : 65250, + 'ARABIC LETTER MEEM INITIAL FORM' : 65251, + 'ARABIC LETTER MEEM ISOLATED FORM' : 65249, + 'ARABIC LETTER MEEM MEDIAL FORM' : 65252, + 'ARABIC LETTER NG' : 1709, + 'ARABIC LETTER NG FINAL FORM' : 64468, + 'ARABIC LETTER NG INITIAL FORM' : 64469, + 'ARABIC LETTER NG ISOLATED FORM' : 64467, + 'ARABIC LETTER NG MEDIAL FORM' : 64470, + 'ARABIC LETTER NGOEH' : 1713, + 'ARABIC LETTER NGOEH FINAL FORM' : 64411, + 'ARABIC LETTER NGOEH INITIAL FORM' : 64412, + 'ARABIC LETTER NGOEH ISOLATED FORM' : 64410, + 'ARABIC LETTER NGOEH MEDIAL FORM' : 64413, + 'ARABIC LETTER NOON' : 1606, + 'ARABIC LETTER NOON FINAL FORM' : 65254, + 'ARABIC LETTER NOON GHUNNA' : 1722, + 'ARABIC LETTER NOON GHUNNA FINAL FORM' : 64415, + 'ARABIC LETTER NOON GHUNNA ISOLATED FORM' : 64414, + 'ARABIC LETTER NOON INITIAL FORM' : 65255, + 'ARABIC LETTER NOON ISOLATED FORM' : 65253, + 'ARABIC LETTER NOON MEDIAL FORM' : 65256, + 'ARABIC LETTER NOON WITH DOT BELOW' : 1721, + 'ARABIC LETTER NOON WITH RING' : 1724, + 'ARABIC LETTER NOON WITH THREE DOTS ABOVE' : 1725, + 'ARABIC LETTER NYEH' : 1667, + 'ARABIC LETTER NYEH FINAL FORM' : 64375, + 'ARABIC LETTER NYEH INITIAL FORM' : 64376, + 'ARABIC LETTER NYEH ISOLATED FORM' : 64374, + 'ARABIC LETTER NYEH MEDIAL FORM' : 64377, + 'ARABIC LETTER OE' : 1734, + 'ARABIC LETTER OE FINAL FORM' : 64474, + 'ARABIC LETTER OE ISOLATED FORM' : 64473, + 'ARABIC LETTER PEH' : 1662, + 'ARABIC LETTER PEH FINAL FORM' : 64343, + 'ARABIC LETTER PEH INITIAL FORM' : 64344, + 'ARABIC LETTER PEH ISOLATED FORM' : 64342, + 'ARABIC LETTER PEH MEDIAL FORM' : 64345, + 'ARABIC LETTER PEHEH' : 1702, + 'ARABIC LETTER PEHEH FINAL FORM' : 64367, + 'ARABIC LETTER PEHEH INITIAL FORM' : 64368, + 'ARABIC LETTER PEHEH ISOLATED FORM' : 64366, + 'ARABIC LETTER PEHEH MEDIAL FORM' : 64369, + 'ARABIC LETTER QAF' : 1602, + 'ARABIC LETTER QAF FINAL FORM' : 65238, + 'ARABIC LETTER QAF INITIAL FORM' : 65239, + 'ARABIC LETTER QAF ISOLATED FORM' : 65237, + 'ARABIC LETTER QAF MEDIAL FORM' : 65240, + 'ARABIC LETTER QAF WITH DOT ABOVE' : 1703, + 'ARABIC LETTER QAF WITH THREE DOTS ABOVE' : 1704, + 'ARABIC LETTER REH' : 1585, + 'ARABIC LETTER REH FINAL FORM' : 65198, + 'ARABIC LETTER REH ISOLATED FORM' : 65197, + 'ARABIC LETTER REH WITH DOT BELOW' : 1684, + 'ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE' : 1686, + 'ARABIC LETTER REH WITH FOUR DOTS ABOVE' : 1689, + 'ARABIC LETTER REH WITH RING' : 1683, + 'ARABIC LETTER REH WITH SMALL V' : 1682, + 'ARABIC LETTER REH WITH SMALL V BELOW' : 1685, + 'ARABIC LETTER REH WITH TWO DOTS ABOVE' : 1687, + 'ARABIC LETTER RNOON' : 1723, + 'ARABIC LETTER RNOON FINAL FORM' : 64417, + 'ARABIC LETTER RNOON INITIAL FORM' : 64418, + 'ARABIC LETTER RNOON ISOLATED FORM' : 64416, + 'ARABIC LETTER RNOON MEDIAL FORM' : 64419, + 'ARABIC LETTER RREH' : 1681, + 'ARABIC LETTER RREH FINAL FORM' : 64397, + 'ARABIC LETTER RREH ISOLATED FORM' : 64396, + 'ARABIC LETTER SAD' : 1589, + 'ARABIC LETTER SAD FINAL FORM' : 65210, + 'ARABIC LETTER SAD INITIAL FORM' : 65211, + 'ARABIC LETTER SAD ISOLATED FORM' : 65209, + 'ARABIC LETTER SAD MEDIAL FORM' : 65212, + 'ARABIC LETTER SAD WITH THREE DOTS ABOVE' : 1694, + 'ARABIC LETTER SAD WITH TWO DOTS BELOW' : 1693, + 'ARABIC LETTER SEEN' : 1587, + 'ARABIC LETTER SEEN FINAL FORM' : 65202, + 'ARABIC LETTER SEEN INITIAL FORM' : 65203, + 'ARABIC LETTER SEEN ISOLATED FORM' : 65201, + 'ARABIC LETTER SEEN MEDIAL FORM' : 65204, + 'ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE' : 1690, + 'ARABIC LETTER SEEN WITH THREE DOTS BELOW' : 1691, + 'ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE' : 1692, + 'ARABIC LETTER SHEEN' : 1588, + 'ARABIC LETTER SHEEN FINAL FORM' : 65206, + 'ARABIC LETTER SHEEN INITIAL FORM' : 65207, + 'ARABIC LETTER SHEEN ISOLATED FORM' : 65205, + 'ARABIC LETTER SHEEN MEDIAL FORM' : 65208, + 'ARABIC LETTER SHEEN WITH DOT BELOW' : 1786, + 'ARABIC LETTER SUPERSCRIPT ALEF' : 1648, + 'ARABIC LETTER SWASH KAF' : 1706, + 'ARABIC LETTER TAH' : 1591, + 'ARABIC LETTER TAH FINAL FORM' : 65218, + 'ARABIC LETTER TAH INITIAL FORM' : 65219, + 'ARABIC LETTER TAH ISOLATED FORM' : 65217, + 'ARABIC LETTER TAH MEDIAL FORM' : 65220, + 'ARABIC LETTER TAH WITH THREE DOTS ABOVE' : 1695, + 'ARABIC LETTER TCHEH' : 1670, + 'ARABIC LETTER TCHEH FINAL FORM' : 64379, + 'ARABIC LETTER TCHEH INITIAL FORM' : 64380, + 'ARABIC LETTER TCHEH ISOLATED FORM' : 64378, + 'ARABIC LETTER TCHEH MEDIAL FORM' : 64381, + 'ARABIC LETTER TCHEH WITH DOT ABOVE' : 1727, + 'ARABIC LETTER TCHEHEH' : 1671, + 'ARABIC LETTER TCHEHEH FINAL FORM' : 64383, + 'ARABIC LETTER TCHEHEH INITIAL FORM' : 64384, + 'ARABIC LETTER TCHEHEH ISOLATED FORM' : 64382, + 'ARABIC LETTER TCHEHEH MEDIAL FORM' : 64385, + 'ARABIC LETTER TEH' : 1578, + 'ARABIC LETTER TEH FINAL FORM' : 65174, + 'ARABIC LETTER TEH INITIAL FORM' : 65175, + 'ARABIC LETTER TEH ISOLATED FORM' : 65173, + 'ARABIC LETTER TEH MARBUTA' : 1577, + 'ARABIC LETTER TEH MARBUTA FINAL FORM' : 65172, + 'ARABIC LETTER TEH MARBUTA GOAL' : 1731, + 'ARABIC LETTER TEH MARBUTA ISOLATED FORM' : 65171, + 'ARABIC LETTER TEH MEDIAL FORM' : 65176, + 'ARABIC LETTER TEH WITH RING' : 1660, + 'ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS' : 1661, + 'ARABIC LETTER TEHEH' : 1663, + 'ARABIC LETTER TEHEH FINAL FORM' : 64355, + 'ARABIC LETTER TEHEH INITIAL FORM' : 64356, + 'ARABIC LETTER TEHEH ISOLATED FORM' : 64354, + 'ARABIC LETTER TEHEH MEDIAL FORM' : 64357, + 'ARABIC LETTER THAL' : 1584, + 'ARABIC LETTER THAL FINAL FORM' : 65196, + 'ARABIC LETTER THAL ISOLATED FORM' : 65195, + 'ARABIC LETTER THEH' : 1579, + 'ARABIC LETTER THEH FINAL FORM' : 65178, + 'ARABIC LETTER THEH INITIAL FORM' : 65179, + 'ARABIC LETTER THEH ISOLATED FORM' : 65177, + 'ARABIC LETTER THEH MEDIAL FORM' : 65180, + 'ARABIC LETTER TTEH' : 1657, + 'ARABIC LETTER TTEH FINAL FORM' : 64359, + 'ARABIC LETTER TTEH INITIAL FORM' : 64360, + 'ARABIC LETTER TTEH ISOLATED FORM' : 64358, + 'ARABIC LETTER TTEH MEDIAL FORM' : 64361, + 'ARABIC LETTER TTEHEH' : 1658, + 'ARABIC LETTER TTEHEH FINAL FORM' : 64351, + 'ARABIC LETTER TTEHEH INITIAL FORM' : 64352, + 'ARABIC LETTER TTEHEH ISOLATED FORM' : 64350, + 'ARABIC LETTER TTEHEH MEDIAL FORM' : 64353, + 'ARABIC LETTER U' : 1735, + 'ARABIC LETTER U FINAL FORM' : 64472, + 'ARABIC LETTER U ISOLATED FORM' : 64471, + 'ARABIC LETTER U WITH HAMZA ABOVE' : 1655, + 'ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM' : 64477, + 'ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM' : 64488, + 'ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM' : 64489, + 'ARABIC LETTER VE' : 1739, + 'ARABIC LETTER VE FINAL FORM' : 64479, + 'ARABIC LETTER VE ISOLATED FORM' : 64478, + 'ARABIC LETTER VEH' : 1700, + 'ARABIC LETTER VEH FINAL FORM' : 64363, + 'ARABIC LETTER VEH INITIAL FORM' : 64364, + 'ARABIC LETTER VEH ISOLATED FORM' : 64362, + 'ARABIC LETTER VEH MEDIAL FORM' : 64365, + 'ARABIC LETTER WAW' : 1608, + 'ARABIC LETTER WAW FINAL FORM' : 65262, + 'ARABIC LETTER WAW ISOLATED FORM' : 65261, + 'ARABIC LETTER WAW WITH DOT ABOVE' : 1743, + 'ARABIC LETTER WAW WITH HAMZA ABOVE' : 1572, + 'ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM' : 65158, + 'ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM' : 65157, + 'ARABIC LETTER WAW WITH RING' : 1732, + 'ARABIC LETTER WAW WITH TWO DOTS ABOVE' : 1738, + 'ARABIC LETTER YEH' : 1610, + 'ARABIC LETTER YEH BARREE' : 1746, + 'ARABIC LETTER YEH BARREE FINAL FORM' : 64431, + 'ARABIC LETTER YEH BARREE ISOLATED FORM' : 64430, + 'ARABIC LETTER YEH BARREE WITH HAMZA ABOVE' : 1747, + 'ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM' : 64433, + 'ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM' : 64432, + 'ARABIC LETTER YEH FINAL FORM' : 65266, + 'ARABIC LETTER YEH INITIAL FORM' : 65267, + 'ARABIC LETTER YEH ISOLATED FORM' : 65265, + 'ARABIC LETTER YEH MEDIAL FORM' : 65268, + 'ARABIC LETTER YEH WITH HAMZA ABOVE' : 1574, + 'ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM' : 65162, + 'ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM' : 65163, + 'ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM' : 65161, + 'ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM' : 65164, + 'ARABIC LETTER YEH WITH SMALL V' : 1742, + 'ARABIC LETTER YEH WITH TAIL' : 1741, + 'ARABIC LETTER YEH WITH THREE DOTS BELOW' : 1745, + 'ARABIC LETTER YU' : 1736, + 'ARABIC LETTER YU FINAL FORM' : 64476, + 'ARABIC LETTER YU ISOLATED FORM' : 64475, + 'ARABIC LETTER ZAH' : 1592, + 'ARABIC LETTER ZAH FINAL FORM' : 65222, + 'ARABIC LETTER ZAH INITIAL FORM' : 65223, + 'ARABIC LETTER ZAH ISOLATED FORM' : 65221, + 'ARABIC LETTER ZAH MEDIAL FORM' : 65224, + 'ARABIC LETTER ZAIN' : 1586, + 'ARABIC LETTER ZAIN FINAL FORM' : 65200, + 'ARABIC LETTER ZAIN ISOLATED FORM' : 65199, + 'ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM' : 64787, + 'ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM' : 64759, + 'ARABIC LIGATURE AIN WITH JEEM INITIAL FORM' : 64698, + 'ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM' : 64553, + 'ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM' : 64885, + 'ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM' : 64964, + 'ARABIC LIGATURE AIN WITH MEEM INITIAL FORM' : 64699, + 'ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM' : 64554, + 'ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM' : 64888, + 'ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM' : 64886, + 'ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM' : 64887, + 'ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM' : 64950, + 'ARABIC LIGATURE AIN WITH YEH FINAL FORM' : 64788, + 'ARABIC LIGATURE AIN WITH YEH ISOLATED FORM' : 64760, + 'ARABIC LIGATURE AKBAR ISOLATED FORM' : 65011, + 'ARABIC LIGATURE ALAYHE ISOLATED FORM' : 65015, + 'ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM' : 64656, + 'ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM' : 64605, + 'ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM' : 64828, + 'ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM' : 64829, + 'ARABIC LIGATURE ALLAH ISOLATED FORM' : 65010, + 'ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM' : 64622, + 'ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM' : 64521, + 'ARABIC LIGATURE BEH WITH HAH INITIAL FORM' : 64669, + 'ARABIC LIGATURE BEH WITH HAH ISOLATED FORM' : 64518, + 'ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM' : 64962, + 'ARABIC LIGATURE BEH WITH HEH INITIAL FORM' : 64672, + 'ARABIC LIGATURE BEH WITH HEH MEDIAL FORM' : 64738, + 'ARABIC LIGATURE BEH WITH JEEM INITIAL FORM' : 64668, + 'ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM' : 64517, + 'ARABIC LIGATURE BEH WITH KHAH INITIAL FORM' : 64670, + 'ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM' : 64519, + 'ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM' : 64926, + 'ARABIC LIGATURE BEH WITH MEEM FINAL FORM' : 64620, + 'ARABIC LIGATURE BEH WITH MEEM INITIAL FORM' : 64671, + 'ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM' : 64520, + 'ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM' : 64737, + 'ARABIC LIGATURE BEH WITH NOON FINAL FORM' : 64621, + 'ARABIC LIGATURE BEH WITH REH FINAL FORM' : 64618, + 'ARABIC LIGATURE BEH WITH YEH FINAL FORM' : 64623, + 'ARABIC LIGATURE BEH WITH YEH ISOLATED FORM' : 64522, + 'ARABIC LIGATURE BEH WITH ZAIN FINAL FORM' : 64619, + 'ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM' : 64803, + 'ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM' : 64775, + 'ARABIC LIGATURE DAD WITH HAH INITIAL FORM' : 64693, + 'ARABIC LIGATURE DAD WITH HAH ISOLATED FORM' : 64547, + 'ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM' : 64878, + 'ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM' : 64939, + 'ARABIC LIGATURE DAD WITH JEEM INITIAL FORM' : 64692, + 'ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM' : 64546, + 'ARABIC LIGATURE DAD WITH KHAH INITIAL FORM' : 64694, + 'ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM' : 64548, + 'ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM' : 64879, + 'ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM' : 64880, + 'ARABIC LIGATURE DAD WITH MEEM INITIAL FORM' : 64695, + 'ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM' : 64549, + 'ARABIC LIGATURE DAD WITH REH FINAL FORM' : 64812, + 'ARABIC LIGATURE DAD WITH REH ISOLATED FORM' : 64784, + 'ARABIC LIGATURE DAD WITH YEH FINAL FORM' : 64804, + 'ARABIC LIGATURE DAD WITH YEH ISOLATED FORM' : 64776, + 'ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM' : 64636, + 'ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM' : 64561, + 'ARABIC LIGATURE FEH WITH HAH INITIAL FORM' : 64703, + 'ARABIC LIGATURE FEH WITH HAH ISOLATED FORM' : 64558, + 'ARABIC LIGATURE FEH WITH JEEM INITIAL FORM' : 64702, + 'ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM' : 64557, + 'ARABIC LIGATURE FEH WITH KHAH INITIAL FORM' : 64704, + 'ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM' : 64559, + 'ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM' : 64892, + 'ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM' : 64893, + 'ARABIC LIGATURE FEH WITH MEEM INITIAL FORM' : 64705, + 'ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM' : 64560, + 'ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM' : 64961, + 'ARABIC LIGATURE FEH WITH YEH FINAL FORM' : 64637, + 'ARABIC LIGATURE FEH WITH YEH ISOLATED FORM' : 64562, + 'ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM' : 64789, + 'ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM' : 64761, + 'ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM' : 64700, + 'ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM' : 64555, + 'ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM' : 64701, + 'ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM' : 64556, + 'ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM' : 64891, + 'ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM' : 64889, + 'ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM' : 64890, + 'ARABIC LIGATURE GHAIN WITH YEH FINAL FORM' : 64790, + 'ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM' : 64762, + 'ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM' : 64795, + 'ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM' : 64767, + 'ARABIC LIGATURE HAH WITH JEEM INITIAL FORM' : 64681, + 'ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM' : 64535, + 'ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM' : 64959, + 'ARABIC LIGATURE HAH WITH MEEM INITIAL FORM' : 64682, + 'ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM' : 64536, + 'ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM' : 64859, + 'ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM' : 64858, + 'ARABIC LIGATURE HAH WITH YEH FINAL FORM' : 64796, + 'ARABIC LIGATURE HAH WITH YEH ISOLATED FORM' : 64768, + 'ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM' : 64595, + 'ARABIC LIGATURE HEH WITH JEEM INITIAL FORM' : 64727, + 'ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM' : 64593, + 'ARABIC LIGATURE HEH WITH MEEM INITIAL FORM' : 64728, + 'ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM' : 64594, + 'ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM' : 64915, + 'ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM' : 64916, + 'ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM' : 64729, + 'ARABIC LIGATURE HEH WITH YEH ISOLATED FORM' : 64596, + 'ARABIC LIGATURE JALLAJALALOUHOU' : 65019, + 'ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM' : 64797, + 'ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM' : 64769, + 'ARABIC LIGATURE JEEM WITH HAH INITIAL FORM' : 64679, + 'ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM' : 64533, + 'ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM' : 64934, + 'ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM' : 64958, + 'ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM' : 64680, + 'ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM' : 64534, + 'ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM' : 64935, + 'ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM' : 64856, + 'ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM' : 64857, + 'ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM' : 64933, + 'ARABIC LIGATURE JEEM WITH YEH FINAL FORM' : 64798, + 'ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM' : 64770, + 'ARABIC LIGATURE KAF WITH ALEF FINAL FORM' : 64640, + 'ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM' : 64567, + 'ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM' : 64643, + 'ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM' : 64573, + 'ARABIC LIGATURE KAF WITH HAH INITIAL FORM' : 64709, + 'ARABIC LIGATURE KAF WITH HAH ISOLATED FORM' : 64569, + 'ARABIC LIGATURE KAF WITH JEEM INITIAL FORM' : 64708, + 'ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM' : 64568, + 'ARABIC LIGATURE KAF WITH KHAH INITIAL FORM' : 64710, + 'ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM' : 64570, + 'ARABIC LIGATURE KAF WITH LAM FINAL FORM' : 64641, + 'ARABIC LIGATURE KAF WITH LAM INITIAL FORM' : 64711, + 'ARABIC LIGATURE KAF WITH LAM ISOLATED FORM' : 64571, + 'ARABIC LIGATURE KAF WITH LAM MEDIAL FORM' : 64747, + 'ARABIC LIGATURE KAF WITH MEEM FINAL FORM' : 64642, + 'ARABIC LIGATURE KAF WITH MEEM INITIAL FORM' : 64712, + 'ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM' : 64572, + 'ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM' : 64748, + 'ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM' : 64955, + 'ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM' : 64963, + 'ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM' : 64951, + 'ARABIC LIGATURE KAF WITH YEH FINAL FORM' : 64644, + 'ARABIC LIGATURE KAF WITH YEH ISOLATED FORM' : 64574, + 'ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM' : 64799, + 'ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM' : 64771, + 'ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM' : 64538, + 'ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM' : 64683, + 'ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM' : 64537, + 'ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM' : 64684, + 'ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM' : 64539, + 'ARABIC LIGATURE KHAH WITH YEH FINAL FORM' : 64800, + 'ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM' : 64772, + 'ARABIC LIGATURE LAM WITH ALEF FINAL FORM' : 65276, + 'ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM' : 65275, + 'ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM' : 64646, + 'ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM' : 64579, + 'ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM' : 65272, + 'ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM' : 65271, + 'ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM' : 65274, + 'ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM' : 65273, + 'ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM' : 65270, + 'ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM' : 65269, + 'ARABIC LIGATURE LAM WITH HAH INITIAL FORM' : 64714, + 'ARABIC LIGATURE LAM WITH HAH ISOLATED FORM' : 64576, + 'ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM' : 64898, + 'ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM' : 64896, + 'ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM' : 64949, + 'ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM' : 64897, + 'ARABIC LIGATURE LAM WITH HEH INITIAL FORM' : 64717, + 'ARABIC LIGATURE LAM WITH JEEM INITIAL FORM' : 64713, + 'ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM' : 64575, + 'ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM' : 64900, + 'ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM' : 64899, + 'ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM' : 64956, + 'ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM' : 64954, + 'ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM' : 64940, + 'ARABIC LIGATURE LAM WITH KHAH INITIAL FORM' : 64715, + 'ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM' : 64577, + 'ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM' : 64901, + 'ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM' : 64902, + 'ARABIC LIGATURE LAM WITH MEEM FINAL FORM' : 64645, + 'ARABIC LIGATURE LAM WITH MEEM INITIAL FORM' : 64716, + 'ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM' : 64578, + 'ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM' : 64749, + 'ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM' : 64903, + 'ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM' : 64904, + 'ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM' : 64941, + 'ARABIC LIGATURE LAM WITH YEH FINAL FORM' : 64647, + 'ARABIC LIGATURE LAM WITH YEH ISOLATED FORM' : 64580, + 'ARABIC LIGATURE MEEM WITH ALEF FINAL FORM' : 64648, + 'ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM' : 64585, + 'ARABIC LIGATURE MEEM WITH HAH INITIAL FORM' : 64719, + 'ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM' : 64582, + 'ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM' : 64905, + 'ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM' : 64906, + 'ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM' : 64907, + 'ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM' : 64718, + 'ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM' : 64581, + 'ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM' : 64908, + 'ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM' : 64914, + 'ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM' : 64909, + 'ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM' : 64960, + 'ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM' : 64720, + 'ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM' : 64583, + 'ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM' : 64910, + 'ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM' : 64911, + 'ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM' : 64953, + 'ARABIC LIGATURE MEEM WITH MEEM FINAL FORM' : 64649, + 'ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM' : 64721, + 'ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM' : 64584, + 'ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM' : 64945, + 'ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM' : 64586, + 'ARABIC LIGATURE MOHAMMAD ISOLATED FORM' : 65012, + 'ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM' : 64654, + 'ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM' : 64591, + 'ARABIC LIGATURE NOON WITH HAH INITIAL FORM' : 64723, + 'ARABIC LIGATURE NOON WITH HAH ISOLATED FORM' : 64588, + 'ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM' : 64918, + 'ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM' : 64917, + 'ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM' : 64947, + 'ARABIC LIGATURE NOON WITH HEH INITIAL FORM' : 64726, + 'ARABIC LIGATURE NOON WITH HEH MEDIAL FORM' : 64751, + 'ARABIC LIGATURE NOON WITH JEEM INITIAL FORM' : 64722, + 'ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM' : 64587, + 'ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM' : 64921, + 'ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM' : 64957, + 'ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM' : 64952, + 'ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM' : 64919, + 'ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM' : 64920, + 'ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM' : 64967, + 'ARABIC LIGATURE NOON WITH KHAH INITIAL FORM' : 64724, + 'ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM' : 64589, + 'ARABIC LIGATURE NOON WITH MEEM FINAL FORM' : 64652, + 'ARABIC LIGATURE NOON WITH MEEM INITIAL FORM' : 64725, + 'ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM' : 64590, + 'ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM' : 64750, + 'ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM' : 64923, + 'ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM' : 64922, + 'ARABIC LIGATURE NOON WITH NOON FINAL FORM' : 64653, + 'ARABIC LIGATURE NOON WITH REH FINAL FORM' : 64650, + 'ARABIC LIGATURE NOON WITH YEH FINAL FORM' : 64655, + 'ARABIC LIGATURE NOON WITH YEH ISOLATED FORM' : 64592, + 'ARABIC LIGATURE NOON WITH ZAIN FINAL FORM' : 64651, + 'ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM' : 64638, + 'ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM' : 64565, + 'ARABIC LIGATURE QAF WITH HAH INITIAL FORM' : 64706, + 'ARABIC LIGATURE QAF WITH HAH ISOLATED FORM' : 64563, + 'ARABIC LIGATURE QAF WITH MEEM INITIAL FORM' : 64707, + 'ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM' : 64564, + 'ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM' : 64894, + 'ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM' : 64948, + 'ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM' : 64895, + 'ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM' : 64946, + 'ARABIC LIGATURE QAF WITH YEH FINAL FORM' : 64639, + 'ARABIC LIGATURE QAF WITH YEH ISOLATED FORM' : 64566, + 'ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM' : 65009, + 'ARABIC LIGATURE RASOUL ISOLATED FORM' : 65014, + 'ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM' : 64604, + 'ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM' : 64801, + 'ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM' : 64773, + 'ARABIC LIGATURE SAD WITH HAH INITIAL FORM' : 64689, + 'ARABIC LIGATURE SAD WITH HAH ISOLATED FORM' : 64544, + 'ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM' : 64868, + 'ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM' : 64869, + 'ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM' : 64937, + 'ARABIC LIGATURE SAD WITH KHAH INITIAL FORM' : 64690, + 'ARABIC LIGATURE SAD WITH MEEM INITIAL FORM' : 64691, + 'ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM' : 64545, + 'ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM' : 64870, + 'ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM' : 64965, + 'ARABIC LIGATURE SAD WITH REH FINAL FORM' : 64811, + 'ARABIC LIGATURE SAD WITH REH ISOLATED FORM' : 64783, + 'ARABIC LIGATURE SAD WITH YEH FINAL FORM' : 64802, + 'ARABIC LIGATURE SAD WITH YEH ISOLATED FORM' : 64774, + 'ARABIC LIGATURE SALAM ISOLATED FORM' : 65013, + 'ARABIC LIGATURE SALLA ISOLATED FORM' : 65017, + 'ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM' : 65008, + 'ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM' : 65018, + 'ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM' : 64791, + 'ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM' : 64763, + 'ARABIC LIGATURE SEEN WITH HAH INITIAL FORM' : 64686, + 'ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM' : 64541, + 'ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM' : 64821, + 'ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM' : 64860, + 'ARABIC LIGATURE SEEN WITH HEH INITIAL FORM' : 64817, + 'ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM' : 64744, + 'ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM' : 64685, + 'ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM' : 64540, + 'ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM' : 64820, + 'ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM' : 64862, + 'ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM' : 64861, + 'ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM' : 64687, + 'ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM' : 64542, + 'ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM' : 64822, + 'ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM' : 64936, + 'ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM' : 64966, + 'ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM' : 64688, + 'ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM' : 64543, + 'ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM' : 64743, + 'ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM' : 64863, + 'ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM' : 64864, + 'ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM' : 64865, + 'ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM' : 64866, + 'ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM' : 64867, + 'ARABIC LIGATURE SEEN WITH REH FINAL FORM' : 64810, + 'ARABIC LIGATURE SEEN WITH REH ISOLATED FORM' : 64782, + 'ARABIC LIGATURE SEEN WITH YEH FINAL FORM' : 64792, + 'ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM' : 64764, + 'ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM' : 64609, + 'ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM' : 64755, + 'ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM' : 64606, + 'ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM' : 64608, + 'ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM' : 64754, + 'ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM' : 64610, + 'ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM' : 64756, + 'ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM' : 64607, + 'ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM' : 64611, + 'ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM' : 64793, + 'ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM' : 64765, + 'ARABIC LIGATURE SHEEN WITH HAH FINAL FORM' : 64806, + 'ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM' : 64814, + 'ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM' : 64778, + 'ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM' : 64824, + 'ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM' : 64871, + 'ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM' : 64872, + 'ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM' : 64938, + 'ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM' : 64818, + 'ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM' : 64746, + 'ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM' : 64805, + 'ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM' : 64813, + 'ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM' : 64777, + 'ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM' : 64823, + 'ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM' : 64873, + 'ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM' : 64807, + 'ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM' : 64815, + 'ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM' : 64779, + 'ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM' : 64825, + 'ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM' : 64808, + 'ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM' : 64816, + 'ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM' : 64780, + 'ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM' : 64745, + 'ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM' : 64874, + 'ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM' : 64875, + 'ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM' : 64876, + 'ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM' : 64877, + 'ARABIC LIGATURE SHEEN WITH REH FINAL FORM' : 64809, + 'ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM' : 64781, + 'ARABIC LIGATURE SHEEN WITH YEH FINAL FORM' : 64794, + 'ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM' : 64766, + 'ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM' : 64785, + 'ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM' : 64757, + 'ARABIC LIGATURE TAH WITH HAH INITIAL FORM' : 64696, + 'ARABIC LIGATURE TAH WITH HAH ISOLATED FORM' : 64550, + 'ARABIC LIGATURE TAH WITH MEEM INITIAL FORM' : 64819, + 'ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM' : 64551, + 'ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM' : 64826, + 'ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM' : 64881, + 'ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM' : 64882, + 'ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM' : 64883, + 'ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM' : 64884, + 'ARABIC LIGATURE TAH WITH YEH FINAL FORM' : 64786, + 'ARABIC LIGATURE TAH WITH YEH ISOLATED FORM' : 64758, + 'ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM' : 64628, + 'ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM' : 64527, + 'ARABIC LIGATURE TEH WITH HAH INITIAL FORM' : 64674, + 'ARABIC LIGATURE TEH WITH HAH ISOLATED FORM' : 64524, + 'ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM' : 64849, + 'ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM' : 64850, + 'ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM' : 64851, + 'ARABIC LIGATURE TEH WITH HEH INITIAL FORM' : 64677, + 'ARABIC LIGATURE TEH WITH HEH MEDIAL FORM' : 64740, + 'ARABIC LIGATURE TEH WITH JEEM INITIAL FORM' : 64673, + 'ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM' : 64523, + 'ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM' : 64928, + 'ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM' : 64848, + 'ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM' : 64927, + 'ARABIC LIGATURE TEH WITH KHAH INITIAL FORM' : 64675, + 'ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM' : 64525, + 'ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM' : 64930, + 'ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM' : 64852, + 'ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM' : 64929, + 'ARABIC LIGATURE TEH WITH MEEM FINAL FORM' : 64626, + 'ARABIC LIGATURE TEH WITH MEEM INITIAL FORM' : 64676, + 'ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM' : 64526, + 'ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM' : 64739, + 'ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM' : 64932, + 'ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM' : 64854, + 'ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM' : 64853, + 'ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM' : 64855, + 'ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM' : 64931, + 'ARABIC LIGATURE TEH WITH NOON FINAL FORM' : 64627, + 'ARABIC LIGATURE TEH WITH REH FINAL FORM' : 64624, + 'ARABIC LIGATURE TEH WITH YEH FINAL FORM' : 64629, + 'ARABIC LIGATURE TEH WITH YEH ISOLATED FORM' : 64528, + 'ARABIC LIGATURE TEH WITH ZAIN FINAL FORM' : 64625, + 'ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM' : 64603, + 'ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM' : 64634, + 'ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM' : 64531, + 'ARABIC LIGATURE THEH WITH HEH MEDIAL FORM' : 64742, + 'ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM' : 64529, + 'ARABIC LIGATURE THEH WITH MEEM FINAL FORM' : 64632, + 'ARABIC LIGATURE THEH WITH MEEM INITIAL FORM' : 64678, + 'ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM' : 64530, + 'ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM' : 64741, + 'ARABIC LIGATURE THEH WITH NOON FINAL FORM' : 64633, + 'ARABIC LIGATURE THEH WITH REH FINAL FORM' : 64630, + 'ARABIC LIGATURE THEH WITH YEH FINAL FORM' : 64635, + 'ARABIC LIGATURE THEH WITH YEH ISOLATED FORM' : 64532, + 'ARABIC LIGATURE THEH WITH ZAIN FINAL FORM' : 64631, + 'ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM' : 64506, + 'ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM' : 64507, + 'ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM' : 64505, + 'ARABIC LIGATURE WASALLAM ISOLATED FORM' : 65016, + 'ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM' : 64661, + 'ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM' : 64601, + 'ARABIC LIGATURE YEH WITH HAH INITIAL FORM' : 64731, + 'ARABIC LIGATURE YEH WITH HAH ISOLATED FORM' : 64598, + 'ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM' : 64942, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM' : 64493, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM' : 64492, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM' : 64491, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM' : 64490, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM' : 64616, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM' : 64515, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM' : 64503, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM' : 64504, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM' : 64502, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM' : 64664, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM' : 64513, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM' : 64667, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM' : 64736, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM' : 64663, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM' : 64512, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM' : 64665, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM' : 64614, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM' : 64666, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM' : 64514, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM' : 64735, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM' : 64615, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM' : 64499, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM' : 64498, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM' : 64612, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM' : 64497, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM' : 64496, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM' : 64495, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM' : 64494, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM' : 64617, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM' : 64516, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM' : 64501, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM' : 64500, + 'ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM' : 64613, + 'ARABIC LIGATURE YEH WITH HEH INITIAL FORM' : 64734, + 'ARABIC LIGATURE YEH WITH HEH MEDIAL FORM' : 64753, + 'ARABIC LIGATURE YEH WITH JEEM INITIAL FORM' : 64730, + 'ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM' : 64597, + 'ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM' : 64943, + 'ARABIC LIGATURE YEH WITH KHAH INITIAL FORM' : 64732, + 'ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM' : 64599, + 'ARABIC LIGATURE YEH WITH MEEM FINAL FORM' : 64659, + 'ARABIC LIGATURE YEH WITH MEEM INITIAL FORM' : 64733, + 'ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM' : 64600, + 'ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM' : 64752, + 'ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM' : 64924, + 'ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM' : 64925, + 'ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM' : 64944, + 'ARABIC LIGATURE YEH WITH NOON FINAL FORM' : 64660, + 'ARABIC LIGATURE YEH WITH REH FINAL FORM' : 64657, + 'ARABIC LIGATURE YEH WITH YEH FINAL FORM' : 64662, + 'ARABIC LIGATURE YEH WITH YEH ISOLATED FORM' : 64602, + 'ARABIC LIGATURE YEH WITH ZAIN FINAL FORM' : 64658, + 'ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM' : 64697, + 'ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM' : 64552, + 'ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM' : 64827, + 'ARABIC MADDAH ABOVE' : 1619, + 'ARABIC PERCENT SIGN' : 1642, + 'ARABIC PLACE OF SAJDAH' : 1769, + 'ARABIC QUESTION MARK' : 1567, + 'ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE' : 1772, + 'ARABIC SEMICOLON' : 1563, + 'ARABIC SHADDA' : 1617, + 'ARABIC SHADDA ISOLATED FORM' : 65148, + 'ARABIC SHADDA MEDIAL FORM' : 65149, + 'ARABIC SIGN SINDHI AMPERSAND' : 1789, + 'ARABIC SIGN SINDHI POSTPOSITION MEN' : 1790, + 'ARABIC SMALL HIGH DOTLESS HEAD OF KHAH' : 1761, + 'ARABIC SMALL HIGH JEEM' : 1754, + 'ARABIC SMALL HIGH LAM ALEF' : 1753, + 'ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA' : 1751, + 'ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA' : 1750, + 'ARABIC SMALL HIGH MADDA' : 1764, + 'ARABIC SMALL HIGH MEEM INITIAL FORM' : 1752, + 'ARABIC SMALL HIGH MEEM ISOLATED FORM' : 1762, + 'ARABIC SMALL HIGH NOON' : 1768, + 'ARABIC SMALL HIGH ROUNDED ZERO' : 1759, + 'ARABIC SMALL HIGH SEEN' : 1756, + 'ARABIC SMALL HIGH THREE DOTS' : 1755, + 'ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO' : 1760, + 'ARABIC SMALL HIGH YEH' : 1767, + 'ARABIC SMALL LOW MEEM' : 1773, + 'ARABIC SMALL LOW SEEN' : 1763, + 'ARABIC SMALL WAW' : 1765, + 'ARABIC SMALL YEH' : 1766, + 'ARABIC START OF RUB EL HIZB' : 1758, + 'ARABIC SUKUN' : 1618, + 'ARABIC SUKUN ISOLATED FORM' : 65150, + 'ARABIC SUKUN MEDIAL FORM' : 65151, + 'ARABIC TAIL FRAGMENT' : 65139, + 'ARABIC TATWEEL' : 1600, + 'ARABIC TATWEEL WITH FATHATAN ABOVE' : 65137, + 'ARABIC THOUSANDS SEPARATOR' : 1644, + 'ARABIC-INDIC DIGIT EIGHT' : 1640, + 'ARABIC-INDIC DIGIT FIVE' : 1637, + 'ARABIC-INDIC DIGIT FOUR' : 1636, + 'ARABIC-INDIC DIGIT NINE' : 1641, + 'ARABIC-INDIC DIGIT ONE' : 1633, + 'ARABIC-INDIC DIGIT SEVEN' : 1639, + 'ARABIC-INDIC DIGIT SIX' : 1638, + 'ARABIC-INDIC DIGIT THREE' : 1635, + 'ARABIC-INDIC DIGIT TWO' : 1634, + 'ARABIC-INDIC DIGIT ZERO' : 1632, + 'ARC' : 8978, + 'ARIES' : 9800, + 'ARMENIAN ABBREVIATION MARK' : 1375, + 'ARMENIAN APOSTROPHE' : 1370, + 'ARMENIAN CAPITAL LETTER AYB' : 1329, + 'ARMENIAN CAPITAL LETTER BEN' : 1330, + 'ARMENIAN CAPITAL LETTER CA' : 1342, + 'ARMENIAN CAPITAL LETTER CHA' : 1353, + 'ARMENIAN CAPITAL LETTER CHEH' : 1347, + 'ARMENIAN CAPITAL LETTER CO' : 1361, + 'ARMENIAN CAPITAL LETTER DA' : 1332, + 'ARMENIAN CAPITAL LETTER ECH' : 1333, + 'ARMENIAN CAPITAL LETTER EH' : 1335, + 'ARMENIAN CAPITAL LETTER ET' : 1336, + 'ARMENIAN CAPITAL LETTER FEH' : 1366, + 'ARMENIAN CAPITAL LETTER GHAD' : 1346, + 'ARMENIAN CAPITAL LETTER GIM' : 1331, + 'ARMENIAN CAPITAL LETTER HO' : 1344, + 'ARMENIAN CAPITAL LETTER INI' : 1339, + 'ARMENIAN CAPITAL LETTER JA' : 1345, + 'ARMENIAN CAPITAL LETTER JHEH' : 1355, + 'ARMENIAN CAPITAL LETTER KEH' : 1364, + 'ARMENIAN CAPITAL LETTER KEN' : 1343, + 'ARMENIAN CAPITAL LETTER LIWN' : 1340, + 'ARMENIAN CAPITAL LETTER MEN' : 1348, + 'ARMENIAN CAPITAL LETTER NOW' : 1350, + 'ARMENIAN CAPITAL LETTER OH' : 1365, + 'ARMENIAN CAPITAL LETTER PEH' : 1354, + 'ARMENIAN CAPITAL LETTER PIWR' : 1363, + 'ARMENIAN CAPITAL LETTER RA' : 1356, + 'ARMENIAN CAPITAL LETTER REH' : 1360, + 'ARMENIAN CAPITAL LETTER SEH' : 1357, + 'ARMENIAN CAPITAL LETTER SHA' : 1351, + 'ARMENIAN CAPITAL LETTER TIWN' : 1359, + 'ARMENIAN CAPITAL LETTER TO' : 1337, + 'ARMENIAN CAPITAL LETTER VEW' : 1358, + 'ARMENIAN CAPITAL LETTER VO' : 1352, + 'ARMENIAN CAPITAL LETTER XEH' : 1341, + 'ARMENIAN CAPITAL LETTER YI' : 1349, + 'ARMENIAN CAPITAL LETTER YIWN' : 1362, + 'ARMENIAN CAPITAL LETTER ZA' : 1334, + 'ARMENIAN CAPITAL LETTER ZHE' : 1338, + 'ARMENIAN COMMA' : 1373, + 'ARMENIAN EMPHASIS MARK' : 1371, + 'ARMENIAN EXCLAMATION MARK' : 1372, + 'ARMENIAN FULL STOP' : 1417, + 'ARMENIAN HYPHEN' : 1418, + 'ARMENIAN MODIFIER LETTER LEFT HALF RING' : 1369, + 'ARMENIAN QUESTION MARK' : 1374, + 'ARMENIAN SMALL LETTER AYB' : 1377, + 'ARMENIAN SMALL LETTER BEN' : 1378, + 'ARMENIAN SMALL LETTER CA' : 1390, + 'ARMENIAN SMALL LETTER CHA' : 1401, + 'ARMENIAN SMALL LETTER CHEH' : 1395, + 'ARMENIAN SMALL LETTER CO' : 1409, + 'ARMENIAN SMALL LETTER DA' : 1380, + 'ARMENIAN SMALL LETTER ECH' : 1381, + 'ARMENIAN SMALL LETTER EH' : 1383, + 'ARMENIAN SMALL LETTER ET' : 1384, + 'ARMENIAN SMALL LETTER FEH' : 1414, + 'ARMENIAN SMALL LETTER GHAD' : 1394, + 'ARMENIAN SMALL LETTER GIM' : 1379, + 'ARMENIAN SMALL LETTER HO' : 1392, + 'ARMENIAN SMALL LETTER INI' : 1387, + 'ARMENIAN SMALL LETTER JA' : 1393, + 'ARMENIAN SMALL LETTER JHEH' : 1403, + 'ARMENIAN SMALL LETTER KEH' : 1412, + 'ARMENIAN SMALL LETTER KEN' : 1391, + 'ARMENIAN SMALL LETTER LIWN' : 1388, + 'ARMENIAN SMALL LETTER MEN' : 1396, + 'ARMENIAN SMALL LETTER NOW' : 1398, + 'ARMENIAN SMALL LETTER OH' : 1413, + 'ARMENIAN SMALL LETTER PEH' : 1402, + 'ARMENIAN SMALL LETTER PIWR' : 1411, + 'ARMENIAN SMALL LETTER RA' : 1404, + 'ARMENIAN SMALL LETTER REH' : 1408, + 'ARMENIAN SMALL LETTER SEH' : 1405, + 'ARMENIAN SMALL LETTER SHA' : 1399, + 'ARMENIAN SMALL LETTER TIWN' : 1407, + 'ARMENIAN SMALL LETTER TO' : 1385, + 'ARMENIAN SMALL LETTER VEW' : 1406, + 'ARMENIAN SMALL LETTER VO' : 1400, + 'ARMENIAN SMALL LETTER XEH' : 1389, + 'ARMENIAN SMALL LETTER YI' : 1397, + 'ARMENIAN SMALL LETTER YIWN' : 1410, + 'ARMENIAN SMALL LETTER ZA' : 1382, + 'ARMENIAN SMALL LETTER ZHE' : 1386, + 'ARMENIAN SMALL LIGATURE ECH YIWN' : 1415, + 'ARMENIAN SMALL LIGATURE MEN ECH' : 64276, + 'ARMENIAN SMALL LIGATURE MEN INI' : 64277, + 'ARMENIAN SMALL LIGATURE MEN NOW' : 64275, + 'ARMENIAN SMALL LIGATURE MEN XEH' : 64279, + 'ARMENIAN SMALL LIGATURE VEW NOW' : 64278, + 'ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS' : 10550, + 'ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS' : 10551, + 'ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS' : 10549, + 'ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS' : 10548, + 'ASCENDING NODE' : 9738, + 'ASSERTION' : 8870, + 'ASTERISK' : 42, + 'ASTERISK OPERATOR' : 8727, + 'ASTERISM' : 8258, + 'ASYMPTOTICALLY EQUAL TO' : 8771, + 'BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW' : 10155, + 'BALLOON-SPOKED ASTERISK' : 10057, + 'BALLOT BOX' : 9744, + 'BALLOT BOX WITH CHECK' : 9745, + 'BALLOT BOX WITH X' : 9746, + 'BALLOT X' : 10007, + 'BEAMED EIGHTH NOTES' : 9835, + 'BEAMED SIXTEENTH NOTES' : 9836, + 'BECAUSE' : 8757, + 'BELL SYMBOL' : 9086, + 'BENGALI AU LENGTH MARK' : 2519, + 'BENGALI CURRENCY DENOMINATOR SIXTEEN' : 2553, + 'BENGALI CURRENCY NUMERATOR FOUR' : 2551, + 'BENGALI CURRENCY NUMERATOR ONE' : 2548, + 'BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR' : 2552, + 'BENGALI CURRENCY NUMERATOR THREE' : 2550, + 'BENGALI CURRENCY NUMERATOR TWO' : 2549, + 'BENGALI DIGIT EIGHT' : 2542, + 'BENGALI DIGIT FIVE' : 2539, + 'BENGALI DIGIT FOUR' : 2538, + 'BENGALI DIGIT NINE' : 2543, + 'BENGALI DIGIT ONE' : 2535, + 'BENGALI DIGIT SEVEN' : 2541, + 'BENGALI DIGIT SIX' : 2540, + 'BENGALI DIGIT THREE' : 2537, + 'BENGALI DIGIT TWO' : 2536, + 'BENGALI DIGIT ZERO' : 2534, + 'BENGALI ISSHAR' : 2554, + 'BENGALI LETTER A' : 2437, + 'BENGALI LETTER AA' : 2438, + 'BENGALI LETTER AI' : 2448, + 'BENGALI LETTER AU' : 2452, + 'BENGALI LETTER BA' : 2476, + 'BENGALI LETTER BHA' : 2477, + 'BENGALI LETTER CA' : 2458, + 'BENGALI LETTER CHA' : 2459, + 'BENGALI LETTER DA' : 2470, + 'BENGALI LETTER DDA' : 2465, + 'BENGALI LETTER DDHA' : 2466, + 'BENGALI LETTER DHA' : 2471, + 'BENGALI LETTER E' : 2447, + 'BENGALI LETTER GA' : 2455, + 'BENGALI LETTER GHA' : 2456, + 'BENGALI LETTER HA' : 2489, + 'BENGALI LETTER I' : 2439, + 'BENGALI LETTER II' : 2440, + 'BENGALI LETTER JA' : 2460, + 'BENGALI LETTER JHA' : 2461, + 'BENGALI LETTER KA' : 2453, + 'BENGALI LETTER KHA' : 2454, + 'BENGALI LETTER LA' : 2482, + 'BENGALI LETTER MA' : 2478, + 'BENGALI LETTER NA' : 2472, + 'BENGALI LETTER NGA' : 2457, + 'BENGALI LETTER NNA' : 2467, + 'BENGALI LETTER NYA' : 2462, + 'BENGALI LETTER O' : 2451, + 'BENGALI LETTER PA' : 2474, + 'BENGALI LETTER PHA' : 2475, + 'BENGALI LETTER RA' : 2480, + 'BENGALI LETTER RA WITH LOWER DIAGONAL' : 2545, + 'BENGALI LETTER RA WITH MIDDLE DIAGONAL' : 2544, + 'BENGALI LETTER RHA' : 2525, + 'BENGALI LETTER RRA' : 2524, + 'BENGALI LETTER SA' : 2488, + 'BENGALI LETTER SHA' : 2486, + 'BENGALI LETTER SSA' : 2487, + 'BENGALI LETTER TA' : 2468, + 'BENGALI LETTER THA' : 2469, + 'BENGALI LETTER TTA' : 2463, + 'BENGALI LETTER TTHA' : 2464, + 'BENGALI LETTER U' : 2441, + 'BENGALI LETTER UU' : 2442, + 'BENGALI LETTER VOCALIC L' : 2444, + 'BENGALI LETTER VOCALIC LL' : 2529, + 'BENGALI LETTER VOCALIC R' : 2443, + 'BENGALI LETTER VOCALIC RR' : 2528, + 'BENGALI LETTER YA' : 2479, + 'BENGALI LETTER YYA' : 2527, + 'BENGALI RUPEE MARK' : 2546, + 'BENGALI RUPEE SIGN' : 2547, + 'BENGALI SIGN ANUSVARA' : 2434, + 'BENGALI SIGN CANDRABINDU' : 2433, + 'BENGALI SIGN NUKTA' : 2492, + 'BENGALI SIGN VIRAMA' : 2509, + 'BENGALI SIGN VISARGA' : 2435, + 'BENGALI VOWEL SIGN AA' : 2494, + 'BENGALI VOWEL SIGN AI' : 2504, + 'BENGALI VOWEL SIGN AU' : 2508, + 'BENGALI VOWEL SIGN E' : 2503, + 'BENGALI VOWEL SIGN I' : 2495, + 'BENGALI VOWEL SIGN II' : 2496, + 'BENGALI VOWEL SIGN O' : 2507, + 'BENGALI VOWEL SIGN U' : 2497, + 'BENGALI VOWEL SIGN UU' : 2498, + 'BENGALI VOWEL SIGN VOCALIC L' : 2530, + 'BENGALI VOWEL SIGN VOCALIC LL' : 2531, + 'BENGALI VOWEL SIGN VOCALIC R' : 2499, + 'BENGALI VOWEL SIGN VOCALIC RR' : 2500, + 'BENZENE RING' : 9004, + 'BET SYMBOL' : 8502, + 'BETWEEN' : 8812, + 'BIG REVERSE SOLIDUS' : 10745, + 'BIG SOLIDUS' : 10744, + 'BIOHAZARD SIGN' : 9763, + 'BLACK BOWTIE' : 10707, + 'BLACK CENTRE WHITE STAR' : 10028, + 'BLACK CHESS BISHOP' : 9821, + 'BLACK CHESS KING' : 9818, + 'BLACK CHESS KNIGHT' : 9822, + 'BLACK CHESS PAWN' : 9823, + 'BLACK CHESS QUEEN' : 9819, + 'BLACK CHESS ROOK' : 9820, + 'BLACK CIRCLE' : 9679, + 'BLACK CIRCLE WITH DOWN ARROW' : 10733, + 'BLACK CIRCLE WITH TWO WHITE DOTS' : 9865, + 'BLACK CIRCLE WITH WHITE DOT RIGHT' : 9864, + 'BLACK CLUB SUIT' : 9827, + 'BLACK DIAMOND' : 9670, + 'BLACK DIAMOND MINUS WHITE X' : 10070, + 'BLACK DIAMOND SUIT' : 9830, + 'BLACK DIAMOND WITH DOWN ARROW' : 10730, + 'BLACK DOWN-POINTING SMALL TRIANGLE' : 9662, + 'BLACK DOWN-POINTING TRIANGLE' : 9660, + 'BLACK FLORETTE' : 10047, + 'BLACK FOUR POINTED STAR' : 10022, + 'BLACK HEART SUIT' : 9829, + 'BLACK HOURGLASS' : 10711, + 'BLACK LEFT POINTING INDEX' : 9754, + 'BLACK LEFT-POINTING POINTER' : 9668, + 'BLACK LEFT-POINTING SMALL TRIANGLE' : 9666, + 'BLACK LEFT-POINTING TRIANGLE' : 9664, + 'BLACK LEFTWARDS BULLET' : 8268, + 'BLACK LOWER LEFT TRIANGLE' : 9699, + 'BLACK LOWER RIGHT TRIANGLE' : 9698, + 'BLACK LOZENGE' : 10731, + 'BLACK MEDIUM SMALL SQUARE' : 9726, + 'BLACK MEDIUM SQUARE' : 9724, + 'BLACK NIB' : 10002, + 'BLACK PARALLELOGRAM' : 9648, + 'BLACK RECTANGLE' : 9644, + 'BLACK RIGHT POINTING INDEX' : 9755, + 'BLACK RIGHT-POINTING POINTER' : 9658, + 'BLACK RIGHT-POINTING SMALL TRIANGLE' : 9656, + 'BLACK RIGHT-POINTING TRIANGLE' : 9654, + 'BLACK RIGHTWARDS ARROW' : 10145, + 'BLACK RIGHTWARDS ARROWHEAD' : 10148, + 'BLACK RIGHTWARDS BULLET' : 8269, + 'BLACK SCISSORS' : 9986, + 'BLACK SHOGI PIECE' : 9751, + 'BLACK SMALL SQUARE' : 9642, + 'BLACK SMILING FACE' : 9787, + 'BLACK SPADE SUIT' : 9824, + 'BLACK SQUARE' : 9632, + 'BLACK STAR' : 9733, + 'BLACK SUN WITH RAYS' : 9728, + 'BLACK TELEPHONE' : 9742, + 'BLACK UNIVERSAL RECYCLING SYMBOL' : 9851, + 'BLACK UP-POINTING SMALL TRIANGLE' : 9652, + 'BLACK UP-POINTING TRIANGLE' : 9650, + 'BLACK UPPER LEFT TRIANGLE' : 9700, + 'BLACK UPPER RIGHT TRIANGLE' : 9701, + 'BLACK VERTICAL RECTANGLE' : 9646, + 'BLACK-FEATHERED NORTH EAST ARROW' : 10166, + 'BLACK-FEATHERED RIGHTWARDS ARROW' : 10165, + 'BLACK-FEATHERED SOUTH EAST ARROW' : 10164, + 'BLACK-LETTER CAPITAL C' : 8493, + 'BLACK-LETTER CAPITAL H' : 8460, + 'BLACK-LETTER CAPITAL I' : 8465, + 'BLACK-LETTER CAPITAL R' : 8476, + 'BLACK-LETTER CAPITAL Z' : 8488, + 'BLANK SYMBOL' : 9250, + 'BOPOMOFO FINAL LETTER H' : 12727, + 'BOPOMOFO FINAL LETTER K' : 12726, + 'BOPOMOFO FINAL LETTER P' : 12724, + 'BOPOMOFO FINAL LETTER T' : 12725, + 'BOPOMOFO LETTER A' : 12570, + 'BOPOMOFO LETTER AI' : 12574, + 'BOPOMOFO LETTER AINN' : 12718, + 'BOPOMOFO LETTER AM' : 12720, + 'BOPOMOFO LETTER AN' : 12578, + 'BOPOMOFO LETTER ANG' : 12580, + 'BOPOMOFO LETTER ANN' : 12713, + 'BOPOMOFO LETTER AU' : 12576, + 'BOPOMOFO LETTER AUNN' : 12719, + 'BOPOMOFO LETTER B' : 12549, + 'BOPOMOFO LETTER BU' : 12704, + 'BOPOMOFO LETTER C' : 12568, + 'BOPOMOFO LETTER CH' : 12564, + 'BOPOMOFO LETTER D' : 12553, + 'BOPOMOFO LETTER E' : 12572, + 'BOPOMOFO LETTER EE' : 12708, + 'BOPOMOFO LETTER EH' : 12573, + 'BOPOMOFO LETTER EI' : 12575, + 'BOPOMOFO LETTER EN' : 12579, + 'BOPOMOFO LETTER ENG' : 12581, + 'BOPOMOFO LETTER ENN' : 12709, + 'BOPOMOFO LETTER ER' : 12582, + 'BOPOMOFO LETTER F' : 12552, + 'BOPOMOFO LETTER G' : 12557, + 'BOPOMOFO LETTER GN' : 12588, + 'BOPOMOFO LETTER GU' : 12707, + 'BOPOMOFO LETTER H' : 12559, + 'BOPOMOFO LETTER I' : 12583, + 'BOPOMOFO LETTER IM' : 12716, + 'BOPOMOFO LETTER INN' : 12714, + 'BOPOMOFO LETTER INNN' : 12723, + 'BOPOMOFO LETTER IR' : 12712, + 'BOPOMOFO LETTER IU' : 12585, + 'BOPOMOFO LETTER J' : 12560, + 'BOPOMOFO LETTER JI' : 12706, + 'BOPOMOFO LETTER K' : 12558, + 'BOPOMOFO LETTER L' : 12556, + 'BOPOMOFO LETTER M' : 12551, + 'BOPOMOFO LETTER N' : 12555, + 'BOPOMOFO LETTER NG' : 12587, + 'BOPOMOFO LETTER NGG' : 12717, + 'BOPOMOFO LETTER O' : 12571, + 'BOPOMOFO LETTER OM' : 12721, + 'BOPOMOFO LETTER ONG' : 12722, + 'BOPOMOFO LETTER ONN' : 12711, + 'BOPOMOFO LETTER OO' : 12710, + 'BOPOMOFO LETTER OU' : 12577, + 'BOPOMOFO LETTER P' : 12550, + 'BOPOMOFO LETTER Q' : 12561, + 'BOPOMOFO LETTER R' : 12566, + 'BOPOMOFO LETTER S' : 12569, + 'BOPOMOFO LETTER SH' : 12565, + 'BOPOMOFO LETTER T' : 12554, + 'BOPOMOFO LETTER U' : 12584, + 'BOPOMOFO LETTER UNN' : 12715, + 'BOPOMOFO LETTER V' : 12586, + 'BOPOMOFO LETTER X' : 12562, + 'BOPOMOFO LETTER Z' : 12567, + 'BOPOMOFO LETTER ZH' : 12563, + 'BOPOMOFO LETTER ZI' : 12705, + 'BOTTOM ARC ANTICLOCKWISE ARROW' : 10555, + 'BOTTOM HALF INTEGRAL' : 8993, + 'BOTTOM LEFT CORNER' : 8990, + 'BOTTOM LEFT CROP' : 8973, + 'BOTTOM RIGHT CORNER' : 8991, + 'BOTTOM RIGHT CROP' : 8972, + 'BOTTOM SQUARE BRACKET' : 9141, + 'BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET' : 9142, + 'BOWTIE' : 8904, + 'BOWTIE WITH LEFT HALF BLACK' : 10705, + 'BOWTIE WITH RIGHT HALF BLACK' : 10706, + 'BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL' : 9574, + 'BOX DRAWINGS DOUBLE DOWN AND LEFT' : 9559, + 'BOX DRAWINGS DOUBLE DOWN AND RIGHT' : 9556, + 'BOX DRAWINGS DOUBLE HORIZONTAL' : 9552, + 'BOX DRAWINGS DOUBLE UP AND HORIZONTAL' : 9577, + 'BOX DRAWINGS DOUBLE UP AND LEFT' : 9565, + 'BOX DRAWINGS DOUBLE UP AND RIGHT' : 9562, + 'BOX DRAWINGS DOUBLE VERTICAL' : 9553, + 'BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL' : 9580, + 'BOX DRAWINGS DOUBLE VERTICAL AND LEFT' : 9571, + 'BOX DRAWINGS DOUBLE VERTICAL AND RIGHT' : 9568, + 'BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE' : 9573, + 'BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE' : 9558, + 'BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE' : 9555, + 'BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT' : 9520, + 'BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT' : 9490, + 'BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT' : 9511, + 'BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT' : 9486, + 'BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT' : 9503, + 'BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT' : 9537, + 'BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY' : 9519, + 'BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY' : 9489, + 'BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY' : 9513, + 'BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY' : 9485, + 'BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY' : 9505, + 'BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY' : 9543, + 'BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE' : 9572, + 'BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE' : 9557, + 'BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE' : 9554, + 'BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL' : 9549, + 'BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL' : 9551, + 'BOX DRAWINGS HEAVY DOWN' : 9595, + 'BOX DRAWINGS HEAVY DOWN AND HORIZONTAL' : 9523, + 'BOX DRAWINGS HEAVY DOWN AND LEFT' : 9491, + 'BOX DRAWINGS HEAVY DOWN AND RIGHT' : 9487, + 'BOX DRAWINGS HEAVY HORIZONTAL' : 9473, + 'BOX DRAWINGS HEAVY LEFT' : 9592, + 'BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT' : 9598, + 'BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL' : 9481, + 'BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL' : 9483, + 'BOX DRAWINGS HEAVY RIGHT' : 9594, + 'BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL' : 9477, + 'BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL' : 9479, + 'BOX DRAWINGS HEAVY UP' : 9593, + 'BOX DRAWINGS HEAVY UP AND HORIZONTAL' : 9531, + 'BOX DRAWINGS HEAVY UP AND LEFT' : 9499, + 'BOX DRAWINGS HEAVY UP AND LIGHT DOWN' : 9599, + 'BOX DRAWINGS HEAVY UP AND RIGHT' : 9495, + 'BOX DRAWINGS HEAVY VERTICAL' : 9475, + 'BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL' : 9547, + 'BOX DRAWINGS HEAVY VERTICAL AND LEFT' : 9515, + 'BOX DRAWINGS HEAVY VERTICAL AND RIGHT' : 9507, + 'BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT' : 9541, + 'BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT' : 9517, + 'BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT' : 9525, + 'BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT' : 9533, + 'BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY' : 9522, + 'BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY' : 9530, + 'BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY' : 9546, + 'BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT' : 9539, + 'BOX DRAWINGS LIGHT ARC DOWN AND LEFT' : 9582, + 'BOX DRAWINGS LIGHT ARC DOWN AND RIGHT' : 9581, + 'BOX DRAWINGS LIGHT ARC UP AND LEFT' : 9583, + 'BOX DRAWINGS LIGHT ARC UP AND RIGHT' : 9584, + 'BOX DRAWINGS LIGHT DIAGONAL CROSS' : 9587, + 'BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT' : 9586, + 'BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT' : 9585, + 'BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL' : 9548, + 'BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL' : 9550, + 'BOX DRAWINGS LIGHT DOWN' : 9591, + 'BOX DRAWINGS LIGHT DOWN AND HORIZONTAL' : 9516, + 'BOX DRAWINGS LIGHT DOWN AND LEFT' : 9488, + 'BOX DRAWINGS LIGHT DOWN AND RIGHT' : 9484, + 'BOX DRAWINGS LIGHT HORIZONTAL' : 9472, + 'BOX DRAWINGS LIGHT LEFT' : 9588, + 'BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT' : 9596, + 'BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL' : 9480, + 'BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL' : 9482, + 'BOX DRAWINGS LIGHT RIGHT' : 9590, + 'BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL' : 9476, + 'BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL' : 9478, + 'BOX DRAWINGS LIGHT UP' : 9589, + 'BOX DRAWINGS LIGHT UP AND HEAVY DOWN' : 9597, + 'BOX DRAWINGS LIGHT UP AND HORIZONTAL' : 9524, + 'BOX DRAWINGS LIGHT UP AND LEFT' : 9496, + 'BOX DRAWINGS LIGHT UP AND RIGHT' : 9492, + 'BOX DRAWINGS LIGHT VERTICAL' : 9474, + 'BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL' : 9532, + 'BOX DRAWINGS LIGHT VERTICAL AND LEFT' : 9508, + 'BOX DRAWINGS LIGHT VERTICAL AND RIGHT' : 9500, + 'BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT' : 9542, + 'BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT' : 9518, + 'BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT' : 9526, + 'BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT' : 9534, + 'BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY' : 9521, + 'BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY' : 9529, + 'BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY' : 9545, + 'BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT' : 9540, + 'BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE' : 9576, + 'BOX DRAWINGS UP DOUBLE AND LEFT SINGLE' : 9564, + 'BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE' : 9561, + 'BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT' : 9536, + 'BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT' : 9528, + 'BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT' : 9510, + 'BOX DRAWINGS UP HEAVY AND LEFT LIGHT' : 9498, + 'BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT' : 9502, + 'BOX DRAWINGS UP HEAVY AND RIGHT LIGHT' : 9494, + 'BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY' : 9544, + 'BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY' : 9527, + 'BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY' : 9514, + 'BOX DRAWINGS UP LIGHT AND LEFT HEAVY' : 9497, + 'BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY' : 9506, + 'BOX DRAWINGS UP LIGHT AND RIGHT HEAVY' : 9493, + 'BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE' : 9575, + 'BOX DRAWINGS UP SINGLE AND LEFT DOUBLE' : 9563, + 'BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE' : 9560, + 'BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE' : 9579, + 'BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE' : 9570, + 'BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE' : 9567, + 'BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT' : 9538, + 'BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT' : 9512, + 'BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT' : 9504, + 'BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY' : 9535, + 'BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY' : 9509, + 'BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY' : 9501, + 'BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE' : 9578, + 'BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE' : 9569, + 'BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE' : 9566, + 'BRAILLE PATTERN BLANK' : 10240, + 'BRAILLE PATTERN DOTS-1' : 10241, + 'BRAILLE PATTERN DOTS-12' : 10243, + 'BRAILLE PATTERN DOTS-123' : 10247, + 'BRAILLE PATTERN DOTS-1234' : 10255, + 'BRAILLE PATTERN DOTS-12345' : 10271, + 'BRAILLE PATTERN DOTS-123456' : 10303, + 'BRAILLE PATTERN DOTS-1234567' : 10367, + 'BRAILLE PATTERN DOTS-12345678' : 10495, + 'BRAILLE PATTERN DOTS-1234568' : 10431, + 'BRAILLE PATTERN DOTS-123457' : 10335, + 'BRAILLE PATTERN DOTS-1234578' : 10463, + 'BRAILLE PATTERN DOTS-123458' : 10399, + 'BRAILLE PATTERN DOTS-12346' : 10287, + 'BRAILLE PATTERN DOTS-123467' : 10351, + 'BRAILLE PATTERN DOTS-1234678' : 10479, + 'BRAILLE PATTERN DOTS-123468' : 10415, + 'BRAILLE PATTERN DOTS-12347' : 10319, + 'BRAILLE PATTERN DOTS-123478' : 10447, + 'BRAILLE PATTERN DOTS-12348' : 10383, + 'BRAILLE PATTERN DOTS-1235' : 10263, + 'BRAILLE PATTERN DOTS-12356' : 10295, + 'BRAILLE PATTERN DOTS-123567' : 10359, + 'BRAILLE PATTERN DOTS-1235678' : 10487, + 'BRAILLE PATTERN DOTS-123568' : 10423, + 'BRAILLE PATTERN DOTS-12357' : 10327, + 'BRAILLE PATTERN DOTS-123578' : 10455, + 'BRAILLE PATTERN DOTS-12358' : 10391, + 'BRAILLE PATTERN DOTS-1236' : 10279, + 'BRAILLE PATTERN DOTS-12367' : 10343, + 'BRAILLE PATTERN DOTS-123678' : 10471, + 'BRAILLE PATTERN DOTS-12368' : 10407, + 'BRAILLE PATTERN DOTS-1237' : 10311, + 'BRAILLE PATTERN DOTS-12378' : 10439, + 'BRAILLE PATTERN DOTS-1238' : 10375, + 'BRAILLE PATTERN DOTS-124' : 10251, + 'BRAILLE PATTERN DOTS-1245' : 10267, + 'BRAILLE PATTERN DOTS-12456' : 10299, + 'BRAILLE PATTERN DOTS-124567' : 10363, + 'BRAILLE PATTERN DOTS-1245678' : 10491, + 'BRAILLE PATTERN DOTS-124568' : 10427, + 'BRAILLE PATTERN DOTS-12457' : 10331, + 'BRAILLE PATTERN DOTS-124578' : 10459, + 'BRAILLE PATTERN DOTS-12458' : 10395, + 'BRAILLE PATTERN DOTS-1246' : 10283, + 'BRAILLE PATTERN DOTS-12467' : 10347, + 'BRAILLE PATTERN DOTS-124678' : 10475, + 'BRAILLE PATTERN DOTS-12468' : 10411, + 'BRAILLE PATTERN DOTS-1247' : 10315, + 'BRAILLE PATTERN DOTS-12478' : 10443, + 'BRAILLE PATTERN DOTS-1248' : 10379, + 'BRAILLE PATTERN DOTS-125' : 10259, + 'BRAILLE PATTERN DOTS-1256' : 10291, + 'BRAILLE PATTERN DOTS-12567' : 10355, + 'BRAILLE PATTERN DOTS-125678' : 10483, + 'BRAILLE PATTERN DOTS-12568' : 10419, + 'BRAILLE PATTERN DOTS-1257' : 10323, + 'BRAILLE PATTERN DOTS-12578' : 10451, + 'BRAILLE PATTERN DOTS-1258' : 10387, + 'BRAILLE PATTERN DOTS-126' : 10275, + 'BRAILLE PATTERN DOTS-1267' : 10339, + 'BRAILLE PATTERN DOTS-12678' : 10467, + 'BRAILLE PATTERN DOTS-1268' : 10403, + 'BRAILLE PATTERN DOTS-127' : 10307, + 'BRAILLE PATTERN DOTS-1278' : 10435, + 'BRAILLE PATTERN DOTS-128' : 10371, + 'BRAILLE PATTERN DOTS-13' : 10245, + 'BRAILLE PATTERN DOTS-134' : 10253, + 'BRAILLE PATTERN DOTS-1345' : 10269, + 'BRAILLE PATTERN DOTS-13456' : 10301, + 'BRAILLE PATTERN DOTS-134567' : 10365, + 'BRAILLE PATTERN DOTS-1345678' : 10493, + 'BRAILLE PATTERN DOTS-134568' : 10429, + 'BRAILLE PATTERN DOTS-13457' : 10333, + 'BRAILLE PATTERN DOTS-134578' : 10461, + 'BRAILLE PATTERN DOTS-13458' : 10397, + 'BRAILLE PATTERN DOTS-1346' : 10285, + 'BRAILLE PATTERN DOTS-13467' : 10349, + 'BRAILLE PATTERN DOTS-134678' : 10477, + 'BRAILLE PATTERN DOTS-13468' : 10413, + 'BRAILLE PATTERN DOTS-1347' : 10317, + 'BRAILLE PATTERN DOTS-13478' : 10445, + 'BRAILLE PATTERN DOTS-1348' : 10381, + 'BRAILLE PATTERN DOTS-135' : 10261, + 'BRAILLE PATTERN DOTS-1356' : 10293, + 'BRAILLE PATTERN DOTS-13567' : 10357, + 'BRAILLE PATTERN DOTS-135678' : 10485, + 'BRAILLE PATTERN DOTS-13568' : 10421, + 'BRAILLE PATTERN DOTS-1357' : 10325, + 'BRAILLE PATTERN DOTS-13578' : 10453, + 'BRAILLE PATTERN DOTS-1358' : 10389, + 'BRAILLE PATTERN DOTS-136' : 10277, + 'BRAILLE PATTERN DOTS-1367' : 10341, + 'BRAILLE PATTERN DOTS-13678' : 10469, + 'BRAILLE PATTERN DOTS-1368' : 10405, + 'BRAILLE PATTERN DOTS-137' : 10309, + 'BRAILLE PATTERN DOTS-1378' : 10437, + 'BRAILLE PATTERN DOTS-138' : 10373, + 'BRAILLE PATTERN DOTS-14' : 10249, + 'BRAILLE PATTERN DOTS-145' : 10265, + 'BRAILLE PATTERN DOTS-1456' : 10297, + 'BRAILLE PATTERN DOTS-14567' : 10361, + 'BRAILLE PATTERN DOTS-145678' : 10489, + 'BRAILLE PATTERN DOTS-14568' : 10425, + 'BRAILLE PATTERN DOTS-1457' : 10329, + 'BRAILLE PATTERN DOTS-14578' : 10457, + 'BRAILLE PATTERN DOTS-1458' : 10393, + 'BRAILLE PATTERN DOTS-146' : 10281, + 'BRAILLE PATTERN DOTS-1467' : 10345, + 'BRAILLE PATTERN DOTS-14678' : 10473, + 'BRAILLE PATTERN DOTS-1468' : 10409, + 'BRAILLE PATTERN DOTS-147' : 10313, + 'BRAILLE PATTERN DOTS-1478' : 10441, + 'BRAILLE PATTERN DOTS-148' : 10377, + 'BRAILLE PATTERN DOTS-15' : 10257, + 'BRAILLE PATTERN DOTS-156' : 10289, + 'BRAILLE PATTERN DOTS-1567' : 10353, + 'BRAILLE PATTERN DOTS-15678' : 10481, + 'BRAILLE PATTERN DOTS-1568' : 10417, + 'BRAILLE PATTERN DOTS-157' : 10321, + 'BRAILLE PATTERN DOTS-1578' : 10449, + 'BRAILLE PATTERN DOTS-158' : 10385, + 'BRAILLE PATTERN DOTS-16' : 10273, + 'BRAILLE PATTERN DOTS-167' : 10337, + 'BRAILLE PATTERN DOTS-1678' : 10465, + 'BRAILLE PATTERN DOTS-168' : 10401, + 'BRAILLE PATTERN DOTS-17' : 10305, + 'BRAILLE PATTERN DOTS-178' : 10433, + 'BRAILLE PATTERN DOTS-18' : 10369, + 'BRAILLE PATTERN DOTS-2' : 10242, + 'BRAILLE PATTERN DOTS-23' : 10246, + 'BRAILLE PATTERN DOTS-234' : 10254, + 'BRAILLE PATTERN DOTS-2345' : 10270, + 'BRAILLE PATTERN DOTS-23456' : 10302, + 'BRAILLE PATTERN DOTS-234567' : 10366, + 'BRAILLE PATTERN DOTS-2345678' : 10494, + 'BRAILLE PATTERN DOTS-234568' : 10430, + 'BRAILLE PATTERN DOTS-23457' : 10334, + 'BRAILLE PATTERN DOTS-234578' : 10462, + 'BRAILLE PATTERN DOTS-23458' : 10398, + 'BRAILLE PATTERN DOTS-2346' : 10286, + 'BRAILLE PATTERN DOTS-23467' : 10350, + 'BRAILLE PATTERN DOTS-234678' : 10478, + 'BRAILLE PATTERN DOTS-23468' : 10414, + 'BRAILLE PATTERN DOTS-2347' : 10318, + 'BRAILLE PATTERN DOTS-23478' : 10446, + 'BRAILLE PATTERN DOTS-2348' : 10382, + 'BRAILLE PATTERN DOTS-235' : 10262, + 'BRAILLE PATTERN DOTS-2356' : 10294, + 'BRAILLE PATTERN DOTS-23567' : 10358, + 'BRAILLE PATTERN DOTS-235678' : 10486, + 'BRAILLE PATTERN DOTS-23568' : 10422, + 'BRAILLE PATTERN DOTS-2357' : 10326, + 'BRAILLE PATTERN DOTS-23578' : 10454, + 'BRAILLE PATTERN DOTS-2358' : 10390, + 'BRAILLE PATTERN DOTS-236' : 10278, + 'BRAILLE PATTERN DOTS-2367' : 10342, + 'BRAILLE PATTERN DOTS-23678' : 10470, + 'BRAILLE PATTERN DOTS-2368' : 10406, + 'BRAILLE PATTERN DOTS-237' : 10310, + 'BRAILLE PATTERN DOTS-2378' : 10438, + 'BRAILLE PATTERN DOTS-238' : 10374, + 'BRAILLE PATTERN DOTS-24' : 10250, + 'BRAILLE PATTERN DOTS-245' : 10266, + 'BRAILLE PATTERN DOTS-2456' : 10298, + 'BRAILLE PATTERN DOTS-24567' : 10362, + 'BRAILLE PATTERN DOTS-245678' : 10490, + 'BRAILLE PATTERN DOTS-24568' : 10426, + 'BRAILLE PATTERN DOTS-2457' : 10330, + 'BRAILLE PATTERN DOTS-24578' : 10458, + 'BRAILLE PATTERN DOTS-2458' : 10394, + 'BRAILLE PATTERN DOTS-246' : 10282, + 'BRAILLE PATTERN DOTS-2467' : 10346, + 'BRAILLE PATTERN DOTS-24678' : 10474, + 'BRAILLE PATTERN DOTS-2468' : 10410, + 'BRAILLE PATTERN DOTS-247' : 10314, + 'BRAILLE PATTERN DOTS-2478' : 10442, + 'BRAILLE PATTERN DOTS-248' : 10378, + 'BRAILLE PATTERN DOTS-25' : 10258, + 'BRAILLE PATTERN DOTS-256' : 10290, + 'BRAILLE PATTERN DOTS-2567' : 10354, + 'BRAILLE PATTERN DOTS-25678' : 10482, + 'BRAILLE PATTERN DOTS-2568' : 10418, + 'BRAILLE PATTERN DOTS-257' : 10322, + 'BRAILLE PATTERN DOTS-2578' : 10450, + 'BRAILLE PATTERN DOTS-258' : 10386, + 'BRAILLE PATTERN DOTS-26' : 10274, + 'BRAILLE PATTERN DOTS-267' : 10338, + 'BRAILLE PATTERN DOTS-2678' : 10466, + 'BRAILLE PATTERN DOTS-268' : 10402, + 'BRAILLE PATTERN DOTS-27' : 10306, + 'BRAILLE PATTERN DOTS-278' : 10434, + 'BRAILLE PATTERN DOTS-28' : 10370, + 'BRAILLE PATTERN DOTS-3' : 10244, + 'BRAILLE PATTERN DOTS-34' : 10252, + 'BRAILLE PATTERN DOTS-345' : 10268, + 'BRAILLE PATTERN DOTS-3456' : 10300, + 'BRAILLE PATTERN DOTS-34567' : 10364, + 'BRAILLE PATTERN DOTS-345678' : 10492, + 'BRAILLE PATTERN DOTS-34568' : 10428, + 'BRAILLE PATTERN DOTS-3457' : 10332, + 'BRAILLE PATTERN DOTS-34578' : 10460, + 'BRAILLE PATTERN DOTS-3458' : 10396, + 'BRAILLE PATTERN DOTS-346' : 10284, + 'BRAILLE PATTERN DOTS-3467' : 10348, + 'BRAILLE PATTERN DOTS-34678' : 10476, + 'BRAILLE PATTERN DOTS-3468' : 10412, + 'BRAILLE PATTERN DOTS-347' : 10316, + 'BRAILLE PATTERN DOTS-3478' : 10444, + 'BRAILLE PATTERN DOTS-348' : 10380, + 'BRAILLE PATTERN DOTS-35' : 10260, + 'BRAILLE PATTERN DOTS-356' : 10292, + 'BRAILLE PATTERN DOTS-3567' : 10356, + 'BRAILLE PATTERN DOTS-35678' : 10484, + 'BRAILLE PATTERN DOTS-3568' : 10420, + 'BRAILLE PATTERN DOTS-357' : 10324, + 'BRAILLE PATTERN DOTS-3578' : 10452, + 'BRAILLE PATTERN DOTS-358' : 10388, + 'BRAILLE PATTERN DOTS-36' : 10276, + 'BRAILLE PATTERN DOTS-367' : 10340, + 'BRAILLE PATTERN DOTS-3678' : 10468, + 'BRAILLE PATTERN DOTS-368' : 10404, + 'BRAILLE PATTERN DOTS-37' : 10308, + 'BRAILLE PATTERN DOTS-378' : 10436, + 'BRAILLE PATTERN DOTS-38' : 10372, + 'BRAILLE PATTERN DOTS-4' : 10248, + 'BRAILLE PATTERN DOTS-45' : 10264, + 'BRAILLE PATTERN DOTS-456' : 10296, + 'BRAILLE PATTERN DOTS-4567' : 10360, + 'BRAILLE PATTERN DOTS-45678' : 10488, + 'BRAILLE PATTERN DOTS-4568' : 10424, + 'BRAILLE PATTERN DOTS-457' : 10328, + 'BRAILLE PATTERN DOTS-4578' : 10456, + 'BRAILLE PATTERN DOTS-458' : 10392, + 'BRAILLE PATTERN DOTS-46' : 10280, + 'BRAILLE PATTERN DOTS-467' : 10344, + 'BRAILLE PATTERN DOTS-4678' : 10472, + 'BRAILLE PATTERN DOTS-468' : 10408, + 'BRAILLE PATTERN DOTS-47' : 10312, + 'BRAILLE PATTERN DOTS-478' : 10440, + 'BRAILLE PATTERN DOTS-48' : 10376, + 'BRAILLE PATTERN DOTS-5' : 10256, + 'BRAILLE PATTERN DOTS-56' : 10288, + 'BRAILLE PATTERN DOTS-567' : 10352, + 'BRAILLE PATTERN DOTS-5678' : 10480, + 'BRAILLE PATTERN DOTS-568' : 10416, + 'BRAILLE PATTERN DOTS-57' : 10320, + 'BRAILLE PATTERN DOTS-578' : 10448, + 'BRAILLE PATTERN DOTS-58' : 10384, + 'BRAILLE PATTERN DOTS-6' : 10272, + 'BRAILLE PATTERN DOTS-67' : 10336, + 'BRAILLE PATTERN DOTS-678' : 10464, + 'BRAILLE PATTERN DOTS-68' : 10400, + 'BRAILLE PATTERN DOTS-7' : 10304, + 'BRAILLE PATTERN DOTS-78' : 10432, + 'BRAILLE PATTERN DOTS-8' : 10368, + 'BREVE' : 728, + 'BROKEN BAR' : 166, + 'BROKEN CIRCLE WITH NORTHWEST ARROW' : 9099, + 'BUHID LETTER A' : 5952, + 'BUHID LETTER BA' : 5962, + 'BUHID LETTER DA' : 5959, + 'BUHID LETTER GA' : 5956, + 'BUHID LETTER HA' : 5969, + 'BUHID LETTER I' : 5953, + 'BUHID LETTER KA' : 5955, + 'BUHID LETTER LA' : 5966, + 'BUHID LETTER MA' : 5963, + 'BUHID LETTER NA' : 5960, + 'BUHID LETTER NGA' : 5957, + 'BUHID LETTER PA' : 5961, + 'BUHID LETTER RA' : 5965, + 'BUHID LETTER SA' : 5968, + 'BUHID LETTER TA' : 5958, + 'BUHID LETTER U' : 5954, + 'BUHID LETTER WA' : 5967, + 'BUHID LETTER YA' : 5964, + 'BUHID VOWEL SIGN I' : 5970, + 'BUHID VOWEL SIGN U' : 5971, + 'BULLET' : 8226, + 'BULLET OPERATOR' : 8729, + 'BULLSEYE' : 9678, + 'BYZANTINE MUSICAL SYMBOL AGOGI ARGI' : 118940, + 'BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI' : 118939, + 'BYZANTINE MUSICAL SYMBOL AGOGI GORGI' : 118943, + 'BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI' : 118944, + 'BYZANTINE MUSICAL SYMBOL AGOGI MESI' : 118942, + 'BYZANTINE MUSICAL SYMBOL AGOGI METRIA' : 118941, + 'BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI' : 118938, + 'BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI' : 118945, + 'BYZANTINE MUSICAL SYMBOL ANATRICHISMA' : 118824, + 'BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA' : 118882, + 'BYZANTINE MUSICAL SYMBOL ANTIKENOMA' : 118876, + 'BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON' : 118797, + 'BYZANTINE MUSICAL SYMBOL APESO EXO NEO' : 118835, + 'BYZANTINE MUSICAL SYMBOL APLI' : 118917, + 'BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION' : 118818, + 'BYZANTINE MUSICAL SYMBOL APODERMA NEO' : 118916, + 'BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO' : 118866, + 'BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS' : 118957, + 'BYZANTINE MUSICAL SYMBOL APOSTROFOS' : 118801, + 'BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI' : 118802, + 'BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO' : 118865, + 'BYZANTINE MUSICAL SYMBOL APOTHEMA' : 118819, + 'BYZANTINE MUSICAL SYMBOL ARGON' : 118935, + 'BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON' : 118899, + 'BYZANTINE MUSICAL SYMBOL ARKTIKO DI' : 119020, + 'BYZANTINE MUSICAL SYMBOL ARKTIKO GA' : 119019, + 'BYZANTINE MUSICAL SYMBOL ARKTIKO KE' : 119021, + 'BYZANTINE MUSICAL SYMBOL ARKTIKO NI' : 119023, + 'BYZANTINE MUSICAL SYMBOL ARKTIKO PA' : 119017, + 'BYZANTINE MUSICAL SYMBOL ARKTIKO VOU' : 119018, + 'BYZANTINE MUSICAL SYMBOL ARKTIKO ZO' : 119022, + 'BYZANTINE MUSICAL SYMBOL CHAMILI' : 118870, + 'BYZANTINE MUSICAL SYMBOL CHAMILON' : 118808, + 'BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION' : 118843, + 'BYZANTINE MUSICAL SYMBOL CHOREVMA NEO' : 118887, + 'BYZANTINE MUSICAL SYMBOL CHROA KLITON' : 118985, + 'BYZANTINE MUSICAL SYMBOL CHROA SPATHI' : 118986, + 'BYZANTINE MUSICAL SYMBOL CHROA ZYGOS' : 118984, + 'BYZANTINE MUSICAL SYMBOL DASEIA' : 118785, + 'BYZANTINE MUSICAL SYMBOL DIARGON' : 118937, + 'BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI' : 119003, + 'BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI' : 119002, + 'BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI' : 119004, + 'BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS' : 119005, + 'BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA' : 118992, + 'BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA' : 118994, + 'BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA' : 118993, + 'BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION' : 118991, + 'BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA' : 118995, + 'BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION' : 118990, + 'BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU' : 119015, + 'BYZANTINE MUSICAL SYMBOL DIGORGON' : 118930, + 'BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO' : 118932, + 'BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO' : 118931, + 'BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA' : 118933, + 'BYZANTINE MUSICAL SYMBOL DIGRAMMA GG' : 119014, + 'BYZANTINE MUSICAL SYMBOL DIPLI' : 118918, + 'BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION' : 118912, + 'BYZANTINE MUSICAL SYMBOL DYO' : 118831, + 'BYZANTINE MUSICAL SYMBOL EKSTREPTON' : 118884, + 'BYZANTINE MUSICAL SYMBOL ELAFRON' : 118869, + 'BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU' : 118966, + 'BYZANTINE MUSICAL SYMBOL ENDOFONON' : 118907, + 'BYZANTINE MUSICAL SYMBOL EPEGERMA' : 118888, + 'BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON' : 118900, + 'BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA' : 118880, + 'BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON' : 118798, + 'BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS' : 118960, + 'BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS' : 118959, + 'BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS' : 118958, + 'BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS' : 118981, + 'BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION' : 118836, + 'BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU' : 118969, + 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI' : 118973, + 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE' : 118975, + 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA' : 118971, + 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO' : 118978, + 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO' : 118977, + 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA' : 118970, + 'BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO' : 118976, + 'BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA' : 118988, + 'BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION' : 118987, + 'BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS' : 118979, + 'BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS' : 118980, + 'BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS' : 118972, + 'BYZANTINE MUSICAL SYMBOL FTHORA NENANO' : 118983, + 'BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI' : 118982, + 'BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI' : 118974, + 'BYZANTINE MUSICAL SYMBOL GENIKI DIESIS' : 119000, + 'BYZANTINE MUSICAL SYMBOL GENIKI YFESIS' : 119001, + 'BYZANTINE MUSICAL SYMBOL GORGON ARCHAION' : 118806, + 'BYZANTINE MUSICAL SYMBOL GORGON NEO ANO' : 118927, + 'BYZANTINE MUSICAL SYMBOL GORGON NEO KATO' : 119029, + 'BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA' : 118928, + 'BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA' : 118929, + 'BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON' : 118898, + 'BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN' : 118964, + 'BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN' : 118965, + 'BYZANTINE MUSICAL SYMBOL GRONTHISMATA' : 118853, + 'BYZANTINE MUSICAL SYMBOL ICHADIN' : 118847, + 'BYZANTINE MUSICAL SYMBOL IMIDIARGON' : 118936, + 'BYZANTINE MUSICAL SYMBOL IMIFONON' : 118967, + 'BYZANTINE MUSICAL SYMBOL IMIFTHORA' : 118837, + 'BYZANTINE MUSICAL SYMBOL IMIFTHORON' : 118968, + 'BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS' : 118956, + 'BYZANTINE MUSICAL SYMBOL ISON ARCHAION' : 118810, + 'BYZANTINE MUSICAL SYMBOL ISON NEO' : 118854, + 'BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON' : 118839, + 'BYZANTINE MUSICAL SYMBOL KATAVASMA' : 118906, + 'BYZANTINE MUSICAL SYMBOL KATHISTI' : 118791, + 'BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION' : 118811, + 'BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO' : 118863, + 'BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO' : 119027, + 'BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO' : 119025, + 'BYZANTINE MUSICAL SYMBOL KENTIMATA' : 118800, + 'BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION' : 118812, + 'BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO' : 118862, + 'BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO' : 119026, + 'BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO' : 119024, + 'BYZANTINE MUSICAL SYMBOL KLASMA' : 118820, + 'BYZANTINE MUSICAL SYMBOL KLASMA ANO' : 118911, + 'BYZANTINE MUSICAL SYMBOL KLASMA KATO' : 119028, + 'BYZANTINE MUSICAL SYMBOL KONTEVMA' : 118842, + 'BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO' : 118850, + 'BYZANTINE MUSICAL SYMBOL KORONIS' : 118921, + 'BYZANTINE MUSICAL SYMBOL KOUFISMA' : 118858, + 'BYZANTINE MUSICAL SYMBOL KRATIMA ALLO' : 118914, + 'BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION' : 118913, + 'BYZANTINE MUSICAL SYMBOL KRATIMA NEO' : 118915, + 'BYZANTINE MUSICAL SYMBOL KRATIMATA' : 118834, + 'BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA' : 118860, + 'BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON' : 118868, + 'BYZANTINE MUSICAL SYMBOL KREMASTI' : 118796, + 'BYZANTINE MUSICAL SYMBOL KYLISMA' : 118881, + 'BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON' : 118923, + 'BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU' : 118922, + 'BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU' : 118926, + 'BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON' : 118925, + 'BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON' : 118924, + 'BYZANTINE MUSICAL SYMBOL LEMOI' : 118830, + 'BYZANTINE MUSICAL SYMBOL LYGISMA' : 118877, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS' : 118949, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS' : 118947, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS' : 118948, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS' : 118954, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS' : 118955, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS' : 118963, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS' : 118946, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS' : 118962, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS' : 118952, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS' : 118953, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS' : 118951, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS' : 118950, + 'BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS' : 118961, + 'BYZANTINE MUSICAL SYMBOL MIKRON ISON' : 118871, + 'BYZANTINE MUSICAL SYMBOL NANA' : 118848, + 'BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION' : 118805, + 'BYZANTINE MUSICAL SYMBOL OLIGON NEO' : 118855, + 'BYZANTINE MUSICAL SYMBOL OMALON' : 118875, + 'BYZANTINE MUSICAL SYMBOL OXEIA DIPLI' : 118788, + 'BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON' : 118787, + 'BYZANTINE MUSICAL SYMBOL OXEIA NEO' : 118856, + 'BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION' : 118816, + 'BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION' : 118828, + 'BYZANTINE MUSICAL SYMBOL OYRANISMA NEO' : 118901, + 'BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION' : 118845, + 'BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO' : 118879, + 'BYZANTINE MUSICAL SYMBOL PARAKLITIKI' : 118793, + 'BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION' : 118846, + 'BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO' : 118878, + 'BYZANTINE MUSICAL SYMBOL PARICHON' : 118814, + 'BYZANTINE MUSICAL SYMBOL PELASTON' : 118840, + 'BYZANTINE MUSICAL SYMBOL PELASTON NEO' : 118861, + 'BYZANTINE MUSICAL SYMBOL PERISPOMENI' : 118786, + 'BYZANTINE MUSICAL SYMBOL PETASMA' : 118849, + 'BYZANTINE MUSICAL SYMBOL PETASTI' : 118857, + 'BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA' : 118859, + 'BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION' : 118822, + 'BYZANTINE MUSICAL SYMBOL PIASMA NEO' : 118873, + 'BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA' : 118892, + 'BYZANTINE MUSICAL SYMBOL PSIFISTON' : 118841, + 'BYZANTINE MUSICAL SYMBOL PSIFISTON NEO' : 118874, + 'BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA' : 118895, + 'BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA' : 118897, + 'BYZANTINE MUSICAL SYMBOL PSILI' : 118784, + 'BYZANTINE MUSICAL SYMBOL PSILON' : 118807, + 'BYZANTINE MUSICAL SYMBOL RAPISMA' : 118844, + 'BYZANTINE MUSICAL SYMBOL REVMA' : 118821, + 'BYZANTINE MUSICAL SYMBOL SAXIMATA' : 118813, + 'BYZANTINE MUSICAL SYMBOL SEISMA' : 118825, + 'BYZANTINE MUSICAL SYMBOL SEISMA NEO' : 118889, + 'BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS' : 119010, + 'BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU' : 119011, + 'BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU' : 119013, + 'BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU' : 119012, + 'BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS' : 119006, + 'BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU' : 119007, + 'BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU' : 119009, + 'BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU' : 119008, + 'BYZANTINE MUSICAL SYMBOL STAVROS' : 118910, + 'BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA' : 118815, + 'BYZANTINE MUSICAL SYMBOL STIGMA' : 119016, + 'BYZANTINE MUSICAL SYMBOL STRAGGISMATA' : 118852, + 'BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION' : 118826, + 'BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU' : 118827, + 'BYZANTINE MUSICAL SYMBOL SYNAGMA NEO' : 118885, + 'BYZANTINE MUSICAL SYMBOL SYNEVMA' : 118803, + 'BYZANTINE MUSICAL SYMBOL SYRMA' : 118886, + 'BYZANTINE MUSICAL SYMBOL SYRMATIKI' : 118792, + 'BYZANTINE MUSICAL SYMBOL TELEIA' : 118799, + 'BYZANTINE MUSICAL SYMBOL TESSERA' : 118833, + 'BYZANTINE MUSICAL SYMBOL TETRAPLI' : 118920, + 'BYZANTINE MUSICAL SYMBOL THEMA' : 118829, + 'BYZANTINE MUSICAL SYMBOL THEMA APLOUN' : 118904, + 'BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO' : 118902, + 'BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO' : 118903, + 'BYZANTINE MUSICAL SYMBOL THES KAI APOTHES' : 118905, + 'BYZANTINE MUSICAL SYMBOL THITA' : 118804, + 'BYZANTINE MUSICAL SYMBOL TINAGMA' : 118823, + 'BYZANTINE MUSICAL SYMBOL TRIA' : 118832, + 'BYZANTINE MUSICAL SYMBOL TRIGORGON' : 118934, + 'BYZANTINE MUSICAL SYMBOL TRIPLI' : 118919, + 'BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA' : 118893, + 'BYZANTINE MUSICAL SYMBOL TROMIKON ALLO' : 118851, + 'BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION' : 118838, + 'BYZANTINE MUSICAL SYMBOL TROMIKON NEO' : 118883, + 'BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA' : 118894, + 'BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON' : 118891, + 'BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA' : 118896, + 'BYZANTINE MUSICAL SYMBOL VAREIA DIPLI' : 118790, + 'BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON' : 118789, + 'BYZANTINE MUSICAL SYMBOL VAREIA NEO' : 118872, + 'BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION' : 118817, + 'BYZANTINE MUSICAL SYMBOL VATHY' : 118809, + 'BYZANTINE MUSICAL SYMBOL XIRON KLASMA' : 118890, + 'BYZANTINE MUSICAL SYMBOL YFEN ANO' : 118909, + 'BYZANTINE MUSICAL SYMBOL YFEN KATO' : 118908, + 'BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA' : 118996, + 'BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA' : 118998, + 'BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA' : 118997, + 'BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA' : 118999, + 'BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION' : 118989, + 'BYZANTINE MUSICAL SYMBOL YPOKRISIS' : 118794, + 'BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI' : 118795, + 'BYZANTINE MUSICAL SYMBOL YPORROI' : 118867, + 'BYZANTINE MUSICAL SYMBOL YPSILI' : 118864, + 'CADA UNA' : 8454, + 'CADUCEUS' : 9764, + 'CANADIAN SYLLABICS A' : 5130, + 'CANADIAN SYLLABICS AA' : 5131, + 'CANADIAN SYLLABICS AAI' : 5122, + 'CANADIAN SYLLABICS AI' : 5148, + 'CANADIAN SYLLABICS AIVILIK B' : 5551, + 'CANADIAN SYLLABICS AN' : 5166, + 'CANADIAN SYLLABICS ATHAPASCAN M' : 5310, + 'CANADIAN SYLLABICS ATHAPASCAN S' : 5382, + 'CANADIAN SYLLABICS BIBLE-CREE Y' : 5439, + 'CANADIAN SYLLABICS BLACKFOOT A' : 5555, + 'CANADIAN SYLLABICS BLACKFOOT E' : 5552, + 'CANADIAN SYLLABICS BLACKFOOT I' : 5553, + 'CANADIAN SYLLABICS BLACKFOOT KA' : 5567, + 'CANADIAN SYLLABICS BLACKFOOT KE' : 5564, + 'CANADIAN SYLLABICS BLACKFOOT KI' : 5565, + 'CANADIAN SYLLABICS BLACKFOOT KO' : 5566, + 'CANADIAN SYLLABICS BLACKFOOT NA' : 5563, + 'CANADIAN SYLLABICS BLACKFOOT NE' : 5560, + 'CANADIAN SYLLABICS BLACKFOOT NI' : 5561, + 'CANADIAN SYLLABICS BLACKFOOT NO' : 5562, + 'CANADIAN SYLLABICS BLACKFOOT O' : 5554, + 'CANADIAN SYLLABICS BLACKFOOT S' : 5384, + 'CANADIAN SYLLABICS BLACKFOOT WA' : 5559, + 'CANADIAN SYLLABICS BLACKFOOT WE' : 5556, + 'CANADIAN SYLLABICS BLACKFOOT WI' : 5557, + 'CANADIAN SYLLABICS BLACKFOOT WO' : 5558, + 'CANADIAN SYLLABICS C' : 5281, + 'CANADIAN SYLLABICS CA' : 5264, + 'CANADIAN SYLLABICS CAA' : 5265, + 'CANADIAN SYLLABICS CAAI' : 5258, + 'CANADIAN SYLLABICS CARRIER CHA' : 5734, + 'CANADIAN SYLLABICS CARRIER CHE' : 5731, + 'CANADIAN SYLLABICS CARRIER CHEE' : 5732, + 'CANADIAN SYLLABICS CARRIER CHI' : 5733, + 'CANADIAN SYLLABICS CARRIER CHO' : 5730, + 'CANADIAN SYLLABICS CARRIER CHU' : 5729, + 'CANADIAN SYLLABICS CARRIER DEE' : 5203, + 'CANADIAN SYLLABICS CARRIER DI' : 5204, + 'CANADIAN SYLLABICS CARRIER DLA' : 5677, + 'CANADIAN SYLLABICS CARRIER DLE' : 5674, + 'CANADIAN SYLLABICS CARRIER DLEE' : 5675, + 'CANADIAN SYLLABICS CARRIER DLI' : 5676, + 'CANADIAN SYLLABICS CARRIER DLO' : 5673, + 'CANADIAN SYLLABICS CARRIER DLU' : 5672, + 'CANADIAN SYLLABICS CARRIER DZA' : 5709, + 'CANADIAN SYLLABICS CARRIER DZE' : 5706, + 'CANADIAN SYLLABICS CARRIER DZEE' : 5707, + 'CANADIAN SYLLABICS CARRIER DZI' : 5708, + 'CANADIAN SYLLABICS CARRIER DZO' : 5705, + 'CANADIAN SYLLABICS CARRIER DZU' : 5704, + 'CANADIAN SYLLABICS CARRIER EE' : 5128, + 'CANADIAN SYLLABICS CARRIER GA' : 5620, + 'CANADIAN SYLLABICS CARRIER GE' : 5617, + 'CANADIAN SYLLABICS CARRIER GEE' : 5618, + 'CANADIAN SYLLABICS CARRIER GHA' : 5577, + 'CANADIAN SYLLABICS CARRIER GHE' : 5574, + 'CANADIAN SYLLABICS CARRIER GHEE' : 5575, + 'CANADIAN SYLLABICS CARRIER GHI' : 5576, + 'CANADIAN SYLLABICS CARRIER GHO' : 5573, + 'CANADIAN SYLLABICS CARRIER GHU' : 5572, + 'CANADIAN SYLLABICS CARRIER GI' : 5619, + 'CANADIAN SYLLABICS CARRIER GO' : 5616, + 'CANADIAN SYLLABICS CARRIER GU' : 5615, + 'CANADIAN SYLLABICS CARRIER H' : 5195, + 'CANADIAN SYLLABICS CARRIER HEE' : 5174, + 'CANADIAN SYLLABICS CARRIER HI' : 5175, + 'CANADIAN SYLLABICS CARRIER HWA' : 5595, + 'CANADIAN SYLLABICS CARRIER HWE' : 5592, + 'CANADIAN SYLLABICS CARRIER HWEE' : 5593, + 'CANADIAN SYLLABICS CARRIER HWI' : 5594, + 'CANADIAN SYLLABICS CARRIER HWO' : 5591, + 'CANADIAN SYLLABICS CARRIER HWU' : 5590, + 'CANADIAN SYLLABICS CARRIER I' : 5129, + 'CANADIAN SYLLABICS CARRIER INITIAL Z' : 5703, + 'CANADIAN SYLLABICS CARRIER JA' : 5659, + 'CANADIAN SYLLABICS CARRIER JE' : 5655, + 'CANADIAN SYLLABICS CARRIER JEE' : 5656, + 'CANADIAN SYLLABICS CARRIER JI' : 5657, + 'CANADIAN SYLLABICS CARRIER JJA' : 5665, + 'CANADIAN SYLLABICS CARRIER JJE' : 5662, + 'CANADIAN SYLLABICS CARRIER JJEE' : 5663, + 'CANADIAN SYLLABICS CARRIER JJI' : 5664, + 'CANADIAN SYLLABICS CARRIER JJO' : 5661, + 'CANADIAN SYLLABICS CARRIER JJU' : 5660, + 'CANADIAN SYLLABICS CARRIER JO' : 5654, + 'CANADIAN SYLLABICS CARRIER JU' : 5652, + 'CANADIAN SYLLABICS CARRIER KHA' : 5626, + 'CANADIAN SYLLABICS CARRIER KHE' : 5623, + 'CANADIAN SYLLABICS CARRIER KHEE' : 5624, + 'CANADIAN SYLLABICS CARRIER KHI' : 5625, + 'CANADIAN SYLLABICS CARRIER KHO' : 5622, + 'CANADIAN SYLLABICS CARRIER KHU' : 5621, + 'CANADIAN SYLLABICS CARRIER KK' : 5633, + 'CANADIAN SYLLABICS CARRIER KKA' : 5632, + 'CANADIAN SYLLABICS CARRIER KKE' : 5629, + 'CANADIAN SYLLABICS CARRIER KKEE' : 5630, + 'CANADIAN SYLLABICS CARRIER KKI' : 5631, + 'CANADIAN SYLLABICS CARRIER KKO' : 5628, + 'CANADIAN SYLLABICS CARRIER KKU' : 5627, + 'CANADIAN SYLLABICS CARRIER LA' : 5671, + 'CANADIAN SYLLABICS CARRIER LE' : 5668, + 'CANADIAN SYLLABICS CARRIER LEE' : 5669, + 'CANADIAN SYLLABICS CARRIER LHA' : 5683, + 'CANADIAN SYLLABICS CARRIER LHE' : 5680, + 'CANADIAN SYLLABICS CARRIER LHEE' : 5681, + 'CANADIAN SYLLABICS CARRIER LHI' : 5682, + 'CANADIAN SYLLABICS CARRIER LHO' : 5679, + 'CANADIAN SYLLABICS CARRIER LHU' : 5678, + 'CANADIAN SYLLABICS CARRIER LI' : 5670, + 'CANADIAN SYLLABICS CARRIER LO' : 5667, + 'CANADIAN SYLLABICS CARRIER LU' : 5666, + 'CANADIAN SYLLABICS CARRIER MA' : 5645, + 'CANADIAN SYLLABICS CARRIER ME' : 5642, + 'CANADIAN SYLLABICS CARRIER MEE' : 5643, + 'CANADIAN SYLLABICS CARRIER MI' : 5644, + 'CANADIAN SYLLABICS CARRIER MO' : 5641, + 'CANADIAN SYLLABICS CARRIER MU' : 5640, + 'CANADIAN SYLLABICS CARRIER NA' : 5639, + 'CANADIAN SYLLABICS CARRIER NE' : 5636, + 'CANADIAN SYLLABICS CARRIER NEE' : 5637, + 'CANADIAN SYLLABICS CARRIER NG' : 5329, + 'CANADIAN SYLLABICS CARRIER NI' : 5638, + 'CANADIAN SYLLABICS CARRIER NO' : 5635, + 'CANADIAN SYLLABICS CARRIER NU' : 5634, + 'CANADIAN SYLLABICS CARRIER P' : 5614, + 'CANADIAN SYLLABICS CARRIER PA' : 5613, + 'CANADIAN SYLLABICS CARRIER PE' : 5610, + 'CANADIAN SYLLABICS CARRIER PEE' : 5611, + 'CANADIAN SYLLABICS CARRIER PI' : 5612, + 'CANADIAN SYLLABICS CARRIER PO' : 5609, + 'CANADIAN SYLLABICS CARRIER PU' : 5608, + 'CANADIAN SYLLABICS CARRIER RA' : 5583, + 'CANADIAN SYLLABICS CARRIER RE' : 5580, + 'CANADIAN SYLLABICS CARRIER REE' : 5581, + 'CANADIAN SYLLABICS CARRIER RI' : 5582, + 'CANADIAN SYLLABICS CARRIER RO' : 5579, + 'CANADIAN SYLLABICS CARRIER RU' : 5578, + 'CANADIAN SYLLABICS CARRIER SA' : 5715, + 'CANADIAN SYLLABICS CARRIER SE' : 5712, + 'CANADIAN SYLLABICS CARRIER SEE' : 5713, + 'CANADIAN SYLLABICS CARRIER SH' : 5722, + 'CANADIAN SYLLABICS CARRIER SHA' : 5721, + 'CANADIAN SYLLABICS CARRIER SHE' : 5718, + 'CANADIAN SYLLABICS CARRIER SHEE' : 5719, + 'CANADIAN SYLLABICS CARRIER SHI' : 5720, + 'CANADIAN SYLLABICS CARRIER SHO' : 5717, + 'CANADIAN SYLLABICS CARRIER SHU' : 5716, + 'CANADIAN SYLLABICS CARRIER SI' : 5714, + 'CANADIAN SYLLABICS CARRIER SO' : 5711, + 'CANADIAN SYLLABICS CARRIER SU' : 5710, + 'CANADIAN SYLLABICS CARRIER THA' : 5601, + 'CANADIAN SYLLABICS CARRIER THE' : 5598, + 'CANADIAN SYLLABICS CARRIER THEE' : 5599, + 'CANADIAN SYLLABICS CARRIER THI' : 5600, + 'CANADIAN SYLLABICS CARRIER THO' : 5597, + 'CANADIAN SYLLABICS CARRIER THU' : 5596, + 'CANADIAN SYLLABICS CARRIER TLA' : 5695, + 'CANADIAN SYLLABICS CARRIER TLE' : 5692, + 'CANADIAN SYLLABICS CARRIER TLEE' : 5693, + 'CANADIAN SYLLABICS CARRIER TLHA' : 5689, + 'CANADIAN SYLLABICS CARRIER TLHE' : 5686, + 'CANADIAN SYLLABICS CARRIER TLHEE' : 5687, + 'CANADIAN SYLLABICS CARRIER TLHI' : 5688, + 'CANADIAN SYLLABICS CARRIER TLHO' : 5685, + 'CANADIAN SYLLABICS CARRIER TLHU' : 5684, + 'CANADIAN SYLLABICS CARRIER TLI' : 5694, + 'CANADIAN SYLLABICS CARRIER TLO' : 5691, + 'CANADIAN SYLLABICS CARRIER TLU' : 5690, + 'CANADIAN SYLLABICS CARRIER TSA' : 5728, + 'CANADIAN SYLLABICS CARRIER TSE' : 5725, + 'CANADIAN SYLLABICS CARRIER TSEE' : 5726, + 'CANADIAN SYLLABICS CARRIER TSI' : 5727, + 'CANADIAN SYLLABICS CARRIER TSO' : 5724, + 'CANADIAN SYLLABICS CARRIER TSU' : 5723, + 'CANADIAN SYLLABICS CARRIER TTA' : 5607, + 'CANADIAN SYLLABICS CARRIER TTE' : 5604, + 'CANADIAN SYLLABICS CARRIER TTEE' : 5605, + 'CANADIAN SYLLABICS CARRIER TTI' : 5606, + 'CANADIAN SYLLABICS CARRIER TTO' : 5603, + 'CANADIAN SYLLABICS CARRIER TTSA' : 5740, + 'CANADIAN SYLLABICS CARRIER TTSE' : 5737, + 'CANADIAN SYLLABICS CARRIER TTSEE' : 5738, + 'CANADIAN SYLLABICS CARRIER TTSI' : 5739, + 'CANADIAN SYLLABICS CARRIER TTSO' : 5736, + 'CANADIAN SYLLABICS CARRIER TTSU' : 5735, + 'CANADIAN SYLLABICS CARRIER TTU' : 5602, + 'CANADIAN SYLLABICS CARRIER WA' : 5589, + 'CANADIAN SYLLABICS CARRIER WE' : 5586, + 'CANADIAN SYLLABICS CARRIER WEE' : 5587, + 'CANADIAN SYLLABICS CARRIER WI' : 5588, + 'CANADIAN SYLLABICS CARRIER WO' : 5585, + 'CANADIAN SYLLABICS CARRIER WU' : 5584, + 'CANADIAN SYLLABICS CARRIER YA' : 5651, + 'CANADIAN SYLLABICS CARRIER YE' : 5648, + 'CANADIAN SYLLABICS CARRIER YEE' : 5649, + 'CANADIAN SYLLABICS CARRIER YI' : 5650, + 'CANADIAN SYLLABICS CARRIER YO' : 5647, + 'CANADIAN SYLLABICS CARRIER YU' : 5646, + 'CANADIAN SYLLABICS CARRIER Z' : 5702, + 'CANADIAN SYLLABICS CARRIER ZA' : 5701, + 'CANADIAN SYLLABICS CARRIER ZE' : 5698, + 'CANADIAN SYLLABICS CARRIER ZEE' : 5699, + 'CANADIAN SYLLABICS CARRIER ZI' : 5700, + 'CANADIAN SYLLABICS CARRIER ZO' : 5697, + 'CANADIAN SYLLABICS CARRIER ZU' : 5696, + 'CANADIAN SYLLABICS CE' : 5257, + 'CANADIAN SYLLABICS CHI SIGN' : 5741, + 'CANADIAN SYLLABICS CI' : 5259, + 'CANADIAN SYLLABICS CII' : 5260, + 'CANADIAN SYLLABICS CO' : 5261, + 'CANADIAN SYLLABICS COO' : 5262, + 'CANADIAN SYLLABICS CWA' : 5276, + 'CANADIAN SYLLABICS CWAA' : 5278, + 'CANADIAN SYLLABICS CWE' : 5266, + 'CANADIAN SYLLABICS CWI' : 5268, + 'CANADIAN SYLLABICS CWII' : 5270, + 'CANADIAN SYLLABICS CWO' : 5272, + 'CANADIAN SYLLABICS CWOO' : 5274, + 'CANADIAN SYLLABICS E' : 5121, + 'CANADIAN SYLLABICS EN' : 5163, + 'CANADIAN SYLLABICS F' : 5469, + 'CANADIAN SYLLABICS FA' : 5465, + 'CANADIAN SYLLABICS FAA' : 5466, + 'CANADIAN SYLLABICS FAAI' : 5460, + 'CANADIAN SYLLABICS FE' : 5459, + 'CANADIAN SYLLABICS FI' : 5461, + 'CANADIAN SYLLABICS FII' : 5462, + 'CANADIAN SYLLABICS FINAL ACUTE' : 5151, + 'CANADIAN SYLLABICS FINAL BOTTOM HALF RING' : 5153, + 'CANADIAN SYLLABICS FINAL DOUBLE ACUTE' : 5157, + 'CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES' : 5158, + 'CANADIAN SYLLABICS FINAL DOWN TACK' : 5162, + 'CANADIAN SYLLABICS FINAL GRAVE' : 5152, + 'CANADIAN SYLLABICS FINAL MIDDLE DOT' : 5159, + 'CANADIAN SYLLABICS FINAL PLUS' : 5161, + 'CANADIAN SYLLABICS FINAL RIGHT HALF RING' : 5155, + 'CANADIAN SYLLABICS FINAL RING' : 5156, + 'CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE' : 5160, + 'CANADIAN SYLLABICS FINAL TOP HALF RING' : 5154, + 'CANADIAN SYLLABICS FO' : 5463, + 'CANADIAN SYLLABICS FOO' : 5464, + 'CANADIAN SYLLABICS FULL STOP' : 5742, + 'CANADIAN SYLLABICS FWAA' : 5467, + 'CANADIAN SYLLABICS GLOTTAL STOP' : 5150, + 'CANADIAN SYLLABICS HK' : 5501, + 'CANADIAN SYLLABICS I' : 5123, + 'CANADIAN SYLLABICS II' : 5124, + 'CANADIAN SYLLABICS IN' : 5164, + 'CANADIAN SYLLABICS K' : 5251, + 'CANADIAN SYLLABICS KA' : 5234, + 'CANADIAN SYLLABICS KAA' : 5235, + 'CANADIAN SYLLABICS KAAI' : 5228, + 'CANADIAN SYLLABICS KE' : 5227, + 'CANADIAN SYLLABICS KI' : 5229, + 'CANADIAN SYLLABICS KII' : 5230, + 'CANADIAN SYLLABICS KO' : 5231, + 'CANADIAN SYLLABICS KOO' : 5232, + 'CANADIAN SYLLABICS KW' : 5252, + 'CANADIAN SYLLABICS KWA' : 5246, + 'CANADIAN SYLLABICS KWAA' : 5248, + 'CANADIAN SYLLABICS KWE' : 5236, + 'CANADIAN SYLLABICS KWI' : 5238, + 'CANADIAN SYLLABICS KWII' : 5240, + 'CANADIAN SYLLABICS KWO' : 5242, + 'CANADIAN SYLLABICS KWOO' : 5244, + 'CANADIAN SYLLABICS L' : 5354, + 'CANADIAN SYLLABICS LA' : 5338, + 'CANADIAN SYLLABICS LAA' : 5339, + 'CANADIAN SYLLABICS LAAI' : 5332, + 'CANADIAN SYLLABICS LE' : 5331, + 'CANADIAN SYLLABICS LH' : 5542, + 'CANADIAN SYLLABICS LHA' : 5540, + 'CANADIAN SYLLABICS LHAA' : 5541, + 'CANADIAN SYLLABICS LHI' : 5536, + 'CANADIAN SYLLABICS LHII' : 5537, + 'CANADIAN SYLLABICS LHO' : 5538, + 'CANADIAN SYLLABICS LHOO' : 5539, + 'CANADIAN SYLLABICS LI' : 5333, + 'CANADIAN SYLLABICS LII' : 5334, + 'CANADIAN SYLLABICS LO' : 5335, + 'CANADIAN SYLLABICS LOO' : 5336, + 'CANADIAN SYLLABICS LWA' : 5350, + 'CANADIAN SYLLABICS LWAA' : 5352, + 'CANADIAN SYLLABICS LWE' : 5340, + 'CANADIAN SYLLABICS LWI' : 5342, + 'CANADIAN SYLLABICS LWII' : 5344, + 'CANADIAN SYLLABICS LWO' : 5346, + 'CANADIAN SYLLABICS LWOO' : 5348, + 'CANADIAN SYLLABICS M' : 5307, + 'CANADIAN SYLLABICS MA' : 5290, + 'CANADIAN SYLLABICS MAA' : 5291, + 'CANADIAN SYLLABICS MAAI' : 5284, + 'CANADIAN SYLLABICS ME' : 5283, + 'CANADIAN SYLLABICS MEDIAL L' : 5356, + 'CANADIAN SYLLABICS MEDIAL R' : 5458, + 'CANADIAN SYLLABICS MH' : 5309, + 'CANADIAN SYLLABICS MI' : 5285, + 'CANADIAN SYLLABICS MII' : 5286, + 'CANADIAN SYLLABICS MO' : 5287, + 'CANADIAN SYLLABICS MOO' : 5288, + 'CANADIAN SYLLABICS MOOSE-CREE SK' : 5385, + 'CANADIAN SYLLABICS MWA' : 5302, + 'CANADIAN SYLLABICS MWAA' : 5304, + 'CANADIAN SYLLABICS MWE' : 5292, + 'CANADIAN SYLLABICS MWI' : 5294, + 'CANADIAN SYLLABICS MWII' : 5296, + 'CANADIAN SYLLABICS MWO' : 5298, + 'CANADIAN SYLLABICS MWOO' : 5300, + 'CANADIAN SYLLABICS N' : 5328, + 'CANADIAN SYLLABICS N-CREE THE' : 5471, + 'CANADIAN SYLLABICS N-CREE THI' : 5473, + 'CANADIAN SYLLABICS N-CREE THII' : 5475, + 'CANADIAN SYLLABICS NA' : 5319, + 'CANADIAN SYLLABICS NAA' : 5320, + 'CANADIAN SYLLABICS NAAI' : 5313, + 'CANADIAN SYLLABICS NASKAPI CWAA' : 5280, + 'CANADIAN SYLLABICS NASKAPI KWAA' : 5250, + 'CANADIAN SYLLABICS NASKAPI MWAA' : 5306, + 'CANADIAN SYLLABICS NASKAPI NWAA' : 5327, + 'CANADIAN SYLLABICS NASKAPI S-W' : 5387, + 'CANADIAN SYLLABICS NASKAPI SCWA' : 5391, + 'CANADIAN SYLLABICS NASKAPI SKW' : 5386, + 'CANADIAN SYLLABICS NASKAPI SKWA' : 5390, + 'CANADIAN SYLLABICS NASKAPI SPWA' : 5388, + 'CANADIAN SYLLABICS NASKAPI STWA' : 5389, + 'CANADIAN SYLLABICS NASKAPI SWAA' : 5380, + 'CANADIAN SYLLABICS NASKAPI TWAA' : 5221, + 'CANADIAN SYLLABICS NASKAPI WAA' : 5147, + 'CANADIAN SYLLABICS NASKAPI WOO' : 5142, + 'CANADIAN SYLLABICS NASKAPI YWAA' : 5437, + 'CANADIAN SYLLABICS NE' : 5312, + 'CANADIAN SYLLABICS NG' : 5525, + 'CANADIAN SYLLABICS NGA' : 5523, + 'CANADIAN SYLLABICS NGAA' : 5524, + 'CANADIAN SYLLABICS NGAAI' : 5518, + 'CANADIAN SYLLABICS NGAI' : 5744, + 'CANADIAN SYLLABICS NGI' : 5519, + 'CANADIAN SYLLABICS NGII' : 5520, + 'CANADIAN SYLLABICS NGO' : 5521, + 'CANADIAN SYLLABICS NGOO' : 5522, + 'CANADIAN SYLLABICS NH' : 5330, + 'CANADIAN SYLLABICS NI' : 5314, + 'CANADIAN SYLLABICS NII' : 5315, + 'CANADIAN SYLLABICS NNG' : 5526, + 'CANADIAN SYLLABICS NNGA' : 5749, + 'CANADIAN SYLLABICS NNGAA' : 5750, + 'CANADIAN SYLLABICS NNGI' : 5745, + 'CANADIAN SYLLABICS NNGII' : 5746, + 'CANADIAN SYLLABICS NNGO' : 5747, + 'CANADIAN SYLLABICS NNGOO' : 5748, + 'CANADIAN SYLLABICS NO' : 5316, + 'CANADIAN SYLLABICS NOO' : 5317, + 'CANADIAN SYLLABICS NUNAVIK H' : 5499, + 'CANADIAN SYLLABICS NUNAVIK HA' : 5497, + 'CANADIAN SYLLABICS NUNAVIK HAA' : 5498, + 'CANADIAN SYLLABICS NUNAVIK HE' : 5492, + 'CANADIAN SYLLABICS NUNAVIK HI' : 5493, + 'CANADIAN SYLLABICS NUNAVIK HII' : 5494, + 'CANADIAN SYLLABICS NUNAVIK HO' : 5495, + 'CANADIAN SYLLABICS NUNAVIK HOO' : 5496, + 'CANADIAN SYLLABICS NUNAVUT H' : 5500, + 'CANADIAN SYLLABICS NWA' : 5323, + 'CANADIAN SYLLABICS NWAA' : 5325, + 'CANADIAN SYLLABICS NWE' : 5321, + 'CANADIAN SYLLABICS O' : 5125, + 'CANADIAN SYLLABICS ON' : 5165, + 'CANADIAN SYLLABICS OO' : 5126, + 'CANADIAN SYLLABICS P' : 5193, + 'CANADIAN SYLLABICS PA' : 5176, + 'CANADIAN SYLLABICS PAA' : 5177, + 'CANADIAN SYLLABICS PAAI' : 5168, + 'CANADIAN SYLLABICS PE' : 5167, + 'CANADIAN SYLLABICS PI' : 5169, + 'CANADIAN SYLLABICS PII' : 5170, + 'CANADIAN SYLLABICS PO' : 5171, + 'CANADIAN SYLLABICS POO' : 5172, + 'CANADIAN SYLLABICS PWA' : 5188, + 'CANADIAN SYLLABICS PWAA' : 5190, + 'CANADIAN SYLLABICS PWE' : 5178, + 'CANADIAN SYLLABICS PWI' : 5180, + 'CANADIAN SYLLABICS PWII' : 5182, + 'CANADIAN SYLLABICS PWO' : 5184, + 'CANADIAN SYLLABICS PWOO' : 5186, + 'CANADIAN SYLLABICS Q' : 5509, + 'CANADIAN SYLLABICS QA' : 5507, + 'CANADIAN SYLLABICS QAA' : 5508, + 'CANADIAN SYLLABICS QAAI' : 5502, + 'CANADIAN SYLLABICS QAI' : 5743, + 'CANADIAN SYLLABICS QI' : 5503, + 'CANADIAN SYLLABICS QII' : 5504, + 'CANADIAN SYLLABICS QO' : 5505, + 'CANADIAN SYLLABICS QOO' : 5506, + 'CANADIAN SYLLABICS R' : 5456, + 'CANADIAN SYLLABICS R-CREE RE' : 5443, + 'CANADIAN SYLLABICS RA' : 5451, + 'CANADIAN SYLLABICS RAA' : 5452, + 'CANADIAN SYLLABICS RAAI' : 5445, + 'CANADIAN SYLLABICS RE' : 5442, + 'CANADIAN SYLLABICS RI' : 5446, + 'CANADIAN SYLLABICS RII' : 5447, + 'CANADIAN SYLLABICS RO' : 5448, + 'CANADIAN SYLLABICS ROO' : 5449, + 'CANADIAN SYLLABICS RWAA' : 5454, + 'CANADIAN SYLLABICS S' : 5381, + 'CANADIAN SYLLABICS SA' : 5364, + 'CANADIAN SYLLABICS SAA' : 5365, + 'CANADIAN SYLLABICS SAAI' : 5358, + 'CANADIAN SYLLABICS SAYISI HA' : 5571, + 'CANADIAN SYLLABICS SAYISI HE' : 5568, + 'CANADIAN SYLLABICS SAYISI HI' : 5569, + 'CANADIAN SYLLABICS SAYISI HO' : 5570, + 'CANADIAN SYLLABICS SAYISI JI' : 5658, + 'CANADIAN SYLLABICS SAYISI JU' : 5653, + 'CANADIAN SYLLABICS SAYISI M' : 5311, + 'CANADIAN SYLLABICS SAYISI SHA' : 5530, + 'CANADIAN SYLLABICS SAYISI SHE' : 5527, + 'CANADIAN SYLLABICS SAYISI SHI' : 5528, + 'CANADIAN SYLLABICS SAYISI SHO' : 5529, + 'CANADIAN SYLLABICS SAYISI TH' : 5282, + 'CANADIAN SYLLABICS SAYISI YI' : 5441, + 'CANADIAN SYLLABICS SE' : 5357, + 'CANADIAN SYLLABICS SH' : 5413, + 'CANADIAN SYLLABICS SHA' : 5397, + 'CANADIAN SYLLABICS SHAA' : 5398, + 'CANADIAN SYLLABICS SHE' : 5392, + 'CANADIAN SYLLABICS SHI' : 5393, + 'CANADIAN SYLLABICS SHII' : 5394, + 'CANADIAN SYLLABICS SHO' : 5395, + 'CANADIAN SYLLABICS SHOO' : 5396, + 'CANADIAN SYLLABICS SHWA' : 5409, + 'CANADIAN SYLLABICS SHWAA' : 5411, + 'CANADIAN SYLLABICS SHWE' : 5399, + 'CANADIAN SYLLABICS SHWI' : 5401, + 'CANADIAN SYLLABICS SHWII' : 5403, + 'CANADIAN SYLLABICS SHWO' : 5405, + 'CANADIAN SYLLABICS SHWOO' : 5407, + 'CANADIAN SYLLABICS SI' : 5359, + 'CANADIAN SYLLABICS SII' : 5360, + 'CANADIAN SYLLABICS SO' : 5361, + 'CANADIAN SYLLABICS SOO' : 5362, + 'CANADIAN SYLLABICS SOUTH-SLAVEY KAH' : 5256, + 'CANADIAN SYLLABICS SOUTH-SLAVEY KEH' : 5253, + 'CANADIAN SYLLABICS SOUTH-SLAVEY KIH' : 5254, + 'CANADIAN SYLLABICS SOUTH-SLAVEY KOH' : 5255, + 'CANADIAN SYLLABICS SW' : 5383, + 'CANADIAN SYLLABICS SWA' : 5376, + 'CANADIAN SYLLABICS SWAA' : 5378, + 'CANADIAN SYLLABICS SWE' : 5366, + 'CANADIAN SYLLABICS SWI' : 5368, + 'CANADIAN SYLLABICS SWII' : 5370, + 'CANADIAN SYLLABICS SWO' : 5372, + 'CANADIAN SYLLABICS SWOO' : 5374, + 'CANADIAN SYLLABICS T' : 5222, + 'CANADIAN SYLLABICS TA' : 5205, + 'CANADIAN SYLLABICS TAA' : 5206, + 'CANADIAN SYLLABICS TAAI' : 5197, + 'CANADIAN SYLLABICS TE' : 5196, + 'CANADIAN SYLLABICS TH' : 5482, + 'CANADIAN SYLLABICS TH-CREE TH' : 5550, + 'CANADIAN SYLLABICS TH-CREE THA' : 5548, + 'CANADIAN SYLLABICS TH-CREE THAA' : 5549, + 'CANADIAN SYLLABICS TH-CREE THE' : 5543, + 'CANADIAN SYLLABICS TH-CREE THI' : 5544, + 'CANADIAN SYLLABICS TH-CREE THII' : 5545, + 'CANADIAN SYLLABICS TH-CREE THO' : 5546, + 'CANADIAN SYLLABICS TH-CREE THOO' : 5547, + 'CANADIAN SYLLABICS THA' : 5478, + 'CANADIAN SYLLABICS THAA' : 5479, + 'CANADIAN SYLLABICS THE' : 5470, + 'CANADIAN SYLLABICS THI' : 5472, + 'CANADIAN SYLLABICS THII' : 5474, + 'CANADIAN SYLLABICS THO' : 5476, + 'CANADIAN SYLLABICS THOO' : 5477, + 'CANADIAN SYLLABICS THWAA' : 5480, + 'CANADIAN SYLLABICS TI' : 5198, + 'CANADIAN SYLLABICS TII' : 5199, + 'CANADIAN SYLLABICS TLHA' : 5513, + 'CANADIAN SYLLABICS TLHE' : 5510, + 'CANADIAN SYLLABICS TLHI' : 5511, + 'CANADIAN SYLLABICS TLHO' : 5512, + 'CANADIAN SYLLABICS TO' : 5200, + 'CANADIAN SYLLABICS TOO' : 5201, + 'CANADIAN SYLLABICS TTA' : 5226, + 'CANADIAN SYLLABICS TTE' : 5223, + 'CANADIAN SYLLABICS TTH' : 5487, + 'CANADIAN SYLLABICS TTHA' : 5486, + 'CANADIAN SYLLABICS TTHE' : 5483, + 'CANADIAN SYLLABICS TTHI' : 5484, + 'CANADIAN SYLLABICS TTHO' : 5485, + 'CANADIAN SYLLABICS TTI' : 5224, + 'CANADIAN SYLLABICS TTO' : 5225, + 'CANADIAN SYLLABICS TWA' : 5217, + 'CANADIAN SYLLABICS TWAA' : 5219, + 'CANADIAN SYLLABICS TWE' : 5207, + 'CANADIAN SYLLABICS TWI' : 5209, + 'CANADIAN SYLLABICS TWII' : 5211, + 'CANADIAN SYLLABICS TWO' : 5213, + 'CANADIAN SYLLABICS TWOO' : 5215, + 'CANADIAN SYLLABICS TYA' : 5491, + 'CANADIAN SYLLABICS TYE' : 5488, + 'CANADIAN SYLLABICS TYI' : 5489, + 'CANADIAN SYLLABICS TYO' : 5490, + 'CANADIAN SYLLABICS WA' : 5143, + 'CANADIAN SYLLABICS WAA' : 5145, + 'CANADIAN SYLLABICS WE' : 5132, + 'CANADIAN SYLLABICS WEST-CREE CWA' : 5277, + 'CANADIAN SYLLABICS WEST-CREE CWAA' : 5279, + 'CANADIAN SYLLABICS WEST-CREE CWE' : 5267, + 'CANADIAN SYLLABICS WEST-CREE CWI' : 5269, + 'CANADIAN SYLLABICS WEST-CREE CWII' : 5271, + 'CANADIAN SYLLABICS WEST-CREE CWO' : 5273, + 'CANADIAN SYLLABICS WEST-CREE CWOO' : 5275, + 'CANADIAN SYLLABICS WEST-CREE FWAA' : 5468, + 'CANADIAN SYLLABICS WEST-CREE KWA' : 5247, + 'CANADIAN SYLLABICS WEST-CREE KWAA' : 5249, + 'CANADIAN SYLLABICS WEST-CREE KWE' : 5237, + 'CANADIAN SYLLABICS WEST-CREE KWI' : 5239, + 'CANADIAN SYLLABICS WEST-CREE KWII' : 5241, + 'CANADIAN SYLLABICS WEST-CREE KWO' : 5243, + 'CANADIAN SYLLABICS WEST-CREE KWOO' : 5245, + 'CANADIAN SYLLABICS WEST-CREE L' : 5355, + 'CANADIAN SYLLABICS WEST-CREE LA' : 5453, + 'CANADIAN SYLLABICS WEST-CREE LE' : 5444, + 'CANADIAN SYLLABICS WEST-CREE LO' : 5450, + 'CANADIAN SYLLABICS WEST-CREE LWA' : 5351, + 'CANADIAN SYLLABICS WEST-CREE LWAA' : 5353, + 'CANADIAN SYLLABICS WEST-CREE LWE' : 5341, + 'CANADIAN SYLLABICS WEST-CREE LWI' : 5343, + 'CANADIAN SYLLABICS WEST-CREE LWII' : 5345, + 'CANADIAN SYLLABICS WEST-CREE LWO' : 5347, + 'CANADIAN SYLLABICS WEST-CREE LWOO' : 5349, + 'CANADIAN SYLLABICS WEST-CREE M' : 5308, + 'CANADIAN SYLLABICS WEST-CREE MWA' : 5303, + 'CANADIAN SYLLABICS WEST-CREE MWAA' : 5305, + 'CANADIAN SYLLABICS WEST-CREE MWE' : 5293, + 'CANADIAN SYLLABICS WEST-CREE MWI' : 5295, + 'CANADIAN SYLLABICS WEST-CREE MWII' : 5297, + 'CANADIAN SYLLABICS WEST-CREE MWO' : 5299, + 'CANADIAN SYLLABICS WEST-CREE MWOO' : 5301, + 'CANADIAN SYLLABICS WEST-CREE NWA' : 5324, + 'CANADIAN SYLLABICS WEST-CREE NWAA' : 5326, + 'CANADIAN SYLLABICS WEST-CREE NWE' : 5322, + 'CANADIAN SYLLABICS WEST-CREE P' : 5194, + 'CANADIAN SYLLABICS WEST-CREE PWA' : 5189, + 'CANADIAN SYLLABICS WEST-CREE PWAA' : 5191, + 'CANADIAN SYLLABICS WEST-CREE PWE' : 5179, + 'CANADIAN SYLLABICS WEST-CREE PWI' : 5181, + 'CANADIAN SYLLABICS WEST-CREE PWII' : 5183, + 'CANADIAN SYLLABICS WEST-CREE PWO' : 5185, + 'CANADIAN SYLLABICS WEST-CREE PWOO' : 5187, + 'CANADIAN SYLLABICS WEST-CREE R' : 5457, + 'CANADIAN SYLLABICS WEST-CREE RA' : 5517, + 'CANADIAN SYLLABICS WEST-CREE RE' : 5514, + 'CANADIAN SYLLABICS WEST-CREE RI' : 5515, + 'CANADIAN SYLLABICS WEST-CREE RO' : 5516, + 'CANADIAN SYLLABICS WEST-CREE RWAA' : 5455, + 'CANADIAN SYLLABICS WEST-CREE SHWA' : 5410, + 'CANADIAN SYLLABICS WEST-CREE SHWAA' : 5412, + 'CANADIAN SYLLABICS WEST-CREE SHWE' : 5400, + 'CANADIAN SYLLABICS WEST-CREE SHWI' : 5402, + 'CANADIAN SYLLABICS WEST-CREE SHWII' : 5404, + 'CANADIAN SYLLABICS WEST-CREE SHWO' : 5406, + 'CANADIAN SYLLABICS WEST-CREE SHWOO' : 5408, + 'CANADIAN SYLLABICS WEST-CREE SWA' : 5377, + 'CANADIAN SYLLABICS WEST-CREE SWAA' : 5379, + 'CANADIAN SYLLABICS WEST-CREE SWE' : 5367, + 'CANADIAN SYLLABICS WEST-CREE SWI' : 5369, + 'CANADIAN SYLLABICS WEST-CREE SWII' : 5371, + 'CANADIAN SYLLABICS WEST-CREE SWO' : 5373, + 'CANADIAN SYLLABICS WEST-CREE SWOO' : 5375, + 'CANADIAN SYLLABICS WEST-CREE THWAA' : 5481, + 'CANADIAN SYLLABICS WEST-CREE TWA' : 5218, + 'CANADIAN SYLLABICS WEST-CREE TWAA' : 5220, + 'CANADIAN SYLLABICS WEST-CREE TWE' : 5208, + 'CANADIAN SYLLABICS WEST-CREE TWI' : 5210, + 'CANADIAN SYLLABICS WEST-CREE TWII' : 5212, + 'CANADIAN SYLLABICS WEST-CREE TWO' : 5214, + 'CANADIAN SYLLABICS WEST-CREE TWOO' : 5216, + 'CANADIAN SYLLABICS WEST-CREE WA' : 5144, + 'CANADIAN SYLLABICS WEST-CREE WAA' : 5146, + 'CANADIAN SYLLABICS WEST-CREE WE' : 5133, + 'CANADIAN SYLLABICS WEST-CREE WI' : 5135, + 'CANADIAN SYLLABICS WEST-CREE WII' : 5137, + 'CANADIAN SYLLABICS WEST-CREE WO' : 5139, + 'CANADIAN SYLLABICS WEST-CREE WOO' : 5141, + 'CANADIAN SYLLABICS WEST-CREE Y' : 5440, + 'CANADIAN SYLLABICS WEST-CREE YWA' : 5434, + 'CANADIAN SYLLABICS WEST-CREE YWAA' : 5436, + 'CANADIAN SYLLABICS WEST-CREE YWE' : 5424, + 'CANADIAN SYLLABICS WEST-CREE YWI' : 5426, + 'CANADIAN SYLLABICS WEST-CREE YWII' : 5428, + 'CANADIAN SYLLABICS WEST-CREE YWO' : 5430, + 'CANADIAN SYLLABICS WEST-CREE YWOO' : 5432, + 'CANADIAN SYLLABICS WI' : 5134, + 'CANADIAN SYLLABICS WII' : 5136, + 'CANADIAN SYLLABICS WO' : 5138, + 'CANADIAN SYLLABICS WOO' : 5140, + 'CANADIAN SYLLABICS WOODS-CREE TH' : 5535, + 'CANADIAN SYLLABICS WOODS-CREE THA' : 5534, + 'CANADIAN SYLLABICS WOODS-CREE THE' : 5531, + 'CANADIAN SYLLABICS WOODS-CREE THI' : 5532, + 'CANADIAN SYLLABICS WOODS-CREE THO' : 5533, + 'CANADIAN SYLLABICS Y' : 5438, + 'CANADIAN SYLLABICS Y-CREE COO' : 5263, + 'CANADIAN SYLLABICS Y-CREE KOO' : 5233, + 'CANADIAN SYLLABICS Y-CREE LOO' : 5337, + 'CANADIAN SYLLABICS Y-CREE MOO' : 5289, + 'CANADIAN SYLLABICS Y-CREE NOO' : 5318, + 'CANADIAN SYLLABICS Y-CREE OO' : 5127, + 'CANADIAN SYLLABICS Y-CREE POO' : 5173, + 'CANADIAN SYLLABICS Y-CREE PWAA' : 5192, + 'CANADIAN SYLLABICS Y-CREE SOO' : 5363, + 'CANADIAN SYLLABICS Y-CREE TOO' : 5202, + 'CANADIAN SYLLABICS Y-CREE W' : 5149, + 'CANADIAN SYLLABICS Y-CREE YOO' : 5420, + 'CANADIAN SYLLABICS YA' : 5421, + 'CANADIAN SYLLABICS YAA' : 5422, + 'CANADIAN SYLLABICS YAAI' : 5415, + 'CANADIAN SYLLABICS YE' : 5414, + 'CANADIAN SYLLABICS YI' : 5416, + 'CANADIAN SYLLABICS YII' : 5417, + 'CANADIAN SYLLABICS YO' : 5418, + 'CANADIAN SYLLABICS YOO' : 5419, + 'CANADIAN SYLLABICS YWA' : 5433, + 'CANADIAN SYLLABICS YWAA' : 5435, + 'CANADIAN SYLLABICS YWE' : 5423, + 'CANADIAN SYLLABICS YWI' : 5425, + 'CANADIAN SYLLABICS YWII' : 5427, + 'CANADIAN SYLLABICS YWO' : 5429, + 'CANADIAN SYLLABICS YWOO' : 5431, + 'CANCEL TAG' : 917631, + 'CANCER' : 9803, + 'CAPRICORN' : 9809, + 'CARE OF' : 8453, + 'CARET' : 8248, + 'CARET INSERTION POINT' : 8257, + 'CARON' : 711, + 'CAUTION SIGN' : 9761, + 'CEDILLA' : 184, + 'CENT SIGN' : 162, + 'CENTRE LINE SYMBOL' : 8452, + 'CENTRELINE LOW LINE' : 65102, + 'CENTRELINE OVERLINE' : 65098, + 'CHARACTER TIE' : 8256, + 'CHECK MARK' : 10003, + 'CHEROKEE LETTER A' : 5024, + 'CHEROKEE LETTER DA' : 5075, + 'CHEROKEE LETTER DE' : 5077, + 'CHEROKEE LETTER DI' : 5079, + 'CHEROKEE LETTER DLA' : 5084, + 'CHEROKEE LETTER DO' : 5081, + 'CHEROKEE LETTER DU' : 5082, + 'CHEROKEE LETTER DV' : 5083, + 'CHEROKEE LETTER E' : 5025, + 'CHEROKEE LETTER GA' : 5030, + 'CHEROKEE LETTER GE' : 5032, + 'CHEROKEE LETTER GI' : 5033, + 'CHEROKEE LETTER GO' : 5034, + 'CHEROKEE LETTER GU' : 5035, + 'CHEROKEE LETTER GV' : 5036, + 'CHEROKEE LETTER HA' : 5037, + 'CHEROKEE LETTER HE' : 5038, + 'CHEROKEE LETTER HI' : 5039, + 'CHEROKEE LETTER HNA' : 5055, + 'CHEROKEE LETTER HO' : 5040, + 'CHEROKEE LETTER HU' : 5041, + 'CHEROKEE LETTER HV' : 5042, + 'CHEROKEE LETTER I' : 5026, + 'CHEROKEE LETTER KA' : 5031, + 'CHEROKEE LETTER LA' : 5043, + 'CHEROKEE LETTER LE' : 5044, + 'CHEROKEE LETTER LI' : 5045, + 'CHEROKEE LETTER LO' : 5046, + 'CHEROKEE LETTER LU' : 5047, + 'CHEROKEE LETTER LV' : 5048, + 'CHEROKEE LETTER MA' : 5049, + 'CHEROKEE LETTER ME' : 5050, + 'CHEROKEE LETTER MI' : 5051, + 'CHEROKEE LETTER MO' : 5052, + 'CHEROKEE LETTER MU' : 5053, + 'CHEROKEE LETTER NA' : 5054, + 'CHEROKEE LETTER NAH' : 5056, + 'CHEROKEE LETTER NE' : 5057, + 'CHEROKEE LETTER NI' : 5058, + 'CHEROKEE LETTER NO' : 5059, + 'CHEROKEE LETTER NU' : 5060, + 'CHEROKEE LETTER NV' : 5061, + 'CHEROKEE LETTER O' : 5027, + 'CHEROKEE LETTER QUA' : 5062, + 'CHEROKEE LETTER QUE' : 5063, + 'CHEROKEE LETTER QUI' : 5064, + 'CHEROKEE LETTER QUO' : 5065, + 'CHEROKEE LETTER QUU' : 5066, + 'CHEROKEE LETTER QUV' : 5067, + 'CHEROKEE LETTER S' : 5069, + 'CHEROKEE LETTER SA' : 5068, + 'CHEROKEE LETTER SE' : 5070, + 'CHEROKEE LETTER SI' : 5071, + 'CHEROKEE LETTER SO' : 5072, + 'CHEROKEE LETTER SU' : 5073, + 'CHEROKEE LETTER SV' : 5074, + 'CHEROKEE LETTER TA' : 5076, + 'CHEROKEE LETTER TE' : 5078, + 'CHEROKEE LETTER TI' : 5080, + 'CHEROKEE LETTER TLA' : 5085, + 'CHEROKEE LETTER TLE' : 5086, + 'CHEROKEE LETTER TLI' : 5087, + 'CHEROKEE LETTER TLO' : 5088, + 'CHEROKEE LETTER TLU' : 5089, + 'CHEROKEE LETTER TLV' : 5090, + 'CHEROKEE LETTER TSA' : 5091, + 'CHEROKEE LETTER TSE' : 5092, + 'CHEROKEE LETTER TSI' : 5093, + 'CHEROKEE LETTER TSO' : 5094, + 'CHEROKEE LETTER TSU' : 5095, + 'CHEROKEE LETTER TSV' : 5096, + 'CHEROKEE LETTER U' : 5028, + 'CHEROKEE LETTER V' : 5029, + 'CHEROKEE LETTER WA' : 5097, + 'CHEROKEE LETTER WE' : 5098, + 'CHEROKEE LETTER WI' : 5099, + 'CHEROKEE LETTER WO' : 5100, + 'CHEROKEE LETTER WU' : 5101, + 'CHEROKEE LETTER WV' : 5102, + 'CHEROKEE LETTER YA' : 5103, + 'CHEROKEE LETTER YE' : 5104, + 'CHEROKEE LETTER YI' : 5105, + 'CHEROKEE LETTER YO' : 5106, + 'CHEROKEE LETTER YU' : 5107, + 'CHEROKEE LETTER YV' : 5108, + 'CHI RHO' : 9767, + 'CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR' : 10682, + 'CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK' : 9685, + 'CIRCLE WITH HORIZONTAL BAR' : 10677, + 'CIRCLE WITH LEFT HALF BLACK' : 9680, + 'CIRCLE WITH LOWER HALF BLACK' : 9682, + 'CIRCLE WITH RIGHT HALF BLACK' : 9681, + 'CIRCLE WITH SMALL CIRCLE TO THE RIGHT' : 10690, + 'CIRCLE WITH SUPERIMPOSED X' : 10683, + 'CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT' : 10691, + 'CIRCLE WITH UPPER HALF BLACK' : 9683, + 'CIRCLE WITH UPPER RIGHT QUADRANT BLACK' : 9684, + 'CIRCLE WITH VERTICAL FILL' : 9677, + 'CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN' : 10684, + 'CIRCLED ASTERISK OPERATOR' : 8859, + 'CIRCLED BULLET' : 10687, + 'CIRCLED DASH' : 8861, + 'CIRCLED DIGIT EIGHT' : 9319, + 'CIRCLED DIGIT FIVE' : 9316, + 'CIRCLED DIGIT FOUR' : 9315, + 'CIRCLED DIGIT NINE' : 9320, + 'CIRCLED DIGIT ONE' : 9312, + 'CIRCLED DIGIT SEVEN' : 9318, + 'CIRCLED DIGIT SIX' : 9317, + 'CIRCLED DIGIT THREE' : 9314, + 'CIRCLED DIGIT TWO' : 9313, + 'CIRCLED DIGIT ZERO' : 9450, + 'CIRCLED DIVISION SIGN' : 10808, + 'CIRCLED DIVISION SLASH' : 8856, + 'CIRCLED DOT OPERATOR' : 8857, + 'CIRCLED EQUALS' : 8860, + 'CIRCLED GREATER-THAN' : 10689, + 'CIRCLED HANGUL CHIEUCH' : 12905, + 'CIRCLED HANGUL CHIEUCH A' : 12919, + 'CIRCLED HANGUL CIEUC' : 12904, + 'CIRCLED HANGUL CIEUC A' : 12918, + 'CIRCLED HANGUL HIEUH' : 12909, + 'CIRCLED HANGUL HIEUH A' : 12923, + 'CIRCLED HANGUL IEUNG' : 12903, + 'CIRCLED HANGUL IEUNG A' : 12917, + 'CIRCLED HANGUL KHIEUKH' : 12906, + 'CIRCLED HANGUL KHIEUKH A' : 12920, + 'CIRCLED HANGUL KIYEOK' : 12896, + 'CIRCLED HANGUL KIYEOK A' : 12910, + 'CIRCLED HANGUL MIEUM' : 12900, + 'CIRCLED HANGUL MIEUM A' : 12914, + 'CIRCLED HANGUL NIEUN' : 12897, + 'CIRCLED HANGUL NIEUN A' : 12911, + 'CIRCLED HANGUL PHIEUPH' : 12908, + 'CIRCLED HANGUL PHIEUPH A' : 12922, + 'CIRCLED HANGUL PIEUP' : 12901, + 'CIRCLED HANGUL PIEUP A' : 12915, + 'CIRCLED HANGUL RIEUL' : 12899, + 'CIRCLED HANGUL RIEUL A' : 12913, + 'CIRCLED HANGUL SIOS' : 12902, + 'CIRCLED HANGUL SIOS A' : 12916, + 'CIRCLED HANGUL THIEUTH' : 12907, + 'CIRCLED HANGUL THIEUTH A' : 12921, + 'CIRCLED HANGUL TIKEUT' : 12898, + 'CIRCLED HANGUL TIKEUT A' : 12912, + 'CIRCLED HEAVY WHITE RIGHTWARDS ARROW' : 10162, + 'CIRCLED HORIZONTAL BAR WITH NOTCH' : 9097, + 'CIRCLED IDEOGRAPH ALLIANCE' : 12975, + 'CIRCLED IDEOGRAPH ATTENTION' : 12959, + 'CIRCLED IDEOGRAPH CENTRE' : 12965, + 'CIRCLED IDEOGRAPH CONGRATULATION' : 12951, + 'CIRCLED IDEOGRAPH COPY' : 12962, + 'CIRCLED IDEOGRAPH CORRECT' : 12963, + 'CIRCLED IDEOGRAPH EARTH' : 12943, + 'CIRCLED IDEOGRAPH EIGHT' : 12935, + 'CIRCLED IDEOGRAPH ENTERPRISE' : 12973, + 'CIRCLED IDEOGRAPH EXCELLENT' : 12957, + 'CIRCLED IDEOGRAPH FEMALE' : 12955, + 'CIRCLED IDEOGRAPH FINANCIAL' : 12950, + 'CIRCLED IDEOGRAPH FIRE' : 12939, + 'CIRCLED IDEOGRAPH FIVE' : 12932, + 'CIRCLED IDEOGRAPH FOUR' : 12931, + 'CIRCLED IDEOGRAPH HAVE' : 12946, + 'CIRCLED IDEOGRAPH HIGH' : 12964, + 'CIRCLED IDEOGRAPH ITEM' : 12960, + 'CIRCLED IDEOGRAPH LABOR' : 12952, + 'CIRCLED IDEOGRAPH LEFT' : 12967, + 'CIRCLED IDEOGRAPH LOW' : 12966, + 'CIRCLED IDEOGRAPH MALE' : 12954, + 'CIRCLED IDEOGRAPH MEDICINE' : 12969, + 'CIRCLED IDEOGRAPH METAL' : 12942, + 'CIRCLED IDEOGRAPH MOON' : 12938, + 'CIRCLED IDEOGRAPH NAME' : 12948, + 'CIRCLED IDEOGRAPH NIGHT' : 12976, + 'CIRCLED IDEOGRAPH NINE' : 12936, + 'CIRCLED IDEOGRAPH ONE' : 12928, + 'CIRCLED IDEOGRAPH PRINT' : 12958, + 'CIRCLED IDEOGRAPH RELIGION' : 12970, + 'CIRCLED IDEOGRAPH RESOURCE' : 12974, + 'CIRCLED IDEOGRAPH REST' : 12961, + 'CIRCLED IDEOGRAPH RIGHT' : 12968, + 'CIRCLED IDEOGRAPH SECRET' : 12953, + 'CIRCLED IDEOGRAPH SEVEN' : 12934, + 'CIRCLED IDEOGRAPH SIX' : 12933, + 'CIRCLED IDEOGRAPH SOCIETY' : 12947, + 'CIRCLED IDEOGRAPH SPECIAL' : 12949, + 'CIRCLED IDEOGRAPH STOCK' : 12945, + 'CIRCLED IDEOGRAPH STUDY' : 12971, + 'CIRCLED IDEOGRAPH SUITABLE' : 12956, + 'CIRCLED IDEOGRAPH SUN' : 12944, + 'CIRCLED IDEOGRAPH SUPERVISE' : 12972, + 'CIRCLED IDEOGRAPH TEN' : 12937, + 'CIRCLED IDEOGRAPH THREE' : 12930, + 'CIRCLED IDEOGRAPH TWO' : 12929, + 'CIRCLED IDEOGRAPH WATER' : 12940, + 'CIRCLED IDEOGRAPH WOOD' : 12941, + 'CIRCLED KATAKANA A' : 13008, + 'CIRCLED KATAKANA E' : 13011, + 'CIRCLED KATAKANA HA' : 13033, + 'CIRCLED KATAKANA HE' : 13036, + 'CIRCLED KATAKANA HI' : 13034, + 'CIRCLED KATAKANA HO' : 13037, + 'CIRCLED KATAKANA HU' : 13035, + 'CIRCLED KATAKANA I' : 13009, + 'CIRCLED KATAKANA KA' : 13013, + 'CIRCLED KATAKANA KE' : 13016, + 'CIRCLED KATAKANA KI' : 13014, + 'CIRCLED KATAKANA KO' : 13017, + 'CIRCLED KATAKANA KU' : 13015, + 'CIRCLED KATAKANA MA' : 13038, + 'CIRCLED KATAKANA ME' : 13041, + 'CIRCLED KATAKANA MI' : 13039, + 'CIRCLED KATAKANA MO' : 13042, + 'CIRCLED KATAKANA MU' : 13040, + 'CIRCLED KATAKANA NA' : 13028, + 'CIRCLED KATAKANA NE' : 13031, + 'CIRCLED KATAKANA NI' : 13029, + 'CIRCLED KATAKANA NO' : 13032, + 'CIRCLED KATAKANA NU' : 13030, + 'CIRCLED KATAKANA O' : 13012, + 'CIRCLED KATAKANA RA' : 13046, + 'CIRCLED KATAKANA RE' : 13049, + 'CIRCLED KATAKANA RI' : 13047, + 'CIRCLED KATAKANA RO' : 13050, + 'CIRCLED KATAKANA RU' : 13048, + 'CIRCLED KATAKANA SA' : 13018, + 'CIRCLED KATAKANA SE' : 13021, + 'CIRCLED KATAKANA SI' : 13019, + 'CIRCLED KATAKANA SO' : 13022, + 'CIRCLED KATAKANA SU' : 13020, + 'CIRCLED KATAKANA TA' : 13023, + 'CIRCLED KATAKANA TE' : 13026, + 'CIRCLED KATAKANA TI' : 13024, + 'CIRCLED KATAKANA TO' : 13027, + 'CIRCLED KATAKANA TU' : 13025, + 'CIRCLED KATAKANA U' : 13010, + 'CIRCLED KATAKANA WA' : 13051, + 'CIRCLED KATAKANA WE' : 13053, + 'CIRCLED KATAKANA WI' : 13052, + 'CIRCLED KATAKANA WO' : 13054, + 'CIRCLED KATAKANA YA' : 13043, + 'CIRCLED KATAKANA YO' : 13045, + 'CIRCLED KATAKANA YU' : 13044, + 'CIRCLED LATIN CAPITAL LETTER A' : 9398, + 'CIRCLED LATIN CAPITAL LETTER B' : 9399, + 'CIRCLED LATIN CAPITAL LETTER C' : 9400, + 'CIRCLED LATIN CAPITAL LETTER D' : 9401, + 'CIRCLED LATIN CAPITAL LETTER E' : 9402, + 'CIRCLED LATIN CAPITAL LETTER F' : 9403, + 'CIRCLED LATIN CAPITAL LETTER G' : 9404, + 'CIRCLED LATIN CAPITAL LETTER H' : 9405, + 'CIRCLED LATIN CAPITAL LETTER I' : 9406, + 'CIRCLED LATIN CAPITAL LETTER J' : 9407, + 'CIRCLED LATIN CAPITAL LETTER K' : 9408, + 'CIRCLED LATIN CAPITAL LETTER L' : 9409, + 'CIRCLED LATIN CAPITAL LETTER M' : 9410, + 'CIRCLED LATIN CAPITAL LETTER N' : 9411, + 'CIRCLED LATIN CAPITAL LETTER O' : 9412, + 'CIRCLED LATIN CAPITAL LETTER P' : 9413, + 'CIRCLED LATIN CAPITAL LETTER Q' : 9414, + 'CIRCLED LATIN CAPITAL LETTER R' : 9415, + 'CIRCLED LATIN CAPITAL LETTER S' : 9416, + 'CIRCLED LATIN CAPITAL LETTER T' : 9417, + 'CIRCLED LATIN CAPITAL LETTER U' : 9418, + 'CIRCLED LATIN CAPITAL LETTER V' : 9419, + 'CIRCLED LATIN CAPITAL LETTER W' : 9420, + 'CIRCLED LATIN CAPITAL LETTER X' : 9421, + 'CIRCLED LATIN CAPITAL LETTER Y' : 9422, + 'CIRCLED LATIN CAPITAL LETTER Z' : 9423, + 'CIRCLED LATIN SMALL LETTER A' : 9424, + 'CIRCLED LATIN SMALL LETTER B' : 9425, + 'CIRCLED LATIN SMALL LETTER C' : 9426, + 'CIRCLED LATIN SMALL LETTER D' : 9427, + 'CIRCLED LATIN SMALL LETTER E' : 9428, + 'CIRCLED LATIN SMALL LETTER F' : 9429, + 'CIRCLED LATIN SMALL LETTER G' : 9430, + 'CIRCLED LATIN SMALL LETTER H' : 9431, + 'CIRCLED LATIN SMALL LETTER I' : 9432, + 'CIRCLED LATIN SMALL LETTER J' : 9433, + 'CIRCLED LATIN SMALL LETTER K' : 9434, + 'CIRCLED LATIN SMALL LETTER L' : 9435, + 'CIRCLED LATIN SMALL LETTER M' : 9436, + 'CIRCLED LATIN SMALL LETTER N' : 9437, + 'CIRCLED LATIN SMALL LETTER O' : 9438, + 'CIRCLED LATIN SMALL LETTER P' : 9439, + 'CIRCLED LATIN SMALL LETTER Q' : 9440, + 'CIRCLED LATIN SMALL LETTER R' : 9441, + 'CIRCLED LATIN SMALL LETTER S' : 9442, + 'CIRCLED LATIN SMALL LETTER T' : 9443, + 'CIRCLED LATIN SMALL LETTER U' : 9444, + 'CIRCLED LATIN SMALL LETTER V' : 9445, + 'CIRCLED LATIN SMALL LETTER W' : 9446, + 'CIRCLED LATIN SMALL LETTER X' : 9447, + 'CIRCLED LATIN SMALL LETTER Y' : 9448, + 'CIRCLED LATIN SMALL LETTER Z' : 9449, + 'CIRCLED LESS-THAN' : 10688, + 'CIRCLED MINUS' : 8854, + 'CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT' : 10806, + 'CIRCLED NUMBER EIGHTEEN' : 9329, + 'CIRCLED NUMBER ELEVEN' : 9322, + 'CIRCLED NUMBER FIFTEEN' : 9326, + 'CIRCLED NUMBER FIFTY' : 12991, + 'CIRCLED NUMBER FORTY' : 12981, + 'CIRCLED NUMBER FORTY EIGHT' : 12989, + 'CIRCLED NUMBER FORTY FIVE' : 12986, + 'CIRCLED NUMBER FORTY FOUR' : 12985, + 'CIRCLED NUMBER FORTY NINE' : 12990, + 'CIRCLED NUMBER FORTY ONE' : 12982, + 'CIRCLED NUMBER FORTY SEVEN' : 12988, + 'CIRCLED NUMBER FORTY SIX' : 12987, + 'CIRCLED NUMBER FORTY THREE' : 12984, + 'CIRCLED NUMBER FORTY TWO' : 12983, + 'CIRCLED NUMBER FOURTEEN' : 9325, + 'CIRCLED NUMBER NINETEEN' : 9330, + 'CIRCLED NUMBER SEVENTEEN' : 9328, + 'CIRCLED NUMBER SIXTEEN' : 9327, + 'CIRCLED NUMBER TEN' : 9321, + 'CIRCLED NUMBER THIRTEEN' : 9324, + 'CIRCLED NUMBER THIRTY' : 12890, + 'CIRCLED NUMBER THIRTY EIGHT' : 12979, + 'CIRCLED NUMBER THIRTY FIVE' : 12895, + 'CIRCLED NUMBER THIRTY FOUR' : 12894, + 'CIRCLED NUMBER THIRTY NINE' : 12980, + 'CIRCLED NUMBER THIRTY ONE' : 12891, + 'CIRCLED NUMBER THIRTY SEVEN' : 12978, + 'CIRCLED NUMBER THIRTY SIX' : 12977, + 'CIRCLED NUMBER THIRTY THREE' : 12893, + 'CIRCLED NUMBER THIRTY TWO' : 12892, + 'CIRCLED NUMBER TWELVE' : 9323, + 'CIRCLED NUMBER TWENTY' : 9331, + 'CIRCLED NUMBER TWENTY EIGHT' : 12888, + 'CIRCLED NUMBER TWENTY FIVE' : 12885, + 'CIRCLED NUMBER TWENTY FOUR' : 12884, + 'CIRCLED NUMBER TWENTY NINE' : 12889, + 'CIRCLED NUMBER TWENTY ONE' : 12881, + 'CIRCLED NUMBER TWENTY SEVEN' : 12887, + 'CIRCLED NUMBER TWENTY SIX' : 12886, + 'CIRCLED NUMBER TWENTY THREE' : 12883, + 'CIRCLED NUMBER TWENTY TWO' : 12882, + 'CIRCLED OPEN CENTRE EIGHT POINTED STAR' : 10050, + 'CIRCLED PARALLEL' : 10679, + 'CIRCLED PERPENDICULAR' : 10681, + 'CIRCLED PLUS' : 8853, + 'CIRCLED POSTAL MARK' : 12342, + 'CIRCLED REVERSE SOLIDUS' : 10680, + 'CIRCLED RING OPERATOR' : 8858, + 'CIRCLED TIMES' : 8855, + 'CIRCLED TRIANGLE DOWN' : 9098, + 'CIRCLED VERTICAL BAR' : 10678, + 'CIRCLED WHITE BULLET' : 10686, + 'CIRCLED WHITE STAR' : 10026, + 'CIRCULATION FUNCTION' : 10768, + 'CIRCUMFLEX ACCENT' : 94, + 'CJK COMPATIBILITY IDEOGRAPH-2F800' : 194560, + 'CJK COMPATIBILITY IDEOGRAPH-2F801' : 194561, + 'CJK COMPATIBILITY IDEOGRAPH-2F802' : 194562, + 'CJK COMPATIBILITY IDEOGRAPH-2F803' : 194563, + 'CJK COMPATIBILITY IDEOGRAPH-2F804' : 194564, + 'CJK COMPATIBILITY IDEOGRAPH-2F805' : 194565, + 'CJK COMPATIBILITY IDEOGRAPH-2F806' : 194566, + 'CJK COMPATIBILITY IDEOGRAPH-2F807' : 194567, + 'CJK COMPATIBILITY IDEOGRAPH-2F808' : 194568, + 'CJK COMPATIBILITY IDEOGRAPH-2F809' : 194569, + 'CJK COMPATIBILITY IDEOGRAPH-2F80A' : 194570, + 'CJK COMPATIBILITY IDEOGRAPH-2F80B' : 194571, + 'CJK COMPATIBILITY IDEOGRAPH-2F80C' : 194572, + 'CJK COMPATIBILITY IDEOGRAPH-2F80D' : 194573, + 'CJK COMPATIBILITY IDEOGRAPH-2F80E' : 194574, + 'CJK COMPATIBILITY IDEOGRAPH-2F80F' : 194575, + 'CJK COMPATIBILITY IDEOGRAPH-2F810' : 194576, + 'CJK COMPATIBILITY IDEOGRAPH-2F811' : 194577, + 'CJK COMPATIBILITY IDEOGRAPH-2F812' : 194578, + 'CJK COMPATIBILITY IDEOGRAPH-2F813' : 194579, + 'CJK COMPATIBILITY IDEOGRAPH-2F814' : 194580, + 'CJK COMPATIBILITY IDEOGRAPH-2F815' : 194581, + 'CJK COMPATIBILITY IDEOGRAPH-2F816' : 194582, + 'CJK COMPATIBILITY IDEOGRAPH-2F817' : 194583, + 'CJK COMPATIBILITY IDEOGRAPH-2F818' : 194584, + 'CJK COMPATIBILITY IDEOGRAPH-2F819' : 194585, + 'CJK COMPATIBILITY IDEOGRAPH-2F81A' : 194586, + 'CJK COMPATIBILITY IDEOGRAPH-2F81B' : 194587, + 'CJK COMPATIBILITY IDEOGRAPH-2F81C' : 194588, + 'CJK COMPATIBILITY IDEOGRAPH-2F81D' : 194589, + 'CJK COMPATIBILITY IDEOGRAPH-2F81E' : 194590, + 'CJK COMPATIBILITY IDEOGRAPH-2F81F' : 194591, + 'CJK COMPATIBILITY IDEOGRAPH-2F820' : 194592, + 'CJK COMPATIBILITY IDEOGRAPH-2F821' : 194593, + 'CJK COMPATIBILITY IDEOGRAPH-2F822' : 194594, + 'CJK COMPATIBILITY IDEOGRAPH-2F823' : 194595, + 'CJK COMPATIBILITY IDEOGRAPH-2F824' : 194596, + 'CJK COMPATIBILITY IDEOGRAPH-2F825' : 194597, + 'CJK COMPATIBILITY IDEOGRAPH-2F826' : 194598, + 'CJK COMPATIBILITY IDEOGRAPH-2F827' : 194599, + 'CJK COMPATIBILITY IDEOGRAPH-2F828' : 194600, + 'CJK COMPATIBILITY IDEOGRAPH-2F829' : 194601, + 'CJK COMPATIBILITY IDEOGRAPH-2F82A' : 194602, + 'CJK COMPATIBILITY IDEOGRAPH-2F82B' : 194603, + 'CJK COMPATIBILITY IDEOGRAPH-2F82C' : 194604, + 'CJK COMPATIBILITY IDEOGRAPH-2F82D' : 194605, + 'CJK COMPATIBILITY IDEOGRAPH-2F82E' : 194606, + 'CJK COMPATIBILITY IDEOGRAPH-2F82F' : 194607, + 'CJK COMPATIBILITY IDEOGRAPH-2F830' : 194608, + 'CJK COMPATIBILITY IDEOGRAPH-2F831' : 194609, + 'CJK COMPATIBILITY IDEOGRAPH-2F832' : 194610, + 'CJK COMPATIBILITY IDEOGRAPH-2F833' : 194611, + 'CJK COMPATIBILITY IDEOGRAPH-2F834' : 194612, + 'CJK COMPATIBILITY IDEOGRAPH-2F835' : 194613, + 'CJK COMPATIBILITY IDEOGRAPH-2F836' : 194614, + 'CJK COMPATIBILITY IDEOGRAPH-2F837' : 194615, + 'CJK COMPATIBILITY IDEOGRAPH-2F838' : 194616, + 'CJK COMPATIBILITY IDEOGRAPH-2F839' : 194617, + 'CJK COMPATIBILITY IDEOGRAPH-2F83A' : 194618, + 'CJK COMPATIBILITY IDEOGRAPH-2F83B' : 194619, + 'CJK COMPATIBILITY IDEOGRAPH-2F83C' : 194620, + 'CJK COMPATIBILITY IDEOGRAPH-2F83D' : 194621, + 'CJK COMPATIBILITY IDEOGRAPH-2F83E' : 194622, + 'CJK COMPATIBILITY IDEOGRAPH-2F83F' : 194623, + 'CJK COMPATIBILITY IDEOGRAPH-2F840' : 194624, + 'CJK COMPATIBILITY IDEOGRAPH-2F841' : 194625, + 'CJK COMPATIBILITY IDEOGRAPH-2F842' : 194626, + 'CJK COMPATIBILITY IDEOGRAPH-2F843' : 194627, + 'CJK COMPATIBILITY IDEOGRAPH-2F844' : 194628, + 'CJK COMPATIBILITY IDEOGRAPH-2F845' : 194629, + 'CJK COMPATIBILITY IDEOGRAPH-2F846' : 194630, + 'CJK COMPATIBILITY IDEOGRAPH-2F847' : 194631, + 'CJK COMPATIBILITY IDEOGRAPH-2F848' : 194632, + 'CJK COMPATIBILITY IDEOGRAPH-2F849' : 194633, + 'CJK COMPATIBILITY IDEOGRAPH-2F84A' : 194634, + 'CJK COMPATIBILITY IDEOGRAPH-2F84B' : 194635, + 'CJK COMPATIBILITY IDEOGRAPH-2F84C' : 194636, + 'CJK COMPATIBILITY IDEOGRAPH-2F84D' : 194637, + 'CJK COMPATIBILITY IDEOGRAPH-2F84E' : 194638, + 'CJK COMPATIBILITY IDEOGRAPH-2F84F' : 194639, + 'CJK COMPATIBILITY IDEOGRAPH-2F850' : 194640, + 'CJK COMPATIBILITY IDEOGRAPH-2F851' : 194641, + 'CJK COMPATIBILITY IDEOGRAPH-2F852' : 194642, + 'CJK COMPATIBILITY IDEOGRAPH-2F853' : 194643, + 'CJK COMPATIBILITY IDEOGRAPH-2F854' : 194644, + 'CJK COMPATIBILITY IDEOGRAPH-2F855' : 194645, + 'CJK COMPATIBILITY IDEOGRAPH-2F856' : 194646, + 'CJK COMPATIBILITY IDEOGRAPH-2F857' : 194647, + 'CJK COMPATIBILITY IDEOGRAPH-2F858' : 194648, + 'CJK COMPATIBILITY IDEOGRAPH-2F859' : 194649, + 'CJK COMPATIBILITY IDEOGRAPH-2F85A' : 194650, + 'CJK COMPATIBILITY IDEOGRAPH-2F85B' : 194651, + 'CJK COMPATIBILITY IDEOGRAPH-2F85C' : 194652, + 'CJK COMPATIBILITY IDEOGRAPH-2F85D' : 194653, + 'CJK COMPATIBILITY IDEOGRAPH-2F85E' : 194654, + 'CJK COMPATIBILITY IDEOGRAPH-2F85F' : 194655, + 'CJK COMPATIBILITY IDEOGRAPH-2F860' : 194656, + 'CJK COMPATIBILITY IDEOGRAPH-2F861' : 194657, + 'CJK COMPATIBILITY IDEOGRAPH-2F862' : 194658, + 'CJK COMPATIBILITY IDEOGRAPH-2F863' : 194659, + 'CJK COMPATIBILITY IDEOGRAPH-2F864' : 194660, + 'CJK COMPATIBILITY IDEOGRAPH-2F865' : 194661, + 'CJK COMPATIBILITY IDEOGRAPH-2F866' : 194662, + 'CJK COMPATIBILITY IDEOGRAPH-2F867' : 194663, + 'CJK COMPATIBILITY IDEOGRAPH-2F868' : 194664, + 'CJK COMPATIBILITY IDEOGRAPH-2F869' : 194665, + 'CJK COMPATIBILITY IDEOGRAPH-2F86A' : 194666, + 'CJK COMPATIBILITY IDEOGRAPH-2F86B' : 194667, + 'CJK COMPATIBILITY IDEOGRAPH-2F86C' : 194668, + 'CJK COMPATIBILITY IDEOGRAPH-2F86D' : 194669, + 'CJK COMPATIBILITY IDEOGRAPH-2F86E' : 194670, + 'CJK COMPATIBILITY IDEOGRAPH-2F86F' : 194671, + 'CJK COMPATIBILITY IDEOGRAPH-2F870' : 194672, + 'CJK COMPATIBILITY IDEOGRAPH-2F871' : 194673, + 'CJK COMPATIBILITY IDEOGRAPH-2F872' : 194674, + 'CJK COMPATIBILITY IDEOGRAPH-2F873' : 194675, + 'CJK COMPATIBILITY IDEOGRAPH-2F874' : 194676, + 'CJK COMPATIBILITY IDEOGRAPH-2F875' : 194677, + 'CJK COMPATIBILITY IDEOGRAPH-2F876' : 194678, + 'CJK COMPATIBILITY IDEOGRAPH-2F877' : 194679, + 'CJK COMPATIBILITY IDEOGRAPH-2F878' : 194680, + 'CJK COMPATIBILITY IDEOGRAPH-2F879' : 194681, + 'CJK COMPATIBILITY IDEOGRAPH-2F87A' : 194682, + 'CJK COMPATIBILITY IDEOGRAPH-2F87B' : 194683, + 'CJK COMPATIBILITY IDEOGRAPH-2F87C' : 194684, + 'CJK COMPATIBILITY IDEOGRAPH-2F87D' : 194685, + 'CJK COMPATIBILITY IDEOGRAPH-2F87E' : 194686, + 'CJK COMPATIBILITY IDEOGRAPH-2F87F' : 194687, + 'CJK COMPATIBILITY IDEOGRAPH-2F880' : 194688, + 'CJK COMPATIBILITY IDEOGRAPH-2F881' : 194689, + 'CJK COMPATIBILITY IDEOGRAPH-2F882' : 194690, + 'CJK COMPATIBILITY IDEOGRAPH-2F883' : 194691, + 'CJK COMPATIBILITY IDEOGRAPH-2F884' : 194692, + 'CJK COMPATIBILITY IDEOGRAPH-2F885' : 194693, + 'CJK COMPATIBILITY IDEOGRAPH-2F886' : 194694, + 'CJK COMPATIBILITY IDEOGRAPH-2F887' : 194695, + 'CJK COMPATIBILITY IDEOGRAPH-2F888' : 194696, + 'CJK COMPATIBILITY IDEOGRAPH-2F889' : 194697, + 'CJK COMPATIBILITY IDEOGRAPH-2F88A' : 194698, + 'CJK COMPATIBILITY IDEOGRAPH-2F88B' : 194699, + 'CJK COMPATIBILITY IDEOGRAPH-2F88C' : 194700, + 'CJK COMPATIBILITY IDEOGRAPH-2F88D' : 194701, + 'CJK COMPATIBILITY IDEOGRAPH-2F88E' : 194702, + 'CJK COMPATIBILITY IDEOGRAPH-2F88F' : 194703, + 'CJK COMPATIBILITY IDEOGRAPH-2F890' : 194704, + 'CJK COMPATIBILITY IDEOGRAPH-2F891' : 194705, + 'CJK COMPATIBILITY IDEOGRAPH-2F892' : 194706, + 'CJK COMPATIBILITY IDEOGRAPH-2F893' : 194707, + 'CJK COMPATIBILITY IDEOGRAPH-2F894' : 194708, + 'CJK COMPATIBILITY IDEOGRAPH-2F895' : 194709, + 'CJK COMPATIBILITY IDEOGRAPH-2F896' : 194710, + 'CJK COMPATIBILITY IDEOGRAPH-2F897' : 194711, + 'CJK COMPATIBILITY IDEOGRAPH-2F898' : 194712, + 'CJK COMPATIBILITY IDEOGRAPH-2F899' : 194713, + 'CJK COMPATIBILITY IDEOGRAPH-2F89A' : 194714, + 'CJK COMPATIBILITY IDEOGRAPH-2F89B' : 194715, + 'CJK COMPATIBILITY IDEOGRAPH-2F89C' : 194716, + 'CJK COMPATIBILITY IDEOGRAPH-2F89D' : 194717, + 'CJK COMPATIBILITY IDEOGRAPH-2F89E' : 194718, + 'CJK COMPATIBILITY IDEOGRAPH-2F89F' : 194719, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A0' : 194720, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A1' : 194721, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A2' : 194722, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A3' : 194723, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A4' : 194724, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A5' : 194725, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A6' : 194726, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A7' : 194727, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A8' : 194728, + 'CJK COMPATIBILITY IDEOGRAPH-2F8A9' : 194729, + 'CJK COMPATIBILITY IDEOGRAPH-2F8AA' : 194730, + 'CJK COMPATIBILITY IDEOGRAPH-2F8AB' : 194731, + 'CJK COMPATIBILITY IDEOGRAPH-2F8AC' : 194732, + 'CJK COMPATIBILITY IDEOGRAPH-2F8AD' : 194733, + 'CJK COMPATIBILITY IDEOGRAPH-2F8AE' : 194734, + 'CJK COMPATIBILITY IDEOGRAPH-2F8AF' : 194735, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B0' : 194736, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B1' : 194737, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B2' : 194738, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B3' : 194739, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B4' : 194740, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B5' : 194741, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B6' : 194742, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B7' : 194743, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B8' : 194744, + 'CJK COMPATIBILITY IDEOGRAPH-2F8B9' : 194745, + 'CJK COMPATIBILITY IDEOGRAPH-2F8BA' : 194746, + 'CJK COMPATIBILITY IDEOGRAPH-2F8BB' : 194747, + 'CJK COMPATIBILITY IDEOGRAPH-2F8BC' : 194748, + 'CJK COMPATIBILITY IDEOGRAPH-2F8BD' : 194749, + 'CJK COMPATIBILITY IDEOGRAPH-2F8BE' : 194750, + 'CJK COMPATIBILITY IDEOGRAPH-2F8BF' : 194751, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C0' : 194752, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C1' : 194753, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C2' : 194754, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C3' : 194755, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C4' : 194756, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C5' : 194757, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C6' : 194758, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C7' : 194759, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C8' : 194760, + 'CJK COMPATIBILITY IDEOGRAPH-2F8C9' : 194761, + 'CJK COMPATIBILITY IDEOGRAPH-2F8CA' : 194762, + 'CJK COMPATIBILITY IDEOGRAPH-2F8CB' : 194763, + 'CJK COMPATIBILITY IDEOGRAPH-2F8CC' : 194764, + 'CJK COMPATIBILITY IDEOGRAPH-2F8CD' : 194765, + 'CJK COMPATIBILITY IDEOGRAPH-2F8CE' : 194766, + 'CJK COMPATIBILITY IDEOGRAPH-2F8CF' : 194767, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D0' : 194768, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D1' : 194769, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D2' : 194770, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D3' : 194771, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D4' : 194772, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D5' : 194773, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D6' : 194774, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D7' : 194775, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D8' : 194776, + 'CJK COMPATIBILITY IDEOGRAPH-2F8D9' : 194777, + 'CJK COMPATIBILITY IDEOGRAPH-2F8DA' : 194778, + 'CJK COMPATIBILITY IDEOGRAPH-2F8DB' : 194779, + 'CJK COMPATIBILITY IDEOGRAPH-2F8DC' : 194780, + 'CJK COMPATIBILITY IDEOGRAPH-2F8DD' : 194781, + 'CJK COMPATIBILITY IDEOGRAPH-2F8DE' : 194782, + 'CJK COMPATIBILITY IDEOGRAPH-2F8DF' : 194783, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E0' : 194784, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E1' : 194785, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E2' : 194786, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E3' : 194787, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E4' : 194788, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E5' : 194789, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E6' : 194790, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E7' : 194791, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E8' : 194792, + 'CJK COMPATIBILITY IDEOGRAPH-2F8E9' : 194793, + 'CJK COMPATIBILITY IDEOGRAPH-2F8EA' : 194794, + 'CJK COMPATIBILITY IDEOGRAPH-2F8EB' : 194795, + 'CJK COMPATIBILITY IDEOGRAPH-2F8EC' : 194796, + 'CJK COMPATIBILITY IDEOGRAPH-2F8ED' : 194797, + 'CJK COMPATIBILITY IDEOGRAPH-2F8EE' : 194798, + 'CJK COMPATIBILITY IDEOGRAPH-2F8EF' : 194799, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F0' : 194800, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F1' : 194801, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F2' : 194802, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F3' : 194803, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F4' : 194804, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F5' : 194805, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F6' : 194806, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F7' : 194807, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F8' : 194808, + 'CJK COMPATIBILITY IDEOGRAPH-2F8F9' : 194809, + 'CJK COMPATIBILITY IDEOGRAPH-2F8FA' : 194810, + 'CJK COMPATIBILITY IDEOGRAPH-2F8FB' : 194811, + 'CJK COMPATIBILITY IDEOGRAPH-2F8FC' : 194812, + 'CJK COMPATIBILITY IDEOGRAPH-2F8FD' : 194813, + 'CJK COMPATIBILITY IDEOGRAPH-2F8FE' : 194814, + 'CJK COMPATIBILITY IDEOGRAPH-2F8FF' : 194815, + 'CJK COMPATIBILITY IDEOGRAPH-2F900' : 194816, + 'CJK COMPATIBILITY IDEOGRAPH-2F901' : 194817, + 'CJK COMPATIBILITY IDEOGRAPH-2F902' : 194818, + 'CJK COMPATIBILITY IDEOGRAPH-2F903' : 194819, + 'CJK COMPATIBILITY IDEOGRAPH-2F904' : 194820, + 'CJK COMPATIBILITY IDEOGRAPH-2F905' : 194821, + 'CJK COMPATIBILITY IDEOGRAPH-2F906' : 194822, + 'CJK COMPATIBILITY IDEOGRAPH-2F907' : 194823, + 'CJK COMPATIBILITY IDEOGRAPH-2F908' : 194824, + 'CJK COMPATIBILITY IDEOGRAPH-2F909' : 194825, + 'CJK COMPATIBILITY IDEOGRAPH-2F90A' : 194826, + 'CJK COMPATIBILITY IDEOGRAPH-2F90B' : 194827, + 'CJK COMPATIBILITY IDEOGRAPH-2F90C' : 194828, + 'CJK COMPATIBILITY IDEOGRAPH-2F90D' : 194829, + 'CJK COMPATIBILITY IDEOGRAPH-2F90E' : 194830, + 'CJK COMPATIBILITY IDEOGRAPH-2F90F' : 194831, + 'CJK COMPATIBILITY IDEOGRAPH-2F910' : 194832, + 'CJK COMPATIBILITY IDEOGRAPH-2F911' : 194833, + 'CJK COMPATIBILITY IDEOGRAPH-2F912' : 194834, + 'CJK COMPATIBILITY IDEOGRAPH-2F913' : 194835, + 'CJK COMPATIBILITY IDEOGRAPH-2F914' : 194836, + 'CJK COMPATIBILITY IDEOGRAPH-2F915' : 194837, + 'CJK COMPATIBILITY IDEOGRAPH-2F916' : 194838, + 'CJK COMPATIBILITY IDEOGRAPH-2F917' : 194839, + 'CJK COMPATIBILITY IDEOGRAPH-2F918' : 194840, + 'CJK COMPATIBILITY IDEOGRAPH-2F919' : 194841, + 'CJK COMPATIBILITY IDEOGRAPH-2F91A' : 194842, + 'CJK COMPATIBILITY IDEOGRAPH-2F91B' : 194843, + 'CJK COMPATIBILITY IDEOGRAPH-2F91C' : 194844, + 'CJK COMPATIBILITY IDEOGRAPH-2F91D' : 194845, + 'CJK COMPATIBILITY IDEOGRAPH-2F91E' : 194846, + 'CJK COMPATIBILITY IDEOGRAPH-2F91F' : 194847, + 'CJK COMPATIBILITY IDEOGRAPH-2F920' : 194848, + 'CJK COMPATIBILITY IDEOGRAPH-2F921' : 194849, + 'CJK COMPATIBILITY IDEOGRAPH-2F922' : 194850, + 'CJK COMPATIBILITY IDEOGRAPH-2F923' : 194851, + 'CJK COMPATIBILITY IDEOGRAPH-2F924' : 194852, + 'CJK COMPATIBILITY IDEOGRAPH-2F925' : 194853, + 'CJK COMPATIBILITY IDEOGRAPH-2F926' : 194854, + 'CJK COMPATIBILITY IDEOGRAPH-2F927' : 194855, + 'CJK COMPATIBILITY IDEOGRAPH-2F928' : 194856, + 'CJK COMPATIBILITY IDEOGRAPH-2F929' : 194857, + 'CJK COMPATIBILITY IDEOGRAPH-2F92A' : 194858, + 'CJK COMPATIBILITY IDEOGRAPH-2F92B' : 194859, + 'CJK COMPATIBILITY IDEOGRAPH-2F92C' : 194860, + 'CJK COMPATIBILITY IDEOGRAPH-2F92D' : 194861, + 'CJK COMPATIBILITY IDEOGRAPH-2F92E' : 194862, + 'CJK COMPATIBILITY IDEOGRAPH-2F92F' : 194863, + 'CJK COMPATIBILITY IDEOGRAPH-2F930' : 194864, + 'CJK COMPATIBILITY IDEOGRAPH-2F931' : 194865, + 'CJK COMPATIBILITY IDEOGRAPH-2F932' : 194866, + 'CJK COMPATIBILITY IDEOGRAPH-2F933' : 194867, + 'CJK COMPATIBILITY IDEOGRAPH-2F934' : 194868, + 'CJK COMPATIBILITY IDEOGRAPH-2F935' : 194869, + 'CJK COMPATIBILITY IDEOGRAPH-2F936' : 194870, + 'CJK COMPATIBILITY IDEOGRAPH-2F937' : 194871, + 'CJK COMPATIBILITY IDEOGRAPH-2F938' : 194872, + 'CJK COMPATIBILITY IDEOGRAPH-2F939' : 194873, + 'CJK COMPATIBILITY IDEOGRAPH-2F93A' : 194874, + 'CJK COMPATIBILITY IDEOGRAPH-2F93B' : 194875, + 'CJK COMPATIBILITY IDEOGRAPH-2F93C' : 194876, + 'CJK COMPATIBILITY IDEOGRAPH-2F93D' : 194877, + 'CJK COMPATIBILITY IDEOGRAPH-2F93E' : 194878, + 'CJK COMPATIBILITY IDEOGRAPH-2F93F' : 194879, + 'CJK COMPATIBILITY IDEOGRAPH-2F940' : 194880, + 'CJK COMPATIBILITY IDEOGRAPH-2F941' : 194881, + 'CJK COMPATIBILITY IDEOGRAPH-2F942' : 194882, + 'CJK COMPATIBILITY IDEOGRAPH-2F943' : 194883, + 'CJK COMPATIBILITY IDEOGRAPH-2F944' : 194884, + 'CJK COMPATIBILITY IDEOGRAPH-2F945' : 194885, + 'CJK COMPATIBILITY IDEOGRAPH-2F946' : 194886, + 'CJK COMPATIBILITY IDEOGRAPH-2F947' : 194887, + 'CJK COMPATIBILITY IDEOGRAPH-2F948' : 194888, + 'CJK COMPATIBILITY IDEOGRAPH-2F949' : 194889, + 'CJK COMPATIBILITY IDEOGRAPH-2F94A' : 194890, + 'CJK COMPATIBILITY IDEOGRAPH-2F94B' : 194891, + 'CJK COMPATIBILITY IDEOGRAPH-2F94C' : 194892, + 'CJK COMPATIBILITY IDEOGRAPH-2F94D' : 194893, + 'CJK COMPATIBILITY IDEOGRAPH-2F94E' : 194894, + 'CJK COMPATIBILITY IDEOGRAPH-2F94F' : 194895, + 'CJK COMPATIBILITY IDEOGRAPH-2F950' : 194896, + 'CJK COMPATIBILITY IDEOGRAPH-2F951' : 194897, + 'CJK COMPATIBILITY IDEOGRAPH-2F952' : 194898, + 'CJK COMPATIBILITY IDEOGRAPH-2F953' : 194899, + 'CJK COMPATIBILITY IDEOGRAPH-2F954' : 194900, + 'CJK COMPATIBILITY IDEOGRAPH-2F955' : 194901, + 'CJK COMPATIBILITY IDEOGRAPH-2F956' : 194902, + 'CJK COMPATIBILITY IDEOGRAPH-2F957' : 194903, + 'CJK COMPATIBILITY IDEOGRAPH-2F958' : 194904, + 'CJK COMPATIBILITY IDEOGRAPH-2F959' : 194905, + 'CJK COMPATIBILITY IDEOGRAPH-2F95A' : 194906, + 'CJK COMPATIBILITY IDEOGRAPH-2F95B' : 194907, + 'CJK COMPATIBILITY IDEOGRAPH-2F95C' : 194908, + 'CJK COMPATIBILITY IDEOGRAPH-2F95D' : 194909, + 'CJK COMPATIBILITY IDEOGRAPH-2F95E' : 194910, + 'CJK COMPATIBILITY IDEOGRAPH-2F95F' : 194911, + 'CJK COMPATIBILITY IDEOGRAPH-2F960' : 194912, + 'CJK COMPATIBILITY IDEOGRAPH-2F961' : 194913, + 'CJK COMPATIBILITY IDEOGRAPH-2F962' : 194914, + 'CJK COMPATIBILITY IDEOGRAPH-2F963' : 194915, + 'CJK COMPATIBILITY IDEOGRAPH-2F964' : 194916, + 'CJK COMPATIBILITY IDEOGRAPH-2F965' : 194917, + 'CJK COMPATIBILITY IDEOGRAPH-2F966' : 194918, + 'CJK COMPATIBILITY IDEOGRAPH-2F967' : 194919, + 'CJK COMPATIBILITY IDEOGRAPH-2F968' : 194920, + 'CJK COMPATIBILITY IDEOGRAPH-2F969' : 194921, + 'CJK COMPATIBILITY IDEOGRAPH-2F96A' : 194922, + 'CJK COMPATIBILITY IDEOGRAPH-2F96B' : 194923, + 'CJK COMPATIBILITY IDEOGRAPH-2F96C' : 194924, + 'CJK COMPATIBILITY IDEOGRAPH-2F96D' : 194925, + 'CJK COMPATIBILITY IDEOGRAPH-2F96E' : 194926, + 'CJK COMPATIBILITY IDEOGRAPH-2F96F' : 194927, + 'CJK COMPATIBILITY IDEOGRAPH-2F970' : 194928, + 'CJK COMPATIBILITY IDEOGRAPH-2F971' : 194929, + 'CJK COMPATIBILITY IDEOGRAPH-2F972' : 194930, + 'CJK COMPATIBILITY IDEOGRAPH-2F973' : 194931, + 'CJK COMPATIBILITY IDEOGRAPH-2F974' : 194932, + 'CJK COMPATIBILITY IDEOGRAPH-2F975' : 194933, + 'CJK COMPATIBILITY IDEOGRAPH-2F976' : 194934, + 'CJK COMPATIBILITY IDEOGRAPH-2F977' : 194935, + 'CJK COMPATIBILITY IDEOGRAPH-2F978' : 194936, + 'CJK COMPATIBILITY IDEOGRAPH-2F979' : 194937, + 'CJK COMPATIBILITY IDEOGRAPH-2F97A' : 194938, + 'CJK COMPATIBILITY IDEOGRAPH-2F97B' : 194939, + 'CJK COMPATIBILITY IDEOGRAPH-2F97C' : 194940, + 'CJK COMPATIBILITY IDEOGRAPH-2F97D' : 194941, + 'CJK COMPATIBILITY IDEOGRAPH-2F97E' : 194942, + 'CJK COMPATIBILITY IDEOGRAPH-2F97F' : 194943, + 'CJK COMPATIBILITY IDEOGRAPH-2F980' : 194944, + 'CJK COMPATIBILITY IDEOGRAPH-2F981' : 194945, + 'CJK COMPATIBILITY IDEOGRAPH-2F982' : 194946, + 'CJK COMPATIBILITY IDEOGRAPH-2F983' : 194947, + 'CJK COMPATIBILITY IDEOGRAPH-2F984' : 194948, + 'CJK COMPATIBILITY IDEOGRAPH-2F985' : 194949, + 'CJK COMPATIBILITY IDEOGRAPH-2F986' : 194950, + 'CJK COMPATIBILITY IDEOGRAPH-2F987' : 194951, + 'CJK COMPATIBILITY IDEOGRAPH-2F988' : 194952, + 'CJK COMPATIBILITY IDEOGRAPH-2F989' : 194953, + 'CJK COMPATIBILITY IDEOGRAPH-2F98A' : 194954, + 'CJK COMPATIBILITY IDEOGRAPH-2F98B' : 194955, + 'CJK COMPATIBILITY IDEOGRAPH-2F98C' : 194956, + 'CJK COMPATIBILITY IDEOGRAPH-2F98D' : 194957, + 'CJK COMPATIBILITY IDEOGRAPH-2F98E' : 194958, + 'CJK COMPATIBILITY IDEOGRAPH-2F98F' : 194959, + 'CJK COMPATIBILITY IDEOGRAPH-2F990' : 194960, + 'CJK COMPATIBILITY IDEOGRAPH-2F991' : 194961, + 'CJK COMPATIBILITY IDEOGRAPH-2F992' : 194962, + 'CJK COMPATIBILITY IDEOGRAPH-2F993' : 194963, + 'CJK COMPATIBILITY IDEOGRAPH-2F994' : 194964, + 'CJK COMPATIBILITY IDEOGRAPH-2F995' : 194965, + 'CJK COMPATIBILITY IDEOGRAPH-2F996' : 194966, + 'CJK COMPATIBILITY IDEOGRAPH-2F997' : 194967, + 'CJK COMPATIBILITY IDEOGRAPH-2F998' : 194968, + 'CJK COMPATIBILITY IDEOGRAPH-2F999' : 194969, + 'CJK COMPATIBILITY IDEOGRAPH-2F99A' : 194970, + 'CJK COMPATIBILITY IDEOGRAPH-2F99B' : 194971, + 'CJK COMPATIBILITY IDEOGRAPH-2F99C' : 194972, + 'CJK COMPATIBILITY IDEOGRAPH-2F99D' : 194973, + 'CJK COMPATIBILITY IDEOGRAPH-2F99E' : 194974, + 'CJK COMPATIBILITY IDEOGRAPH-2F99F' : 194975, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A0' : 194976, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A1' : 194977, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A2' : 194978, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A3' : 194979, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A4' : 194980, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A5' : 194981, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A6' : 194982, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A7' : 194983, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A8' : 194984, + 'CJK COMPATIBILITY IDEOGRAPH-2F9A9' : 194985, + 'CJK COMPATIBILITY IDEOGRAPH-2F9AA' : 194986, + 'CJK COMPATIBILITY IDEOGRAPH-2F9AB' : 194987, + 'CJK COMPATIBILITY IDEOGRAPH-2F9AC' : 194988, + 'CJK COMPATIBILITY IDEOGRAPH-2F9AD' : 194989, + 'CJK COMPATIBILITY IDEOGRAPH-2F9AE' : 194990, + 'CJK COMPATIBILITY IDEOGRAPH-2F9AF' : 194991, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B0' : 194992, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B1' : 194993, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B2' : 194994, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B3' : 194995, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B4' : 194996, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B5' : 194997, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B6' : 194998, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B7' : 194999, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B8' : 195000, + 'CJK COMPATIBILITY IDEOGRAPH-2F9B9' : 195001, + 'CJK COMPATIBILITY IDEOGRAPH-2F9BA' : 195002, + 'CJK COMPATIBILITY IDEOGRAPH-2F9BB' : 195003, + 'CJK COMPATIBILITY IDEOGRAPH-2F9BC' : 195004, + 'CJK COMPATIBILITY IDEOGRAPH-2F9BD' : 195005, + 'CJK COMPATIBILITY IDEOGRAPH-2F9BE' : 195006, + 'CJK COMPATIBILITY IDEOGRAPH-2F9BF' : 195007, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C0' : 195008, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C1' : 195009, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C2' : 195010, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C3' : 195011, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C4' : 195012, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C5' : 195013, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C6' : 195014, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C7' : 195015, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C8' : 195016, + 'CJK COMPATIBILITY IDEOGRAPH-2F9C9' : 195017, + 'CJK COMPATIBILITY IDEOGRAPH-2F9CA' : 195018, + 'CJK COMPATIBILITY IDEOGRAPH-2F9CB' : 195019, + 'CJK COMPATIBILITY IDEOGRAPH-2F9CC' : 195020, + 'CJK COMPATIBILITY IDEOGRAPH-2F9CD' : 195021, + 'CJK COMPATIBILITY IDEOGRAPH-2F9CE' : 195022, + 'CJK COMPATIBILITY IDEOGRAPH-2F9CF' : 195023, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D0' : 195024, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D1' : 195025, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D2' : 195026, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D3' : 195027, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D4' : 195028, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D5' : 195029, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D6' : 195030, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D7' : 195031, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D8' : 195032, + 'CJK COMPATIBILITY IDEOGRAPH-2F9D9' : 195033, + 'CJK COMPATIBILITY IDEOGRAPH-2F9DA' : 195034, + 'CJK COMPATIBILITY IDEOGRAPH-2F9DB' : 195035, + 'CJK COMPATIBILITY IDEOGRAPH-2F9DC' : 195036, + 'CJK COMPATIBILITY IDEOGRAPH-2F9DD' : 195037, + 'CJK COMPATIBILITY IDEOGRAPH-2F9DE' : 195038, + 'CJK COMPATIBILITY IDEOGRAPH-2F9DF' : 195039, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E0' : 195040, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E1' : 195041, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E2' : 195042, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E3' : 195043, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E4' : 195044, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E5' : 195045, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E6' : 195046, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E7' : 195047, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E8' : 195048, + 'CJK COMPATIBILITY IDEOGRAPH-2F9E9' : 195049, + 'CJK COMPATIBILITY IDEOGRAPH-2F9EA' : 195050, + 'CJK COMPATIBILITY IDEOGRAPH-2F9EB' : 195051, + 'CJK COMPATIBILITY IDEOGRAPH-2F9EC' : 195052, + 'CJK COMPATIBILITY IDEOGRAPH-2F9ED' : 195053, + 'CJK COMPATIBILITY IDEOGRAPH-2F9EE' : 195054, + 'CJK COMPATIBILITY IDEOGRAPH-2F9EF' : 195055, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F0' : 195056, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F1' : 195057, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F2' : 195058, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F3' : 195059, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F4' : 195060, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F5' : 195061, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F6' : 195062, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F7' : 195063, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F8' : 195064, + 'CJK COMPATIBILITY IDEOGRAPH-2F9F9' : 195065, + 'CJK COMPATIBILITY IDEOGRAPH-2F9FA' : 195066, + 'CJK COMPATIBILITY IDEOGRAPH-2F9FB' : 195067, + 'CJK COMPATIBILITY IDEOGRAPH-2F9FC' : 195068, + 'CJK COMPATIBILITY IDEOGRAPH-2F9FD' : 195069, + 'CJK COMPATIBILITY IDEOGRAPH-2F9FE' : 195070, + 'CJK COMPATIBILITY IDEOGRAPH-2F9FF' : 195071, + 'CJK COMPATIBILITY IDEOGRAPH-2FA00' : 195072, + 'CJK COMPATIBILITY IDEOGRAPH-2FA01' : 195073, + 'CJK COMPATIBILITY IDEOGRAPH-2FA02' : 195074, + 'CJK COMPATIBILITY IDEOGRAPH-2FA03' : 195075, + 'CJK COMPATIBILITY IDEOGRAPH-2FA04' : 195076, + 'CJK COMPATIBILITY IDEOGRAPH-2FA05' : 195077, + 'CJK COMPATIBILITY IDEOGRAPH-2FA06' : 195078, + 'CJK COMPATIBILITY IDEOGRAPH-2FA07' : 195079, + 'CJK COMPATIBILITY IDEOGRAPH-2FA08' : 195080, + 'CJK COMPATIBILITY IDEOGRAPH-2FA09' : 195081, + 'CJK COMPATIBILITY IDEOGRAPH-2FA0A' : 195082, + 'CJK COMPATIBILITY IDEOGRAPH-2FA0B' : 195083, + 'CJK COMPATIBILITY IDEOGRAPH-2FA0C' : 195084, + 'CJK COMPATIBILITY IDEOGRAPH-2FA0D' : 195085, + 'CJK COMPATIBILITY IDEOGRAPH-2FA0E' : 195086, + 'CJK COMPATIBILITY IDEOGRAPH-2FA0F' : 195087, + 'CJK COMPATIBILITY IDEOGRAPH-2FA10' : 195088, + 'CJK COMPATIBILITY IDEOGRAPH-2FA11' : 195089, + 'CJK COMPATIBILITY IDEOGRAPH-2FA12' : 195090, + 'CJK COMPATIBILITY IDEOGRAPH-2FA13' : 195091, + 'CJK COMPATIBILITY IDEOGRAPH-2FA14' : 195092, + 'CJK COMPATIBILITY IDEOGRAPH-2FA15' : 195093, + 'CJK COMPATIBILITY IDEOGRAPH-2FA16' : 195094, + 'CJK COMPATIBILITY IDEOGRAPH-2FA17' : 195095, + 'CJK COMPATIBILITY IDEOGRAPH-2FA18' : 195096, + 'CJK COMPATIBILITY IDEOGRAPH-2FA19' : 195097, + 'CJK COMPATIBILITY IDEOGRAPH-2FA1A' : 195098, + 'CJK COMPATIBILITY IDEOGRAPH-2FA1B' : 195099, + 'CJK COMPATIBILITY IDEOGRAPH-2FA1C' : 195100, + 'CJK COMPATIBILITY IDEOGRAPH-2FA1D' : 195101, + 'CJK COMPATIBILITY IDEOGRAPH-F900' : 63744, + 'CJK COMPATIBILITY IDEOGRAPH-F901' : 63745, + 'CJK COMPATIBILITY IDEOGRAPH-F902' : 63746, + 'CJK COMPATIBILITY IDEOGRAPH-F903' : 63747, + 'CJK COMPATIBILITY IDEOGRAPH-F904' : 63748, + 'CJK COMPATIBILITY IDEOGRAPH-F905' : 63749, + 'CJK COMPATIBILITY IDEOGRAPH-F906' : 63750, + 'CJK COMPATIBILITY IDEOGRAPH-F907' : 63751, + 'CJK COMPATIBILITY IDEOGRAPH-F908' : 63752, + 'CJK COMPATIBILITY IDEOGRAPH-F909' : 63753, + 'CJK COMPATIBILITY IDEOGRAPH-F90A' : 63754, + 'CJK COMPATIBILITY IDEOGRAPH-F90B' : 63755, + 'CJK COMPATIBILITY IDEOGRAPH-F90C' : 63756, + 'CJK COMPATIBILITY IDEOGRAPH-F90D' : 63757, + 'CJK COMPATIBILITY IDEOGRAPH-F90E' : 63758, + 'CJK COMPATIBILITY IDEOGRAPH-F90F' : 63759, + 'CJK COMPATIBILITY IDEOGRAPH-F910' : 63760, + 'CJK COMPATIBILITY IDEOGRAPH-F911' : 63761, + 'CJK COMPATIBILITY IDEOGRAPH-F912' : 63762, + 'CJK COMPATIBILITY IDEOGRAPH-F913' : 63763, + 'CJK COMPATIBILITY IDEOGRAPH-F914' : 63764, + 'CJK COMPATIBILITY IDEOGRAPH-F915' : 63765, + 'CJK COMPATIBILITY IDEOGRAPH-F916' : 63766, + 'CJK COMPATIBILITY IDEOGRAPH-F917' : 63767, + 'CJK COMPATIBILITY IDEOGRAPH-F918' : 63768, + 'CJK COMPATIBILITY IDEOGRAPH-F919' : 63769, + 'CJK COMPATIBILITY IDEOGRAPH-F91A' : 63770, + 'CJK COMPATIBILITY IDEOGRAPH-F91B' : 63771, + 'CJK COMPATIBILITY IDEOGRAPH-F91C' : 63772, + 'CJK COMPATIBILITY IDEOGRAPH-F91D' : 63773, + 'CJK COMPATIBILITY IDEOGRAPH-F91E' : 63774, + 'CJK COMPATIBILITY IDEOGRAPH-F91F' : 63775, + 'CJK COMPATIBILITY IDEOGRAPH-F920' : 63776, + 'CJK COMPATIBILITY IDEOGRAPH-F921' : 63777, + 'CJK COMPATIBILITY IDEOGRAPH-F922' : 63778, + 'CJK COMPATIBILITY IDEOGRAPH-F923' : 63779, + 'CJK COMPATIBILITY IDEOGRAPH-F924' : 63780, + 'CJK COMPATIBILITY IDEOGRAPH-F925' : 63781, + 'CJK COMPATIBILITY IDEOGRAPH-F926' : 63782, + 'CJK COMPATIBILITY IDEOGRAPH-F927' : 63783, + 'CJK COMPATIBILITY IDEOGRAPH-F928' : 63784, + 'CJK COMPATIBILITY IDEOGRAPH-F929' : 63785, + 'CJK COMPATIBILITY IDEOGRAPH-F92A' : 63786, + 'CJK COMPATIBILITY IDEOGRAPH-F92B' : 63787, + 'CJK COMPATIBILITY IDEOGRAPH-F92C' : 63788, + 'CJK COMPATIBILITY IDEOGRAPH-F92D' : 63789, + 'CJK COMPATIBILITY IDEOGRAPH-F92E' : 63790, + 'CJK COMPATIBILITY IDEOGRAPH-F92F' : 63791, + 'CJK COMPATIBILITY IDEOGRAPH-F930' : 63792, + 'CJK COMPATIBILITY IDEOGRAPH-F931' : 63793, + 'CJK COMPATIBILITY IDEOGRAPH-F932' : 63794, + 'CJK COMPATIBILITY IDEOGRAPH-F933' : 63795, + 'CJK COMPATIBILITY IDEOGRAPH-F934' : 63796, + 'CJK COMPATIBILITY IDEOGRAPH-F935' : 63797, + 'CJK COMPATIBILITY IDEOGRAPH-F936' : 63798, + 'CJK COMPATIBILITY IDEOGRAPH-F937' : 63799, + 'CJK COMPATIBILITY IDEOGRAPH-F938' : 63800, + 'CJK COMPATIBILITY IDEOGRAPH-F939' : 63801, + 'CJK COMPATIBILITY IDEOGRAPH-F93A' : 63802, + 'CJK COMPATIBILITY IDEOGRAPH-F93B' : 63803, + 'CJK COMPATIBILITY IDEOGRAPH-F93C' : 63804, + 'CJK COMPATIBILITY IDEOGRAPH-F93D' : 63805, + 'CJK COMPATIBILITY IDEOGRAPH-F93E' : 63806, + 'CJK COMPATIBILITY IDEOGRAPH-F93F' : 63807, + 'CJK COMPATIBILITY IDEOGRAPH-F940' : 63808, + 'CJK COMPATIBILITY IDEOGRAPH-F941' : 63809, + 'CJK COMPATIBILITY IDEOGRAPH-F942' : 63810, + 'CJK COMPATIBILITY IDEOGRAPH-F943' : 63811, + 'CJK COMPATIBILITY IDEOGRAPH-F944' : 63812, + 'CJK COMPATIBILITY IDEOGRAPH-F945' : 63813, + 'CJK COMPATIBILITY IDEOGRAPH-F946' : 63814, + 'CJK COMPATIBILITY IDEOGRAPH-F947' : 63815, + 'CJK COMPATIBILITY IDEOGRAPH-F948' : 63816, + 'CJK COMPATIBILITY IDEOGRAPH-F949' : 63817, + 'CJK COMPATIBILITY IDEOGRAPH-F94A' : 63818, + 'CJK COMPATIBILITY IDEOGRAPH-F94B' : 63819, + 'CJK COMPATIBILITY IDEOGRAPH-F94C' : 63820, + 'CJK COMPATIBILITY IDEOGRAPH-F94D' : 63821, + 'CJK COMPATIBILITY IDEOGRAPH-F94E' : 63822, + 'CJK COMPATIBILITY IDEOGRAPH-F94F' : 63823, + 'CJK COMPATIBILITY IDEOGRAPH-F950' : 63824, + 'CJK COMPATIBILITY IDEOGRAPH-F951' : 63825, + 'CJK COMPATIBILITY IDEOGRAPH-F952' : 63826, + 'CJK COMPATIBILITY IDEOGRAPH-F953' : 63827, + 'CJK COMPATIBILITY IDEOGRAPH-F954' : 63828, + 'CJK COMPATIBILITY IDEOGRAPH-F955' : 63829, + 'CJK COMPATIBILITY IDEOGRAPH-F956' : 63830, + 'CJK COMPATIBILITY IDEOGRAPH-F957' : 63831, + 'CJK COMPATIBILITY IDEOGRAPH-F958' : 63832, + 'CJK COMPATIBILITY IDEOGRAPH-F959' : 63833, + 'CJK COMPATIBILITY IDEOGRAPH-F95A' : 63834, + 'CJK COMPATIBILITY IDEOGRAPH-F95B' : 63835, + 'CJK COMPATIBILITY IDEOGRAPH-F95C' : 63836, + 'CJK COMPATIBILITY IDEOGRAPH-F95D' : 63837, + 'CJK COMPATIBILITY IDEOGRAPH-F95E' : 63838, + 'CJK COMPATIBILITY IDEOGRAPH-F95F' : 63839, + 'CJK COMPATIBILITY IDEOGRAPH-F960' : 63840, + 'CJK COMPATIBILITY IDEOGRAPH-F961' : 63841, + 'CJK COMPATIBILITY IDEOGRAPH-F962' : 63842, + 'CJK COMPATIBILITY IDEOGRAPH-F963' : 63843, + 'CJK COMPATIBILITY IDEOGRAPH-F964' : 63844, + 'CJK COMPATIBILITY IDEOGRAPH-F965' : 63845, + 'CJK COMPATIBILITY IDEOGRAPH-F966' : 63846, + 'CJK COMPATIBILITY IDEOGRAPH-F967' : 63847, + 'CJK COMPATIBILITY IDEOGRAPH-F968' : 63848, + 'CJK COMPATIBILITY IDEOGRAPH-F969' : 63849, + 'CJK COMPATIBILITY IDEOGRAPH-F96A' : 63850, + 'CJK COMPATIBILITY IDEOGRAPH-F96B' : 63851, + 'CJK COMPATIBILITY IDEOGRAPH-F96C' : 63852, + 'CJK COMPATIBILITY IDEOGRAPH-F96D' : 63853, + 'CJK COMPATIBILITY IDEOGRAPH-F96E' : 63854, + 'CJK COMPATIBILITY IDEOGRAPH-F96F' : 63855, + 'CJK COMPATIBILITY IDEOGRAPH-F970' : 63856, + 'CJK COMPATIBILITY IDEOGRAPH-F971' : 63857, + 'CJK COMPATIBILITY IDEOGRAPH-F972' : 63858, + 'CJK COMPATIBILITY IDEOGRAPH-F973' : 63859, + 'CJK COMPATIBILITY IDEOGRAPH-F974' : 63860, + 'CJK COMPATIBILITY IDEOGRAPH-F975' : 63861, + 'CJK COMPATIBILITY IDEOGRAPH-F976' : 63862, + 'CJK COMPATIBILITY IDEOGRAPH-F977' : 63863, + 'CJK COMPATIBILITY IDEOGRAPH-F978' : 63864, + 'CJK COMPATIBILITY IDEOGRAPH-F979' : 63865, + 'CJK COMPATIBILITY IDEOGRAPH-F97A' : 63866, + 'CJK COMPATIBILITY IDEOGRAPH-F97B' : 63867, + 'CJK COMPATIBILITY IDEOGRAPH-F97C' : 63868, + 'CJK COMPATIBILITY IDEOGRAPH-F97D' : 63869, + 'CJK COMPATIBILITY IDEOGRAPH-F97E' : 63870, + 'CJK COMPATIBILITY IDEOGRAPH-F97F' : 63871, + 'CJK COMPATIBILITY IDEOGRAPH-F980' : 63872, + 'CJK COMPATIBILITY IDEOGRAPH-F981' : 63873, + 'CJK COMPATIBILITY IDEOGRAPH-F982' : 63874, + 'CJK COMPATIBILITY IDEOGRAPH-F983' : 63875, + 'CJK COMPATIBILITY IDEOGRAPH-F984' : 63876, + 'CJK COMPATIBILITY IDEOGRAPH-F985' : 63877, + 'CJK COMPATIBILITY IDEOGRAPH-F986' : 63878, + 'CJK COMPATIBILITY IDEOGRAPH-F987' : 63879, + 'CJK COMPATIBILITY IDEOGRAPH-F988' : 63880, + 'CJK COMPATIBILITY IDEOGRAPH-F989' : 63881, + 'CJK COMPATIBILITY IDEOGRAPH-F98A' : 63882, + 'CJK COMPATIBILITY IDEOGRAPH-F98B' : 63883, + 'CJK COMPATIBILITY IDEOGRAPH-F98C' : 63884, + 'CJK COMPATIBILITY IDEOGRAPH-F98D' : 63885, + 'CJK COMPATIBILITY IDEOGRAPH-F98E' : 63886, + 'CJK COMPATIBILITY IDEOGRAPH-F98F' : 63887, + 'CJK COMPATIBILITY IDEOGRAPH-F990' : 63888, + 'CJK COMPATIBILITY IDEOGRAPH-F991' : 63889, + 'CJK COMPATIBILITY IDEOGRAPH-F992' : 63890, + 'CJK COMPATIBILITY IDEOGRAPH-F993' : 63891, + 'CJK COMPATIBILITY IDEOGRAPH-F994' : 63892, + 'CJK COMPATIBILITY IDEOGRAPH-F995' : 63893, + 'CJK COMPATIBILITY IDEOGRAPH-F996' : 63894, + 'CJK COMPATIBILITY IDEOGRAPH-F997' : 63895, + 'CJK COMPATIBILITY IDEOGRAPH-F998' : 63896, + 'CJK COMPATIBILITY IDEOGRAPH-F999' : 63897, + 'CJK COMPATIBILITY IDEOGRAPH-F99A' : 63898, + 'CJK COMPATIBILITY IDEOGRAPH-F99B' : 63899, + 'CJK COMPATIBILITY IDEOGRAPH-F99C' : 63900, + 'CJK COMPATIBILITY IDEOGRAPH-F99D' : 63901, + 'CJK COMPATIBILITY IDEOGRAPH-F99E' : 63902, + 'CJK COMPATIBILITY IDEOGRAPH-F99F' : 63903, + 'CJK COMPATIBILITY IDEOGRAPH-F9A0' : 63904, + 'CJK COMPATIBILITY IDEOGRAPH-F9A1' : 63905, + 'CJK COMPATIBILITY IDEOGRAPH-F9A2' : 63906, + 'CJK COMPATIBILITY IDEOGRAPH-F9A3' : 63907, + 'CJK COMPATIBILITY IDEOGRAPH-F9A4' : 63908, + 'CJK COMPATIBILITY IDEOGRAPH-F9A5' : 63909, + 'CJK COMPATIBILITY IDEOGRAPH-F9A6' : 63910, + 'CJK COMPATIBILITY IDEOGRAPH-F9A7' : 63911, + 'CJK COMPATIBILITY IDEOGRAPH-F9A8' : 63912, + 'CJK COMPATIBILITY IDEOGRAPH-F9A9' : 63913, + 'CJK COMPATIBILITY IDEOGRAPH-F9AA' : 63914, + 'CJK COMPATIBILITY IDEOGRAPH-F9AB' : 63915, + 'CJK COMPATIBILITY IDEOGRAPH-F9AC' : 63916, + 'CJK COMPATIBILITY IDEOGRAPH-F9AD' : 63917, + 'CJK COMPATIBILITY IDEOGRAPH-F9AE' : 63918, + 'CJK COMPATIBILITY IDEOGRAPH-F9AF' : 63919, + 'CJK COMPATIBILITY IDEOGRAPH-F9B0' : 63920, + 'CJK COMPATIBILITY IDEOGRAPH-F9B1' : 63921, + 'CJK COMPATIBILITY IDEOGRAPH-F9B2' : 63922, + 'CJK COMPATIBILITY IDEOGRAPH-F9B3' : 63923, + 'CJK COMPATIBILITY IDEOGRAPH-F9B4' : 63924, + 'CJK COMPATIBILITY IDEOGRAPH-F9B5' : 63925, + 'CJK COMPATIBILITY IDEOGRAPH-F9B6' : 63926, + 'CJK COMPATIBILITY IDEOGRAPH-F9B7' : 63927, + 'CJK COMPATIBILITY IDEOGRAPH-F9B8' : 63928, + 'CJK COMPATIBILITY IDEOGRAPH-F9B9' : 63929, + 'CJK COMPATIBILITY IDEOGRAPH-F9BA' : 63930, + 'CJK COMPATIBILITY IDEOGRAPH-F9BB' : 63931, + 'CJK COMPATIBILITY IDEOGRAPH-F9BC' : 63932, + 'CJK COMPATIBILITY IDEOGRAPH-F9BD' : 63933, + 'CJK COMPATIBILITY IDEOGRAPH-F9BE' : 63934, + 'CJK COMPATIBILITY IDEOGRAPH-F9BF' : 63935, + 'CJK COMPATIBILITY IDEOGRAPH-F9C0' : 63936, + 'CJK COMPATIBILITY IDEOGRAPH-F9C1' : 63937, + 'CJK COMPATIBILITY IDEOGRAPH-F9C2' : 63938, + 'CJK COMPATIBILITY IDEOGRAPH-F9C3' : 63939, + 'CJK COMPATIBILITY IDEOGRAPH-F9C4' : 63940, + 'CJK COMPATIBILITY IDEOGRAPH-F9C5' : 63941, + 'CJK COMPATIBILITY IDEOGRAPH-F9C6' : 63942, + 'CJK COMPATIBILITY IDEOGRAPH-F9C7' : 63943, + 'CJK COMPATIBILITY IDEOGRAPH-F9C8' : 63944, + 'CJK COMPATIBILITY IDEOGRAPH-F9C9' : 63945, + 'CJK COMPATIBILITY IDEOGRAPH-F9CA' : 63946, + 'CJK COMPATIBILITY IDEOGRAPH-F9CB' : 63947, + 'CJK COMPATIBILITY IDEOGRAPH-F9CC' : 63948, + 'CJK COMPATIBILITY IDEOGRAPH-F9CD' : 63949, + 'CJK COMPATIBILITY IDEOGRAPH-F9CE' : 63950, + 'CJK COMPATIBILITY IDEOGRAPH-F9CF' : 63951, + 'CJK COMPATIBILITY IDEOGRAPH-F9D0' : 63952, + 'CJK COMPATIBILITY IDEOGRAPH-F9D1' : 63953, + 'CJK COMPATIBILITY IDEOGRAPH-F9D2' : 63954, + 'CJK COMPATIBILITY IDEOGRAPH-F9D3' : 63955, + 'CJK COMPATIBILITY IDEOGRAPH-F9D4' : 63956, + 'CJK COMPATIBILITY IDEOGRAPH-F9D5' : 63957, + 'CJK COMPATIBILITY IDEOGRAPH-F9D6' : 63958, + 'CJK COMPATIBILITY IDEOGRAPH-F9D7' : 63959, + 'CJK COMPATIBILITY IDEOGRAPH-F9D8' : 63960, + 'CJK COMPATIBILITY IDEOGRAPH-F9D9' : 63961, + 'CJK COMPATIBILITY IDEOGRAPH-F9DA' : 63962, + 'CJK COMPATIBILITY IDEOGRAPH-F9DB' : 63963, + 'CJK COMPATIBILITY IDEOGRAPH-F9DC' : 63964, + 'CJK COMPATIBILITY IDEOGRAPH-F9DD' : 63965, + 'CJK COMPATIBILITY IDEOGRAPH-F9DE' : 63966, + 'CJK COMPATIBILITY IDEOGRAPH-F9DF' : 63967, + 'CJK COMPATIBILITY IDEOGRAPH-F9E0' : 63968, + 'CJK COMPATIBILITY IDEOGRAPH-F9E1' : 63969, + 'CJK COMPATIBILITY IDEOGRAPH-F9E2' : 63970, + 'CJK COMPATIBILITY IDEOGRAPH-F9E3' : 63971, + 'CJK COMPATIBILITY IDEOGRAPH-F9E4' : 63972, + 'CJK COMPATIBILITY IDEOGRAPH-F9E5' : 63973, + 'CJK COMPATIBILITY IDEOGRAPH-F9E6' : 63974, + 'CJK COMPATIBILITY IDEOGRAPH-F9E7' : 63975, + 'CJK COMPATIBILITY IDEOGRAPH-F9E8' : 63976, + 'CJK COMPATIBILITY IDEOGRAPH-F9E9' : 63977, + 'CJK COMPATIBILITY IDEOGRAPH-F9EA' : 63978, + 'CJK COMPATIBILITY IDEOGRAPH-F9EB' : 63979, + 'CJK COMPATIBILITY IDEOGRAPH-F9EC' : 63980, + 'CJK COMPATIBILITY IDEOGRAPH-F9ED' : 63981, + 'CJK COMPATIBILITY IDEOGRAPH-F9EE' : 63982, + 'CJK COMPATIBILITY IDEOGRAPH-F9EF' : 63983, + 'CJK COMPATIBILITY IDEOGRAPH-F9F0' : 63984, + 'CJK COMPATIBILITY IDEOGRAPH-F9F1' : 63985, + 'CJK COMPATIBILITY IDEOGRAPH-F9F2' : 63986, + 'CJK COMPATIBILITY IDEOGRAPH-F9F3' : 63987, + 'CJK COMPATIBILITY IDEOGRAPH-F9F4' : 63988, + 'CJK COMPATIBILITY IDEOGRAPH-F9F5' : 63989, + 'CJK COMPATIBILITY IDEOGRAPH-F9F6' : 63990, + 'CJK COMPATIBILITY IDEOGRAPH-F9F7' : 63991, + 'CJK COMPATIBILITY IDEOGRAPH-F9F8' : 63992, + 'CJK COMPATIBILITY IDEOGRAPH-F9F9' : 63993, + 'CJK COMPATIBILITY IDEOGRAPH-F9FA' : 63994, + 'CJK COMPATIBILITY IDEOGRAPH-F9FB' : 63995, + 'CJK COMPATIBILITY IDEOGRAPH-F9FC' : 63996, + 'CJK COMPATIBILITY IDEOGRAPH-F9FD' : 63997, + 'CJK COMPATIBILITY IDEOGRAPH-F9FE' : 63998, + 'CJK COMPATIBILITY IDEOGRAPH-F9FF' : 63999, + 'CJK COMPATIBILITY IDEOGRAPH-FA00' : 64000, + 'CJK COMPATIBILITY IDEOGRAPH-FA01' : 64001, + 'CJK COMPATIBILITY IDEOGRAPH-FA02' : 64002, + 'CJK COMPATIBILITY IDEOGRAPH-FA03' : 64003, + 'CJK COMPATIBILITY IDEOGRAPH-FA04' : 64004, + 'CJK COMPATIBILITY IDEOGRAPH-FA05' : 64005, + 'CJK COMPATIBILITY IDEOGRAPH-FA06' : 64006, + 'CJK COMPATIBILITY IDEOGRAPH-FA07' : 64007, + 'CJK COMPATIBILITY IDEOGRAPH-FA08' : 64008, + 'CJK COMPATIBILITY IDEOGRAPH-FA09' : 64009, + 'CJK COMPATIBILITY IDEOGRAPH-FA0A' : 64010, + 'CJK COMPATIBILITY IDEOGRAPH-FA0B' : 64011, + 'CJK COMPATIBILITY IDEOGRAPH-FA0C' : 64012, + 'CJK COMPATIBILITY IDEOGRAPH-FA0D' : 64013, + 'CJK COMPATIBILITY IDEOGRAPH-FA0E' : 64014, + 'CJK COMPATIBILITY IDEOGRAPH-FA0F' : 64015, + 'CJK COMPATIBILITY IDEOGRAPH-FA10' : 64016, + 'CJK COMPATIBILITY IDEOGRAPH-FA11' : 64017, + 'CJK COMPATIBILITY IDEOGRAPH-FA12' : 64018, + 'CJK COMPATIBILITY IDEOGRAPH-FA13' : 64019, + 'CJK COMPATIBILITY IDEOGRAPH-FA14' : 64020, + 'CJK COMPATIBILITY IDEOGRAPH-FA15' : 64021, + 'CJK COMPATIBILITY IDEOGRAPH-FA16' : 64022, + 'CJK COMPATIBILITY IDEOGRAPH-FA17' : 64023, + 'CJK COMPATIBILITY IDEOGRAPH-FA18' : 64024, + 'CJK COMPATIBILITY IDEOGRAPH-FA19' : 64025, + 'CJK COMPATIBILITY IDEOGRAPH-FA1A' : 64026, + 'CJK COMPATIBILITY IDEOGRAPH-FA1B' : 64027, + 'CJK COMPATIBILITY IDEOGRAPH-FA1C' : 64028, + 'CJK COMPATIBILITY IDEOGRAPH-FA1D' : 64029, + 'CJK COMPATIBILITY IDEOGRAPH-FA1E' : 64030, + 'CJK COMPATIBILITY IDEOGRAPH-FA1F' : 64031, + 'CJK COMPATIBILITY IDEOGRAPH-FA20' : 64032, + 'CJK COMPATIBILITY IDEOGRAPH-FA21' : 64033, + 'CJK COMPATIBILITY IDEOGRAPH-FA22' : 64034, + 'CJK COMPATIBILITY IDEOGRAPH-FA23' : 64035, + 'CJK COMPATIBILITY IDEOGRAPH-FA24' : 64036, + 'CJK COMPATIBILITY IDEOGRAPH-FA25' : 64037, + 'CJK COMPATIBILITY IDEOGRAPH-FA26' : 64038, + 'CJK COMPATIBILITY IDEOGRAPH-FA27' : 64039, + 'CJK COMPATIBILITY IDEOGRAPH-FA28' : 64040, + 'CJK COMPATIBILITY IDEOGRAPH-FA29' : 64041, + 'CJK COMPATIBILITY IDEOGRAPH-FA2A' : 64042, + 'CJK COMPATIBILITY IDEOGRAPH-FA2B' : 64043, + 'CJK COMPATIBILITY IDEOGRAPH-FA2C' : 64044, + 'CJK COMPATIBILITY IDEOGRAPH-FA2D' : 64045, + 'CJK COMPATIBILITY IDEOGRAPH-FA30' : 64048, + 'CJK COMPATIBILITY IDEOGRAPH-FA31' : 64049, + 'CJK COMPATIBILITY IDEOGRAPH-FA32' : 64050, + 'CJK COMPATIBILITY IDEOGRAPH-FA33' : 64051, + 'CJK COMPATIBILITY IDEOGRAPH-FA34' : 64052, + 'CJK COMPATIBILITY IDEOGRAPH-FA35' : 64053, + 'CJK COMPATIBILITY IDEOGRAPH-FA36' : 64054, + 'CJK COMPATIBILITY IDEOGRAPH-FA37' : 64055, + 'CJK COMPATIBILITY IDEOGRAPH-FA38' : 64056, + 'CJK COMPATIBILITY IDEOGRAPH-FA39' : 64057, + 'CJK COMPATIBILITY IDEOGRAPH-FA3A' : 64058, + 'CJK COMPATIBILITY IDEOGRAPH-FA3B' : 64059, + 'CJK COMPATIBILITY IDEOGRAPH-FA3C' : 64060, + 'CJK COMPATIBILITY IDEOGRAPH-FA3D' : 64061, + 'CJK COMPATIBILITY IDEOGRAPH-FA3E' : 64062, + 'CJK COMPATIBILITY IDEOGRAPH-FA3F' : 64063, + 'CJK COMPATIBILITY IDEOGRAPH-FA40' : 64064, + 'CJK COMPATIBILITY IDEOGRAPH-FA41' : 64065, + 'CJK COMPATIBILITY IDEOGRAPH-FA42' : 64066, + 'CJK COMPATIBILITY IDEOGRAPH-FA43' : 64067, + 'CJK COMPATIBILITY IDEOGRAPH-FA44' : 64068, + 'CJK COMPATIBILITY IDEOGRAPH-FA45' : 64069, + 'CJK COMPATIBILITY IDEOGRAPH-FA46' : 64070, + 'CJK COMPATIBILITY IDEOGRAPH-FA47' : 64071, + 'CJK COMPATIBILITY IDEOGRAPH-FA48' : 64072, + 'CJK COMPATIBILITY IDEOGRAPH-FA49' : 64073, + 'CJK COMPATIBILITY IDEOGRAPH-FA4A' : 64074, + 'CJK COMPATIBILITY IDEOGRAPH-FA4B' : 64075, + 'CJK COMPATIBILITY IDEOGRAPH-FA4C' : 64076, + 'CJK COMPATIBILITY IDEOGRAPH-FA4D' : 64077, + 'CJK COMPATIBILITY IDEOGRAPH-FA4E' : 64078, + 'CJK COMPATIBILITY IDEOGRAPH-FA4F' : 64079, + 'CJK COMPATIBILITY IDEOGRAPH-FA50' : 64080, + 'CJK COMPATIBILITY IDEOGRAPH-FA51' : 64081, + 'CJK COMPATIBILITY IDEOGRAPH-FA52' : 64082, + 'CJK COMPATIBILITY IDEOGRAPH-FA53' : 64083, + 'CJK COMPATIBILITY IDEOGRAPH-FA54' : 64084, + 'CJK COMPATIBILITY IDEOGRAPH-FA55' : 64085, + 'CJK COMPATIBILITY IDEOGRAPH-FA56' : 64086, + 'CJK COMPATIBILITY IDEOGRAPH-FA57' : 64087, + 'CJK COMPATIBILITY IDEOGRAPH-FA58' : 64088, + 'CJK COMPATIBILITY IDEOGRAPH-FA59' : 64089, + 'CJK COMPATIBILITY IDEOGRAPH-FA5A' : 64090, + 'CJK COMPATIBILITY IDEOGRAPH-FA5B' : 64091, + 'CJK COMPATIBILITY IDEOGRAPH-FA5C' : 64092, + 'CJK COMPATIBILITY IDEOGRAPH-FA5D' : 64093, + 'CJK COMPATIBILITY IDEOGRAPH-FA5E' : 64094, + 'CJK COMPATIBILITY IDEOGRAPH-FA5F' : 64095, + 'CJK COMPATIBILITY IDEOGRAPH-FA60' : 64096, + 'CJK COMPATIBILITY IDEOGRAPH-FA61' : 64097, + 'CJK COMPATIBILITY IDEOGRAPH-FA62' : 64098, + 'CJK COMPATIBILITY IDEOGRAPH-FA63' : 64099, + 'CJK COMPATIBILITY IDEOGRAPH-FA64' : 64100, + 'CJK COMPATIBILITY IDEOGRAPH-FA65' : 64101, + 'CJK COMPATIBILITY IDEOGRAPH-FA66' : 64102, + 'CJK COMPATIBILITY IDEOGRAPH-FA67' : 64103, + 'CJK COMPATIBILITY IDEOGRAPH-FA68' : 64104, + 'CJK COMPATIBILITY IDEOGRAPH-FA69' : 64105, + 'CJK COMPATIBILITY IDEOGRAPH-FA6A' : 64106, + 'CJK RADICAL BAMBOO' : 11950, + 'CJK RADICAL BLUE' : 11992, + 'CJK RADICAL BOLT OF CLOTH' : 11946, + 'CJK RADICAL BONE' : 12003, + 'CJK RADICAL BOX' : 11910, + 'CJK RADICAL BRUSH ONE' : 11962, + 'CJK RADICAL BRUSH TWO' : 11963, + 'CJK RADICAL C-SIMPLIFIED BIRD' : 12006, + 'CJK RADICAL C-SIMPLIFIED CART' : 11979, + 'CJK RADICAL C-SIMPLIFIED DRAGON' : 12016, + 'CJK RADICAL C-SIMPLIFIED EAT' : 12000, + 'CJK RADICAL C-SIMPLIFIED EVEN' : 12012, + 'CJK RADICAL C-SIMPLIFIED FISH' : 12005, + 'CJK RADICAL C-SIMPLIFIED FLY' : 11996, + 'CJK RADICAL C-SIMPLIFIED FROG' : 12010, + 'CJK RADICAL C-SIMPLIFIED GATE' : 11988, + 'CJK RADICAL C-SIMPLIFIED GOLD' : 11984, + 'CJK RADICAL C-SIMPLIFIED HORSE' : 12002, + 'CJK RADICAL C-SIMPLIFIED LEAF' : 11994, + 'CJK RADICAL C-SIMPLIFIED LONG' : 11987, + 'CJK RADICAL C-SIMPLIFIED SALT' : 12007, + 'CJK RADICAL C-SIMPLIFIED SEE' : 11973, + 'CJK RADICAL C-SIMPLIFIED SHELL' : 11977, + 'CJK RADICAL C-SIMPLIFIED SILK' : 11952, + 'CJK RADICAL C-SIMPLIFIED SPEECH' : 11976, + 'CJK RADICAL C-SIMPLIFIED TANNED LEATHER' : 11993, + 'CJK RADICAL C-SIMPLIFIED TOOTH' : 12014, + 'CJK RADICAL C-SIMPLIFIED TURTLE' : 12019, + 'CJK RADICAL C-SIMPLIFIED WIND' : 11995, + 'CJK RADICAL CHOKE' : 11931, + 'CJK RADICAL CITY' : 11983, + 'CJK RADICAL CIVILIAN' : 11936, + 'CJK RADICAL CLIFF' : 11905, + 'CJK RADICAL CLOTHES' : 11970, + 'CJK RADICAL COW' : 11943, + 'CJK RADICAL DEATH' : 11934, + 'CJK RADICAL DIVINATION' : 11914, + 'CJK RADICAL DOG' : 11944, + 'CJK RADICAL EAT ONE' : 11997, + 'CJK RADICAL EAT THREE' : 11999, + 'CJK RADICAL EAT TWO' : 11998, + 'CJK RADICAL EWE' : 11960, + 'CJK RADICAL EYE' : 11947, + 'CJK RADICAL FIRE' : 11939, + 'CJK RADICAL FOOT' : 11978, + 'CJK RADICAL GHOST' : 12004, + 'CJK RADICAL GRASS ONE' : 11966, + 'CJK RADICAL GRASS THREE' : 11968, + 'CJK RADICAL GRASS TWO' : 11967, + 'CJK RADICAL HAND' : 11928, + 'CJK RADICAL HEAD' : 12001, + 'CJK RADICAL HEART ONE' : 11926, + 'CJK RADICAL HEART TWO' : 11927, + 'CJK RADICAL HORN' : 11975, + 'CJK RADICAL J-SIMPLIFIED DRAGON' : 12015, + 'CJK RADICAL J-SIMPLIFIED EVEN' : 12011, + 'CJK RADICAL J-SIMPLIFIED TOOTH' : 12013, + 'CJK RADICAL J-SIMPLIFIED TURTLE' : 12018, + 'CJK RADICAL JADE' : 11945, + 'CJK RADICAL KNIFE ONE' : 11912, + 'CJK RADICAL KNIFE TWO' : 11913, + 'CJK RADICAL LAME FOUR' : 11921, + 'CJK RADICAL LAME ONE' : 11918, + 'CJK RADICAL LAME THREE' : 11920, + 'CJK RADICAL LAME TWO' : 11919, + 'CJK RADICAL LONG ONE' : 11985, + 'CJK RADICAL LONG TWO' : 11986, + 'CJK RADICAL MEAT' : 11964, + 'CJK RADICAL MESH' : 11957, + 'CJK RADICAL MOON' : 11933, + 'CJK RADICAL MORTAR' : 11965, + 'CJK RADICAL MOTHER' : 11935, + 'CJK RADICAL MOUND ONE' : 11989, + 'CJK RADICAL MOUND TWO' : 11990, + 'CJK RADICAL NET FOUR' : 11956, + 'CJK RADICAL NET ONE' : 11953, + 'CJK RADICAL NET THREE' : 11955, + 'CJK RADICAL NET TWO' : 11954, + 'CJK RADICAL OLD' : 11961, + 'CJK RADICAL PAW ONE' : 11940, + 'CJK RADICAL PAW TWO' : 11941, + 'CJK RADICAL PERSON' : 11909, + 'CJK RADICAL RAIN' : 11991, + 'CJK RADICAL RAM' : 11959, + 'CJK RADICAL RAP' : 11929, + 'CJK RADICAL REPEAT' : 11904, + 'CJK RADICAL SEAL' : 11915, + 'CJK RADICAL SECOND ONE' : 11906, + 'CJK RADICAL SECOND THREE' : 11908, + 'CJK RADICAL SECOND TWO' : 11907, + 'CJK RADICAL SHEEP' : 11958, + 'CJK RADICAL SILK' : 11951, + 'CJK RADICAL SIMPLIFIED HALF TREE TRUNK' : 11942, + 'CJK RADICAL SIMPLIFIED HORN' : 11974, + 'CJK RADICAL SIMPLIFIED WALK' : 11980, + 'CJK RADICAL SIMPLIFIED WHEAT' : 12008, + 'CJK RADICAL SIMPLIFIED YELLOW' : 12009, + 'CJK RADICAL SMALL ONE' : 11916, + 'CJK RADICAL SMALL TWO' : 11917, + 'CJK RADICAL SNAKE' : 11922, + 'CJK RADICAL SNOUT ONE' : 11924, + 'CJK RADICAL SNOUT TWO' : 11925, + 'CJK RADICAL SPIRIT ONE' : 11948, + 'CJK RADICAL SPIRIT TWO' : 11949, + 'CJK RADICAL SUN' : 11932, + 'CJK RADICAL TABLE' : 11911, + 'CJK RADICAL THREAD' : 11923, + 'CJK RADICAL TIGER' : 11969, + 'CJK RADICAL TURTLE' : 12017, + 'CJK RADICAL WALK ONE' : 11981, + 'CJK RADICAL WALK TWO' : 11982, + 'CJK RADICAL WATER ONE' : 11937, + 'CJK RADICAL WATER TWO' : 11938, + 'CJK RADICAL WEST ONE' : 11971, + 'CJK RADICAL WEST TWO' : 11972, + 'CLEAR SCREEN SYMBOL' : 9114, + 'CLOCKWISE CLOSED CIRCLE ARROW' : 10561, + 'CLOCKWISE CONTOUR INTEGRAL' : 8754, + 'CLOCKWISE GAPPED CIRCLE ARROW' : 10227, + 'CLOCKWISE INTEGRAL' : 8753, + 'CLOCKWISE OPEN CIRCLE ARROW' : 8635, + 'CLOCKWISE TOP SEMICIRCLE ARROW' : 8631, + 'CLOSE UP' : 8272, + 'CLOSED INTERSECTION WITH SERIFS' : 10829, + 'CLOSED SUBSET' : 10959, + 'CLOSED SUBSET OR EQUAL TO' : 10961, + 'CLOSED SUPERSET' : 10960, + 'CLOSED SUPERSET OR EQUAL TO' : 10962, + 'CLOSED UNION WITH SERIFS' : 10828, + 'CLOSED UNION WITH SERIFS AND SMASH PRODUCT' : 10832, + 'CLOUD' : 9729, + 'COLON' : 58, + 'COLON EQUALS' : 8788, + 'COLON SIGN' : 8353, + 'COMBINING ACUTE ACCENT' : 769, + 'COMBINING ACUTE ACCENT BELOW' : 791, + 'COMBINING ACUTE TONE MARK' : 833, + 'COMBINING ALMOST EQUAL TO ABOVE' : 844, + 'COMBINING ANNUITY SYMBOL' : 8423, + 'COMBINING ANTICLOCKWISE ARROW ABOVE' : 8404, + 'COMBINING ANTICLOCKWISE RING OVERLAY' : 8410, + 'COMBINING BREVE' : 774, + 'COMBINING BREVE BELOW' : 814, + 'COMBINING BRIDGE ABOVE' : 838, + 'COMBINING BRIDGE BELOW' : 810, + 'COMBINING CANDRABINDU' : 784, + 'COMBINING CARON' : 780, + 'COMBINING CARON BELOW' : 812, + 'COMBINING CEDILLA' : 807, + 'COMBINING CIRCUMFLEX ACCENT' : 770, + 'COMBINING CIRCUMFLEX ACCENT BELOW' : 813, + 'COMBINING CLOCKWISE ARROW ABOVE' : 8405, + 'COMBINING CLOCKWISE RING OVERLAY' : 8409, + 'COMBINING COMMA ABOVE' : 787, + 'COMBINING COMMA ABOVE RIGHT' : 789, + 'COMBINING COMMA BELOW' : 806, + 'COMBINING CYRILLIC DASIA PNEUMATA' : 1157, + 'COMBINING CYRILLIC HUNDRED THOUSANDS SIGN' : 1160, + 'COMBINING CYRILLIC MILLIONS SIGN' : 1161, + 'COMBINING CYRILLIC PALATALIZATION' : 1156, + 'COMBINING CYRILLIC PSILI PNEUMATA' : 1158, + 'COMBINING CYRILLIC TITLO' : 1155, + 'COMBINING DIAERESIS' : 776, + 'COMBINING DIAERESIS BELOW' : 804, + 'COMBINING DOT ABOVE' : 775, + 'COMBINING DOT BELOW' : 803, + 'COMBINING DOUBLE ACUTE ACCENT' : 779, + 'COMBINING DOUBLE GRAVE ACCENT' : 783, + 'COMBINING DOUBLE INVERTED BREVE' : 865, + 'COMBINING DOUBLE LOW LINE' : 819, + 'COMBINING DOUBLE OVERLINE' : 831, + 'COMBINING DOUBLE RIGHTWARDS ARROW BELOW' : 866, + 'COMBINING DOUBLE TILDE' : 864, + 'COMBINING DOUBLE TILDE LEFT HALF' : 65058, + 'COMBINING DOUBLE TILDE RIGHT HALF' : 65059, + 'COMBINING DOUBLE VERTICAL LINE ABOVE' : 782, + 'COMBINING DOUBLE VERTICAL LINE BELOW' : 840, + 'COMBINING DOUBLE VERTICAL STROKE OVERLAY' : 8422, + 'COMBINING DOWN TACK BELOW' : 798, + 'COMBINING ENCLOSING CIRCLE' : 8413, + 'COMBINING ENCLOSING CIRCLE BACKSLASH' : 8416, + 'COMBINING ENCLOSING DIAMOND' : 8415, + 'COMBINING ENCLOSING KEYCAP' : 8419, + 'COMBINING ENCLOSING SCREEN' : 8418, + 'COMBINING ENCLOSING SQUARE' : 8414, + 'COMBINING ENCLOSING UPWARD POINTING TRIANGLE' : 8420, + 'COMBINING EQUALS SIGN BELOW' : 839, + 'COMBINING FOUR DOTS ABOVE' : 8412, + 'COMBINING GRAPHEME JOINER' : 847, + 'COMBINING GRAVE ACCENT' : 768, + 'COMBINING GRAVE ACCENT BELOW' : 790, + 'COMBINING GRAVE TONE MARK' : 832, + 'COMBINING GREEK DIALYTIKA TONOS' : 836, + 'COMBINING GREEK KORONIS' : 835, + 'COMBINING GREEK PERISPOMENI' : 834, + 'COMBINING GREEK YPOGEGRAMMENI' : 837, + 'COMBINING HOMOTHETIC ABOVE' : 843, + 'COMBINING HOOK ABOVE' : 777, + 'COMBINING HORN' : 795, + 'COMBINING INVERTED BREVE' : 785, + 'COMBINING INVERTED BREVE BELOW' : 815, + 'COMBINING INVERTED BRIDGE BELOW' : 826, + 'COMBINING INVERTED DOUBLE ARCH BELOW' : 811, + 'COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK' : 12442, + 'COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK' : 12441, + 'COMBINING LATIN SMALL LETTER A' : 867, + 'COMBINING LATIN SMALL LETTER C' : 872, + 'COMBINING LATIN SMALL LETTER D' : 873, + 'COMBINING LATIN SMALL LETTER E' : 868, + 'COMBINING LATIN SMALL LETTER H' : 874, + 'COMBINING LATIN SMALL LETTER I' : 869, + 'COMBINING LATIN SMALL LETTER M' : 875, + 'COMBINING LATIN SMALL LETTER O' : 870, + 'COMBINING LATIN SMALL LETTER R' : 876, + 'COMBINING LATIN SMALL LETTER T' : 877, + 'COMBINING LATIN SMALL LETTER U' : 871, + 'COMBINING LATIN SMALL LETTER V' : 878, + 'COMBINING LATIN SMALL LETTER X' : 879, + 'COMBINING LEFT ANGLE ABOVE' : 794, + 'COMBINING LEFT ANGLE BELOW' : 841, + 'COMBINING LEFT ARROW ABOVE' : 8406, + 'COMBINING LEFT HALF RING BELOW' : 796, + 'COMBINING LEFT HARPOON ABOVE' : 8400, + 'COMBINING LEFT RIGHT ARROW ABOVE' : 8417, + 'COMBINING LEFT RIGHT ARROW BELOW' : 845, + 'COMBINING LEFT TACK BELOW' : 792, + 'COMBINING LEFTWARDS ARROW OVERLAY' : 8426, + 'COMBINING LIGATURE LEFT HALF' : 65056, + 'COMBINING LIGATURE RIGHT HALF' : 65057, + 'COMBINING LONG SOLIDUS OVERLAY' : 824, + 'COMBINING LONG STROKE OVERLAY' : 822, + 'COMBINING LONG VERTICAL LINE OVERLAY' : 8402, + 'COMBINING LOW LINE' : 818, + 'COMBINING MACRON' : 772, + 'COMBINING MACRON BELOW' : 817, + 'COMBINING MINUS SIGN BELOW' : 800, + 'COMBINING NOT TILDE ABOVE' : 842, + 'COMBINING OGONEK' : 808, + 'COMBINING OVERLINE' : 773, + 'COMBINING PALATALIZED HOOK BELOW' : 801, + 'COMBINING PLUS SIGN BELOW' : 799, + 'COMBINING RETROFLEX HOOK BELOW' : 802, + 'COMBINING REVERSE SOLIDUS OVERLAY' : 8421, + 'COMBINING REVERSED COMMA ABOVE' : 788, + 'COMBINING RIGHT ARROW ABOVE' : 8407, + 'COMBINING RIGHT HALF RING BELOW' : 825, + 'COMBINING RIGHT HARPOON ABOVE' : 8401, + 'COMBINING RIGHT TACK BELOW' : 793, + 'COMBINING RING ABOVE' : 778, + 'COMBINING RING BELOW' : 805, + 'COMBINING RING OVERLAY' : 8408, + 'COMBINING SEAGULL BELOW' : 828, + 'COMBINING SHORT SOLIDUS OVERLAY' : 823, + 'COMBINING SHORT STROKE OVERLAY' : 821, + 'COMBINING SHORT VERTICAL LINE OVERLAY' : 8403, + 'COMBINING SQUARE BELOW' : 827, + 'COMBINING THREE DOTS ABOVE' : 8411, + 'COMBINING TILDE' : 771, + 'COMBINING TILDE BELOW' : 816, + 'COMBINING TILDE OVERLAY' : 820, + 'COMBINING TRIPLE UNDERDOT' : 8424, + 'COMBINING TURNED COMMA ABOVE' : 786, + 'COMBINING UP TACK BELOW' : 797, + 'COMBINING UPWARDS ARROW BELOW' : 846, + 'COMBINING VERTICAL LINE ABOVE' : 781, + 'COMBINING VERTICAL LINE BELOW' : 809, + 'COMBINING VERTICAL TILDE' : 830, + 'COMBINING WIDE BRIDGE ABOVE' : 8425, + 'COMBINING X ABOVE' : 829, + 'COMET' : 9732, + 'COMMA' : 44, + 'COMMERCIAL AT' : 64, + 'COMMERCIAL MINUS SIGN' : 8274, + 'COMPLEMENT' : 8705, + 'COMPOSITION SYMBOL' : 9092, + 'CONGRUENT WITH DOT ABOVE' : 10861, + 'CONICAL TAPER' : 9010, + 'CONJUNCTION' : 9740, + 'CONTAINS AS MEMBER' : 8715, + 'CONTAINS AS NORMAL SUBGROUP' : 8883, + 'CONTAINS AS NORMAL SUBGROUP OR EQUAL TO' : 8885, + 'CONTAINS WITH LONG HORIZONTAL STROKE' : 8954, + 'CONTAINS WITH OVERBAR' : 8957, + 'CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE' : 8955, + 'CONTINUOUS UNDERLINE SYMBOL' : 9089, + 'CONTOUR INTEGRAL' : 8750, + 'COPTIC CAPITAL LETTER DEI' : 1006, + 'COPTIC CAPITAL LETTER FEI' : 996, + 'COPTIC CAPITAL LETTER GANGIA' : 1002, + 'COPTIC CAPITAL LETTER HORI' : 1000, + 'COPTIC CAPITAL LETTER KHEI' : 998, + 'COPTIC CAPITAL LETTER SHEI' : 994, + 'COPTIC CAPITAL LETTER SHIMA' : 1004, + 'COPTIC SMALL LETTER DEI' : 1007, + 'COPTIC SMALL LETTER FEI' : 997, + 'COPTIC SMALL LETTER GANGIA' : 1003, + 'COPTIC SMALL LETTER HORI' : 1001, + 'COPTIC SMALL LETTER KHEI' : 999, + 'COPTIC SMALL LETTER SHEI' : 995, + 'COPTIC SMALL LETTER SHIMA' : 1005, + 'COPYRIGHT SIGN' : 169, + 'CORRESPONDS TO' : 8792, + 'COUNTERBORE' : 9012, + 'COUNTERSINK' : 9013, + 'CROSS OF JERUSALEM' : 9769, + 'CROSS OF LORRAINE' : 9768, + 'CRUZEIRO SIGN' : 8354, + 'CUBE ROOT' : 8731, + 'CURLY BRACKET EXTENSION' : 9130, + 'CURLY LOGICAL AND' : 8911, + 'CURLY LOGICAL OR' : 8910, + 'CURRENCY SIGN' : 164, + 'CURVED STEM PARAGRAPH SIGN ORNAMENT' : 10081, + 'CYLINDRICITY' : 9005, + 'CYRILLIC CAPITAL LETTER A' : 1040, + 'CYRILLIC CAPITAL LETTER A WITH BREVE' : 1232, + 'CYRILLIC CAPITAL LETTER A WITH DIAERESIS' : 1234, + 'CYRILLIC CAPITAL LETTER ABKHASIAN CHE' : 1212, + 'CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER' : 1214, + 'CYRILLIC CAPITAL LETTER ABKHASIAN DZE' : 1248, + 'CYRILLIC CAPITAL LETTER ABKHASIAN HA' : 1192, + 'CYRILLIC CAPITAL LETTER BARRED O' : 1256, + 'CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS' : 1258, + 'CYRILLIC CAPITAL LETTER BASHKIR KA' : 1184, + 'CYRILLIC CAPITAL LETTER BE' : 1041, + 'CYRILLIC CAPITAL LETTER BIG YUS' : 1130, + 'CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I' : 1030, + 'CYRILLIC CAPITAL LETTER CHE' : 1063, + 'CYRILLIC CAPITAL LETTER CHE WITH DESCENDER' : 1206, + 'CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS' : 1268, + 'CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE' : 1208, + 'CYRILLIC CAPITAL LETTER DE' : 1044, + 'CYRILLIC CAPITAL LETTER DJE' : 1026, + 'CYRILLIC CAPITAL LETTER DZE' : 1029, + 'CYRILLIC CAPITAL LETTER DZHE' : 1039, + 'CYRILLIC CAPITAL LETTER E' : 1069, + 'CYRILLIC CAPITAL LETTER E WITH DIAERESIS' : 1260, + 'CYRILLIC CAPITAL LETTER EF' : 1060, + 'CYRILLIC CAPITAL LETTER EL' : 1051, + 'CYRILLIC CAPITAL LETTER EL WITH TAIL' : 1221, + 'CYRILLIC CAPITAL LETTER EM' : 1052, + 'CYRILLIC CAPITAL LETTER EM WITH TAIL' : 1229, + 'CYRILLIC CAPITAL LETTER EN' : 1053, + 'CYRILLIC CAPITAL LETTER EN WITH DESCENDER' : 1186, + 'CYRILLIC CAPITAL LETTER EN WITH HOOK' : 1223, + 'CYRILLIC CAPITAL LETTER EN WITH TAIL' : 1225, + 'CYRILLIC CAPITAL LETTER ER' : 1056, + 'CYRILLIC CAPITAL LETTER ER WITH TICK' : 1166, + 'CYRILLIC CAPITAL LETTER ES' : 1057, + 'CYRILLIC CAPITAL LETTER ES WITH DESCENDER' : 1194, + 'CYRILLIC CAPITAL LETTER FITA' : 1138, + 'CYRILLIC CAPITAL LETTER GHE' : 1043, + 'CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK' : 1172, + 'CYRILLIC CAPITAL LETTER GHE WITH STROKE' : 1170, + 'CYRILLIC CAPITAL LETTER GHE WITH UPTURN' : 1168, + 'CYRILLIC CAPITAL LETTER GJE' : 1027, + 'CYRILLIC CAPITAL LETTER HA' : 1061, + 'CYRILLIC CAPITAL LETTER HA WITH DESCENDER' : 1202, + 'CYRILLIC CAPITAL LETTER HARD SIGN' : 1066, + 'CYRILLIC CAPITAL LETTER I' : 1048, + 'CYRILLIC CAPITAL LETTER I WITH DIAERESIS' : 1252, + 'CYRILLIC CAPITAL LETTER I WITH GRAVE' : 1037, + 'CYRILLIC CAPITAL LETTER I WITH MACRON' : 1250, + 'CYRILLIC CAPITAL LETTER IE' : 1045, + 'CYRILLIC CAPITAL LETTER IE WITH BREVE' : 1238, + 'CYRILLIC CAPITAL LETTER IE WITH GRAVE' : 1024, + 'CYRILLIC CAPITAL LETTER IO' : 1025, + 'CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS' : 1132, + 'CYRILLIC CAPITAL LETTER IOTIFIED E' : 1124, + 'CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS' : 1128, + 'CYRILLIC CAPITAL LETTER IZHITSA' : 1140, + 'CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT' : 1142, + 'CYRILLIC CAPITAL LETTER JE' : 1032, + 'CYRILLIC CAPITAL LETTER KA' : 1050, + 'CYRILLIC CAPITAL LETTER KA WITH DESCENDER' : 1178, + 'CYRILLIC CAPITAL LETTER KA WITH HOOK' : 1219, + 'CYRILLIC CAPITAL LETTER KA WITH STROKE' : 1182, + 'CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE' : 1180, + 'CYRILLIC CAPITAL LETTER KHAKASSIAN CHE' : 1227, + 'CYRILLIC CAPITAL LETTER KJE' : 1036, + 'CYRILLIC CAPITAL LETTER KOMI DE' : 1280, + 'CYRILLIC CAPITAL LETTER KOMI DJE' : 1282, + 'CYRILLIC CAPITAL LETTER KOMI DZJE' : 1286, + 'CYRILLIC CAPITAL LETTER KOMI LJE' : 1288, + 'CYRILLIC CAPITAL LETTER KOMI NJE' : 1290, + 'CYRILLIC CAPITAL LETTER KOMI SJE' : 1292, + 'CYRILLIC CAPITAL LETTER KOMI TJE' : 1294, + 'CYRILLIC CAPITAL LETTER KOMI ZJE' : 1284, + 'CYRILLIC CAPITAL LETTER KOPPA' : 1152, + 'CYRILLIC CAPITAL LETTER KSI' : 1134, + 'CYRILLIC CAPITAL LETTER LITTLE YUS' : 1126, + 'CYRILLIC CAPITAL LETTER LJE' : 1033, + 'CYRILLIC CAPITAL LETTER NJE' : 1034, + 'CYRILLIC CAPITAL LETTER O' : 1054, + 'CYRILLIC CAPITAL LETTER O WITH DIAERESIS' : 1254, + 'CYRILLIC CAPITAL LETTER OMEGA' : 1120, + 'CYRILLIC CAPITAL LETTER OMEGA WITH TITLO' : 1148, + 'CYRILLIC CAPITAL LETTER OT' : 1150, + 'CYRILLIC CAPITAL LETTER PE' : 1055, + 'CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK' : 1190, + 'CYRILLIC CAPITAL LETTER PSI' : 1136, + 'CYRILLIC CAPITAL LETTER ROUND OMEGA' : 1146, + 'CYRILLIC CAPITAL LETTER SCHWA' : 1240, + 'CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS' : 1242, + 'CYRILLIC CAPITAL LETTER SEMISOFT SIGN' : 1164, + 'CYRILLIC CAPITAL LETTER SHA' : 1064, + 'CYRILLIC CAPITAL LETTER SHCHA' : 1065, + 'CYRILLIC CAPITAL LETTER SHHA' : 1210, + 'CYRILLIC CAPITAL LETTER SHORT I' : 1049, + 'CYRILLIC CAPITAL LETTER SHORT I WITH TAIL' : 1162, + 'CYRILLIC CAPITAL LETTER SHORT U' : 1038, + 'CYRILLIC CAPITAL LETTER SOFT SIGN' : 1068, + 'CYRILLIC CAPITAL LETTER STRAIGHT U' : 1198, + 'CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE' : 1200, + 'CYRILLIC CAPITAL LETTER TE' : 1058, + 'CYRILLIC CAPITAL LETTER TE WITH DESCENDER' : 1196, + 'CYRILLIC CAPITAL LETTER TSE' : 1062, + 'CYRILLIC CAPITAL LETTER TSHE' : 1035, + 'CYRILLIC CAPITAL LETTER U' : 1059, + 'CYRILLIC CAPITAL LETTER U WITH DIAERESIS' : 1264, + 'CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE' : 1266, + 'CYRILLIC CAPITAL LETTER U WITH MACRON' : 1262, + 'CYRILLIC CAPITAL LETTER UK' : 1144, + 'CYRILLIC CAPITAL LETTER UKRAINIAN IE' : 1028, + 'CYRILLIC CAPITAL LETTER VE' : 1042, + 'CYRILLIC CAPITAL LETTER YA' : 1071, + 'CYRILLIC CAPITAL LETTER YAT' : 1122, + 'CYRILLIC CAPITAL LETTER YERU' : 1067, + 'CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS' : 1272, + 'CYRILLIC CAPITAL LETTER YI' : 1031, + 'CYRILLIC CAPITAL LETTER YU' : 1070, + 'CYRILLIC CAPITAL LETTER ZE' : 1047, + 'CYRILLIC CAPITAL LETTER ZE WITH DESCENDER' : 1176, + 'CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS' : 1246, + 'CYRILLIC CAPITAL LETTER ZHE' : 1046, + 'CYRILLIC CAPITAL LETTER ZHE WITH BREVE' : 1217, + 'CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER' : 1174, + 'CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS' : 1244, + 'CYRILLIC CAPITAL LIGATURE A IE' : 1236, + 'CYRILLIC CAPITAL LIGATURE EN GHE' : 1188, + 'CYRILLIC CAPITAL LIGATURE TE TSE' : 1204, + 'CYRILLIC LETTER PALOCHKA' : 1216, + 'CYRILLIC SMALL LETTER A' : 1072, + 'CYRILLIC SMALL LETTER A WITH BREVE' : 1233, + 'CYRILLIC SMALL LETTER A WITH DIAERESIS' : 1235, + 'CYRILLIC SMALL LETTER ABKHASIAN CHE' : 1213, + 'CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER' : 1215, + 'CYRILLIC SMALL LETTER ABKHASIAN DZE' : 1249, + 'CYRILLIC SMALL LETTER ABKHASIAN HA' : 1193, + 'CYRILLIC SMALL LETTER BARRED O' : 1257, + 'CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS' : 1259, + 'CYRILLIC SMALL LETTER BASHKIR KA' : 1185, + 'CYRILLIC SMALL LETTER BE' : 1073, + 'CYRILLIC SMALL LETTER BIG YUS' : 1131, + 'CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I' : 1110, + 'CYRILLIC SMALL LETTER CHE' : 1095, + 'CYRILLIC SMALL LETTER CHE WITH DESCENDER' : 1207, + 'CYRILLIC SMALL LETTER CHE WITH DIAERESIS' : 1269, + 'CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE' : 1209, + 'CYRILLIC SMALL LETTER DE' : 1076, + 'CYRILLIC SMALL LETTER DJE' : 1106, + 'CYRILLIC SMALL LETTER DZE' : 1109, + 'CYRILLIC SMALL LETTER DZHE' : 1119, + 'CYRILLIC SMALL LETTER E' : 1101, + 'CYRILLIC SMALL LETTER E WITH DIAERESIS' : 1261, + 'CYRILLIC SMALL LETTER EF' : 1092, + 'CYRILLIC SMALL LETTER EL' : 1083, + 'CYRILLIC SMALL LETTER EL WITH TAIL' : 1222, + 'CYRILLIC SMALL LETTER EM' : 1084, + 'CYRILLIC SMALL LETTER EM WITH TAIL' : 1230, + 'CYRILLIC SMALL LETTER EN' : 1085, + 'CYRILLIC SMALL LETTER EN WITH DESCENDER' : 1187, + 'CYRILLIC SMALL LETTER EN WITH HOOK' : 1224, + 'CYRILLIC SMALL LETTER EN WITH TAIL' : 1226, + 'CYRILLIC SMALL LETTER ER' : 1088, + 'CYRILLIC SMALL LETTER ER WITH TICK' : 1167, + 'CYRILLIC SMALL LETTER ES' : 1089, + 'CYRILLIC SMALL LETTER ES WITH DESCENDER' : 1195, + 'CYRILLIC SMALL LETTER FITA' : 1139, + 'CYRILLIC SMALL LETTER GHE' : 1075, + 'CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK' : 1173, + 'CYRILLIC SMALL LETTER GHE WITH STROKE' : 1171, + 'CYRILLIC SMALL LETTER GHE WITH UPTURN' : 1169, + 'CYRILLIC SMALL LETTER GJE' : 1107, + 'CYRILLIC SMALL LETTER HA' : 1093, + 'CYRILLIC SMALL LETTER HA WITH DESCENDER' : 1203, + 'CYRILLIC SMALL LETTER HARD SIGN' : 1098, + 'CYRILLIC SMALL LETTER I' : 1080, + 'CYRILLIC SMALL LETTER I WITH DIAERESIS' : 1253, + 'CYRILLIC SMALL LETTER I WITH GRAVE' : 1117, + 'CYRILLIC SMALL LETTER I WITH MACRON' : 1251, + 'CYRILLIC SMALL LETTER IE' : 1077, + 'CYRILLIC SMALL LETTER IE WITH BREVE' : 1239, + 'CYRILLIC SMALL LETTER IE WITH GRAVE' : 1104, + 'CYRILLIC SMALL LETTER IO' : 1105, + 'CYRILLIC SMALL LETTER IOTIFIED BIG YUS' : 1133, + 'CYRILLIC SMALL LETTER IOTIFIED E' : 1125, + 'CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS' : 1129, + 'CYRILLIC SMALL LETTER IZHITSA' : 1141, + 'CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT' : 1143, + 'CYRILLIC SMALL LETTER JE' : 1112, + 'CYRILLIC SMALL LETTER KA' : 1082, + 'CYRILLIC SMALL LETTER KA WITH DESCENDER' : 1179, + 'CYRILLIC SMALL LETTER KA WITH HOOK' : 1220, + 'CYRILLIC SMALL LETTER KA WITH STROKE' : 1183, + 'CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE' : 1181, + 'CYRILLIC SMALL LETTER KHAKASSIAN CHE' : 1228, + 'CYRILLIC SMALL LETTER KJE' : 1116, + 'CYRILLIC SMALL LETTER KOMI DE' : 1281, + 'CYRILLIC SMALL LETTER KOMI DJE' : 1283, + 'CYRILLIC SMALL LETTER KOMI DZJE' : 1287, + 'CYRILLIC SMALL LETTER KOMI LJE' : 1289, + 'CYRILLIC SMALL LETTER KOMI NJE' : 1291, + 'CYRILLIC SMALL LETTER KOMI SJE' : 1293, + 'CYRILLIC SMALL LETTER KOMI TJE' : 1295, + 'CYRILLIC SMALL LETTER KOMI ZJE' : 1285, + 'CYRILLIC SMALL LETTER KOPPA' : 1153, + 'CYRILLIC SMALL LETTER KSI' : 1135, + 'CYRILLIC SMALL LETTER LITTLE YUS' : 1127, + 'CYRILLIC SMALL LETTER LJE' : 1113, + 'CYRILLIC SMALL LETTER NJE' : 1114, + 'CYRILLIC SMALL LETTER O' : 1086, + 'CYRILLIC SMALL LETTER O WITH DIAERESIS' : 1255, + 'CYRILLIC SMALL LETTER OMEGA' : 1121, + 'CYRILLIC SMALL LETTER OMEGA WITH TITLO' : 1149, + 'CYRILLIC SMALL LETTER OT' : 1151, + 'CYRILLIC SMALL LETTER PE' : 1087, + 'CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK' : 1191, + 'CYRILLIC SMALL LETTER PSI' : 1137, + 'CYRILLIC SMALL LETTER ROUND OMEGA' : 1147, + 'CYRILLIC SMALL LETTER SCHWA' : 1241, + 'CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS' : 1243, + 'CYRILLIC SMALL LETTER SEMISOFT SIGN' : 1165, + 'CYRILLIC SMALL LETTER SHA' : 1096, + 'CYRILLIC SMALL LETTER SHCHA' : 1097, + 'CYRILLIC SMALL LETTER SHHA' : 1211, + 'CYRILLIC SMALL LETTER SHORT I' : 1081, + 'CYRILLIC SMALL LETTER SHORT I WITH TAIL' : 1163, + 'CYRILLIC SMALL LETTER SHORT U' : 1118, + 'CYRILLIC SMALL LETTER SOFT SIGN' : 1100, + 'CYRILLIC SMALL LETTER STRAIGHT U' : 1199, + 'CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE' : 1201, + 'CYRILLIC SMALL LETTER TE' : 1090, + 'CYRILLIC SMALL LETTER TE WITH DESCENDER' : 1197, + 'CYRILLIC SMALL LETTER TSE' : 1094, + 'CYRILLIC SMALL LETTER TSHE' : 1115, + 'CYRILLIC SMALL LETTER U' : 1091, + 'CYRILLIC SMALL LETTER U WITH DIAERESIS' : 1265, + 'CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE' : 1267, + 'CYRILLIC SMALL LETTER U WITH MACRON' : 1263, + 'CYRILLIC SMALL LETTER UK' : 1145, + 'CYRILLIC SMALL LETTER UKRAINIAN IE' : 1108, + 'CYRILLIC SMALL LETTER VE' : 1074, + 'CYRILLIC SMALL LETTER YA' : 1103, + 'CYRILLIC SMALL LETTER YAT' : 1123, + 'CYRILLIC SMALL LETTER YERU' : 1099, + 'CYRILLIC SMALL LETTER YERU WITH DIAERESIS' : 1273, + 'CYRILLIC SMALL LETTER YI' : 1111, + 'CYRILLIC SMALL LETTER YU' : 1102, + 'CYRILLIC SMALL LETTER ZE' : 1079, + 'CYRILLIC SMALL LETTER ZE WITH DESCENDER' : 1177, + 'CYRILLIC SMALL LETTER ZE WITH DIAERESIS' : 1247, + 'CYRILLIC SMALL LETTER ZHE' : 1078, + 'CYRILLIC SMALL LETTER ZHE WITH BREVE' : 1218, + 'CYRILLIC SMALL LETTER ZHE WITH DESCENDER' : 1175, + 'CYRILLIC SMALL LETTER ZHE WITH DIAERESIS' : 1245, + 'CYRILLIC SMALL LIGATURE A IE' : 1237, + 'CYRILLIC SMALL LIGATURE EN GHE' : 1189, + 'CYRILLIC SMALL LIGATURE TE TSE' : 1205, + 'CYRILLIC THOUSANDS SIGN' : 1154, + 'DAGGER' : 8224, + 'DALET SYMBOL' : 8504, + 'DARK SHADE' : 9619, + 'DASHED LOW LINE' : 65101, + 'DASHED OVERLINE' : 65097, + 'DASHED TRIANGLE-HEADED RIGHTWARDS ARROW' : 10143, + 'DECIMAL SEPARATOR KEY SYMBOL' : 9110, + 'DEGREE CELSIUS' : 8451, + 'DEGREE FAHRENHEIT' : 8457, + 'DEGREE SIGN' : 176, + 'DELTA EQUAL TO' : 8796, + 'DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL' : 9161, + 'DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE' : 9153, + 'DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE' : 9156, + 'DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE' : 9159, + 'DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL' : 9162, + 'DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE' : 9154, + 'DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE' : 9157, + 'DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE' : 9160, + 'DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT' : 9164, + 'DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT' : 9151, + 'DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT' : 9163, + 'DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT' : 9150, + 'DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE' : 9158, + 'DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE' : 9152, + 'DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE' : 9155, + 'DESCENDING NODE' : 9739, + 'DESERET CAPITAL LETTER AY' : 66572, + 'DESERET CAPITAL LETTER BEE' : 66578, + 'DESERET CAPITAL LETTER CHEE' : 66581, + 'DESERET CAPITAL LETTER DEE' : 66580, + 'DESERET CAPITAL LETTER EF' : 66585, + 'DESERET CAPITAL LETTER EL' : 66594, + 'DESERET CAPITAL LETTER EM' : 66595, + 'DESERET CAPITAL LETTER EN' : 66596, + 'DESERET CAPITAL LETTER ENG' : 66597, + 'DESERET CAPITAL LETTER ER' : 66593, + 'DESERET CAPITAL LETTER ES' : 66589, + 'DESERET CAPITAL LETTER ESH' : 66591, + 'DESERET CAPITAL LETTER ETH' : 66587, + 'DESERET CAPITAL LETTER GAY' : 66584, + 'DESERET CAPITAL LETTER H' : 66576, + 'DESERET CAPITAL LETTER JEE' : 66582, + 'DESERET CAPITAL LETTER KAY' : 66583, + 'DESERET CAPITAL LETTER LONG A' : 66562, + 'DESERET CAPITAL LETTER LONG AH' : 66563, + 'DESERET CAPITAL LETTER LONG E' : 66561, + 'DESERET CAPITAL LETTER LONG I' : 66560, + 'DESERET CAPITAL LETTER LONG O' : 66564, + 'DESERET CAPITAL LETTER LONG OO' : 66565, + 'DESERET CAPITAL LETTER OW' : 66573, + 'DESERET CAPITAL LETTER PEE' : 66577, + 'DESERET CAPITAL LETTER SHORT A' : 66568, + 'DESERET CAPITAL LETTER SHORT AH' : 66569, + 'DESERET CAPITAL LETTER SHORT E' : 66567, + 'DESERET CAPITAL LETTER SHORT I' : 66566, + 'DESERET CAPITAL LETTER SHORT O' : 66570, + 'DESERET CAPITAL LETTER SHORT OO' : 66571, + 'DESERET CAPITAL LETTER TEE' : 66579, + 'DESERET CAPITAL LETTER THEE' : 66588, + 'DESERET CAPITAL LETTER VEE' : 66586, + 'DESERET CAPITAL LETTER WU' : 66574, + 'DESERET CAPITAL LETTER YEE' : 66575, + 'DESERET CAPITAL LETTER ZEE' : 66590, + 'DESERET CAPITAL LETTER ZHEE' : 66592, + 'DESERET SMALL LETTER AY' : 66612, + 'DESERET SMALL LETTER BEE' : 66618, + 'DESERET SMALL LETTER CHEE' : 66621, + 'DESERET SMALL LETTER DEE' : 66620, + 'DESERET SMALL LETTER EF' : 66625, + 'DESERET SMALL LETTER EL' : 66634, + 'DESERET SMALL LETTER EM' : 66635, + 'DESERET SMALL LETTER EN' : 66636, + 'DESERET SMALL LETTER ENG' : 66637, + 'DESERET SMALL LETTER ER' : 66633, + 'DESERET SMALL LETTER ES' : 66629, + 'DESERET SMALL LETTER ESH' : 66631, + 'DESERET SMALL LETTER ETH' : 66627, + 'DESERET SMALL LETTER GAY' : 66624, + 'DESERET SMALL LETTER H' : 66616, + 'DESERET SMALL LETTER JEE' : 66622, + 'DESERET SMALL LETTER KAY' : 66623, + 'DESERET SMALL LETTER LONG A' : 66602, + 'DESERET SMALL LETTER LONG AH' : 66603, + 'DESERET SMALL LETTER LONG E' : 66601, + 'DESERET SMALL LETTER LONG I' : 66600, + 'DESERET SMALL LETTER LONG O' : 66604, + 'DESERET SMALL LETTER LONG OO' : 66605, + 'DESERET SMALL LETTER OW' : 66613, + 'DESERET SMALL LETTER PEE' : 66617, + 'DESERET SMALL LETTER SHORT A' : 66608, + 'DESERET SMALL LETTER SHORT AH' : 66609, + 'DESERET SMALL LETTER SHORT E' : 66607, + 'DESERET SMALL LETTER SHORT I' : 66606, + 'DESERET SMALL LETTER SHORT O' : 66610, + 'DESERET SMALL LETTER SHORT OO' : 66611, + 'DESERET SMALL LETTER TEE' : 66619, + 'DESERET SMALL LETTER THEE' : 66628, + 'DESERET SMALL LETTER VEE' : 66626, + 'DESERET SMALL LETTER WU' : 66614, + 'DESERET SMALL LETTER YEE' : 66615, + 'DESERET SMALL LETTER ZEE' : 66630, + 'DESERET SMALL LETTER ZHEE' : 66632, + 'DEVANAGARI ABBREVIATION SIGN' : 2416, + 'DEVANAGARI ACUTE ACCENT' : 2388, + 'DEVANAGARI DANDA' : 2404, + 'DEVANAGARI DIGIT EIGHT' : 2414, + 'DEVANAGARI DIGIT FIVE' : 2411, + 'DEVANAGARI DIGIT FOUR' : 2410, + 'DEVANAGARI DIGIT NINE' : 2415, + 'DEVANAGARI DIGIT ONE' : 2407, + 'DEVANAGARI DIGIT SEVEN' : 2413, + 'DEVANAGARI DIGIT SIX' : 2412, + 'DEVANAGARI DIGIT THREE' : 2409, + 'DEVANAGARI DIGIT TWO' : 2408, + 'DEVANAGARI DIGIT ZERO' : 2406, + 'DEVANAGARI DOUBLE DANDA' : 2405, + 'DEVANAGARI GRAVE ACCENT' : 2387, + 'DEVANAGARI LETTER A' : 2309, + 'DEVANAGARI LETTER AA' : 2310, + 'DEVANAGARI LETTER AI' : 2320, + 'DEVANAGARI LETTER AU' : 2324, + 'DEVANAGARI LETTER BA' : 2348, + 'DEVANAGARI LETTER BHA' : 2349, + 'DEVANAGARI LETTER CA' : 2330, + 'DEVANAGARI LETTER CANDRA E' : 2317, + 'DEVANAGARI LETTER CANDRA O' : 2321, + 'DEVANAGARI LETTER CHA' : 2331, + 'DEVANAGARI LETTER DA' : 2342, + 'DEVANAGARI LETTER DDA' : 2337, + 'DEVANAGARI LETTER DDDHA' : 2396, + 'DEVANAGARI LETTER DDHA' : 2338, + 'DEVANAGARI LETTER DHA' : 2343, + 'DEVANAGARI LETTER E' : 2319, + 'DEVANAGARI LETTER FA' : 2398, + 'DEVANAGARI LETTER GA' : 2327, + 'DEVANAGARI LETTER GHA' : 2328, + 'DEVANAGARI LETTER GHHA' : 2394, + 'DEVANAGARI LETTER HA' : 2361, + 'DEVANAGARI LETTER I' : 2311, + 'DEVANAGARI LETTER II' : 2312, + 'DEVANAGARI LETTER JA' : 2332, + 'DEVANAGARI LETTER JHA' : 2333, + 'DEVANAGARI LETTER KA' : 2325, + 'DEVANAGARI LETTER KHA' : 2326, + 'DEVANAGARI LETTER KHHA' : 2393, + 'DEVANAGARI LETTER LA' : 2354, + 'DEVANAGARI LETTER LLA' : 2355, + 'DEVANAGARI LETTER LLLA' : 2356, + 'DEVANAGARI LETTER MA' : 2350, + 'DEVANAGARI LETTER NA' : 2344, + 'DEVANAGARI LETTER NGA' : 2329, + 'DEVANAGARI LETTER NNA' : 2339, + 'DEVANAGARI LETTER NNNA' : 2345, + 'DEVANAGARI LETTER NYA' : 2334, + 'DEVANAGARI LETTER O' : 2323, + 'DEVANAGARI LETTER PA' : 2346, + 'DEVANAGARI LETTER PHA' : 2347, + 'DEVANAGARI LETTER QA' : 2392, + 'DEVANAGARI LETTER RA' : 2352, + 'DEVANAGARI LETTER RHA' : 2397, + 'DEVANAGARI LETTER RRA' : 2353, + 'DEVANAGARI LETTER SA' : 2360, + 'DEVANAGARI LETTER SHA' : 2358, + 'DEVANAGARI LETTER SHORT E' : 2318, + 'DEVANAGARI LETTER SHORT O' : 2322, + 'DEVANAGARI LETTER SSA' : 2359, + 'DEVANAGARI LETTER TA' : 2340, + 'DEVANAGARI LETTER THA' : 2341, + 'DEVANAGARI LETTER TTA' : 2335, + 'DEVANAGARI LETTER TTHA' : 2336, + 'DEVANAGARI LETTER U' : 2313, + 'DEVANAGARI LETTER UU' : 2314, + 'DEVANAGARI LETTER VA' : 2357, + 'DEVANAGARI LETTER VOCALIC L' : 2316, + 'DEVANAGARI LETTER VOCALIC LL' : 2401, + 'DEVANAGARI LETTER VOCALIC R' : 2315, + 'DEVANAGARI LETTER VOCALIC RR' : 2400, + 'DEVANAGARI LETTER YA' : 2351, + 'DEVANAGARI LETTER YYA' : 2399, + 'DEVANAGARI LETTER ZA' : 2395, + 'DEVANAGARI OM' : 2384, + 'DEVANAGARI SIGN ANUSVARA' : 2306, + 'DEVANAGARI SIGN AVAGRAHA' : 2365, + 'DEVANAGARI SIGN CANDRABINDU' : 2305, + 'DEVANAGARI SIGN NUKTA' : 2364, + 'DEVANAGARI SIGN VIRAMA' : 2381, + 'DEVANAGARI SIGN VISARGA' : 2307, + 'DEVANAGARI STRESS SIGN ANUDATTA' : 2386, + 'DEVANAGARI STRESS SIGN UDATTA' : 2385, + 'DEVANAGARI VOWEL SIGN AA' : 2366, + 'DEVANAGARI VOWEL SIGN AI' : 2376, + 'DEVANAGARI VOWEL SIGN AU' : 2380, + 'DEVANAGARI VOWEL SIGN CANDRA E' : 2373, + 'DEVANAGARI VOWEL SIGN CANDRA O' : 2377, + 'DEVANAGARI VOWEL SIGN E' : 2375, + 'DEVANAGARI VOWEL SIGN I' : 2367, + 'DEVANAGARI VOWEL SIGN II' : 2368, + 'DEVANAGARI VOWEL SIGN O' : 2379, + 'DEVANAGARI VOWEL SIGN SHORT E' : 2374, + 'DEVANAGARI VOWEL SIGN SHORT O' : 2378, + 'DEVANAGARI VOWEL SIGN U' : 2369, + 'DEVANAGARI VOWEL SIGN UU' : 2370, + 'DEVANAGARI VOWEL SIGN VOCALIC L' : 2402, + 'DEVANAGARI VOWEL SIGN VOCALIC LL' : 2403, + 'DEVANAGARI VOWEL SIGN VOCALIC R' : 2371, + 'DEVANAGARI VOWEL SIGN VOCALIC RR' : 2372, + 'DIAERESIS' : 168, + 'DIAMETER SIGN' : 8960, + 'DIAMOND OPERATOR' : 8900, + 'DIE FACE-1' : 9856, + 'DIE FACE-2' : 9857, + 'DIE FACE-3' : 9858, + 'DIE FACE-4' : 9859, + 'DIE FACE-5' : 9860, + 'DIE FACE-6' : 9861, + 'DIFFERENCE BETWEEN' : 8783, + 'DIGIT EIGHT' : 56, + 'DIGIT EIGHT FULL STOP' : 9359, + 'DIGIT FIVE' : 53, + 'DIGIT FIVE FULL STOP' : 9356, + 'DIGIT FOUR' : 52, + 'DIGIT FOUR FULL STOP' : 9355, + 'DIGIT NINE' : 57, + 'DIGIT NINE FULL STOP' : 9360, + 'DIGIT ONE' : 49, + 'DIGIT ONE FULL STOP' : 9352, + 'DIGIT SEVEN' : 55, + 'DIGIT SEVEN FULL STOP' : 9358, + 'DIGIT SIX' : 54, + 'DIGIT SIX FULL STOP' : 9357, + 'DIGIT THREE' : 51, + 'DIGIT THREE FULL STOP' : 9354, + 'DIGIT TWO' : 50, + 'DIGIT TWO FULL STOP' : 9353, + 'DIGIT ZERO' : 48, + 'DIMENSION ORIGIN' : 9009, + 'DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT' : 10119, + 'DINGBAT CIRCLED SANS-SERIF DIGIT FIVE' : 10116, + 'DINGBAT CIRCLED SANS-SERIF DIGIT FOUR' : 10115, + 'DINGBAT CIRCLED SANS-SERIF DIGIT NINE' : 10120, + 'DINGBAT CIRCLED SANS-SERIF DIGIT ONE' : 10112, + 'DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN' : 10118, + 'DINGBAT CIRCLED SANS-SERIF DIGIT SIX' : 10117, + 'DINGBAT CIRCLED SANS-SERIF DIGIT THREE' : 10114, + 'DINGBAT CIRCLED SANS-SERIF DIGIT TWO' : 10113, + 'DINGBAT CIRCLED SANS-SERIF NUMBER TEN' : 10121, + 'DINGBAT NEGATIVE CIRCLED DIGIT EIGHT' : 10109, + 'DINGBAT NEGATIVE CIRCLED DIGIT FIVE' : 10106, + 'DINGBAT NEGATIVE CIRCLED DIGIT FOUR' : 10105, + 'DINGBAT NEGATIVE CIRCLED DIGIT NINE' : 10110, + 'DINGBAT NEGATIVE CIRCLED DIGIT ONE' : 10102, + 'DINGBAT NEGATIVE CIRCLED DIGIT SEVEN' : 10108, + 'DINGBAT NEGATIVE CIRCLED DIGIT SIX' : 10107, + 'DINGBAT NEGATIVE CIRCLED DIGIT THREE' : 10104, + 'DINGBAT NEGATIVE CIRCLED DIGIT TWO' : 10103, + 'DINGBAT NEGATIVE CIRCLED NUMBER TEN' : 10111, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT' : 10129, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE' : 10126, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR' : 10125, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE' : 10130, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE' : 10122, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN' : 10128, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX' : 10127, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE' : 10124, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO' : 10123, + 'DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN' : 10131, + 'DIRECT CURRENT SYMBOL FORM TWO' : 9107, + 'DISCONTINUOUS UNDERLINE SYMBOL' : 9090, + 'DITTO MARK' : 12291, + 'DIVIDES' : 8739, + 'DIVISION SIGN' : 247, + 'DIVISION SLASH' : 8725, + 'DIVISION TIMES' : 8903, + 'DOES NOT CONTAIN AS MEMBER' : 8716, + 'DOES NOT CONTAIN AS NORMAL SUBGROUP' : 8939, + 'DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL' : 8941, + 'DOES NOT DIVIDE' : 8740, + 'DOES NOT DIVIDE WITH REVERSED NEGATION SLASH' : 10990, + 'DOES NOT FORCE' : 8878, + 'DOES NOT PRECEDE' : 8832, + 'DOES NOT PRECEDE OR EQUAL' : 8928, + 'DOES NOT PROVE' : 8876, + 'DOES NOT SUCCEED' : 8833, + 'DOES NOT SUCCEED OR EQUAL' : 8929, + 'DOLLAR SIGN' : 36, + 'DONG SIGN' : 8363, + 'DOT ABOVE' : 729, + 'DOT MINUS' : 8760, + 'DOT OPERATOR' : 8901, + 'DOT PLUS' : 8724, + 'DOTTED CIRCLE' : 9676, + 'DOTTED FENCE' : 10649, + 'DOUBLE ACUTE ACCENT' : 733, + 'DOUBLE CIRCLED DIGIT EIGHT' : 9468, + 'DOUBLE CIRCLED DIGIT FIVE' : 9465, + 'DOUBLE CIRCLED DIGIT FOUR' : 9464, + 'DOUBLE CIRCLED DIGIT NINE' : 9469, + 'DOUBLE CIRCLED DIGIT ONE' : 9461, + 'DOUBLE CIRCLED DIGIT SEVEN' : 9467, + 'DOUBLE CIRCLED DIGIT SIX' : 9466, + 'DOUBLE CIRCLED DIGIT THREE' : 9463, + 'DOUBLE CIRCLED DIGIT TWO' : 9462, + 'DOUBLE CIRCLED NUMBER TEN' : 9470, + 'DOUBLE COLON EQUAL' : 10868, + 'DOUBLE DAGGER' : 8225, + 'DOUBLE DOWN TACK' : 10986, + 'DOUBLE EXCLAMATION MARK' : 8252, + 'DOUBLE HIGH-REVERSED-9 QUOTATION MARK' : 8223, + 'DOUBLE INTEGRAL' : 8748, + 'DOUBLE INTERSECTION' : 8914, + 'DOUBLE LEFT ARC GREATER-THAN BRACKET' : 10645, + 'DOUBLE LOGICAL AND' : 10835, + 'DOUBLE LOGICAL OR' : 10836, + 'DOUBLE LOW LINE' : 8215, + 'DOUBLE LOW-9 QUOTATION MARK' : 8222, + 'DOUBLE NESTED GREATER-THAN' : 10914, + 'DOUBLE NESTED LESS-THAN' : 10913, + 'DOUBLE NESTED LESS-THAN WITH UNDERBAR' : 10915, + 'DOUBLE PLUS' : 10746, + 'DOUBLE PRECEDES' : 10939, + 'DOUBLE PRIME' : 8243, + 'DOUBLE PRIME QUOTATION MARK' : 12318, + 'DOUBLE QUESTION MARK' : 8263, + 'DOUBLE RIGHT ARC LESS-THAN BRACKET' : 10646, + 'DOUBLE SOLIDUS OPERATOR' : 11005, + 'DOUBLE SQUARE INTERSECTION' : 10830, + 'DOUBLE SQUARE UNION' : 10831, + 'DOUBLE STROKE NOT SIGN' : 10988, + 'DOUBLE SUBSET' : 8912, + 'DOUBLE SUCCEEDS' : 10940, + 'DOUBLE SUPERSET' : 8913, + 'DOUBLE UNION' : 8915, + 'DOUBLE UP TACK' : 10987, + 'DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE' : 10981, + 'DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE' : 8875, + 'DOUBLE VERTICAL BAR LEFT TURNSTILE' : 10979, + 'DOUBLE VERTICAL LINE' : 8214, + 'DOUBLE WAVY OVERLINE' : 65100, + 'DOUBLE-ENDED MULTIMAP' : 10719, + 'DOUBLE-LINE EQUAL TO OR GREATER-THAN' : 10906, + 'DOUBLE-LINE EQUAL TO OR LESS-THAN' : 10905, + 'DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN' : 10908, + 'DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN' : 10907, + 'DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO' : 11002, + 'DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO' : 11001, + 'DOUBLE-STRUCK CAPITAL C' : 8450, + 'DOUBLE-STRUCK CAPITAL GAMMA' : 8510, + 'DOUBLE-STRUCK CAPITAL H' : 8461, + 'DOUBLE-STRUCK CAPITAL N' : 8469, + 'DOUBLE-STRUCK CAPITAL P' : 8473, + 'DOUBLE-STRUCK CAPITAL PI' : 8511, + 'DOUBLE-STRUCK CAPITAL Q' : 8474, + 'DOUBLE-STRUCK CAPITAL R' : 8477, + 'DOUBLE-STRUCK CAPITAL Z' : 8484, + 'DOUBLE-STRUCK ITALIC CAPITAL D' : 8517, + 'DOUBLE-STRUCK ITALIC SMALL D' : 8518, + 'DOUBLE-STRUCK ITALIC SMALL E' : 8519, + 'DOUBLE-STRUCK ITALIC SMALL I' : 8520, + 'DOUBLE-STRUCK ITALIC SMALL J' : 8521, + 'DOUBLE-STRUCK N-ARY SUMMATION' : 8512, + 'DOUBLE-STRUCK SMALL GAMMA' : 8509, + 'DOWN ARROWHEAD' : 8964, + 'DOWN FISH TAIL' : 10623, + 'DOWN RIGHT DIAGONAL ELLIPSIS' : 8945, + 'DOWN TACK' : 8868, + 'DOWN TACK WITH CIRCLE BELOW' : 10993, + 'DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK' : 10728, + 'DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK' : 10729, + 'DOWNWARDS ARROW' : 8595, + 'DOWNWARDS ARROW FROM BAR' : 8615, + 'DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW' : 8693, + 'DOWNWARDS ARROW TO BAR' : 10515, + 'DOWNWARDS ARROW WITH CORNER LEFTWARDS' : 8629, + 'DOWNWARDS ARROW WITH DOUBLE STROKE' : 8671, + 'DOWNWARDS ARROW WITH HORIZONTAL STROKE' : 10504, + 'DOWNWARDS ARROW WITH TIP LEFTWARDS' : 8626, + 'DOWNWARDS ARROW WITH TIP RIGHTWARDS' : 8627, + 'DOWNWARDS DASHED ARROW' : 8675, + 'DOWNWARDS DOUBLE ARROW' : 8659, + 'DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT' : 10597, + 'DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT' : 10607, + 'DOWNWARDS HARPOON WITH BARB LEFT FROM BAR' : 10593, + 'DOWNWARDS HARPOON WITH BARB LEFT TO BAR' : 10585, + 'DOWNWARDS HARPOON WITH BARB LEFTWARDS' : 8643, + 'DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR' : 10589, + 'DOWNWARDS HARPOON WITH BARB RIGHT TO BAR' : 10581, + 'DOWNWARDS HARPOON WITH BARB RIGHTWARDS' : 8642, + 'DOWNWARDS PAIRED ARROWS' : 8650, + 'DOWNWARDS QUADRUPLE ARROW' : 10225, + 'DOWNWARDS TRIPLE ARROW' : 10507, + 'DOWNWARDS TWO HEADED ARROW' : 8609, + 'DOWNWARDS WHITE ARROW' : 8681, + 'DOWNWARDS ZIGZAG ARROW' : 8623, + 'DRACHMA SIGN' : 8367, + 'DRAFTING POINT RIGHTWARDS ARROW' : 10139, + 'EARTH' : 9793, + 'EAST SYRIAC CROSS' : 9841, + 'EIGHT PETALLED OUTLINED BLACK FLORETTE' : 10049, + 'EIGHT POINTED BLACK STAR' : 10036, + 'EIGHT POINTED PINWHEEL STAR' : 10037, + 'EIGHT POINTED RECTILINEAR BLACK STAR' : 10039, + 'EIGHT SPOKED ASTERISK' : 10035, + 'EIGHT TEARDROP-SPOKED PROPELLER ASTERISK' : 10058, + 'EIGHTH NOTE' : 9834, + 'ELECTRIC ARROW' : 8961, + 'ELEMENT OF' : 8712, + 'ELEMENT OF OPENING DOWNWARDS' : 10969, + 'ELEMENT OF OPENING UPWARDS' : 10194, + 'ELEMENT OF WITH DOT ABOVE' : 8949, + 'ELEMENT OF WITH LONG HORIZONTAL STROKE' : 8946, + 'ELEMENT OF WITH OVERBAR' : 8950, + 'ELEMENT OF WITH TWO HORIZONTAL STROKES' : 8953, + 'ELEMENT OF WITH UNDERBAR' : 8952, + 'ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE' : 8947, + 'EM DASH' : 8212, + 'EM QUAD' : 8193, + 'EM SPACE' : 8195, + 'EMPHASIS SYMBOL' : 9091, + 'EMPTY SET' : 8709, + 'EMPTY SET WITH LEFT ARROW ABOVE' : 10676, + 'EMPTY SET WITH OVERBAR' : 10673, + 'EMPTY SET WITH RIGHT ARROW ABOVE' : 10675, + 'EMPTY SET WITH SMALL CIRCLE ABOVE' : 10674, + 'EN DASH' : 8211, + 'EN QUAD' : 8192, + 'EN SPACE' : 8194, + 'END OF PROOF' : 8718, + 'ENTER SYMBOL' : 9094, + 'ENVELOPE' : 9993, + 'EQUAL AND PARALLEL TO' : 8917, + 'EQUAL TO BY DEFINITION' : 8797, + 'EQUAL TO OR GREATER-THAN' : 8925, + 'EQUAL TO OR LESS-THAN' : 8924, + 'EQUAL TO OR PRECEDES' : 8926, + 'EQUAL TO OR SUCCEEDS' : 8927, + 'EQUALS COLON' : 8789, + 'EQUALS SIGN' : 61, + 'EQUALS SIGN ABOVE PLUS SIGN' : 10865, + 'EQUALS SIGN ABOVE RIGHTWARDS ARROW' : 10609, + 'EQUALS SIGN ABOVE TILDE OPERATOR' : 10867, + 'EQUALS SIGN AND SLANTED PARALLEL' : 10723, + 'EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE' : 10724, + 'EQUALS SIGN WITH BUMPY ABOVE' : 10926, + 'EQUALS SIGN WITH DOT BELOW' : 10854, + 'EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW' : 10871, + 'EQUALS WITH ASTERISK' : 10862, + 'EQUIANGULAR TO' : 8794, + 'EQUIVALENT TO' : 8781, + 'EQUIVALENT WITH FOUR DOTS ABOVE' : 10872, + 'ERASE TO THE LEFT' : 9003, + 'ERASE TO THE RIGHT' : 8998, + 'ERROR-BARRED BLACK CIRCLE' : 10739, + 'ERROR-BARRED BLACK DIAMOND' : 10737, + 'ERROR-BARRED BLACK SQUARE' : 10735, + 'ERROR-BARRED WHITE CIRCLE' : 10738, + 'ERROR-BARRED WHITE DIAMOND' : 10736, + 'ERROR-BARRED WHITE SQUARE' : 10734, + 'ESTIMATED SYMBOL' : 8494, + 'ESTIMATES' : 8793, + 'ETHIOPIC COLON' : 4965, + 'ETHIOPIC COMMA' : 4963, + 'ETHIOPIC DIGIT EIGHT' : 4976, + 'ETHIOPIC DIGIT FIVE' : 4973, + 'ETHIOPIC DIGIT FOUR' : 4972, + 'ETHIOPIC DIGIT NINE' : 4977, + 'ETHIOPIC DIGIT ONE' : 4969, + 'ETHIOPIC DIGIT SEVEN' : 4975, + 'ETHIOPIC DIGIT SIX' : 4974, + 'ETHIOPIC DIGIT THREE' : 4971, + 'ETHIOPIC DIGIT TWO' : 4970, + 'ETHIOPIC FULL STOP' : 4962, + 'ETHIOPIC NUMBER EIGHTY' : 4985, + 'ETHIOPIC NUMBER FIFTY' : 4982, + 'ETHIOPIC NUMBER FORTY' : 4981, + 'ETHIOPIC NUMBER HUNDRED' : 4987, + 'ETHIOPIC NUMBER NINETY' : 4986, + 'ETHIOPIC NUMBER SEVENTY' : 4984, + 'ETHIOPIC NUMBER SIXTY' : 4983, + 'ETHIOPIC NUMBER TEN' : 4978, + 'ETHIOPIC NUMBER TEN THOUSAND' : 4988, + 'ETHIOPIC NUMBER THIRTY' : 4980, + 'ETHIOPIC NUMBER TWENTY' : 4979, + 'ETHIOPIC PARAGRAPH SEPARATOR' : 4968, + 'ETHIOPIC PREFACE COLON' : 4966, + 'ETHIOPIC QUESTION MARK' : 4967, + 'ETHIOPIC SEMICOLON' : 4964, + 'ETHIOPIC SYLLABLE BA' : 4704, + 'ETHIOPIC SYLLABLE BAA' : 4707, + 'ETHIOPIC SYLLABLE BE' : 4709, + 'ETHIOPIC SYLLABLE BEE' : 4708, + 'ETHIOPIC SYLLABLE BI' : 4706, + 'ETHIOPIC SYLLABLE BO' : 4710, + 'ETHIOPIC SYLLABLE BU' : 4705, + 'ETHIOPIC SYLLABLE BWA' : 4711, + 'ETHIOPIC SYLLABLE CA' : 4728, + 'ETHIOPIC SYLLABLE CAA' : 4731, + 'ETHIOPIC SYLLABLE CE' : 4733, + 'ETHIOPIC SYLLABLE CEE' : 4732, + 'ETHIOPIC SYLLABLE CHA' : 4904, + 'ETHIOPIC SYLLABLE CHAA' : 4907, + 'ETHIOPIC SYLLABLE CHE' : 4909, + 'ETHIOPIC SYLLABLE CHEE' : 4908, + 'ETHIOPIC SYLLABLE CHI' : 4906, + 'ETHIOPIC SYLLABLE CHO' : 4910, + 'ETHIOPIC SYLLABLE CHU' : 4905, + 'ETHIOPIC SYLLABLE CHWA' : 4911, + 'ETHIOPIC SYLLABLE CI' : 4730, + 'ETHIOPIC SYLLABLE CO' : 4734, + 'ETHIOPIC SYLLABLE CU' : 4729, + 'ETHIOPIC SYLLABLE CWA' : 4735, + 'ETHIOPIC SYLLABLE DA' : 4848, + 'ETHIOPIC SYLLABLE DAA' : 4851, + 'ETHIOPIC SYLLABLE DDA' : 4856, + 'ETHIOPIC SYLLABLE DDAA' : 4859, + 'ETHIOPIC SYLLABLE DDE' : 4861, + 'ETHIOPIC SYLLABLE DDEE' : 4860, + 'ETHIOPIC SYLLABLE DDI' : 4858, + 'ETHIOPIC SYLLABLE DDO' : 4862, + 'ETHIOPIC SYLLABLE DDU' : 4857, + 'ETHIOPIC SYLLABLE DDWA' : 4863, + 'ETHIOPIC SYLLABLE DE' : 4853, + 'ETHIOPIC SYLLABLE DEE' : 4852, + 'ETHIOPIC SYLLABLE DI' : 4850, + 'ETHIOPIC SYLLABLE DO' : 4854, + 'ETHIOPIC SYLLABLE DU' : 4849, + 'ETHIOPIC SYLLABLE DWA' : 4855, + 'ETHIOPIC SYLLABLE FA' : 4936, + 'ETHIOPIC SYLLABLE FAA' : 4939, + 'ETHIOPIC SYLLABLE FE' : 4941, + 'ETHIOPIC SYLLABLE FEE' : 4940, + 'ETHIOPIC SYLLABLE FI' : 4938, + 'ETHIOPIC SYLLABLE FO' : 4942, + 'ETHIOPIC SYLLABLE FU' : 4937, + 'ETHIOPIC SYLLABLE FWA' : 4943, + 'ETHIOPIC SYLLABLE FYA' : 4954, + 'ETHIOPIC SYLLABLE GA' : 4872, + 'ETHIOPIC SYLLABLE GAA' : 4875, + 'ETHIOPIC SYLLABLE GE' : 4877, + 'ETHIOPIC SYLLABLE GEE' : 4876, + 'ETHIOPIC SYLLABLE GGA' : 4888, + 'ETHIOPIC SYLLABLE GGAA' : 4891, + 'ETHIOPIC SYLLABLE GGE' : 4893, + 'ETHIOPIC SYLLABLE GGEE' : 4892, + 'ETHIOPIC SYLLABLE GGI' : 4890, + 'ETHIOPIC SYLLABLE GGO' : 4894, + 'ETHIOPIC SYLLABLE GGU' : 4889, + 'ETHIOPIC SYLLABLE GI' : 4874, + 'ETHIOPIC SYLLABLE GLOTTAL A' : 4768, + 'ETHIOPIC SYLLABLE GLOTTAL AA' : 4771, + 'ETHIOPIC SYLLABLE GLOTTAL E' : 4773, + 'ETHIOPIC SYLLABLE GLOTTAL EE' : 4772, + 'ETHIOPIC SYLLABLE GLOTTAL I' : 4770, + 'ETHIOPIC SYLLABLE GLOTTAL O' : 4774, + 'ETHIOPIC SYLLABLE GLOTTAL U' : 4769, + 'ETHIOPIC SYLLABLE GLOTTAL WA' : 4775, + 'ETHIOPIC SYLLABLE GO' : 4878, + 'ETHIOPIC SYLLABLE GU' : 4873, + 'ETHIOPIC SYLLABLE GWA' : 4880, + 'ETHIOPIC SYLLABLE GWAA' : 4883, + 'ETHIOPIC SYLLABLE GWE' : 4885, + 'ETHIOPIC SYLLABLE GWEE' : 4884, + 'ETHIOPIC SYLLABLE GWI' : 4882, + 'ETHIOPIC SYLLABLE HA' : 4608, + 'ETHIOPIC SYLLABLE HAA' : 4611, + 'ETHIOPIC SYLLABLE HE' : 4613, + 'ETHIOPIC SYLLABLE HEE' : 4612, + 'ETHIOPIC SYLLABLE HHA' : 4624, + 'ETHIOPIC SYLLABLE HHAA' : 4627, + 'ETHIOPIC SYLLABLE HHE' : 4629, + 'ETHIOPIC SYLLABLE HHEE' : 4628, + 'ETHIOPIC SYLLABLE HHI' : 4626, + 'ETHIOPIC SYLLABLE HHO' : 4630, + 'ETHIOPIC SYLLABLE HHU' : 4625, + 'ETHIOPIC SYLLABLE HHWA' : 4631, + 'ETHIOPIC SYLLABLE HI' : 4610, + 'ETHIOPIC SYLLABLE HO' : 4614, + 'ETHIOPIC SYLLABLE HU' : 4609, + 'ETHIOPIC SYLLABLE JA' : 4864, + 'ETHIOPIC SYLLABLE JAA' : 4867, + 'ETHIOPIC SYLLABLE JE' : 4869, + 'ETHIOPIC SYLLABLE JEE' : 4868, + 'ETHIOPIC SYLLABLE JI' : 4866, + 'ETHIOPIC SYLLABLE JO' : 4870, + 'ETHIOPIC SYLLABLE JU' : 4865, + 'ETHIOPIC SYLLABLE JWA' : 4871, + 'ETHIOPIC SYLLABLE KA' : 4776, + 'ETHIOPIC SYLLABLE KAA' : 4779, + 'ETHIOPIC SYLLABLE KE' : 4781, + 'ETHIOPIC SYLLABLE KEE' : 4780, + 'ETHIOPIC SYLLABLE KI' : 4778, + 'ETHIOPIC SYLLABLE KO' : 4782, + 'ETHIOPIC SYLLABLE KU' : 4777, + 'ETHIOPIC SYLLABLE KWA' : 4784, + 'ETHIOPIC SYLLABLE KWAA' : 4787, + 'ETHIOPIC SYLLABLE KWE' : 4789, + 'ETHIOPIC SYLLABLE KWEE' : 4788, + 'ETHIOPIC SYLLABLE KWI' : 4786, + 'ETHIOPIC SYLLABLE KXA' : 4792, + 'ETHIOPIC SYLLABLE KXAA' : 4795, + 'ETHIOPIC SYLLABLE KXE' : 4797, + 'ETHIOPIC SYLLABLE KXEE' : 4796, + 'ETHIOPIC SYLLABLE KXI' : 4794, + 'ETHIOPIC SYLLABLE KXO' : 4798, + 'ETHIOPIC SYLLABLE KXU' : 4793, + 'ETHIOPIC SYLLABLE KXWA' : 4800, + 'ETHIOPIC SYLLABLE KXWAA' : 4803, + 'ETHIOPIC SYLLABLE KXWE' : 4805, + 'ETHIOPIC SYLLABLE KXWEE' : 4804, + 'ETHIOPIC SYLLABLE KXWI' : 4802, + 'ETHIOPIC SYLLABLE LA' : 4616, + 'ETHIOPIC SYLLABLE LAA' : 4619, + 'ETHIOPIC SYLLABLE LE' : 4621, + 'ETHIOPIC SYLLABLE LEE' : 4620, + 'ETHIOPIC SYLLABLE LI' : 4618, + 'ETHIOPIC SYLLABLE LO' : 4622, + 'ETHIOPIC SYLLABLE LU' : 4617, + 'ETHIOPIC SYLLABLE LWA' : 4623, + 'ETHIOPIC SYLLABLE MA' : 4632, + 'ETHIOPIC SYLLABLE MAA' : 4635, + 'ETHIOPIC SYLLABLE ME' : 4637, + 'ETHIOPIC SYLLABLE MEE' : 4636, + 'ETHIOPIC SYLLABLE MI' : 4634, + 'ETHIOPIC SYLLABLE MO' : 4638, + 'ETHIOPIC SYLLABLE MU' : 4633, + 'ETHIOPIC SYLLABLE MWA' : 4639, + 'ETHIOPIC SYLLABLE MYA' : 4953, + 'ETHIOPIC SYLLABLE NA' : 4752, + 'ETHIOPIC SYLLABLE NAA' : 4755, + 'ETHIOPIC SYLLABLE NE' : 4757, + 'ETHIOPIC SYLLABLE NEE' : 4756, + 'ETHIOPIC SYLLABLE NI' : 4754, + 'ETHIOPIC SYLLABLE NO' : 4758, + 'ETHIOPIC SYLLABLE NU' : 4753, + 'ETHIOPIC SYLLABLE NWA' : 4759, + 'ETHIOPIC SYLLABLE NYA' : 4760, + 'ETHIOPIC SYLLABLE NYAA' : 4763, + 'ETHIOPIC SYLLABLE NYE' : 4765, + 'ETHIOPIC SYLLABLE NYEE' : 4764, + 'ETHIOPIC SYLLABLE NYI' : 4762, + 'ETHIOPIC SYLLABLE NYO' : 4766, + 'ETHIOPIC SYLLABLE NYU' : 4761, + 'ETHIOPIC SYLLABLE NYWA' : 4767, + 'ETHIOPIC SYLLABLE PA' : 4944, + 'ETHIOPIC SYLLABLE PAA' : 4947, + 'ETHIOPIC SYLLABLE PE' : 4949, + 'ETHIOPIC SYLLABLE PEE' : 4948, + 'ETHIOPIC SYLLABLE PHA' : 4912, + 'ETHIOPIC SYLLABLE PHAA' : 4915, + 'ETHIOPIC SYLLABLE PHARYNGEAL A' : 4816, + 'ETHIOPIC SYLLABLE PHARYNGEAL AA' : 4819, + 'ETHIOPIC SYLLABLE PHARYNGEAL E' : 4821, + 'ETHIOPIC SYLLABLE PHARYNGEAL EE' : 4820, + 'ETHIOPIC SYLLABLE PHARYNGEAL I' : 4818, + 'ETHIOPIC SYLLABLE PHARYNGEAL O' : 4822, + 'ETHIOPIC SYLLABLE PHARYNGEAL U' : 4817, + 'ETHIOPIC SYLLABLE PHE' : 4917, + 'ETHIOPIC SYLLABLE PHEE' : 4916, + 'ETHIOPIC SYLLABLE PHI' : 4914, + 'ETHIOPIC SYLLABLE PHO' : 4918, + 'ETHIOPIC SYLLABLE PHU' : 4913, + 'ETHIOPIC SYLLABLE PHWA' : 4919, + 'ETHIOPIC SYLLABLE PI' : 4946, + 'ETHIOPIC SYLLABLE PO' : 4950, + 'ETHIOPIC SYLLABLE PU' : 4945, + 'ETHIOPIC SYLLABLE PWA' : 4951, + 'ETHIOPIC SYLLABLE QA' : 4672, + 'ETHIOPIC SYLLABLE QAA' : 4675, + 'ETHIOPIC SYLLABLE QE' : 4677, + 'ETHIOPIC SYLLABLE QEE' : 4676, + 'ETHIOPIC SYLLABLE QHA' : 4688, + 'ETHIOPIC SYLLABLE QHAA' : 4691, + 'ETHIOPIC SYLLABLE QHE' : 4693, + 'ETHIOPIC SYLLABLE QHEE' : 4692, + 'ETHIOPIC SYLLABLE QHI' : 4690, + 'ETHIOPIC SYLLABLE QHO' : 4694, + 'ETHIOPIC SYLLABLE QHU' : 4689, + 'ETHIOPIC SYLLABLE QHWA' : 4696, + 'ETHIOPIC SYLLABLE QHWAA' : 4699, + 'ETHIOPIC SYLLABLE QHWE' : 4701, + 'ETHIOPIC SYLLABLE QHWEE' : 4700, + 'ETHIOPIC SYLLABLE QHWI' : 4698, + 'ETHIOPIC SYLLABLE QI' : 4674, + 'ETHIOPIC SYLLABLE QO' : 4678, + 'ETHIOPIC SYLLABLE QU' : 4673, + 'ETHIOPIC SYLLABLE QWA' : 4680, + 'ETHIOPIC SYLLABLE QWAA' : 4683, + 'ETHIOPIC SYLLABLE QWE' : 4685, + 'ETHIOPIC SYLLABLE QWEE' : 4684, + 'ETHIOPIC SYLLABLE QWI' : 4682, + 'ETHIOPIC SYLLABLE RA' : 4648, + 'ETHIOPIC SYLLABLE RAA' : 4651, + 'ETHIOPIC SYLLABLE RE' : 4653, + 'ETHIOPIC SYLLABLE REE' : 4652, + 'ETHIOPIC SYLLABLE RI' : 4650, + 'ETHIOPIC SYLLABLE RO' : 4654, + 'ETHIOPIC SYLLABLE RU' : 4649, + 'ETHIOPIC SYLLABLE RWA' : 4655, + 'ETHIOPIC SYLLABLE RYA' : 4952, + 'ETHIOPIC SYLLABLE SA' : 4656, + 'ETHIOPIC SYLLABLE SAA' : 4659, + 'ETHIOPIC SYLLABLE SE' : 4661, + 'ETHIOPIC SYLLABLE SEE' : 4660, + 'ETHIOPIC SYLLABLE SHA' : 4664, + 'ETHIOPIC SYLLABLE SHAA' : 4667, + 'ETHIOPIC SYLLABLE SHE' : 4669, + 'ETHIOPIC SYLLABLE SHEE' : 4668, + 'ETHIOPIC SYLLABLE SHI' : 4666, + 'ETHIOPIC SYLLABLE SHO' : 4670, + 'ETHIOPIC SYLLABLE SHU' : 4665, + 'ETHIOPIC SYLLABLE SHWA' : 4671, + 'ETHIOPIC SYLLABLE SI' : 4658, + 'ETHIOPIC SYLLABLE SO' : 4662, + 'ETHIOPIC SYLLABLE SU' : 4657, + 'ETHIOPIC SYLLABLE SWA' : 4663, + 'ETHIOPIC SYLLABLE SZA' : 4640, + 'ETHIOPIC SYLLABLE SZAA' : 4643, + 'ETHIOPIC SYLLABLE SZE' : 4645, + 'ETHIOPIC SYLLABLE SZEE' : 4644, + 'ETHIOPIC SYLLABLE SZI' : 4642, + 'ETHIOPIC SYLLABLE SZO' : 4646, + 'ETHIOPIC SYLLABLE SZU' : 4641, + 'ETHIOPIC SYLLABLE SZWA' : 4647, + 'ETHIOPIC SYLLABLE TA' : 4720, + 'ETHIOPIC SYLLABLE TAA' : 4723, + 'ETHIOPIC SYLLABLE TE' : 4725, + 'ETHIOPIC SYLLABLE TEE' : 4724, + 'ETHIOPIC SYLLABLE THA' : 4896, + 'ETHIOPIC SYLLABLE THAA' : 4899, + 'ETHIOPIC SYLLABLE THE' : 4901, + 'ETHIOPIC SYLLABLE THEE' : 4900, + 'ETHIOPIC SYLLABLE THI' : 4898, + 'ETHIOPIC SYLLABLE THO' : 4902, + 'ETHIOPIC SYLLABLE THU' : 4897, + 'ETHIOPIC SYLLABLE THWA' : 4903, + 'ETHIOPIC SYLLABLE TI' : 4722, + 'ETHIOPIC SYLLABLE TO' : 4726, + 'ETHIOPIC SYLLABLE TSA' : 4920, + 'ETHIOPIC SYLLABLE TSAA' : 4923, + 'ETHIOPIC SYLLABLE TSE' : 4925, + 'ETHIOPIC SYLLABLE TSEE' : 4924, + 'ETHIOPIC SYLLABLE TSI' : 4922, + 'ETHIOPIC SYLLABLE TSO' : 4926, + 'ETHIOPIC SYLLABLE TSU' : 4921, + 'ETHIOPIC SYLLABLE TSWA' : 4927, + 'ETHIOPIC SYLLABLE TU' : 4721, + 'ETHIOPIC SYLLABLE TWA' : 4727, + 'ETHIOPIC SYLLABLE TZA' : 4928, + 'ETHIOPIC SYLLABLE TZAA' : 4931, + 'ETHIOPIC SYLLABLE TZE' : 4933, + 'ETHIOPIC SYLLABLE TZEE' : 4932, + 'ETHIOPIC SYLLABLE TZI' : 4930, + 'ETHIOPIC SYLLABLE TZO' : 4934, + 'ETHIOPIC SYLLABLE TZU' : 4929, + 'ETHIOPIC SYLLABLE VA' : 4712, + 'ETHIOPIC SYLLABLE VAA' : 4715, + 'ETHIOPIC SYLLABLE VE' : 4717, + 'ETHIOPIC SYLLABLE VEE' : 4716, + 'ETHIOPIC SYLLABLE VI' : 4714, + 'ETHIOPIC SYLLABLE VO' : 4718, + 'ETHIOPIC SYLLABLE VU' : 4713, + 'ETHIOPIC SYLLABLE VWA' : 4719, + 'ETHIOPIC SYLLABLE WA' : 4808, + 'ETHIOPIC SYLLABLE WAA' : 4811, + 'ETHIOPIC SYLLABLE WE' : 4813, + 'ETHIOPIC SYLLABLE WEE' : 4812, + 'ETHIOPIC SYLLABLE WI' : 4810, + 'ETHIOPIC SYLLABLE WO' : 4814, + 'ETHIOPIC SYLLABLE WU' : 4809, + 'ETHIOPIC SYLLABLE XA' : 4736, + 'ETHIOPIC SYLLABLE XAA' : 4739, + 'ETHIOPIC SYLLABLE XE' : 4741, + 'ETHIOPIC SYLLABLE XEE' : 4740, + 'ETHIOPIC SYLLABLE XI' : 4738, + 'ETHIOPIC SYLLABLE XO' : 4742, + 'ETHIOPIC SYLLABLE XU' : 4737, + 'ETHIOPIC SYLLABLE XWA' : 4744, + 'ETHIOPIC SYLLABLE XWAA' : 4747, + 'ETHIOPIC SYLLABLE XWE' : 4749, + 'ETHIOPIC SYLLABLE XWEE' : 4748, + 'ETHIOPIC SYLLABLE XWI' : 4746, + 'ETHIOPIC SYLLABLE YA' : 4840, + 'ETHIOPIC SYLLABLE YAA' : 4843, + 'ETHIOPIC SYLLABLE YE' : 4845, + 'ETHIOPIC SYLLABLE YEE' : 4844, + 'ETHIOPIC SYLLABLE YI' : 4842, + 'ETHIOPIC SYLLABLE YO' : 4846, + 'ETHIOPIC SYLLABLE YU' : 4841, + 'ETHIOPIC SYLLABLE ZA' : 4824, + 'ETHIOPIC SYLLABLE ZAA' : 4827, + 'ETHIOPIC SYLLABLE ZE' : 4829, + 'ETHIOPIC SYLLABLE ZEE' : 4828, + 'ETHIOPIC SYLLABLE ZHA' : 4832, + 'ETHIOPIC SYLLABLE ZHAA' : 4835, + 'ETHIOPIC SYLLABLE ZHE' : 4837, + 'ETHIOPIC SYLLABLE ZHEE' : 4836, + 'ETHIOPIC SYLLABLE ZHI' : 4834, + 'ETHIOPIC SYLLABLE ZHO' : 4838, + 'ETHIOPIC SYLLABLE ZHU' : 4833, + 'ETHIOPIC SYLLABLE ZHWA' : 4839, + 'ETHIOPIC SYLLABLE ZI' : 4826, + 'ETHIOPIC SYLLABLE ZO' : 4830, + 'ETHIOPIC SYLLABLE ZU' : 4825, + 'ETHIOPIC SYLLABLE ZWA' : 4831, + 'ETHIOPIC WORDSPACE' : 4961, + 'EULER CONSTANT' : 8455, + 'EURO SIGN' : 8364, + 'EURO-CURRENCY SIGN' : 8352, + 'EXCESS' : 8761, + 'EXCLAMATION MARK' : 33, + 'EXCLAMATION QUESTION MARK' : 8265, + 'EXTENDED ARABIC-INDIC DIGIT EIGHT' : 1784, + 'EXTENDED ARABIC-INDIC DIGIT FIVE' : 1781, + 'EXTENDED ARABIC-INDIC DIGIT FOUR' : 1780, + 'EXTENDED ARABIC-INDIC DIGIT NINE' : 1785, + 'EXTENDED ARABIC-INDIC DIGIT ONE' : 1777, + 'EXTENDED ARABIC-INDIC DIGIT SEVEN' : 1783, + 'EXTENDED ARABIC-INDIC DIGIT SIX' : 1782, + 'EXTENDED ARABIC-INDIC DIGIT THREE' : 1779, + 'EXTENDED ARABIC-INDIC DIGIT TWO' : 1778, + 'EXTENDED ARABIC-INDIC DIGIT ZERO' : 1776, + 'FALLING DIAGONAL CROSSING NORTH EAST ARROW' : 10543, + 'FALLING DIAGONAL CROSSING RISING DIAGONAL' : 10540, + 'FARSI SYMBOL' : 9771, + 'FEMALE SIGN' : 9792, + 'FEMININE ORDINAL INDICATOR' : 170, + 'FIGURE DASH' : 8210, + 'FIGURE SPACE' : 8199, + 'FINITE PART INTEGRAL' : 10765, + 'FIRST QUARTER MOON' : 9789, + 'FISHEYE' : 9673, + 'FLORAL HEART' : 10086, + 'FOR ALL' : 8704, + 'FORCES' : 8873, + 'FORKING' : 10972, + 'FOUR BALLOON-SPOKED ASTERISK' : 10019, + 'FOUR CLUB-SPOKED ASTERISK' : 10021, + 'FOUR TEARDROP-SPOKED ASTERISK' : 10018, + 'FOUR-PER-EM SPACE' : 8197, + 'FOURTH ROOT' : 8732, + 'FRACTION NUMERATOR ONE' : 8543, + 'FRACTION SLASH' : 8260, + 'FRENCH FRANC SIGN' : 8355, + 'FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW' : 10156, + 'FROWN' : 8994, + 'FULL BLOCK' : 9608, + 'FULL OUTER JOIN' : 10199, + 'FULL STOP' : 46, + 'FULLWIDTH AMPERSAND' : 65286, + 'FULLWIDTH APOSTROPHE' : 65287, + 'FULLWIDTH ASTERISK' : 65290, + 'FULLWIDTH BROKEN BAR' : 65508, + 'FULLWIDTH CENT SIGN' : 65504, + 'FULLWIDTH CIRCUMFLEX ACCENT' : 65342, + 'FULLWIDTH COLON' : 65306, + 'FULLWIDTH COMMA' : 65292, + 'FULLWIDTH COMMERCIAL AT' : 65312, + 'FULLWIDTH DIGIT EIGHT' : 65304, + 'FULLWIDTH DIGIT FIVE' : 65301, + 'FULLWIDTH DIGIT FOUR' : 65300, + 'FULLWIDTH DIGIT NINE' : 65305, + 'FULLWIDTH DIGIT ONE' : 65297, + 'FULLWIDTH DIGIT SEVEN' : 65303, + 'FULLWIDTH DIGIT SIX' : 65302, + 'FULLWIDTH DIGIT THREE' : 65299, + 'FULLWIDTH DIGIT TWO' : 65298, + 'FULLWIDTH DIGIT ZERO' : 65296, + 'FULLWIDTH DOLLAR SIGN' : 65284, + 'FULLWIDTH EQUALS SIGN' : 65309, + 'FULLWIDTH EXCLAMATION MARK' : 65281, + 'FULLWIDTH FULL STOP' : 65294, + 'FULLWIDTH GRAVE ACCENT' : 65344, + 'FULLWIDTH GREATER-THAN SIGN' : 65310, + 'FULLWIDTH HYPHEN-MINUS' : 65293, + 'FULLWIDTH LATIN CAPITAL LETTER A' : 65313, + 'FULLWIDTH LATIN CAPITAL LETTER B' : 65314, + 'FULLWIDTH LATIN CAPITAL LETTER C' : 65315, + 'FULLWIDTH LATIN CAPITAL LETTER D' : 65316, + 'FULLWIDTH LATIN CAPITAL LETTER E' : 65317, + 'FULLWIDTH LATIN CAPITAL LETTER F' : 65318, + 'FULLWIDTH LATIN CAPITAL LETTER G' : 65319, + 'FULLWIDTH LATIN CAPITAL LETTER H' : 65320, + 'FULLWIDTH LATIN CAPITAL LETTER I' : 65321, + 'FULLWIDTH LATIN CAPITAL LETTER J' : 65322, + 'FULLWIDTH LATIN CAPITAL LETTER K' : 65323, + 'FULLWIDTH LATIN CAPITAL LETTER L' : 65324, + 'FULLWIDTH LATIN CAPITAL LETTER M' : 65325, + 'FULLWIDTH LATIN CAPITAL LETTER N' : 65326, + 'FULLWIDTH LATIN CAPITAL LETTER O' : 65327, + 'FULLWIDTH LATIN CAPITAL LETTER P' : 65328, + 'FULLWIDTH LATIN CAPITAL LETTER Q' : 65329, + 'FULLWIDTH LATIN CAPITAL LETTER R' : 65330, + 'FULLWIDTH LATIN CAPITAL LETTER S' : 65331, + 'FULLWIDTH LATIN CAPITAL LETTER T' : 65332, + 'FULLWIDTH LATIN CAPITAL LETTER U' : 65333, + 'FULLWIDTH LATIN CAPITAL LETTER V' : 65334, + 'FULLWIDTH LATIN CAPITAL LETTER W' : 65335, + 'FULLWIDTH LATIN CAPITAL LETTER X' : 65336, + 'FULLWIDTH LATIN CAPITAL LETTER Y' : 65337, + 'FULLWIDTH LATIN CAPITAL LETTER Z' : 65338, + 'FULLWIDTH LATIN SMALL LETTER A' : 65345, + 'FULLWIDTH LATIN SMALL LETTER B' : 65346, + 'FULLWIDTH LATIN SMALL LETTER C' : 65347, + 'FULLWIDTH LATIN SMALL LETTER D' : 65348, + 'FULLWIDTH LATIN SMALL LETTER E' : 65349, + 'FULLWIDTH LATIN SMALL LETTER F' : 65350, + 'FULLWIDTH LATIN SMALL LETTER G' : 65351, + 'FULLWIDTH LATIN SMALL LETTER H' : 65352, + 'FULLWIDTH LATIN SMALL LETTER I' : 65353, + 'FULLWIDTH LATIN SMALL LETTER J' : 65354, + 'FULLWIDTH LATIN SMALL LETTER K' : 65355, + 'FULLWIDTH LATIN SMALL LETTER L' : 65356, + 'FULLWIDTH LATIN SMALL LETTER M' : 65357, + 'FULLWIDTH LATIN SMALL LETTER N' : 65358, + 'FULLWIDTH LATIN SMALL LETTER O' : 65359, + 'FULLWIDTH LATIN SMALL LETTER P' : 65360, + 'FULLWIDTH LATIN SMALL LETTER Q' : 65361, + 'FULLWIDTH LATIN SMALL LETTER R' : 65362, + 'FULLWIDTH LATIN SMALL LETTER S' : 65363, + 'FULLWIDTH LATIN SMALL LETTER T' : 65364, + 'FULLWIDTH LATIN SMALL LETTER U' : 65365, + 'FULLWIDTH LATIN SMALL LETTER V' : 65366, + 'FULLWIDTH LATIN SMALL LETTER W' : 65367, + 'FULLWIDTH LATIN SMALL LETTER X' : 65368, + 'FULLWIDTH LATIN SMALL LETTER Y' : 65369, + 'FULLWIDTH LATIN SMALL LETTER Z' : 65370, + 'FULLWIDTH LEFT CURLY BRACKET' : 65371, + 'FULLWIDTH LEFT PARENTHESIS' : 65288, + 'FULLWIDTH LEFT SQUARE BRACKET' : 65339, + 'FULLWIDTH LEFT WHITE PARENTHESIS' : 65375, + 'FULLWIDTH LESS-THAN SIGN' : 65308, + 'FULLWIDTH LOW LINE' : 65343, + 'FULLWIDTH MACRON' : 65507, + 'FULLWIDTH NOT SIGN' : 65506, + 'FULLWIDTH NUMBER SIGN' : 65283, + 'FULLWIDTH PERCENT SIGN' : 65285, + 'FULLWIDTH PLUS SIGN' : 65291, + 'FULLWIDTH POUND SIGN' : 65505, + 'FULLWIDTH QUESTION MARK' : 65311, + 'FULLWIDTH QUOTATION MARK' : 65282, + 'FULLWIDTH REVERSE SOLIDUS' : 65340, + 'FULLWIDTH RIGHT CURLY BRACKET' : 65373, + 'FULLWIDTH RIGHT PARENTHESIS' : 65289, + 'FULLWIDTH RIGHT SQUARE BRACKET' : 65341, + 'FULLWIDTH RIGHT WHITE PARENTHESIS' : 65376, + 'FULLWIDTH SEMICOLON' : 65307, + 'FULLWIDTH SOLIDUS' : 65295, + 'FULLWIDTH TILDE' : 65374, + 'FULLWIDTH VERTICAL LINE' : 65372, + 'FULLWIDTH WON SIGN' : 65510, + 'FULLWIDTH YEN SIGN' : 65509, + 'FUNCTION APPLICATION' : 8289, + 'GEMINI' : 9802, + 'GEOMETRIC PROPORTION' : 8762, + 'GEOMETRICALLY EQUAL TO' : 8785, + 'GEOMETRICALLY EQUIVALENT TO' : 8782, + 'GEORGIAN CAPITAL LETTER AN' : 4256, + 'GEORGIAN CAPITAL LETTER BAN' : 4257, + 'GEORGIAN CAPITAL LETTER CAN' : 4282, + 'GEORGIAN CAPITAL LETTER CHAR' : 4285, + 'GEORGIAN CAPITAL LETTER CHIN' : 4281, + 'GEORGIAN CAPITAL LETTER CIL' : 4284, + 'GEORGIAN CAPITAL LETTER DON' : 4259, + 'GEORGIAN CAPITAL LETTER EN' : 4260, + 'GEORGIAN CAPITAL LETTER GAN' : 4258, + 'GEORGIAN CAPITAL LETTER GHAN' : 4278, + 'GEORGIAN CAPITAL LETTER HAE' : 4288, + 'GEORGIAN CAPITAL LETTER HAR' : 4292, + 'GEORGIAN CAPITAL LETTER HE' : 4289, + 'GEORGIAN CAPITAL LETTER HIE' : 4290, + 'GEORGIAN CAPITAL LETTER HOE' : 4293, + 'GEORGIAN CAPITAL LETTER IN' : 4264, + 'GEORGIAN CAPITAL LETTER JHAN' : 4287, + 'GEORGIAN CAPITAL LETTER JIL' : 4283, + 'GEORGIAN CAPITAL LETTER KAN' : 4265, + 'GEORGIAN CAPITAL LETTER KHAR' : 4277, + 'GEORGIAN CAPITAL LETTER LAS' : 4266, + 'GEORGIAN CAPITAL LETTER MAN' : 4267, + 'GEORGIAN CAPITAL LETTER NAR' : 4268, + 'GEORGIAN CAPITAL LETTER ON' : 4269, + 'GEORGIAN CAPITAL LETTER PAR' : 4270, + 'GEORGIAN CAPITAL LETTER PHAR' : 4276, + 'GEORGIAN CAPITAL LETTER QAR' : 4279, + 'GEORGIAN CAPITAL LETTER RAE' : 4272, + 'GEORGIAN CAPITAL LETTER SAN' : 4273, + 'GEORGIAN CAPITAL LETTER SHIN' : 4280, + 'GEORGIAN CAPITAL LETTER TAN' : 4263, + 'GEORGIAN CAPITAL LETTER TAR' : 4274, + 'GEORGIAN CAPITAL LETTER UN' : 4275, + 'GEORGIAN CAPITAL LETTER VIN' : 4261, + 'GEORGIAN CAPITAL LETTER WE' : 4291, + 'GEORGIAN CAPITAL LETTER XAN' : 4286, + 'GEORGIAN CAPITAL LETTER ZEN' : 4262, + 'GEORGIAN CAPITAL LETTER ZHAR' : 4271, + 'GEORGIAN LETTER AN' : 4304, + 'GEORGIAN LETTER BAN' : 4305, + 'GEORGIAN LETTER CAN' : 4330, + 'GEORGIAN LETTER CHAR' : 4333, + 'GEORGIAN LETTER CHIN' : 4329, + 'GEORGIAN LETTER CIL' : 4332, + 'GEORGIAN LETTER DON' : 4307, + 'GEORGIAN LETTER ELIFI' : 4344, + 'GEORGIAN LETTER EN' : 4308, + 'GEORGIAN LETTER FI' : 4342, + 'GEORGIAN LETTER GAN' : 4306, + 'GEORGIAN LETTER GHAN' : 4326, + 'GEORGIAN LETTER HAE' : 4336, + 'GEORGIAN LETTER HAR' : 4340, + 'GEORGIAN LETTER HE' : 4337, + 'GEORGIAN LETTER HIE' : 4338, + 'GEORGIAN LETTER HOE' : 4341, + 'GEORGIAN LETTER IN' : 4312, + 'GEORGIAN LETTER JHAN' : 4335, + 'GEORGIAN LETTER JIL' : 4331, + 'GEORGIAN LETTER KAN' : 4313, + 'GEORGIAN LETTER KHAR' : 4325, + 'GEORGIAN LETTER LAS' : 4314, + 'GEORGIAN LETTER MAN' : 4315, + 'GEORGIAN LETTER NAR' : 4316, + 'GEORGIAN LETTER ON' : 4317, + 'GEORGIAN LETTER PAR' : 4318, + 'GEORGIAN LETTER PHAR' : 4324, + 'GEORGIAN LETTER QAR' : 4327, + 'GEORGIAN LETTER RAE' : 4320, + 'GEORGIAN LETTER SAN' : 4321, + 'GEORGIAN LETTER SHIN' : 4328, + 'GEORGIAN LETTER TAN' : 4311, + 'GEORGIAN LETTER TAR' : 4322, + 'GEORGIAN LETTER UN' : 4323, + 'GEORGIAN LETTER VIN' : 4309, + 'GEORGIAN LETTER WE' : 4339, + 'GEORGIAN LETTER XAN' : 4334, + 'GEORGIAN LETTER YN' : 4343, + 'GEORGIAN LETTER ZEN' : 4310, + 'GEORGIAN LETTER ZHAR' : 4319, + 'GEORGIAN PARAGRAPH SEPARATOR' : 4347, + 'GERMAN PENNY SIGN' : 8368, + 'GETA MARK' : 12307, + 'GIMEL SYMBOL' : 8503, + 'GLEICH STARK' : 10726, + 'GOTHIC LETTER AHSA' : 66352, + 'GOTHIC LETTER AIHVUS' : 66356, + 'GOTHIC LETTER BAIRKAN' : 66353, + 'GOTHIC LETTER DAGS' : 66355, + 'GOTHIC LETTER EIS' : 66361, + 'GOTHIC LETTER FAIHU' : 66374, + 'GOTHIC LETTER GIBA' : 66354, + 'GOTHIC LETTER HAGL' : 66359, + 'GOTHIC LETTER HWAIR' : 66376, + 'GOTHIC LETTER IGGWS' : 66375, + 'GOTHIC LETTER IUJA' : 66358, + 'GOTHIC LETTER JER' : 66366, + 'GOTHIC LETTER KUSMA' : 66362, + 'GOTHIC LETTER LAGUS' : 66363, + 'GOTHIC LETTER MANNA' : 66364, + 'GOTHIC LETTER NAUTHS' : 66365, + 'GOTHIC LETTER NINE HUNDRED' : 66378, + 'GOTHIC LETTER NINETY' : 66369, + 'GOTHIC LETTER OTHAL' : 66377, + 'GOTHIC LETTER PAIRTHRA' : 66368, + 'GOTHIC LETTER QAIRTHRA' : 66357, + 'GOTHIC LETTER RAIDA' : 66370, + 'GOTHIC LETTER SAUIL' : 66371, + 'GOTHIC LETTER TEIWS' : 66372, + 'GOTHIC LETTER THIUTH' : 66360, + 'GOTHIC LETTER URUS' : 66367, + 'GOTHIC LETTER WINJA' : 66373, + 'GRAVE ACCENT' : 96, + 'GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN' : 10892, + 'GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL' : 10898, + 'GREATER-THAN ABOVE RIGHTWARDS ARROW' : 10616, + 'GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN' : 10896, + 'GREATER-THAN ABOVE SIMILAR OR EQUAL' : 10894, + 'GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL' : 10900, + 'GREATER-THAN AND NOT APPROXIMATE' : 10890, + 'GREATER-THAN AND SINGLE-LINE NOT EQUAL TO' : 10888, + 'GREATER-THAN BESIDE LESS-THAN' : 10917, + 'GREATER-THAN BUT NOT EQUAL TO' : 8809, + 'GREATER-THAN BUT NOT EQUIVALENT TO' : 8935, + 'GREATER-THAN CLOSED BY CURVE' : 10919, + 'GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL' : 10921, + 'GREATER-THAN EQUAL TO OR LESS-THAN' : 8923, + 'GREATER-THAN OR APPROXIMATE' : 10886, + 'GREATER-THAN OR EQUAL TO' : 8805, + 'GREATER-THAN OR EQUIVALENT TO' : 8819, + 'GREATER-THAN OR LESS-THAN' : 8823, + 'GREATER-THAN OR SLANTED EQUAL TO' : 10878, + 'GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE' : 10882, + 'GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT' : 10884, + 'GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE' : 10880, + 'GREATER-THAN OVER EQUAL TO' : 8807, + 'GREATER-THAN OVERLAPPING LESS-THAN' : 10916, + 'GREATER-THAN SIGN' : 62, + 'GREATER-THAN WITH CIRCLE INSIDE' : 10874, + 'GREATER-THAN WITH DOT' : 8919, + 'GREATER-THAN WITH QUESTION MARK ABOVE' : 10876, + 'GREEK ANO TELEIA' : 903, + 'GREEK BETA SYMBOL' : 976, + 'GREEK CAPITAL LETTER ALPHA' : 913, + 'GREEK CAPITAL LETTER ALPHA WITH DASIA' : 7945, + 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA' : 7949, + 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI' : 8077, + 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI' : 7951, + 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI' : 8079, + 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI' : 8073, + 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA' : 7947, + 'GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI' : 8075, + 'GREEK CAPITAL LETTER ALPHA WITH MACRON' : 8121, + 'GREEK CAPITAL LETTER ALPHA WITH OXIA' : 8123, + 'GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI' : 8124, + 'GREEK CAPITAL LETTER ALPHA WITH PSILI' : 7944, + 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA' : 7948, + 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI' : 8076, + 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI' : 7950, + 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI' : 8078, + 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI' : 8072, + 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA' : 7946, + 'GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI' : 8074, + 'GREEK CAPITAL LETTER ALPHA WITH TONOS' : 902, + 'GREEK CAPITAL LETTER ALPHA WITH VARIA' : 8122, + 'GREEK CAPITAL LETTER ALPHA WITH VRACHY' : 8120, + 'GREEK CAPITAL LETTER BETA' : 914, + 'GREEK CAPITAL LETTER CHI' : 935, + 'GREEK CAPITAL LETTER DELTA' : 916, + 'GREEK CAPITAL LETTER EPSILON' : 917, + 'GREEK CAPITAL LETTER EPSILON WITH DASIA' : 7961, + 'GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA' : 7965, + 'GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA' : 7963, + 'GREEK CAPITAL LETTER EPSILON WITH OXIA' : 8137, + 'GREEK CAPITAL LETTER EPSILON WITH PSILI' : 7960, + 'GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA' : 7964, + 'GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA' : 7962, + 'GREEK CAPITAL LETTER EPSILON WITH TONOS' : 904, + 'GREEK CAPITAL LETTER EPSILON WITH VARIA' : 8136, + 'GREEK CAPITAL LETTER ETA' : 919, + 'GREEK CAPITAL LETTER ETA WITH DASIA' : 7977, + 'GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA' : 7981, + 'GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI' : 8093, + 'GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI' : 7983, + 'GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI' : 8095, + 'GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI' : 8089, + 'GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA' : 7979, + 'GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI' : 8091, + 'GREEK CAPITAL LETTER ETA WITH OXIA' : 8139, + 'GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI' : 8140, + 'GREEK CAPITAL LETTER ETA WITH PSILI' : 7976, + 'GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA' : 7980, + 'GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI' : 8092, + 'GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI' : 7982, + 'GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI' : 8094, + 'GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI' : 8088, + 'GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA' : 7978, + 'GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI' : 8090, + 'GREEK CAPITAL LETTER ETA WITH TONOS' : 905, + 'GREEK CAPITAL LETTER ETA WITH VARIA' : 8138, + 'GREEK CAPITAL LETTER GAMMA' : 915, + 'GREEK CAPITAL LETTER IOTA' : 921, + 'GREEK CAPITAL LETTER IOTA WITH DASIA' : 7993, + 'GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA' : 7997, + 'GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI' : 7999, + 'GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA' : 7995, + 'GREEK CAPITAL LETTER IOTA WITH DIALYTIKA' : 938, + 'GREEK CAPITAL LETTER IOTA WITH MACRON' : 8153, + 'GREEK CAPITAL LETTER IOTA WITH OXIA' : 8155, + 'GREEK CAPITAL LETTER IOTA WITH PSILI' : 7992, + 'GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA' : 7996, + 'GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI' : 7998, + 'GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA' : 7994, + 'GREEK CAPITAL LETTER IOTA WITH TONOS' : 906, + 'GREEK CAPITAL LETTER IOTA WITH VARIA' : 8154, + 'GREEK CAPITAL LETTER IOTA WITH VRACHY' : 8152, + 'GREEK CAPITAL LETTER KAPPA' : 922, + 'GREEK CAPITAL LETTER LAMDA' : 923, + 'GREEK CAPITAL LETTER MU' : 924, + 'GREEK CAPITAL LETTER NU' : 925, + 'GREEK CAPITAL LETTER OMEGA' : 937, + 'GREEK CAPITAL LETTER OMEGA WITH DASIA' : 8041, + 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA' : 8045, + 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI' : 8109, + 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI' : 8047, + 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI' : 8111, + 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI' : 8105, + 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA' : 8043, + 'GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI' : 8107, + 'GREEK CAPITAL LETTER OMEGA WITH OXIA' : 8187, + 'GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI' : 8188, + 'GREEK CAPITAL LETTER OMEGA WITH PSILI' : 8040, + 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA' : 8044, + 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI' : 8108, + 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI' : 8046, + 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI' : 8110, + 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI' : 8104, + 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA' : 8042, + 'GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI' : 8106, + 'GREEK CAPITAL LETTER OMEGA WITH TONOS' : 911, + 'GREEK CAPITAL LETTER OMEGA WITH VARIA' : 8186, + 'GREEK CAPITAL LETTER OMICRON' : 927, + 'GREEK CAPITAL LETTER OMICRON WITH DASIA' : 8009, + 'GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA' : 8013, + 'GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA' : 8011, + 'GREEK CAPITAL LETTER OMICRON WITH OXIA' : 8185, + 'GREEK CAPITAL LETTER OMICRON WITH PSILI' : 8008, + 'GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA' : 8012, + 'GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA' : 8010, + 'GREEK CAPITAL LETTER OMICRON WITH TONOS' : 908, + 'GREEK CAPITAL LETTER OMICRON WITH VARIA' : 8184, + 'GREEK CAPITAL LETTER PHI' : 934, + 'GREEK CAPITAL LETTER PI' : 928, + 'GREEK CAPITAL LETTER PSI' : 936, + 'GREEK CAPITAL LETTER RHO' : 929, + 'GREEK CAPITAL LETTER RHO WITH DASIA' : 8172, + 'GREEK CAPITAL LETTER SIGMA' : 931, + 'GREEK CAPITAL LETTER TAU' : 932, + 'GREEK CAPITAL LETTER THETA' : 920, + 'GREEK CAPITAL LETTER UPSILON' : 933, + 'GREEK CAPITAL LETTER UPSILON WITH DASIA' : 8025, + 'GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA' : 8029, + 'GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI' : 8031, + 'GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA' : 8027, + 'GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA' : 939, + 'GREEK CAPITAL LETTER UPSILON WITH MACRON' : 8169, + 'GREEK CAPITAL LETTER UPSILON WITH OXIA' : 8171, + 'GREEK CAPITAL LETTER UPSILON WITH TONOS' : 910, + 'GREEK CAPITAL LETTER UPSILON WITH VARIA' : 8170, + 'GREEK CAPITAL LETTER UPSILON WITH VRACHY' : 8168, + 'GREEK CAPITAL LETTER XI' : 926, + 'GREEK CAPITAL LETTER ZETA' : 918, + 'GREEK CAPITAL THETA SYMBOL' : 1012, + 'GREEK DASIA' : 8190, + 'GREEK DASIA AND OXIA' : 8158, + 'GREEK DASIA AND PERISPOMENI' : 8159, + 'GREEK DASIA AND VARIA' : 8157, + 'GREEK DIALYTIKA AND OXIA' : 8174, + 'GREEK DIALYTIKA AND PERISPOMENI' : 8129, + 'GREEK DIALYTIKA AND VARIA' : 8173, + 'GREEK DIALYTIKA TONOS' : 901, + 'GREEK KAI SYMBOL' : 983, + 'GREEK KAPPA SYMBOL' : 1008, + 'GREEK KORONIS' : 8125, + 'GREEK LETTER ARCHAIC KOPPA' : 984, + 'GREEK LETTER DIGAMMA' : 988, + 'GREEK LETTER KOPPA' : 990, + 'GREEK LETTER SAMPI' : 992, + 'GREEK LETTER STIGMA' : 986, + 'GREEK LETTER YOT' : 1011, + 'GREEK LOWER NUMERAL SIGN' : 885, + 'GREEK LUNATE EPSILON SYMBOL' : 1013, + 'GREEK LUNATE SIGMA SYMBOL' : 1010, + 'GREEK NUMERAL SIGN' : 884, + 'GREEK OXIA' : 8189, + 'GREEK PERISPOMENI' : 8128, + 'GREEK PHI SYMBOL' : 981, + 'GREEK PI SYMBOL' : 982, + 'GREEK PROSGEGRAMMENI' : 8126, + 'GREEK PSILI' : 8127, + 'GREEK PSILI AND OXIA' : 8142, + 'GREEK PSILI AND PERISPOMENI' : 8143, + 'GREEK PSILI AND VARIA' : 8141, + 'GREEK QUESTION MARK' : 894, + 'GREEK REVERSED LUNATE EPSILON SYMBOL' : 1014, + 'GREEK RHO SYMBOL' : 1009, + 'GREEK SMALL LETTER ALPHA' : 945, + 'GREEK SMALL LETTER ALPHA WITH DASIA' : 7937, + 'GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA' : 7941, + 'GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI' : 8069, + 'GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI' : 7943, + 'GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI' : 8071, + 'GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA' : 7939, + 'GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI' : 8067, + 'GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI' : 8065, + 'GREEK SMALL LETTER ALPHA WITH MACRON' : 8113, + 'GREEK SMALL LETTER ALPHA WITH OXIA' : 8049, + 'GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI' : 8116, + 'GREEK SMALL LETTER ALPHA WITH PERISPOMENI' : 8118, + 'GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI' : 8119, + 'GREEK SMALL LETTER ALPHA WITH PSILI' : 7936, + 'GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA' : 7940, + 'GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI' : 8068, + 'GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI' : 7942, + 'GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI' : 8070, + 'GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA' : 7938, + 'GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI' : 8066, + 'GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI' : 8064, + 'GREEK SMALL LETTER ALPHA WITH TONOS' : 940, + 'GREEK SMALL LETTER ALPHA WITH VARIA' : 8048, + 'GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI' : 8114, + 'GREEK SMALL LETTER ALPHA WITH VRACHY' : 8112, + 'GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI' : 8115, + 'GREEK SMALL LETTER ARCHAIC KOPPA' : 985, + 'GREEK SMALL LETTER BETA' : 946, + 'GREEK SMALL LETTER CHI' : 967, + 'GREEK SMALL LETTER DELTA' : 948, + 'GREEK SMALL LETTER DIGAMMA' : 989, + 'GREEK SMALL LETTER EPSILON' : 949, + 'GREEK SMALL LETTER EPSILON WITH DASIA' : 7953, + 'GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA' : 7957, + 'GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA' : 7955, + 'GREEK SMALL LETTER EPSILON WITH OXIA' : 8051, + 'GREEK SMALL LETTER EPSILON WITH PSILI' : 7952, + 'GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA' : 7956, + 'GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA' : 7954, + 'GREEK SMALL LETTER EPSILON WITH TONOS' : 941, + 'GREEK SMALL LETTER EPSILON WITH VARIA' : 8050, + 'GREEK SMALL LETTER ETA' : 951, + 'GREEK SMALL LETTER ETA WITH DASIA' : 7969, + 'GREEK SMALL LETTER ETA WITH DASIA AND OXIA' : 7973, + 'GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI' : 8085, + 'GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI' : 7975, + 'GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI' : 8087, + 'GREEK SMALL LETTER ETA WITH DASIA AND VARIA' : 7971, + 'GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI' : 8083, + 'GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI' : 8081, + 'GREEK SMALL LETTER ETA WITH OXIA' : 8053, + 'GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI' : 8132, + 'GREEK SMALL LETTER ETA WITH PERISPOMENI' : 8134, + 'GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI' : 8135, + 'GREEK SMALL LETTER ETA WITH PSILI' : 7968, + 'GREEK SMALL LETTER ETA WITH PSILI AND OXIA' : 7972, + 'GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI' : 8084, + 'GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI' : 7974, + 'GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI' : 8086, + 'GREEK SMALL LETTER ETA WITH PSILI AND VARIA' : 7970, + 'GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI' : 8082, + 'GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI' : 8080, + 'GREEK SMALL LETTER ETA WITH TONOS' : 942, + 'GREEK SMALL LETTER ETA WITH VARIA' : 8052, + 'GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI' : 8130, + 'GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI' : 8131, + 'GREEK SMALL LETTER FINAL SIGMA' : 962, + 'GREEK SMALL LETTER GAMMA' : 947, + 'GREEK SMALL LETTER IOTA' : 953, + 'GREEK SMALL LETTER IOTA WITH DASIA' : 7985, + 'GREEK SMALL LETTER IOTA WITH DASIA AND OXIA' : 7989, + 'GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI' : 7991, + 'GREEK SMALL LETTER IOTA WITH DASIA AND VARIA' : 7987, + 'GREEK SMALL LETTER IOTA WITH DIALYTIKA' : 970, + 'GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA' : 8147, + 'GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI' : 8151, + 'GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS' : 912, + 'GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA' : 8146, + 'GREEK SMALL LETTER IOTA WITH MACRON' : 8145, + 'GREEK SMALL LETTER IOTA WITH OXIA' : 8055, + 'GREEK SMALL LETTER IOTA WITH PERISPOMENI' : 8150, + 'GREEK SMALL LETTER IOTA WITH PSILI' : 7984, + 'GREEK SMALL LETTER IOTA WITH PSILI AND OXIA' : 7988, + 'GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI' : 7990, + 'GREEK SMALL LETTER IOTA WITH PSILI AND VARIA' : 7986, + 'GREEK SMALL LETTER IOTA WITH TONOS' : 943, + 'GREEK SMALL LETTER IOTA WITH VARIA' : 8054, + 'GREEK SMALL LETTER IOTA WITH VRACHY' : 8144, + 'GREEK SMALL LETTER KAPPA' : 954, + 'GREEK SMALL LETTER KOPPA' : 991, + 'GREEK SMALL LETTER LAMDA' : 955, + 'GREEK SMALL LETTER MU' : 956, + 'GREEK SMALL LETTER NU' : 957, + 'GREEK SMALL LETTER OMEGA' : 969, + 'GREEK SMALL LETTER OMEGA WITH DASIA' : 8033, + 'GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA' : 8037, + 'GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI' : 8101, + 'GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI' : 8039, + 'GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI' : 8103, + 'GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA' : 8035, + 'GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI' : 8099, + 'GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI' : 8097, + 'GREEK SMALL LETTER OMEGA WITH OXIA' : 8061, + 'GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI' : 8180, + 'GREEK SMALL LETTER OMEGA WITH PERISPOMENI' : 8182, + 'GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI' : 8183, + 'GREEK SMALL LETTER OMEGA WITH PSILI' : 8032, + 'GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA' : 8036, + 'GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI' : 8100, + 'GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI' : 8038, + 'GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI' : 8102, + 'GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA' : 8034, + 'GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI' : 8098, + 'GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI' : 8096, + 'GREEK SMALL LETTER OMEGA WITH TONOS' : 974, + 'GREEK SMALL LETTER OMEGA WITH VARIA' : 8060, + 'GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI' : 8178, + 'GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI' : 8179, + 'GREEK SMALL LETTER OMICRON' : 959, + 'GREEK SMALL LETTER OMICRON WITH DASIA' : 8001, + 'GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA' : 8005, + 'GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA' : 8003, + 'GREEK SMALL LETTER OMICRON WITH OXIA' : 8057, + 'GREEK SMALL LETTER OMICRON WITH PSILI' : 8000, + 'GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA' : 8004, + 'GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA' : 8002, + 'GREEK SMALL LETTER OMICRON WITH TONOS' : 972, + 'GREEK SMALL LETTER OMICRON WITH VARIA' : 8056, + 'GREEK SMALL LETTER PHI' : 966, + 'GREEK SMALL LETTER PI' : 960, + 'GREEK SMALL LETTER PSI' : 968, + 'GREEK SMALL LETTER RHO' : 961, + 'GREEK SMALL LETTER RHO WITH DASIA' : 8165, + 'GREEK SMALL LETTER RHO WITH PSILI' : 8164, + 'GREEK SMALL LETTER SAMPI' : 993, + 'GREEK SMALL LETTER SIGMA' : 963, + 'GREEK SMALL LETTER STIGMA' : 987, + 'GREEK SMALL LETTER TAU' : 964, + 'GREEK SMALL LETTER THETA' : 952, + 'GREEK SMALL LETTER UPSILON' : 965, + 'GREEK SMALL LETTER UPSILON WITH DASIA' : 8017, + 'GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA' : 8021, + 'GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI' : 8023, + 'GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA' : 8019, + 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA' : 971, + 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA' : 8163, + 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI' : 8167, + 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS' : 944, + 'GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA' : 8162, + 'GREEK SMALL LETTER UPSILON WITH MACRON' : 8161, + 'GREEK SMALL LETTER UPSILON WITH OXIA' : 8059, + 'GREEK SMALL LETTER UPSILON WITH PERISPOMENI' : 8166, + 'GREEK SMALL LETTER UPSILON WITH PSILI' : 8016, + 'GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA' : 8020, + 'GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI' : 8022, + 'GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA' : 8018, + 'GREEK SMALL LETTER UPSILON WITH TONOS' : 973, + 'GREEK SMALL LETTER UPSILON WITH VARIA' : 8058, + 'GREEK SMALL LETTER UPSILON WITH VRACHY' : 8160, + 'GREEK SMALL LETTER XI' : 958, + 'GREEK SMALL LETTER ZETA' : 950, + 'GREEK THETA SYMBOL' : 977, + 'GREEK TONOS' : 900, + 'GREEK UPSILON WITH ACUTE AND HOOK SYMBOL' : 979, + 'GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL' : 980, + 'GREEK UPSILON WITH HOOK SYMBOL' : 978, + 'GREEK VARIA' : 8175, + 'GREEK YPOGEGRAMMENI' : 890, + 'GUJARATI DIGIT EIGHT' : 2798, + 'GUJARATI DIGIT FIVE' : 2795, + 'GUJARATI DIGIT FOUR' : 2794, + 'GUJARATI DIGIT NINE' : 2799, + 'GUJARATI DIGIT ONE' : 2791, + 'GUJARATI DIGIT SEVEN' : 2797, + 'GUJARATI DIGIT SIX' : 2796, + 'GUJARATI DIGIT THREE' : 2793, + 'GUJARATI DIGIT TWO' : 2792, + 'GUJARATI DIGIT ZERO' : 2790, + 'GUJARATI LETTER A' : 2693, + 'GUJARATI LETTER AA' : 2694, + 'GUJARATI LETTER AI' : 2704, + 'GUJARATI LETTER AU' : 2708, + 'GUJARATI LETTER BA' : 2732, + 'GUJARATI LETTER BHA' : 2733, + 'GUJARATI LETTER CA' : 2714, + 'GUJARATI LETTER CHA' : 2715, + 'GUJARATI LETTER DA' : 2726, + 'GUJARATI LETTER DDA' : 2721, + 'GUJARATI LETTER DDHA' : 2722, + 'GUJARATI LETTER DHA' : 2727, + 'GUJARATI LETTER E' : 2703, + 'GUJARATI LETTER GA' : 2711, + 'GUJARATI LETTER GHA' : 2712, + 'GUJARATI LETTER HA' : 2745, + 'GUJARATI LETTER I' : 2695, + 'GUJARATI LETTER II' : 2696, + 'GUJARATI LETTER JA' : 2716, + 'GUJARATI LETTER JHA' : 2717, + 'GUJARATI LETTER KA' : 2709, + 'GUJARATI LETTER KHA' : 2710, + 'GUJARATI LETTER LA' : 2738, + 'GUJARATI LETTER LLA' : 2739, + 'GUJARATI LETTER MA' : 2734, + 'GUJARATI LETTER NA' : 2728, + 'GUJARATI LETTER NGA' : 2713, + 'GUJARATI LETTER NNA' : 2723, + 'GUJARATI LETTER NYA' : 2718, + 'GUJARATI LETTER O' : 2707, + 'GUJARATI LETTER PA' : 2730, + 'GUJARATI LETTER PHA' : 2731, + 'GUJARATI LETTER RA' : 2736, + 'GUJARATI LETTER SA' : 2744, + 'GUJARATI LETTER SHA' : 2742, + 'GUJARATI LETTER SSA' : 2743, + 'GUJARATI LETTER TA' : 2724, + 'GUJARATI LETTER THA' : 2725, + 'GUJARATI LETTER TTA' : 2719, + 'GUJARATI LETTER TTHA' : 2720, + 'GUJARATI LETTER U' : 2697, + 'GUJARATI LETTER UU' : 2698, + 'GUJARATI LETTER VA' : 2741, + 'GUJARATI LETTER VOCALIC R' : 2699, + 'GUJARATI LETTER VOCALIC RR' : 2784, + 'GUJARATI LETTER YA' : 2735, + 'GUJARATI OM' : 2768, + 'GUJARATI SIGN ANUSVARA' : 2690, + 'GUJARATI SIGN AVAGRAHA' : 2749, + 'GUJARATI SIGN CANDRABINDU' : 2689, + 'GUJARATI SIGN NUKTA' : 2748, + 'GUJARATI SIGN VIRAMA' : 2765, + 'GUJARATI SIGN VISARGA' : 2691, + 'GUJARATI VOWEL CANDRA E' : 2701, + 'GUJARATI VOWEL CANDRA O' : 2705, + 'GUJARATI VOWEL SIGN AA' : 2750, + 'GUJARATI VOWEL SIGN AI' : 2760, + 'GUJARATI VOWEL SIGN AU' : 2764, + 'GUJARATI VOWEL SIGN CANDRA E' : 2757, + 'GUJARATI VOWEL SIGN CANDRA O' : 2761, + 'GUJARATI VOWEL SIGN E' : 2759, + 'GUJARATI VOWEL SIGN I' : 2751, + 'GUJARATI VOWEL SIGN II' : 2752, + 'GUJARATI VOWEL SIGN O' : 2763, + 'GUJARATI VOWEL SIGN U' : 2753, + 'GUJARATI VOWEL SIGN UU' : 2754, + 'GUJARATI VOWEL SIGN VOCALIC R' : 2755, + 'GUJARATI VOWEL SIGN VOCALIC RR' : 2756, + 'GURMUKHI ADDAK' : 2673, + 'GURMUKHI DIGIT EIGHT' : 2670, + 'GURMUKHI DIGIT FIVE' : 2667, + 'GURMUKHI DIGIT FOUR' : 2666, + 'GURMUKHI DIGIT NINE' : 2671, + 'GURMUKHI DIGIT ONE' : 2663, + 'GURMUKHI DIGIT SEVEN' : 2669, + 'GURMUKHI DIGIT SIX' : 2668, + 'GURMUKHI DIGIT THREE' : 2665, + 'GURMUKHI DIGIT TWO' : 2664, + 'GURMUKHI DIGIT ZERO' : 2662, + 'GURMUKHI EK ONKAR' : 2676, + 'GURMUKHI IRI' : 2674, + 'GURMUKHI LETTER A' : 2565, + 'GURMUKHI LETTER AA' : 2566, + 'GURMUKHI LETTER AI' : 2576, + 'GURMUKHI LETTER AU' : 2580, + 'GURMUKHI LETTER BA' : 2604, + 'GURMUKHI LETTER BHA' : 2605, + 'GURMUKHI LETTER CA' : 2586, + 'GURMUKHI LETTER CHA' : 2587, + 'GURMUKHI LETTER DA' : 2598, + 'GURMUKHI LETTER DDA' : 2593, + 'GURMUKHI LETTER DDHA' : 2594, + 'GURMUKHI LETTER DHA' : 2599, + 'GURMUKHI LETTER EE' : 2575, + 'GURMUKHI LETTER FA' : 2654, + 'GURMUKHI LETTER GA' : 2583, + 'GURMUKHI LETTER GHA' : 2584, + 'GURMUKHI LETTER GHHA' : 2650, + 'GURMUKHI LETTER HA' : 2617, + 'GURMUKHI LETTER I' : 2567, + 'GURMUKHI LETTER II' : 2568, + 'GURMUKHI LETTER JA' : 2588, + 'GURMUKHI LETTER JHA' : 2589, + 'GURMUKHI LETTER KA' : 2581, + 'GURMUKHI LETTER KHA' : 2582, + 'GURMUKHI LETTER KHHA' : 2649, + 'GURMUKHI LETTER LA' : 2610, + 'GURMUKHI LETTER LLA' : 2611, + 'GURMUKHI LETTER MA' : 2606, + 'GURMUKHI LETTER NA' : 2600, + 'GURMUKHI LETTER NGA' : 2585, + 'GURMUKHI LETTER NNA' : 2595, + 'GURMUKHI LETTER NYA' : 2590, + 'GURMUKHI LETTER OO' : 2579, + 'GURMUKHI LETTER PA' : 2602, + 'GURMUKHI LETTER PHA' : 2603, + 'GURMUKHI LETTER RA' : 2608, + 'GURMUKHI LETTER RRA' : 2652, + 'GURMUKHI LETTER SA' : 2616, + 'GURMUKHI LETTER SHA' : 2614, + 'GURMUKHI LETTER TA' : 2596, + 'GURMUKHI LETTER THA' : 2597, + 'GURMUKHI LETTER TTA' : 2591, + 'GURMUKHI LETTER TTHA' : 2592, + 'GURMUKHI LETTER U' : 2569, + 'GURMUKHI LETTER UU' : 2570, + 'GURMUKHI LETTER VA' : 2613, + 'GURMUKHI LETTER YA' : 2607, + 'GURMUKHI LETTER ZA' : 2651, + 'GURMUKHI SIGN BINDI' : 2562, + 'GURMUKHI SIGN NUKTA' : 2620, + 'GURMUKHI SIGN VIRAMA' : 2637, + 'GURMUKHI TIPPI' : 2672, + 'GURMUKHI URA' : 2675, + 'GURMUKHI VOWEL SIGN AA' : 2622, + 'GURMUKHI VOWEL SIGN AI' : 2632, + 'GURMUKHI VOWEL SIGN AU' : 2636, + 'GURMUKHI VOWEL SIGN EE' : 2631, + 'GURMUKHI VOWEL SIGN I' : 2623, + 'GURMUKHI VOWEL SIGN II' : 2624, + 'GURMUKHI VOWEL SIGN OO' : 2635, + 'GURMUKHI VOWEL SIGN U' : 2625, + 'GURMUKHI VOWEL SIGN UU' : 2626, + 'HAIR SPACE' : 8202, + 'HALFWIDTH BLACK SQUARE' : 65517, + 'HALFWIDTH DOWNWARDS ARROW' : 65516, + 'HALFWIDTH FORMS LIGHT VERTICAL' : 65512, + 'HALFWIDTH HANGUL FILLER' : 65440, + 'HALFWIDTH HANGUL LETTER A' : 65474, + 'HALFWIDTH HANGUL LETTER AE' : 65475, + 'HALFWIDTH HANGUL LETTER CHIEUCH' : 65466, + 'HALFWIDTH HANGUL LETTER CIEUC' : 65464, + 'HALFWIDTH HANGUL LETTER E' : 65479, + 'HALFWIDTH HANGUL LETTER EO' : 65478, + 'HALFWIDTH HANGUL LETTER EU' : 65498, + 'HALFWIDTH HANGUL LETTER HIEUH' : 65470, + 'HALFWIDTH HANGUL LETTER I' : 65500, + 'HALFWIDTH HANGUL LETTER IEUNG' : 65463, + 'HALFWIDTH HANGUL LETTER KHIEUKH' : 65467, + 'HALFWIDTH HANGUL LETTER KIYEOK' : 65441, + 'HALFWIDTH HANGUL LETTER KIYEOK-SIOS' : 65443, + 'HALFWIDTH HANGUL LETTER MIEUM' : 65457, + 'HALFWIDTH HANGUL LETTER NIEUN' : 65444, + 'HALFWIDTH HANGUL LETTER NIEUN-CIEUC' : 65445, + 'HALFWIDTH HANGUL LETTER NIEUN-HIEUH' : 65446, + 'HALFWIDTH HANGUL LETTER O' : 65484, + 'HALFWIDTH HANGUL LETTER OE' : 65487, + 'HALFWIDTH HANGUL LETTER PHIEUPH' : 65469, + 'HALFWIDTH HANGUL LETTER PIEUP' : 65458, + 'HALFWIDTH HANGUL LETTER PIEUP-SIOS' : 65460, + 'HALFWIDTH HANGUL LETTER RIEUL' : 65449, + 'HALFWIDTH HANGUL LETTER RIEUL-HIEUH' : 65456, + 'HALFWIDTH HANGUL LETTER RIEUL-KIYEOK' : 65450, + 'HALFWIDTH HANGUL LETTER RIEUL-MIEUM' : 65451, + 'HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH' : 65455, + 'HALFWIDTH HANGUL LETTER RIEUL-PIEUP' : 65452, + 'HALFWIDTH HANGUL LETTER RIEUL-SIOS' : 65453, + 'HALFWIDTH HANGUL LETTER RIEUL-THIEUTH' : 65454, + 'HALFWIDTH HANGUL LETTER SIOS' : 65461, + 'HALFWIDTH HANGUL LETTER SSANGCIEUC' : 65465, + 'HALFWIDTH HANGUL LETTER SSANGKIYEOK' : 65442, + 'HALFWIDTH HANGUL LETTER SSANGPIEUP' : 65459, + 'HALFWIDTH HANGUL LETTER SSANGSIOS' : 65462, + 'HALFWIDTH HANGUL LETTER SSANGTIKEUT' : 65448, + 'HALFWIDTH HANGUL LETTER THIEUTH' : 65468, + 'HALFWIDTH HANGUL LETTER TIKEUT' : 65447, + 'HALFWIDTH HANGUL LETTER U' : 65491, + 'HALFWIDTH HANGUL LETTER WA' : 65485, + 'HALFWIDTH HANGUL LETTER WAE' : 65486, + 'HALFWIDTH HANGUL LETTER WE' : 65493, + 'HALFWIDTH HANGUL LETTER WEO' : 65492, + 'HALFWIDTH HANGUL LETTER WI' : 65494, + 'HALFWIDTH HANGUL LETTER YA' : 65476, + 'HALFWIDTH HANGUL LETTER YAE' : 65477, + 'HALFWIDTH HANGUL LETTER YE' : 65483, + 'HALFWIDTH HANGUL LETTER YEO' : 65482, + 'HALFWIDTH HANGUL LETTER YI' : 65499, + 'HALFWIDTH HANGUL LETTER YO' : 65490, + 'HALFWIDTH HANGUL LETTER YU' : 65495, + 'HALFWIDTH IDEOGRAPHIC COMMA' : 65380, + 'HALFWIDTH IDEOGRAPHIC FULL STOP' : 65377, + 'HALFWIDTH KATAKANA LETTER A' : 65393, + 'HALFWIDTH KATAKANA LETTER E' : 65396, + 'HALFWIDTH KATAKANA LETTER HA' : 65418, + 'HALFWIDTH KATAKANA LETTER HE' : 65421, + 'HALFWIDTH KATAKANA LETTER HI' : 65419, + 'HALFWIDTH KATAKANA LETTER HO' : 65422, + 'HALFWIDTH KATAKANA LETTER HU' : 65420, + 'HALFWIDTH KATAKANA LETTER I' : 65394, + 'HALFWIDTH KATAKANA LETTER KA' : 65398, + 'HALFWIDTH KATAKANA LETTER KE' : 65401, + 'HALFWIDTH KATAKANA LETTER KI' : 65399, + 'HALFWIDTH KATAKANA LETTER KO' : 65402, + 'HALFWIDTH KATAKANA LETTER KU' : 65400, + 'HALFWIDTH KATAKANA LETTER MA' : 65423, + 'HALFWIDTH KATAKANA LETTER ME' : 65426, + 'HALFWIDTH KATAKANA LETTER MI' : 65424, + 'HALFWIDTH KATAKANA LETTER MO' : 65427, + 'HALFWIDTH KATAKANA LETTER MU' : 65425, + 'HALFWIDTH KATAKANA LETTER N' : 65437, + 'HALFWIDTH KATAKANA LETTER NA' : 65413, + 'HALFWIDTH KATAKANA LETTER NE' : 65416, + 'HALFWIDTH KATAKANA LETTER NI' : 65414, + 'HALFWIDTH KATAKANA LETTER NO' : 65417, + 'HALFWIDTH KATAKANA LETTER NU' : 65415, + 'HALFWIDTH KATAKANA LETTER O' : 65397, + 'HALFWIDTH KATAKANA LETTER RA' : 65431, + 'HALFWIDTH KATAKANA LETTER RE' : 65434, + 'HALFWIDTH KATAKANA LETTER RI' : 65432, + 'HALFWIDTH KATAKANA LETTER RO' : 65435, + 'HALFWIDTH KATAKANA LETTER RU' : 65433, + 'HALFWIDTH KATAKANA LETTER SA' : 65403, + 'HALFWIDTH KATAKANA LETTER SE' : 65406, + 'HALFWIDTH KATAKANA LETTER SI' : 65404, + 'HALFWIDTH KATAKANA LETTER SMALL A' : 65383, + 'HALFWIDTH KATAKANA LETTER SMALL E' : 65386, + 'HALFWIDTH KATAKANA LETTER SMALL I' : 65384, + 'HALFWIDTH KATAKANA LETTER SMALL O' : 65387, + 'HALFWIDTH KATAKANA LETTER SMALL TU' : 65391, + 'HALFWIDTH KATAKANA LETTER SMALL U' : 65385, + 'HALFWIDTH KATAKANA LETTER SMALL YA' : 65388, + 'HALFWIDTH KATAKANA LETTER SMALL YO' : 65390, + 'HALFWIDTH KATAKANA LETTER SMALL YU' : 65389, + 'HALFWIDTH KATAKANA LETTER SO' : 65407, + 'HALFWIDTH KATAKANA LETTER SU' : 65405, + 'HALFWIDTH KATAKANA LETTER TA' : 65408, + 'HALFWIDTH KATAKANA LETTER TE' : 65411, + 'HALFWIDTH KATAKANA LETTER TI' : 65409, + 'HALFWIDTH KATAKANA LETTER TO' : 65412, + 'HALFWIDTH KATAKANA LETTER TU' : 65410, + 'HALFWIDTH KATAKANA LETTER U' : 65395, + 'HALFWIDTH KATAKANA LETTER WA' : 65436, + 'HALFWIDTH KATAKANA LETTER WO' : 65382, + 'HALFWIDTH KATAKANA LETTER YA' : 65428, + 'HALFWIDTH KATAKANA LETTER YO' : 65430, + 'HALFWIDTH KATAKANA LETTER YU' : 65429, + 'HALFWIDTH KATAKANA MIDDLE DOT' : 65381, + 'HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK' : 65439, + 'HALFWIDTH KATAKANA VOICED SOUND MARK' : 65438, + 'HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK' : 65392, + 'HALFWIDTH LEFT CORNER BRACKET' : 65378, + 'HALFWIDTH LEFTWARDS ARROW' : 65513, + 'HALFWIDTH RIGHT CORNER BRACKET' : 65379, + 'HALFWIDTH RIGHTWARDS ARROW' : 65515, + 'HALFWIDTH UPWARDS ARROW' : 65514, + 'HALFWIDTH WHITE CIRCLE' : 65518, + 'HAMMER AND SICKLE' : 9773, + 'HANGUL CHOSEONG CEONGCHIEUMCHIEUCH' : 4437, + 'HANGUL CHOSEONG CEONGCHIEUMCIEUC' : 4432, + 'HANGUL CHOSEONG CEONGCHIEUMSIOS' : 4414, + 'HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC' : 4433, + 'HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS' : 4415, + 'HANGUL CHOSEONG CHIEUCH' : 4366, + 'HANGUL CHOSEONG CHIEUCH-HIEUH' : 4435, + 'HANGUL CHOSEONG CHIEUCH-KHIEUKH' : 4434, + 'HANGUL CHOSEONG CHITUEUMCHIEUCH' : 4436, + 'HANGUL CHOSEONG CHITUEUMCIEUC' : 4430, + 'HANGUL CHOSEONG CHITUEUMSIOS' : 4412, + 'HANGUL CHOSEONG CHITUEUMSSANGCIEUC' : 4431, + 'HANGUL CHOSEONG CHITUEUMSSANGSIOS' : 4413, + 'HANGUL CHOSEONG CIEUC' : 4364, + 'HANGUL CHOSEONG CIEUC-IEUNG' : 4429, + 'HANGUL CHOSEONG FILLER' : 4447, + 'HANGUL CHOSEONG HIEUH' : 4370, + 'HANGUL CHOSEONG IEUNG' : 4363, + 'HANGUL CHOSEONG IEUNG-CHIEUCH' : 4425, + 'HANGUL CHOSEONG IEUNG-CIEUC' : 4424, + 'HANGUL CHOSEONG IEUNG-KIYEOK' : 4417, + 'HANGUL CHOSEONG IEUNG-MIEUM' : 4419, + 'HANGUL CHOSEONG IEUNG-PANSIOS' : 4422, + 'HANGUL CHOSEONG IEUNG-PHIEUPH' : 4427, + 'HANGUL CHOSEONG IEUNG-PIEUP' : 4420, + 'HANGUL CHOSEONG IEUNG-SIOS' : 4421, + 'HANGUL CHOSEONG IEUNG-THIEUTH' : 4426, + 'HANGUL CHOSEONG IEUNG-TIKEUT' : 4418, + 'HANGUL CHOSEONG KAPYEOUNMIEUM' : 4381, + 'HANGUL CHOSEONG KAPYEOUNPHIEUPH' : 4439, + 'HANGUL CHOSEONG KAPYEOUNPIEUP' : 4395, + 'HANGUL CHOSEONG KAPYEOUNRIEUL' : 4379, + 'HANGUL CHOSEONG KAPYEOUNSSANGPIEUP' : 4396, + 'HANGUL CHOSEONG KHIEUKH' : 4367, + 'HANGUL CHOSEONG KIYEOK' : 4352, + 'HANGUL CHOSEONG MIEUM' : 4358, + 'HANGUL CHOSEONG MIEUM-PIEUP' : 4380, + 'HANGUL CHOSEONG NIEUN' : 4354, + 'HANGUL CHOSEONG NIEUN-KIYEOK' : 4371, + 'HANGUL CHOSEONG NIEUN-PIEUP' : 4374, + 'HANGUL CHOSEONG NIEUN-TIKEUT' : 4373, + 'HANGUL CHOSEONG PANSIOS' : 4416, + 'HANGUL CHOSEONG PHIEUPH' : 4369, + 'HANGUL CHOSEONG PHIEUPH-PIEUP' : 4438, + 'HANGUL CHOSEONG PIEUP' : 4359, + 'HANGUL CHOSEONG PIEUP-CHIEUCH' : 4392, + 'HANGUL CHOSEONG PIEUP-CIEUC' : 4391, + 'HANGUL CHOSEONG PIEUP-KIYEOK' : 4382, + 'HANGUL CHOSEONG PIEUP-NIEUN' : 4383, + 'HANGUL CHOSEONG PIEUP-PHIEUPH' : 4394, + 'HANGUL CHOSEONG PIEUP-SIOS' : 4385, + 'HANGUL CHOSEONG PIEUP-SIOS-CIEUC' : 4390, + 'HANGUL CHOSEONG PIEUP-SIOS-KIYEOK' : 4386, + 'HANGUL CHOSEONG PIEUP-SIOS-PIEUP' : 4388, + 'HANGUL CHOSEONG PIEUP-SIOS-TIKEUT' : 4387, + 'HANGUL CHOSEONG PIEUP-SSANGSIOS' : 4389, + 'HANGUL CHOSEONG PIEUP-THIEUTH' : 4393, + 'HANGUL CHOSEONG PIEUP-TIKEUT' : 4384, + 'HANGUL CHOSEONG RIEUL' : 4357, + 'HANGUL CHOSEONG RIEUL-HIEUH' : 4378, + 'HANGUL CHOSEONG RIEUL-NIEUN' : 4376, + 'HANGUL CHOSEONG SIOS' : 4361, + 'HANGUL CHOSEONG SIOS-CHIEUCH' : 4407, + 'HANGUL CHOSEONG SIOS-CIEUC' : 4406, + 'HANGUL CHOSEONG SIOS-HIEUH' : 4411, + 'HANGUL CHOSEONG SIOS-IEUNG' : 4405, + 'HANGUL CHOSEONG SIOS-KHIEUKH' : 4408, + 'HANGUL CHOSEONG SIOS-KIYEOK' : 4397, + 'HANGUL CHOSEONG SIOS-MIEUM' : 4401, + 'HANGUL CHOSEONG SIOS-NIEUN' : 4398, + 'HANGUL CHOSEONG SIOS-PHIEUPH' : 4410, + 'HANGUL CHOSEONG SIOS-PIEUP' : 4402, + 'HANGUL CHOSEONG SIOS-PIEUP-KIYEOK' : 4403, + 'HANGUL CHOSEONG SIOS-RIEUL' : 4400, + 'HANGUL CHOSEONG SIOS-SSANGSIOS' : 4404, + 'HANGUL CHOSEONG SIOS-THIEUTH' : 4409, + 'HANGUL CHOSEONG SIOS-TIKEUT' : 4399, + 'HANGUL CHOSEONG SSANGCIEUC' : 4365, + 'HANGUL CHOSEONG SSANGHIEUH' : 4440, + 'HANGUL CHOSEONG SSANGIEUNG' : 4423, + 'HANGUL CHOSEONG SSANGKIYEOK' : 4353, + 'HANGUL CHOSEONG SSANGNIEUN' : 4372, + 'HANGUL CHOSEONG SSANGPIEUP' : 4360, + 'HANGUL CHOSEONG SSANGRIEUL' : 4377, + 'HANGUL CHOSEONG SSANGSIOS' : 4362, + 'HANGUL CHOSEONG SSANGTIKEUT' : 4356, + 'HANGUL CHOSEONG THIEUTH' : 4368, + 'HANGUL CHOSEONG TIKEUT' : 4355, + 'HANGUL CHOSEONG TIKEUT-KIYEOK' : 4375, + 'HANGUL CHOSEONG YEORINHIEUH' : 4441, + 'HANGUL CHOSEONG YESIEUNG' : 4428, + 'HANGUL DOUBLE DOT TONE MARK' : 12335, + 'HANGUL FILLER' : 12644, + 'HANGUL JONGSEONG CHIEUCH' : 4542, + 'HANGUL JONGSEONG CIEUC' : 4541, + 'HANGUL JONGSEONG HIEUH' : 4546, + 'HANGUL JONGSEONG HIEUH-MIEUM' : 4599, + 'HANGUL JONGSEONG HIEUH-NIEUN' : 4597, + 'HANGUL JONGSEONG HIEUH-PIEUP' : 4600, + 'HANGUL JONGSEONG HIEUH-RIEUL' : 4598, + 'HANGUL JONGSEONG IEUNG' : 4540, + 'HANGUL JONGSEONG IEUNG-KHIEUKH' : 4591, + 'HANGUL JONGSEONG IEUNG-KIYEOK' : 4588, + 'HANGUL JONGSEONG IEUNG-SSANGKIYEOK' : 4589, + 'HANGUL JONGSEONG KAPYEOUNMIEUM' : 4578, + 'HANGUL JONGSEONG KAPYEOUNPHIEUPH' : 4596, + 'HANGUL JONGSEONG KAPYEOUNPIEUP' : 4582, + 'HANGUL JONGSEONG KHIEUKH' : 4543, + 'HANGUL JONGSEONG KIYEOK' : 4520, + 'HANGUL JONGSEONG KIYEOK-RIEUL' : 4547, + 'HANGUL JONGSEONG KIYEOK-SIOS' : 4522, + 'HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK' : 4548, + 'HANGUL JONGSEONG MIEUM' : 4535, + 'HANGUL JONGSEONG MIEUM-CHIEUCH' : 4576, + 'HANGUL JONGSEONG MIEUM-HIEUH' : 4577, + 'HANGUL JONGSEONG MIEUM-KIYEOK' : 4570, + 'HANGUL JONGSEONG MIEUM-PANSIOS' : 4575, + 'HANGUL JONGSEONG MIEUM-PIEUP' : 4572, + 'HANGUL JONGSEONG MIEUM-RIEUL' : 4571, + 'HANGUL JONGSEONG MIEUM-SIOS' : 4573, + 'HANGUL JONGSEONG MIEUM-SSANGSIOS' : 4574, + 'HANGUL JONGSEONG NIEUN' : 4523, + 'HANGUL JONGSEONG NIEUN-CIEUC' : 4524, + 'HANGUL JONGSEONG NIEUN-HIEUH' : 4525, + 'HANGUL JONGSEONG NIEUN-KIYEOK' : 4549, + 'HANGUL JONGSEONG NIEUN-PANSIOS' : 4552, + 'HANGUL JONGSEONG NIEUN-SIOS' : 4551, + 'HANGUL JONGSEONG NIEUN-THIEUTH' : 4553, + 'HANGUL JONGSEONG NIEUN-TIKEUT' : 4550, + 'HANGUL JONGSEONG PANSIOS' : 4587, + 'HANGUL JONGSEONG PHIEUPH' : 4545, + 'HANGUL JONGSEONG PHIEUPH-PIEUP' : 4595, + 'HANGUL JONGSEONG PIEUP' : 4536, + 'HANGUL JONGSEONG PIEUP-HIEUH' : 4581, + 'HANGUL JONGSEONG PIEUP-PHIEUPH' : 4580, + 'HANGUL JONGSEONG PIEUP-RIEUL' : 4579, + 'HANGUL JONGSEONG PIEUP-SIOS' : 4537, + 'HANGUL JONGSEONG RIEUL' : 4527, + 'HANGUL JONGSEONG RIEUL-HIEUH' : 4534, + 'HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP' : 4565, + 'HANGUL JONGSEONG RIEUL-KHIEUKH' : 4568, + 'HANGUL JONGSEONG RIEUL-KIYEOK' : 4528, + 'HANGUL JONGSEONG RIEUL-KIYEOK-SIOS' : 4556, + 'HANGUL JONGSEONG RIEUL-MIEUM' : 4529, + 'HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK' : 4561, + 'HANGUL JONGSEONG RIEUL-MIEUM-SIOS' : 4562, + 'HANGUL JONGSEONG RIEUL-NIEUN' : 4557, + 'HANGUL JONGSEONG RIEUL-PANSIOS' : 4567, + 'HANGUL JONGSEONG RIEUL-PHIEUPH' : 4533, + 'HANGUL JONGSEONG RIEUL-PIEUP' : 4530, + 'HANGUL JONGSEONG RIEUL-PIEUP-HIEUH' : 4564, + 'HANGUL JONGSEONG RIEUL-PIEUP-SIOS' : 4563, + 'HANGUL JONGSEONG RIEUL-SIOS' : 4531, + 'HANGUL JONGSEONG RIEUL-SSANGSIOS' : 4566, + 'HANGUL JONGSEONG RIEUL-THIEUTH' : 4532, + 'HANGUL JONGSEONG RIEUL-TIKEUT' : 4558, + 'HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH' : 4559, + 'HANGUL JONGSEONG RIEUL-YEORINHIEUH' : 4569, + 'HANGUL JONGSEONG SIOS' : 4538, + 'HANGUL JONGSEONG SIOS-KIYEOK' : 4583, + 'HANGUL JONGSEONG SIOS-PIEUP' : 4586, + 'HANGUL JONGSEONG SIOS-RIEUL' : 4585, + 'HANGUL JONGSEONG SIOS-TIKEUT' : 4584, + 'HANGUL JONGSEONG SSANGIEUNG' : 4590, + 'HANGUL JONGSEONG SSANGKIYEOK' : 4521, + 'HANGUL JONGSEONG SSANGRIEUL' : 4560, + 'HANGUL JONGSEONG SSANGSIOS' : 4539, + 'HANGUL JONGSEONG THIEUTH' : 4544, + 'HANGUL JONGSEONG TIKEUT' : 4526, + 'HANGUL JONGSEONG TIKEUT-KIYEOK' : 4554, + 'HANGUL JONGSEONG TIKEUT-RIEUL' : 4555, + 'HANGUL JONGSEONG YEORINHIEUH' : 4601, + 'HANGUL JONGSEONG YESIEUNG' : 4592, + 'HANGUL JONGSEONG YESIEUNG-PANSIOS' : 4594, + 'HANGUL JONGSEONG YESIEUNG-SIOS' : 4593, + 'HANGUL JUNGSEONG A' : 4449, + 'HANGUL JUNGSEONG A-O' : 4470, + 'HANGUL JUNGSEONG A-U' : 4471, + 'HANGUL JUNGSEONG AE' : 4450, + 'HANGUL JUNGSEONG ARAEA' : 4510, + 'HANGUL JUNGSEONG ARAEA-EO' : 4511, + 'HANGUL JUNGSEONG ARAEA-I' : 4513, + 'HANGUL JUNGSEONG ARAEA-U' : 4512, + 'HANGUL JUNGSEONG E' : 4454, + 'HANGUL JUNGSEONG EO' : 4453, + 'HANGUL JUNGSEONG EO-EU' : 4476, + 'HANGUL JUNGSEONG EO-O' : 4474, + 'HANGUL JUNGSEONG EO-U' : 4475, + 'HANGUL JUNGSEONG EU' : 4467, + 'HANGUL JUNGSEONG EU-EU' : 4502, + 'HANGUL JUNGSEONG EU-U' : 4501, + 'HANGUL JUNGSEONG FILLER' : 4448, + 'HANGUL JUNGSEONG I' : 4469, + 'HANGUL JUNGSEONG I-A' : 4504, + 'HANGUL JUNGSEONG I-ARAEA' : 4509, + 'HANGUL JUNGSEONG I-EU' : 4508, + 'HANGUL JUNGSEONG I-O' : 4506, + 'HANGUL JUNGSEONG I-U' : 4507, + 'HANGUL JUNGSEONG I-YA' : 4505, + 'HANGUL JUNGSEONG O' : 4457, + 'HANGUL JUNGSEONG O-E' : 4480, + 'HANGUL JUNGSEONG O-EO' : 4479, + 'HANGUL JUNGSEONG O-O' : 4482, + 'HANGUL JUNGSEONG O-U' : 4483, + 'HANGUL JUNGSEONG O-YE' : 4481, + 'HANGUL JUNGSEONG OE' : 4460, + 'HANGUL JUNGSEONG SSANGARAEA' : 4514, + 'HANGUL JUNGSEONG U' : 4462, + 'HANGUL JUNGSEONG U-A' : 4489, + 'HANGUL JUNGSEONG U-AE' : 4490, + 'HANGUL JUNGSEONG U-EO-EU' : 4491, + 'HANGUL JUNGSEONG U-U' : 4493, + 'HANGUL JUNGSEONG U-YE' : 4492, + 'HANGUL JUNGSEONG WA' : 4458, + 'HANGUL JUNGSEONG WAE' : 4459, + 'HANGUL JUNGSEONG WE' : 4464, + 'HANGUL JUNGSEONG WEO' : 4463, + 'HANGUL JUNGSEONG WI' : 4465, + 'HANGUL JUNGSEONG YA' : 4451, + 'HANGUL JUNGSEONG YA-O' : 4472, + 'HANGUL JUNGSEONG YA-YO' : 4473, + 'HANGUL JUNGSEONG YAE' : 4452, + 'HANGUL JUNGSEONG YE' : 4456, + 'HANGUL JUNGSEONG YEO' : 4455, + 'HANGUL JUNGSEONG YEO-O' : 4477, + 'HANGUL JUNGSEONG YEO-U' : 4478, + 'HANGUL JUNGSEONG YI' : 4468, + 'HANGUL JUNGSEONG YI-U' : 4503, + 'HANGUL JUNGSEONG YO' : 4461, + 'HANGUL JUNGSEONG YO-I' : 4488, + 'HANGUL JUNGSEONG YO-O' : 4487, + 'HANGUL JUNGSEONG YO-YA' : 4484, + 'HANGUL JUNGSEONG YO-YAE' : 4485, + 'HANGUL JUNGSEONG YO-YEO' : 4486, + 'HANGUL JUNGSEONG YU' : 4466, + 'HANGUL JUNGSEONG YU-A' : 4494, + 'HANGUL JUNGSEONG YU-E' : 4496, + 'HANGUL JUNGSEONG YU-EO' : 4495, + 'HANGUL JUNGSEONG YU-I' : 4500, + 'HANGUL JUNGSEONG YU-U' : 4499, + 'HANGUL JUNGSEONG YU-YE' : 4498, + 'HANGUL JUNGSEONG YU-YEO' : 4497, + 'HANGUL LETTER A' : 12623, + 'HANGUL LETTER AE' : 12624, + 'HANGUL LETTER ARAEA' : 12685, + 'HANGUL LETTER ARAEAE' : 12686, + 'HANGUL LETTER CHIEUCH' : 12618, + 'HANGUL LETTER CIEUC' : 12616, + 'HANGUL LETTER E' : 12628, + 'HANGUL LETTER EO' : 12627, + 'HANGUL LETTER EU' : 12641, + 'HANGUL LETTER HIEUH' : 12622, + 'HANGUL LETTER I' : 12643, + 'HANGUL LETTER IEUNG' : 12615, + 'HANGUL LETTER KAPYEOUNMIEUM' : 12657, + 'HANGUL LETTER KAPYEOUNPHIEUPH' : 12676, + 'HANGUL LETTER KAPYEOUNPIEUP' : 12664, + 'HANGUL LETTER KAPYEOUNSSANGPIEUP' : 12665, + 'HANGUL LETTER KHIEUKH' : 12619, + 'HANGUL LETTER KIYEOK' : 12593, + 'HANGUL LETTER KIYEOK-SIOS' : 12595, + 'HANGUL LETTER MIEUM' : 12609, + 'HANGUL LETTER MIEUM-PANSIOS' : 12656, + 'HANGUL LETTER MIEUM-PIEUP' : 12654, + 'HANGUL LETTER MIEUM-SIOS' : 12655, + 'HANGUL LETTER NIEUN' : 12596, + 'HANGUL LETTER NIEUN-CIEUC' : 12597, + 'HANGUL LETTER NIEUN-HIEUH' : 12598, + 'HANGUL LETTER NIEUN-PANSIOS' : 12648, + 'HANGUL LETTER NIEUN-SIOS' : 12647, + 'HANGUL LETTER NIEUN-TIKEUT' : 12646, + 'HANGUL LETTER O' : 12631, + 'HANGUL LETTER OE' : 12634, + 'HANGUL LETTER PANSIOS' : 12671, + 'HANGUL LETTER PHIEUPH' : 12621, + 'HANGUL LETTER PIEUP' : 12610, + 'HANGUL LETTER PIEUP-CIEUC' : 12662, + 'HANGUL LETTER PIEUP-KIYEOK' : 12658, + 'HANGUL LETTER PIEUP-SIOS' : 12612, + 'HANGUL LETTER PIEUP-SIOS-KIYEOK' : 12660, + 'HANGUL LETTER PIEUP-SIOS-TIKEUT' : 12661, + 'HANGUL LETTER PIEUP-THIEUTH' : 12663, + 'HANGUL LETTER PIEUP-TIKEUT' : 12659, + 'HANGUL LETTER RIEUL' : 12601, + 'HANGUL LETTER RIEUL-HIEUH' : 12608, + 'HANGUL LETTER RIEUL-KIYEOK' : 12602, + 'HANGUL LETTER RIEUL-KIYEOK-SIOS' : 12649, + 'HANGUL LETTER RIEUL-MIEUM' : 12603, + 'HANGUL LETTER RIEUL-PANSIOS' : 12652, + 'HANGUL LETTER RIEUL-PHIEUPH' : 12607, + 'HANGUL LETTER RIEUL-PIEUP' : 12604, + 'HANGUL LETTER RIEUL-PIEUP-SIOS' : 12651, + 'HANGUL LETTER RIEUL-SIOS' : 12605, + 'HANGUL LETTER RIEUL-THIEUTH' : 12606, + 'HANGUL LETTER RIEUL-TIKEUT' : 12650, + 'HANGUL LETTER RIEUL-YEORINHIEUH' : 12653, + 'HANGUL LETTER SIOS' : 12613, + 'HANGUL LETTER SIOS-CIEUC' : 12670, + 'HANGUL LETTER SIOS-KIYEOK' : 12666, + 'HANGUL LETTER SIOS-NIEUN' : 12667, + 'HANGUL LETTER SIOS-PIEUP' : 12669, + 'HANGUL LETTER SIOS-TIKEUT' : 12668, + 'HANGUL LETTER SSANGCIEUC' : 12617, + 'HANGUL LETTER SSANGHIEUH' : 12677, + 'HANGUL LETTER SSANGIEUNG' : 12672, + 'HANGUL LETTER SSANGKIYEOK' : 12594, + 'HANGUL LETTER SSANGNIEUN' : 12645, + 'HANGUL LETTER SSANGPIEUP' : 12611, + 'HANGUL LETTER SSANGSIOS' : 12614, + 'HANGUL LETTER SSANGTIKEUT' : 12600, + 'HANGUL LETTER THIEUTH' : 12620, + 'HANGUL LETTER TIKEUT' : 12599, + 'HANGUL LETTER U' : 12636, + 'HANGUL LETTER WA' : 12632, + 'HANGUL LETTER WAE' : 12633, + 'HANGUL LETTER WE' : 12638, + 'HANGUL LETTER WEO' : 12637, + 'HANGUL LETTER WI' : 12639, + 'HANGUL LETTER YA' : 12625, + 'HANGUL LETTER YAE' : 12626, + 'HANGUL LETTER YE' : 12630, + 'HANGUL LETTER YEO' : 12629, + 'HANGUL LETTER YEORINHIEUH' : 12678, + 'HANGUL LETTER YESIEUNG' : 12673, + 'HANGUL LETTER YESIEUNG-PANSIOS' : 12675, + 'HANGUL LETTER YESIEUNG-SIOS' : 12674, + 'HANGUL LETTER YI' : 12642, + 'HANGUL LETTER YO' : 12635, + 'HANGUL LETTER YO-I' : 12681, + 'HANGUL LETTER YO-YA' : 12679, + 'HANGUL LETTER YO-YAE' : 12680, + 'HANGUL LETTER YU' : 12640, + 'HANGUL LETTER YU-I' : 12684, + 'HANGUL LETTER YU-YE' : 12683, + 'HANGUL LETTER YU-YEO' : 12682, + 'HANGUL SINGLE DOT TONE MARK' : 12334, + 'HANGZHOU NUMERAL EIGHT' : 12328, + 'HANGZHOU NUMERAL FIVE' : 12325, + 'HANGZHOU NUMERAL FOUR' : 12324, + 'HANGZHOU NUMERAL NINE' : 12329, + 'HANGZHOU NUMERAL ONE' : 12321, + 'HANGZHOU NUMERAL SEVEN' : 12327, + 'HANGZHOU NUMERAL SIX' : 12326, + 'HANGZHOU NUMERAL TEN' : 12344, + 'HANGZHOU NUMERAL THIRTY' : 12346, + 'HANGZHOU NUMERAL THREE' : 12323, + 'HANGZHOU NUMERAL TWENTY' : 12345, + 'HANGZHOU NUMERAL TWO' : 12322, + 'HANUNOO LETTER A' : 5920, + 'HANUNOO LETTER BA' : 5930, + 'HANUNOO LETTER DA' : 5927, + 'HANUNOO LETTER GA' : 5924, + 'HANUNOO LETTER HA' : 5937, + 'HANUNOO LETTER I' : 5921, + 'HANUNOO LETTER KA' : 5923, + 'HANUNOO LETTER LA' : 5934, + 'HANUNOO LETTER MA' : 5931, + 'HANUNOO LETTER NA' : 5928, + 'HANUNOO LETTER NGA' : 5925, + 'HANUNOO LETTER PA' : 5929, + 'HANUNOO LETTER RA' : 5933, + 'HANUNOO LETTER SA' : 5936, + 'HANUNOO LETTER TA' : 5926, + 'HANUNOO LETTER U' : 5922, + 'HANUNOO LETTER WA' : 5935, + 'HANUNOO LETTER YA' : 5932, + 'HANUNOO SIGN PAMUDPOD' : 5940, + 'HANUNOO VOWEL SIGN I' : 5938, + 'HANUNOO VOWEL SIGN U' : 5939, + 'HEAVY ASTERISK' : 10033, + 'HEAVY BALLOT X' : 10008, + 'HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW' : 10149, + 'HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW' : 10150, + 'HEAVY BLACK HEART' : 10084, + 'HEAVY BLACK-FEATHERED NORTH EAST ARROW' : 10169, + 'HEAVY BLACK-FEATHERED RIGHTWARDS ARROW' : 10168, + 'HEAVY BLACK-FEATHERED SOUTH EAST ARROW' : 10167, + 'HEAVY CHECK MARK' : 10004, + 'HEAVY CHEVRON SNOWFLAKE' : 10054, + 'HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW' : 10152, + 'HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW' : 10144, + 'HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT' : 10078, + 'HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT' : 10077, + 'HEAVY EIGHT POINTED RECTILINEAR BLACK STAR' : 10040, + 'HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK' : 10059, + 'HEAVY EXCLAMATION MARK ORNAMENT' : 10082, + 'HEAVY FOUR BALLOON-SPOKED ASTERISK' : 10020, + 'HEAVY GREEK CROSS' : 10010, + 'HEAVY HEART EXCLAMATION MARK ORNAMENT' : 10083, + 'HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT' : 10096, + 'HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT' : 10094, + 'HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW' : 10157, + 'HEAVY MULTIPLICATION X' : 10006, + 'HEAVY NORTH EAST ARROW' : 10138, + 'HEAVY OPEN CENTRE CROSS' : 10012, + 'HEAVY OUTLINED BLACK STAR' : 10030, + 'HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT' : 10097, + 'HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT' : 10095, + 'HEAVY RIGHTWARDS ARROW' : 10137, + 'HEAVY ROUND-TIPPED RIGHTWARDS ARROW' : 10140, + 'HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT' : 10076, + 'HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT' : 10075, + 'HEAVY SOUTH EAST ARROW' : 10136, + 'HEAVY SPARKLE' : 10056, + 'HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW' : 10171, + 'HEAVY TEARDROP-SPOKED ASTERISK' : 10045, + 'HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK' : 10051, + 'HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW' : 10142, + 'HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW' : 10158, + 'HEAVY VERTICAL BAR' : 10074, + 'HEAVY WEDGE-TAILED RIGHTWARDS ARROW' : 10173, + 'HEAVY WIDE-HEADED RIGHTWARDS ARROW' : 10132, + 'HEBREW ACCENT DARGA' : 1447, + 'HEBREW ACCENT DEHI' : 1453, + 'HEBREW ACCENT ETNAHTA' : 1425, + 'HEBREW ACCENT GERESH' : 1436, + 'HEBREW ACCENT GERESH MUQDAM' : 1437, + 'HEBREW ACCENT GERSHAYIM' : 1438, + 'HEBREW ACCENT ILUY' : 1452, + 'HEBREW ACCENT MAHAPAKH' : 1444, + 'HEBREW ACCENT MERKHA' : 1445, + 'HEBREW ACCENT MERKHA KEFULA' : 1446, + 'HEBREW ACCENT MUNAH' : 1443, + 'HEBREW ACCENT OLE' : 1451, + 'HEBREW ACCENT PASHTA' : 1433, + 'HEBREW ACCENT PAZER' : 1441, + 'HEBREW ACCENT QADMA' : 1448, + 'HEBREW ACCENT QARNEY PARA' : 1439, + 'HEBREW ACCENT REVIA' : 1431, + 'HEBREW ACCENT SEGOL' : 1426, + 'HEBREW ACCENT SHALSHELET' : 1427, + 'HEBREW ACCENT TELISHA GEDOLA' : 1440, + 'HEBREW ACCENT TELISHA QETANA' : 1449, + 'HEBREW ACCENT TEVIR' : 1435, + 'HEBREW ACCENT TIPEHA' : 1430, + 'HEBREW ACCENT YERAH BEN YOMO' : 1450, + 'HEBREW ACCENT YETIV' : 1434, + 'HEBREW ACCENT ZAQEF GADOL' : 1429, + 'HEBREW ACCENT ZAQEF QATAN' : 1428, + 'HEBREW ACCENT ZARQA' : 1432, + 'HEBREW ACCENT ZINOR' : 1454, + 'HEBREW LETTER ALEF' : 1488, + 'HEBREW LETTER ALEF WITH MAPIQ' : 64304, + 'HEBREW LETTER ALEF WITH PATAH' : 64302, + 'HEBREW LETTER ALEF WITH QAMATS' : 64303, + 'HEBREW LETTER ALTERNATIVE AYIN' : 64288, + 'HEBREW LETTER ALTERNATIVE PLUS SIGN' : 64297, + 'HEBREW LETTER AYIN' : 1506, + 'HEBREW LETTER BET' : 1489, + 'HEBREW LETTER BET WITH DAGESH' : 64305, + 'HEBREW LETTER BET WITH RAFE' : 64332, + 'HEBREW LETTER DALET' : 1491, + 'HEBREW LETTER DALET WITH DAGESH' : 64307, + 'HEBREW LETTER FINAL KAF' : 1498, + 'HEBREW LETTER FINAL KAF WITH DAGESH' : 64314, + 'HEBREW LETTER FINAL MEM' : 1501, + 'HEBREW LETTER FINAL NUN' : 1503, + 'HEBREW LETTER FINAL PE' : 1507, + 'HEBREW LETTER FINAL PE WITH DAGESH' : 64323, + 'HEBREW LETTER FINAL TSADI' : 1509, + 'HEBREW LETTER GIMEL' : 1490, + 'HEBREW LETTER GIMEL WITH DAGESH' : 64306, + 'HEBREW LETTER HE' : 1492, + 'HEBREW LETTER HE WITH MAPIQ' : 64308, + 'HEBREW LETTER HET' : 1495, + 'HEBREW LETTER KAF' : 1499, + 'HEBREW LETTER KAF WITH DAGESH' : 64315, + 'HEBREW LETTER KAF WITH RAFE' : 64333, + 'HEBREW LETTER LAMED' : 1500, + 'HEBREW LETTER LAMED WITH DAGESH' : 64316, + 'HEBREW LETTER MEM' : 1502, + 'HEBREW LETTER MEM WITH DAGESH' : 64318, + 'HEBREW LETTER NUN' : 1504, + 'HEBREW LETTER NUN WITH DAGESH' : 64320, + 'HEBREW LETTER PE' : 1508, + 'HEBREW LETTER PE WITH DAGESH' : 64324, + 'HEBREW LETTER PE WITH RAFE' : 64334, + 'HEBREW LETTER QOF' : 1511, + 'HEBREW LETTER QOF WITH DAGESH' : 64327, + 'HEBREW LETTER RESH' : 1512, + 'HEBREW LETTER RESH WITH DAGESH' : 64328, + 'HEBREW LETTER SAMEKH' : 1505, + 'HEBREW LETTER SAMEKH WITH DAGESH' : 64321, + 'HEBREW LETTER SHIN' : 1513, + 'HEBREW LETTER SHIN WITH DAGESH' : 64329, + 'HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT' : 64300, + 'HEBREW LETTER SHIN WITH DAGESH AND SIN DOT' : 64301, + 'HEBREW LETTER SHIN WITH SHIN DOT' : 64298, + 'HEBREW LETTER SHIN WITH SIN DOT' : 64299, + 'HEBREW LETTER TAV' : 1514, + 'HEBREW LETTER TAV WITH DAGESH' : 64330, + 'HEBREW LETTER TET' : 1496, + 'HEBREW LETTER TET WITH DAGESH' : 64312, + 'HEBREW LETTER TSADI' : 1510, + 'HEBREW LETTER TSADI WITH DAGESH' : 64326, + 'HEBREW LETTER VAV' : 1493, + 'HEBREW LETTER VAV WITH DAGESH' : 64309, + 'HEBREW LETTER VAV WITH HOLAM' : 64331, + 'HEBREW LETTER WIDE ALEF' : 64289, + 'HEBREW LETTER WIDE DALET' : 64290, + 'HEBREW LETTER WIDE FINAL MEM' : 64294, + 'HEBREW LETTER WIDE HE' : 64291, + 'HEBREW LETTER WIDE KAF' : 64292, + 'HEBREW LETTER WIDE LAMED' : 64293, + 'HEBREW LETTER WIDE RESH' : 64295, + 'HEBREW LETTER WIDE TAV' : 64296, + 'HEBREW LETTER YOD' : 1497, + 'HEBREW LETTER YOD WITH DAGESH' : 64313, + 'HEBREW LETTER YOD WITH HIRIQ' : 64285, + 'HEBREW LETTER ZAYIN' : 1494, + 'HEBREW LETTER ZAYIN WITH DAGESH' : 64310, + 'HEBREW LIGATURE ALEF LAMED' : 64335, + 'HEBREW LIGATURE YIDDISH DOUBLE VAV' : 1520, + 'HEBREW LIGATURE YIDDISH DOUBLE YOD' : 1522, + 'HEBREW LIGATURE YIDDISH VAV YOD' : 1521, + 'HEBREW LIGATURE YIDDISH YOD YOD PATAH' : 64287, + 'HEBREW MARK MASORA CIRCLE' : 1455, + 'HEBREW MARK UPPER DOT' : 1476, + 'HEBREW POINT DAGESH OR MAPIQ' : 1468, + 'HEBREW POINT HATAF PATAH' : 1458, + 'HEBREW POINT HATAF QAMATS' : 1459, + 'HEBREW POINT HATAF SEGOL' : 1457, + 'HEBREW POINT HIRIQ' : 1460, + 'HEBREW POINT HOLAM' : 1465, + 'HEBREW POINT JUDEO-SPANISH VARIKA' : 64286, + 'HEBREW POINT METEG' : 1469, + 'HEBREW POINT PATAH' : 1463, + 'HEBREW POINT QAMATS' : 1464, + 'HEBREW POINT QUBUTS' : 1467, + 'HEBREW POINT RAFE' : 1471, + 'HEBREW POINT SEGOL' : 1462, + 'HEBREW POINT SHEVA' : 1456, + 'HEBREW POINT SHIN DOT' : 1473, + 'HEBREW POINT SIN DOT' : 1474, + 'HEBREW POINT TSERE' : 1461, + 'HEBREW PUNCTUATION GERESH' : 1523, + 'HEBREW PUNCTUATION GERSHAYIM' : 1524, + 'HEBREW PUNCTUATION MAQAF' : 1470, + 'HEBREW PUNCTUATION PASEQ' : 1472, + 'HEBREW PUNCTUATION SOF PASUQ' : 1475, + 'HELM SYMBOL' : 9096, + 'HERMITIAN CONJUGATE MATRIX' : 8889, + 'HIRAGANA DIGRAPH YORI' : 12447, + 'HIRAGANA ITERATION MARK' : 12445, + 'HIRAGANA LETTER A' : 12354, + 'HIRAGANA LETTER BA' : 12400, + 'HIRAGANA LETTER BE' : 12409, + 'HIRAGANA LETTER BI' : 12403, + 'HIRAGANA LETTER BO' : 12412, + 'HIRAGANA LETTER BU' : 12406, + 'HIRAGANA LETTER DA' : 12384, + 'HIRAGANA LETTER DE' : 12391, + 'HIRAGANA LETTER DI' : 12386, + 'HIRAGANA LETTER DO' : 12393, + 'HIRAGANA LETTER DU' : 12389, + 'HIRAGANA LETTER E' : 12360, + 'HIRAGANA LETTER GA' : 12364, + 'HIRAGANA LETTER GE' : 12370, + 'HIRAGANA LETTER GI' : 12366, + 'HIRAGANA LETTER GO' : 12372, + 'HIRAGANA LETTER GU' : 12368, + 'HIRAGANA LETTER HA' : 12399, + 'HIRAGANA LETTER HE' : 12408, + 'HIRAGANA LETTER HI' : 12402, + 'HIRAGANA LETTER HO' : 12411, + 'HIRAGANA LETTER HU' : 12405, + 'HIRAGANA LETTER I' : 12356, + 'HIRAGANA LETTER KA' : 12363, + 'HIRAGANA LETTER KE' : 12369, + 'HIRAGANA LETTER KI' : 12365, + 'HIRAGANA LETTER KO' : 12371, + 'HIRAGANA LETTER KU' : 12367, + 'HIRAGANA LETTER MA' : 12414, + 'HIRAGANA LETTER ME' : 12417, + 'HIRAGANA LETTER MI' : 12415, + 'HIRAGANA LETTER MO' : 12418, + 'HIRAGANA LETTER MU' : 12416, + 'HIRAGANA LETTER N' : 12435, + 'HIRAGANA LETTER NA' : 12394, + 'HIRAGANA LETTER NE' : 12397, + 'HIRAGANA LETTER NI' : 12395, + 'HIRAGANA LETTER NO' : 12398, + 'HIRAGANA LETTER NU' : 12396, + 'HIRAGANA LETTER O' : 12362, + 'HIRAGANA LETTER PA' : 12401, + 'HIRAGANA LETTER PE' : 12410, + 'HIRAGANA LETTER PI' : 12404, + 'HIRAGANA LETTER PO' : 12413, + 'HIRAGANA LETTER PU' : 12407, + 'HIRAGANA LETTER RA' : 12425, + 'HIRAGANA LETTER RE' : 12428, + 'HIRAGANA LETTER RI' : 12426, + 'HIRAGANA LETTER RO' : 12429, + 'HIRAGANA LETTER RU' : 12427, + 'HIRAGANA LETTER SA' : 12373, + 'HIRAGANA LETTER SE' : 12379, + 'HIRAGANA LETTER SI' : 12375, + 'HIRAGANA LETTER SMALL A' : 12353, + 'HIRAGANA LETTER SMALL E' : 12359, + 'HIRAGANA LETTER SMALL I' : 12355, + 'HIRAGANA LETTER SMALL KA' : 12437, + 'HIRAGANA LETTER SMALL KE' : 12438, + 'HIRAGANA LETTER SMALL O' : 12361, + 'HIRAGANA LETTER SMALL TU' : 12387, + 'HIRAGANA LETTER SMALL U' : 12357, + 'HIRAGANA LETTER SMALL WA' : 12430, + 'HIRAGANA LETTER SMALL YA' : 12419, + 'HIRAGANA LETTER SMALL YO' : 12423, + 'HIRAGANA LETTER SMALL YU' : 12421, + 'HIRAGANA LETTER SO' : 12381, + 'HIRAGANA LETTER SU' : 12377, + 'HIRAGANA LETTER TA' : 12383, + 'HIRAGANA LETTER TE' : 12390, + 'HIRAGANA LETTER TI' : 12385, + 'HIRAGANA LETTER TO' : 12392, + 'HIRAGANA LETTER TU' : 12388, + 'HIRAGANA LETTER U' : 12358, + 'HIRAGANA LETTER VU' : 12436, + 'HIRAGANA LETTER WA' : 12431, + 'HIRAGANA LETTER WE' : 12433, + 'HIRAGANA LETTER WI' : 12432, + 'HIRAGANA LETTER WO' : 12434, + 'HIRAGANA LETTER YA' : 12420, + 'HIRAGANA LETTER YO' : 12424, + 'HIRAGANA LETTER YU' : 12422, + 'HIRAGANA LETTER ZA' : 12374, + 'HIRAGANA LETTER ZE' : 12380, + 'HIRAGANA LETTER ZI' : 12376, + 'HIRAGANA LETTER ZO' : 12382, + 'HIRAGANA LETTER ZU' : 12378, + 'HIRAGANA VOICED ITERATION MARK' : 12446, + 'HOMOTHETIC' : 8763, + 'HORIZONTAL BAR' : 8213, + 'HORIZONTAL ELLIPSIS' : 8230, + 'HORIZONTAL LINE EXTENSION' : 9135, + 'HORIZONTAL SCAN LINE-1' : 9146, + 'HORIZONTAL SCAN LINE-3' : 9147, + 'HORIZONTAL SCAN LINE-7' : 9148, + 'HORIZONTAL SCAN LINE-9' : 9149, + 'HOT SPRINGS' : 9832, + 'HOURGLASS' : 8987, + 'HOUSE' : 8962, + 'HYPHEN' : 8208, + 'HYPHEN BULLET' : 8259, + 'HYPHEN-MINUS' : 45, + 'HYPHENATION POINT' : 8231, + 'HYSTERESIS SYMBOL' : 9102, + 'IDENTICAL TO' : 8801, + 'IDENTICAL TO AND SLANTED PARALLEL' : 10725, + 'IDENTICAL WITH DOT ABOVE' : 10855, + 'IDEOGRAPHIC ANNOTATION BOTTOM MARK' : 12696, + 'IDEOGRAPHIC ANNOTATION EARTH MARK' : 12702, + 'IDEOGRAPHIC ANNOTATION FIRST MARK' : 12697, + 'IDEOGRAPHIC ANNOTATION FOUR MARK' : 12693, + 'IDEOGRAPHIC ANNOTATION FOURTH MARK' : 12700, + 'IDEOGRAPHIC ANNOTATION HEAVEN MARK' : 12701, + 'IDEOGRAPHIC ANNOTATION LINKING MARK' : 12688, + 'IDEOGRAPHIC ANNOTATION MAN MARK' : 12703, + 'IDEOGRAPHIC ANNOTATION MIDDLE MARK' : 12695, + 'IDEOGRAPHIC ANNOTATION ONE MARK' : 12690, + 'IDEOGRAPHIC ANNOTATION REVERSE MARK' : 12689, + 'IDEOGRAPHIC ANNOTATION SECOND MARK' : 12698, + 'IDEOGRAPHIC ANNOTATION THIRD MARK' : 12699, + 'IDEOGRAPHIC ANNOTATION THREE MARK' : 12692, + 'IDEOGRAPHIC ANNOTATION TOP MARK' : 12694, + 'IDEOGRAPHIC ANNOTATION TWO MARK' : 12691, + 'IDEOGRAPHIC CLOSING MARK' : 12294, + 'IDEOGRAPHIC COMMA' : 12289, + 'IDEOGRAPHIC DEPARTING TONE MARK' : 12332, + 'IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW' : 12273, + 'IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW' : 12275, + 'IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND' : 12276, + 'IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT' : 12274, + 'IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT' : 12272, + 'IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID' : 12283, + 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE' : 12277, + 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW' : 12278, + 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT' : 12279, + 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT' : 12282, + 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT' : 12280, + 'IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT' : 12281, + 'IDEOGRAPHIC ENTERING TONE MARK' : 12333, + 'IDEOGRAPHIC FULL STOP' : 12290, + 'IDEOGRAPHIC HALF FILL SPACE' : 12351, + 'IDEOGRAPHIC ITERATION MARK' : 12293, + 'IDEOGRAPHIC LEVEL TONE MARK' : 12330, + 'IDEOGRAPHIC NUMBER ZERO' : 12295, + 'IDEOGRAPHIC RISING TONE MARK' : 12331, + 'IDEOGRAPHIC SPACE' : 12288, + 'IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL' : 12343, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL' : 12995, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST' : 12999, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT' : 13287, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN' : 13297, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN' : 13290, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN' : 13294, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE' : 13284, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR' : 13283, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN' : 13293, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE' : 13288, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN' : 13298, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE' : 13280, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN' : 13286, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN' : 13296, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX' : 13285, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN' : 13295, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN' : 13289, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN' : 13292, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY' : 13309, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE' : 13310, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE' : 13282, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE' : 13291, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY' : 13299, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT' : 13307, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE' : 13304, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR' : 13303, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE' : 13308, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE' : 13300, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN' : 13306, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX' : 13305, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE' : 13302, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO' : 13301, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO' : 13281, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER' : 13003, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY' : 12993, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT' : 13152, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN' : 13162, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN' : 13155, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN' : 13159, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE' : 13149, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR' : 13148, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN' : 13158, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE' : 13153, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN' : 13163, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE' : 13145, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN' : 13151, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN' : 13161, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX' : 13150, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN' : 13160, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN' : 13154, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN' : 13157, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE' : 13147, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE' : 13156, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY' : 13164, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR' : 13168, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE' : 13165, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE' : 13167, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO' : 13166, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO' : 13146, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO' : 13144, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY' : 12992, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY' : 12998, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE' : 12997, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH' : 12994, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY' : 12996, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER' : 13002, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER' : 13001, + 'IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER' : 13000, + 'IDEOGRAPHIC VARIATION INDICATOR' : 12350, + 'IMAGE OF' : 8887, + 'IMAGE OF OR APPROXIMATELY EQUAL TO' : 8787, + 'INCOMPLETE INFINITY' : 10716, + 'INCREASES AS' : 10721, + 'INCREMENT' : 8710, + 'INFINITY' : 8734, + 'INFINITY NEGATED WITH VERTICAL BAR' : 10718, + 'INFORMATION SOURCE' : 8505, + 'INHIBIT ARABIC FORM SHAPING' : 8300, + 'INHIBIT SYMMETRIC SWAPPING' : 8298, + 'INSERTION SYMBOL' : 9088, + 'INTEGRAL' : 8747, + 'INTEGRAL AROUND A POINT OPERATOR' : 10773, + 'INTEGRAL AVERAGE WITH SLASH' : 10767, + 'INTEGRAL EXTENSION' : 9134, + 'INTEGRAL WITH DOUBLE STROKE' : 10766, + 'INTEGRAL WITH INTERSECTION' : 10777, + 'INTEGRAL WITH LEFTWARDS ARROW WITH HOOK' : 10775, + 'INTEGRAL WITH OVERBAR' : 10779, + 'INTEGRAL WITH TIMES SIGN' : 10776, + 'INTEGRAL WITH UNDERBAR' : 10780, + 'INTEGRAL WITH UNION' : 10778, + 'INTERCALATE' : 8890, + 'INTERIOR PRODUCT' : 10812, + 'INTERLINEAR ANNOTATION ANCHOR' : 65529, + 'INTERLINEAR ANNOTATION SEPARATOR' : 65530, + 'INTERLINEAR ANNOTATION TERMINATOR' : 65531, + 'INTERROBANG' : 8253, + 'INTERSECTION' : 8745, + 'INTERSECTION ABOVE BAR ABOVE UNION' : 10825, + 'INTERSECTION ABOVE UNION' : 10823, + 'INTERSECTION BESIDE AND JOINED WITH INTERSECTION' : 10827, + 'INTERSECTION WITH DOT' : 10816, + 'INTERSECTION WITH LOGICAL AND' : 10820, + 'INTERSECTION WITH OVERBAR' : 10819, + 'INVERSE BULLET' : 9688, + 'INVERSE WHITE CIRCLE' : 9689, + 'INVERTED EXCLAMATION MARK' : 161, + 'INVERTED LAZY S' : 8766, + 'INVERTED OHM SIGN' : 8487, + 'INVERTED QUESTION MARK' : 191, + 'INVISIBLE SEPARATOR' : 8291, + 'INVISIBLE TIMES' : 8290, + 'JAPANESE INDUSTRIAL STANDARD SYMBOL' : 12292, + 'JOIN' : 10781, + 'JUPITER' : 9795, + 'KANGXI RADICAL AGAIN' : 12060, + 'KANGXI RADICAL AND' : 12157, + 'KANGXI RADICAL ARRIVE' : 12164, + 'KANGXI RADICAL ARROW' : 12142, + 'KANGXI RADICAL AXE' : 12100, + 'KANGXI RADICAL BADGER' : 12184, + 'KANGXI RADICAL BAMBOO' : 12149, + 'KANGXI RADICAL BEAN' : 12182, + 'KANGXI RADICAL BIG' : 12068, + 'KANGXI RADICAL BIRD' : 12227, + 'KANGXI RADICAL BITTER' : 12191, + 'KANGXI RADICAL BLACK' : 12234, + 'KANGXI RADICAL BLOOD' : 12174, + 'KANGXI RADICAL BLUE' : 12205, + 'KANGXI RADICAL BOAT' : 12168, + 'KANGXI RADICAL BODY' : 12189, + 'KANGXI RADICAL BOLT OF CLOTH' : 12134, + 'KANGXI RADICAL BONE' : 12219, + 'KANGXI RADICAL BOW' : 12088, + 'KANGXI RADICAL BRANCH' : 12096, + 'KANGXI RADICAL BRISTLE' : 12090, + 'KANGXI RADICAL BRUSH' : 12160, + 'KANGXI RADICAL CART' : 12190, + 'KANGXI RADICAL CAULDRON' : 12224, + 'KANGXI RADICAL CAVE' : 12147, + 'KANGXI RADICAL CHILD' : 12070, + 'KANGXI RADICAL CITY' : 12194, + 'KANGXI RADICAL CLAN' : 12114, + 'KANGXI RADICAL CLAW' : 12118, + 'KANGXI RADICAL CLIFF' : 12058, + 'KANGXI RADICAL CLOTHES' : 12176, + 'KANGXI RADICAL COLOR' : 12170, + 'KANGXI RADICAL COMPARE' : 12112, + 'KANGXI RADICAL CORPSE' : 12075, + 'KANGXI RADICAL COVER' : 12045, + 'KANGXI RADICAL COW' : 12124, + 'KANGXI RADICAL DEATH' : 12109, + 'KANGXI RADICAL DEER' : 12229, + 'KANGXI RADICAL DIPPER' : 12099, + 'KANGXI RADICAL DISH' : 12139, + 'KANGXI RADICAL DISTINGUISH' : 12196, + 'KANGXI RADICAL DIVINATION' : 12056, + 'KANGXI RADICAL DO NOT' : 12111, + 'KANGXI RADICAL DOG' : 12125, + 'KANGXI RADICAL DOOR' : 12094, + 'KANGXI RADICAL DOT' : 12034, + 'KANGXI RADICAL DOTTED CLIFF' : 12084, + 'KANGXI RADICAL DOTTED TENT' : 12136, + 'KANGXI RADICAL DOUBLE X' : 12120, + 'KANGXI RADICAL DOWN BOX' : 12044, + 'KANGXI RADICAL DRAGON' : 12243, + 'KANGXI RADICAL DRUM' : 12238, + 'KANGXI RADICAL DRY' : 12082, + 'KANGXI RADICAL EAR' : 12159, + 'KANGXI RADICAL EARTH' : 12063, + 'KANGXI RADICAL EAT' : 12215, + 'KANGXI RADICAL EIGHT' : 12043, + 'KANGXI RADICAL EMBROIDERY' : 12235, + 'KANGXI RADICAL ENCLOSURE' : 12062, + 'KANGXI RADICAL ENTER' : 12042, + 'KANGXI RADICAL EVEN' : 12241, + 'KANGXI RADICAL EVENING' : 12067, + 'KANGXI RADICAL EYE' : 12140, + 'KANGXI RADICAL FACE' : 12207, + 'KANGXI RADICAL FANG' : 12123, + 'KANGXI RADICAL FATHER' : 12119, + 'KANGXI RADICAL FEATHER' : 12155, + 'KANGXI RADICAL FIELD' : 12133, + 'KANGXI RADICAL FIGHT' : 12222, + 'KANGXI RADICAL FIRE' : 12117, + 'KANGXI RADICAL FISH' : 12226, + 'KANGXI RADICAL FLUTE' : 12245, + 'KANGXI RADICAL FLY' : 12214, + 'KANGXI RADICAL FOOT' : 12188, + 'KANGXI RADICAL FRAGRANT' : 12217, + 'KANGXI RADICAL FROG' : 12236, + 'KANGXI RADICAL FUR' : 12113, + 'KANGXI RADICAL GATE' : 12200, + 'KANGXI RADICAL GHOST' : 12225, + 'KANGXI RADICAL GO' : 12065, + 'KANGXI RADICAL GO SLOWLY' : 12066, + 'KANGXI RADICAL GOLD' : 12198, + 'KANGXI RADICAL GRAIN' : 12146, + 'KANGXI RADICAL GRASS' : 12171, + 'KANGXI RADICAL HAIR' : 12221, + 'KANGXI RADICAL HALBERD' : 12093, + 'KANGXI RADICAL HALF TREE TRUNK' : 12121, + 'KANGXI RADICAL HAND' : 12095, + 'KANGXI RADICAL HEAD' : 12216, + 'KANGXI RADICAL HEART' : 12092, + 'KANGXI RADICAL HEMP' : 12231, + 'KANGXI RADICAL HIDING ENCLOSURE' : 12054, + 'KANGXI RADICAL HOOK' : 12037, + 'KANGXI RADICAL HORN' : 12179, + 'KANGXI RADICAL HORSE' : 12218, + 'KANGXI RADICAL ICE' : 12046, + 'KANGXI RADICAL INCH' : 12072, + 'KANGXI RADICAL INSECT' : 12173, + 'KANGXI RADICAL JADE' : 12127, + 'KANGXI RADICAL JAR' : 12152, + 'KANGXI RADICAL KNIFE' : 12049, + 'KANGXI RADICAL LACK' : 12107, + 'KANGXI RADICAL LAME' : 12074, + 'KANGXI RADICAL LEAF' : 12212, + 'KANGXI RADICAL LEATHER' : 12208, + 'KANGXI RADICAL LEEK' : 12210, + 'KANGXI RADICAL LEGS' : 12041, + 'KANGXI RADICAL LID' : 12039, + 'KANGXI RADICAL LIFE' : 12131, + 'KANGXI RADICAL LINE' : 12033, + 'KANGXI RADICAL LONG' : 12199, + 'KANGXI RADICAL LONG STRIDE' : 12085, + 'KANGXI RADICAL MAN' : 12040, + 'KANGXI RADICAL MEAT' : 12161, + 'KANGXI RADICAL MELON' : 12128, + 'KANGXI RADICAL MILLET' : 12233, + 'KANGXI RADICAL MINISTER' : 12162, + 'KANGXI RADICAL MOON' : 12105, + 'KANGXI RADICAL MORNING' : 12192, + 'KANGXI RADICAL MORTAR' : 12165, + 'KANGXI RADICAL MOUND' : 12201, + 'KANGXI RADICAL MOUNTAIN' : 12077, + 'KANGXI RADICAL MOUTH' : 12061, + 'KANGXI RADICAL NET' : 12153, + 'KANGXI RADICAL NOSE' : 12240, + 'KANGXI RADICAL NOT' : 12102, + 'KANGXI RADICAL OLD' : 12156, + 'KANGXI RADICAL ONE' : 12032, + 'KANGXI RADICAL ONESELF' : 12080, + 'KANGXI RADICAL OPEN BOX' : 12048, + 'KANGXI RADICAL OPPOSE' : 12167, + 'KANGXI RADICAL PIG' : 12183, + 'KANGXI RADICAL PLOW' : 12158, + 'KANGXI RADICAL POWER' : 12050, + 'KANGXI RADICAL PRIVATE' : 12059, + 'KANGXI RADICAL PROFOUND' : 12126, + 'KANGXI RADICAL RAIN' : 12204, + 'KANGXI RADICAL RAP' : 12097, + 'KANGXI RADICAL RAT' : 12239, + 'KANGXI RADICAL RED' : 12186, + 'KANGXI RADICAL RICE' : 12150, + 'KANGXI RADICAL RIGHT OPEN BOX' : 12053, + 'KANGXI RADICAL RIVER' : 12078, + 'KANGXI RADICAL ROOF' : 12071, + 'KANGXI RADICAL RUN' : 12187, + 'KANGXI RADICAL SACRIFICIAL WINE' : 12223, + 'KANGXI RADICAL SALT' : 12228, + 'KANGXI RADICAL SAY' : 12104, + 'KANGXI RADICAL SCHOLAR' : 12064, + 'KANGXI RADICAL SCRIPT' : 12098, + 'KANGXI RADICAL SEAL' : 12057, + 'KANGXI RADICAL SECOND' : 12036, + 'KANGXI RADICAL SEE' : 12178, + 'KANGXI RADICAL SELF' : 12163, + 'KANGXI RADICAL SHEEP' : 12154, + 'KANGXI RADICAL SHELL' : 12185, + 'KANGXI RADICAL SHOOT' : 12087, + 'KANGXI RADICAL SHORT TAILED BIRD' : 12203, + 'KANGXI RADICAL SHORT THREAD' : 12083, + 'KANGXI RADICAL SICKNESS' : 12135, + 'KANGXI RADICAL SILK' : 12151, + 'KANGXI RADICAL SKIN' : 12138, + 'KANGXI RADICAL SLASH' : 12035, + 'KANGXI RADICAL SLAVE' : 12202, + 'KANGXI RADICAL SLICE' : 12122, + 'KANGXI RADICAL SMALL' : 12073, + 'KANGXI RADICAL SNOUT' : 12089, + 'KANGXI RADICAL SOUND' : 12211, + 'KANGXI RADICAL SPEAR' : 12141, + 'KANGXI RADICAL SPEECH' : 12180, + 'KANGXI RADICAL SPIRIT' : 12144, + 'KANGXI RADICAL SPOON' : 12052, + 'KANGXI RADICAL SPROUT' : 12076, + 'KANGXI RADICAL SQUARE' : 12101, + 'KANGXI RADICAL STAND' : 12148, + 'KANGXI RADICAL STEAM' : 12115, + 'KANGXI RADICAL STEP' : 12091, + 'KANGXI RADICAL STONE' : 12143, + 'KANGXI RADICAL STOP' : 12108, + 'KANGXI RADICAL STOPPING' : 12169, + 'KANGXI RADICAL SUN' : 12103, + 'KANGXI RADICAL SWEET' : 12130, + 'KANGXI RADICAL TABLE' : 12047, + 'KANGXI RADICAL TALL' : 12220, + 'KANGXI RADICAL TANNED LEATHER' : 12209, + 'KANGXI RADICAL TEN' : 12055, + 'KANGXI RADICAL TIGER' : 12172, + 'KANGXI RADICAL TILE' : 12129, + 'KANGXI RADICAL TONGUE' : 12166, + 'KANGXI RADICAL TOOTH' : 12242, + 'KANGXI RADICAL TRACK' : 12145, + 'KANGXI RADICAL TREE' : 12106, + 'KANGXI RADICAL TRIPOD' : 12237, + 'KANGXI RADICAL TURBAN' : 12081, + 'KANGXI RADICAL TURTLE' : 12244, + 'KANGXI RADICAL TWO' : 12038, + 'KANGXI RADICAL TWO HANDS' : 12086, + 'KANGXI RADICAL USE' : 12132, + 'KANGXI RADICAL VALLEY' : 12181, + 'KANGXI RADICAL VILLAGE' : 12197, + 'KANGXI RADICAL WALK' : 12193, + 'KANGXI RADICAL WALK ENCLOSURE' : 12175, + 'KANGXI RADICAL WATER' : 12116, + 'KANGXI RADICAL WEAPON' : 12110, + 'KANGXI RADICAL WEST' : 12177, + 'KANGXI RADICAL WHEAT' : 12230, + 'KANGXI RADICAL WHITE' : 12137, + 'KANGXI RADICAL WIND' : 12213, + 'KANGXI RADICAL WINE' : 12195, + 'KANGXI RADICAL WOMAN' : 12069, + 'KANGXI RADICAL WORK' : 12079, + 'KANGXI RADICAL WRAP' : 12051, + 'KANGXI RADICAL WRONG' : 12206, + 'KANGXI RADICAL YELLOW' : 12232, + 'KANNADA AI LENGTH MARK' : 3286, + 'KANNADA DIGIT EIGHT' : 3310, + 'KANNADA DIGIT FIVE' : 3307, + 'KANNADA DIGIT FOUR' : 3306, + 'KANNADA DIGIT NINE' : 3311, + 'KANNADA DIGIT ONE' : 3303, + 'KANNADA DIGIT SEVEN' : 3309, + 'KANNADA DIGIT SIX' : 3308, + 'KANNADA DIGIT THREE' : 3305, + 'KANNADA DIGIT TWO' : 3304, + 'KANNADA DIGIT ZERO' : 3302, + 'KANNADA LENGTH MARK' : 3285, + 'KANNADA LETTER A' : 3205, + 'KANNADA LETTER AA' : 3206, + 'KANNADA LETTER AI' : 3216, + 'KANNADA LETTER AU' : 3220, + 'KANNADA LETTER BA' : 3244, + 'KANNADA LETTER BHA' : 3245, + 'KANNADA LETTER CA' : 3226, + 'KANNADA LETTER CHA' : 3227, + 'KANNADA LETTER DA' : 3238, + 'KANNADA LETTER DDA' : 3233, + 'KANNADA LETTER DDHA' : 3234, + 'KANNADA LETTER DHA' : 3239, + 'KANNADA LETTER E' : 3214, + 'KANNADA LETTER EE' : 3215, + 'KANNADA LETTER FA' : 3294, + 'KANNADA LETTER GA' : 3223, + 'KANNADA LETTER GHA' : 3224, + 'KANNADA LETTER HA' : 3257, + 'KANNADA LETTER I' : 3207, + 'KANNADA LETTER II' : 3208, + 'KANNADA LETTER JA' : 3228, + 'KANNADA LETTER JHA' : 3229, + 'KANNADA LETTER KA' : 3221, + 'KANNADA LETTER KHA' : 3222, + 'KANNADA LETTER LA' : 3250, + 'KANNADA LETTER LLA' : 3251, + 'KANNADA LETTER MA' : 3246, + 'KANNADA LETTER NA' : 3240, + 'KANNADA LETTER NGA' : 3225, + 'KANNADA LETTER NNA' : 3235, + 'KANNADA LETTER NYA' : 3230, + 'KANNADA LETTER O' : 3218, + 'KANNADA LETTER OO' : 3219, + 'KANNADA LETTER PA' : 3242, + 'KANNADA LETTER PHA' : 3243, + 'KANNADA LETTER RA' : 3248, + 'KANNADA LETTER RRA' : 3249, + 'KANNADA LETTER SA' : 3256, + 'KANNADA LETTER SHA' : 3254, + 'KANNADA LETTER SSA' : 3255, + 'KANNADA LETTER TA' : 3236, + 'KANNADA LETTER THA' : 3237, + 'KANNADA LETTER TTA' : 3231, + 'KANNADA LETTER TTHA' : 3232, + 'KANNADA LETTER U' : 3209, + 'KANNADA LETTER UU' : 3210, + 'KANNADA LETTER VA' : 3253, + 'KANNADA LETTER VOCALIC L' : 3212, + 'KANNADA LETTER VOCALIC LL' : 3297, + 'KANNADA LETTER VOCALIC R' : 3211, + 'KANNADA LETTER VOCALIC RR' : 3296, + 'KANNADA LETTER YA' : 3247, + 'KANNADA SIGN ANUSVARA' : 3202, + 'KANNADA SIGN VIRAMA' : 3277, + 'KANNADA SIGN VISARGA' : 3203, + 'KANNADA VOWEL SIGN AA' : 3262, + 'KANNADA VOWEL SIGN AI' : 3272, + 'KANNADA VOWEL SIGN AU' : 3276, + 'KANNADA VOWEL SIGN E' : 3270, + 'KANNADA VOWEL SIGN EE' : 3271, + 'KANNADA VOWEL SIGN I' : 3263, + 'KANNADA VOWEL SIGN II' : 3264, + 'KANNADA VOWEL SIGN O' : 3274, + 'KANNADA VOWEL SIGN OO' : 3275, + 'KANNADA VOWEL SIGN U' : 3265, + 'KANNADA VOWEL SIGN UU' : 3266, + 'KANNADA VOWEL SIGN VOCALIC R' : 3267, + 'KANNADA VOWEL SIGN VOCALIC RR' : 3268, + 'KATAKANA DIGRAPH KOTO' : 12543, + 'KATAKANA ITERATION MARK' : 12541, + 'KATAKANA LETTER A' : 12450, + 'KATAKANA LETTER BA' : 12496, + 'KATAKANA LETTER BE' : 12505, + 'KATAKANA LETTER BI' : 12499, + 'KATAKANA LETTER BO' : 12508, + 'KATAKANA LETTER BU' : 12502, + 'KATAKANA LETTER DA' : 12480, + 'KATAKANA LETTER DE' : 12487, + 'KATAKANA LETTER DI' : 12482, + 'KATAKANA LETTER DO' : 12489, + 'KATAKANA LETTER DU' : 12485, + 'KATAKANA LETTER E' : 12456, + 'KATAKANA LETTER GA' : 12460, + 'KATAKANA LETTER GE' : 12466, + 'KATAKANA LETTER GI' : 12462, + 'KATAKANA LETTER GO' : 12468, + 'KATAKANA LETTER GU' : 12464, + 'KATAKANA LETTER HA' : 12495, + 'KATAKANA LETTER HE' : 12504, + 'KATAKANA LETTER HI' : 12498, + 'KATAKANA LETTER HO' : 12507, + 'KATAKANA LETTER HU' : 12501, + 'KATAKANA LETTER I' : 12452, + 'KATAKANA LETTER KA' : 12459, + 'KATAKANA LETTER KE' : 12465, + 'KATAKANA LETTER KI' : 12461, + 'KATAKANA LETTER KO' : 12467, + 'KATAKANA LETTER KU' : 12463, + 'KATAKANA LETTER MA' : 12510, + 'KATAKANA LETTER ME' : 12513, + 'KATAKANA LETTER MI' : 12511, + 'KATAKANA LETTER MO' : 12514, + 'KATAKANA LETTER MU' : 12512, + 'KATAKANA LETTER N' : 12531, + 'KATAKANA LETTER NA' : 12490, + 'KATAKANA LETTER NE' : 12493, + 'KATAKANA LETTER NI' : 12491, + 'KATAKANA LETTER NO' : 12494, + 'KATAKANA LETTER NU' : 12492, + 'KATAKANA LETTER O' : 12458, + 'KATAKANA LETTER PA' : 12497, + 'KATAKANA LETTER PE' : 12506, + 'KATAKANA LETTER PI' : 12500, + 'KATAKANA LETTER PO' : 12509, + 'KATAKANA LETTER PU' : 12503, + 'KATAKANA LETTER RA' : 12521, + 'KATAKANA LETTER RE' : 12524, + 'KATAKANA LETTER RI' : 12522, + 'KATAKANA LETTER RO' : 12525, + 'KATAKANA LETTER RU' : 12523, + 'KATAKANA LETTER SA' : 12469, + 'KATAKANA LETTER SE' : 12475, + 'KATAKANA LETTER SI' : 12471, + 'KATAKANA LETTER SMALL A' : 12449, + 'KATAKANA LETTER SMALL E' : 12455, + 'KATAKANA LETTER SMALL HA' : 12789, + 'KATAKANA LETTER SMALL HE' : 12792, + 'KATAKANA LETTER SMALL HI' : 12790, + 'KATAKANA LETTER SMALL HO' : 12793, + 'KATAKANA LETTER SMALL HU' : 12791, + 'KATAKANA LETTER SMALL I' : 12451, + 'KATAKANA LETTER SMALL KA' : 12533, + 'KATAKANA LETTER SMALL KE' : 12534, + 'KATAKANA LETTER SMALL KU' : 12784, + 'KATAKANA LETTER SMALL MU' : 12794, + 'KATAKANA LETTER SMALL NU' : 12788, + 'KATAKANA LETTER SMALL O' : 12457, + 'KATAKANA LETTER SMALL RA' : 12795, + 'KATAKANA LETTER SMALL RE' : 12798, + 'KATAKANA LETTER SMALL RI' : 12796, + 'KATAKANA LETTER SMALL RO' : 12799, + 'KATAKANA LETTER SMALL RU' : 12797, + 'KATAKANA LETTER SMALL SI' : 12785, + 'KATAKANA LETTER SMALL SU' : 12786, + 'KATAKANA LETTER SMALL TO' : 12787, + 'KATAKANA LETTER SMALL TU' : 12483, + 'KATAKANA LETTER SMALL U' : 12453, + 'KATAKANA LETTER SMALL WA' : 12526, + 'KATAKANA LETTER SMALL YA' : 12515, + 'KATAKANA LETTER SMALL YO' : 12519, + 'KATAKANA LETTER SMALL YU' : 12517, + 'KATAKANA LETTER SO' : 12477, + 'KATAKANA LETTER SU' : 12473, + 'KATAKANA LETTER TA' : 12479, + 'KATAKANA LETTER TE' : 12486, + 'KATAKANA LETTER TI' : 12481, + 'KATAKANA LETTER TO' : 12488, + 'KATAKANA LETTER TU' : 12484, + 'KATAKANA LETTER U' : 12454, + 'KATAKANA LETTER VA' : 12535, + 'KATAKANA LETTER VE' : 12537, + 'KATAKANA LETTER VI' : 12536, + 'KATAKANA LETTER VO' : 12538, + 'KATAKANA LETTER VU' : 12532, + 'KATAKANA LETTER WA' : 12527, + 'KATAKANA LETTER WE' : 12529, + 'KATAKANA LETTER WI' : 12528, + 'KATAKANA LETTER WO' : 12530, + 'KATAKANA LETTER YA' : 12516, + 'KATAKANA LETTER YO' : 12520, + 'KATAKANA LETTER YU' : 12518, + 'KATAKANA LETTER ZA' : 12470, + 'KATAKANA LETTER ZE' : 12476, + 'KATAKANA LETTER ZI' : 12472, + 'KATAKANA LETTER ZO' : 12478, + 'KATAKANA LETTER ZU' : 12474, + 'KATAKANA MIDDLE DOT' : 12539, + 'KATAKANA VOICED ITERATION MARK' : 12542, + 'KATAKANA-HIRAGANA DOUBLE HYPHEN' : 12448, + 'KATAKANA-HIRAGANA PROLONGED SOUND MARK' : 12540, + 'KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK' : 12444, + 'KATAKANA-HIRAGANA VOICED SOUND MARK' : 12443, + 'KELVIN SIGN' : 8490, + 'KEYBOARD' : 9000, + 'KHMER CURRENCY SYMBOL RIEL' : 6107, + 'KHMER DIGIT EIGHT' : 6120, + 'KHMER DIGIT FIVE' : 6117, + 'KHMER DIGIT FOUR' : 6116, + 'KHMER DIGIT NINE' : 6121, + 'KHMER DIGIT ONE' : 6113, + 'KHMER DIGIT SEVEN' : 6119, + 'KHMER DIGIT SIX' : 6118, + 'KHMER DIGIT THREE' : 6115, + 'KHMER DIGIT TWO' : 6114, + 'KHMER DIGIT ZERO' : 6112, + 'KHMER INDEPENDENT VOWEL LY' : 6061, + 'KHMER INDEPENDENT VOWEL LYY' : 6062, + 'KHMER INDEPENDENT VOWEL QAA' : 6052, + 'KHMER INDEPENDENT VOWEL QAI' : 6064, + 'KHMER INDEPENDENT VOWEL QAQ' : 6051, + 'KHMER INDEPENDENT VOWEL QAU' : 6067, + 'KHMER INDEPENDENT VOWEL QE' : 6063, + 'KHMER INDEPENDENT VOWEL QI' : 6053, + 'KHMER INDEPENDENT VOWEL QII' : 6054, + 'KHMER INDEPENDENT VOWEL QOO TYPE ONE' : 6065, + 'KHMER INDEPENDENT VOWEL QOO TYPE TWO' : 6066, + 'KHMER INDEPENDENT VOWEL QU' : 6055, + 'KHMER INDEPENDENT VOWEL QUK' : 6056, + 'KHMER INDEPENDENT VOWEL QUU' : 6057, + 'KHMER INDEPENDENT VOWEL QUUV' : 6058, + 'KHMER INDEPENDENT VOWEL RY' : 6059, + 'KHMER INDEPENDENT VOWEL RYY' : 6060, + 'KHMER LETTER BA' : 6036, + 'KHMER LETTER CA' : 6021, + 'KHMER LETTER CHA' : 6022, + 'KHMER LETTER CHO' : 6024, + 'KHMER LETTER CO' : 6023, + 'KHMER LETTER DA' : 6026, + 'KHMER LETTER DO' : 6028, + 'KHMER LETTER HA' : 6048, + 'KHMER LETTER KA' : 6016, + 'KHMER LETTER KHA' : 6017, + 'KHMER LETTER KHO' : 6019, + 'KHMER LETTER KO' : 6018, + 'KHMER LETTER LA' : 6049, + 'KHMER LETTER LO' : 6043, + 'KHMER LETTER MO' : 6040, + 'KHMER LETTER NGO' : 6020, + 'KHMER LETTER NNO' : 6030, + 'KHMER LETTER NO' : 6035, + 'KHMER LETTER NYO' : 6025, + 'KHMER LETTER PHA' : 6037, + 'KHMER LETTER PHO' : 6039, + 'KHMER LETTER PO' : 6038, + 'KHMER LETTER QA' : 6050, + 'KHMER LETTER RO' : 6042, + 'KHMER LETTER SA' : 6047, + 'KHMER LETTER SHA' : 6045, + 'KHMER LETTER SSO' : 6046, + 'KHMER LETTER TA' : 6031, + 'KHMER LETTER THA' : 6032, + 'KHMER LETTER THO' : 6034, + 'KHMER LETTER TO' : 6033, + 'KHMER LETTER TTHA' : 6027, + 'KHMER LETTER TTHO' : 6029, + 'KHMER LETTER VO' : 6044, + 'KHMER LETTER YO' : 6041, + 'KHMER SIGN AHSDA' : 6095, + 'KHMER SIGN AVAKRAHASANYA' : 6108, + 'KHMER SIGN BANTOC' : 6091, + 'KHMER SIGN BARIYOOSAN' : 6101, + 'KHMER SIGN BATHAMASAT' : 6099, + 'KHMER SIGN BEYYAL' : 6104, + 'KHMER SIGN CAMNUC PII KUUH' : 6102, + 'KHMER SIGN COENG' : 6098, + 'KHMER SIGN KAKABAT' : 6094, + 'KHMER SIGN KHAN' : 6100, + 'KHMER SIGN KOOMUUT' : 6106, + 'KHMER SIGN LEK TOO' : 6103, + 'KHMER SIGN MUUSIKATOAN' : 6089, + 'KHMER SIGN NIKAHIT' : 6086, + 'KHMER SIGN PHNAEK MUAN' : 6105, + 'KHMER SIGN REAHMUK' : 6087, + 'KHMER SIGN ROBAT' : 6092, + 'KHMER SIGN SAMYOK SANNYA' : 6096, + 'KHMER SIGN TOANDAKHIAT' : 6093, + 'KHMER SIGN TRIISAP' : 6090, + 'KHMER SIGN VIRIAM' : 6097, + 'KHMER SIGN YUUKALEAPINTU' : 6088, + 'KHMER VOWEL INHERENT AA' : 6069, + 'KHMER VOWEL INHERENT AQ' : 6068, + 'KHMER VOWEL SIGN AA' : 6070, + 'KHMER VOWEL SIGN AE' : 6082, + 'KHMER VOWEL SIGN AI' : 6083, + 'KHMER VOWEL SIGN AU' : 6085, + 'KHMER VOWEL SIGN E' : 6081, + 'KHMER VOWEL SIGN I' : 6071, + 'KHMER VOWEL SIGN IE' : 6080, + 'KHMER VOWEL SIGN II' : 6072, + 'KHMER VOWEL SIGN OE' : 6078, + 'KHMER VOWEL SIGN OO' : 6084, + 'KHMER VOWEL SIGN U' : 6075, + 'KHMER VOWEL SIGN UA' : 6077, + 'KHMER VOWEL SIGN UU' : 6076, + 'KHMER VOWEL SIGN Y' : 6073, + 'KHMER VOWEL SIGN YA' : 6079, + 'KHMER VOWEL SIGN YY' : 6074, + 'KIP SIGN' : 8365, + 'KOREAN STANDARD SYMBOL' : 12927, + 'L B BAR SYMBOL' : 8468, + 'LANGUAGE TAG' : 917505, + 'LAO CANCELLATION MARK' : 3788, + 'LAO DIGIT EIGHT' : 3800, + 'LAO DIGIT FIVE' : 3797, + 'LAO DIGIT FOUR' : 3796, + 'LAO DIGIT NINE' : 3801, + 'LAO DIGIT ONE' : 3793, + 'LAO DIGIT SEVEN' : 3799, + 'LAO DIGIT SIX' : 3798, + 'LAO DIGIT THREE' : 3795, + 'LAO DIGIT TWO' : 3794, + 'LAO DIGIT ZERO' : 3792, + 'LAO ELLIPSIS' : 3759, + 'LAO HO MO' : 3805, + 'LAO HO NO' : 3804, + 'LAO KO LA' : 3782, + 'LAO LETTER BO' : 3738, + 'LAO LETTER CO' : 3720, + 'LAO LETTER DO' : 3732, + 'LAO LETTER FO SUNG' : 3743, + 'LAO LETTER FO TAM' : 3741, + 'LAO LETTER HO SUNG' : 3755, + 'LAO LETTER HO TAM' : 3758, + 'LAO LETTER KHO SUNG' : 3714, + 'LAO LETTER KHO TAM' : 3716, + 'LAO LETTER KO' : 3713, + 'LAO LETTER LO LING' : 3747, + 'LAO LETTER LO LOOT' : 3749, + 'LAO LETTER MO' : 3745, + 'LAO LETTER NGO' : 3719, + 'LAO LETTER NO' : 3737, + 'LAO LETTER NYO' : 3725, + 'LAO LETTER O' : 3757, + 'LAO LETTER PHO SUNG' : 3740, + 'LAO LETTER PHO TAM' : 3742, + 'LAO LETTER PO' : 3739, + 'LAO LETTER SO SUNG' : 3754, + 'LAO LETTER SO TAM' : 3722, + 'LAO LETTER THO SUNG' : 3734, + 'LAO LETTER THO TAM' : 3735, + 'LAO LETTER TO' : 3733, + 'LAO LETTER WO' : 3751, + 'LAO LETTER YO' : 3746, + 'LAO NIGGAHITA' : 3789, + 'LAO SEMIVOWEL SIGN LO' : 3772, + 'LAO SEMIVOWEL SIGN NYO' : 3773, + 'LAO TONE MAI CATAWA' : 3787, + 'LAO TONE MAI EK' : 3784, + 'LAO TONE MAI THO' : 3785, + 'LAO TONE MAI TI' : 3786, + 'LAO VOWEL SIGN A' : 3760, + 'LAO VOWEL SIGN AA' : 3762, + 'LAO VOWEL SIGN AI' : 3780, + 'LAO VOWEL SIGN AM' : 3763, + 'LAO VOWEL SIGN AY' : 3779, + 'LAO VOWEL SIGN E' : 3776, + 'LAO VOWEL SIGN EI' : 3777, + 'LAO VOWEL SIGN I' : 3764, + 'LAO VOWEL SIGN II' : 3765, + 'LAO VOWEL SIGN MAI KAN' : 3761, + 'LAO VOWEL SIGN MAI KON' : 3771, + 'LAO VOWEL SIGN O' : 3778, + 'LAO VOWEL SIGN U' : 3768, + 'LAO VOWEL SIGN UU' : 3769, + 'LAO VOWEL SIGN Y' : 3766, + 'LAO VOWEL SIGN YY' : 3767, + 'LARGE CIRCLE' : 9711, + 'LARGE DOWN TACK' : 10201, + 'LARGE LEFT TRIANGLE OPERATOR' : 10782, + 'LARGE TRIPLE VERTICAL BAR OPERATOR' : 11004, + 'LARGE UP TACK' : 10200, + 'LARGER THAN' : 10923, + 'LARGER THAN OR EQUAL TO' : 10925, + 'LAST QUARTER MOON' : 9790, + 'LATIN CAPITAL LETTER A' : 65, + 'LATIN CAPITAL LETTER A WITH ACUTE' : 193, + 'LATIN CAPITAL LETTER A WITH BREVE' : 258, + 'LATIN CAPITAL LETTER A WITH BREVE AND ACUTE' : 7854, + 'LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW' : 7862, + 'LATIN CAPITAL LETTER A WITH BREVE AND GRAVE' : 7856, + 'LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE' : 7858, + 'LATIN CAPITAL LETTER A WITH BREVE AND TILDE' : 7860, + 'LATIN CAPITAL LETTER A WITH CARON' : 461, + 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' : 194, + 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE' : 7844, + 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW' : 7852, + 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE' : 7846, + 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE' : 7848, + 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE' : 7850, + 'LATIN CAPITAL LETTER A WITH DIAERESIS' : 196, + 'LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON' : 478, + 'LATIN CAPITAL LETTER A WITH DOT ABOVE' : 550, + 'LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON' : 480, + 'LATIN CAPITAL LETTER A WITH DOT BELOW' : 7840, + 'LATIN CAPITAL LETTER A WITH DOUBLE GRAVE' : 512, + 'LATIN CAPITAL LETTER A WITH GRAVE' : 192, + 'LATIN CAPITAL LETTER A WITH HOOK ABOVE' : 7842, + 'LATIN CAPITAL LETTER A WITH INVERTED BREVE' : 514, + 'LATIN CAPITAL LETTER A WITH MACRON' : 256, + 'LATIN CAPITAL LETTER A WITH OGONEK' : 260, + 'LATIN CAPITAL LETTER A WITH RING ABOVE' : 197, + 'LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE' : 506, + 'LATIN CAPITAL LETTER A WITH RING BELOW' : 7680, + 'LATIN CAPITAL LETTER A WITH TILDE' : 195, + 'LATIN CAPITAL LETTER AE' : 198, + 'LATIN CAPITAL LETTER AE WITH ACUTE' : 508, + 'LATIN CAPITAL LETTER AE WITH MACRON' : 482, + 'LATIN CAPITAL LETTER AFRICAN D' : 393, + 'LATIN CAPITAL LETTER B' : 66, + 'LATIN CAPITAL LETTER B WITH DOT ABOVE' : 7682, + 'LATIN CAPITAL LETTER B WITH DOT BELOW' : 7684, + 'LATIN CAPITAL LETTER B WITH HOOK' : 385, + 'LATIN CAPITAL LETTER B WITH LINE BELOW' : 7686, + 'LATIN CAPITAL LETTER B WITH TOPBAR' : 386, + 'LATIN CAPITAL LETTER C' : 67, + 'LATIN CAPITAL LETTER C WITH ACUTE' : 262, + 'LATIN CAPITAL LETTER C WITH CARON' : 268, + 'LATIN CAPITAL LETTER C WITH CEDILLA' : 199, + 'LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE' : 7688, + 'LATIN CAPITAL LETTER C WITH CIRCUMFLEX' : 264, + 'LATIN CAPITAL LETTER C WITH DOT ABOVE' : 266, + 'LATIN CAPITAL LETTER C WITH HOOK' : 391, + 'LATIN CAPITAL LETTER D' : 68, + 'LATIN CAPITAL LETTER D WITH CARON' : 270, + 'LATIN CAPITAL LETTER D WITH CEDILLA' : 7696, + 'LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW' : 7698, + 'LATIN CAPITAL LETTER D WITH DOT ABOVE' : 7690, + 'LATIN CAPITAL LETTER D WITH DOT BELOW' : 7692, + 'LATIN CAPITAL LETTER D WITH HOOK' : 394, + 'LATIN CAPITAL LETTER D WITH LINE BELOW' : 7694, + 'LATIN CAPITAL LETTER D WITH SMALL LETTER Z' : 498, + 'LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON' : 453, + 'LATIN CAPITAL LETTER D WITH STROKE' : 272, + 'LATIN CAPITAL LETTER D WITH TOPBAR' : 395, + 'LATIN CAPITAL LETTER DZ' : 497, + 'LATIN CAPITAL LETTER DZ WITH CARON' : 452, + 'LATIN CAPITAL LETTER E' : 69, + 'LATIN CAPITAL LETTER E WITH ACUTE' : 201, + 'LATIN CAPITAL LETTER E WITH BREVE' : 276, + 'LATIN CAPITAL LETTER E WITH CARON' : 282, + 'LATIN CAPITAL LETTER E WITH CEDILLA' : 552, + 'LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE' : 7708, + 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' : 202, + 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE' : 7870, + 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW' : 7878, + 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE' : 7872, + 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE' : 7874, + 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE' : 7876, + 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW' : 7704, + 'LATIN CAPITAL LETTER E WITH DIAERESIS' : 203, + 'LATIN CAPITAL LETTER E WITH DOT ABOVE' : 278, + 'LATIN CAPITAL LETTER E WITH DOT BELOW' : 7864, + 'LATIN CAPITAL LETTER E WITH DOUBLE GRAVE' : 516, + 'LATIN CAPITAL LETTER E WITH GRAVE' : 200, + 'LATIN CAPITAL LETTER E WITH HOOK ABOVE' : 7866, + 'LATIN CAPITAL LETTER E WITH INVERTED BREVE' : 518, + 'LATIN CAPITAL LETTER E WITH MACRON' : 274, + 'LATIN CAPITAL LETTER E WITH MACRON AND ACUTE' : 7702, + 'LATIN CAPITAL LETTER E WITH MACRON AND GRAVE' : 7700, + 'LATIN CAPITAL LETTER E WITH OGONEK' : 280, + 'LATIN CAPITAL LETTER E WITH TILDE' : 7868, + 'LATIN CAPITAL LETTER E WITH TILDE BELOW' : 7706, + 'LATIN CAPITAL LETTER ENG' : 330, + 'LATIN CAPITAL LETTER ESH' : 425, + 'LATIN CAPITAL LETTER ETH' : 208, + 'LATIN CAPITAL LETTER EZH' : 439, + 'LATIN CAPITAL LETTER EZH REVERSED' : 440, + 'LATIN CAPITAL LETTER EZH WITH CARON' : 494, + 'LATIN CAPITAL LETTER F' : 70, + 'LATIN CAPITAL LETTER F WITH DOT ABOVE' : 7710, + 'LATIN CAPITAL LETTER F WITH HOOK' : 401, + 'LATIN CAPITAL LETTER G' : 71, + 'LATIN CAPITAL LETTER G WITH ACUTE' : 500, + 'LATIN CAPITAL LETTER G WITH BREVE' : 286, + 'LATIN CAPITAL LETTER G WITH CARON' : 486, + 'LATIN CAPITAL LETTER G WITH CEDILLA' : 290, + 'LATIN CAPITAL LETTER G WITH CIRCUMFLEX' : 284, + 'LATIN CAPITAL LETTER G WITH DOT ABOVE' : 288, + 'LATIN CAPITAL LETTER G WITH HOOK' : 403, + 'LATIN CAPITAL LETTER G WITH MACRON' : 7712, + 'LATIN CAPITAL LETTER G WITH STROKE' : 484, + 'LATIN CAPITAL LETTER GAMMA' : 404, + 'LATIN CAPITAL LETTER H' : 72, + 'LATIN CAPITAL LETTER H WITH BREVE BELOW' : 7722, + 'LATIN CAPITAL LETTER H WITH CARON' : 542, + 'LATIN CAPITAL LETTER H WITH CEDILLA' : 7720, + 'LATIN CAPITAL LETTER H WITH CIRCUMFLEX' : 292, + 'LATIN CAPITAL LETTER H WITH DIAERESIS' : 7718, + 'LATIN CAPITAL LETTER H WITH DOT ABOVE' : 7714, + 'LATIN CAPITAL LETTER H WITH DOT BELOW' : 7716, + 'LATIN CAPITAL LETTER H WITH STROKE' : 294, + 'LATIN CAPITAL LETTER HWAIR' : 502, + 'LATIN CAPITAL LETTER I' : 73, + 'LATIN CAPITAL LETTER I WITH ACUTE' : 205, + 'LATIN CAPITAL LETTER I WITH BREVE' : 300, + 'LATIN CAPITAL LETTER I WITH CARON' : 463, + 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' : 206, + 'LATIN CAPITAL LETTER I WITH DIAERESIS' : 207, + 'LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE' : 7726, + 'LATIN CAPITAL LETTER I WITH DOT ABOVE' : 304, + 'LATIN CAPITAL LETTER I WITH DOT BELOW' : 7882, + 'LATIN CAPITAL LETTER I WITH DOUBLE GRAVE' : 520, + 'LATIN CAPITAL LETTER I WITH GRAVE' : 204, + 'LATIN CAPITAL LETTER I WITH HOOK ABOVE' : 7880, + 'LATIN CAPITAL LETTER I WITH INVERTED BREVE' : 522, + 'LATIN CAPITAL LETTER I WITH MACRON' : 298, + 'LATIN CAPITAL LETTER I WITH OGONEK' : 302, + 'LATIN CAPITAL LETTER I WITH STROKE' : 407, + 'LATIN CAPITAL LETTER I WITH TILDE' : 296, + 'LATIN CAPITAL LETTER I WITH TILDE BELOW' : 7724, + 'LATIN CAPITAL LETTER IOTA' : 406, + 'LATIN CAPITAL LETTER J' : 74, + 'LATIN CAPITAL LETTER J WITH CIRCUMFLEX' : 308, + 'LATIN CAPITAL LETTER K' : 75, + 'LATIN CAPITAL LETTER K WITH ACUTE' : 7728, + 'LATIN CAPITAL LETTER K WITH CARON' : 488, + 'LATIN CAPITAL LETTER K WITH CEDILLA' : 310, + 'LATIN CAPITAL LETTER K WITH DOT BELOW' : 7730, + 'LATIN CAPITAL LETTER K WITH HOOK' : 408, + 'LATIN CAPITAL LETTER K WITH LINE BELOW' : 7732, + 'LATIN CAPITAL LETTER L' : 76, + 'LATIN CAPITAL LETTER L WITH ACUTE' : 313, + 'LATIN CAPITAL LETTER L WITH CARON' : 317, + 'LATIN CAPITAL LETTER L WITH CEDILLA' : 315, + 'LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW' : 7740, + 'LATIN CAPITAL LETTER L WITH DOT BELOW' : 7734, + 'LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON' : 7736, + 'LATIN CAPITAL LETTER L WITH LINE BELOW' : 7738, + 'LATIN CAPITAL LETTER L WITH MIDDLE DOT' : 319, + 'LATIN CAPITAL LETTER L WITH SMALL LETTER J' : 456, + 'LATIN CAPITAL LETTER L WITH STROKE' : 321, + 'LATIN CAPITAL LETTER LJ' : 455, + 'LATIN CAPITAL LETTER M' : 77, + 'LATIN CAPITAL LETTER M WITH ACUTE' : 7742, + 'LATIN CAPITAL LETTER M WITH DOT ABOVE' : 7744, + 'LATIN CAPITAL LETTER M WITH DOT BELOW' : 7746, + 'LATIN CAPITAL LETTER N' : 78, + 'LATIN CAPITAL LETTER N WITH ACUTE' : 323, + 'LATIN CAPITAL LETTER N WITH CARON' : 327, + 'LATIN CAPITAL LETTER N WITH CEDILLA' : 325, + 'LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW' : 7754, + 'LATIN CAPITAL LETTER N WITH DOT ABOVE' : 7748, + 'LATIN CAPITAL LETTER N WITH DOT BELOW' : 7750, + 'LATIN CAPITAL LETTER N WITH GRAVE' : 504, + 'LATIN CAPITAL LETTER N WITH LEFT HOOK' : 413, + 'LATIN CAPITAL LETTER N WITH LINE BELOW' : 7752, + 'LATIN CAPITAL LETTER N WITH LONG RIGHT LEG' : 544, + 'LATIN CAPITAL LETTER N WITH SMALL LETTER J' : 459, + 'LATIN CAPITAL LETTER N WITH TILDE' : 209, + 'LATIN CAPITAL LETTER NJ' : 458, + 'LATIN CAPITAL LETTER O' : 79, + 'LATIN CAPITAL LETTER O WITH ACUTE' : 211, + 'LATIN CAPITAL LETTER O WITH BREVE' : 334, + 'LATIN CAPITAL LETTER O WITH CARON' : 465, + 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' : 212, + 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE' : 7888, + 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW' : 7896, + 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE' : 7890, + 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE' : 7892, + 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE' : 7894, + 'LATIN CAPITAL LETTER O WITH DIAERESIS' : 214, + 'LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON' : 554, + 'LATIN CAPITAL LETTER O WITH DOT ABOVE' : 558, + 'LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON' : 560, + 'LATIN CAPITAL LETTER O WITH DOT BELOW' : 7884, + 'LATIN CAPITAL LETTER O WITH DOUBLE ACUTE' : 336, + 'LATIN CAPITAL LETTER O WITH DOUBLE GRAVE' : 524, + 'LATIN CAPITAL LETTER O WITH GRAVE' : 210, + 'LATIN CAPITAL LETTER O WITH HOOK ABOVE' : 7886, + 'LATIN CAPITAL LETTER O WITH HORN' : 416, + 'LATIN CAPITAL LETTER O WITH HORN AND ACUTE' : 7898, + 'LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW' : 7906, + 'LATIN CAPITAL LETTER O WITH HORN AND GRAVE' : 7900, + 'LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE' : 7902, + 'LATIN CAPITAL LETTER O WITH HORN AND TILDE' : 7904, + 'LATIN CAPITAL LETTER O WITH INVERTED BREVE' : 526, + 'LATIN CAPITAL LETTER O WITH MACRON' : 332, + 'LATIN CAPITAL LETTER O WITH MACRON AND ACUTE' : 7762, + 'LATIN CAPITAL LETTER O WITH MACRON AND GRAVE' : 7760, + 'LATIN CAPITAL LETTER O WITH MIDDLE TILDE' : 415, + 'LATIN CAPITAL LETTER O WITH OGONEK' : 490, + 'LATIN CAPITAL LETTER O WITH OGONEK AND MACRON' : 492, + 'LATIN CAPITAL LETTER O WITH STROKE' : 216, + 'LATIN CAPITAL LETTER O WITH STROKE AND ACUTE' : 510, + 'LATIN CAPITAL LETTER O WITH TILDE' : 213, + 'LATIN CAPITAL LETTER O WITH TILDE AND ACUTE' : 7756, + 'LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS' : 7758, + 'LATIN CAPITAL LETTER O WITH TILDE AND MACRON' : 556, + 'LATIN CAPITAL LETTER OI' : 418, + 'LATIN CAPITAL LETTER OPEN E' : 400, + 'LATIN CAPITAL LETTER OPEN O' : 390, + 'LATIN CAPITAL LETTER OU' : 546, + 'LATIN CAPITAL LETTER P' : 80, + 'LATIN CAPITAL LETTER P WITH ACUTE' : 7764, + 'LATIN CAPITAL LETTER P WITH DOT ABOVE' : 7766, + 'LATIN CAPITAL LETTER P WITH HOOK' : 420, + 'LATIN CAPITAL LETTER Q' : 81, + 'LATIN CAPITAL LETTER R' : 82, + 'LATIN CAPITAL LETTER R WITH ACUTE' : 340, + 'LATIN CAPITAL LETTER R WITH CARON' : 344, + 'LATIN CAPITAL LETTER R WITH CEDILLA' : 342, + 'LATIN CAPITAL LETTER R WITH DOT ABOVE' : 7768, + 'LATIN CAPITAL LETTER R WITH DOT BELOW' : 7770, + 'LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON' : 7772, + 'LATIN CAPITAL LETTER R WITH DOUBLE GRAVE' : 528, + 'LATIN CAPITAL LETTER R WITH INVERTED BREVE' : 530, + 'LATIN CAPITAL LETTER R WITH LINE BELOW' : 7774, + 'LATIN CAPITAL LETTER REVERSED E' : 398, + 'LATIN CAPITAL LETTER S' : 83, + 'LATIN CAPITAL LETTER S WITH ACUTE' : 346, + 'LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE' : 7780, + 'LATIN CAPITAL LETTER S WITH CARON' : 352, + 'LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE' : 7782, + 'LATIN CAPITAL LETTER S WITH CEDILLA' : 350, + 'LATIN CAPITAL LETTER S WITH CIRCUMFLEX' : 348, + 'LATIN CAPITAL LETTER S WITH COMMA BELOW' : 536, + 'LATIN CAPITAL LETTER S WITH DOT ABOVE' : 7776, + 'LATIN CAPITAL LETTER S WITH DOT BELOW' : 7778, + 'LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE' : 7784, + 'LATIN CAPITAL LETTER SCHWA' : 399, + 'LATIN CAPITAL LETTER T' : 84, + 'LATIN CAPITAL LETTER T WITH CARON' : 356, + 'LATIN CAPITAL LETTER T WITH CEDILLA' : 354, + 'LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW' : 7792, + 'LATIN CAPITAL LETTER T WITH COMMA BELOW' : 538, + 'LATIN CAPITAL LETTER T WITH DOT ABOVE' : 7786, + 'LATIN CAPITAL LETTER T WITH DOT BELOW' : 7788, + 'LATIN CAPITAL LETTER T WITH HOOK' : 428, + 'LATIN CAPITAL LETTER T WITH LINE BELOW' : 7790, + 'LATIN CAPITAL LETTER T WITH RETROFLEX HOOK' : 430, + 'LATIN CAPITAL LETTER T WITH STROKE' : 358, + 'LATIN CAPITAL LETTER THORN' : 222, + 'LATIN CAPITAL LETTER TONE FIVE' : 444, + 'LATIN CAPITAL LETTER TONE SIX' : 388, + 'LATIN CAPITAL LETTER TONE TWO' : 423, + 'LATIN CAPITAL LETTER TURNED M' : 412, + 'LATIN CAPITAL LETTER U' : 85, + 'LATIN CAPITAL LETTER U WITH ACUTE' : 218, + 'LATIN CAPITAL LETTER U WITH BREVE' : 364, + 'LATIN CAPITAL LETTER U WITH CARON' : 467, + 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' : 219, + 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW' : 7798, + 'LATIN CAPITAL LETTER U WITH DIAERESIS' : 220, + 'LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE' : 471, + 'LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON' : 473, + 'LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE' : 475, + 'LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON' : 469, + 'LATIN CAPITAL LETTER U WITH DIAERESIS BELOW' : 7794, + 'LATIN CAPITAL LETTER U WITH DOT BELOW' : 7908, + 'LATIN CAPITAL LETTER U WITH DOUBLE ACUTE' : 368, + 'LATIN CAPITAL LETTER U WITH DOUBLE GRAVE' : 532, + 'LATIN CAPITAL LETTER U WITH GRAVE' : 217, + 'LATIN CAPITAL LETTER U WITH HOOK ABOVE' : 7910, + 'LATIN CAPITAL LETTER U WITH HORN' : 431, + 'LATIN CAPITAL LETTER U WITH HORN AND ACUTE' : 7912, + 'LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW' : 7920, + 'LATIN CAPITAL LETTER U WITH HORN AND GRAVE' : 7914, + 'LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE' : 7916, + 'LATIN CAPITAL LETTER U WITH HORN AND TILDE' : 7918, + 'LATIN CAPITAL LETTER U WITH INVERTED BREVE' : 534, + 'LATIN CAPITAL LETTER U WITH MACRON' : 362, + 'LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS' : 7802, + 'LATIN CAPITAL LETTER U WITH OGONEK' : 370, + 'LATIN CAPITAL LETTER U WITH RING ABOVE' : 366, + 'LATIN CAPITAL LETTER U WITH TILDE' : 360, + 'LATIN CAPITAL LETTER U WITH TILDE AND ACUTE' : 7800, + 'LATIN CAPITAL LETTER U WITH TILDE BELOW' : 7796, + 'LATIN CAPITAL LETTER UPSILON' : 433, + 'LATIN CAPITAL LETTER V' : 86, + 'LATIN CAPITAL LETTER V WITH DOT BELOW' : 7806, + 'LATIN CAPITAL LETTER V WITH HOOK' : 434, + 'LATIN CAPITAL LETTER V WITH TILDE' : 7804, + 'LATIN CAPITAL LETTER W' : 87, + 'LATIN CAPITAL LETTER W WITH ACUTE' : 7810, + 'LATIN CAPITAL LETTER W WITH CIRCUMFLEX' : 372, + 'LATIN CAPITAL LETTER W WITH DIAERESIS' : 7812, + 'LATIN CAPITAL LETTER W WITH DOT ABOVE' : 7814, + 'LATIN CAPITAL LETTER W WITH DOT BELOW' : 7816, + 'LATIN CAPITAL LETTER W WITH GRAVE' : 7808, + 'LATIN CAPITAL LETTER WYNN' : 503, + 'LATIN CAPITAL LETTER X' : 88, + 'LATIN CAPITAL LETTER X WITH DIAERESIS' : 7820, + 'LATIN CAPITAL LETTER X WITH DOT ABOVE' : 7818, + 'LATIN CAPITAL LETTER Y' : 89, + 'LATIN CAPITAL LETTER Y WITH ACUTE' : 221, + 'LATIN CAPITAL LETTER Y WITH CIRCUMFLEX' : 374, + 'LATIN CAPITAL LETTER Y WITH DIAERESIS' : 376, + 'LATIN CAPITAL LETTER Y WITH DOT ABOVE' : 7822, + 'LATIN CAPITAL LETTER Y WITH DOT BELOW' : 7924, + 'LATIN CAPITAL LETTER Y WITH GRAVE' : 7922, + 'LATIN CAPITAL LETTER Y WITH HOOK' : 435, + 'LATIN CAPITAL LETTER Y WITH HOOK ABOVE' : 7926, + 'LATIN CAPITAL LETTER Y WITH MACRON' : 562, + 'LATIN CAPITAL LETTER Y WITH TILDE' : 7928, + 'LATIN CAPITAL LETTER YOGH' : 540, + 'LATIN CAPITAL LETTER Z' : 90, + 'LATIN CAPITAL LETTER Z WITH ACUTE' : 377, + 'LATIN CAPITAL LETTER Z WITH CARON' : 381, + 'LATIN CAPITAL LETTER Z WITH CIRCUMFLEX' : 7824, + 'LATIN CAPITAL LETTER Z WITH DOT ABOVE' : 379, + 'LATIN CAPITAL LETTER Z WITH DOT BELOW' : 7826, + 'LATIN CAPITAL LETTER Z WITH HOOK' : 548, + 'LATIN CAPITAL LETTER Z WITH LINE BELOW' : 7828, + 'LATIN CAPITAL LETTER Z WITH STROKE' : 437, + 'LATIN CAPITAL LIGATURE IJ' : 306, + 'LATIN CAPITAL LIGATURE OE' : 338, + 'LATIN CROSS' : 10013, + 'LATIN LETTER ALVEOLAR CLICK' : 450, + 'LATIN LETTER BIDENTAL PERCUSSIVE' : 685, + 'LATIN LETTER BILABIAL CLICK' : 664, + 'LATIN LETTER BILABIAL PERCUSSIVE' : 684, + 'LATIN LETTER DENTAL CLICK' : 448, + 'LATIN LETTER GLOTTAL STOP' : 660, + 'LATIN LETTER GLOTTAL STOP WITH STROKE' : 673, + 'LATIN LETTER INVERTED GLOTTAL STOP' : 662, + 'LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE' : 446, + 'LATIN LETTER LATERAL CLICK' : 449, + 'LATIN LETTER PHARYNGEAL VOICED FRICATIVE' : 661, + 'LATIN LETTER RETROFLEX CLICK' : 451, + 'LATIN LETTER REVERSED ESH LOOP' : 426, + 'LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE' : 674, + 'LATIN LETTER SMALL CAPITAL B' : 665, + 'LATIN LETTER SMALL CAPITAL G' : 610, + 'LATIN LETTER SMALL CAPITAL G WITH HOOK' : 667, + 'LATIN LETTER SMALL CAPITAL H' : 668, + 'LATIN LETTER SMALL CAPITAL I' : 618, + 'LATIN LETTER SMALL CAPITAL INVERTED R' : 641, + 'LATIN LETTER SMALL CAPITAL L' : 671, + 'LATIN LETTER SMALL CAPITAL N' : 628, + 'LATIN LETTER SMALL CAPITAL OE' : 630, + 'LATIN LETTER SMALL CAPITAL R' : 640, + 'LATIN LETTER SMALL CAPITAL Y' : 655, + 'LATIN LETTER STRETCHED C' : 663, + 'LATIN LETTER TWO WITH STROKE' : 443, + 'LATIN LETTER WYNN' : 447, + 'LATIN LETTER YR' : 422, + 'LATIN SMALL LETTER A' : 97, + 'LATIN SMALL LETTER A WITH ACUTE' : 225, + 'LATIN SMALL LETTER A WITH BREVE' : 259, + 'LATIN SMALL LETTER A WITH BREVE AND ACUTE' : 7855, + 'LATIN SMALL LETTER A WITH BREVE AND DOT BELOW' : 7863, + 'LATIN SMALL LETTER A WITH BREVE AND GRAVE' : 7857, + 'LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE' : 7859, + 'LATIN SMALL LETTER A WITH BREVE AND TILDE' : 7861, + 'LATIN SMALL LETTER A WITH CARON' : 462, + 'LATIN SMALL LETTER A WITH CIRCUMFLEX' : 226, + 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE' : 7845, + 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW' : 7853, + 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE' : 7847, + 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE' : 7849, + 'LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE' : 7851, + 'LATIN SMALL LETTER A WITH DIAERESIS' : 228, + 'LATIN SMALL LETTER A WITH DIAERESIS AND MACRON' : 479, + 'LATIN SMALL LETTER A WITH DOT ABOVE' : 551, + 'LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON' : 481, + 'LATIN SMALL LETTER A WITH DOT BELOW' : 7841, + 'LATIN SMALL LETTER A WITH DOUBLE GRAVE' : 513, + 'LATIN SMALL LETTER A WITH GRAVE' : 224, + 'LATIN SMALL LETTER A WITH HOOK ABOVE' : 7843, + 'LATIN SMALL LETTER A WITH INVERTED BREVE' : 515, + 'LATIN SMALL LETTER A WITH MACRON' : 257, + 'LATIN SMALL LETTER A WITH OGONEK' : 261, + 'LATIN SMALL LETTER A WITH RIGHT HALF RING' : 7834, + 'LATIN SMALL LETTER A WITH RING ABOVE' : 229, + 'LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE' : 507, + 'LATIN SMALL LETTER A WITH RING BELOW' : 7681, + 'LATIN SMALL LETTER A WITH TILDE' : 227, + 'LATIN SMALL LETTER AE' : 230, + 'LATIN SMALL LETTER AE WITH ACUTE' : 509, + 'LATIN SMALL LETTER AE WITH MACRON' : 483, + 'LATIN SMALL LETTER ALPHA' : 593, + 'LATIN SMALL LETTER B' : 98, + 'LATIN SMALL LETTER B WITH DOT ABOVE' : 7683, + 'LATIN SMALL LETTER B WITH DOT BELOW' : 7685, + 'LATIN SMALL LETTER B WITH HOOK' : 595, + 'LATIN SMALL LETTER B WITH LINE BELOW' : 7687, + 'LATIN SMALL LETTER B WITH STROKE' : 384, + 'LATIN SMALL LETTER B WITH TOPBAR' : 387, + 'LATIN SMALL LETTER BARRED O' : 629, + 'LATIN SMALL LETTER C' : 99, + 'LATIN SMALL LETTER C WITH ACUTE' : 263, + 'LATIN SMALL LETTER C WITH CARON' : 269, + 'LATIN SMALL LETTER C WITH CEDILLA' : 231, + 'LATIN SMALL LETTER C WITH CEDILLA AND ACUTE' : 7689, + 'LATIN SMALL LETTER C WITH CIRCUMFLEX' : 265, + 'LATIN SMALL LETTER C WITH CURL' : 597, + 'LATIN SMALL LETTER C WITH DOT ABOVE' : 267, + 'LATIN SMALL LETTER C WITH HOOK' : 392, + 'LATIN SMALL LETTER CLOSED OMEGA' : 631, + 'LATIN SMALL LETTER CLOSED OPEN E' : 666, + 'LATIN SMALL LETTER CLOSED REVERSED OPEN E' : 606, + 'LATIN SMALL LETTER D' : 100, + 'LATIN SMALL LETTER D WITH CARON' : 271, + 'LATIN SMALL LETTER D WITH CEDILLA' : 7697, + 'LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW' : 7699, + 'LATIN SMALL LETTER D WITH DOT ABOVE' : 7691, + 'LATIN SMALL LETTER D WITH DOT BELOW' : 7693, + 'LATIN SMALL LETTER D WITH HOOK' : 599, + 'LATIN SMALL LETTER D WITH LINE BELOW' : 7695, + 'LATIN SMALL LETTER D WITH STROKE' : 273, + 'LATIN SMALL LETTER D WITH TAIL' : 598, + 'LATIN SMALL LETTER D WITH TOPBAR' : 396, + 'LATIN SMALL LETTER DEZH DIGRAPH' : 676, + 'LATIN SMALL LETTER DOTLESS I' : 305, + 'LATIN SMALL LETTER DOTLESS J WITH STROKE' : 607, + 'LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK' : 644, + 'LATIN SMALL LETTER DZ' : 499, + 'LATIN SMALL LETTER DZ DIGRAPH' : 675, + 'LATIN SMALL LETTER DZ DIGRAPH WITH CURL' : 677, + 'LATIN SMALL LETTER DZ WITH CARON' : 454, + 'LATIN SMALL LETTER E' : 101, + 'LATIN SMALL LETTER E WITH ACUTE' : 233, + 'LATIN SMALL LETTER E WITH BREVE' : 277, + 'LATIN SMALL LETTER E WITH CARON' : 283, + 'LATIN SMALL LETTER E WITH CEDILLA' : 553, + 'LATIN SMALL LETTER E WITH CEDILLA AND BREVE' : 7709, + 'LATIN SMALL LETTER E WITH CIRCUMFLEX' : 234, + 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE' : 7871, + 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW' : 7879, + 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE' : 7873, + 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE' : 7875, + 'LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE' : 7877, + 'LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW' : 7705, + 'LATIN SMALL LETTER E WITH DIAERESIS' : 235, + 'LATIN SMALL LETTER E WITH DOT ABOVE' : 279, + 'LATIN SMALL LETTER E WITH DOT BELOW' : 7865, + 'LATIN SMALL LETTER E WITH DOUBLE GRAVE' : 517, + 'LATIN SMALL LETTER E WITH GRAVE' : 232, + 'LATIN SMALL LETTER E WITH HOOK ABOVE' : 7867, + 'LATIN SMALL LETTER E WITH INVERTED BREVE' : 519, + 'LATIN SMALL LETTER E WITH MACRON' : 275, + 'LATIN SMALL LETTER E WITH MACRON AND ACUTE' : 7703, + 'LATIN SMALL LETTER E WITH MACRON AND GRAVE' : 7701, + 'LATIN SMALL LETTER E WITH OGONEK' : 281, + 'LATIN SMALL LETTER E WITH TILDE' : 7869, + 'LATIN SMALL LETTER E WITH TILDE BELOW' : 7707, + 'LATIN SMALL LETTER ENG' : 331, + 'LATIN SMALL LETTER ESH' : 643, + 'LATIN SMALL LETTER ESH WITH CURL' : 646, + 'LATIN SMALL LETTER ETH' : 240, + 'LATIN SMALL LETTER EZH' : 658, + 'LATIN SMALL LETTER EZH REVERSED' : 441, + 'LATIN SMALL LETTER EZH WITH CARON' : 495, + 'LATIN SMALL LETTER EZH WITH CURL' : 659, + 'LATIN SMALL LETTER EZH WITH TAIL' : 442, + 'LATIN SMALL LETTER F' : 102, + 'LATIN SMALL LETTER F WITH DOT ABOVE' : 7711, + 'LATIN SMALL LETTER F WITH HOOK' : 402, + 'LATIN SMALL LETTER FENG DIGRAPH' : 681, + 'LATIN SMALL LETTER G' : 103, + 'LATIN SMALL LETTER G WITH ACUTE' : 501, + 'LATIN SMALL LETTER G WITH BREVE' : 287, + 'LATIN SMALL LETTER G WITH CARON' : 487, + 'LATIN SMALL LETTER G WITH CEDILLA' : 291, + 'LATIN SMALL LETTER G WITH CIRCUMFLEX' : 285, + 'LATIN SMALL LETTER G WITH DOT ABOVE' : 289, + 'LATIN SMALL LETTER G WITH HOOK' : 608, + 'LATIN SMALL LETTER G WITH MACRON' : 7713, + 'LATIN SMALL LETTER G WITH STROKE' : 485, + 'LATIN SMALL LETTER GAMMA' : 611, + 'LATIN SMALL LETTER H' : 104, + 'LATIN SMALL LETTER H WITH BREVE BELOW' : 7723, + 'LATIN SMALL LETTER H WITH CARON' : 543, + 'LATIN SMALL LETTER H WITH CEDILLA' : 7721, + 'LATIN SMALL LETTER H WITH CIRCUMFLEX' : 293, + 'LATIN SMALL LETTER H WITH DIAERESIS' : 7719, + 'LATIN SMALL LETTER H WITH DOT ABOVE' : 7715, + 'LATIN SMALL LETTER H WITH DOT BELOW' : 7717, + 'LATIN SMALL LETTER H WITH HOOK' : 614, + 'LATIN SMALL LETTER H WITH LINE BELOW' : 7830, + 'LATIN SMALL LETTER H WITH STROKE' : 295, + 'LATIN SMALL LETTER HENG WITH HOOK' : 615, + 'LATIN SMALL LETTER HV' : 405, + 'LATIN SMALL LETTER I' : 105, + 'LATIN SMALL LETTER I WITH ACUTE' : 237, + 'LATIN SMALL LETTER I WITH BREVE' : 301, + 'LATIN SMALL LETTER I WITH CARON' : 464, + 'LATIN SMALL LETTER I WITH CIRCUMFLEX' : 238, + 'LATIN SMALL LETTER I WITH DIAERESIS' : 239, + 'LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE' : 7727, + 'LATIN SMALL LETTER I WITH DOT BELOW' : 7883, + 'LATIN SMALL LETTER I WITH DOUBLE GRAVE' : 521, + 'LATIN SMALL LETTER I WITH GRAVE' : 236, + 'LATIN SMALL LETTER I WITH HOOK ABOVE' : 7881, + 'LATIN SMALL LETTER I WITH INVERTED BREVE' : 523, + 'LATIN SMALL LETTER I WITH MACRON' : 299, + 'LATIN SMALL LETTER I WITH OGONEK' : 303, + 'LATIN SMALL LETTER I WITH STROKE' : 616, + 'LATIN SMALL LETTER I WITH TILDE' : 297, + 'LATIN SMALL LETTER I WITH TILDE BELOW' : 7725, + 'LATIN SMALL LETTER IOTA' : 617, + 'LATIN SMALL LETTER J' : 106, + 'LATIN SMALL LETTER J WITH CARON' : 496, + 'LATIN SMALL LETTER J WITH CIRCUMFLEX' : 309, + 'LATIN SMALL LETTER J WITH CROSSED-TAIL' : 669, + 'LATIN SMALL LETTER K' : 107, + 'LATIN SMALL LETTER K WITH ACUTE' : 7729, + 'LATIN SMALL LETTER K WITH CARON' : 489, + 'LATIN SMALL LETTER K WITH CEDILLA' : 311, + 'LATIN SMALL LETTER K WITH DOT BELOW' : 7731, + 'LATIN SMALL LETTER K WITH HOOK' : 409, + 'LATIN SMALL LETTER K WITH LINE BELOW' : 7733, + 'LATIN SMALL LETTER KRA' : 312, + 'LATIN SMALL LETTER L' : 108, + 'LATIN SMALL LETTER L WITH ACUTE' : 314, + 'LATIN SMALL LETTER L WITH BAR' : 410, + 'LATIN SMALL LETTER L WITH BELT' : 620, + 'LATIN SMALL LETTER L WITH CARON' : 318, + 'LATIN SMALL LETTER L WITH CEDILLA' : 316, + 'LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW' : 7741, + 'LATIN SMALL LETTER L WITH DOT BELOW' : 7735, + 'LATIN SMALL LETTER L WITH DOT BELOW AND MACRON' : 7737, + 'LATIN SMALL LETTER L WITH LINE BELOW' : 7739, + 'LATIN SMALL LETTER L WITH MIDDLE DOT' : 320, + 'LATIN SMALL LETTER L WITH MIDDLE TILDE' : 619, + 'LATIN SMALL LETTER L WITH RETROFLEX HOOK' : 621, + 'LATIN SMALL LETTER L WITH STROKE' : 322, + 'LATIN SMALL LETTER LAMBDA WITH STROKE' : 411, + 'LATIN SMALL LETTER LEZH' : 622, + 'LATIN SMALL LETTER LJ' : 457, + 'LATIN SMALL LETTER LONG S' : 383, + 'LATIN SMALL LETTER LONG S WITH DOT ABOVE' : 7835, + 'LATIN SMALL LETTER LS DIGRAPH' : 682, + 'LATIN SMALL LETTER LZ DIGRAPH' : 683, + 'LATIN SMALL LETTER M' : 109, + 'LATIN SMALL LETTER M WITH ACUTE' : 7743, + 'LATIN SMALL LETTER M WITH DOT ABOVE' : 7745, + 'LATIN SMALL LETTER M WITH DOT BELOW' : 7747, + 'LATIN SMALL LETTER M WITH HOOK' : 625, + 'LATIN SMALL LETTER N' : 110, + 'LATIN SMALL LETTER N PRECEDED BY APOSTROPHE' : 329, + 'LATIN SMALL LETTER N WITH ACUTE' : 324, + 'LATIN SMALL LETTER N WITH CARON' : 328, + 'LATIN SMALL LETTER N WITH CEDILLA' : 326, + 'LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW' : 7755, + 'LATIN SMALL LETTER N WITH DOT ABOVE' : 7749, + 'LATIN SMALL LETTER N WITH DOT BELOW' : 7751, + 'LATIN SMALL LETTER N WITH GRAVE' : 505, + 'LATIN SMALL LETTER N WITH LEFT HOOK' : 626, + 'LATIN SMALL LETTER N WITH LINE BELOW' : 7753, + 'LATIN SMALL LETTER N WITH LONG RIGHT LEG' : 414, + 'LATIN SMALL LETTER N WITH RETROFLEX HOOK' : 627, + 'LATIN SMALL LETTER N WITH TILDE' : 241, + 'LATIN SMALL LETTER NJ' : 460, + 'LATIN SMALL LETTER O' : 111, + 'LATIN SMALL LETTER O WITH ACUTE' : 243, + 'LATIN SMALL LETTER O WITH BREVE' : 335, + 'LATIN SMALL LETTER O WITH CARON' : 466, + 'LATIN SMALL LETTER O WITH CIRCUMFLEX' : 244, + 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE' : 7889, + 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW' : 7897, + 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE' : 7891, + 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE' : 7893, + 'LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE' : 7895, + 'LATIN SMALL LETTER O WITH DIAERESIS' : 246, + 'LATIN SMALL LETTER O WITH DIAERESIS AND MACRON' : 555, + 'LATIN SMALL LETTER O WITH DOT ABOVE' : 559, + 'LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON' : 561, + 'LATIN SMALL LETTER O WITH DOT BELOW' : 7885, + 'LATIN SMALL LETTER O WITH DOUBLE ACUTE' : 337, + 'LATIN SMALL LETTER O WITH DOUBLE GRAVE' : 525, + 'LATIN SMALL LETTER O WITH GRAVE' : 242, + 'LATIN SMALL LETTER O WITH HOOK ABOVE' : 7887, + 'LATIN SMALL LETTER O WITH HORN' : 417, + 'LATIN SMALL LETTER O WITH HORN AND ACUTE' : 7899, + 'LATIN SMALL LETTER O WITH HORN AND DOT BELOW' : 7907, + 'LATIN SMALL LETTER O WITH HORN AND GRAVE' : 7901, + 'LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE' : 7903, + 'LATIN SMALL LETTER O WITH HORN AND TILDE' : 7905, + 'LATIN SMALL LETTER O WITH INVERTED BREVE' : 527, + 'LATIN SMALL LETTER O WITH MACRON' : 333, + 'LATIN SMALL LETTER O WITH MACRON AND ACUTE' : 7763, + 'LATIN SMALL LETTER O WITH MACRON AND GRAVE' : 7761, + 'LATIN SMALL LETTER O WITH OGONEK' : 491, + 'LATIN SMALL LETTER O WITH OGONEK AND MACRON' : 493, + 'LATIN SMALL LETTER O WITH STROKE' : 248, + 'LATIN SMALL LETTER O WITH STROKE AND ACUTE' : 511, + 'LATIN SMALL LETTER O WITH TILDE' : 245, + 'LATIN SMALL LETTER O WITH TILDE AND ACUTE' : 7757, + 'LATIN SMALL LETTER O WITH TILDE AND DIAERESIS' : 7759, + 'LATIN SMALL LETTER O WITH TILDE AND MACRON' : 557, + 'LATIN SMALL LETTER OI' : 419, + 'LATIN SMALL LETTER OPEN E' : 603, + 'LATIN SMALL LETTER OPEN O' : 596, + 'LATIN SMALL LETTER OU' : 547, + 'LATIN SMALL LETTER P' : 112, + 'LATIN SMALL LETTER P WITH ACUTE' : 7765, + 'LATIN SMALL LETTER P WITH DOT ABOVE' : 7767, + 'LATIN SMALL LETTER P WITH HOOK' : 421, + 'LATIN SMALL LETTER PHI' : 632, + 'LATIN SMALL LETTER Q' : 113, + 'LATIN SMALL LETTER Q WITH HOOK' : 672, + 'LATIN SMALL LETTER R' : 114, + 'LATIN SMALL LETTER R WITH ACUTE' : 341, + 'LATIN SMALL LETTER R WITH CARON' : 345, + 'LATIN SMALL LETTER R WITH CEDILLA' : 343, + 'LATIN SMALL LETTER R WITH DOT ABOVE' : 7769, + 'LATIN SMALL LETTER R WITH DOT BELOW' : 7771, + 'LATIN SMALL LETTER R WITH DOT BELOW AND MACRON' : 7773, + 'LATIN SMALL LETTER R WITH DOUBLE GRAVE' : 529, + 'LATIN SMALL LETTER R WITH FISHHOOK' : 638, + 'LATIN SMALL LETTER R WITH INVERTED BREVE' : 531, + 'LATIN SMALL LETTER R WITH LINE BELOW' : 7775, + 'LATIN SMALL LETTER R WITH LONG LEG' : 636, + 'LATIN SMALL LETTER R WITH TAIL' : 637, + 'LATIN SMALL LETTER RAMS HORN' : 612, + 'LATIN SMALL LETTER REVERSED E' : 600, + 'LATIN SMALL LETTER REVERSED OPEN E' : 604, + 'LATIN SMALL LETTER REVERSED OPEN E WITH HOOK' : 605, + 'LATIN SMALL LETTER REVERSED R WITH FISHHOOK' : 639, + 'LATIN SMALL LETTER S' : 115, + 'LATIN SMALL LETTER S WITH ACUTE' : 347, + 'LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE' : 7781, + 'LATIN SMALL LETTER S WITH CARON' : 353, + 'LATIN SMALL LETTER S WITH CARON AND DOT ABOVE' : 7783, + 'LATIN SMALL LETTER S WITH CEDILLA' : 351, + 'LATIN SMALL LETTER S WITH CIRCUMFLEX' : 349, + 'LATIN SMALL LETTER S WITH COMMA BELOW' : 537, + 'LATIN SMALL LETTER S WITH DOT ABOVE' : 7777, + 'LATIN SMALL LETTER S WITH DOT BELOW' : 7779, + 'LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE' : 7785, + 'LATIN SMALL LETTER S WITH HOOK' : 642, + 'LATIN SMALL LETTER SCHWA' : 601, + 'LATIN SMALL LETTER SCHWA WITH HOOK' : 602, + 'LATIN SMALL LETTER SCRIPT G' : 609, + 'LATIN SMALL LETTER SHARP S' : 223, + 'LATIN SMALL LETTER SQUAT REVERSED ESH' : 645, + 'LATIN SMALL LETTER T' : 116, + 'LATIN SMALL LETTER T WITH CARON' : 357, + 'LATIN SMALL LETTER T WITH CEDILLA' : 355, + 'LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW' : 7793, + 'LATIN SMALL LETTER T WITH COMMA BELOW' : 539, + 'LATIN SMALL LETTER T WITH DIAERESIS' : 7831, + 'LATIN SMALL LETTER T WITH DOT ABOVE' : 7787, + 'LATIN SMALL LETTER T WITH DOT BELOW' : 7789, + 'LATIN SMALL LETTER T WITH HOOK' : 429, + 'LATIN SMALL LETTER T WITH LINE BELOW' : 7791, + 'LATIN SMALL LETTER T WITH PALATAL HOOK' : 427, + 'LATIN SMALL LETTER T WITH RETROFLEX HOOK' : 648, + 'LATIN SMALL LETTER T WITH STROKE' : 359, + 'LATIN SMALL LETTER TC DIGRAPH WITH CURL' : 680, + 'LATIN SMALL LETTER TESH DIGRAPH' : 679, + 'LATIN SMALL LETTER THORN' : 254, + 'LATIN SMALL LETTER TONE FIVE' : 445, + 'LATIN SMALL LETTER TONE SIX' : 389, + 'LATIN SMALL LETTER TONE TWO' : 424, + 'LATIN SMALL LETTER TS DIGRAPH' : 678, + 'LATIN SMALL LETTER TURNED A' : 592, + 'LATIN SMALL LETTER TURNED ALPHA' : 594, + 'LATIN SMALL LETTER TURNED DELTA' : 397, + 'LATIN SMALL LETTER TURNED E' : 477, + 'LATIN SMALL LETTER TURNED H' : 613, + 'LATIN SMALL LETTER TURNED K' : 670, + 'LATIN SMALL LETTER TURNED M' : 623, + 'LATIN SMALL LETTER TURNED M WITH LONG LEG' : 624, + 'LATIN SMALL LETTER TURNED R' : 633, + 'LATIN SMALL LETTER TURNED R WITH HOOK' : 635, + 'LATIN SMALL LETTER TURNED R WITH LONG LEG' : 634, + 'LATIN SMALL LETTER TURNED T' : 647, + 'LATIN SMALL LETTER TURNED V' : 652, + 'LATIN SMALL LETTER TURNED W' : 653, + 'LATIN SMALL LETTER TURNED Y' : 654, + 'LATIN SMALL LETTER U' : 117, + 'LATIN SMALL LETTER U BAR' : 649, + 'LATIN SMALL LETTER U WITH ACUTE' : 250, + 'LATIN SMALL LETTER U WITH BREVE' : 365, + 'LATIN SMALL LETTER U WITH CARON' : 468, + 'LATIN SMALL LETTER U WITH CIRCUMFLEX' : 251, + 'LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW' : 7799, + 'LATIN SMALL LETTER U WITH DIAERESIS' : 252, + 'LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE' : 472, + 'LATIN SMALL LETTER U WITH DIAERESIS AND CARON' : 474, + 'LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE' : 476, + 'LATIN SMALL LETTER U WITH DIAERESIS AND MACRON' : 470, + 'LATIN SMALL LETTER U WITH DIAERESIS BELOW' : 7795, + 'LATIN SMALL LETTER U WITH DOT BELOW' : 7909, + 'LATIN SMALL LETTER U WITH DOUBLE ACUTE' : 369, + 'LATIN SMALL LETTER U WITH DOUBLE GRAVE' : 533, + 'LATIN SMALL LETTER U WITH GRAVE' : 249, + 'LATIN SMALL LETTER U WITH HOOK ABOVE' : 7911, + 'LATIN SMALL LETTER U WITH HORN' : 432, + 'LATIN SMALL LETTER U WITH HORN AND ACUTE' : 7913, + 'LATIN SMALL LETTER U WITH HORN AND DOT BELOW' : 7921, + 'LATIN SMALL LETTER U WITH HORN AND GRAVE' : 7915, + 'LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE' : 7917, + 'LATIN SMALL LETTER U WITH HORN AND TILDE' : 7919, + 'LATIN SMALL LETTER U WITH INVERTED BREVE' : 535, + 'LATIN SMALL LETTER U WITH MACRON' : 363, + 'LATIN SMALL LETTER U WITH MACRON AND DIAERESIS' : 7803, + 'LATIN SMALL LETTER U WITH OGONEK' : 371, + 'LATIN SMALL LETTER U WITH RING ABOVE' : 367, + 'LATIN SMALL LETTER U WITH TILDE' : 361, + 'LATIN SMALL LETTER U WITH TILDE AND ACUTE' : 7801, + 'LATIN SMALL LETTER U WITH TILDE BELOW' : 7797, + 'LATIN SMALL LETTER UPSILON' : 650, + 'LATIN SMALL LETTER V' : 118, + 'LATIN SMALL LETTER V WITH DOT BELOW' : 7807, + 'LATIN SMALL LETTER V WITH HOOK' : 651, + 'LATIN SMALL LETTER V WITH TILDE' : 7805, + 'LATIN SMALL LETTER W' : 119, + 'LATIN SMALL LETTER W WITH ACUTE' : 7811, + 'LATIN SMALL LETTER W WITH CIRCUMFLEX' : 373, + 'LATIN SMALL LETTER W WITH DIAERESIS' : 7813, + 'LATIN SMALL LETTER W WITH DOT ABOVE' : 7815, + 'LATIN SMALL LETTER W WITH DOT BELOW' : 7817, + 'LATIN SMALL LETTER W WITH GRAVE' : 7809, + 'LATIN SMALL LETTER W WITH RING ABOVE' : 7832, + 'LATIN SMALL LETTER X' : 120, + 'LATIN SMALL LETTER X WITH DIAERESIS' : 7821, + 'LATIN SMALL LETTER X WITH DOT ABOVE' : 7819, + 'LATIN SMALL LETTER Y' : 121, + 'LATIN SMALL LETTER Y WITH ACUTE' : 253, + 'LATIN SMALL LETTER Y WITH CIRCUMFLEX' : 375, + 'LATIN SMALL LETTER Y WITH DIAERESIS' : 255, + 'LATIN SMALL LETTER Y WITH DOT ABOVE' : 7823, + 'LATIN SMALL LETTER Y WITH DOT BELOW' : 7925, + 'LATIN SMALL LETTER Y WITH GRAVE' : 7923, + 'LATIN SMALL LETTER Y WITH HOOK' : 436, + 'LATIN SMALL LETTER Y WITH HOOK ABOVE' : 7927, + 'LATIN SMALL LETTER Y WITH MACRON' : 563, + 'LATIN SMALL LETTER Y WITH RING ABOVE' : 7833, + 'LATIN SMALL LETTER Y WITH TILDE' : 7929, + 'LATIN SMALL LETTER YOGH' : 541, + 'LATIN SMALL LETTER Z' : 122, + 'LATIN SMALL LETTER Z WITH ACUTE' : 378, + 'LATIN SMALL LETTER Z WITH CARON' : 382, + 'LATIN SMALL LETTER Z WITH CIRCUMFLEX' : 7825, + 'LATIN SMALL LETTER Z WITH CURL' : 657, + 'LATIN SMALL LETTER Z WITH DOT ABOVE' : 380, + 'LATIN SMALL LETTER Z WITH DOT BELOW' : 7827, + 'LATIN SMALL LETTER Z WITH HOOK' : 549, + 'LATIN SMALL LETTER Z WITH LINE BELOW' : 7829, + 'LATIN SMALL LETTER Z WITH RETROFLEX HOOK' : 656, + 'LATIN SMALL LETTER Z WITH STROKE' : 438, + 'LATIN SMALL LIGATURE FF' : 64256, + 'LATIN SMALL LIGATURE FFI' : 64259, + 'LATIN SMALL LIGATURE FFL' : 64260, + 'LATIN SMALL LIGATURE FI' : 64257, + 'LATIN SMALL LIGATURE FL' : 64258, + 'LATIN SMALL LIGATURE IJ' : 307, + 'LATIN SMALL LIGATURE LONG S T' : 64261, + 'LATIN SMALL LIGATURE OE' : 339, + 'LATIN SMALL LIGATURE ST' : 64262, + 'LEFT AND RIGHT DOUBLE TURNSTILE' : 10202, + 'LEFT AND RIGHT TACK' : 10203, + 'LEFT ANGLE BRACKET' : 12296, + 'LEFT ANGLE BRACKET WITH DOT' : 10641, + 'LEFT ARC LESS-THAN BRACKET' : 10643, + 'LEFT BARB DOWN RIGHT BARB DOWN HARPOON' : 10576, + 'LEFT BARB DOWN RIGHT BARB UP HARPOON' : 10571, + 'LEFT BARB UP RIGHT BARB DOWN HARPOON' : 10570, + 'LEFT BARB UP RIGHT BARB UP HARPOON' : 10574, + 'LEFT BLACK LENTICULAR BRACKET' : 12304, + 'LEFT BLACK TORTOISE SHELL BRACKET' : 10647, + 'LEFT CEILING' : 8968, + 'LEFT CORNER BRACKET' : 12300, + 'LEFT CURLY BRACKET' : 123, + 'LEFT CURLY BRACKET LOWER HOOK' : 9129, + 'LEFT CURLY BRACKET MIDDLE PIECE' : 9128, + 'LEFT CURLY BRACKET UPPER HOOK' : 9127, + 'LEFT DOUBLE ANGLE BRACKET' : 12298, + 'LEFT DOUBLE QUOTATION MARK' : 8220, + 'LEFT DOUBLE WIGGLY FENCE' : 10714, + 'LEFT FISH TAIL' : 10620, + 'LEFT FIVE EIGHTHS BLOCK' : 9611, + 'LEFT FLOOR' : 8970, + 'LEFT HALF BLACK CIRCLE' : 9686, + 'LEFT HALF BLOCK' : 9612, + 'LEFT MULTIMAP' : 10204, + 'LEFT NORMAL FACTOR SEMIDIRECT PRODUCT' : 8905, + 'LEFT ONE EIGHTH BLOCK' : 9615, + 'LEFT ONE QUARTER BLOCK' : 9614, + 'LEFT OUTER JOIN' : 10197, + 'LEFT PARENTHESIS' : 40, + 'LEFT PARENTHESIS EXTENSION' : 9116, + 'LEFT PARENTHESIS LOWER HOOK' : 9117, + 'LEFT PARENTHESIS UPPER HOOK' : 9115, + 'LEFT RIGHT ARROW' : 8596, + 'LEFT RIGHT ARROW THROUGH SMALL CIRCLE' : 10568, + 'LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE' : 8700, + 'LEFT RIGHT ARROW WITH STROKE' : 8622, + 'LEFT RIGHT ARROW WITH VERTICAL STROKE' : 8697, + 'LEFT RIGHT DOUBLE ARROW' : 8660, + 'LEFT RIGHT DOUBLE ARROW WITH STROKE' : 8654, + 'LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE' : 10500, + 'LEFT RIGHT OPEN-HEADED ARROW' : 8703, + 'LEFT RIGHT WAVE ARROW' : 8621, + 'LEFT SEMIDIRECT PRODUCT' : 8907, + 'LEFT SEVEN EIGHTHS BLOCK' : 9609, + 'LEFT SINGLE QUOTATION MARK' : 8216, + 'LEFT SQUARE BRACKET' : 91, + 'LEFT SQUARE BRACKET EXTENSION' : 9122, + 'LEFT SQUARE BRACKET LOWER CORNER' : 9123, + 'LEFT SQUARE BRACKET UPPER CORNER' : 9121, + 'LEFT SQUARE BRACKET WITH QUILL' : 8261, + 'LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER' : 10639, + 'LEFT SQUARE BRACKET WITH TICK IN TOP CORNER' : 10637, + 'LEFT SQUARE BRACKET WITH UNDERBAR' : 10635, + 'LEFT TACK' : 8867, + 'LEFT THREE EIGHTHS BLOCK' : 9613, + 'LEFT THREE QUARTERS BLOCK' : 9610, + 'LEFT TORTOISE SHELL BRACKET' : 12308, + 'LEFT TRIANGLE BESIDE VERTICAL BAR' : 10703, + 'LEFT VERTICAL BOX LINE' : 9144, + 'LEFT WHITE CORNER BRACKET' : 12302, + 'LEFT WHITE CURLY BRACKET' : 10627, + 'LEFT WHITE LENTICULAR BRACKET' : 12310, + 'LEFT WHITE PARENTHESIS' : 10629, + 'LEFT WHITE SQUARE BRACKET' : 12314, + 'LEFT WHITE TORTOISE SHELL BRACKET' : 12312, + 'LEFT WIGGLY FENCE' : 10712, + 'LEFT-POINTING ANGLE BRACKET' : 9001, + 'LEFT-POINTING CURVED ANGLE BRACKET' : 10748, + 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' : 171, + 'LEFT-SHADED WHITE RIGHTWARDS ARROW' : 10154, + 'LEFT-SIDE ARC ANTICLOCKWISE ARROW' : 10553, + 'LEFT-TO-RIGHT EMBEDDING' : 8234, + 'LEFT-TO-RIGHT MARK' : 8206, + 'LEFT-TO-RIGHT OVERRIDE' : 8237, + 'LEFTWARDS ARROW' : 8592, + 'LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW' : 10563, + 'LEFTWARDS ARROW ABOVE TILDE OPERATOR' : 10611, + 'LEFTWARDS ARROW FROM BAR' : 8612, + 'LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND' : 10527, + 'LEFTWARDS ARROW OVER RIGHTWARDS ARROW' : 8646, + 'LEFTWARDS ARROW THROUGH LESS-THAN' : 10615, + 'LEFTWARDS ARROW THROUGH SUBSET' : 10618, + 'LEFTWARDS ARROW TO BAR' : 8676, + 'LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR' : 8633, + 'LEFTWARDS ARROW TO BLACK DIAMOND' : 10525, + 'LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE' : 8698, + 'LEFTWARDS ARROW WITH HOOK' : 8617, + 'LEFTWARDS ARROW WITH LOOP' : 8619, + 'LEFTWARDS ARROW WITH PLUS BELOW' : 10566, + 'LEFTWARDS ARROW WITH STROKE' : 8602, + 'LEFTWARDS ARROW WITH TAIL' : 8610, + 'LEFTWARDS ARROW WITH VERTICAL STROKE' : 8695, + 'LEFTWARDS ARROW-TAIL' : 10521, + 'LEFTWARDS DASHED ARROW' : 8672, + 'LEFTWARDS DOUBLE ARROW' : 8656, + 'LEFTWARDS DOUBLE ARROW FROM BAR' : 10502, + 'LEFTWARDS DOUBLE ARROW WITH STROKE' : 8653, + 'LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE' : 10498, + 'LEFTWARDS DOUBLE ARROW-TAIL' : 10523, + 'LEFTWARDS DOUBLE DASH ARROW' : 10508, + 'LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON' : 8651, + 'LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN' : 10599, + 'LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH' : 10603, + 'LEFTWARDS HARPOON WITH BARB DOWN FROM BAR' : 10590, + 'LEFTWARDS HARPOON WITH BARB DOWN TO BAR' : 10582, + 'LEFTWARDS HARPOON WITH BARB DOWNWARDS' : 8637, + 'LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN' : 10594, + 'LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH' : 10602, + 'LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP' : 10598, + 'LEFTWARDS HARPOON WITH BARB UP FROM BAR' : 10586, + 'LEFTWARDS HARPOON WITH BARB UP TO BAR' : 10578, + 'LEFTWARDS HARPOON WITH BARB UPWARDS' : 8636, + 'LEFTWARDS OPEN-HEADED ARROW' : 8701, + 'LEFTWARDS PAIRED ARROWS' : 8647, + 'LEFTWARDS SQUIGGLE ARROW' : 8668, + 'LEFTWARDS TRIPLE ARROW' : 8666, + 'LEFTWARDS TRIPLE DASH ARROW' : 10510, + 'LEFTWARDS TWO HEADED ARROW' : 8606, + 'LEFTWARDS WAVE ARROW' : 8604, + 'LEFTWARDS WHITE ARROW' : 8678, + 'LEO' : 9804, + 'LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN' : 10891, + 'LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL' : 10897, + 'LESS-THAN ABOVE LEFTWARDS ARROW' : 10614, + 'LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN' : 10895, + 'LESS-THAN ABOVE SIMILAR OR EQUAL' : 10893, + 'LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL' : 10899, + 'LESS-THAN AND NOT APPROXIMATE' : 10889, + 'LESS-THAN AND SINGLE-LINE NOT EQUAL TO' : 10887, + 'LESS-THAN BUT NOT EQUAL TO' : 8808, + 'LESS-THAN BUT NOT EQUIVALENT TO' : 8934, + 'LESS-THAN CLOSED BY CURVE' : 10918, + 'LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL' : 10920, + 'LESS-THAN EQUAL TO OR GREATER-THAN' : 8922, + 'LESS-THAN OR APPROXIMATE' : 10885, + 'LESS-THAN OR EQUAL TO' : 8804, + 'LESS-THAN OR EQUIVALENT TO' : 8818, + 'LESS-THAN OR GREATER-THAN' : 8822, + 'LESS-THAN OR SLANTED EQUAL TO' : 10877, + 'LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE' : 10881, + 'LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT' : 10883, + 'LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE' : 10879, + 'LESS-THAN OVER EQUAL TO' : 8806, + 'LESS-THAN SIGN' : 60, + 'LESS-THAN WITH CIRCLE INSIDE' : 10873, + 'LESS-THAN WITH DOT' : 8918, + 'LESS-THAN WITH QUESTION MARK ABOVE' : 10875, + 'LIBRA' : 9806, + 'LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT' : 10098, + 'LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT' : 10099, + 'LIGHT SHADE' : 9617, + 'LIGHT VERTICAL BAR' : 10072, + 'LIGHTNING' : 9735, + 'LINE INTEGRATION NOT INCLUDING THE POLE' : 10772, + 'LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE' : 10770, + 'LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE' : 10771, + 'LINE SEPARATOR' : 8232, + 'LIRA SIGN' : 8356, + 'LOGICAL AND' : 8743, + 'LOGICAL AND WITH DOT ABOVE' : 10833, + 'LOGICAL AND WITH DOUBLE OVERBAR' : 10846, + 'LOGICAL AND WITH DOUBLE UNDERBAR' : 10848, + 'LOGICAL AND WITH HORIZONTAL DASH' : 10844, + 'LOGICAL AND WITH MIDDLE STEM' : 10842, + 'LOGICAL AND WITH UNDERBAR' : 10847, + 'LOGICAL OR' : 8744, + 'LOGICAL OR OVERLAPPING LOGICAL AND' : 10841, + 'LOGICAL OR WITH DOT ABOVE' : 10834, + 'LOGICAL OR WITH DOUBLE OVERBAR' : 10850, + 'LOGICAL OR WITH DOUBLE UNDERBAR' : 10851, + 'LOGICAL OR WITH HORIZONTAL DASH' : 10845, + 'LOGICAL OR WITH MIDDLE STEM' : 10843, + 'LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL' : 10982, + 'LONG LEFT RIGHT ARROW' : 10231, + 'LONG LEFT RIGHT DOUBLE ARROW' : 10234, + 'LONG LEFT TACK' : 10206, + 'LONG LEFTWARDS ARROW' : 10229, + 'LONG LEFTWARDS ARROW FROM BAR' : 10235, + 'LONG LEFTWARDS DOUBLE ARROW' : 10232, + 'LONG LEFTWARDS DOUBLE ARROW FROM BAR' : 10237, + 'LONG RIGHT TACK' : 10205, + 'LONG RIGHTWARDS ARROW' : 10230, + 'LONG RIGHTWARDS ARROW FROM BAR' : 10236, + 'LONG RIGHTWARDS DOUBLE ARROW' : 10233, + 'LONG RIGHTWARDS DOUBLE ARROW FROM BAR' : 10238, + 'LONG RIGHTWARDS SQUIGGLE ARROW' : 10239, + 'LOW ASTERISK' : 8270, + 'LOW DOUBLE PRIME QUOTATION MARK' : 12319, + 'LOW LINE' : 95, + 'LOWER BLADE SCISSORS' : 9987, + 'LOWER FIVE EIGHTHS BLOCK' : 9605, + 'LOWER HALF BLOCK' : 9604, + 'LOWER HALF CIRCLE' : 9697, + 'LOWER HALF INVERSE WHITE CIRCLE' : 9691, + 'LOWER LEFT QUADRANT CIRCULAR ARC' : 9695, + 'LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW' : 10559, + 'LOWER LEFT TRIANGLE' : 9722, + 'LOWER ONE EIGHTH BLOCK' : 9601, + 'LOWER ONE QUARTER BLOCK' : 9602, + 'LOWER RIGHT CORNER WITH DOT' : 10195, + 'LOWER RIGHT DROP-SHADOWED WHITE SQUARE' : 10063, + 'LOWER RIGHT PENCIL' : 9998, + 'LOWER RIGHT QUADRANT CIRCULAR ARC' : 9694, + 'LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW' : 10558, + 'LOWER RIGHT SHADOWED WHITE SQUARE' : 10065, + 'LOWER RIGHT TRIANGLE' : 9727, + 'LOWER SEVEN EIGHTHS BLOCK' : 9607, + 'LOWER THREE EIGHTHS BLOCK' : 9603, + 'LOWER THREE QUARTERS BLOCK' : 9606, + 'LOZENGE' : 9674, + 'LOZENGE DIVIDED BY HORIZONTAL RULE' : 10208, + 'MACRON' : 175, + 'MALAYALAM AU LENGTH MARK' : 3415, + 'MALAYALAM DIGIT EIGHT' : 3438, + 'MALAYALAM DIGIT FIVE' : 3435, + 'MALAYALAM DIGIT FOUR' : 3434, + 'MALAYALAM DIGIT NINE' : 3439, + 'MALAYALAM DIGIT ONE' : 3431, + 'MALAYALAM DIGIT SEVEN' : 3437, + 'MALAYALAM DIGIT SIX' : 3436, + 'MALAYALAM DIGIT THREE' : 3433, + 'MALAYALAM DIGIT TWO' : 3432, + 'MALAYALAM DIGIT ZERO' : 3430, + 'MALAYALAM LETTER A' : 3333, + 'MALAYALAM LETTER AA' : 3334, + 'MALAYALAM LETTER AI' : 3344, + 'MALAYALAM LETTER AU' : 3348, + 'MALAYALAM LETTER BA' : 3372, + 'MALAYALAM LETTER BHA' : 3373, + 'MALAYALAM LETTER CA' : 3354, + 'MALAYALAM LETTER CHA' : 3355, + 'MALAYALAM LETTER DA' : 3366, + 'MALAYALAM LETTER DDA' : 3361, + 'MALAYALAM LETTER DDHA' : 3362, + 'MALAYALAM LETTER DHA' : 3367, + 'MALAYALAM LETTER E' : 3342, + 'MALAYALAM LETTER EE' : 3343, + 'MALAYALAM LETTER GA' : 3351, + 'MALAYALAM LETTER GHA' : 3352, + 'MALAYALAM LETTER HA' : 3385, + 'MALAYALAM LETTER I' : 3335, + 'MALAYALAM LETTER II' : 3336, + 'MALAYALAM LETTER JA' : 3356, + 'MALAYALAM LETTER JHA' : 3357, + 'MALAYALAM LETTER KA' : 3349, + 'MALAYALAM LETTER KHA' : 3350, + 'MALAYALAM LETTER LA' : 3378, + 'MALAYALAM LETTER LLA' : 3379, + 'MALAYALAM LETTER LLLA' : 3380, + 'MALAYALAM LETTER MA' : 3374, + 'MALAYALAM LETTER NA' : 3368, + 'MALAYALAM LETTER NGA' : 3353, + 'MALAYALAM LETTER NNA' : 3363, + 'MALAYALAM LETTER NYA' : 3358, + 'MALAYALAM LETTER O' : 3346, + 'MALAYALAM LETTER OO' : 3347, + 'MALAYALAM LETTER PA' : 3370, + 'MALAYALAM LETTER PHA' : 3371, + 'MALAYALAM LETTER RA' : 3376, + 'MALAYALAM LETTER RRA' : 3377, + 'MALAYALAM LETTER SA' : 3384, + 'MALAYALAM LETTER SHA' : 3382, + 'MALAYALAM LETTER SSA' : 3383, + 'MALAYALAM LETTER TA' : 3364, + 'MALAYALAM LETTER THA' : 3365, + 'MALAYALAM LETTER TTA' : 3359, + 'MALAYALAM LETTER TTHA' : 3360, + 'MALAYALAM LETTER U' : 3337, + 'MALAYALAM LETTER UU' : 3338, + 'MALAYALAM LETTER VA' : 3381, + 'MALAYALAM LETTER VOCALIC L' : 3340, + 'MALAYALAM LETTER VOCALIC LL' : 3425, + 'MALAYALAM LETTER VOCALIC R' : 3339, + 'MALAYALAM LETTER VOCALIC RR' : 3424, + 'MALAYALAM LETTER YA' : 3375, + 'MALAYALAM SIGN ANUSVARA' : 3330, + 'MALAYALAM SIGN VIRAMA' : 3405, + 'MALAYALAM SIGN VISARGA' : 3331, + 'MALAYALAM VOWEL SIGN AA' : 3390, + 'MALAYALAM VOWEL SIGN AI' : 3400, + 'MALAYALAM VOWEL SIGN AU' : 3404, + 'MALAYALAM VOWEL SIGN E' : 3398, + 'MALAYALAM VOWEL SIGN EE' : 3399, + 'MALAYALAM VOWEL SIGN I' : 3391, + 'MALAYALAM VOWEL SIGN II' : 3392, + 'MALAYALAM VOWEL SIGN O' : 3402, + 'MALAYALAM VOWEL SIGN OO' : 3403, + 'MALAYALAM VOWEL SIGN U' : 3393, + 'MALAYALAM VOWEL SIGN UU' : 3394, + 'MALAYALAM VOWEL SIGN VOCALIC R' : 3395, + 'MALE SIGN' : 9794, + 'MALTESE CROSS' : 10016, + 'MASCULINE ORDINAL INDICATOR' : 186, + 'MASU MARK' : 12348, + 'MATHEMATICAL BOLD CAPITAL A' : 119808, + 'MATHEMATICAL BOLD CAPITAL ALPHA' : 120488, + 'MATHEMATICAL BOLD CAPITAL B' : 119809, + 'MATHEMATICAL BOLD CAPITAL BETA' : 120489, + 'MATHEMATICAL BOLD CAPITAL C' : 119810, + 'MATHEMATICAL BOLD CAPITAL CHI' : 120510, + 'MATHEMATICAL BOLD CAPITAL D' : 119811, + 'MATHEMATICAL BOLD CAPITAL DELTA' : 120491, + 'MATHEMATICAL BOLD CAPITAL E' : 119812, + 'MATHEMATICAL BOLD CAPITAL EPSILON' : 120492, + 'MATHEMATICAL BOLD CAPITAL ETA' : 120494, + 'MATHEMATICAL BOLD CAPITAL F' : 119813, + 'MATHEMATICAL BOLD CAPITAL G' : 119814, + 'MATHEMATICAL BOLD CAPITAL GAMMA' : 120490, + 'MATHEMATICAL BOLD CAPITAL H' : 119815, + 'MATHEMATICAL BOLD CAPITAL I' : 119816, + 'MATHEMATICAL BOLD CAPITAL IOTA' : 120496, + 'MATHEMATICAL BOLD CAPITAL J' : 119817, + 'MATHEMATICAL BOLD CAPITAL K' : 119818, + 'MATHEMATICAL BOLD CAPITAL KAPPA' : 120497, + 'MATHEMATICAL BOLD CAPITAL L' : 119819, + 'MATHEMATICAL BOLD CAPITAL LAMDA' : 120498, + 'MATHEMATICAL BOLD CAPITAL M' : 119820, + 'MATHEMATICAL BOLD CAPITAL MU' : 120499, + 'MATHEMATICAL BOLD CAPITAL N' : 119821, + 'MATHEMATICAL BOLD CAPITAL NU' : 120500, + 'MATHEMATICAL BOLD CAPITAL O' : 119822, + 'MATHEMATICAL BOLD CAPITAL OMEGA' : 120512, + 'MATHEMATICAL BOLD CAPITAL OMICRON' : 120502, + 'MATHEMATICAL BOLD CAPITAL P' : 119823, + 'MATHEMATICAL BOLD CAPITAL PHI' : 120509, + 'MATHEMATICAL BOLD CAPITAL PI' : 120503, + 'MATHEMATICAL BOLD CAPITAL PSI' : 120511, + 'MATHEMATICAL BOLD CAPITAL Q' : 119824, + 'MATHEMATICAL BOLD CAPITAL R' : 119825, + 'MATHEMATICAL BOLD CAPITAL RHO' : 120504, + 'MATHEMATICAL BOLD CAPITAL S' : 119826, + 'MATHEMATICAL BOLD CAPITAL SIGMA' : 120506, + 'MATHEMATICAL BOLD CAPITAL T' : 119827, + 'MATHEMATICAL BOLD CAPITAL TAU' : 120507, + 'MATHEMATICAL BOLD CAPITAL THETA' : 120495, + 'MATHEMATICAL BOLD CAPITAL THETA SYMBOL' : 120505, + 'MATHEMATICAL BOLD CAPITAL U' : 119828, + 'MATHEMATICAL BOLD CAPITAL UPSILON' : 120508, + 'MATHEMATICAL BOLD CAPITAL V' : 119829, + 'MATHEMATICAL BOLD CAPITAL W' : 119830, + 'MATHEMATICAL BOLD CAPITAL X' : 119831, + 'MATHEMATICAL BOLD CAPITAL XI' : 120501, + 'MATHEMATICAL BOLD CAPITAL Y' : 119832, + 'MATHEMATICAL BOLD CAPITAL Z' : 119833, + 'MATHEMATICAL BOLD CAPITAL ZETA' : 120493, + 'MATHEMATICAL BOLD DIGIT EIGHT' : 120790, + 'MATHEMATICAL BOLD DIGIT FIVE' : 120787, + 'MATHEMATICAL BOLD DIGIT FOUR' : 120786, + 'MATHEMATICAL BOLD DIGIT NINE' : 120791, + 'MATHEMATICAL BOLD DIGIT ONE' : 120783, + 'MATHEMATICAL BOLD DIGIT SEVEN' : 120789, + 'MATHEMATICAL BOLD DIGIT SIX' : 120788, + 'MATHEMATICAL BOLD DIGIT THREE' : 120785, + 'MATHEMATICAL BOLD DIGIT TWO' : 120784, + 'MATHEMATICAL BOLD DIGIT ZERO' : 120782, + 'MATHEMATICAL BOLD EPSILON SYMBOL' : 120540, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL A' : 120172, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL B' : 120173, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL C' : 120174, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL D' : 120175, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL E' : 120176, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL F' : 120177, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL G' : 120178, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL H' : 120179, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL I' : 120180, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL J' : 120181, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL K' : 120182, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL L' : 120183, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL M' : 120184, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL N' : 120185, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL O' : 120186, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL P' : 120187, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL Q' : 120188, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL R' : 120189, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL S' : 120190, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL T' : 120191, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL U' : 120192, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL V' : 120193, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL W' : 120194, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL X' : 120195, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL Y' : 120196, + 'MATHEMATICAL BOLD FRAKTUR CAPITAL Z' : 120197, + 'MATHEMATICAL BOLD FRAKTUR SMALL A' : 120198, + 'MATHEMATICAL BOLD FRAKTUR SMALL B' : 120199, + 'MATHEMATICAL BOLD FRAKTUR SMALL C' : 120200, + 'MATHEMATICAL BOLD FRAKTUR SMALL D' : 120201, + 'MATHEMATICAL BOLD FRAKTUR SMALL E' : 120202, + 'MATHEMATICAL BOLD FRAKTUR SMALL F' : 120203, + 'MATHEMATICAL BOLD FRAKTUR SMALL G' : 120204, + 'MATHEMATICAL BOLD FRAKTUR SMALL H' : 120205, + 'MATHEMATICAL BOLD FRAKTUR SMALL I' : 120206, + 'MATHEMATICAL BOLD FRAKTUR SMALL J' : 120207, + 'MATHEMATICAL BOLD FRAKTUR SMALL K' : 120208, + 'MATHEMATICAL BOLD FRAKTUR SMALL L' : 120209, + 'MATHEMATICAL BOLD FRAKTUR SMALL M' : 120210, + 'MATHEMATICAL BOLD FRAKTUR SMALL N' : 120211, + 'MATHEMATICAL BOLD FRAKTUR SMALL O' : 120212, + 'MATHEMATICAL BOLD FRAKTUR SMALL P' : 120213, + 'MATHEMATICAL BOLD FRAKTUR SMALL Q' : 120214, + 'MATHEMATICAL BOLD FRAKTUR SMALL R' : 120215, + 'MATHEMATICAL BOLD FRAKTUR SMALL S' : 120216, + 'MATHEMATICAL BOLD FRAKTUR SMALL T' : 120217, + 'MATHEMATICAL BOLD FRAKTUR SMALL U' : 120218, + 'MATHEMATICAL BOLD FRAKTUR SMALL V' : 120219, + 'MATHEMATICAL BOLD FRAKTUR SMALL W' : 120220, + 'MATHEMATICAL BOLD FRAKTUR SMALL X' : 120221, + 'MATHEMATICAL BOLD FRAKTUR SMALL Y' : 120222, + 'MATHEMATICAL BOLD FRAKTUR SMALL Z' : 120223, + 'MATHEMATICAL BOLD ITALIC CAPITAL A' : 119912, + 'MATHEMATICAL BOLD ITALIC CAPITAL ALPHA' : 120604, + 'MATHEMATICAL BOLD ITALIC CAPITAL B' : 119913, + 'MATHEMATICAL BOLD ITALIC CAPITAL BETA' : 120605, + 'MATHEMATICAL BOLD ITALIC CAPITAL C' : 119914, + 'MATHEMATICAL BOLD ITALIC CAPITAL CHI' : 120626, + 'MATHEMATICAL BOLD ITALIC CAPITAL D' : 119915, + 'MATHEMATICAL BOLD ITALIC CAPITAL DELTA' : 120607, + 'MATHEMATICAL BOLD ITALIC CAPITAL E' : 119916, + 'MATHEMATICAL BOLD ITALIC CAPITAL EPSILON' : 120608, + 'MATHEMATICAL BOLD ITALIC CAPITAL ETA' : 120610, + 'MATHEMATICAL BOLD ITALIC CAPITAL F' : 119917, + 'MATHEMATICAL BOLD ITALIC CAPITAL G' : 119918, + 'MATHEMATICAL BOLD ITALIC CAPITAL GAMMA' : 120606, + 'MATHEMATICAL BOLD ITALIC CAPITAL H' : 119919, + 'MATHEMATICAL BOLD ITALIC CAPITAL I' : 119920, + 'MATHEMATICAL BOLD ITALIC CAPITAL IOTA' : 120612, + 'MATHEMATICAL BOLD ITALIC CAPITAL J' : 119921, + 'MATHEMATICAL BOLD ITALIC CAPITAL K' : 119922, + 'MATHEMATICAL BOLD ITALIC CAPITAL KAPPA' : 120613, + 'MATHEMATICAL BOLD ITALIC CAPITAL L' : 119923, + 'MATHEMATICAL BOLD ITALIC CAPITAL LAMDA' : 120614, + 'MATHEMATICAL BOLD ITALIC CAPITAL M' : 119924, + 'MATHEMATICAL BOLD ITALIC CAPITAL MU' : 120615, + 'MATHEMATICAL BOLD ITALIC CAPITAL N' : 119925, + 'MATHEMATICAL BOLD ITALIC CAPITAL NU' : 120616, + 'MATHEMATICAL BOLD ITALIC CAPITAL O' : 119926, + 'MATHEMATICAL BOLD ITALIC CAPITAL OMEGA' : 120628, + 'MATHEMATICAL BOLD ITALIC CAPITAL OMICRON' : 120618, + 'MATHEMATICAL BOLD ITALIC CAPITAL P' : 119927, + 'MATHEMATICAL BOLD ITALIC CAPITAL PHI' : 120625, + 'MATHEMATICAL BOLD ITALIC CAPITAL PI' : 120619, + 'MATHEMATICAL BOLD ITALIC CAPITAL PSI' : 120627, + 'MATHEMATICAL BOLD ITALIC CAPITAL Q' : 119928, + 'MATHEMATICAL BOLD ITALIC CAPITAL R' : 119929, + 'MATHEMATICAL BOLD ITALIC CAPITAL RHO' : 120620, + 'MATHEMATICAL BOLD ITALIC CAPITAL S' : 119930, + 'MATHEMATICAL BOLD ITALIC CAPITAL SIGMA' : 120622, + 'MATHEMATICAL BOLD ITALIC CAPITAL T' : 119931, + 'MATHEMATICAL BOLD ITALIC CAPITAL TAU' : 120623, + 'MATHEMATICAL BOLD ITALIC CAPITAL THETA' : 120611, + 'MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL' : 120621, + 'MATHEMATICAL BOLD ITALIC CAPITAL U' : 119932, + 'MATHEMATICAL BOLD ITALIC CAPITAL UPSILON' : 120624, + 'MATHEMATICAL BOLD ITALIC CAPITAL V' : 119933, + 'MATHEMATICAL BOLD ITALIC CAPITAL W' : 119934, + 'MATHEMATICAL BOLD ITALIC CAPITAL X' : 119935, + 'MATHEMATICAL BOLD ITALIC CAPITAL XI' : 120617, + 'MATHEMATICAL BOLD ITALIC CAPITAL Y' : 119936, + 'MATHEMATICAL BOLD ITALIC CAPITAL Z' : 119937, + 'MATHEMATICAL BOLD ITALIC CAPITAL ZETA' : 120609, + 'MATHEMATICAL BOLD ITALIC EPSILON SYMBOL' : 120656, + 'MATHEMATICAL BOLD ITALIC KAPPA SYMBOL' : 120658, + 'MATHEMATICAL BOLD ITALIC NABLA' : 120629, + 'MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL' : 120655, + 'MATHEMATICAL BOLD ITALIC PHI SYMBOL' : 120659, + 'MATHEMATICAL BOLD ITALIC PI SYMBOL' : 120661, + 'MATHEMATICAL BOLD ITALIC RHO SYMBOL' : 120660, + 'MATHEMATICAL BOLD ITALIC SMALL A' : 119938, + 'MATHEMATICAL BOLD ITALIC SMALL ALPHA' : 120630, + 'MATHEMATICAL BOLD ITALIC SMALL B' : 119939, + 'MATHEMATICAL BOLD ITALIC SMALL BETA' : 120631, + 'MATHEMATICAL BOLD ITALIC SMALL C' : 119940, + 'MATHEMATICAL BOLD ITALIC SMALL CHI' : 120652, + 'MATHEMATICAL BOLD ITALIC SMALL D' : 119941, + 'MATHEMATICAL BOLD ITALIC SMALL DELTA' : 120633, + 'MATHEMATICAL BOLD ITALIC SMALL E' : 119942, + 'MATHEMATICAL BOLD ITALIC SMALL EPSILON' : 120634, + 'MATHEMATICAL BOLD ITALIC SMALL ETA' : 120636, + 'MATHEMATICAL BOLD ITALIC SMALL F' : 119943, + 'MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA' : 120647, + 'MATHEMATICAL BOLD ITALIC SMALL G' : 119944, + 'MATHEMATICAL BOLD ITALIC SMALL GAMMA' : 120632, + 'MATHEMATICAL BOLD ITALIC SMALL H' : 119945, + 'MATHEMATICAL BOLD ITALIC SMALL I' : 119946, + 'MATHEMATICAL BOLD ITALIC SMALL IOTA' : 120638, + 'MATHEMATICAL BOLD ITALIC SMALL J' : 119947, + 'MATHEMATICAL BOLD ITALIC SMALL K' : 119948, + 'MATHEMATICAL BOLD ITALIC SMALL KAPPA' : 120639, + 'MATHEMATICAL BOLD ITALIC SMALL L' : 119949, + 'MATHEMATICAL BOLD ITALIC SMALL LAMDA' : 120640, + 'MATHEMATICAL BOLD ITALIC SMALL M' : 119950, + 'MATHEMATICAL BOLD ITALIC SMALL MU' : 120641, + 'MATHEMATICAL BOLD ITALIC SMALL N' : 119951, + 'MATHEMATICAL BOLD ITALIC SMALL NU' : 120642, + 'MATHEMATICAL BOLD ITALIC SMALL O' : 119952, + 'MATHEMATICAL BOLD ITALIC SMALL OMEGA' : 120654, + 'MATHEMATICAL BOLD ITALIC SMALL OMICRON' : 120644, + 'MATHEMATICAL BOLD ITALIC SMALL P' : 119953, + 'MATHEMATICAL BOLD ITALIC SMALL PHI' : 120651, + 'MATHEMATICAL BOLD ITALIC SMALL PI' : 120645, + 'MATHEMATICAL BOLD ITALIC SMALL PSI' : 120653, + 'MATHEMATICAL BOLD ITALIC SMALL Q' : 119954, + 'MATHEMATICAL BOLD ITALIC SMALL R' : 119955, + 'MATHEMATICAL BOLD ITALIC SMALL RHO' : 120646, + 'MATHEMATICAL BOLD ITALIC SMALL S' : 119956, + 'MATHEMATICAL BOLD ITALIC SMALL SIGMA' : 120648, + 'MATHEMATICAL BOLD ITALIC SMALL T' : 119957, + 'MATHEMATICAL BOLD ITALIC SMALL TAU' : 120649, + 'MATHEMATICAL BOLD ITALIC SMALL THETA' : 120637, + 'MATHEMATICAL BOLD ITALIC SMALL U' : 119958, + 'MATHEMATICAL BOLD ITALIC SMALL UPSILON' : 120650, + 'MATHEMATICAL BOLD ITALIC SMALL V' : 119959, + 'MATHEMATICAL BOLD ITALIC SMALL W' : 119960, + 'MATHEMATICAL BOLD ITALIC SMALL X' : 119961, + 'MATHEMATICAL BOLD ITALIC SMALL XI' : 120643, + 'MATHEMATICAL BOLD ITALIC SMALL Y' : 119962, + 'MATHEMATICAL BOLD ITALIC SMALL Z' : 119963, + 'MATHEMATICAL BOLD ITALIC SMALL ZETA' : 120635, + 'MATHEMATICAL BOLD ITALIC THETA SYMBOL' : 120657, + 'MATHEMATICAL BOLD KAPPA SYMBOL' : 120542, + 'MATHEMATICAL BOLD NABLA' : 120513, + 'MATHEMATICAL BOLD PARTIAL DIFFERENTIAL' : 120539, + 'MATHEMATICAL BOLD PHI SYMBOL' : 120543, + 'MATHEMATICAL BOLD PI SYMBOL' : 120545, + 'MATHEMATICAL BOLD RHO SYMBOL' : 120544, + 'MATHEMATICAL BOLD SCRIPT CAPITAL A' : 120016, + 'MATHEMATICAL BOLD SCRIPT CAPITAL B' : 120017, + 'MATHEMATICAL BOLD SCRIPT CAPITAL C' : 120018, + 'MATHEMATICAL BOLD SCRIPT CAPITAL D' : 120019, + 'MATHEMATICAL BOLD SCRIPT CAPITAL E' : 120020, + 'MATHEMATICAL BOLD SCRIPT CAPITAL F' : 120021, + 'MATHEMATICAL BOLD SCRIPT CAPITAL G' : 120022, + 'MATHEMATICAL BOLD SCRIPT CAPITAL H' : 120023, + 'MATHEMATICAL BOLD SCRIPT CAPITAL I' : 120024, + 'MATHEMATICAL BOLD SCRIPT CAPITAL J' : 120025, + 'MATHEMATICAL BOLD SCRIPT CAPITAL K' : 120026, + 'MATHEMATICAL BOLD SCRIPT CAPITAL L' : 120027, + 'MATHEMATICAL BOLD SCRIPT CAPITAL M' : 120028, + 'MATHEMATICAL BOLD SCRIPT CAPITAL N' : 120029, + 'MATHEMATICAL BOLD SCRIPT CAPITAL O' : 120030, + 'MATHEMATICAL BOLD SCRIPT CAPITAL P' : 120031, + 'MATHEMATICAL BOLD SCRIPT CAPITAL Q' : 120032, + 'MATHEMATICAL BOLD SCRIPT CAPITAL R' : 120033, + 'MATHEMATICAL BOLD SCRIPT CAPITAL S' : 120034, + 'MATHEMATICAL BOLD SCRIPT CAPITAL T' : 120035, + 'MATHEMATICAL BOLD SCRIPT CAPITAL U' : 120036, + 'MATHEMATICAL BOLD SCRIPT CAPITAL V' : 120037, + 'MATHEMATICAL BOLD SCRIPT CAPITAL W' : 120038, + 'MATHEMATICAL BOLD SCRIPT CAPITAL X' : 120039, + 'MATHEMATICAL BOLD SCRIPT CAPITAL Y' : 120040, + 'MATHEMATICAL BOLD SCRIPT CAPITAL Z' : 120041, + 'MATHEMATICAL BOLD SCRIPT SMALL A' : 120042, + 'MATHEMATICAL BOLD SCRIPT SMALL B' : 120043, + 'MATHEMATICAL BOLD SCRIPT SMALL C' : 120044, + 'MATHEMATICAL BOLD SCRIPT SMALL D' : 120045, + 'MATHEMATICAL BOLD SCRIPT SMALL E' : 120046, + 'MATHEMATICAL BOLD SCRIPT SMALL F' : 120047, + 'MATHEMATICAL BOLD SCRIPT SMALL G' : 120048, + 'MATHEMATICAL BOLD SCRIPT SMALL H' : 120049, + 'MATHEMATICAL BOLD SCRIPT SMALL I' : 120050, + 'MATHEMATICAL BOLD SCRIPT SMALL J' : 120051, + 'MATHEMATICAL BOLD SCRIPT SMALL K' : 120052, + 'MATHEMATICAL BOLD SCRIPT SMALL L' : 120053, + 'MATHEMATICAL BOLD SCRIPT SMALL M' : 120054, + 'MATHEMATICAL BOLD SCRIPT SMALL N' : 120055, + 'MATHEMATICAL BOLD SCRIPT SMALL O' : 120056, + 'MATHEMATICAL BOLD SCRIPT SMALL P' : 120057, + 'MATHEMATICAL BOLD SCRIPT SMALL Q' : 120058, + 'MATHEMATICAL BOLD SCRIPT SMALL R' : 120059, + 'MATHEMATICAL BOLD SCRIPT SMALL S' : 120060, + 'MATHEMATICAL BOLD SCRIPT SMALL T' : 120061, + 'MATHEMATICAL BOLD SCRIPT SMALL U' : 120062, + 'MATHEMATICAL BOLD SCRIPT SMALL V' : 120063, + 'MATHEMATICAL BOLD SCRIPT SMALL W' : 120064, + 'MATHEMATICAL BOLD SCRIPT SMALL X' : 120065, + 'MATHEMATICAL BOLD SCRIPT SMALL Y' : 120066, + 'MATHEMATICAL BOLD SCRIPT SMALL Z' : 120067, + 'MATHEMATICAL BOLD SMALL A' : 119834, + 'MATHEMATICAL BOLD SMALL ALPHA' : 120514, + 'MATHEMATICAL BOLD SMALL B' : 119835, + 'MATHEMATICAL BOLD SMALL BETA' : 120515, + 'MATHEMATICAL BOLD SMALL C' : 119836, + 'MATHEMATICAL BOLD SMALL CHI' : 120536, + 'MATHEMATICAL BOLD SMALL D' : 119837, + 'MATHEMATICAL BOLD SMALL DELTA' : 120517, + 'MATHEMATICAL BOLD SMALL E' : 119838, + 'MATHEMATICAL BOLD SMALL EPSILON' : 120518, + 'MATHEMATICAL BOLD SMALL ETA' : 120520, + 'MATHEMATICAL BOLD SMALL F' : 119839, + 'MATHEMATICAL BOLD SMALL FINAL SIGMA' : 120531, + 'MATHEMATICAL BOLD SMALL G' : 119840, + 'MATHEMATICAL BOLD SMALL GAMMA' : 120516, + 'MATHEMATICAL BOLD SMALL H' : 119841, + 'MATHEMATICAL BOLD SMALL I' : 119842, + 'MATHEMATICAL BOLD SMALL IOTA' : 120522, + 'MATHEMATICAL BOLD SMALL J' : 119843, + 'MATHEMATICAL BOLD SMALL K' : 119844, + 'MATHEMATICAL BOLD SMALL KAPPA' : 120523, + 'MATHEMATICAL BOLD SMALL L' : 119845, + 'MATHEMATICAL BOLD SMALL LAMDA' : 120524, + 'MATHEMATICAL BOLD SMALL M' : 119846, + 'MATHEMATICAL BOLD SMALL MU' : 120525, + 'MATHEMATICAL BOLD SMALL N' : 119847, + 'MATHEMATICAL BOLD SMALL NU' : 120526, + 'MATHEMATICAL BOLD SMALL O' : 119848, + 'MATHEMATICAL BOLD SMALL OMEGA' : 120538, + 'MATHEMATICAL BOLD SMALL OMICRON' : 120528, + 'MATHEMATICAL BOLD SMALL P' : 119849, + 'MATHEMATICAL BOLD SMALL PHI' : 120535, + 'MATHEMATICAL BOLD SMALL PI' : 120529, + 'MATHEMATICAL BOLD SMALL PSI' : 120537, + 'MATHEMATICAL BOLD SMALL Q' : 119850, + 'MATHEMATICAL BOLD SMALL R' : 119851, + 'MATHEMATICAL BOLD SMALL RHO' : 120530, + 'MATHEMATICAL BOLD SMALL S' : 119852, + 'MATHEMATICAL BOLD SMALL SIGMA' : 120532, + 'MATHEMATICAL BOLD SMALL T' : 119853, + 'MATHEMATICAL BOLD SMALL TAU' : 120533, + 'MATHEMATICAL BOLD SMALL THETA' : 120521, + 'MATHEMATICAL BOLD SMALL U' : 119854, + 'MATHEMATICAL BOLD SMALL UPSILON' : 120534, + 'MATHEMATICAL BOLD SMALL V' : 119855, + 'MATHEMATICAL BOLD SMALL W' : 119856, + 'MATHEMATICAL BOLD SMALL X' : 119857, + 'MATHEMATICAL BOLD SMALL XI' : 120527, + 'MATHEMATICAL BOLD SMALL Y' : 119858, + 'MATHEMATICAL BOLD SMALL Z' : 119859, + 'MATHEMATICAL BOLD SMALL ZETA' : 120519, + 'MATHEMATICAL BOLD THETA SYMBOL' : 120541, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL A' : 120120, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL B' : 120121, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL D' : 120123, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL E' : 120124, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL F' : 120125, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL G' : 120126, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL I' : 120128, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL J' : 120129, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL K' : 120130, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL L' : 120131, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL M' : 120132, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL O' : 120134, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL S' : 120138, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL T' : 120139, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL U' : 120140, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL V' : 120141, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL W' : 120142, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL X' : 120143, + 'MATHEMATICAL DOUBLE-STRUCK CAPITAL Y' : 120144, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT' : 120800, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE' : 120797, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR' : 120796, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT NINE' : 120801, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT ONE' : 120793, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN' : 120799, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT SIX' : 120798, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT THREE' : 120795, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT TWO' : 120794, + 'MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO' : 120792, + 'MATHEMATICAL DOUBLE-STRUCK SMALL A' : 120146, + 'MATHEMATICAL DOUBLE-STRUCK SMALL B' : 120147, + 'MATHEMATICAL DOUBLE-STRUCK SMALL C' : 120148, + 'MATHEMATICAL DOUBLE-STRUCK SMALL D' : 120149, + 'MATHEMATICAL DOUBLE-STRUCK SMALL E' : 120150, + 'MATHEMATICAL DOUBLE-STRUCK SMALL F' : 120151, + 'MATHEMATICAL DOUBLE-STRUCK SMALL G' : 120152, + 'MATHEMATICAL DOUBLE-STRUCK SMALL H' : 120153, + 'MATHEMATICAL DOUBLE-STRUCK SMALL I' : 120154, + 'MATHEMATICAL DOUBLE-STRUCK SMALL J' : 120155, + 'MATHEMATICAL DOUBLE-STRUCK SMALL K' : 120156, + 'MATHEMATICAL DOUBLE-STRUCK SMALL L' : 120157, + 'MATHEMATICAL DOUBLE-STRUCK SMALL M' : 120158, + 'MATHEMATICAL DOUBLE-STRUCK SMALL N' : 120159, + 'MATHEMATICAL DOUBLE-STRUCK SMALL O' : 120160, + 'MATHEMATICAL DOUBLE-STRUCK SMALL P' : 120161, + 'MATHEMATICAL DOUBLE-STRUCK SMALL Q' : 120162, + 'MATHEMATICAL DOUBLE-STRUCK SMALL R' : 120163, + 'MATHEMATICAL DOUBLE-STRUCK SMALL S' : 120164, + 'MATHEMATICAL DOUBLE-STRUCK SMALL T' : 120165, + 'MATHEMATICAL DOUBLE-STRUCK SMALL U' : 120166, + 'MATHEMATICAL DOUBLE-STRUCK SMALL V' : 120167, + 'MATHEMATICAL DOUBLE-STRUCK SMALL W' : 120168, + 'MATHEMATICAL DOUBLE-STRUCK SMALL X' : 120169, + 'MATHEMATICAL DOUBLE-STRUCK SMALL Y' : 120170, + 'MATHEMATICAL DOUBLE-STRUCK SMALL Z' : 120171, + 'MATHEMATICAL FRAKTUR CAPITAL A' : 120068, + 'MATHEMATICAL FRAKTUR CAPITAL B' : 120069, + 'MATHEMATICAL FRAKTUR CAPITAL D' : 120071, + 'MATHEMATICAL FRAKTUR CAPITAL E' : 120072, + 'MATHEMATICAL FRAKTUR CAPITAL F' : 120073, + 'MATHEMATICAL FRAKTUR CAPITAL G' : 120074, + 'MATHEMATICAL FRAKTUR CAPITAL J' : 120077, + 'MATHEMATICAL FRAKTUR CAPITAL K' : 120078, + 'MATHEMATICAL FRAKTUR CAPITAL L' : 120079, + 'MATHEMATICAL FRAKTUR CAPITAL M' : 120080, + 'MATHEMATICAL FRAKTUR CAPITAL N' : 120081, + 'MATHEMATICAL FRAKTUR CAPITAL O' : 120082, + 'MATHEMATICAL FRAKTUR CAPITAL P' : 120083, + 'MATHEMATICAL FRAKTUR CAPITAL Q' : 120084, + 'MATHEMATICAL FRAKTUR CAPITAL S' : 120086, + 'MATHEMATICAL FRAKTUR CAPITAL T' : 120087, + 'MATHEMATICAL FRAKTUR CAPITAL U' : 120088, + 'MATHEMATICAL FRAKTUR CAPITAL V' : 120089, + 'MATHEMATICAL FRAKTUR CAPITAL W' : 120090, + 'MATHEMATICAL FRAKTUR CAPITAL X' : 120091, + 'MATHEMATICAL FRAKTUR CAPITAL Y' : 120092, + 'MATHEMATICAL FRAKTUR SMALL A' : 120094, + 'MATHEMATICAL FRAKTUR SMALL B' : 120095, + 'MATHEMATICAL FRAKTUR SMALL C' : 120096, + 'MATHEMATICAL FRAKTUR SMALL D' : 120097, + 'MATHEMATICAL FRAKTUR SMALL E' : 120098, + 'MATHEMATICAL FRAKTUR SMALL F' : 120099, + 'MATHEMATICAL FRAKTUR SMALL G' : 120100, + 'MATHEMATICAL FRAKTUR SMALL H' : 120101, + 'MATHEMATICAL FRAKTUR SMALL I' : 120102, + 'MATHEMATICAL FRAKTUR SMALL J' : 120103, + 'MATHEMATICAL FRAKTUR SMALL K' : 120104, + 'MATHEMATICAL FRAKTUR SMALL L' : 120105, + 'MATHEMATICAL FRAKTUR SMALL M' : 120106, + 'MATHEMATICAL FRAKTUR SMALL N' : 120107, + 'MATHEMATICAL FRAKTUR SMALL O' : 120108, + 'MATHEMATICAL FRAKTUR SMALL P' : 120109, + 'MATHEMATICAL FRAKTUR SMALL Q' : 120110, + 'MATHEMATICAL FRAKTUR SMALL R' : 120111, + 'MATHEMATICAL FRAKTUR SMALL S' : 120112, + 'MATHEMATICAL FRAKTUR SMALL T' : 120113, + 'MATHEMATICAL FRAKTUR SMALL U' : 120114, + 'MATHEMATICAL FRAKTUR SMALL V' : 120115, + 'MATHEMATICAL FRAKTUR SMALL W' : 120116, + 'MATHEMATICAL FRAKTUR SMALL X' : 120117, + 'MATHEMATICAL FRAKTUR SMALL Y' : 120118, + 'MATHEMATICAL FRAKTUR SMALL Z' : 120119, + 'MATHEMATICAL ITALIC CAPITAL A' : 119860, + 'MATHEMATICAL ITALIC CAPITAL ALPHA' : 120546, + 'MATHEMATICAL ITALIC CAPITAL B' : 119861, + 'MATHEMATICAL ITALIC CAPITAL BETA' : 120547, + 'MATHEMATICAL ITALIC CAPITAL C' : 119862, + 'MATHEMATICAL ITALIC CAPITAL CHI' : 120568, + 'MATHEMATICAL ITALIC CAPITAL D' : 119863, + 'MATHEMATICAL ITALIC CAPITAL DELTA' : 120549, + 'MATHEMATICAL ITALIC CAPITAL E' : 119864, + 'MATHEMATICAL ITALIC CAPITAL EPSILON' : 120550, + 'MATHEMATICAL ITALIC CAPITAL ETA' : 120552, + 'MATHEMATICAL ITALIC CAPITAL F' : 119865, + 'MATHEMATICAL ITALIC CAPITAL G' : 119866, + 'MATHEMATICAL ITALIC CAPITAL GAMMA' : 120548, + 'MATHEMATICAL ITALIC CAPITAL H' : 119867, + 'MATHEMATICAL ITALIC CAPITAL I' : 119868, + 'MATHEMATICAL ITALIC CAPITAL IOTA' : 120554, + 'MATHEMATICAL ITALIC CAPITAL J' : 119869, + 'MATHEMATICAL ITALIC CAPITAL K' : 119870, + 'MATHEMATICAL ITALIC CAPITAL KAPPA' : 120555, + 'MATHEMATICAL ITALIC CAPITAL L' : 119871, + 'MATHEMATICAL ITALIC CAPITAL LAMDA' : 120556, + 'MATHEMATICAL ITALIC CAPITAL M' : 119872, + 'MATHEMATICAL ITALIC CAPITAL MU' : 120557, + 'MATHEMATICAL ITALIC CAPITAL N' : 119873, + 'MATHEMATICAL ITALIC CAPITAL NU' : 120558, + 'MATHEMATICAL ITALIC CAPITAL O' : 119874, + 'MATHEMATICAL ITALIC CAPITAL OMEGA' : 120570, + 'MATHEMATICAL ITALIC CAPITAL OMICRON' : 120560, + 'MATHEMATICAL ITALIC CAPITAL P' : 119875, + 'MATHEMATICAL ITALIC CAPITAL PHI' : 120567, + 'MATHEMATICAL ITALIC CAPITAL PI' : 120561, + 'MATHEMATICAL ITALIC CAPITAL PSI' : 120569, + 'MATHEMATICAL ITALIC CAPITAL Q' : 119876, + 'MATHEMATICAL ITALIC CAPITAL R' : 119877, + 'MATHEMATICAL ITALIC CAPITAL RHO' : 120562, + 'MATHEMATICAL ITALIC CAPITAL S' : 119878, + 'MATHEMATICAL ITALIC CAPITAL SIGMA' : 120564, + 'MATHEMATICAL ITALIC CAPITAL T' : 119879, + 'MATHEMATICAL ITALIC CAPITAL TAU' : 120565, + 'MATHEMATICAL ITALIC CAPITAL THETA' : 120553, + 'MATHEMATICAL ITALIC CAPITAL THETA SYMBOL' : 120563, + 'MATHEMATICAL ITALIC CAPITAL U' : 119880, + 'MATHEMATICAL ITALIC CAPITAL UPSILON' : 120566, + 'MATHEMATICAL ITALIC CAPITAL V' : 119881, + 'MATHEMATICAL ITALIC CAPITAL W' : 119882, + 'MATHEMATICAL ITALIC CAPITAL X' : 119883, + 'MATHEMATICAL ITALIC CAPITAL XI' : 120559, + 'MATHEMATICAL ITALIC CAPITAL Y' : 119884, + 'MATHEMATICAL ITALIC CAPITAL Z' : 119885, + 'MATHEMATICAL ITALIC CAPITAL ZETA' : 120551, + 'MATHEMATICAL ITALIC EPSILON SYMBOL' : 120598, + 'MATHEMATICAL ITALIC KAPPA SYMBOL' : 120600, + 'MATHEMATICAL ITALIC NABLA' : 120571, + 'MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL' : 120597, + 'MATHEMATICAL ITALIC PHI SYMBOL' : 120601, + 'MATHEMATICAL ITALIC PI SYMBOL' : 120603, + 'MATHEMATICAL ITALIC RHO SYMBOL' : 120602, + 'MATHEMATICAL ITALIC SMALL A' : 119886, + 'MATHEMATICAL ITALIC SMALL ALPHA' : 120572, + 'MATHEMATICAL ITALIC SMALL B' : 119887, + 'MATHEMATICAL ITALIC SMALL BETA' : 120573, + 'MATHEMATICAL ITALIC SMALL C' : 119888, + 'MATHEMATICAL ITALIC SMALL CHI' : 120594, + 'MATHEMATICAL ITALIC SMALL D' : 119889, + 'MATHEMATICAL ITALIC SMALL DELTA' : 120575, + 'MATHEMATICAL ITALIC SMALL E' : 119890, + 'MATHEMATICAL ITALIC SMALL EPSILON' : 120576, + 'MATHEMATICAL ITALIC SMALL ETA' : 120578, + 'MATHEMATICAL ITALIC SMALL F' : 119891, + 'MATHEMATICAL ITALIC SMALL FINAL SIGMA' : 120589, + 'MATHEMATICAL ITALIC SMALL G' : 119892, + 'MATHEMATICAL ITALIC SMALL GAMMA' : 120574, + 'MATHEMATICAL ITALIC SMALL I' : 119894, + 'MATHEMATICAL ITALIC SMALL IOTA' : 120580, + 'MATHEMATICAL ITALIC SMALL J' : 119895, + 'MATHEMATICAL ITALIC SMALL K' : 119896, + 'MATHEMATICAL ITALIC SMALL KAPPA' : 120581, + 'MATHEMATICAL ITALIC SMALL L' : 119897, + 'MATHEMATICAL ITALIC SMALL LAMDA' : 120582, + 'MATHEMATICAL ITALIC SMALL M' : 119898, + 'MATHEMATICAL ITALIC SMALL MU' : 120583, + 'MATHEMATICAL ITALIC SMALL N' : 119899, + 'MATHEMATICAL ITALIC SMALL NU' : 120584, + 'MATHEMATICAL ITALIC SMALL O' : 119900, + 'MATHEMATICAL ITALIC SMALL OMEGA' : 120596, + 'MATHEMATICAL ITALIC SMALL OMICRON' : 120586, + 'MATHEMATICAL ITALIC SMALL P' : 119901, + 'MATHEMATICAL ITALIC SMALL PHI' : 120593, + 'MATHEMATICAL ITALIC SMALL PI' : 120587, + 'MATHEMATICAL ITALIC SMALL PSI' : 120595, + 'MATHEMATICAL ITALIC SMALL Q' : 119902, + 'MATHEMATICAL ITALIC SMALL R' : 119903, + 'MATHEMATICAL ITALIC SMALL RHO' : 120588, + 'MATHEMATICAL ITALIC SMALL S' : 119904, + 'MATHEMATICAL ITALIC SMALL SIGMA' : 120590, + 'MATHEMATICAL ITALIC SMALL T' : 119905, + 'MATHEMATICAL ITALIC SMALL TAU' : 120591, + 'MATHEMATICAL ITALIC SMALL THETA' : 120579, + 'MATHEMATICAL ITALIC SMALL U' : 119906, + 'MATHEMATICAL ITALIC SMALL UPSILON' : 120592, + 'MATHEMATICAL ITALIC SMALL V' : 119907, + 'MATHEMATICAL ITALIC SMALL W' : 119908, + 'MATHEMATICAL ITALIC SMALL X' : 119909, + 'MATHEMATICAL ITALIC SMALL XI' : 120585, + 'MATHEMATICAL ITALIC SMALL Y' : 119910, + 'MATHEMATICAL ITALIC SMALL Z' : 119911, + 'MATHEMATICAL ITALIC SMALL ZETA' : 120577, + 'MATHEMATICAL ITALIC THETA SYMBOL' : 120599, + 'MATHEMATICAL LEFT ANGLE BRACKET' : 10216, + 'MATHEMATICAL LEFT DOUBLE ANGLE BRACKET' : 10218, + 'MATHEMATICAL LEFT WHITE SQUARE BRACKET' : 10214, + 'MATHEMATICAL MONOSPACE CAPITAL A' : 120432, + 'MATHEMATICAL MONOSPACE CAPITAL B' : 120433, + 'MATHEMATICAL MONOSPACE CAPITAL C' : 120434, + 'MATHEMATICAL MONOSPACE CAPITAL D' : 120435, + 'MATHEMATICAL MONOSPACE CAPITAL E' : 120436, + 'MATHEMATICAL MONOSPACE CAPITAL F' : 120437, + 'MATHEMATICAL MONOSPACE CAPITAL G' : 120438, + 'MATHEMATICAL MONOSPACE CAPITAL H' : 120439, + 'MATHEMATICAL MONOSPACE CAPITAL I' : 120440, + 'MATHEMATICAL MONOSPACE CAPITAL J' : 120441, + 'MATHEMATICAL MONOSPACE CAPITAL K' : 120442, + 'MATHEMATICAL MONOSPACE CAPITAL L' : 120443, + 'MATHEMATICAL MONOSPACE CAPITAL M' : 120444, + 'MATHEMATICAL MONOSPACE CAPITAL N' : 120445, + 'MATHEMATICAL MONOSPACE CAPITAL O' : 120446, + 'MATHEMATICAL MONOSPACE CAPITAL P' : 120447, + 'MATHEMATICAL MONOSPACE CAPITAL Q' : 120448, + 'MATHEMATICAL MONOSPACE CAPITAL R' : 120449, + 'MATHEMATICAL MONOSPACE CAPITAL S' : 120450, + 'MATHEMATICAL MONOSPACE CAPITAL T' : 120451, + 'MATHEMATICAL MONOSPACE CAPITAL U' : 120452, + 'MATHEMATICAL MONOSPACE CAPITAL V' : 120453, + 'MATHEMATICAL MONOSPACE CAPITAL W' : 120454, + 'MATHEMATICAL MONOSPACE CAPITAL X' : 120455, + 'MATHEMATICAL MONOSPACE CAPITAL Y' : 120456, + 'MATHEMATICAL MONOSPACE CAPITAL Z' : 120457, + 'MATHEMATICAL MONOSPACE DIGIT EIGHT' : 120830, + 'MATHEMATICAL MONOSPACE DIGIT FIVE' : 120827, + 'MATHEMATICAL MONOSPACE DIGIT FOUR' : 120826, + 'MATHEMATICAL MONOSPACE DIGIT NINE' : 120831, + 'MATHEMATICAL MONOSPACE DIGIT ONE' : 120823, + 'MATHEMATICAL MONOSPACE DIGIT SEVEN' : 120829, + 'MATHEMATICAL MONOSPACE DIGIT SIX' : 120828, + 'MATHEMATICAL MONOSPACE DIGIT THREE' : 120825, + 'MATHEMATICAL MONOSPACE DIGIT TWO' : 120824, + 'MATHEMATICAL MONOSPACE DIGIT ZERO' : 120822, + 'MATHEMATICAL MONOSPACE SMALL A' : 120458, + 'MATHEMATICAL MONOSPACE SMALL B' : 120459, + 'MATHEMATICAL MONOSPACE SMALL C' : 120460, + 'MATHEMATICAL MONOSPACE SMALL D' : 120461, + 'MATHEMATICAL MONOSPACE SMALL E' : 120462, + 'MATHEMATICAL MONOSPACE SMALL F' : 120463, + 'MATHEMATICAL MONOSPACE SMALL G' : 120464, + 'MATHEMATICAL MONOSPACE SMALL H' : 120465, + 'MATHEMATICAL MONOSPACE SMALL I' : 120466, + 'MATHEMATICAL MONOSPACE SMALL J' : 120467, + 'MATHEMATICAL MONOSPACE SMALL K' : 120468, + 'MATHEMATICAL MONOSPACE SMALL L' : 120469, + 'MATHEMATICAL MONOSPACE SMALL M' : 120470, + 'MATHEMATICAL MONOSPACE SMALL N' : 120471, + 'MATHEMATICAL MONOSPACE SMALL O' : 120472, + 'MATHEMATICAL MONOSPACE SMALL P' : 120473, + 'MATHEMATICAL MONOSPACE SMALL Q' : 120474, + 'MATHEMATICAL MONOSPACE SMALL R' : 120475, + 'MATHEMATICAL MONOSPACE SMALL S' : 120476, + 'MATHEMATICAL MONOSPACE SMALL T' : 120477, + 'MATHEMATICAL MONOSPACE SMALL U' : 120478, + 'MATHEMATICAL MONOSPACE SMALL V' : 120479, + 'MATHEMATICAL MONOSPACE SMALL W' : 120480, + 'MATHEMATICAL MONOSPACE SMALL X' : 120481, + 'MATHEMATICAL MONOSPACE SMALL Y' : 120482, + 'MATHEMATICAL MONOSPACE SMALL Z' : 120483, + 'MATHEMATICAL RIGHT ANGLE BRACKET' : 10217, + 'MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET' : 10219, + 'MATHEMATICAL RIGHT WHITE SQUARE BRACKET' : 10215, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL A' : 120276, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA' : 120662, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL B' : 120277, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA' : 120663, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL C' : 120278, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI' : 120684, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL D' : 120279, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA' : 120665, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL E' : 120280, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON' : 120666, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA' : 120668, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL F' : 120281, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL G' : 120282, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA' : 120664, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL H' : 120283, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL I' : 120284, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA' : 120670, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL J' : 120285, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL K' : 120286, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA' : 120671, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL L' : 120287, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA' : 120672, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL M' : 120288, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL MU' : 120673, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL N' : 120289, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL NU' : 120674, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL O' : 120290, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA' : 120686, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON' : 120676, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL P' : 120291, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI' : 120683, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL PI' : 120677, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI' : 120685, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL Q' : 120292, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL R' : 120293, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO' : 120678, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL S' : 120294, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA' : 120680, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL T' : 120295, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU' : 120681, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA' : 120669, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL' : 120679, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL U' : 120296, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON' : 120682, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL V' : 120297, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL W' : 120298, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL X' : 120299, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL XI' : 120675, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL Y' : 120300, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL Z' : 120301, + 'MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA' : 120667, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT' : 120820, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE' : 120817, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR' : 120816, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT NINE' : 120821, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT ONE' : 120813, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN' : 120819, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT SIX' : 120818, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT THREE' : 120815, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT TWO' : 120814, + 'MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO' : 120812, + 'MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL' : 120714, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A' : 120380, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA' : 120720, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B' : 120381, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA' : 120721, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C' : 120382, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI' : 120742, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D' : 120383, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA' : 120723, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E' : 120384, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON' : 120724, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA' : 120726, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F' : 120385, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G' : 120386, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA' : 120722, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H' : 120387, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I' : 120388, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA' : 120728, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J' : 120389, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K' : 120390, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA' : 120729, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L' : 120391, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA' : 120730, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M' : 120392, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU' : 120731, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N' : 120393, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU' : 120732, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O' : 120394, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA' : 120744, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON' : 120734, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P' : 120395, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI' : 120741, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI' : 120735, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI' : 120743, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q' : 120396, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R' : 120397, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO' : 120736, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S' : 120398, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA' : 120738, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T' : 120399, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU' : 120739, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA' : 120727, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL' : 120737, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U' : 120400, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON' : 120740, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V' : 120401, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W' : 120402, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X' : 120403, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI' : 120733, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y' : 120404, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z' : 120405, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA' : 120725, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL' : 120772, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL' : 120774, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA' : 120745, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL' : 120771, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL' : 120775, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL' : 120777, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL' : 120776, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A' : 120406, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA' : 120746, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B' : 120407, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA' : 120747, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C' : 120408, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI' : 120768, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D' : 120409, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA' : 120749, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E' : 120410, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON' : 120750, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA' : 120752, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F' : 120411, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA' : 120763, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G' : 120412, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA' : 120748, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H' : 120413, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I' : 120414, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA' : 120754, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J' : 120415, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K' : 120416, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA' : 120755, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L' : 120417, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA' : 120756, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M' : 120418, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU' : 120757, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N' : 120419, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU' : 120758, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O' : 120420, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA' : 120770, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON' : 120760, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P' : 120421, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI' : 120767, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI' : 120761, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI' : 120769, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q' : 120422, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R' : 120423, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO' : 120762, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S' : 120424, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA' : 120764, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T' : 120425, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU' : 120765, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA' : 120753, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U' : 120426, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON' : 120766, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V' : 120427, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W' : 120428, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X' : 120429, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI' : 120759, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y' : 120430, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z' : 120431, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA' : 120751, + 'MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL' : 120773, + 'MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL' : 120716, + 'MATHEMATICAL SANS-SERIF BOLD NABLA' : 120687, + 'MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL' : 120713, + 'MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL' : 120717, + 'MATHEMATICAL SANS-SERIF BOLD PI SYMBOL' : 120719, + 'MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL' : 120718, + 'MATHEMATICAL SANS-SERIF BOLD SMALL A' : 120302, + 'MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA' : 120688, + 'MATHEMATICAL SANS-SERIF BOLD SMALL B' : 120303, + 'MATHEMATICAL SANS-SERIF BOLD SMALL BETA' : 120689, + 'MATHEMATICAL SANS-SERIF BOLD SMALL C' : 120304, + 'MATHEMATICAL SANS-SERIF BOLD SMALL CHI' : 120710, + 'MATHEMATICAL SANS-SERIF BOLD SMALL D' : 120305, + 'MATHEMATICAL SANS-SERIF BOLD SMALL DELTA' : 120691, + 'MATHEMATICAL SANS-SERIF BOLD SMALL E' : 120306, + 'MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON' : 120692, + 'MATHEMATICAL SANS-SERIF BOLD SMALL ETA' : 120694, + 'MATHEMATICAL SANS-SERIF BOLD SMALL F' : 120307, + 'MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA' : 120705, + 'MATHEMATICAL SANS-SERIF BOLD SMALL G' : 120308, + 'MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA' : 120690, + 'MATHEMATICAL SANS-SERIF BOLD SMALL H' : 120309, + 'MATHEMATICAL SANS-SERIF BOLD SMALL I' : 120310, + 'MATHEMATICAL SANS-SERIF BOLD SMALL IOTA' : 120696, + 'MATHEMATICAL SANS-SERIF BOLD SMALL J' : 120311, + 'MATHEMATICAL SANS-SERIF BOLD SMALL K' : 120312, + 'MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA' : 120697, + 'MATHEMATICAL SANS-SERIF BOLD SMALL L' : 120313, + 'MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA' : 120698, + 'MATHEMATICAL SANS-SERIF BOLD SMALL M' : 120314, + 'MATHEMATICAL SANS-SERIF BOLD SMALL MU' : 120699, + 'MATHEMATICAL SANS-SERIF BOLD SMALL N' : 120315, + 'MATHEMATICAL SANS-SERIF BOLD SMALL NU' : 120700, + 'MATHEMATICAL SANS-SERIF BOLD SMALL O' : 120316, + 'MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA' : 120712, + 'MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON' : 120702, + 'MATHEMATICAL SANS-SERIF BOLD SMALL P' : 120317, + 'MATHEMATICAL SANS-SERIF BOLD SMALL PHI' : 120709, + 'MATHEMATICAL SANS-SERIF BOLD SMALL PI' : 120703, + 'MATHEMATICAL SANS-SERIF BOLD SMALL PSI' : 120711, + 'MATHEMATICAL SANS-SERIF BOLD SMALL Q' : 120318, + 'MATHEMATICAL SANS-SERIF BOLD SMALL R' : 120319, + 'MATHEMATICAL SANS-SERIF BOLD SMALL RHO' : 120704, + 'MATHEMATICAL SANS-SERIF BOLD SMALL S' : 120320, + 'MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA' : 120706, + 'MATHEMATICAL SANS-SERIF BOLD SMALL T' : 120321, + 'MATHEMATICAL SANS-SERIF BOLD SMALL TAU' : 120707, + 'MATHEMATICAL SANS-SERIF BOLD SMALL THETA' : 120695, + 'MATHEMATICAL SANS-SERIF BOLD SMALL U' : 120322, + 'MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON' : 120708, + 'MATHEMATICAL SANS-SERIF BOLD SMALL V' : 120323, + 'MATHEMATICAL SANS-SERIF BOLD SMALL W' : 120324, + 'MATHEMATICAL SANS-SERIF BOLD SMALL X' : 120325, + 'MATHEMATICAL SANS-SERIF BOLD SMALL XI' : 120701, + 'MATHEMATICAL SANS-SERIF BOLD SMALL Y' : 120326, + 'MATHEMATICAL SANS-SERIF BOLD SMALL Z' : 120327, + 'MATHEMATICAL SANS-SERIF BOLD SMALL ZETA' : 120693, + 'MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL' : 120715, + 'MATHEMATICAL SANS-SERIF CAPITAL A' : 120224, + 'MATHEMATICAL SANS-SERIF CAPITAL B' : 120225, + 'MATHEMATICAL SANS-SERIF CAPITAL C' : 120226, + 'MATHEMATICAL SANS-SERIF CAPITAL D' : 120227, + 'MATHEMATICAL SANS-SERIF CAPITAL E' : 120228, + 'MATHEMATICAL SANS-SERIF CAPITAL F' : 120229, + 'MATHEMATICAL SANS-SERIF CAPITAL G' : 120230, + 'MATHEMATICAL SANS-SERIF CAPITAL H' : 120231, + 'MATHEMATICAL SANS-SERIF CAPITAL I' : 120232, + 'MATHEMATICAL SANS-SERIF CAPITAL J' : 120233, + 'MATHEMATICAL SANS-SERIF CAPITAL K' : 120234, + 'MATHEMATICAL SANS-SERIF CAPITAL L' : 120235, + 'MATHEMATICAL SANS-SERIF CAPITAL M' : 120236, + 'MATHEMATICAL SANS-SERIF CAPITAL N' : 120237, + 'MATHEMATICAL SANS-SERIF CAPITAL O' : 120238, + 'MATHEMATICAL SANS-SERIF CAPITAL P' : 120239, + 'MATHEMATICAL SANS-SERIF CAPITAL Q' : 120240, + 'MATHEMATICAL SANS-SERIF CAPITAL R' : 120241, + 'MATHEMATICAL SANS-SERIF CAPITAL S' : 120242, + 'MATHEMATICAL SANS-SERIF CAPITAL T' : 120243, + 'MATHEMATICAL SANS-SERIF CAPITAL U' : 120244, + 'MATHEMATICAL SANS-SERIF CAPITAL V' : 120245, + 'MATHEMATICAL SANS-SERIF CAPITAL W' : 120246, + 'MATHEMATICAL SANS-SERIF CAPITAL X' : 120247, + 'MATHEMATICAL SANS-SERIF CAPITAL Y' : 120248, + 'MATHEMATICAL SANS-SERIF CAPITAL Z' : 120249, + 'MATHEMATICAL SANS-SERIF DIGIT EIGHT' : 120810, + 'MATHEMATICAL SANS-SERIF DIGIT FIVE' : 120807, + 'MATHEMATICAL SANS-SERIF DIGIT FOUR' : 120806, + 'MATHEMATICAL SANS-SERIF DIGIT NINE' : 120811, + 'MATHEMATICAL SANS-SERIF DIGIT ONE' : 120803, + 'MATHEMATICAL SANS-SERIF DIGIT SEVEN' : 120809, + 'MATHEMATICAL SANS-SERIF DIGIT SIX' : 120808, + 'MATHEMATICAL SANS-SERIF DIGIT THREE' : 120805, + 'MATHEMATICAL SANS-SERIF DIGIT TWO' : 120804, + 'MATHEMATICAL SANS-SERIF DIGIT ZERO' : 120802, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL A' : 120328, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL B' : 120329, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL C' : 120330, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL D' : 120331, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL E' : 120332, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL F' : 120333, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL G' : 120334, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL H' : 120335, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL I' : 120336, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL J' : 120337, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL K' : 120338, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL L' : 120339, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL M' : 120340, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL N' : 120341, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL O' : 120342, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL P' : 120343, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q' : 120344, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL R' : 120345, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL S' : 120346, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL T' : 120347, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL U' : 120348, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL V' : 120349, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL W' : 120350, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL X' : 120351, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y' : 120352, + 'MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z' : 120353, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL A' : 120354, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL B' : 120355, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL C' : 120356, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL D' : 120357, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL E' : 120358, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL F' : 120359, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL G' : 120360, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL H' : 120361, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL I' : 120362, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL J' : 120363, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL K' : 120364, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL L' : 120365, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL M' : 120366, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL N' : 120367, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL O' : 120368, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL P' : 120369, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL Q' : 120370, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL R' : 120371, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL S' : 120372, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL T' : 120373, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL U' : 120374, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL V' : 120375, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL W' : 120376, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL X' : 120377, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL Y' : 120378, + 'MATHEMATICAL SANS-SERIF ITALIC SMALL Z' : 120379, + 'MATHEMATICAL SANS-SERIF SMALL A' : 120250, + 'MATHEMATICAL SANS-SERIF SMALL B' : 120251, + 'MATHEMATICAL SANS-SERIF SMALL C' : 120252, + 'MATHEMATICAL SANS-SERIF SMALL D' : 120253, + 'MATHEMATICAL SANS-SERIF SMALL E' : 120254, + 'MATHEMATICAL SANS-SERIF SMALL F' : 120255, + 'MATHEMATICAL SANS-SERIF SMALL G' : 120256, + 'MATHEMATICAL SANS-SERIF SMALL H' : 120257, + 'MATHEMATICAL SANS-SERIF SMALL I' : 120258, + 'MATHEMATICAL SANS-SERIF SMALL J' : 120259, + 'MATHEMATICAL SANS-SERIF SMALL K' : 120260, + 'MATHEMATICAL SANS-SERIF SMALL L' : 120261, + 'MATHEMATICAL SANS-SERIF SMALL M' : 120262, + 'MATHEMATICAL SANS-SERIF SMALL N' : 120263, + 'MATHEMATICAL SANS-SERIF SMALL O' : 120264, + 'MATHEMATICAL SANS-SERIF SMALL P' : 120265, + 'MATHEMATICAL SANS-SERIF SMALL Q' : 120266, + 'MATHEMATICAL SANS-SERIF SMALL R' : 120267, + 'MATHEMATICAL SANS-SERIF SMALL S' : 120268, + 'MATHEMATICAL SANS-SERIF SMALL T' : 120269, + 'MATHEMATICAL SANS-SERIF SMALL U' : 120270, + 'MATHEMATICAL SANS-SERIF SMALL V' : 120271, + 'MATHEMATICAL SANS-SERIF SMALL W' : 120272, + 'MATHEMATICAL SANS-SERIF SMALL X' : 120273, + 'MATHEMATICAL SANS-SERIF SMALL Y' : 120274, + 'MATHEMATICAL SANS-SERIF SMALL Z' : 120275, + 'MATHEMATICAL SCRIPT CAPITAL A' : 119964, + 'MATHEMATICAL SCRIPT CAPITAL C' : 119966, + 'MATHEMATICAL SCRIPT CAPITAL D' : 119967, + 'MATHEMATICAL SCRIPT CAPITAL G' : 119970, + 'MATHEMATICAL SCRIPT CAPITAL J' : 119973, + 'MATHEMATICAL SCRIPT CAPITAL K' : 119974, + 'MATHEMATICAL SCRIPT CAPITAL N' : 119977, + 'MATHEMATICAL SCRIPT CAPITAL O' : 119978, + 'MATHEMATICAL SCRIPT CAPITAL P' : 119979, + 'MATHEMATICAL SCRIPT CAPITAL Q' : 119980, + 'MATHEMATICAL SCRIPT CAPITAL S' : 119982, + 'MATHEMATICAL SCRIPT CAPITAL T' : 119983, + 'MATHEMATICAL SCRIPT CAPITAL U' : 119984, + 'MATHEMATICAL SCRIPT CAPITAL V' : 119985, + 'MATHEMATICAL SCRIPT CAPITAL W' : 119986, + 'MATHEMATICAL SCRIPT CAPITAL X' : 119987, + 'MATHEMATICAL SCRIPT CAPITAL Y' : 119988, + 'MATHEMATICAL SCRIPT CAPITAL Z' : 119989, + 'MATHEMATICAL SCRIPT SMALL A' : 119990, + 'MATHEMATICAL SCRIPT SMALL B' : 119991, + 'MATHEMATICAL SCRIPT SMALL C' : 119992, + 'MATHEMATICAL SCRIPT SMALL D' : 119993, + 'MATHEMATICAL SCRIPT SMALL F' : 119995, + 'MATHEMATICAL SCRIPT SMALL H' : 119997, + 'MATHEMATICAL SCRIPT SMALL I' : 119998, + 'MATHEMATICAL SCRIPT SMALL J' : 119999, + 'MATHEMATICAL SCRIPT SMALL K' : 120000, + 'MATHEMATICAL SCRIPT SMALL M' : 120002, + 'MATHEMATICAL SCRIPT SMALL N' : 120003, + 'MATHEMATICAL SCRIPT SMALL P' : 120005, + 'MATHEMATICAL SCRIPT SMALL Q' : 120006, + 'MATHEMATICAL SCRIPT SMALL R' : 120007, + 'MATHEMATICAL SCRIPT SMALL S' : 120008, + 'MATHEMATICAL SCRIPT SMALL T' : 120009, + 'MATHEMATICAL SCRIPT SMALL U' : 120010, + 'MATHEMATICAL SCRIPT SMALL V' : 120011, + 'MATHEMATICAL SCRIPT SMALL W' : 120012, + 'MATHEMATICAL SCRIPT SMALL X' : 120013, + 'MATHEMATICAL SCRIPT SMALL Y' : 120014, + 'MATHEMATICAL SCRIPT SMALL Z' : 120015, + 'MEASURED ANGLE' : 8737, + 'MEASURED ANGLE OPENING LEFT' : 10651, + 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT' : 10667, + 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT' : 10666, + 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN' : 10671, + 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP' : 10669, + 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN' : 10670, + 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP' : 10668, + 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT' : 10665, + 'MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT' : 10664, + 'MEASURED BY' : 8798, + 'MEASURED RIGHT ANGLE WITH DOT' : 10653, + 'MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT' : 10090, + 'MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT' : 10091, + 'MEDIUM LEFT CURLY BRACKET ORNAMENT' : 10100, + 'MEDIUM LEFT PARENTHESIS ORNAMENT' : 10088, + 'MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT' : 10092, + 'MEDIUM MATHEMATICAL SPACE' : 8287, + 'MEDIUM RIGHT CURLY BRACKET ORNAMENT' : 10101, + 'MEDIUM RIGHT PARENTHESIS ORNAMENT' : 10089, + 'MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT' : 10093, + 'MEDIUM SHADE' : 9618, + 'MEDIUM VERTICAL BAR' : 10073, + 'MERCURY' : 9791, + 'MICRO SIGN' : 181, + 'MIDDLE DOT' : 183, + 'MIDLINE HORIZONTAL ELLIPSIS' : 8943, + 'MILL SIGN' : 8357, + 'MINUS SIGN' : 8722, + 'MINUS SIGN IN TRIANGLE' : 10810, + 'MINUS SIGN WITH COMMA ABOVE' : 10793, + 'MINUS SIGN WITH DOT BELOW' : 10794, + 'MINUS SIGN WITH FALLING DOTS' : 10795, + 'MINUS SIGN WITH RISING DOTS' : 10796, + 'MINUS TILDE' : 8770, + 'MINUS-OR-PLUS SIGN' : 8723, + 'MINY' : 10751, + 'MODELS' : 8871, + 'MODIFIER LETTER ACUTE ACCENT' : 714, + 'MODIFIER LETTER APOSTROPHE' : 700, + 'MODIFIER LETTER CENTRED LEFT HALF RING' : 723, + 'MODIFIER LETTER CENTRED RIGHT HALF RING' : 722, + 'MODIFIER LETTER CIRCUMFLEX ACCENT' : 710, + 'MODIFIER LETTER CROSS ACCENT' : 735, + 'MODIFIER LETTER DOUBLE APOSTROPHE' : 750, + 'MODIFIER LETTER DOUBLE PRIME' : 698, + 'MODIFIER LETTER DOWN ARROWHEAD' : 709, + 'MODIFIER LETTER DOWN TACK' : 725, + 'MODIFIER LETTER EXTRA-HIGH TONE BAR' : 741, + 'MODIFIER LETTER EXTRA-LOW TONE BAR' : 745, + 'MODIFIER LETTER GLOTTAL STOP' : 704, + 'MODIFIER LETTER GRAVE ACCENT' : 715, + 'MODIFIER LETTER HALF TRIANGULAR COLON' : 721, + 'MODIFIER LETTER HIGH TONE BAR' : 742, + 'MODIFIER LETTER LEFT ARROWHEAD' : 706, + 'MODIFIER LETTER LEFT HALF RING' : 703, + 'MODIFIER LETTER LOW ACUTE ACCENT' : 719, + 'MODIFIER LETTER LOW GRAVE ACCENT' : 718, + 'MODIFIER LETTER LOW MACRON' : 717, + 'MODIFIER LETTER LOW TONE BAR' : 744, + 'MODIFIER LETTER LOW VERTICAL LINE' : 716, + 'MODIFIER LETTER MACRON' : 713, + 'MODIFIER LETTER MID TONE BAR' : 743, + 'MODIFIER LETTER MINUS SIGN' : 727, + 'MODIFIER LETTER PLUS SIGN' : 726, + 'MODIFIER LETTER PRIME' : 697, + 'MODIFIER LETTER REVERSED COMMA' : 701, + 'MODIFIER LETTER REVERSED GLOTTAL STOP' : 705, + 'MODIFIER LETTER RHOTIC HOOK' : 734, + 'MODIFIER LETTER RIGHT ARROWHEAD' : 707, + 'MODIFIER LETTER RIGHT HALF RING' : 702, + 'MODIFIER LETTER SMALL CAPITAL INVERTED R' : 694, + 'MODIFIER LETTER SMALL GAMMA' : 736, + 'MODIFIER LETTER SMALL H' : 688, + 'MODIFIER LETTER SMALL H WITH HOOK' : 689, + 'MODIFIER LETTER SMALL J' : 690, + 'MODIFIER LETTER SMALL L' : 737, + 'MODIFIER LETTER SMALL R' : 691, + 'MODIFIER LETTER SMALL REVERSED GLOTTAL STOP' : 740, + 'MODIFIER LETTER SMALL S' : 738, + 'MODIFIER LETTER SMALL TURNED R' : 692, + 'MODIFIER LETTER SMALL TURNED R WITH HOOK' : 693, + 'MODIFIER LETTER SMALL W' : 695, + 'MODIFIER LETTER SMALL X' : 739, + 'MODIFIER LETTER SMALL Y' : 696, + 'MODIFIER LETTER TRIANGULAR COLON' : 720, + 'MODIFIER LETTER TURNED COMMA' : 699, + 'MODIFIER LETTER UNASPIRATED' : 749, + 'MODIFIER LETTER UP ARROWHEAD' : 708, + 'MODIFIER LETTER UP TACK' : 724, + 'MODIFIER LETTER VERTICAL LINE' : 712, + 'MODIFIER LETTER VOICING' : 748, + 'MODIFIER LETTER YANG DEPARTING TONE MARK' : 747, + 'MODIFIER LETTER YIN DEPARTING TONE MARK' : 746, + 'MODULO TWO SUM' : 10762, + 'MONGOLIAN BIRGA' : 6144, + 'MONGOLIAN COLON' : 6148, + 'MONGOLIAN COMMA' : 6146, + 'MONGOLIAN DIGIT EIGHT' : 6168, + 'MONGOLIAN DIGIT FIVE' : 6165, + 'MONGOLIAN DIGIT FOUR' : 6164, + 'MONGOLIAN DIGIT NINE' : 6169, + 'MONGOLIAN DIGIT ONE' : 6161, + 'MONGOLIAN DIGIT SEVEN' : 6167, + 'MONGOLIAN DIGIT SIX' : 6166, + 'MONGOLIAN DIGIT THREE' : 6163, + 'MONGOLIAN DIGIT TWO' : 6162, + 'MONGOLIAN DIGIT ZERO' : 6160, + 'MONGOLIAN ELLIPSIS' : 6145, + 'MONGOLIAN FOUR DOTS' : 6149, + 'MONGOLIAN FREE VARIATION SELECTOR ONE' : 6155, + 'MONGOLIAN FREE VARIATION SELECTOR THREE' : 6157, + 'MONGOLIAN FREE VARIATION SELECTOR TWO' : 6156, + 'MONGOLIAN FULL STOP' : 6147, + 'MONGOLIAN LETTER A' : 6176, + 'MONGOLIAN LETTER ALI GALI A' : 6279, + 'MONGOLIAN LETTER ALI GALI AH' : 6295, + 'MONGOLIAN LETTER ALI GALI ANUSVARA ONE' : 6272, + 'MONGOLIAN LETTER ALI GALI BALUDA' : 6277, + 'MONGOLIAN LETTER ALI GALI CA' : 6283, + 'MONGOLIAN LETTER ALI GALI DA' : 6289, + 'MONGOLIAN LETTER ALI GALI DAGALGA' : 6313, + 'MONGOLIAN LETTER ALI GALI DAMARU' : 6274, + 'MONGOLIAN LETTER ALI GALI DDA' : 6286, + 'MONGOLIAN LETTER ALI GALI HALF U' : 6310, + 'MONGOLIAN LETTER ALI GALI HALF YA' : 6311, + 'MONGOLIAN LETTER ALI GALI I' : 6280, + 'MONGOLIAN LETTER ALI GALI INVERTED UBADAMA' : 6276, + 'MONGOLIAN LETTER ALI GALI KA' : 6281, + 'MONGOLIAN LETTER ALI GALI NGA' : 6282, + 'MONGOLIAN LETTER ALI GALI NNA' : 6287, + 'MONGOLIAN LETTER ALI GALI PA' : 6290, + 'MONGOLIAN LETTER ALI GALI PHA' : 6291, + 'MONGOLIAN LETTER ALI GALI SSA' : 6292, + 'MONGOLIAN LETTER ALI GALI TA' : 6288, + 'MONGOLIAN LETTER ALI GALI THREE BALUDA' : 6278, + 'MONGOLIAN LETTER ALI GALI TTA' : 6284, + 'MONGOLIAN LETTER ALI GALI TTHA' : 6285, + 'MONGOLIAN LETTER ALI GALI UBADAMA' : 6275, + 'MONGOLIAN LETTER ALI GALI VISARGA ONE' : 6273, + 'MONGOLIAN LETTER ALI GALI ZA' : 6294, + 'MONGOLIAN LETTER ALI GALI ZHA' : 6293, + 'MONGOLIAN LETTER ANG' : 6185, + 'MONGOLIAN LETTER BA' : 6186, + 'MONGOLIAN LETTER CHA' : 6196, + 'MONGOLIAN LETTER CHI' : 6210, + 'MONGOLIAN LETTER DA' : 6195, + 'MONGOLIAN LETTER E' : 6177, + 'MONGOLIAN LETTER EE' : 6183, + 'MONGOLIAN LETTER FA' : 6201, + 'MONGOLIAN LETTER GA' : 6189, + 'MONGOLIAN LETTER HAA' : 6206, + 'MONGOLIAN LETTER I' : 6178, + 'MONGOLIAN LETTER JA' : 6197, + 'MONGOLIAN LETTER KA' : 6202, + 'MONGOLIAN LETTER KHA' : 6203, + 'MONGOLIAN LETTER LA' : 6191, + 'MONGOLIAN LETTER LHA' : 6208, + 'MONGOLIAN LETTER MA' : 6190, + 'MONGOLIAN LETTER MANCHU ALI GALI BHA' : 6312, + 'MONGOLIAN LETTER MANCHU ALI GALI CA' : 6300, + 'MONGOLIAN LETTER MANCHU ALI GALI CYA' : 6307, + 'MONGOLIAN LETTER MANCHU ALI GALI DDHA' : 6303, + 'MONGOLIAN LETTER MANCHU ALI GALI DHA' : 6305, + 'MONGOLIAN LETTER MANCHU ALI GALI GHA' : 6298, + 'MONGOLIAN LETTER MANCHU ALI GALI JHA' : 6301, + 'MONGOLIAN LETTER MANCHU ALI GALI NGA' : 6299, + 'MONGOLIAN LETTER MANCHU ALI GALI SSA' : 6306, + 'MONGOLIAN LETTER MANCHU ALI GALI TA' : 6304, + 'MONGOLIAN LETTER MANCHU ALI GALI TTA' : 6302, + 'MONGOLIAN LETTER MANCHU ALI GALI ZA' : 6309, + 'MONGOLIAN LETTER MANCHU ALI GALI ZHA' : 6308, + 'MONGOLIAN LETTER MANCHU FA' : 6262, + 'MONGOLIAN LETTER MANCHU I' : 6259, + 'MONGOLIAN LETTER MANCHU KA' : 6260, + 'MONGOLIAN LETTER MANCHU RA' : 6261, + 'MONGOLIAN LETTER MANCHU ZHA' : 6263, + 'MONGOLIAN LETTER NA' : 6184, + 'MONGOLIAN LETTER O' : 6179, + 'MONGOLIAN LETTER OE' : 6181, + 'MONGOLIAN LETTER PA' : 6187, + 'MONGOLIAN LETTER QA' : 6188, + 'MONGOLIAN LETTER RA' : 6199, + 'MONGOLIAN LETTER SA' : 6192, + 'MONGOLIAN LETTER SHA' : 6193, + 'MONGOLIAN LETTER SIBE ANG' : 6242, + 'MONGOLIAN LETTER SIBE CHA' : 6257, + 'MONGOLIAN LETTER SIBE DA' : 6249, + 'MONGOLIAN LETTER SIBE E' : 6237, + 'MONGOLIAN LETTER SIBE FA' : 6251, + 'MONGOLIAN LETTER SIBE GA' : 6244, + 'MONGOLIAN LETTER SIBE GAA' : 6252, + 'MONGOLIAN LETTER SIBE HA' : 6245, + 'MONGOLIAN LETTER SIBE HAA' : 6253, + 'MONGOLIAN LETTER SIBE I' : 6238, + 'MONGOLIAN LETTER SIBE IY' : 6239, + 'MONGOLIAN LETTER SIBE JA' : 6250, + 'MONGOLIAN LETTER SIBE KA' : 6243, + 'MONGOLIAN LETTER SIBE PA' : 6246, + 'MONGOLIAN LETTER SIBE RAA' : 6256, + 'MONGOLIAN LETTER SIBE SHA' : 6247, + 'MONGOLIAN LETTER SIBE TA' : 6248, + 'MONGOLIAN LETTER SIBE TSA' : 6254, + 'MONGOLIAN LETTER SIBE U' : 6241, + 'MONGOLIAN LETTER SIBE UE' : 6240, + 'MONGOLIAN LETTER SIBE ZA' : 6255, + 'MONGOLIAN LETTER SIBE ZHA' : 6258, + 'MONGOLIAN LETTER TA' : 6194, + 'MONGOLIAN LETTER TODO ALI GALI TA' : 6296, + 'MONGOLIAN LETTER TODO ALI GALI ZHA' : 6297, + 'MONGOLIAN LETTER TODO ANG' : 6218, + 'MONGOLIAN LETTER TODO BA' : 6219, + 'MONGOLIAN LETTER TODO CHA' : 6226, + 'MONGOLIAN LETTER TODO DA' : 6225, + 'MONGOLIAN LETTER TODO DZA' : 6236, + 'MONGOLIAN LETTER TODO E' : 6212, + 'MONGOLIAN LETTER TODO GA' : 6222, + 'MONGOLIAN LETTER TODO GAA' : 6232, + 'MONGOLIAN LETTER TODO HAA' : 6233, + 'MONGOLIAN LETTER TODO I' : 6213, + 'MONGOLIAN LETTER TODO JA' : 6227, + 'MONGOLIAN LETTER TODO JIA' : 6234, + 'MONGOLIAN LETTER TODO KA' : 6231, + 'MONGOLIAN LETTER TODO LONG VOWEL SIGN' : 6211, + 'MONGOLIAN LETTER TODO MA' : 6223, + 'MONGOLIAN LETTER TODO NIA' : 6235, + 'MONGOLIAN LETTER TODO O' : 6214, + 'MONGOLIAN LETTER TODO OE' : 6216, + 'MONGOLIAN LETTER TODO PA' : 6220, + 'MONGOLIAN LETTER TODO QA' : 6221, + 'MONGOLIAN LETTER TODO TA' : 6224, + 'MONGOLIAN LETTER TODO TSA' : 6228, + 'MONGOLIAN LETTER TODO U' : 6215, + 'MONGOLIAN LETTER TODO UE' : 6217, + 'MONGOLIAN LETTER TODO WA' : 6230, + 'MONGOLIAN LETTER TODO YA' : 6229, + 'MONGOLIAN LETTER TSA' : 6204, + 'MONGOLIAN LETTER U' : 6180, + 'MONGOLIAN LETTER UE' : 6182, + 'MONGOLIAN LETTER WA' : 6200, + 'MONGOLIAN LETTER YA' : 6198, + 'MONGOLIAN LETTER ZA' : 6205, + 'MONGOLIAN LETTER ZHI' : 6209, + 'MONGOLIAN LETTER ZRA' : 6207, + 'MONGOLIAN MANCHU COMMA' : 6152, + 'MONGOLIAN MANCHU FULL STOP' : 6153, + 'MONGOLIAN NIRUGU' : 6154, + 'MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER' : 6151, + 'MONGOLIAN TODO SOFT HYPHEN' : 6150, + 'MONGOLIAN VOWEL SEPARATOR' : 6158, + 'MONOSTABLE SYMBOL' : 9101, + 'MUCH GREATER-THAN' : 8811, + 'MUCH LESS-THAN' : 8810, + 'MULTIMAP' : 8888, + 'MULTIPLICATION SIGN' : 215, + 'MULTIPLICATION SIGN IN DOUBLE CIRCLE' : 10807, + 'MULTIPLICATION SIGN IN LEFT HALF CIRCLE' : 10804, + 'MULTIPLICATION SIGN IN RIGHT HALF CIRCLE' : 10805, + 'MULTIPLICATION SIGN IN TRIANGLE' : 10811, + 'MULTIPLICATION SIGN WITH DOT ABOVE' : 10800, + 'MULTIPLICATION SIGN WITH UNDERBAR' : 10801, + 'MULTIPLICATION X' : 10005, + 'MULTISET' : 8844, + 'MULTISET MULTIPLICATION' : 8845, + 'MULTISET UNION' : 8846, + 'MUSIC FLAT SIGN' : 9837, + 'MUSIC NATURAL SIGN' : 9838, + 'MUSIC SHARP SIGN' : 9839, + 'MUSICAL SYMBOL ARPEGGIATO DOWN' : 119172, + 'MUSICAL SYMBOL ARPEGGIATO UP' : 119171, + 'MUSICAL SYMBOL BEGIN BEAM' : 119155, + 'MUSICAL SYMBOL BEGIN PHRASE' : 119161, + 'MUSICAL SYMBOL BEGIN SLUR' : 119159, + 'MUSICAL SYMBOL BEGIN TIE' : 119157, + 'MUSICAL SYMBOL BRACE' : 119060, + 'MUSICAL SYMBOL BRACKET' : 119061, + 'MUSICAL SYMBOL BREATH MARK' : 119058, + 'MUSICAL SYMBOL BREVE' : 119132, + 'MUSICAL SYMBOL BREVIS' : 119224, + 'MUSICAL SYMBOL BREVIS REST' : 119235, + 'MUSICAL SYMBOL C CLEF' : 119073, + 'MUSICAL SYMBOL CAESURA' : 119059, + 'MUSICAL SYMBOL CIRCLE X NOTEHEAD' : 119109, + 'MUSICAL SYMBOL CLIMACUS' : 119255, + 'MUSICAL SYMBOL CLIVIS' : 119253, + 'MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK' : 119131, + 'MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE' : 119130, + 'MUSICAL SYMBOL CODA' : 119052, + 'MUSICAL SYMBOL COMBINING ACCENT' : 119163, + 'MUSICAL SYMBOL COMBINING ACCENT-STACCATO' : 119169, + 'MUSICAL SYMBOL COMBINING AUGMENTATION DOT' : 119149, + 'MUSICAL SYMBOL COMBINING BEND' : 119177, + 'MUSICAL SYMBOL COMBINING DOIT' : 119173, + 'MUSICAL SYMBOL COMBINING DOUBLE TONGUE' : 119178, + 'MUSICAL SYMBOL COMBINING DOWN BOW' : 119210, + 'MUSICAL SYMBOL COMBINING FLAG-1' : 119150, + 'MUSICAL SYMBOL COMBINING FLAG-2' : 119151, + 'MUSICAL SYMBOL COMBINING FLAG-3' : 119152, + 'MUSICAL SYMBOL COMBINING FLAG-4' : 119153, + 'MUSICAL SYMBOL COMBINING FLAG-5' : 119154, + 'MUSICAL SYMBOL COMBINING FLIP' : 119175, + 'MUSICAL SYMBOL COMBINING HARMONIC' : 119212, + 'MUSICAL SYMBOL COMBINING LOURE' : 119170, + 'MUSICAL SYMBOL COMBINING MARCATO' : 119167, + 'MUSICAL SYMBOL COMBINING MARCATO-STACCATO' : 119168, + 'MUSICAL SYMBOL COMBINING RIP' : 119174, + 'MUSICAL SYMBOL COMBINING SMEAR' : 119176, + 'MUSICAL SYMBOL COMBINING SNAP PIZZICATO' : 119213, + 'MUSICAL SYMBOL COMBINING SPRECHGESANG STEM' : 119142, + 'MUSICAL SYMBOL COMBINING STACCATISSIMO' : 119166, + 'MUSICAL SYMBOL COMBINING STACCATO' : 119164, + 'MUSICAL SYMBOL COMBINING STEM' : 119141, + 'MUSICAL SYMBOL COMBINING TENUTO' : 119165, + 'MUSICAL SYMBOL COMBINING TREMOLO-1' : 119143, + 'MUSICAL SYMBOL COMBINING TREMOLO-2' : 119144, + 'MUSICAL SYMBOL COMBINING TREMOLO-3' : 119145, + 'MUSICAL SYMBOL COMBINING TRIPLE TONGUE' : 119179, + 'MUSICAL SYMBOL COMBINING UP BOW' : 119211, + 'MUSICAL SYMBOL COMMON TIME' : 119092, + 'MUSICAL SYMBOL CRESCENDO' : 119186, + 'MUSICAL SYMBOL CROIX' : 119247, + 'MUSICAL SYMBOL CUT TIME' : 119093, + 'MUSICAL SYMBOL DA CAPO' : 119050, + 'MUSICAL SYMBOL DAL SEGNO' : 119049, + 'MUSICAL SYMBOL DAMP' : 119220, + 'MUSICAL SYMBOL DAMP ALL' : 119221, + 'MUSICAL SYMBOL DASHED BARLINE' : 119044, + 'MUSICAL SYMBOL DECRESCENDO' : 119187, + 'MUSICAL SYMBOL DEGREE SLASH' : 119209, + 'MUSICAL SYMBOL DOUBLE BARLINE' : 119041, + 'MUSICAL SYMBOL DOUBLE FLAT' : 119083, + 'MUSICAL SYMBOL DOUBLE SHARP' : 119082, + 'MUSICAL SYMBOL DRUM CLEF-1' : 119077, + 'MUSICAL SYMBOL DRUM CLEF-2' : 119078, + 'MUSICAL SYMBOL EIGHTH NOTE' : 119136, + 'MUSICAL SYMBOL EIGHTH REST' : 119102, + 'MUSICAL SYMBOL END BEAM' : 119156, + 'MUSICAL SYMBOL END OF STIMME' : 119208, + 'MUSICAL SYMBOL END PHRASE' : 119162, + 'MUSICAL SYMBOL END SLUR' : 119160, + 'MUSICAL SYMBOL END TIE' : 119158, + 'MUSICAL SYMBOL F CLEF' : 119074, + 'MUSICAL SYMBOL F CLEF OTTAVA ALTA' : 119075, + 'MUSICAL SYMBOL F CLEF OTTAVA BASSA' : 119076, + 'MUSICAL SYMBOL FERMATA' : 119056, + 'MUSICAL SYMBOL FERMATA BELOW' : 119057, + 'MUSICAL SYMBOL FINAL BARLINE' : 119042, + 'MUSICAL SYMBOL FINGERED TREMOLO-1' : 119146, + 'MUSICAL SYMBOL FINGERED TREMOLO-2' : 119147, + 'MUSICAL SYMBOL FINGERED TREMOLO-3' : 119148, + 'MUSICAL SYMBOL FIVE-LINE STAFF' : 119066, + 'MUSICAL SYMBOL FLAT DOWN' : 119085, + 'MUSICAL SYMBOL FLAT UP' : 119084, + 'MUSICAL SYMBOL FORTE' : 119185, + 'MUSICAL SYMBOL FOUR-LINE STAFF' : 119065, + 'MUSICAL SYMBOL FOUR-STRING FRETBOARD' : 119069, + 'MUSICAL SYMBOL FUSA BLACK' : 119232, + 'MUSICAL SYMBOL FUSA WHITE' : 119231, + 'MUSICAL SYMBOL G CLEF' : 119070, + 'MUSICAL SYMBOL G CLEF OTTAVA ALTA' : 119071, + 'MUSICAL SYMBOL G CLEF OTTAVA BASSA' : 119072, + 'MUSICAL SYMBOL GLISSANDO DOWN' : 119218, + 'MUSICAL SYMBOL GLISSANDO UP' : 119217, + 'MUSICAL SYMBOL GRACE NOTE NO SLASH' : 119189, + 'MUSICAL SYMBOL GRACE NOTE SLASH' : 119188, + 'MUSICAL SYMBOL GREGORIAN C CLEF' : 119248, + 'MUSICAL SYMBOL GREGORIAN F CLEF' : 119249, + 'MUSICAL SYMBOL HALF NOTE' : 119134, + 'MUSICAL SYMBOL HALF PEDAL MARK' : 119216, + 'MUSICAL SYMBOL HALF REST' : 119100, + 'MUSICAL SYMBOL HAUPTSTIMME' : 119206, + 'MUSICAL SYMBOL INVERTED TURN' : 119192, + 'MUSICAL SYMBOL LEFT REPEAT SIGN' : 119046, + 'MUSICAL SYMBOL LONGA' : 119223, + 'MUSICAL SYMBOL LONGA IMPERFECTA REST' : 119234, + 'MUSICAL SYMBOL LONGA PERFECTA REST' : 119233, + 'MUSICAL SYMBOL MAXIMA' : 119222, + 'MUSICAL SYMBOL MEZZO' : 119184, + 'MUSICAL SYMBOL MINIMA' : 119227, + 'MUSICAL SYMBOL MINIMA BLACK' : 119228, + 'MUSICAL SYMBOL MINIMA REST' : 119237, + 'MUSICAL SYMBOL MOON NOTEHEAD BLACK' : 119123, + 'MUSICAL SYMBOL MOON NOTEHEAD WHITE' : 119122, + 'MUSICAL SYMBOL MULTI REST' : 119098, + 'MUSICAL SYMBOL NATURAL DOWN' : 119087, + 'MUSICAL SYMBOL NATURAL UP' : 119086, + 'MUSICAL SYMBOL NEBENSTIMME' : 119207, + 'MUSICAL SYMBOL NOTEHEAD BLACK' : 119128, + 'MUSICAL SYMBOL NULL NOTEHEAD' : 119129, + 'MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE' : 119140, + 'MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST' : 119106, + 'MUSICAL SYMBOL ONE-LINE STAFF' : 119062, + 'MUSICAL SYMBOL ORNAMENT STROKE-1' : 119195, + 'MUSICAL SYMBOL ORNAMENT STROKE-10' : 119204, + 'MUSICAL SYMBOL ORNAMENT STROKE-11' : 119205, + 'MUSICAL SYMBOL ORNAMENT STROKE-2' : 119196, + 'MUSICAL SYMBOL ORNAMENT STROKE-3' : 119197, + 'MUSICAL SYMBOL ORNAMENT STROKE-4' : 119198, + 'MUSICAL SYMBOL ORNAMENT STROKE-5' : 119199, + 'MUSICAL SYMBOL ORNAMENT STROKE-6' : 119200, + 'MUSICAL SYMBOL ORNAMENT STROKE-7' : 119201, + 'MUSICAL SYMBOL ORNAMENT STROKE-8' : 119202, + 'MUSICAL SYMBOL ORNAMENT STROKE-9' : 119203, + 'MUSICAL SYMBOL OTTAVA ALTA' : 119094, + 'MUSICAL SYMBOL OTTAVA BASSA' : 119095, + 'MUSICAL SYMBOL PARENTHESIS NOTEHEAD' : 119126, + 'MUSICAL SYMBOL PEDAL MARK' : 119214, + 'MUSICAL SYMBOL PEDAL UP MARK' : 119215, + 'MUSICAL SYMBOL PES SUBPUNCTIS' : 119261, + 'MUSICAL SYMBOL PIANO' : 119183, + 'MUSICAL SYMBOL PLUS NOTEHEAD' : 119108, + 'MUSICAL SYMBOL PODATUS' : 119252, + 'MUSICAL SYMBOL PORRECTUS' : 119257, + 'MUSICAL SYMBOL PORRECTUS FLEXUS' : 119258, + 'MUSICAL SYMBOL QUARTER NOTE' : 119135, + 'MUSICAL SYMBOL QUARTER REST' : 119101, + 'MUSICAL SYMBOL QUARTER TONE FLAT' : 119091, + 'MUSICAL SYMBOL QUARTER TONE SHARP' : 119090, + 'MUSICAL SYMBOL QUINDICESIMA ALTA' : 119096, + 'MUSICAL SYMBOL QUINDICESIMA BASSA' : 119097, + 'MUSICAL SYMBOL REPEAT DOTS' : 119048, + 'MUSICAL SYMBOL REPEATED FIGURE-1' : 119053, + 'MUSICAL SYMBOL REPEATED FIGURE-2' : 119054, + 'MUSICAL SYMBOL REPEATED FIGURE-3' : 119055, + 'MUSICAL SYMBOL REVERSE FINAL BARLINE' : 119043, + 'MUSICAL SYMBOL RIGHT REPEAT SIGN' : 119047, + 'MUSICAL SYMBOL RINFORZANDO' : 119180, + 'MUSICAL SYMBOL SCANDICUS' : 119254, + 'MUSICAL SYMBOL SCANDICUS FLEXUS' : 119259, + 'MUSICAL SYMBOL SEGNO' : 119051, + 'MUSICAL SYMBOL SEMIBREVIS BLACK' : 119226, + 'MUSICAL SYMBOL SEMIBREVIS REST' : 119236, + 'MUSICAL SYMBOL SEMIBREVIS WHITE' : 119225, + 'MUSICAL SYMBOL SEMIMINIMA BLACK' : 119230, + 'MUSICAL SYMBOL SEMIMINIMA REST' : 119238, + 'MUSICAL SYMBOL SEMIMINIMA WHITE' : 119229, + 'MUSICAL SYMBOL SHARP DOWN' : 119089, + 'MUSICAL SYMBOL SHARP UP' : 119088, + 'MUSICAL SYMBOL SHORT BARLINE' : 119045, + 'MUSICAL SYMBOL SINGLE BARLINE' : 119040, + 'MUSICAL SYMBOL SIX-LINE STAFF' : 119067, + 'MUSICAL SYMBOL SIX-STRING FRETBOARD' : 119068, + 'MUSICAL SYMBOL SIXTEENTH NOTE' : 119137, + 'MUSICAL SYMBOL SIXTEENTH REST' : 119103, + 'MUSICAL SYMBOL SIXTY-FOURTH NOTE' : 119139, + 'MUSICAL SYMBOL SIXTY-FOURTH REST' : 119105, + 'MUSICAL SYMBOL SQUARE B' : 119250, + 'MUSICAL SYMBOL SQUARE NOTEHEAD BLACK' : 119111, + 'MUSICAL SYMBOL SQUARE NOTEHEAD WHITE' : 119110, + 'MUSICAL SYMBOL SUBITO' : 119181, + 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA' : 119243, + 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1' : 119244, + 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2' : 119245, + 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3' : 119246, + 'MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA' : 119242, + 'MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA' : 119240, + 'MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA' : 119239, + 'MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1' : 119241, + 'MUSICAL SYMBOL THIRTY-SECOND NOTE' : 119138, + 'MUSICAL SYMBOL THIRTY-SECOND REST' : 119104, + 'MUSICAL SYMBOL THREE-LINE STAFF' : 119064, + 'MUSICAL SYMBOL TORCULUS' : 119256, + 'MUSICAL SYMBOL TORCULUS RESUPINUS' : 119260, + 'MUSICAL SYMBOL TR' : 119190, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK' : 119119, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE' : 119118, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK' : 119115, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE' : 119114, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK' : 119117, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE' : 119116, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK' : 119113, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK' : 119121, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE' : 119120, + 'MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE' : 119112, + 'MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK' : 119125, + 'MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE' : 119124, + 'MUSICAL SYMBOL TURN' : 119191, + 'MUSICAL SYMBOL TURN SLASH' : 119193, + 'MUSICAL SYMBOL TURN UP' : 119194, + 'MUSICAL SYMBOL TWO-LINE STAFF' : 119063, + 'MUSICAL SYMBOL VIRGA' : 119251, + 'MUSICAL SYMBOL VOID NOTEHEAD' : 119127, + 'MUSICAL SYMBOL WHOLE NOTE' : 119133, + 'MUSICAL SYMBOL WHOLE REST' : 119099, + 'MUSICAL SYMBOL WITH FINGERNAILS' : 119219, + 'MUSICAL SYMBOL X NOTEHEAD' : 119107, + 'MUSICAL SYMBOL Z' : 119182, + 'MYANMAR DIGIT EIGHT' : 4168, + 'MYANMAR DIGIT FIVE' : 4165, + 'MYANMAR DIGIT FOUR' : 4164, + 'MYANMAR DIGIT NINE' : 4169, + 'MYANMAR DIGIT ONE' : 4161, + 'MYANMAR DIGIT SEVEN' : 4167, + 'MYANMAR DIGIT SIX' : 4166, + 'MYANMAR DIGIT THREE' : 4163, + 'MYANMAR DIGIT TWO' : 4162, + 'MYANMAR DIGIT ZERO' : 4160, + 'MYANMAR LETTER A' : 4129, + 'MYANMAR LETTER AU' : 4138, + 'MYANMAR LETTER BA' : 4119, + 'MYANMAR LETTER BHA' : 4120, + 'MYANMAR LETTER CA' : 4101, + 'MYANMAR LETTER CHA' : 4102, + 'MYANMAR LETTER DA' : 4114, + 'MYANMAR LETTER DDA' : 4109, + 'MYANMAR LETTER DDHA' : 4110, + 'MYANMAR LETTER DHA' : 4115, + 'MYANMAR LETTER E' : 4135, + 'MYANMAR LETTER GA' : 4098, + 'MYANMAR LETTER GHA' : 4099, + 'MYANMAR LETTER HA' : 4127, + 'MYANMAR LETTER I' : 4131, + 'MYANMAR LETTER II' : 4132, + 'MYANMAR LETTER JA' : 4103, + 'MYANMAR LETTER JHA' : 4104, + 'MYANMAR LETTER KA' : 4096, + 'MYANMAR LETTER KHA' : 4097, + 'MYANMAR LETTER LA' : 4124, + 'MYANMAR LETTER LLA' : 4128, + 'MYANMAR LETTER MA' : 4121, + 'MYANMAR LETTER NA' : 4116, + 'MYANMAR LETTER NGA' : 4100, + 'MYANMAR LETTER NNA' : 4111, + 'MYANMAR LETTER NNYA' : 4106, + 'MYANMAR LETTER NYA' : 4105, + 'MYANMAR LETTER O' : 4137, + 'MYANMAR LETTER PA' : 4117, + 'MYANMAR LETTER PHA' : 4118, + 'MYANMAR LETTER RA' : 4123, + 'MYANMAR LETTER SA' : 4126, + 'MYANMAR LETTER SHA' : 4176, + 'MYANMAR LETTER SSA' : 4177, + 'MYANMAR LETTER TA' : 4112, + 'MYANMAR LETTER THA' : 4113, + 'MYANMAR LETTER TTA' : 4107, + 'MYANMAR LETTER TTHA' : 4108, + 'MYANMAR LETTER U' : 4133, + 'MYANMAR LETTER UU' : 4134, + 'MYANMAR LETTER VOCALIC L' : 4180, + 'MYANMAR LETTER VOCALIC LL' : 4181, + 'MYANMAR LETTER VOCALIC R' : 4178, + 'MYANMAR LETTER VOCALIC RR' : 4179, + 'MYANMAR LETTER WA' : 4125, + 'MYANMAR LETTER YA' : 4122, + 'MYANMAR SIGN ANUSVARA' : 4150, + 'MYANMAR SIGN DOT BELOW' : 4151, + 'MYANMAR SIGN LITTLE SECTION' : 4170, + 'MYANMAR SIGN SECTION' : 4171, + 'MYANMAR SIGN VIRAMA' : 4153, + 'MYANMAR SIGN VISARGA' : 4152, + 'MYANMAR SYMBOL AFOREMENTIONED' : 4174, + 'MYANMAR SYMBOL COMPLETED' : 4173, + 'MYANMAR SYMBOL GENITIVE' : 4175, + 'MYANMAR SYMBOL LOCATIVE' : 4172, + 'MYANMAR VOWEL SIGN AA' : 4140, + 'MYANMAR VOWEL SIGN AI' : 4146, + 'MYANMAR VOWEL SIGN E' : 4145, + 'MYANMAR VOWEL SIGN I' : 4141, + 'MYANMAR VOWEL SIGN II' : 4142, + 'MYANMAR VOWEL SIGN U' : 4143, + 'MYANMAR VOWEL SIGN UU' : 4144, + 'MYANMAR VOWEL SIGN VOCALIC L' : 4184, + 'MYANMAR VOWEL SIGN VOCALIC LL' : 4185, + 'MYANMAR VOWEL SIGN VOCALIC R' : 4182, + 'MYANMAR VOWEL SIGN VOCALIC RR' : 4183, + 'N-ARY CIRCLED DOT OPERATOR' : 10752, + 'N-ARY CIRCLED PLUS OPERATOR' : 10753, + 'N-ARY CIRCLED TIMES OPERATOR' : 10754, + 'N-ARY COPRODUCT' : 8720, + 'N-ARY INTERSECTION' : 8898, + 'N-ARY LOGICAL AND' : 8896, + 'N-ARY LOGICAL OR' : 8897, + 'N-ARY PRODUCT' : 8719, + 'N-ARY SQUARE INTERSECTION OPERATOR' : 10757, + 'N-ARY SQUARE UNION OPERATOR' : 10758, + 'N-ARY SUMMATION' : 8721, + 'N-ARY TIMES OPERATOR' : 10761, + 'N-ARY UNION' : 8899, + 'N-ARY UNION OPERATOR WITH DOT' : 10755, + 'N-ARY UNION OPERATOR WITH PLUS' : 10756, + 'N-ARY WHITE VERTICAL BAR' : 11007, + 'NABLA' : 8711, + 'NAIRA SIGN' : 8358, + 'NAND' : 8892, + 'NARROW NO-BREAK SPACE' : 8239, + 'NATIONAL DIGIT SHAPES' : 8302, + 'NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE' : 8879, + 'NEGATIVE CIRCLED NUMBER EIGHTEEN' : 9458, + 'NEGATIVE CIRCLED NUMBER ELEVEN' : 9451, + 'NEGATIVE CIRCLED NUMBER FIFTEEN' : 9455, + 'NEGATIVE CIRCLED NUMBER FOURTEEN' : 9454, + 'NEGATIVE CIRCLED NUMBER NINETEEN' : 9459, + 'NEGATIVE CIRCLED NUMBER SEVENTEEN' : 9457, + 'NEGATIVE CIRCLED NUMBER SIXTEEN' : 9456, + 'NEGATIVE CIRCLED NUMBER THIRTEEN' : 9453, + 'NEGATIVE CIRCLED NUMBER TWELVE' : 9452, + 'NEGATIVE CIRCLED NUMBER TWENTY' : 9460, + 'NEITHER A SUBSET OF NOR EQUAL TO' : 8840, + 'NEITHER A SUPERSET OF NOR EQUAL TO' : 8841, + 'NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO' : 8775, + 'NEITHER GREATER-THAN NOR EQUAL TO' : 8817, + 'NEITHER GREATER-THAN NOR EQUIVALENT TO' : 8821, + 'NEITHER GREATER-THAN NOR LESS-THAN' : 8825, + 'NEITHER LESS-THAN NOR EQUAL TO' : 8816, + 'NEITHER LESS-THAN NOR EQUIVALENT TO' : 8820, + 'NEITHER LESS-THAN NOR GREATER-THAN' : 8824, + 'NEPTUNE' : 9798, + 'NEW SHEQEL SIGN' : 8362, + 'NEXT PAGE' : 9112, + 'NO-BREAK SPACE' : 160, + 'NOMINAL DIGIT SHAPES' : 8303, + 'NON-BREAKING HYPHEN' : 8209, + 'NONFORKING' : 10973, + 'NOR' : 8893, + 'NORMAL SUBGROUP OF' : 8882, + 'NORMAL SUBGROUP OF OR EQUAL TO' : 8884, + 'NORTH EAST AND SOUTH WEST ARROW' : 10530, + 'NORTH EAST ARROW' : 8599, + 'NORTH EAST ARROW AND SOUTH EAST ARROW' : 10536, + 'NORTH EAST ARROW CROSSING NORTH WEST ARROW' : 10545, + 'NORTH EAST ARROW CROSSING SOUTH EAST ARROW' : 10542, + 'NORTH EAST ARROW WITH HOOK' : 10532, + 'NORTH EAST DOUBLE ARROW' : 8663, + 'NORTH WEST AND SOUTH EAST ARROW' : 10529, + 'NORTH WEST ARROW' : 8598, + 'NORTH WEST ARROW AND NORTH EAST ARROW' : 10535, + 'NORTH WEST ARROW CROSSING NORTH EAST ARROW' : 10546, + 'NORTH WEST ARROW TO CORNER' : 8689, + 'NORTH WEST ARROW TO LONG BAR' : 8632, + 'NORTH WEST ARROW WITH HOOK' : 10531, + 'NORTH WEST DOUBLE ARROW' : 8662, + 'NOT A SUBSET OF' : 8836, + 'NOT A SUPERSET OF' : 8837, + 'NOT ALMOST EQUAL TO' : 8777, + 'NOT AN ELEMENT OF' : 8713, + 'NOT ASYMPTOTICALLY EQUAL TO' : 8772, + 'NOT CHECK MARK' : 9083, + 'NOT EQUAL TO' : 8800, + 'NOT EQUIVALENT TO' : 8813, + 'NOT GREATER-THAN' : 8815, + 'NOT IDENTICAL TO' : 8802, + 'NOT LESS-THAN' : 8814, + 'NOT NORMAL SUBGROUP OF' : 8938, + 'NOT NORMAL SUBGROUP OF OR EQUAL TO' : 8940, + 'NOT PARALLEL TO' : 8742, + 'NOT SIGN' : 172, + 'NOT SQUARE IMAGE OF OR EQUAL TO' : 8930, + 'NOT SQUARE ORIGINAL OF OR EQUAL TO' : 8931, + 'NOT TILDE' : 8769, + 'NOT TRUE' : 8877, + 'NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW' : 10159, + 'NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW' : 10161, + 'NUMBER EIGHTEEN FULL STOP' : 9369, + 'NUMBER ELEVEN FULL STOP' : 9362, + 'NUMBER FIFTEEN FULL STOP' : 9366, + 'NUMBER FOURTEEN FULL STOP' : 9365, + 'NUMBER NINETEEN FULL STOP' : 9370, + 'NUMBER SEVENTEEN FULL STOP' : 9368, + 'NUMBER SIGN' : 35, + 'NUMBER SIXTEEN FULL STOP' : 9367, + 'NUMBER TEN FULL STOP' : 9361, + 'NUMBER THIRTEEN FULL STOP' : 9364, + 'NUMBER TWELVE FULL STOP' : 9363, + 'NUMBER TWENTY FULL STOP' : 9371, + 'NUMERO SIGN' : 8470, + 'OBJECT REPLACEMENT CHARACTER' : 65532, + 'OBLIQUE ANGLE OPENING DOWN' : 10663, + 'OBLIQUE ANGLE OPENING UP' : 10662, + 'OCR AMOUNT OF CHECK' : 9287, + 'OCR BELT BUCKLE' : 9284, + 'OCR BOW TIE' : 9285, + 'OCR BRANCH BANK IDENTIFICATION' : 9286, + 'OCR CHAIR' : 9281, + 'OCR CUSTOMER ACCOUNT NUMBER' : 9289, + 'OCR DASH' : 9288, + 'OCR DOUBLE BACKSLASH' : 9290, + 'OCR FORK' : 9282, + 'OCR HOOK' : 9280, + 'OCR INVERTED FORK' : 9283, + 'OGHAM FEATHER MARK' : 5787, + 'OGHAM LETTER AILM' : 5776, + 'OGHAM LETTER BEITH' : 5761, + 'OGHAM LETTER CEIRT' : 5770, + 'OGHAM LETTER COLL' : 5769, + 'OGHAM LETTER DAIR' : 5767, + 'OGHAM LETTER EABHADH' : 5781, + 'OGHAM LETTER EADHADH' : 5779, + 'OGHAM LETTER EAMHANCHOLL' : 5785, + 'OGHAM LETTER FEARN' : 5763, + 'OGHAM LETTER GORT' : 5772, + 'OGHAM LETTER IFIN' : 5784, + 'OGHAM LETTER IODHADH' : 5780, + 'OGHAM LETTER LUIS' : 5762, + 'OGHAM LETTER MUIN' : 5771, + 'OGHAM LETTER NGEADAL' : 5773, + 'OGHAM LETTER NION' : 5765, + 'OGHAM LETTER ONN' : 5777, + 'OGHAM LETTER OR' : 5782, + 'OGHAM LETTER PEITH' : 5786, + 'OGHAM LETTER RUIS' : 5775, + 'OGHAM LETTER SAIL' : 5764, + 'OGHAM LETTER STRAIF' : 5774, + 'OGHAM LETTER TINNE' : 5768, + 'OGHAM LETTER UATH' : 5766, + 'OGHAM LETTER UILLEANN' : 5783, + 'OGHAM LETTER UR' : 5778, + 'OGHAM REVERSED FEATHER MARK' : 5788, + 'OGHAM SPACE MARK' : 5760, + 'OGONEK' : 731, + 'OHM SIGN' : 8486, + 'OLD ITALIC LETTER A' : 66304, + 'OLD ITALIC LETTER BE' : 66305, + 'OLD ITALIC LETTER CHE' : 66332, + 'OLD ITALIC LETTER DE' : 66307, + 'OLD ITALIC LETTER E' : 66308, + 'OLD ITALIC LETTER EF' : 66330, + 'OLD ITALIC LETTER EKS' : 66327, + 'OLD ITALIC LETTER EL' : 66315, + 'OLD ITALIC LETTER EM' : 66316, + 'OLD ITALIC LETTER EN' : 66317, + 'OLD ITALIC LETTER ER' : 66323, + 'OLD ITALIC LETTER ERS' : 66331, + 'OLD ITALIC LETTER ES' : 66324, + 'OLD ITALIC LETTER ESH' : 66318, + 'OLD ITALIC LETTER HE' : 66311, + 'OLD ITALIC LETTER I' : 66313, + 'OLD ITALIC LETTER II' : 66333, + 'OLD ITALIC LETTER KA' : 66314, + 'OLD ITALIC LETTER KE' : 66306, + 'OLD ITALIC LETTER KHE' : 66329, + 'OLD ITALIC LETTER KU' : 66322, + 'OLD ITALIC LETTER O' : 66319, + 'OLD ITALIC LETTER PE' : 66320, + 'OLD ITALIC LETTER PHE' : 66328, + 'OLD ITALIC LETTER SHE' : 66321, + 'OLD ITALIC LETTER TE' : 66325, + 'OLD ITALIC LETTER THE' : 66312, + 'OLD ITALIC LETTER U' : 66326, + 'OLD ITALIC LETTER UU' : 66334, + 'OLD ITALIC LETTER VE' : 66309, + 'OLD ITALIC LETTER ZE' : 66310, + 'OLD ITALIC NUMERAL FIFTY' : 66339, + 'OLD ITALIC NUMERAL FIVE' : 66337, + 'OLD ITALIC NUMERAL ONE' : 66336, + 'OLD ITALIC NUMERAL TEN' : 66338, + 'ONE DOT LEADER' : 8228, + 'OPEN BOX' : 9251, + 'OPEN CENTRE ASTERISK' : 10034, + 'OPEN CENTRE BLACK STAR' : 10027, + 'OPEN CENTRE CROSS' : 10011, + 'OPEN CENTRE TEARDROP-SPOKED ASTERISK' : 10044, + 'OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL' : 9103, + 'OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL' : 9104, + 'OPEN-OUTLINED RIGHTWARDS ARROW' : 10174, + 'OPPOSITION' : 9741, + 'OPTION KEY' : 8997, + 'ORIGINAL OF' : 8886, + 'ORIYA AI LENGTH MARK' : 2902, + 'ORIYA AU LENGTH MARK' : 2903, + 'ORIYA DIGIT EIGHT' : 2926, + 'ORIYA DIGIT FIVE' : 2923, + 'ORIYA DIGIT FOUR' : 2922, + 'ORIYA DIGIT NINE' : 2927, + 'ORIYA DIGIT ONE' : 2919, + 'ORIYA DIGIT SEVEN' : 2925, + 'ORIYA DIGIT SIX' : 2924, + 'ORIYA DIGIT THREE' : 2921, + 'ORIYA DIGIT TWO' : 2920, + 'ORIYA DIGIT ZERO' : 2918, + 'ORIYA ISSHAR' : 2928, + 'ORIYA LETTER A' : 2821, + 'ORIYA LETTER AA' : 2822, + 'ORIYA LETTER AI' : 2832, + 'ORIYA LETTER AU' : 2836, + 'ORIYA LETTER BA' : 2860, + 'ORIYA LETTER BHA' : 2861, + 'ORIYA LETTER CA' : 2842, + 'ORIYA LETTER CHA' : 2843, + 'ORIYA LETTER DA' : 2854, + 'ORIYA LETTER DDA' : 2849, + 'ORIYA LETTER DDHA' : 2850, + 'ORIYA LETTER DHA' : 2855, + 'ORIYA LETTER E' : 2831, + 'ORIYA LETTER GA' : 2839, + 'ORIYA LETTER GHA' : 2840, + 'ORIYA LETTER HA' : 2873, + 'ORIYA LETTER I' : 2823, + 'ORIYA LETTER II' : 2824, + 'ORIYA LETTER JA' : 2844, + 'ORIYA LETTER JHA' : 2845, + 'ORIYA LETTER KA' : 2837, + 'ORIYA LETTER KHA' : 2838, + 'ORIYA LETTER LA' : 2866, + 'ORIYA LETTER LLA' : 2867, + 'ORIYA LETTER MA' : 2862, + 'ORIYA LETTER NA' : 2856, + 'ORIYA LETTER NGA' : 2841, + 'ORIYA LETTER NNA' : 2851, + 'ORIYA LETTER NYA' : 2846, + 'ORIYA LETTER O' : 2835, + 'ORIYA LETTER PA' : 2858, + 'ORIYA LETTER PHA' : 2859, + 'ORIYA LETTER RA' : 2864, + 'ORIYA LETTER RHA' : 2909, + 'ORIYA LETTER RRA' : 2908, + 'ORIYA LETTER SA' : 2872, + 'ORIYA LETTER SHA' : 2870, + 'ORIYA LETTER SSA' : 2871, + 'ORIYA LETTER TA' : 2852, + 'ORIYA LETTER THA' : 2853, + 'ORIYA LETTER TTA' : 2847, + 'ORIYA LETTER TTHA' : 2848, + 'ORIYA LETTER U' : 2825, + 'ORIYA LETTER UU' : 2826, + 'ORIYA LETTER VOCALIC L' : 2828, + 'ORIYA LETTER VOCALIC LL' : 2913, + 'ORIYA LETTER VOCALIC R' : 2827, + 'ORIYA LETTER VOCALIC RR' : 2912, + 'ORIYA LETTER YA' : 2863, + 'ORIYA LETTER YYA' : 2911, + 'ORIYA SIGN ANUSVARA' : 2818, + 'ORIYA SIGN AVAGRAHA' : 2877, + 'ORIYA SIGN CANDRABINDU' : 2817, + 'ORIYA SIGN NUKTA' : 2876, + 'ORIYA SIGN VIRAMA' : 2893, + 'ORIYA SIGN VISARGA' : 2819, + 'ORIYA VOWEL SIGN AA' : 2878, + 'ORIYA VOWEL SIGN AI' : 2888, + 'ORIYA VOWEL SIGN AU' : 2892, + 'ORIYA VOWEL SIGN E' : 2887, + 'ORIYA VOWEL SIGN I' : 2879, + 'ORIYA VOWEL SIGN II' : 2880, + 'ORIYA VOWEL SIGN O' : 2891, + 'ORIYA VOWEL SIGN U' : 2881, + 'ORIYA VOWEL SIGN UU' : 2882, + 'ORIYA VOWEL SIGN VOCALIC R' : 2883, + 'ORNATE LEFT PARENTHESIS' : 64830, + 'ORNATE RIGHT PARENTHESIS' : 64831, + 'ORTHODOX CROSS' : 9766, + 'OUNCE SIGN' : 8485, + 'OUTLINED BLACK STAR' : 10029, + 'OUTLINED GREEK CROSS' : 10009, + 'OUTLINED LATIN CROSS' : 10015, + 'OVERLINE' : 8254, + 'PARAGRAPH SEPARATOR' : 8233, + 'PARALLEL TO' : 8741, + 'PARALLEL WITH HORIZONTAL STROKE' : 10994, + 'PARALLEL WITH TILDE OPERATOR' : 10995, + 'PARENTHESIZED DIGIT EIGHT' : 9339, + 'PARENTHESIZED DIGIT FIVE' : 9336, + 'PARENTHESIZED DIGIT FOUR' : 9335, + 'PARENTHESIZED DIGIT NINE' : 9340, + 'PARENTHESIZED DIGIT ONE' : 9332, + 'PARENTHESIZED DIGIT SEVEN' : 9338, + 'PARENTHESIZED DIGIT SIX' : 9337, + 'PARENTHESIZED DIGIT THREE' : 9334, + 'PARENTHESIZED DIGIT TWO' : 9333, + 'PARENTHESIZED HANGUL CHIEUCH' : 12809, + 'PARENTHESIZED HANGUL CHIEUCH A' : 12823, + 'PARENTHESIZED HANGUL CIEUC' : 12808, + 'PARENTHESIZED HANGUL CIEUC A' : 12822, + 'PARENTHESIZED HANGUL CIEUC U' : 12828, + 'PARENTHESIZED HANGUL HIEUH' : 12813, + 'PARENTHESIZED HANGUL HIEUH A' : 12827, + 'PARENTHESIZED HANGUL IEUNG' : 12807, + 'PARENTHESIZED HANGUL IEUNG A' : 12821, + 'PARENTHESIZED HANGUL KHIEUKH' : 12810, + 'PARENTHESIZED HANGUL KHIEUKH A' : 12824, + 'PARENTHESIZED HANGUL KIYEOK' : 12800, + 'PARENTHESIZED HANGUL KIYEOK A' : 12814, + 'PARENTHESIZED HANGUL MIEUM' : 12804, + 'PARENTHESIZED HANGUL MIEUM A' : 12818, + 'PARENTHESIZED HANGUL NIEUN' : 12801, + 'PARENTHESIZED HANGUL NIEUN A' : 12815, + 'PARENTHESIZED HANGUL PHIEUPH' : 12812, + 'PARENTHESIZED HANGUL PHIEUPH A' : 12826, + 'PARENTHESIZED HANGUL PIEUP' : 12805, + 'PARENTHESIZED HANGUL PIEUP A' : 12819, + 'PARENTHESIZED HANGUL RIEUL' : 12803, + 'PARENTHESIZED HANGUL RIEUL A' : 12817, + 'PARENTHESIZED HANGUL SIOS' : 12806, + 'PARENTHESIZED HANGUL SIOS A' : 12820, + 'PARENTHESIZED HANGUL THIEUTH' : 12811, + 'PARENTHESIZED HANGUL THIEUTH A' : 12825, + 'PARENTHESIZED HANGUL TIKEUT' : 12802, + 'PARENTHESIZED HANGUL TIKEUT A' : 12816, + 'PARENTHESIZED IDEOGRAPH ALLIANCE' : 12863, + 'PARENTHESIZED IDEOGRAPH CALL' : 12858, + 'PARENTHESIZED IDEOGRAPH CONGRATULATION' : 12855, + 'PARENTHESIZED IDEOGRAPH EARTH' : 12847, + 'PARENTHESIZED IDEOGRAPH EIGHT' : 12839, + 'PARENTHESIZED IDEOGRAPH ENTERPRISE' : 12861, + 'PARENTHESIZED IDEOGRAPH FESTIVAL' : 12864, + 'PARENTHESIZED IDEOGRAPH FINANCIAL' : 12854, + 'PARENTHESIZED IDEOGRAPH FIRE' : 12843, + 'PARENTHESIZED IDEOGRAPH FIVE' : 12836, + 'PARENTHESIZED IDEOGRAPH FOUR' : 12835, + 'PARENTHESIZED IDEOGRAPH HAVE' : 12850, + 'PARENTHESIZED IDEOGRAPH LABOR' : 12856, + 'PARENTHESIZED IDEOGRAPH METAL' : 12846, + 'PARENTHESIZED IDEOGRAPH MOON' : 12842, + 'PARENTHESIZED IDEOGRAPH NAME' : 12852, + 'PARENTHESIZED IDEOGRAPH NINE' : 12840, + 'PARENTHESIZED IDEOGRAPH ONE' : 12832, + 'PARENTHESIZED IDEOGRAPH REACH' : 12867, + 'PARENTHESIZED IDEOGRAPH REPRESENT' : 12857, + 'PARENTHESIZED IDEOGRAPH RESOURCE' : 12862, + 'PARENTHESIZED IDEOGRAPH REST' : 12865, + 'PARENTHESIZED IDEOGRAPH SELF' : 12866, + 'PARENTHESIZED IDEOGRAPH SEVEN' : 12838, + 'PARENTHESIZED IDEOGRAPH SIX' : 12837, + 'PARENTHESIZED IDEOGRAPH SOCIETY' : 12851, + 'PARENTHESIZED IDEOGRAPH SPECIAL' : 12853, + 'PARENTHESIZED IDEOGRAPH STOCK' : 12849, + 'PARENTHESIZED IDEOGRAPH STUDY' : 12859, + 'PARENTHESIZED IDEOGRAPH SUN' : 12848, + 'PARENTHESIZED IDEOGRAPH SUPERVISE' : 12860, + 'PARENTHESIZED IDEOGRAPH TEN' : 12841, + 'PARENTHESIZED IDEOGRAPH THREE' : 12834, + 'PARENTHESIZED IDEOGRAPH TWO' : 12833, + 'PARENTHESIZED IDEOGRAPH WATER' : 12844, + 'PARENTHESIZED IDEOGRAPH WOOD' : 12845, + 'PARENTHESIZED LATIN SMALL LETTER A' : 9372, + 'PARENTHESIZED LATIN SMALL LETTER B' : 9373, + 'PARENTHESIZED LATIN SMALL LETTER C' : 9374, + 'PARENTHESIZED LATIN SMALL LETTER D' : 9375, + 'PARENTHESIZED LATIN SMALL LETTER E' : 9376, + 'PARENTHESIZED LATIN SMALL LETTER F' : 9377, + 'PARENTHESIZED LATIN SMALL LETTER G' : 9378, + 'PARENTHESIZED LATIN SMALL LETTER H' : 9379, + 'PARENTHESIZED LATIN SMALL LETTER I' : 9380, + 'PARENTHESIZED LATIN SMALL LETTER J' : 9381, + 'PARENTHESIZED LATIN SMALL LETTER K' : 9382, + 'PARENTHESIZED LATIN SMALL LETTER L' : 9383, + 'PARENTHESIZED LATIN SMALL LETTER M' : 9384, + 'PARENTHESIZED LATIN SMALL LETTER N' : 9385, + 'PARENTHESIZED LATIN SMALL LETTER O' : 9386, + 'PARENTHESIZED LATIN SMALL LETTER P' : 9387, + 'PARENTHESIZED LATIN SMALL LETTER Q' : 9388, + 'PARENTHESIZED LATIN SMALL LETTER R' : 9389, + 'PARENTHESIZED LATIN SMALL LETTER S' : 9390, + 'PARENTHESIZED LATIN SMALL LETTER T' : 9391, + 'PARENTHESIZED LATIN SMALL LETTER U' : 9392, + 'PARENTHESIZED LATIN SMALL LETTER V' : 9393, + 'PARENTHESIZED LATIN SMALL LETTER W' : 9394, + 'PARENTHESIZED LATIN SMALL LETTER X' : 9395, + 'PARENTHESIZED LATIN SMALL LETTER Y' : 9396, + 'PARENTHESIZED LATIN SMALL LETTER Z' : 9397, + 'PARENTHESIZED NUMBER EIGHTEEN' : 9349, + 'PARENTHESIZED NUMBER ELEVEN' : 9342, + 'PARENTHESIZED NUMBER FIFTEEN' : 9346, + 'PARENTHESIZED NUMBER FOURTEEN' : 9345, + 'PARENTHESIZED NUMBER NINETEEN' : 9350, + 'PARENTHESIZED NUMBER SEVENTEEN' : 9348, + 'PARENTHESIZED NUMBER SIXTEEN' : 9347, + 'PARENTHESIZED NUMBER TEN' : 9341, + 'PARENTHESIZED NUMBER THIRTEEN' : 9344, + 'PARENTHESIZED NUMBER TWELVE' : 9343, + 'PARENTHESIZED NUMBER TWENTY' : 9351, + 'PART ALTERNATION MARK' : 12349, + 'PARTIAL DIFFERENTIAL' : 8706, + 'PARTIALLY-RECYCLED PAPER SYMBOL' : 9853, + 'PASSIVE-PULL-DOWN-OUTPUT SYMBOL' : 9105, + 'PASSIVE-PULL-UP-OUTPUT SYMBOL' : 9106, + 'PEACE SYMBOL' : 9774, + 'PENCIL' : 9999, + 'PER MILLE SIGN' : 8240, + 'PER TEN THOUSAND SIGN' : 8241, + 'PERCENT SIGN' : 37, + 'PERPENDICULAR WITH S' : 10977, + 'PERSPECTIVE' : 8966, + 'PESETA SIGN' : 8359, + 'PESO SIGN' : 8369, + 'PHILIPPINE DOUBLE PUNCTUATION' : 5942, + 'PHILIPPINE SINGLE PUNCTUATION' : 5941, + 'PILCROW SIGN' : 182, + 'PINWHEEL STAR' : 10031, + 'PISCES' : 9811, + 'PITCHFORK' : 8916, + 'PITCHFORK WITH TEE TOP' : 10970, + 'PLACE OF INTEREST SIGN' : 8984, + 'PLANCK CONSTANT' : 8462, + 'PLANCK CONSTANT OVER TWO PI' : 8463, + 'PLUS SIGN' : 43, + 'PLUS SIGN ABOVE EQUALS SIGN' : 10866, + 'PLUS SIGN IN LEFT HALF CIRCLE' : 10797, + 'PLUS SIGN IN RIGHT HALF CIRCLE' : 10798, + 'PLUS SIGN IN TRIANGLE' : 10809, + 'PLUS SIGN WITH BLACK TRIANGLE' : 10792, + 'PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE' : 10787, + 'PLUS SIGN WITH DOT BELOW' : 10789, + 'PLUS SIGN WITH SMALL CIRCLE ABOVE' : 10786, + 'PLUS SIGN WITH SUBSCRIPT TWO' : 10791, + 'PLUS SIGN WITH TILDE ABOVE' : 10788, + 'PLUS SIGN WITH TILDE BELOW' : 10790, + 'PLUS-MINUS SIGN' : 177, + 'PLUTO' : 9799, + 'POP DIRECTIONAL FORMATTING' : 8236, + 'POSITION INDICATOR' : 8982, + 'POSTAL MARK' : 12306, + 'POSTAL MARK FACE' : 12320, + 'POUND SIGN' : 163, + 'PRECEDES' : 8826, + 'PRECEDES ABOVE ALMOST EQUAL TO' : 10935, + 'PRECEDES ABOVE EQUALS SIGN' : 10931, + 'PRECEDES ABOVE NOT ALMOST EQUAL TO' : 10937, + 'PRECEDES ABOVE NOT EQUAL TO' : 10933, + 'PRECEDES ABOVE SINGLE-LINE EQUALS SIGN' : 10927, + 'PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO' : 10929, + 'PRECEDES BUT NOT EQUIVALENT TO' : 8936, + 'PRECEDES OR EQUAL TO' : 8828, + 'PRECEDES OR EQUIVALENT TO' : 8830, + 'PRECEDES UNDER RELATION' : 8880, + 'PRESCRIPTION TAKE' : 8478, + 'PRESENTATION FORM FOR VERTICAL EM DASH' : 65073, + 'PRESENTATION FORM FOR VERTICAL EN DASH' : 65074, + 'PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET' : 65087, + 'PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET' : 65083, + 'PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET' : 65089, + 'PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET' : 65079, + 'PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET' : 65085, + 'PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS' : 65077, + 'PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET' : 65081, + 'PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET' : 65091, + 'PRESENTATION FORM FOR VERTICAL LOW LINE' : 65075, + 'PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET' : 65088, + 'PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET' : 65084, + 'PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET' : 65090, + 'PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET' : 65080, + 'PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET' : 65086, + 'PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS' : 65078, + 'PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET' : 65082, + 'PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET' : 65092, + 'PRESENTATION FORM FOR VERTICAL TWO DOT LEADER' : 65072, + 'PRESENTATION FORM FOR VERTICAL WAVY LOW LINE' : 65076, + 'PREVIOUS PAGE' : 9111, + 'PRIME' : 8242, + 'PRINT SCREEN SYMBOL' : 9113, + 'PROJECTIVE' : 8965, + 'PROPERTY LINE' : 8522, + 'PROPORTION' : 8759, + 'PROPORTIONAL TO' : 8733, + 'PUNCTUATION SPACE' : 8200, + 'QUADRANT LOWER LEFT' : 9622, + 'QUADRANT LOWER RIGHT' : 9623, + 'QUADRANT UPPER LEFT' : 9624, + 'QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT' : 9625, + 'QUADRANT UPPER LEFT AND LOWER RIGHT' : 9626, + 'QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT' : 9627, + 'QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT' : 9628, + 'QUADRANT UPPER RIGHT' : 9629, + 'QUADRANT UPPER RIGHT AND LOWER LEFT' : 9630, + 'QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT' : 9631, + 'QUADRUPLE INTEGRAL OPERATOR' : 10764, + 'QUADRUPLE PRIME' : 8279, + 'QUARTER NOTE' : 9833, + 'QUATERNION INTEGRAL OPERATOR' : 10774, + 'QUESTION EXCLAMATION MARK' : 8264, + 'QUESTION MARK' : 63, + 'QUESTIONED EQUAL TO' : 8799, + 'QUOTATION MARK' : 34, + 'RADICAL SYMBOL BOTTOM' : 9143, + 'RADIOACTIVE SIGN' : 9762, + 'RATIO' : 8758, + 'RECYCLED PAPER SYMBOL' : 9852, + 'RECYCLING SYMBOL FOR GENERIC MATERIALS' : 9850, + 'RECYCLING SYMBOL FOR TYPE-1 PLASTICS' : 9843, + 'RECYCLING SYMBOL FOR TYPE-2 PLASTICS' : 9844, + 'RECYCLING SYMBOL FOR TYPE-3 PLASTICS' : 9845, + 'RECYCLING SYMBOL FOR TYPE-4 PLASTICS' : 9846, + 'RECYCLING SYMBOL FOR TYPE-5 PLASTICS' : 9847, + 'RECYCLING SYMBOL FOR TYPE-6 PLASTICS' : 9848, + 'RECYCLING SYMBOL FOR TYPE-7 PLASTICS' : 9849, + 'REFERENCE MARK' : 8251, + 'REGISTERED SIGN' : 174, + 'REPLACEMENT CHARACTER' : 65533, + 'RESPONSE' : 8479, + 'RETURN SYMBOL' : 9166, + 'REVERSE SOLIDUS' : 92, + 'REVERSE SOLIDUS OPERATOR' : 10741, + 'REVERSE SOLIDUS WITH HORIZONTAL STROKE' : 10743, + 'REVERSED ANGLE' : 10659, + 'REVERSED ANGLE WITH UNDERBAR' : 10661, + 'REVERSED DOUBLE PRIME' : 8246, + 'REVERSED DOUBLE PRIME QUOTATION MARK' : 12317, + 'REVERSED DOUBLE STROKE NOT SIGN' : 10989, + 'REVERSED EMPTY SET' : 10672, + 'REVERSED NOT SIGN' : 8976, + 'REVERSED PILCROW SIGN' : 8267, + 'REVERSED PRIME' : 8245, + 'REVERSED ROTATED FLORAL HEART BULLET' : 9753, + 'REVERSED SANS-SERIF CAPITAL L' : 8515, + 'REVERSED SEMICOLON' : 8271, + 'REVERSED TILDE' : 8765, + 'REVERSED TILDE EQUALS' : 8909, + 'REVERSED TRIPLE PRIME' : 8247, + 'RIAL SIGN' : 65020, + 'RIGHT ANGLE' : 8735, + 'RIGHT ANGLE BRACKET' : 12297, + 'RIGHT ANGLE BRACKET WITH DOT' : 10642, + 'RIGHT ANGLE VARIANT WITH SQUARE' : 10652, + 'RIGHT ANGLE WITH ARC' : 8894, + 'RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW' : 9084, + 'RIGHT ARC GREATER-THAN BRACKET' : 10644, + 'RIGHT ARROW WITH CIRCLED PLUS' : 10228, + 'RIGHT ARROW WITH SMALL CIRCLE' : 8692, + 'RIGHT BLACK LENTICULAR BRACKET' : 12305, + 'RIGHT BLACK TORTOISE SHELL BRACKET' : 10648, + 'RIGHT CEILING' : 8969, + 'RIGHT CORNER BRACKET' : 12301, + 'RIGHT CURLY BRACKET' : 125, + 'RIGHT CURLY BRACKET LOWER HOOK' : 9133, + 'RIGHT CURLY BRACKET MIDDLE PIECE' : 9132, + 'RIGHT CURLY BRACKET UPPER HOOK' : 9131, + 'RIGHT DOUBLE ANGLE BRACKET' : 12299, + 'RIGHT DOUBLE ARROW WITH ROUNDED HEAD' : 10608, + 'RIGHT DOUBLE QUOTATION MARK' : 8221, + 'RIGHT DOUBLE WIGGLY FENCE' : 10715, + 'RIGHT FISH TAIL' : 10621, + 'RIGHT FLOOR' : 8971, + 'RIGHT HALF BLACK CIRCLE' : 9687, + 'RIGHT HALF BLOCK' : 9616, + 'RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT' : 8906, + 'RIGHT ONE EIGHTH BLOCK' : 9621, + 'RIGHT OUTER JOIN' : 10198, + 'RIGHT PARENTHESIS' : 41, + 'RIGHT PARENTHESIS EXTENSION' : 9119, + 'RIGHT PARENTHESIS LOWER HOOK' : 9120, + 'RIGHT PARENTHESIS UPPER HOOK' : 9118, + 'RIGHT SEMIDIRECT PRODUCT' : 8908, + 'RIGHT SINGLE QUOTATION MARK' : 8217, + 'RIGHT SQUARE BRACKET' : 93, + 'RIGHT SQUARE BRACKET EXTENSION' : 9125, + 'RIGHT SQUARE BRACKET LOWER CORNER' : 9126, + 'RIGHT SQUARE BRACKET UPPER CORNER' : 9124, + 'RIGHT SQUARE BRACKET WITH QUILL' : 8262, + 'RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER' : 10638, + 'RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER' : 10640, + 'RIGHT SQUARE BRACKET WITH UNDERBAR' : 10636, + 'RIGHT TACK' : 8866, + 'RIGHT TORTOISE SHELL BRACKET' : 12309, + 'RIGHT TRIANGLE' : 8895, + 'RIGHT TRIANGLE ABOVE LEFT TRIANGLE' : 10702, + 'RIGHT VERTICAL BOX LINE' : 9145, + 'RIGHT WHITE CORNER BRACKET' : 12303, + 'RIGHT WHITE CURLY BRACKET' : 10628, + 'RIGHT WHITE LENTICULAR BRACKET' : 12311, + 'RIGHT WHITE PARENTHESIS' : 10630, + 'RIGHT WHITE SQUARE BRACKET' : 12315, + 'RIGHT WHITE TORTOISE SHELL BRACKET' : 12313, + 'RIGHT WIGGLY FENCE' : 10713, + 'RIGHT-POINTING ANGLE BRACKET' : 9002, + 'RIGHT-POINTING CURVED ANGLE BRACKET' : 10749, + 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' : 187, + 'RIGHT-SHADED WHITE RIGHTWARDS ARROW' : 10153, + 'RIGHT-SIDE ARC CLOCKWISE ARROW' : 10552, + 'RIGHT-TO-LEFT EMBEDDING' : 8235, + 'RIGHT-TO-LEFT MARK' : 8207, + 'RIGHT-TO-LEFT OVERRIDE' : 8238, + 'RIGHTHAND INTERIOR PRODUCT' : 10813, + 'RIGHTWARDS ARROW' : 8594, + 'RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO' : 10613, + 'RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW' : 10562, + 'RIGHTWARDS ARROW ABOVE TILDE OPERATOR' : 10612, + 'RIGHTWARDS ARROW FROM BAR' : 8614, + 'RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND' : 10528, + 'RIGHTWARDS ARROW OVER LEFTWARDS ARROW' : 8644, + 'RIGHTWARDS ARROW THROUGH X' : 10567, + 'RIGHTWARDS ARROW TO BAR' : 8677, + 'RIGHTWARDS ARROW TO BLACK DIAMOND' : 10526, + 'RIGHTWARDS ARROW WITH CORNER DOWNWARDS' : 8628, + 'RIGHTWARDS ARROW WITH DOTTED STEM' : 10513, + 'RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE' : 8699, + 'RIGHTWARDS ARROW WITH HOOK' : 8618, + 'RIGHTWARDS ARROW WITH LOOP' : 8620, + 'RIGHTWARDS ARROW WITH PLUS BELOW' : 10565, + 'RIGHTWARDS ARROW WITH STROKE' : 8603, + 'RIGHTWARDS ARROW WITH TAIL' : 8611, + 'RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE' : 10517, + 'RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE' : 10516, + 'RIGHTWARDS ARROW WITH VERTICAL STROKE' : 8696, + 'RIGHTWARDS ARROW-TAIL' : 10522, + 'RIGHTWARDS DASHED ARROW' : 8674, + 'RIGHTWARDS DOUBLE ARROW' : 8658, + 'RIGHTWARDS DOUBLE ARROW FROM BAR' : 10503, + 'RIGHTWARDS DOUBLE ARROW WITH STROKE' : 8655, + 'RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE' : 10499, + 'RIGHTWARDS DOUBLE ARROW-TAIL' : 10524, + 'RIGHTWARDS DOUBLE DASH ARROW' : 10509, + 'RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON' : 8652, + 'RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN' : 10601, + 'RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH' : 10605, + 'RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR' : 10591, + 'RIGHTWARDS HARPOON WITH BARB DOWN TO BAR' : 10583, + 'RIGHTWARDS HARPOON WITH BARB DOWNWARDS' : 8641, + 'RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP' : 10600, + 'RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH' : 10604, + 'RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN' : 10596, + 'RIGHTWARDS HARPOON WITH BARB UP FROM BAR' : 10587, + 'RIGHTWARDS HARPOON WITH BARB UP TO BAR' : 10579, + 'RIGHTWARDS HARPOON WITH BARB UPWARDS' : 8640, + 'RIGHTWARDS OPEN-HEADED ARROW' : 8702, + 'RIGHTWARDS PAIRED ARROWS' : 8649, + 'RIGHTWARDS SQUIGGLE ARROW' : 8669, + 'RIGHTWARDS TRIPLE ARROW' : 8667, + 'RIGHTWARDS TRIPLE DASH ARROW' : 10511, + 'RIGHTWARDS TWO HEADED ARROW' : 8608, + 'RIGHTWARDS TWO-HEADED ARROW FROM BAR' : 10501, + 'RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE' : 10497, + 'RIGHTWARDS TWO-HEADED ARROW WITH TAIL' : 10518, + 'RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE' : 10520, + 'RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE' : 10519, + 'RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE' : 10496, + 'RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW' : 10512, + 'RIGHTWARDS WAVE ARROW' : 8605, + 'RIGHTWARDS WHITE ARROW' : 8680, + 'RIGHTWARDS WHITE ARROW FROM WALL' : 8688, + 'RING ABOVE' : 730, + 'RING EQUAL TO' : 8791, + 'RING IN EQUAL TO' : 8790, + 'RING OPERATOR' : 8728, + 'RISING DIAGONAL CROSSING FALLING DIAGONAL' : 10539, + 'RISING DIAGONAL CROSSING SOUTH EAST ARROW' : 10544, + 'ROMAN NUMERAL EIGHT' : 8551, + 'ROMAN NUMERAL ELEVEN' : 8554, + 'ROMAN NUMERAL FIFTY' : 8556, + 'ROMAN NUMERAL FIVE' : 8548, + 'ROMAN NUMERAL FIVE HUNDRED' : 8558, + 'ROMAN NUMERAL FIVE THOUSAND' : 8577, + 'ROMAN NUMERAL FOUR' : 8547, + 'ROMAN NUMERAL NINE' : 8552, + 'ROMAN NUMERAL ONE' : 8544, + 'ROMAN NUMERAL ONE HUNDRED' : 8557, + 'ROMAN NUMERAL ONE THOUSAND' : 8559, + 'ROMAN NUMERAL ONE THOUSAND C D' : 8576, + 'ROMAN NUMERAL REVERSED ONE HUNDRED' : 8579, + 'ROMAN NUMERAL SEVEN' : 8550, + 'ROMAN NUMERAL SIX' : 8549, + 'ROMAN NUMERAL TEN' : 8553, + 'ROMAN NUMERAL TEN THOUSAND' : 8578, + 'ROMAN NUMERAL THREE' : 8546, + 'ROMAN NUMERAL TWELVE' : 8555, + 'ROMAN NUMERAL TWO' : 8545, + 'ROTATED CAPITAL Q' : 8506, + 'ROTATED FLORAL HEART BULLET' : 10087, + 'ROTATED HEAVY BLACK HEART BULLET' : 10085, + 'RULE-DELAYED' : 10740, + 'RUNIC ARLAUG SYMBOL' : 5870, + 'RUNIC BELGTHOR SYMBOL' : 5872, + 'RUNIC CROSS PUNCTUATION' : 5869, + 'RUNIC LETTER AC A' : 5802, + 'RUNIC LETTER AESC' : 5803, + 'RUNIC LETTER ALGIZ EOLHX' : 5833, + 'RUNIC LETTER ANSUZ A' : 5800, + 'RUNIC LETTER BERKANAN BEORC BJARKAN B' : 5842, + 'RUNIC LETTER C' : 5837, + 'RUNIC LETTER CALC' : 5859, + 'RUNIC LETTER CEALC' : 5860, + 'RUNIC LETTER CEN' : 5811, + 'RUNIC LETTER CWEORTH' : 5858, + 'RUNIC LETTER D' : 5841, + 'RUNIC LETTER DAGAZ DAEG D' : 5854, + 'RUNIC LETTER DOTTED-L' : 5851, + 'RUNIC LETTER DOTTED-N' : 5824, + 'RUNIC LETTER DOTTED-P' : 5844, + 'RUNIC LETTER E' : 5826, + 'RUNIC LETTER EAR' : 5856, + 'RUNIC LETTER EHWAZ EH E' : 5846, + 'RUNIC LETTER ENG' : 5814, + 'RUNIC LETTER ETH' : 5799, + 'RUNIC LETTER FEHU FEOH FE F' : 5792, + 'RUNIC LETTER G' : 5813, + 'RUNIC LETTER GAR' : 5816, + 'RUNIC LETTER GEBO GYFU G' : 5815, + 'RUNIC LETTER GER' : 5828, + 'RUNIC LETTER HAEGL H' : 5819, + 'RUNIC LETTER HAGLAZ H' : 5818, + 'RUNIC LETTER ICELANDIC-YR' : 5864, + 'RUNIC LETTER ING' : 5853, + 'RUNIC LETTER INGWAZ' : 5852, + 'RUNIC LETTER IOR' : 5857, + 'RUNIC LETTER ISAZ IS ISS I' : 5825, + 'RUNIC LETTER IWAZ EOH' : 5831, + 'RUNIC LETTER JERAN J' : 5827, + 'RUNIC LETTER KAUN K' : 5812, + 'RUNIC LETTER KAUNA' : 5810, + 'RUNIC LETTER LAUKAZ LAGU LOGR L' : 5850, + 'RUNIC LETTER LONG-BRANCH-AR AE' : 5829, + 'RUNIC LETTER LONG-BRANCH-HAGALL H' : 5820, + 'RUNIC LETTER LONG-BRANCH-MADR M' : 5848, + 'RUNIC LETTER LONG-BRANCH-OSS O' : 5804, + 'RUNIC LETTER LONG-BRANCH-YR' : 5862, + 'RUNIC LETTER MANNAZ MAN M' : 5847, + 'RUNIC LETTER NAUDIZ NYD NAUD N' : 5822, + 'RUNIC LETTER O' : 5806, + 'RUNIC LETTER OE' : 5807, + 'RUNIC LETTER ON' : 5808, + 'RUNIC LETTER OPEN-P' : 5845, + 'RUNIC LETTER OS O' : 5801, + 'RUNIC LETTER OTHALAN ETHEL O' : 5855, + 'RUNIC LETTER PERTHO PEORTH P' : 5832, + 'RUNIC LETTER Q' : 5865, + 'RUNIC LETTER RAIDO RAD REID R' : 5809, + 'RUNIC LETTER SHORT-TWIG-AR A' : 5830, + 'RUNIC LETTER SHORT-TWIG-BJARKAN B' : 5843, + 'RUNIC LETTER SHORT-TWIG-HAGALL H' : 5821, + 'RUNIC LETTER SHORT-TWIG-MADR M' : 5849, + 'RUNIC LETTER SHORT-TWIG-NAUD N' : 5823, + 'RUNIC LETTER SHORT-TWIG-OSS O' : 5805, + 'RUNIC LETTER SHORT-TWIG-SOL S' : 5836, + 'RUNIC LETTER SHORT-TWIG-TYR T' : 5840, + 'RUNIC LETTER SHORT-TWIG-YR' : 5863, + 'RUNIC LETTER SIGEL LONG-BRANCH-SOL S' : 5835, + 'RUNIC LETTER SOWILO S' : 5834, + 'RUNIC LETTER STAN' : 5861, + 'RUNIC LETTER THURISAZ THURS THORN' : 5798, + 'RUNIC LETTER TIWAZ TIR TYR T' : 5839, + 'RUNIC LETTER URUZ UR U' : 5794, + 'RUNIC LETTER V' : 5793, + 'RUNIC LETTER W' : 5797, + 'RUNIC LETTER WUNJO WYNN W' : 5817, + 'RUNIC LETTER X' : 5866, + 'RUNIC LETTER Y' : 5796, + 'RUNIC LETTER YR' : 5795, + 'RUNIC LETTER Z' : 5838, + 'RUNIC MULTIPLE PUNCTUATION' : 5868, + 'RUNIC SINGLE PUNCTUATION' : 5867, + 'RUNIC TVIMADUR SYMBOL' : 5871, + 'RUPEE SIGN' : 8360, + 'S IN TRIANGLE' : 10700, + 'SAGITTARIUS' : 9808, + 'SALTIRE' : 9747, + 'SATURN' : 9796, + 'SCORPIUS' : 9807, + 'SCRIPT CAPITAL B' : 8492, + 'SCRIPT CAPITAL E' : 8496, + 'SCRIPT CAPITAL F' : 8497, + 'SCRIPT CAPITAL H' : 8459, + 'SCRIPT CAPITAL I' : 8464, + 'SCRIPT CAPITAL L' : 8466, + 'SCRIPT CAPITAL M' : 8499, + 'SCRIPT CAPITAL P' : 8472, + 'SCRIPT CAPITAL R' : 8475, + 'SCRIPT SMALL E' : 8495, + 'SCRIPT SMALL G' : 8458, + 'SCRIPT SMALL L' : 8467, + 'SCRIPT SMALL O' : 8500, + 'SCRUPLE' : 8456, + 'SECTION SIGN' : 167, + 'SECTOR' : 8980, + 'SEGMENT' : 8979, + 'SEMICOLON' : 59, + 'SEMIDIRECT PRODUCT WITH BOTTOM CLOSED' : 10802, + 'SERVICE MARK' : 8480, + 'SESAME DOT' : 65093, + 'SET MINUS' : 8726, + 'SHADOWED WHITE CIRCLE' : 10061, + 'SHADOWED WHITE LATIN CROSS' : 10014, + 'SHADOWED WHITE STAR' : 10032, + 'SHORT DOWN TACK' : 10975, + 'SHORT DOWN TACK WITH OVERBAR' : 10983, + 'SHORT LEFT TACK' : 10974, + 'SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW' : 10564, + 'SHORT UP TACK' : 10976, + 'SHORT UP TACK ABOVE SHORT DOWN TACK' : 10985, + 'SHORT UP TACK WITH UNDERBAR' : 10984, + 'SHOULDERED OPEN BOX' : 9085, + 'SHUFFLE PRODUCT' : 10722, + 'SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN' : 10912, + 'SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN' : 10911, + 'SIMILAR MINUS SIMILAR' : 10860, + 'SIMILAR OR GREATER-THAN' : 10910, + 'SIMILAR OR LESS-THAN' : 10909, + 'SINE WAVE' : 8767, + 'SINGLE HIGH-REVERSED-9 QUOTATION MARK' : 8219, + 'SINGLE LEFT-POINTING ANGLE QUOTATION MARK' : 8249, + 'SINGLE LOW-9 QUOTATION MARK' : 8218, + 'SINGLE RIGHT-POINTING ANGLE QUOTATION MARK' : 8250, + 'SINHALA LETTER AAYANNA' : 3462, + 'SINHALA LETTER AEEYANNA' : 3464, + 'SINHALA LETTER AEYANNA' : 3463, + 'SINHALA LETTER AIYANNA' : 3475, + 'SINHALA LETTER ALPAPRAANA BAYANNA' : 3510, + 'SINHALA LETTER ALPAPRAANA CAYANNA' : 3488, + 'SINHALA LETTER ALPAPRAANA DAYANNA' : 3503, + 'SINHALA LETTER ALPAPRAANA DDAYANNA' : 3497, + 'SINHALA LETTER ALPAPRAANA GAYANNA' : 3484, + 'SINHALA LETTER ALPAPRAANA JAYANNA' : 3490, + 'SINHALA LETTER ALPAPRAANA KAYANNA' : 3482, + 'SINHALA LETTER ALPAPRAANA PAYANNA' : 3508, + 'SINHALA LETTER ALPAPRAANA TAYANNA' : 3501, + 'SINHALA LETTER ALPAPRAANA TTAYANNA' : 3495, + 'SINHALA LETTER AMBA BAYANNA' : 3513, + 'SINHALA LETTER AUYANNA' : 3478, + 'SINHALA LETTER AYANNA' : 3461, + 'SINHALA LETTER DANTAJA LAYANNA' : 3517, + 'SINHALA LETTER DANTAJA NAYANNA' : 3505, + 'SINHALA LETTER DANTAJA SAYANNA' : 3523, + 'SINHALA LETTER EEYANNA' : 3474, + 'SINHALA LETTER EYANNA' : 3473, + 'SINHALA LETTER FAYANNA' : 3526, + 'SINHALA LETTER HAYANNA' : 3524, + 'SINHALA LETTER IIYANNA' : 3466, + 'SINHALA LETTER ILUUYANNA' : 3472, + 'SINHALA LETTER ILUYANNA' : 3471, + 'SINHALA LETTER IRUUYANNA' : 3470, + 'SINHALA LETTER IRUYANNA' : 3469, + 'SINHALA LETTER IYANNA' : 3465, + 'SINHALA LETTER KANTAJA NAASIKYAYA' : 3486, + 'SINHALA LETTER MAHAAPRAANA BAYANNA' : 3511, + 'SINHALA LETTER MAHAAPRAANA CAYANNA' : 3489, + 'SINHALA LETTER MAHAAPRAANA DAYANNA' : 3504, + 'SINHALA LETTER MAHAAPRAANA DDAYANNA' : 3498, + 'SINHALA LETTER MAHAAPRAANA GAYANNA' : 3485, + 'SINHALA LETTER MAHAAPRAANA JAYANNA' : 3491, + 'SINHALA LETTER MAHAAPRAANA KAYANNA' : 3483, + 'SINHALA LETTER MAHAAPRAANA PAYANNA' : 3509, + 'SINHALA LETTER MAHAAPRAANA TAYANNA' : 3502, + 'SINHALA LETTER MAHAAPRAANA TTAYANNA' : 3496, + 'SINHALA LETTER MAYANNA' : 3512, + 'SINHALA LETTER MUURDHAJA LAYANNA' : 3525, + 'SINHALA LETTER MUURDHAJA NAYANNA' : 3499, + 'SINHALA LETTER MUURDHAJA SAYANNA' : 3522, + 'SINHALA LETTER OOYANNA' : 3477, + 'SINHALA LETTER OYANNA' : 3476, + 'SINHALA LETTER RAYANNA' : 3515, + 'SINHALA LETTER SANYAKA DAYANNA' : 3507, + 'SINHALA LETTER SANYAKA DDAYANNA' : 3500, + 'SINHALA LETTER SANYAKA GAYANNA' : 3487, + 'SINHALA LETTER SANYAKA JAYANNA' : 3494, + 'SINHALA LETTER TAALUJA NAASIKYAYA' : 3492, + 'SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA' : 3493, + 'SINHALA LETTER TAALUJA SAYANNA' : 3521, + 'SINHALA LETTER UUYANNA' : 3468, + 'SINHALA LETTER UYANNA' : 3467, + 'SINHALA LETTER VAYANNA' : 3520, + 'SINHALA LETTER YAYANNA' : 3514, + 'SINHALA PUNCTUATION KUNDDALIYA' : 3572, + 'SINHALA SIGN AL-LAKUNA' : 3530, + 'SINHALA SIGN ANUSVARAYA' : 3458, + 'SINHALA SIGN VISARGAYA' : 3459, + 'SINHALA VOWEL SIGN AELA-PILLA' : 3535, + 'SINHALA VOWEL SIGN DIGA AEDA-PILLA' : 3537, + 'SINHALA VOWEL SIGN DIGA GAETTA-PILLA' : 3570, + 'SINHALA VOWEL SIGN DIGA GAYANUKITTA' : 3571, + 'SINHALA VOWEL SIGN DIGA IS-PILLA' : 3539, + 'SINHALA VOWEL SIGN DIGA KOMBUVA' : 3546, + 'SINHALA VOWEL SIGN DIGA PAA-PILLA' : 3542, + 'SINHALA VOWEL SIGN GAETTA-PILLA' : 3544, + 'SINHALA VOWEL SIGN GAYANUKITTA' : 3551, + 'SINHALA VOWEL SIGN KETTI AEDA-PILLA' : 3536, + 'SINHALA VOWEL SIGN KETTI IS-PILLA' : 3538, + 'SINHALA VOWEL SIGN KETTI PAA-PILLA' : 3540, + 'SINHALA VOWEL SIGN KOMBU DEKA' : 3547, + 'SINHALA VOWEL SIGN KOMBUVA' : 3545, + 'SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA' : 3548, + 'SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA' : 3549, + 'SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA' : 3550, + 'SIX PETALLED BLACK AND WHITE FLORETTE' : 10046, + 'SIX POINTED BLACK STAR' : 10038, + 'SIX-PER-EM SPACE' : 8198, + 'SIXTEEN POINTED ASTERISK' : 10042, + 'SKULL AND CROSSBONES' : 9760, + 'SLANTED EQUAL TO OR GREATER-THAN' : 10902, + 'SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE' : 10904, + 'SLANTED EQUAL TO OR LESS-THAN' : 10901, + 'SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE' : 10903, + 'SLOPE' : 9011, + 'SLOPING LARGE AND' : 10840, + 'SLOPING LARGE OR' : 10839, + 'SMALL AMPERSAND' : 65120, + 'SMALL ASTERISK' : 65121, + 'SMALL COLON' : 65109, + 'SMALL COMMA' : 65104, + 'SMALL COMMERCIAL AT' : 65131, + 'SMALL CONTAINS AS MEMBER' : 8717, + 'SMALL CONTAINS WITH OVERBAR' : 8958, + 'SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE' : 8956, + 'SMALL DOLLAR SIGN' : 65129, + 'SMALL ELEMENT OF' : 8714, + 'SMALL ELEMENT OF WITH OVERBAR' : 8951, + 'SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE' : 8948, + 'SMALL EM DASH' : 65112, + 'SMALL EQUALS SIGN' : 65126, + 'SMALL EXCLAMATION MARK' : 65111, + 'SMALL FULL STOP' : 65106, + 'SMALL GREATER-THAN SIGN' : 65125, + 'SMALL HYPHEN-MINUS' : 65123, + 'SMALL IDEOGRAPHIC COMMA' : 65105, + 'SMALL LEFT CURLY BRACKET' : 65115, + 'SMALL LEFT PARENTHESIS' : 65113, + 'SMALL LEFT TORTOISE SHELL BRACKET' : 65117, + 'SMALL LESS-THAN SIGN' : 65124, + 'SMALL NUMBER SIGN' : 65119, + 'SMALL PERCENT SIGN' : 65130, + 'SMALL PLUS SIGN' : 65122, + 'SMALL QUESTION MARK' : 65110, + 'SMALL REVERSE SOLIDUS' : 65128, + 'SMALL RIGHT CURLY BRACKET' : 65116, + 'SMALL RIGHT PARENTHESIS' : 65114, + 'SMALL RIGHT TORTOISE SHELL BRACKET' : 65118, + 'SMALL ROMAN NUMERAL EIGHT' : 8567, + 'SMALL ROMAN NUMERAL ELEVEN' : 8570, + 'SMALL ROMAN NUMERAL FIFTY' : 8572, + 'SMALL ROMAN NUMERAL FIVE' : 8564, + 'SMALL ROMAN NUMERAL FIVE HUNDRED' : 8574, + 'SMALL ROMAN NUMERAL FOUR' : 8563, + 'SMALL ROMAN NUMERAL NINE' : 8568, + 'SMALL ROMAN NUMERAL ONE' : 8560, + 'SMALL ROMAN NUMERAL ONE HUNDRED' : 8573, + 'SMALL ROMAN NUMERAL ONE THOUSAND' : 8575, + 'SMALL ROMAN NUMERAL SEVEN' : 8566, + 'SMALL ROMAN NUMERAL SIX' : 8565, + 'SMALL ROMAN NUMERAL TEN' : 8569, + 'SMALL ROMAN NUMERAL THREE' : 8562, + 'SMALL ROMAN NUMERAL TWELVE' : 8571, + 'SMALL ROMAN NUMERAL TWO' : 8561, + 'SMALL SEMICOLON' : 65108, + 'SMALL TILDE' : 732, + 'SMALL VEE WITH UNDERBAR' : 10849, + 'SMALLER THAN' : 10922, + 'SMALLER THAN OR EQUAL TO' : 10924, + 'SMASH PRODUCT' : 10803, + 'SMILE' : 8995, + 'SNOWFLAKE' : 10052, + 'SNOWMAN' : 9731, + 'SOFT HYPHEN' : 173, + 'SOFTWARE-FUNCTION SYMBOL' : 9108, + 'SOLIDUS' : 47, + 'SOLIDUS WITH OVERBAR' : 10742, + 'SOUND RECORDING COPYRIGHT' : 8471, + 'SOUTH EAST ARROW' : 8600, + 'SOUTH EAST ARROW AND SOUTH WEST ARROW' : 10537, + 'SOUTH EAST ARROW CROSSING NORTH EAST ARROW' : 10541, + 'SOUTH EAST ARROW TO CORNER' : 8690, + 'SOUTH EAST ARROW WITH HOOK' : 10533, + 'SOUTH EAST DOUBLE ARROW' : 8664, + 'SOUTH WEST ARROW' : 8601, + 'SOUTH WEST ARROW AND NORTH WEST ARROW' : 10538, + 'SOUTH WEST ARROW WITH HOOK' : 10534, + 'SOUTH WEST DOUBLE ARROW' : 8665, + 'SPACE' : 32, + 'SPARKLE' : 10055, + 'SPHERICAL ANGLE' : 8738, + 'SPHERICAL ANGLE OPENING LEFT' : 10656, + 'SPHERICAL ANGLE OPENING UP' : 10657, + 'SQUARE AARU' : 13059, + 'SQUARE AM' : 13250, + 'SQUARE ANPEA' : 13058, + 'SQUARE APAATO' : 13056, + 'SQUARE ARUHUA' : 13057, + 'SQUARE AU' : 13171, + 'SQUARE BAARERU' : 13101, + 'SQUARE BAR' : 13172, + 'SQUARE BEETA' : 13116, + 'SQUARE BIRU' : 13105, + 'SQUARE BORUTO' : 13118, + 'SQUARE BQ' : 13251, + 'SQUARE BUSSYERU' : 13108, + 'SQUARE C OVER KG' : 13254, + 'SQUARE CAL' : 13192, + 'SQUARE CAP' : 8851, + 'SQUARE CC' : 13252, + 'SQUARE CD' : 13253, + 'SQUARE CM' : 13213, + 'SQUARE CM CUBED' : 13220, + 'SQUARE CM SQUARED' : 13216, + 'SQUARE CO' : 13255, + 'SQUARE CORPORATION' : 13183, + 'SQUARE CUP' : 8852, + 'SQUARE DA' : 13170, + 'SQUARE DAASU' : 13092, + 'SQUARE DB' : 13256, + 'SQUARE DESI' : 13093, + 'SQUARE DL' : 13207, + 'SQUARE DORU' : 13094, + 'SQUARE EEKAA' : 13064, + 'SQUARE ERA NAME HEISEI' : 13179, + 'SQUARE ERA NAME MEIZI' : 13182, + 'SQUARE ERA NAME SYOUWA' : 13180, + 'SQUARE ERA NAME TAISYOU' : 13181, + 'SQUARE ESUKUUDO' : 13063, + 'SQUARE FM' : 13209, + 'SQUARE FOOT' : 9165, + 'SQUARE GANMA' : 13071, + 'SQUARE GARON' : 13070, + 'SQUARE GB' : 13191, + 'SQUARE GHZ' : 13203, + 'SQUARE GIGA' : 13072, + 'SQUARE GINII' : 13073, + 'SQUARE GIRUDAA' : 13075, + 'SQUARE GPA' : 13228, + 'SQUARE GURAMU' : 13080, + 'SQUARE GURAMUTON' : 13081, + 'SQUARE GY' : 13257, + 'SQUARE HA' : 13258, + 'SQUARE HAITU' : 13098, + 'SQUARE HEKUTAARU' : 13110, + 'SQUARE HERUTU' : 13113, + 'SQUARE HON' : 13119, + 'SQUARE HOON' : 13122, + 'SQUARE HOORU' : 13121, + 'SQUARE HP' : 13259, + 'SQUARE HPA' : 13169, + 'SQUARE HUARADDO' : 13106, + 'SQUARE HUIITO' : 13107, + 'SQUARE HURAN' : 13109, + 'SQUARE HZ' : 13200, + 'SQUARE IMAGE OF' : 8847, + 'SQUARE IMAGE OF OR EQUAL TO' : 8849, + 'SQUARE IMAGE OF OR NOT EQUAL TO' : 8932, + 'SQUARE IN' : 13260, + 'SQUARE ININGU' : 13060, + 'SQUARE INTI' : 13061, + 'SQUARE K OHM' : 13248, + 'SQUARE KA' : 13188, + 'SQUARE KAIRI' : 13067, + 'SQUARE KARATTO' : 13068, + 'SQUARE KARORII' : 13069, + 'SQUARE KB' : 13189, + 'SQUARE KCAL' : 13193, + 'SQUARE KEESU' : 13084, + 'SQUARE KG' : 13199, + 'SQUARE KHZ' : 13201, + 'SQUARE KIRO' : 13076, + 'SQUARE KIROGURAMU' : 13077, + 'SQUARE KIROMEETORU' : 13078, + 'SQUARE KIROWATTO' : 13079, + 'SQUARE KK' : 13261, + 'SQUARE KL' : 13208, + 'SQUARE KM' : 13214, + 'SQUARE KM CAPITAL' : 13262, + 'SQUARE KM CUBED' : 13222, + 'SQUARE KM SQUARED' : 13218, + 'SQUARE KOOPO' : 13086, + 'SQUARE KORUNA' : 13085, + 'SQUARE KPA' : 13226, + 'SQUARE KT' : 13263, + 'SQUARE KUROONE' : 13083, + 'SQUARE KURUZEIRO' : 13082, + 'SQUARE KV' : 13240, + 'SQUARE KW' : 13246, + 'SQUARE KYURII' : 13074, + 'SQUARE LEFT OPEN BOX OPERATOR' : 10957, + 'SQUARE LM' : 13264, + 'SQUARE LN' : 13265, + 'SQUARE LOG' : 13266, + 'SQUARE LOZENGE' : 8977, + 'SQUARE LX' : 13267, + 'SQUARE M CUBED' : 13221, + 'SQUARE M OHM' : 13249, + 'SQUARE M OVER S' : 13223, + 'SQUARE M OVER S SQUARED' : 13224, + 'SQUARE M SQUARED' : 13217, + 'SQUARE MA' : 13187, + 'SQUARE MAHHA' : 13125, + 'SQUARE MAIKURO' : 13123, + 'SQUARE MAIRU' : 13124, + 'SQUARE MANSYON' : 13127, + 'SQUARE MARUKU' : 13126, + 'SQUARE MB' : 13190, + 'SQUARE MB SMALL' : 13268, + 'SQUARE MEETORU' : 13133, + 'SQUARE MEGA' : 13131, + 'SQUARE MEGATON' : 13132, + 'SQUARE MG' : 13198, + 'SQUARE MHZ' : 13202, + 'SQUARE MIKURON' : 13128, + 'SQUARE MIL' : 13269, + 'SQUARE MIRI' : 13129, + 'SQUARE MIRIBAARU' : 13130, + 'SQUARE ML' : 13206, + 'SQUARE MM' : 13212, + 'SQUARE MM CUBED' : 13219, + 'SQUARE MM SQUARED' : 13215, + 'SQUARE MOL' : 13270, + 'SQUARE MPA' : 13227, + 'SQUARE MS' : 13235, + 'SQUARE MU A' : 13186, + 'SQUARE MU F' : 13196, + 'SQUARE MU G' : 13197, + 'SQUARE MU L' : 13205, + 'SQUARE MU M' : 13211, + 'SQUARE MU S' : 13234, + 'SQUARE MU V' : 13238, + 'SQUARE MU W' : 13244, + 'SQUARE MV' : 13239, + 'SQUARE MV MEGA' : 13241, + 'SQUARE MW' : 13245, + 'SQUARE MW MEGA' : 13247, + 'SQUARE NA' : 13185, + 'SQUARE NANO' : 13096, + 'SQUARE NF' : 13195, + 'SQUARE NM' : 13210, + 'SQUARE NOTTO' : 13097, + 'SQUARE NS' : 13233, + 'SQUARE NV' : 13237, + 'SQUARE NW' : 13243, + 'SQUARE ONSU' : 13065, + 'SQUARE OOMU' : 13066, + 'SQUARE ORIGINAL OF' : 8848, + 'SQUARE ORIGINAL OF OR EQUAL TO' : 8850, + 'SQUARE ORIGINAL OF OR NOT EQUAL TO' : 8933, + 'SQUARE OV' : 13173, + 'SQUARE PA' : 13225, + 'SQUARE PA AMPS' : 13184, + 'SQUARE PAASENTO' : 13099, + 'SQUARE PAATU' : 13100, + 'SQUARE PC' : 13174, + 'SQUARE PEEZI' : 13115, + 'SQUARE PENIHI' : 13112, + 'SQUARE PENSU' : 13114, + 'SQUARE PESO' : 13111, + 'SQUARE PF' : 13194, + 'SQUARE PH' : 13271, + 'SQUARE PIASUTORU' : 13102, + 'SQUARE PIKO' : 13104, + 'SQUARE PIKURU' : 13103, + 'SQUARE PM' : 13272, + 'SQUARE POINTO' : 13117, + 'SQUARE PONDO' : 13120, + 'SQUARE PPM' : 13273, + 'SQUARE PR' : 13274, + 'SQUARE PS' : 13232, + 'SQUARE PV' : 13236, + 'SQUARE PW' : 13242, + 'SQUARE RAD' : 13229, + 'SQUARE RAD OVER S' : 13230, + 'SQUARE RAD OVER S SQUARED' : 13231, + 'SQUARE REMU' : 13141, + 'SQUARE RENTOGEN' : 13142, + 'SQUARE RIGHT OPEN BOX OPERATOR' : 10958, + 'SQUARE RIRA' : 13138, + 'SQUARE RITTORU' : 13137, + 'SQUARE ROOT' : 8730, + 'SQUARE RUPII' : 13139, + 'SQUARE RUUBURU' : 13140, + 'SQUARE SAIKURU' : 13087, + 'SQUARE SANTIIMU' : 13088, + 'SQUARE SENTI' : 13090, + 'SQUARE SENTO' : 13091, + 'SQUARE SIRINGU' : 13089, + 'SQUARE SR' : 13275, + 'SQUARE SV' : 13276, + 'SQUARE THZ' : 13204, + 'SQUARE TON' : 13095, + 'SQUARE UON' : 13062, + 'SQUARE WATTO' : 13143, + 'SQUARE WB' : 13277, + 'SQUARE WITH CONTOURED OUTLINE' : 10720, + 'SQUARE WITH DIAGONAL CROSSHATCH FILL' : 9641, + 'SQUARE WITH HORIZONTAL FILL' : 9636, + 'SQUARE WITH LEFT HALF BLACK' : 9703, + 'SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK' : 9706, + 'SQUARE WITH ORTHOGONAL CROSSHATCH FILL' : 9638, + 'SQUARE WITH RIGHT HALF BLACK' : 9704, + 'SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK' : 9705, + 'SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL' : 9639, + 'SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL' : 9640, + 'SQUARE WITH VERTICAL FILL' : 9637, + 'SQUARE YAADO' : 13134, + 'SQUARE YAARU' : 13135, + 'SQUARE YUAN' : 13136, + 'SQUARED ASTERISK' : 10694, + 'SQUARED DOT OPERATOR' : 8865, + 'SQUARED FALLING DIAGONAL SLASH' : 10693, + 'SQUARED MINUS' : 8863, + 'SQUARED PLUS' : 8862, + 'SQUARED RISING DIAGONAL SLASH' : 10692, + 'SQUARED SMALL CIRCLE' : 10695, + 'SQUARED SQUARE' : 10696, + 'SQUARED TIMES' : 8864, + 'SQUAT BLACK RIGHTWARDS ARROW' : 10151, + 'STAR AND CRESCENT' : 9770, + 'STAR EQUALS' : 8795, + 'STAR OF DAVID' : 10017, + 'STAR OPERATOR' : 8902, + 'STRESS OUTLINED WHITE STAR' : 10025, + 'STRICTLY EQUIVALENT TO' : 8803, + 'SUBSCRIPT EIGHT' : 8328, + 'SUBSCRIPT EQUALS SIGN' : 8332, + 'SUBSCRIPT FIVE' : 8325, + 'SUBSCRIPT FOUR' : 8324, + 'SUBSCRIPT LEFT PARENTHESIS' : 8333, + 'SUBSCRIPT MINUS' : 8331, + 'SUBSCRIPT NINE' : 8329, + 'SUBSCRIPT ONE' : 8321, + 'SUBSCRIPT PLUS SIGN' : 8330, + 'SUBSCRIPT RIGHT PARENTHESIS' : 8334, + 'SUBSCRIPT SEVEN' : 8327, + 'SUBSCRIPT SIX' : 8326, + 'SUBSCRIPT THREE' : 8323, + 'SUBSCRIPT TWO' : 8322, + 'SUBSCRIPT ZERO' : 8320, + 'SUBSET ABOVE RIGHTWARDS ARROW' : 10617, + 'SUBSET ABOVE SUBSET' : 10965, + 'SUBSET ABOVE SUPERSET' : 10963, + 'SUBSET OF' : 8834, + 'SUBSET OF ABOVE ALMOST EQUAL TO' : 10953, + 'SUBSET OF ABOVE EQUALS SIGN' : 10949, + 'SUBSET OF ABOVE NOT EQUAL TO' : 10955, + 'SUBSET OF ABOVE TILDE OPERATOR' : 10951, + 'SUBSET OF OR EQUAL TO' : 8838, + 'SUBSET OF OR EQUAL TO WITH DOT ABOVE' : 10947, + 'SUBSET OF WITH NOT EQUAL TO' : 8842, + 'SUBSET WITH DOT' : 10941, + 'SUBSET WITH MULTIPLICATION SIGN BELOW' : 10945, + 'SUBSET WITH PLUS SIGN BELOW' : 10943, + 'SUCCEEDS' : 8827, + 'SUCCEEDS ABOVE ALMOST EQUAL TO' : 10936, + 'SUCCEEDS ABOVE EQUALS SIGN' : 10932, + 'SUCCEEDS ABOVE NOT ALMOST EQUAL TO' : 10938, + 'SUCCEEDS ABOVE NOT EQUAL TO' : 10934, + 'SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN' : 10928, + 'SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO' : 10930, + 'SUCCEEDS BUT NOT EQUIVALENT TO' : 8937, + 'SUCCEEDS OR EQUAL TO' : 8829, + 'SUCCEEDS OR EQUIVALENT TO' : 8831, + 'SUCCEEDS UNDER RELATION' : 8881, + 'SUMMATION BOTTOM' : 9139, + 'SUMMATION TOP' : 9138, + 'SUMMATION WITH INTEGRAL' : 10763, + 'SUN' : 9737, + 'SUPERSCRIPT EIGHT' : 8312, + 'SUPERSCRIPT EQUALS SIGN' : 8316, + 'SUPERSCRIPT FIVE' : 8309, + 'SUPERSCRIPT FOUR' : 8308, + 'SUPERSCRIPT LATIN SMALL LETTER I' : 8305, + 'SUPERSCRIPT LATIN SMALL LETTER N' : 8319, + 'SUPERSCRIPT LEFT PARENTHESIS' : 8317, + 'SUPERSCRIPT MINUS' : 8315, + 'SUPERSCRIPT NINE' : 8313, + 'SUPERSCRIPT ONE' : 185, + 'SUPERSCRIPT PLUS SIGN' : 8314, + 'SUPERSCRIPT RIGHT PARENTHESIS' : 8318, + 'SUPERSCRIPT SEVEN' : 8311, + 'SUPERSCRIPT SIX' : 8310, + 'SUPERSCRIPT THREE' : 179, + 'SUPERSCRIPT TWO' : 178, + 'SUPERSCRIPT ZERO' : 8304, + 'SUPERSET ABOVE LEFTWARDS ARROW' : 10619, + 'SUPERSET ABOVE SUBSET' : 10964, + 'SUPERSET ABOVE SUPERSET' : 10966, + 'SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET' : 10968, + 'SUPERSET BESIDE SUBSET' : 10967, + 'SUPERSET OF' : 8835, + 'SUPERSET OF ABOVE ALMOST EQUAL TO' : 10954, + 'SUPERSET OF ABOVE EQUALS SIGN' : 10950, + 'SUPERSET OF ABOVE NOT EQUAL TO' : 10956, + 'SUPERSET OF ABOVE TILDE OPERATOR' : 10952, + 'SUPERSET OF OR EQUAL TO' : 8839, + 'SUPERSET OF OR EQUAL TO WITH DOT ABOVE' : 10948, + 'SUPERSET OF WITH NOT EQUAL TO' : 8843, + 'SUPERSET WITH DOT' : 10942, + 'SUPERSET WITH MULTIPLICATION SIGN BELOW' : 10946, + 'SUPERSET WITH PLUS SIGN BELOW' : 10944, + 'SURFACE INTEGRAL' : 8751, + 'SYMBOL FOR ACKNOWLEDGE' : 9222, + 'SYMBOL FOR BACKSPACE' : 9224, + 'SYMBOL FOR BELL' : 9223, + 'SYMBOL FOR CANCEL' : 9240, + 'SYMBOL FOR CARRIAGE RETURN' : 9229, + 'SYMBOL FOR DATA LINK ESCAPE' : 9232, + 'SYMBOL FOR DELETE' : 9249, + 'SYMBOL FOR DELETE FORM TWO' : 9253, + 'SYMBOL FOR DEVICE CONTROL FOUR' : 9236, + 'SYMBOL FOR DEVICE CONTROL ONE' : 9233, + 'SYMBOL FOR DEVICE CONTROL THREE' : 9235, + 'SYMBOL FOR DEVICE CONTROL TWO' : 9234, + 'SYMBOL FOR END OF MEDIUM' : 9241, + 'SYMBOL FOR END OF TEXT' : 9219, + 'SYMBOL FOR END OF TRANSMISSION' : 9220, + 'SYMBOL FOR END OF TRANSMISSION BLOCK' : 9239, + 'SYMBOL FOR ENQUIRY' : 9221, + 'SYMBOL FOR ESCAPE' : 9243, + 'SYMBOL FOR FILE SEPARATOR' : 9244, + 'SYMBOL FOR FORM FEED' : 9228, + 'SYMBOL FOR GROUP SEPARATOR' : 9245, + 'SYMBOL FOR HORIZONTAL TABULATION' : 9225, + 'SYMBOL FOR LINE FEED' : 9226, + 'SYMBOL FOR NEGATIVE ACKNOWLEDGE' : 9237, + 'SYMBOL FOR NEWLINE' : 9252, + 'SYMBOL FOR NULL' : 9216, + 'SYMBOL FOR RECORD SEPARATOR' : 9246, + 'SYMBOL FOR SHIFT IN' : 9231, + 'SYMBOL FOR SHIFT OUT' : 9230, + 'SYMBOL FOR SPACE' : 9248, + 'SYMBOL FOR START OF HEADING' : 9217, + 'SYMBOL FOR START OF TEXT' : 9218, + 'SYMBOL FOR SUBSTITUTE' : 9242, + 'SYMBOL FOR SUBSTITUTE FORM TWO' : 9254, + 'SYMBOL FOR SYNCHRONOUS IDLE' : 9238, + 'SYMBOL FOR UNIT SEPARATOR' : 9247, + 'SYMBOL FOR VERTICAL TABULATION' : 9227, + 'SYMMETRY' : 9007, + 'SYRIAC ABBREVIATION MARK' : 1807, + 'SYRIAC BARREKH' : 1866, + 'SYRIAC COLON SKEWED LEFT' : 1798, + 'SYRIAC COLON SKEWED RIGHT' : 1799, + 'SYRIAC CONTRACTION' : 1802, + 'SYRIAC DOTTED ZLAMA ANGULAR' : 1849, + 'SYRIAC DOTTED ZLAMA HORIZONTAL' : 1848, + 'SYRIAC END OF PARAGRAPH' : 1792, + 'SYRIAC ESASA ABOVE' : 1853, + 'SYRIAC ESASA BELOW' : 1854, + 'SYRIAC FEMININE DOT' : 1856, + 'SYRIAC HARKLEAN ASTERISCUS' : 1805, + 'SYRIAC HARKLEAN METOBELUS' : 1804, + 'SYRIAC HARKLEAN OBELUS' : 1803, + 'SYRIAC HBASA ABOVE' : 1850, + 'SYRIAC HBASA BELOW' : 1851, + 'SYRIAC HBASA-ESASA DOTTED' : 1852, + 'SYRIAC HORIZONTAL COLON' : 1797, + 'SYRIAC LETTER ALAPH' : 1808, + 'SYRIAC LETTER BETH' : 1810, + 'SYRIAC LETTER DALATH' : 1813, + 'SYRIAC LETTER DOTLESS DALATH RISH' : 1814, + 'SYRIAC LETTER E' : 1829, + 'SYRIAC LETTER FINAL SEMKATH' : 1828, + 'SYRIAC LETTER GAMAL' : 1811, + 'SYRIAC LETTER GAMAL GARSHUNI' : 1812, + 'SYRIAC LETTER HE' : 1815, + 'SYRIAC LETTER HETH' : 1818, + 'SYRIAC LETTER KAPH' : 1823, + 'SYRIAC LETTER LAMADH' : 1824, + 'SYRIAC LETTER MIM' : 1825, + 'SYRIAC LETTER NUN' : 1826, + 'SYRIAC LETTER PE' : 1830, + 'SYRIAC LETTER QAPH' : 1833, + 'SYRIAC LETTER REVERSED PE' : 1831, + 'SYRIAC LETTER RISH' : 1834, + 'SYRIAC LETTER SADHE' : 1832, + 'SYRIAC LETTER SEMKATH' : 1827, + 'SYRIAC LETTER SHIN' : 1835, + 'SYRIAC LETTER SUPERSCRIPT ALAPH' : 1809, + 'SYRIAC LETTER TAW' : 1836, + 'SYRIAC LETTER TETH' : 1819, + 'SYRIAC LETTER TETH GARSHUNI' : 1820, + 'SYRIAC LETTER WAW' : 1816, + 'SYRIAC LETTER YUDH' : 1821, + 'SYRIAC LETTER YUDH HE' : 1822, + 'SYRIAC LETTER ZAIN' : 1817, + 'SYRIAC MUSIC' : 1865, + 'SYRIAC OBLIQUE LINE ABOVE' : 1863, + 'SYRIAC OBLIQUE LINE BELOW' : 1864, + 'SYRIAC PTHAHA ABOVE' : 1840, + 'SYRIAC PTHAHA BELOW' : 1841, + 'SYRIAC PTHAHA DOTTED' : 1842, + 'SYRIAC QUSHSHAYA' : 1857, + 'SYRIAC RBASA ABOVE' : 1846, + 'SYRIAC RBASA BELOW' : 1847, + 'SYRIAC RUKKAKHA' : 1858, + 'SYRIAC RWAHA' : 1855, + 'SYRIAC SUBLINEAR COLON' : 1796, + 'SYRIAC SUBLINEAR COLON SKEWED RIGHT' : 1801, + 'SYRIAC SUBLINEAR FULL STOP' : 1794, + 'SYRIAC SUPRALINEAR COLON' : 1795, + 'SYRIAC SUPRALINEAR COLON SKEWED LEFT' : 1800, + 'SYRIAC SUPRALINEAR FULL STOP' : 1793, + 'SYRIAC THREE DOTS ABOVE' : 1861, + 'SYRIAC THREE DOTS BELOW' : 1862, + 'SYRIAC TWO VERTICAL DOTS ABOVE' : 1859, + 'SYRIAC TWO VERTICAL DOTS BELOW' : 1860, + 'SYRIAC ZQAPHA ABOVE' : 1843, + 'SYRIAC ZQAPHA BELOW' : 1844, + 'SYRIAC ZQAPHA DOTTED' : 1845, + 'TAG AMPERSAND' : 917542, + 'TAG APOSTROPHE' : 917543, + 'TAG ASTERISK' : 917546, + 'TAG CIRCUMFLEX ACCENT' : 917598, + 'TAG COLON' : 917562, + 'TAG COMMA' : 917548, + 'TAG COMMERCIAL AT' : 917568, + 'TAG DIGIT EIGHT' : 917560, + 'TAG DIGIT FIVE' : 917557, + 'TAG DIGIT FOUR' : 917556, + 'TAG DIGIT NINE' : 917561, + 'TAG DIGIT ONE' : 917553, + 'TAG DIGIT SEVEN' : 917559, + 'TAG DIGIT SIX' : 917558, + 'TAG DIGIT THREE' : 917555, + 'TAG DIGIT TWO' : 917554, + 'TAG DIGIT ZERO' : 917552, + 'TAG DOLLAR SIGN' : 917540, + 'TAG EQUALS SIGN' : 917565, + 'TAG EXCLAMATION MARK' : 917537, + 'TAG FULL STOP' : 917550, + 'TAG GRAVE ACCENT' : 917600, + 'TAG GREATER-THAN SIGN' : 917566, + 'TAG HYPHEN-MINUS' : 917549, + 'TAG LATIN CAPITAL LETTER A' : 917569, + 'TAG LATIN CAPITAL LETTER B' : 917570, + 'TAG LATIN CAPITAL LETTER C' : 917571, + 'TAG LATIN CAPITAL LETTER D' : 917572, + 'TAG LATIN CAPITAL LETTER E' : 917573, + 'TAG LATIN CAPITAL LETTER F' : 917574, + 'TAG LATIN CAPITAL LETTER G' : 917575, + 'TAG LATIN CAPITAL LETTER H' : 917576, + 'TAG LATIN CAPITAL LETTER I' : 917577, + 'TAG LATIN CAPITAL LETTER J' : 917578, + 'TAG LATIN CAPITAL LETTER K' : 917579, + 'TAG LATIN CAPITAL LETTER L' : 917580, + 'TAG LATIN CAPITAL LETTER M' : 917581, + 'TAG LATIN CAPITAL LETTER N' : 917582, + 'TAG LATIN CAPITAL LETTER O' : 917583, + 'TAG LATIN CAPITAL LETTER P' : 917584, + 'TAG LATIN CAPITAL LETTER Q' : 917585, + 'TAG LATIN CAPITAL LETTER R' : 917586, + 'TAG LATIN CAPITAL LETTER S' : 917587, + 'TAG LATIN CAPITAL LETTER T' : 917588, + 'TAG LATIN CAPITAL LETTER U' : 917589, + 'TAG LATIN CAPITAL LETTER V' : 917590, + 'TAG LATIN CAPITAL LETTER W' : 917591, + 'TAG LATIN CAPITAL LETTER X' : 917592, + 'TAG LATIN CAPITAL LETTER Y' : 917593, + 'TAG LATIN CAPITAL LETTER Z' : 917594, + 'TAG LATIN SMALL LETTER A' : 917601, + 'TAG LATIN SMALL LETTER B' : 917602, + 'TAG LATIN SMALL LETTER C' : 917603, + 'TAG LATIN SMALL LETTER D' : 917604, + 'TAG LATIN SMALL LETTER E' : 917605, + 'TAG LATIN SMALL LETTER F' : 917606, + 'TAG LATIN SMALL LETTER G' : 917607, + 'TAG LATIN SMALL LETTER H' : 917608, + 'TAG LATIN SMALL LETTER I' : 917609, + 'TAG LATIN SMALL LETTER J' : 917610, + 'TAG LATIN SMALL LETTER K' : 917611, + 'TAG LATIN SMALL LETTER L' : 917612, + 'TAG LATIN SMALL LETTER M' : 917613, + 'TAG LATIN SMALL LETTER N' : 917614, + 'TAG LATIN SMALL LETTER O' : 917615, + 'TAG LATIN SMALL LETTER P' : 917616, + 'TAG LATIN SMALL LETTER Q' : 917617, + 'TAG LATIN SMALL LETTER R' : 917618, + 'TAG LATIN SMALL LETTER S' : 917619, + 'TAG LATIN SMALL LETTER T' : 917620, + 'TAG LATIN SMALL LETTER U' : 917621, + 'TAG LATIN SMALL LETTER V' : 917622, + 'TAG LATIN SMALL LETTER W' : 917623, + 'TAG LATIN SMALL LETTER X' : 917624, + 'TAG LATIN SMALL LETTER Y' : 917625, + 'TAG LATIN SMALL LETTER Z' : 917626, + 'TAG LEFT CURLY BRACKET' : 917627, + 'TAG LEFT PARENTHESIS' : 917544, + 'TAG LEFT SQUARE BRACKET' : 917595, + 'TAG LESS-THAN SIGN' : 917564, + 'TAG LOW LINE' : 917599, + 'TAG NUMBER SIGN' : 917539, + 'TAG PERCENT SIGN' : 917541, + 'TAG PLUS SIGN' : 917547, + 'TAG QUESTION MARK' : 917567, + 'TAG QUOTATION MARK' : 917538, + 'TAG REVERSE SOLIDUS' : 917596, + 'TAG RIGHT CURLY BRACKET' : 917629, + 'TAG RIGHT PARENTHESIS' : 917545, + 'TAG RIGHT SQUARE BRACKET' : 917597, + 'TAG SEMICOLON' : 917563, + 'TAG SOLIDUS' : 917551, + 'TAG SPACE' : 917536, + 'TAG TILDE' : 917630, + 'TAG VERTICAL LINE' : 917628, + 'TAGALOG LETTER A' : 5888, + 'TAGALOG LETTER BA' : 5898, + 'TAGALOG LETTER DA' : 5895, + 'TAGALOG LETTER GA' : 5892, + 'TAGALOG LETTER HA' : 5905, + 'TAGALOG LETTER I' : 5889, + 'TAGALOG LETTER KA' : 5891, + 'TAGALOG LETTER LA' : 5902, + 'TAGALOG LETTER MA' : 5899, + 'TAGALOG LETTER NA' : 5896, + 'TAGALOG LETTER NGA' : 5893, + 'TAGALOG LETTER PA' : 5897, + 'TAGALOG LETTER SA' : 5904, + 'TAGALOG LETTER TA' : 5894, + 'TAGALOG LETTER U' : 5890, + 'TAGALOG LETTER WA' : 5903, + 'TAGALOG LETTER YA' : 5900, + 'TAGALOG SIGN VIRAMA' : 5908, + 'TAGALOG VOWEL SIGN I' : 5906, + 'TAGALOG VOWEL SIGN U' : 5907, + 'TAGBANWA LETTER A' : 5984, + 'TAGBANWA LETTER BA' : 5994, + 'TAGBANWA LETTER DA' : 5991, + 'TAGBANWA LETTER GA' : 5988, + 'TAGBANWA LETTER I' : 5985, + 'TAGBANWA LETTER KA' : 5987, + 'TAGBANWA LETTER LA' : 5998, + 'TAGBANWA LETTER MA' : 5995, + 'TAGBANWA LETTER NA' : 5992, + 'TAGBANWA LETTER NGA' : 5989, + 'TAGBANWA LETTER PA' : 5993, + 'TAGBANWA LETTER SA' : 6000, + 'TAGBANWA LETTER TA' : 5990, + 'TAGBANWA LETTER U' : 5986, + 'TAGBANWA LETTER WA' : 5999, + 'TAGBANWA LETTER YA' : 5996, + 'TAGBANWA VOWEL SIGN I' : 6002, + 'TAGBANWA VOWEL SIGN U' : 6003, + 'TAMIL AU LENGTH MARK' : 3031, + 'TAMIL DIGIT EIGHT' : 3054, + 'TAMIL DIGIT FIVE' : 3051, + 'TAMIL DIGIT FOUR' : 3050, + 'TAMIL DIGIT NINE' : 3055, + 'TAMIL DIGIT ONE' : 3047, + 'TAMIL DIGIT SEVEN' : 3053, + 'TAMIL DIGIT SIX' : 3052, + 'TAMIL DIGIT THREE' : 3049, + 'TAMIL DIGIT TWO' : 3048, + 'TAMIL LETTER A' : 2949, + 'TAMIL LETTER AA' : 2950, + 'TAMIL LETTER AI' : 2960, + 'TAMIL LETTER AU' : 2964, + 'TAMIL LETTER CA' : 2970, + 'TAMIL LETTER E' : 2958, + 'TAMIL LETTER EE' : 2959, + 'TAMIL LETTER HA' : 3001, + 'TAMIL LETTER I' : 2951, + 'TAMIL LETTER II' : 2952, + 'TAMIL LETTER JA' : 2972, + 'TAMIL LETTER KA' : 2965, + 'TAMIL LETTER LA' : 2994, + 'TAMIL LETTER LLA' : 2995, + 'TAMIL LETTER LLLA' : 2996, + 'TAMIL LETTER MA' : 2990, + 'TAMIL LETTER NA' : 2984, + 'TAMIL LETTER NGA' : 2969, + 'TAMIL LETTER NNA' : 2979, + 'TAMIL LETTER NNNA' : 2985, + 'TAMIL LETTER NYA' : 2974, + 'TAMIL LETTER O' : 2962, + 'TAMIL LETTER OO' : 2963, + 'TAMIL LETTER PA' : 2986, + 'TAMIL LETTER RA' : 2992, + 'TAMIL LETTER RRA' : 2993, + 'TAMIL LETTER SA' : 3000, + 'TAMIL LETTER SSA' : 2999, + 'TAMIL LETTER TA' : 2980, + 'TAMIL LETTER TTA' : 2975, + 'TAMIL LETTER U' : 2953, + 'TAMIL LETTER UU' : 2954, + 'TAMIL LETTER VA' : 2997, + 'TAMIL LETTER YA' : 2991, + 'TAMIL NUMBER ONE HUNDRED' : 3057, + 'TAMIL NUMBER ONE THOUSAND' : 3058, + 'TAMIL NUMBER TEN' : 3056, + 'TAMIL SIGN ANUSVARA' : 2946, + 'TAMIL SIGN VIRAMA' : 3021, + 'TAMIL SIGN VISARGA' : 2947, + 'TAMIL VOWEL SIGN AA' : 3006, + 'TAMIL VOWEL SIGN AI' : 3016, + 'TAMIL VOWEL SIGN AU' : 3020, + 'TAMIL VOWEL SIGN E' : 3014, + 'TAMIL VOWEL SIGN EE' : 3015, + 'TAMIL VOWEL SIGN I' : 3007, + 'TAMIL VOWEL SIGN II' : 3008, + 'TAMIL VOWEL SIGN O' : 3018, + 'TAMIL VOWEL SIGN OO' : 3019, + 'TAMIL VOWEL SIGN U' : 3009, + 'TAMIL VOWEL SIGN UU' : 3010, + 'TAPE DRIVE' : 9991, + 'TAURUS' : 9801, + 'TEARDROP-BARBED RIGHTWARDS ARROW' : 10170, + 'TEARDROP-SPOKED ASTERISK' : 10043, + 'TELEPHONE LOCATION SIGN' : 9990, + 'TELEPHONE RECORDER' : 8981, + 'TELEPHONE SIGN' : 8481, + 'TELUGU AI LENGTH MARK' : 3158, + 'TELUGU DIGIT EIGHT' : 3182, + 'TELUGU DIGIT FIVE' : 3179, + 'TELUGU DIGIT FOUR' : 3178, + 'TELUGU DIGIT NINE' : 3183, + 'TELUGU DIGIT ONE' : 3175, + 'TELUGU DIGIT SEVEN' : 3181, + 'TELUGU DIGIT SIX' : 3180, + 'TELUGU DIGIT THREE' : 3177, + 'TELUGU DIGIT TWO' : 3176, + 'TELUGU DIGIT ZERO' : 3174, + 'TELUGU LENGTH MARK' : 3157, + 'TELUGU LETTER A' : 3077, + 'TELUGU LETTER AA' : 3078, + 'TELUGU LETTER AI' : 3088, + 'TELUGU LETTER AU' : 3092, + 'TELUGU LETTER BA' : 3116, + 'TELUGU LETTER BHA' : 3117, + 'TELUGU LETTER CA' : 3098, + 'TELUGU LETTER CHA' : 3099, + 'TELUGU LETTER DA' : 3110, + 'TELUGU LETTER DDA' : 3105, + 'TELUGU LETTER DDHA' : 3106, + 'TELUGU LETTER DHA' : 3111, + 'TELUGU LETTER E' : 3086, + 'TELUGU LETTER EE' : 3087, + 'TELUGU LETTER GA' : 3095, + 'TELUGU LETTER GHA' : 3096, + 'TELUGU LETTER HA' : 3129, + 'TELUGU LETTER I' : 3079, + 'TELUGU LETTER II' : 3080, + 'TELUGU LETTER JA' : 3100, + 'TELUGU LETTER JHA' : 3101, + 'TELUGU LETTER KA' : 3093, + 'TELUGU LETTER KHA' : 3094, + 'TELUGU LETTER LA' : 3122, + 'TELUGU LETTER LLA' : 3123, + 'TELUGU LETTER MA' : 3118, + 'TELUGU LETTER NA' : 3112, + 'TELUGU LETTER NGA' : 3097, + 'TELUGU LETTER NNA' : 3107, + 'TELUGU LETTER NYA' : 3102, + 'TELUGU LETTER O' : 3090, + 'TELUGU LETTER OO' : 3091, + 'TELUGU LETTER PA' : 3114, + 'TELUGU LETTER PHA' : 3115, + 'TELUGU LETTER RA' : 3120, + 'TELUGU LETTER RRA' : 3121, + 'TELUGU LETTER SA' : 3128, + 'TELUGU LETTER SHA' : 3126, + 'TELUGU LETTER SSA' : 3127, + 'TELUGU LETTER TA' : 3108, + 'TELUGU LETTER THA' : 3109, + 'TELUGU LETTER TTA' : 3103, + 'TELUGU LETTER TTHA' : 3104, + 'TELUGU LETTER U' : 3081, + 'TELUGU LETTER UU' : 3082, + 'TELUGU LETTER VA' : 3125, + 'TELUGU LETTER VOCALIC L' : 3084, + 'TELUGU LETTER VOCALIC LL' : 3169, + 'TELUGU LETTER VOCALIC R' : 3083, + 'TELUGU LETTER VOCALIC RR' : 3168, + 'TELUGU LETTER YA' : 3119, + 'TELUGU SIGN ANUSVARA' : 3074, + 'TELUGU SIGN CANDRABINDU' : 3073, + 'TELUGU SIGN VIRAMA' : 3149, + 'TELUGU SIGN VISARGA' : 3075, + 'TELUGU VOWEL SIGN AA' : 3134, + 'TELUGU VOWEL SIGN AI' : 3144, + 'TELUGU VOWEL SIGN AU' : 3148, + 'TELUGU VOWEL SIGN E' : 3142, + 'TELUGU VOWEL SIGN EE' : 3143, + 'TELUGU VOWEL SIGN I' : 3135, + 'TELUGU VOWEL SIGN II' : 3136, + 'TELUGU VOWEL SIGN O' : 3146, + 'TELUGU VOWEL SIGN OO' : 3147, + 'TELUGU VOWEL SIGN U' : 3137, + 'TELUGU VOWEL SIGN UU' : 3138, + 'TELUGU VOWEL SIGN VOCALIC R' : 3139, + 'TELUGU VOWEL SIGN VOCALIC RR' : 3140, + 'THAANA AABAAFILI' : 1959, + 'THAANA ABAFILI' : 1958, + 'THAANA EBEFILI' : 1964, + 'THAANA EEBEEFILI' : 1961, + 'THAANA EYBEYFILI' : 1965, + 'THAANA IBIFILI' : 1960, + 'THAANA LETTER AINU' : 1954, + 'THAANA LETTER ALIFU' : 1927, + 'THAANA LETTER BAA' : 1924, + 'THAANA LETTER CHAVIYANI' : 1943, + 'THAANA LETTER DAADHU' : 1951, + 'THAANA LETTER DAVIYANI' : 1937, + 'THAANA LETTER DHAALU' : 1931, + 'THAANA LETTER FAAFU' : 1930, + 'THAANA LETTER GAAFU' : 1934, + 'THAANA LETTER GHAINU' : 1955, + 'THAANA LETTER GNAVIYANI' : 1935, + 'THAANA LETTER HAA' : 1920, + 'THAANA LETTER HHAA' : 1945, + 'THAANA LETTER JAVIYANI' : 1942, + 'THAANA LETTER KAAFU' : 1926, + 'THAANA LETTER KHAA' : 1946, + 'THAANA LETTER LAAMU' : 1933, + 'THAANA LETTER LHAVIYANI' : 1925, + 'THAANA LETTER MEEMU' : 1929, + 'THAANA LETTER NAA' : 1969, + 'THAANA LETTER NOONU' : 1922, + 'THAANA LETTER PAVIYANI' : 1941, + 'THAANA LETTER QAAFU' : 1956, + 'THAANA LETTER RAA' : 1923, + 'THAANA LETTER SAADHU' : 1950, + 'THAANA LETTER SEENU' : 1936, + 'THAANA LETTER SHAVIYANI' : 1921, + 'THAANA LETTER SHEENU' : 1949, + 'THAANA LETTER TAVIYANI' : 1939, + 'THAANA LETTER THAA' : 1932, + 'THAANA LETTER THAALU' : 1947, + 'THAANA LETTER TO' : 1952, + 'THAANA LETTER TTAA' : 1944, + 'THAANA LETTER VAAVU' : 1928, + 'THAANA LETTER WAAVU' : 1957, + 'THAANA LETTER YAA' : 1940, + 'THAANA LETTER ZAA' : 1948, + 'THAANA LETTER ZAVIYANI' : 1938, + 'THAANA LETTER ZO' : 1953, + 'THAANA OABOAFILI' : 1967, + 'THAANA OBOFILI' : 1966, + 'THAANA OOBOOFILI' : 1963, + 'THAANA SUKUN' : 1968, + 'THAANA UBUFILI' : 1962, + 'THAI CHARACTER ANGKHANKHU' : 3674, + 'THAI CHARACTER BO BAIMAI' : 3610, + 'THAI CHARACTER CHO CHAN' : 3592, + 'THAI CHARACTER CHO CHANG' : 3594, + 'THAI CHARACTER CHO CHING' : 3593, + 'THAI CHARACTER CHO CHOE' : 3596, + 'THAI CHARACTER DO CHADA' : 3598, + 'THAI CHARACTER DO DEK' : 3604, + 'THAI CHARACTER FO FA' : 3613, + 'THAI CHARACTER FO FAN' : 3615, + 'THAI CHARACTER FONGMAN' : 3663, + 'THAI CHARACTER HO HIP' : 3627, + 'THAI CHARACTER HO NOKHUK' : 3630, + 'THAI CHARACTER KHO KHAI' : 3586, + 'THAI CHARACTER KHO KHON' : 3589, + 'THAI CHARACTER KHO KHUAT' : 3587, + 'THAI CHARACTER KHO KHWAI' : 3588, + 'THAI CHARACTER KHO RAKHANG' : 3590, + 'THAI CHARACTER KHOMUT' : 3675, + 'THAI CHARACTER KO KAI' : 3585, + 'THAI CHARACTER LAKKHANGYAO' : 3653, + 'THAI CHARACTER LO CHULA' : 3628, + 'THAI CHARACTER LO LING' : 3621, + 'THAI CHARACTER LU' : 3622, + 'THAI CHARACTER MAI CHATTAWA' : 3659, + 'THAI CHARACTER MAI EK' : 3656, + 'THAI CHARACTER MAI HAN-AKAT' : 3633, + 'THAI CHARACTER MAI THO' : 3657, + 'THAI CHARACTER MAI TRI' : 3658, + 'THAI CHARACTER MAITAIKHU' : 3655, + 'THAI CHARACTER MAIYAMOK' : 3654, + 'THAI CHARACTER MO MA' : 3617, + 'THAI CHARACTER NGO NGU' : 3591, + 'THAI CHARACTER NIKHAHIT' : 3661, + 'THAI CHARACTER NO NEN' : 3603, + 'THAI CHARACTER NO NU' : 3609, + 'THAI CHARACTER O ANG' : 3629, + 'THAI CHARACTER PAIYANNOI' : 3631, + 'THAI CHARACTER PHINTHU' : 3642, + 'THAI CHARACTER PHO PHAN' : 3614, + 'THAI CHARACTER PHO PHUNG' : 3612, + 'THAI CHARACTER PHO SAMPHAO' : 3616, + 'THAI CHARACTER PO PLA' : 3611, + 'THAI CHARACTER RO RUA' : 3619, + 'THAI CHARACTER RU' : 3620, + 'THAI CHARACTER SARA A' : 3632, + 'THAI CHARACTER SARA AA' : 3634, + 'THAI CHARACTER SARA AE' : 3649, + 'THAI CHARACTER SARA AI MAIMALAI' : 3652, + 'THAI CHARACTER SARA AI MAIMUAN' : 3651, + 'THAI CHARACTER SARA AM' : 3635, + 'THAI CHARACTER SARA E' : 3648, + 'THAI CHARACTER SARA I' : 3636, + 'THAI CHARACTER SARA II' : 3637, + 'THAI CHARACTER SARA O' : 3650, + 'THAI CHARACTER SARA U' : 3640, + 'THAI CHARACTER SARA UE' : 3638, + 'THAI CHARACTER SARA UEE' : 3639, + 'THAI CHARACTER SARA UU' : 3641, + 'THAI CHARACTER SO RUSI' : 3625, + 'THAI CHARACTER SO SALA' : 3624, + 'THAI CHARACTER SO SO' : 3595, + 'THAI CHARACTER SO SUA' : 3626, + 'THAI CHARACTER THANTHAKHAT' : 3660, + 'THAI CHARACTER THO NANGMONTHO' : 3601, + 'THAI CHARACTER THO PHUTHAO' : 3602, + 'THAI CHARACTER THO THAHAN' : 3607, + 'THAI CHARACTER THO THAN' : 3600, + 'THAI CHARACTER THO THONG' : 3608, + 'THAI CHARACTER THO THUNG' : 3606, + 'THAI CHARACTER TO PATAK' : 3599, + 'THAI CHARACTER TO TAO' : 3605, + 'THAI CHARACTER WO WAEN' : 3623, + 'THAI CHARACTER YAMAKKAN' : 3662, + 'THAI CHARACTER YO YAK' : 3618, + 'THAI CHARACTER YO YING' : 3597, + 'THAI CURRENCY SYMBOL BAHT' : 3647, + 'THAI DIGIT EIGHT' : 3672, + 'THAI DIGIT FIVE' : 3669, + 'THAI DIGIT FOUR' : 3668, + 'THAI DIGIT NINE' : 3673, + 'THAI DIGIT ONE' : 3665, + 'THAI DIGIT SEVEN' : 3671, + 'THAI DIGIT SIX' : 3670, + 'THAI DIGIT THREE' : 3667, + 'THAI DIGIT TWO' : 3666, + 'THAI DIGIT ZERO' : 3664, + 'THERE DOES NOT EXIST' : 8708, + 'THERE EXISTS' : 8707, + 'THEREFORE' : 8756, + 'THERMODYNAMIC' : 10727, + 'THIN SPACE' : 8201, + 'THREE CONSECUTIVE EQUALS SIGNS' : 10870, + 'THREE RIGHTWARDS ARROWS' : 8694, + 'THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD' : 10147, + 'THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD' : 10146, + 'THREE-PER-EM SPACE' : 8196, + 'THUNDERSTORM' : 9736, + 'TIBETAN ASTROLOGICAL SIGN -KHYUD PA' : 3864, + 'TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS' : 3865, + 'TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS' : 3863, + 'TIBETAN CANTILLATION SIGN CANG TE-U' : 4034, + 'TIBETAN CANTILLATION SIGN HEAVY BEAT' : 4032, + 'TIBETAN CANTILLATION SIGN LIGHT BEAT' : 4033, + 'TIBETAN CANTILLATION SIGN SBUB -CHAL' : 4035, + 'TIBETAN DIGIT EIGHT' : 3880, + 'TIBETAN DIGIT FIVE' : 3877, + 'TIBETAN DIGIT FOUR' : 3876, + 'TIBETAN DIGIT HALF EIGHT' : 3889, + 'TIBETAN DIGIT HALF FIVE' : 3886, + 'TIBETAN DIGIT HALF FOUR' : 3885, + 'TIBETAN DIGIT HALF NINE' : 3890, + 'TIBETAN DIGIT HALF ONE' : 3882, + 'TIBETAN DIGIT HALF SEVEN' : 3888, + 'TIBETAN DIGIT HALF SIX' : 3887, + 'TIBETAN DIGIT HALF THREE' : 3884, + 'TIBETAN DIGIT HALF TWO' : 3883, + 'TIBETAN DIGIT HALF ZERO' : 3891, + 'TIBETAN DIGIT NINE' : 3881, + 'TIBETAN DIGIT ONE' : 3873, + 'TIBETAN DIGIT SEVEN' : 3879, + 'TIBETAN DIGIT SIX' : 3878, + 'TIBETAN DIGIT THREE' : 3875, + 'TIBETAN DIGIT TWO' : 3874, + 'TIBETAN DIGIT ZERO' : 3872, + 'TIBETAN KU RU KHA' : 4030, + 'TIBETAN KU RU KHA BZHI MIG CAN' : 4031, + 'TIBETAN LETTER -A' : 3936, + 'TIBETAN LETTER A' : 3944, + 'TIBETAN LETTER BA' : 3926, + 'TIBETAN LETTER BHA' : 3927, + 'TIBETAN LETTER CA' : 3909, + 'TIBETAN LETTER CHA' : 3910, + 'TIBETAN LETTER DA' : 3921, + 'TIBETAN LETTER DDA' : 3916, + 'TIBETAN LETTER DDHA' : 3917, + 'TIBETAN LETTER DHA' : 3922, + 'TIBETAN LETTER DZA' : 3931, + 'TIBETAN LETTER DZHA' : 3932, + 'TIBETAN LETTER FIXED-FORM RA' : 3946, + 'TIBETAN LETTER GA' : 3906, + 'TIBETAN LETTER GHA' : 3907, + 'TIBETAN LETTER HA' : 3943, + 'TIBETAN LETTER JA' : 3911, + 'TIBETAN LETTER KA' : 3904, + 'TIBETAN LETTER KHA' : 3905, + 'TIBETAN LETTER KSSA' : 3945, + 'TIBETAN LETTER LA' : 3939, + 'TIBETAN LETTER MA' : 3928, + 'TIBETAN LETTER NA' : 3923, + 'TIBETAN LETTER NGA' : 3908, + 'TIBETAN LETTER NNA' : 3918, + 'TIBETAN LETTER NYA' : 3913, + 'TIBETAN LETTER PA' : 3924, + 'TIBETAN LETTER PHA' : 3925, + 'TIBETAN LETTER RA' : 3938, + 'TIBETAN LETTER SA' : 3942, + 'TIBETAN LETTER SHA' : 3940, + 'TIBETAN LETTER SSA' : 3941, + 'TIBETAN LETTER TA' : 3919, + 'TIBETAN LETTER THA' : 3920, + 'TIBETAN LETTER TSA' : 3929, + 'TIBETAN LETTER TSHA' : 3930, + 'TIBETAN LETTER TTA' : 3914, + 'TIBETAN LETTER TTHA' : 3915, + 'TIBETAN LETTER WA' : 3933, + 'TIBETAN LETTER YA' : 3937, + 'TIBETAN LETTER ZA' : 3935, + 'TIBETAN LETTER ZHA' : 3934, + 'TIBETAN LOGOTYPE SIGN CHAD RTAGS' : 3861, + 'TIBETAN LOGOTYPE SIGN LHAG RTAGS' : 3862, + 'TIBETAN MARK ANG KHANG GYAS' : 3901, + 'TIBETAN MARK ANG KHANG GYON' : 3900, + 'TIBETAN MARK BKA- SHOG YIG MGO' : 3850, + 'TIBETAN MARK BSDUS RTAGS' : 3892, + 'TIBETAN MARK BSKUR YIG MGO' : 3849, + 'TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN' : 3894, + 'TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN' : 3859, + 'TIBETAN MARK CARET YIG MGO PHUR SHAD MA' : 3846, + 'TIBETAN MARK CHE MGO' : 3896, + 'TIBETAN MARK CLOSING YIG MGO SGAB MA' : 3845, + 'TIBETAN MARK DELIMITER TSHEG BSTAR' : 3852, + 'TIBETAN MARK GTER TSHEG' : 3860, + 'TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA' : 3843, + 'TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA' : 3842, + 'TIBETAN MARK GTER YIG MGO TRUNCATED A' : 3841, + 'TIBETAN MARK GUG RTAGS GYAS' : 3899, + 'TIBETAN MARK GUG RTAGS GYON' : 3898, + 'TIBETAN MARK HALANTA' : 3972, + 'TIBETAN MARK INITIAL YIG MGO MDUN MA' : 3844, + 'TIBETAN MARK INTERSYLLABIC TSHEG' : 3851, + 'TIBETAN MARK NGAS BZUNG NYI ZLA' : 3893, + 'TIBETAN MARK NGAS BZUNG SGOR RTAGS' : 3895, + 'TIBETAN MARK NYIS SHAD' : 3854, + 'TIBETAN MARK NYIS TSHEG SHAD' : 3856, + 'TIBETAN MARK PALUTA' : 3973, + 'TIBETAN MARK RGYA GRAM SHAD' : 3858, + 'TIBETAN MARK RIN CHEN SPUNGS SHAD' : 3857, + 'TIBETAN MARK SBRUL SHAD' : 3848, + 'TIBETAN MARK SHAD' : 3853, + 'TIBETAN MARK TSA -PHRU' : 3897, + 'TIBETAN MARK TSHEG SHAD' : 3855, + 'TIBETAN MARK YIG MGO TSHEG SHAD MA' : 3847, + 'TIBETAN SIGN GRU CAN RGYINGS' : 3978, + 'TIBETAN SIGN GRU MED RGYINGS' : 3979, + 'TIBETAN SIGN LCE TSA CAN' : 3976, + 'TIBETAN SIGN LCI RTAGS' : 3974, + 'TIBETAN SIGN MAR TSHES' : 3903, + 'TIBETAN SIGN MCHU CAN' : 3977, + 'TIBETAN SIGN NYI ZLA NAA DA' : 3970, + 'TIBETAN SIGN RDEL DKAR GCIG' : 3866, + 'TIBETAN SIGN RDEL DKAR GNYIS' : 3867, + 'TIBETAN SIGN RDEL DKAR GSUM' : 3868, + 'TIBETAN SIGN RDEL DKAR RDEL NAG' : 3871, + 'TIBETAN SIGN RDEL NAG GCIG' : 3869, + 'TIBETAN SIGN RDEL NAG GNYIS' : 3870, + 'TIBETAN SIGN RDEL NAG GSUM' : 4047, + 'TIBETAN SIGN RJES SU NGA RO' : 3966, + 'TIBETAN SIGN RNAM BCAD' : 3967, + 'TIBETAN SIGN SNA LDAN' : 3971, + 'TIBETAN SIGN YANG RTAGS' : 3975, + 'TIBETAN SIGN YAR TSHES' : 3902, + 'TIBETAN SUBJOINED LETTER -A' : 4016, + 'TIBETAN SUBJOINED LETTER A' : 4024, + 'TIBETAN SUBJOINED LETTER BA' : 4006, + 'TIBETAN SUBJOINED LETTER BHA' : 4007, + 'TIBETAN SUBJOINED LETTER CA' : 3989, + 'TIBETAN SUBJOINED LETTER CHA' : 3990, + 'TIBETAN SUBJOINED LETTER DA' : 4001, + 'TIBETAN SUBJOINED LETTER DDA' : 3996, + 'TIBETAN SUBJOINED LETTER DDHA' : 3997, + 'TIBETAN SUBJOINED LETTER DHA' : 4002, + 'TIBETAN SUBJOINED LETTER DZA' : 4011, + 'TIBETAN SUBJOINED LETTER DZHA' : 4012, + 'TIBETAN SUBJOINED LETTER FIXED-FORM RA' : 4028, + 'TIBETAN SUBJOINED LETTER FIXED-FORM WA' : 4026, + 'TIBETAN SUBJOINED LETTER FIXED-FORM YA' : 4027, + 'TIBETAN SUBJOINED LETTER GA' : 3986, + 'TIBETAN SUBJOINED LETTER GHA' : 3987, + 'TIBETAN SUBJOINED LETTER HA' : 4023, + 'TIBETAN SUBJOINED LETTER JA' : 3991, + 'TIBETAN SUBJOINED LETTER KA' : 3984, + 'TIBETAN SUBJOINED LETTER KHA' : 3985, + 'TIBETAN SUBJOINED LETTER KSSA' : 4025, + 'TIBETAN SUBJOINED LETTER LA' : 4019, + 'TIBETAN SUBJOINED LETTER MA' : 4008, + 'TIBETAN SUBJOINED LETTER NA' : 4003, + 'TIBETAN SUBJOINED LETTER NGA' : 3988, + 'TIBETAN SUBJOINED LETTER NNA' : 3998, + 'TIBETAN SUBJOINED LETTER NYA' : 3993, + 'TIBETAN SUBJOINED LETTER PA' : 4004, + 'TIBETAN SUBJOINED LETTER PHA' : 4005, + 'TIBETAN SUBJOINED LETTER RA' : 4018, + 'TIBETAN SUBJOINED LETTER SA' : 4022, + 'TIBETAN SUBJOINED LETTER SHA' : 4020, + 'TIBETAN SUBJOINED LETTER SSA' : 4021, + 'TIBETAN SUBJOINED LETTER TA' : 3999, + 'TIBETAN SUBJOINED LETTER THA' : 4000, + 'TIBETAN SUBJOINED LETTER TSA' : 4009, + 'TIBETAN SUBJOINED LETTER TSHA' : 4010, + 'TIBETAN SUBJOINED LETTER TTA' : 3994, + 'TIBETAN SUBJOINED LETTER TTHA' : 3995, + 'TIBETAN SUBJOINED LETTER WA' : 4013, + 'TIBETAN SUBJOINED LETTER YA' : 4017, + 'TIBETAN SUBJOINED LETTER ZA' : 4015, + 'TIBETAN SUBJOINED LETTER ZHA' : 4014, + 'TIBETAN SYLLABLE OM' : 3840, + 'TIBETAN SYMBOL DRIL BU' : 4036, + 'TIBETAN SYMBOL NOR BU' : 4041, + 'TIBETAN SYMBOL NOR BU BZHI -KHYIL' : 4044, + 'TIBETAN SYMBOL NOR BU GSUM -KHYIL' : 4043, + 'TIBETAN SYMBOL NOR BU NYIS -KHYIL' : 4042, + 'TIBETAN SYMBOL PADMA GDAN' : 4038, + 'TIBETAN SYMBOL PHUR PA' : 4040, + 'TIBETAN SYMBOL RDO RJE' : 4037, + 'TIBETAN SYMBOL RDO RJE RGYA GRAM' : 4039, + 'TIBETAN VOWEL SIGN AA' : 3953, + 'TIBETAN VOWEL SIGN E' : 3962, + 'TIBETAN VOWEL SIGN EE' : 3963, + 'TIBETAN VOWEL SIGN I' : 3954, + 'TIBETAN VOWEL SIGN II' : 3955, + 'TIBETAN VOWEL SIGN O' : 3964, + 'TIBETAN VOWEL SIGN OO' : 3965, + 'TIBETAN VOWEL SIGN REVERSED I' : 3968, + 'TIBETAN VOWEL SIGN REVERSED II' : 3969, + 'TIBETAN VOWEL SIGN U' : 3956, + 'TIBETAN VOWEL SIGN UU' : 3957, + 'TIBETAN VOWEL SIGN VOCALIC L' : 3960, + 'TIBETAN VOWEL SIGN VOCALIC LL' : 3961, + 'TIBETAN VOWEL SIGN VOCALIC R' : 3958, + 'TIBETAN VOWEL SIGN VOCALIC RR' : 3959, + 'TIE OVER INFINITY' : 10717, + 'TIGHT TRIFOLIATE SNOWFLAKE' : 10053, + 'TILDE' : 126, + 'TILDE OPERATOR' : 8764, + 'TILDE OPERATOR ABOVE RIGHTWARDS ARROW' : 10610, + 'TILDE OPERATOR WITH DOT ABOVE' : 10858, + 'TILDE OPERATOR WITH RISING DOTS' : 10859, + 'TIMES WITH LEFT HALF BLACK' : 10708, + 'TIMES WITH RIGHT HALF BLACK' : 10709, + 'TINY' : 10750, + 'TIRONIAN SIGN ET' : 8266, + 'TOP ARC ANTICLOCKWISE ARROW' : 10554, + 'TOP ARC ANTICLOCKWISE ARROW WITH PLUS' : 10557, + 'TOP ARC CLOCKWISE ARROW WITH MINUS' : 10556, + 'TOP HALF INTEGRAL' : 8992, + 'TOP LEFT CORNER' : 8988, + 'TOP LEFT CROP' : 8975, + 'TOP RIGHT CORNER' : 8989, + 'TOP RIGHT CROP' : 8974, + 'TOP SQUARE BRACKET' : 9140, + 'TOTAL RUNOUT' : 9008, + 'TRADE MARK SIGN' : 8482, + 'TRANSVERSAL INTERSECTION' : 10971, + 'TRIANGLE WITH DOT ABOVE' : 10698, + 'TRIANGLE WITH SERIFS AT BOTTOM' : 10701, + 'TRIANGLE WITH UNDERBAR' : 10699, + 'TRIANGLE-HEADED RIGHTWARDS ARROW' : 10141, + 'TRIANGULAR BULLET' : 8227, + 'TRIGRAM FOR EARTH' : 9783, + 'TRIGRAM FOR FIRE' : 9778, + 'TRIGRAM FOR HEAVEN' : 9776, + 'TRIGRAM FOR LAKE' : 9777, + 'TRIGRAM FOR MOUNTAIN' : 9782, + 'TRIGRAM FOR THUNDER' : 9779, + 'TRIGRAM FOR WATER' : 9781, + 'TRIGRAM FOR WIND' : 9780, + 'TRIPLE COLON OPERATOR' : 10998, + 'TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE' : 10856, + 'TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE' : 10857, + 'TRIPLE INTEGRAL' : 8749, + 'TRIPLE NESTED GREATER-THAN' : 11000, + 'TRIPLE NESTED LESS-THAN' : 10999, + 'TRIPLE PLUS' : 10747, + 'TRIPLE PRIME' : 8244, + 'TRIPLE SOLIDUS BINARY RELATION' : 11003, + 'TRIPLE TILDE' : 8779, + 'TRIPLE VERTICAL BAR BINARY RELATION' : 10996, + 'TRIPLE VERTICAL BAR DELIMITER' : 10624, + 'TRIPLE VERTICAL BAR RIGHT TURNSTILE' : 8874, + 'TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE' : 10997, + 'TRUE' : 8872, + 'TUGRIK SIGN' : 8366, + 'TURNED AMPERSAND' : 8523, + 'TURNED ANGLE' : 10658, + 'TURNED CAPITAL F' : 8498, + 'TURNED GREEK SMALL LETTER IOTA' : 8489, + 'TURNED NOT SIGN' : 8985, + 'TURNED SANS-SERIF CAPITAL G' : 8513, + 'TURNED SANS-SERIF CAPITAL L' : 8514, + 'TURNED SANS-SERIF CAPITAL Y' : 8516, + 'TWELVE POINTED BLACK STAR' : 10041, + 'TWO ASTERISKS ALIGNED VERTICALLY' : 8273, + 'TWO CONSECUTIVE EQUALS SIGNS' : 10869, + 'TWO DOT LEADER' : 8229, + 'TWO INTERSECTING LOGICAL AND' : 10837, + 'TWO INTERSECTING LOGICAL OR' : 10838, + 'TWO JOINED SQUARES' : 10697, + 'TWO LOGICAL AND OPERATOR' : 10759, + 'TWO LOGICAL OR OPERATOR' : 10760, + 'UMBRELLA' : 9730, + 'UNDERTIE' : 8255, + 'UNDO SYMBOL' : 9100, + 'UNION' : 8746, + 'UNION ABOVE BAR ABOVE INTERSECTION' : 10824, + 'UNION ABOVE INTERSECTION' : 10822, + 'UNION BESIDE AND JOINED WITH UNION' : 10826, + 'UNION WITH LOGICAL OR' : 10821, + 'UNION WITH MINUS SIGN' : 10817, + 'UNION WITH OVERBAR' : 10818, + 'UNIVERSAL RECYCLING SYMBOL' : 9842, + 'UP ARROW THROUGH CIRCLE' : 10685, + 'UP ARROWHEAD' : 8963, + 'UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS' : 8996, + 'UP BARB LEFT DOWN BARB LEFT HARPOON' : 10577, + 'UP BARB LEFT DOWN BARB RIGHT HARPOON' : 10573, + 'UP BARB RIGHT DOWN BARB LEFT HARPOON' : 10572, + 'UP BARB RIGHT DOWN BARB RIGHT HARPOON' : 10575, + 'UP DOWN ARROW' : 8597, + 'UP DOWN ARROW WITH BASE' : 8616, + 'UP DOWN DOUBLE ARROW' : 8661, + 'UP DOWN WHITE ARROW' : 8691, + 'UP FISH TAIL' : 10622, + 'UP RIGHT DIAGONAL ELLIPSIS' : 8944, + 'UP TACK' : 8869, + 'UP TACK WITH CIRCLE ABOVE' : 10207, + 'UP-POINTING TRIANGLE WITH LEFT HALF BLACK' : 9709, + 'UP-POINTING TRIANGLE WITH RIGHT HALF BLACK' : 9710, + 'UPPER BLADE SCISSORS' : 9985, + 'UPPER HALF BLOCK' : 9600, + 'UPPER HALF CIRCLE' : 9696, + 'UPPER HALF INVERSE WHITE CIRCLE' : 9690, + 'UPPER LEFT CORNER WITH DOT' : 10196, + 'UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION' : 9136, + 'UPPER LEFT QUADRANT CIRCULAR ARC' : 9692, + 'UPPER LEFT TRIANGLE' : 9720, + 'UPPER ONE EIGHTH BLOCK' : 9620, + 'UPPER RIGHT DROP-SHADOWED WHITE SQUARE' : 10064, + 'UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION' : 9137, + 'UPPER RIGHT PENCIL' : 10000, + 'UPPER RIGHT QUADRANT CIRCULAR ARC' : 9693, + 'UPPER RIGHT SHADOWED WHITE SQUARE' : 10066, + 'UPPER RIGHT TRIANGLE' : 9721, + 'UPWARDS ARROW' : 8593, + 'UPWARDS ARROW FROM BAR' : 8613, + 'UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW' : 8645, + 'UPWARDS ARROW TO BAR' : 10514, + 'UPWARDS ARROW WITH DOUBLE STROKE' : 8670, + 'UPWARDS ARROW WITH HORIZONTAL STROKE' : 10505, + 'UPWARDS ARROW WITH TIP LEFTWARDS' : 8624, + 'UPWARDS ARROW WITH TIP RIGHTWARDS' : 8625, + 'UPWARDS DASHED ARROW' : 8673, + 'UPWARDS DOUBLE ARROW' : 8657, + 'UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT' : 10606, + 'UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT' : 10595, + 'UPWARDS HARPOON WITH BARB LEFT FROM BAR' : 10592, + 'UPWARDS HARPOON WITH BARB LEFT TO BAR' : 10584, + 'UPWARDS HARPOON WITH BARB LEFTWARDS' : 8639, + 'UPWARDS HARPOON WITH BARB RIGHT FROM BAR' : 10588, + 'UPWARDS HARPOON WITH BARB RIGHT TO BAR' : 10580, + 'UPWARDS HARPOON WITH BARB RIGHTWARDS' : 8638, + 'UPWARDS PAIRED ARROWS' : 8648, + 'UPWARDS QUADRUPLE ARROW' : 10224, + 'UPWARDS TRIPLE ARROW' : 10506, + 'UPWARDS TWO HEADED ARROW' : 8607, + 'UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE' : 10569, + 'UPWARDS WHITE ARROW' : 8679, + 'UPWARDS WHITE ARROW FROM BAR' : 8682, + 'UPWARDS WHITE ARROW ON PEDESTAL' : 8683, + 'UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR' : 8684, + 'UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR' : 8685, + 'UPWARDS WHITE DOUBLE ARROW' : 8686, + 'UPWARDS WHITE DOUBLE ARROW ON PEDESTAL' : 8687, + 'URANUS' : 9797, + 'VARIATION SELECTOR-1' : 65024, + 'VARIATION SELECTOR-10' : 65033, + 'VARIATION SELECTOR-11' : 65034, + 'VARIATION SELECTOR-12' : 65035, + 'VARIATION SELECTOR-13' : 65036, + 'VARIATION SELECTOR-14' : 65037, + 'VARIATION SELECTOR-15' : 65038, + 'VARIATION SELECTOR-16' : 65039, + 'VARIATION SELECTOR-2' : 65025, + 'VARIATION SELECTOR-3' : 65026, + 'VARIATION SELECTOR-4' : 65027, + 'VARIATION SELECTOR-5' : 65028, + 'VARIATION SELECTOR-6' : 65029, + 'VARIATION SELECTOR-7' : 65030, + 'VARIATION SELECTOR-8' : 65031, + 'VARIATION SELECTOR-9' : 65032, + 'VECTOR OR CROSS PRODUCT' : 10799, + 'VERSICLE' : 8483, + 'VERTICAL BAR BESIDE RIGHT TRIANGLE' : 10704, + 'VERTICAL BAR DOUBLE LEFT TURNSTILE' : 10980, + 'VERTICAL BAR TRIPLE RIGHT TURNSTILE' : 10978, + 'VERTICAL ELLIPSIS' : 8942, + 'VERTICAL IDEOGRAPHIC ITERATION MARK' : 12347, + 'VERTICAL KANA REPEAT MARK' : 12337, + 'VERTICAL KANA REPEAT MARK LOWER HALF' : 12341, + 'VERTICAL KANA REPEAT MARK UPPER HALF' : 12339, + 'VERTICAL KANA REPEAT WITH VOICED SOUND MARK' : 12338, + 'VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF' : 12340, + 'VERTICAL LINE' : 124, + 'VERTICAL LINE WITH CIRCLE ABOVE' : 10991, + 'VERTICAL LINE WITH CIRCLE BELOW' : 10992, + 'VERTICAL LINE WITH MIDDLE DOT' : 9087, + 'VERTICAL ZIGZAG LINE' : 10650, + 'VERY MUCH GREATER-THAN' : 8921, + 'VERY MUCH LESS-THAN' : 8920, + 'VICTORY HAND' : 9996, + 'VIEWDATA SQUARE' : 8983, + 'VIRGO' : 9805, + 'VOLUME INTEGRAL' : 8752, + 'VULGAR FRACTION FIVE EIGHTHS' : 8541, + 'VULGAR FRACTION FIVE SIXTHS' : 8538, + 'VULGAR FRACTION FOUR FIFTHS' : 8536, + 'VULGAR FRACTION ONE EIGHTH' : 8539, + 'VULGAR FRACTION ONE FIFTH' : 8533, + 'VULGAR FRACTION ONE HALF' : 189, + 'VULGAR FRACTION ONE QUARTER' : 188, + 'VULGAR FRACTION ONE SIXTH' : 8537, + 'VULGAR FRACTION ONE THIRD' : 8531, + 'VULGAR FRACTION SEVEN EIGHTHS' : 8542, + 'VULGAR FRACTION THREE EIGHTHS' : 8540, + 'VULGAR FRACTION THREE FIFTHS' : 8535, + 'VULGAR FRACTION THREE QUARTERS' : 190, + 'VULGAR FRACTION TWO FIFTHS' : 8534, + 'VULGAR FRACTION TWO THIRDS' : 8532, + 'WATCH' : 8986, + 'WAVE ARROW POINTING DIRECTLY RIGHT' : 10547, + 'WAVE DASH' : 12316, + 'WAVY DASH' : 12336, + 'WAVY LINE' : 8967, + 'WAVY LOW LINE' : 65103, + 'WAVY OVERLINE' : 65099, + 'WEDGE-TAILED RIGHTWARDS ARROW' : 10172, + 'WEST SYRIAC CROSS' : 9840, + 'WHEEL OF DHARMA' : 9784, + 'WHITE BULLET' : 9702, + 'WHITE CHESS BISHOP' : 9815, + 'WHITE CHESS KING' : 9812, + 'WHITE CHESS KNIGHT' : 9816, + 'WHITE CHESS PAWN' : 9817, + 'WHITE CHESS QUEEN' : 9813, + 'WHITE CHESS ROOK' : 9814, + 'WHITE CIRCLE' : 9675, + 'WHITE CIRCLE WITH DOT RIGHT' : 9862, + 'WHITE CIRCLE WITH DOWN ARROW' : 10732, + 'WHITE CIRCLE WITH LOWER LEFT QUADRANT' : 9717, + 'WHITE CIRCLE WITH LOWER RIGHT QUADRANT' : 9718, + 'WHITE CIRCLE WITH TWO DOTS' : 9863, + 'WHITE CIRCLE WITH UPPER LEFT QUADRANT' : 9716, + 'WHITE CIRCLE WITH UPPER RIGHT QUADRANT' : 9719, + 'WHITE CLUB SUIT' : 9831, + 'WHITE CONCAVE-SIDED DIAMOND' : 10209, + 'WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK' : 10210, + 'WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK' : 10211, + 'WHITE DIAMOND' : 9671, + 'WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND' : 9672, + 'WHITE DIAMOND SUIT' : 9826, + 'WHITE DIAMOND WITH CENTRED DOT' : 10192, + 'WHITE DOWN POINTING INDEX' : 9759, + 'WHITE DOWN-POINTING SMALL TRIANGLE' : 9663, + 'WHITE DOWN-POINTING TRIANGLE' : 9661, + 'WHITE FLORETTE' : 10048, + 'WHITE FOUR POINTED STAR' : 10023, + 'WHITE FROWNING FACE' : 9785, + 'WHITE HEART SUIT' : 9825, + 'WHITE HOURGLASS' : 10710, + 'WHITE LEFT POINTING INDEX' : 9756, + 'WHITE LEFT-POINTING POINTER' : 9669, + 'WHITE LEFT-POINTING SMALL TRIANGLE' : 9667, + 'WHITE LEFT-POINTING TRIANGLE' : 9665, + 'WHITE MEDIUM SMALL SQUARE' : 9725, + 'WHITE MEDIUM SQUARE' : 9723, + 'WHITE NIB' : 10001, + 'WHITE PARALLELOGRAM' : 9649, + 'WHITE RECTANGLE' : 9645, + 'WHITE RIGHT POINTING INDEX' : 9758, + 'WHITE RIGHT-POINTING POINTER' : 9659, + 'WHITE RIGHT-POINTING SMALL TRIANGLE' : 9657, + 'WHITE RIGHT-POINTING TRIANGLE' : 9655, + 'WHITE SCISSORS' : 9988, + 'WHITE SESAME DOT' : 65094, + 'WHITE SHOGI PIECE' : 9750, + 'WHITE SMALL SQUARE' : 9643, + 'WHITE SMILING FACE' : 9786, + 'WHITE SPADE SUIT' : 9828, + 'WHITE SQUARE' : 9633, + 'WHITE SQUARE CONTAINING BLACK SMALL SQUARE' : 9635, + 'WHITE SQUARE WITH CENTRE VERTICAL LINE' : 9093, + 'WHITE SQUARE WITH LEFTWARDS TICK' : 10212, + 'WHITE SQUARE WITH LOWER LEFT QUADRANT' : 9713, + 'WHITE SQUARE WITH LOWER RIGHT QUADRANT' : 9714, + 'WHITE SQUARE WITH RIGHTWARDS TICK' : 10213, + 'WHITE SQUARE WITH ROUNDED CORNERS' : 9634, + 'WHITE SQUARE WITH UPPER LEFT QUADRANT' : 9712, + 'WHITE SQUARE WITH UPPER RIGHT QUADRANT' : 9715, + 'WHITE SQUARE WITH VERTICAL BISECTING LINE' : 9707, + 'WHITE STAR' : 9734, + 'WHITE SUN WITH RAYS' : 9788, + 'WHITE TELEPHONE' : 9743, + 'WHITE UP POINTING INDEX' : 9757, + 'WHITE UP-POINTING SMALL TRIANGLE' : 9653, + 'WHITE UP-POINTING TRIANGLE' : 9651, + 'WHITE UP-POINTING TRIANGLE WITH DOT' : 9708, + 'WHITE VERTICAL BAR' : 11006, + 'WHITE VERTICAL RECTANGLE' : 9647, + 'WHITE-FEATHERED RIGHTWARDS ARROW' : 10163, + 'WON SIGN' : 8361, + 'WORD JOINER' : 8288, + 'WREATH PRODUCT' : 8768, + 'WRITING HAND' : 9997, + 'X IN A RECTANGLE BOX' : 8999, + 'XOR' : 8891, + 'YEN SIGN' : 165, + 'YI RADICAL BBUT' : 42139, + 'YI RADICAL BUR' : 42149, + 'YI RADICAL CHE' : 42179, + 'YI RADICAL CIP' : 42174, + 'YI RADICAL CUOP' : 42173, + 'YI RADICAL CY' : 42172, + 'YI RADICAL CYP' : 42132, + 'YI RADICAL CYT' : 42147, + 'YI RADICAL DDUR' : 42148, + 'YI RADICAL DU' : 42169, + 'YI RADICAL GA' : 42145, + 'YI RADICAL GEP' : 42135, + 'YI RADICAL GGOP' : 42134, + 'YI RADICAL GGUO' : 42150, + 'YI RADICAL GOT' : 42166, + 'YI RADICAL HMO' : 42157, + 'YI RADICAL HXIT' : 42137, + 'YI RADICAL HXOP' : 42175, + 'YI RADICAL HXUO' : 42143, + 'YI RADICAL JJIE' : 42167, + 'YI RADICAL JJUT' : 42154, + 'YI RADICAL JJY' : 42165, + 'YI RADICAL JO' : 42163, + 'YI RADICAL KE' : 42182, + 'YI RADICAL KIT' : 42130, + 'YI RADICAL LI' : 42129, + 'YI RADICAL LIE' : 42171, + 'YI RADICAL LYR' : 42138, + 'YI RADICAL MI' : 42136, + 'YI RADICAL MOP' : 42140, + 'YI RADICAL NBIE' : 42181, + 'YI RADICAL NYIP' : 42131, + 'YI RADICAL NYOP' : 42151, + 'YI RADICAL NZUP' : 42164, + 'YI RADICAL OP' : 42153, + 'YI RADICAL PUT' : 42142, + 'YI RADICAL PYT' : 42156, + 'YI RADICAL QOT' : 42128, + 'YI RADICAL SHAT' : 42176, + 'YI RADICAL SHOP' : 42178, + 'YI RADICAL SHUR' : 42170, + 'YI RADICAL SHY' : 42160, + 'YI RADICAL SSI' : 42133, + 'YI RADICAL TAT' : 42144, + 'YI RADICAL TU' : 42152, + 'YI RADICAL VEP' : 42161, + 'YI RADICAL VUR' : 42159, + 'YI RADICAL WO' : 42168, + 'YI RADICAL YIT' : 42158, + 'YI RADICAL YO' : 42141, + 'YI RADICAL ZA' : 42162, + 'YI RADICAL ZOT' : 42155, + 'YI RADICAL ZUP' : 42146, + 'YI RADICAL ZUR' : 42177, + 'YI RADICAL ZZIET' : 42180, + 'YI SYLLABLE A' : 40970, + 'YI SYLLABLE AP' : 40971, + 'YI SYLLABLE AT' : 40968, + 'YI SYLLABLE AX' : 40969, + 'YI SYLLABLE BA' : 40992, + 'YI SYLLABLE BAP' : 40993, + 'YI SYLLABLE BAT' : 40990, + 'YI SYLLABLE BAX' : 40991, + 'YI SYLLABLE BBA' : 41056, + 'YI SYLLABLE BBAP' : 41057, + 'YI SYLLABLE BBAT' : 41054, + 'YI SYLLABLE BBAX' : 41055, + 'YI SYLLABLE BBE' : 41066, + 'YI SYLLABLE BBEP' : 41067, + 'YI SYLLABLE BBEX' : 41065, + 'YI SYLLABLE BBI' : 41048, + 'YI SYLLABLE BBIE' : 41052, + 'YI SYLLABLE BBIEP' : 41053, + 'YI SYLLABLE BBIET' : 41050, + 'YI SYLLABLE BBIEX' : 41051, + 'YI SYLLABLE BBIP' : 41049, + 'YI SYLLABLE BBIT' : 41046, + 'YI SYLLABLE BBIX' : 41047, + 'YI SYLLABLE BBO' : 41063, + 'YI SYLLABLE BBOP' : 41064, + 'YI SYLLABLE BBOT' : 41061, + 'YI SYLLABLE BBOX' : 41062, + 'YI SYLLABLE BBU' : 41070, + 'YI SYLLABLE BBUO' : 41059, + 'YI SYLLABLE BBUOP' : 41060, + 'YI SYLLABLE BBUOX' : 41058, + 'YI SYLLABLE BBUP' : 41071, + 'YI SYLLABLE BBUR' : 41073, + 'YI SYLLABLE BBURX' : 41072, + 'YI SYLLABLE BBUT' : 41068, + 'YI SYLLABLE BBUX' : 41069, + 'YI SYLLABLE BBY' : 41076, + 'YI SYLLABLE BBYP' : 41077, + 'YI SYLLABLE BBYT' : 41074, + 'YI SYLLABLE BBYX' : 41075, + 'YI SYLLABLE BE' : 41002, + 'YI SYLLABLE BEP' : 41003, + 'YI SYLLABLE BEX' : 41001, + 'YI SYLLABLE BI' : 40984, + 'YI SYLLABLE BIE' : 40988, + 'YI SYLLABLE BIEP' : 40989, + 'YI SYLLABLE BIET' : 40986, + 'YI SYLLABLE BIEX' : 40987, + 'YI SYLLABLE BIP' : 40985, + 'YI SYLLABLE BIT' : 40982, + 'YI SYLLABLE BIX' : 40983, + 'YI SYLLABLE BO' : 40999, + 'YI SYLLABLE BOP' : 41000, + 'YI SYLLABLE BOT' : 40997, + 'YI SYLLABLE BOX' : 40998, + 'YI SYLLABLE BU' : 41006, + 'YI SYLLABLE BUO' : 40995, + 'YI SYLLABLE BUOP' : 40996, + 'YI SYLLABLE BUOX' : 40994, + 'YI SYLLABLE BUP' : 41007, + 'YI SYLLABLE BUR' : 41009, + 'YI SYLLABLE BURX' : 41008, + 'YI SYLLABLE BUT' : 41004, + 'YI SYLLABLE BUX' : 41005, + 'YI SYLLABLE BY' : 41012, + 'YI SYLLABLE BYP' : 41013, + 'YI SYLLABLE BYR' : 41015, + 'YI SYLLABLE BYRX' : 41014, + 'YI SYLLABLE BYT' : 41010, + 'YI SYLLABLE BYX' : 41011, + 'YI SYLLABLE CA' : 41656, + 'YI SYLLABLE CAP' : 41657, + 'YI SYLLABLE CAT' : 41654, + 'YI SYLLABLE CAX' : 41655, + 'YI SYLLABLE CE' : 41666, + 'YI SYLLABLE CEP' : 41667, + 'YI SYLLABLE CEX' : 41665, + 'YI SYLLABLE CHA' : 41827, + 'YI SYLLABLE CHAP' : 41828, + 'YI SYLLABLE CHAT' : 41825, + 'YI SYLLABLE CHAX' : 41826, + 'YI SYLLABLE CHE' : 41839, + 'YI SYLLABLE CHEP' : 41840, + 'YI SYLLABLE CHET' : 41837, + 'YI SYLLABLE CHEX' : 41838, + 'YI SYLLABLE CHO' : 41835, + 'YI SYLLABLE CHOP' : 41836, + 'YI SYLLABLE CHOT' : 41833, + 'YI SYLLABLE CHOX' : 41834, + 'YI SYLLABLE CHU' : 41842, + 'YI SYLLABLE CHUO' : 41831, + 'YI SYLLABLE CHUOP' : 41832, + 'YI SYLLABLE CHUOT' : 41829, + 'YI SYLLABLE CHUOX' : 41830, + 'YI SYLLABLE CHUP' : 41843, + 'YI SYLLABLE CHUR' : 41845, + 'YI SYLLABLE CHURX' : 41844, + 'YI SYLLABLE CHUX' : 41841, + 'YI SYLLABLE CHY' : 41848, + 'YI SYLLABLE CHYP' : 41849, + 'YI SYLLABLE CHYR' : 41851, + 'YI SYLLABLE CHYRX' : 41850, + 'YI SYLLABLE CHYT' : 41846, + 'YI SYLLABLE CHYX' : 41847, + 'YI SYLLABLE CI' : 41648, + 'YI SYLLABLE CIE' : 41652, + 'YI SYLLABLE CIEP' : 41653, + 'YI SYLLABLE CIET' : 41650, + 'YI SYLLABLE CIEX' : 41651, + 'YI SYLLABLE CIP' : 41649, + 'YI SYLLABLE CIT' : 41646, + 'YI SYLLABLE CIX' : 41647, + 'YI SYLLABLE CO' : 41663, + 'YI SYLLABLE COP' : 41664, + 'YI SYLLABLE COT' : 41661, + 'YI SYLLABLE COX' : 41662, + 'YI SYLLABLE CU' : 41670, + 'YI SYLLABLE CUO' : 41659, + 'YI SYLLABLE CUOP' : 41660, + 'YI SYLLABLE CUOX' : 41658, + 'YI SYLLABLE CUP' : 41671, + 'YI SYLLABLE CUR' : 41673, + 'YI SYLLABLE CURX' : 41672, + 'YI SYLLABLE CUT' : 41668, + 'YI SYLLABLE CUX' : 41669, + 'YI SYLLABLE CY' : 41676, + 'YI SYLLABLE CYP' : 41677, + 'YI SYLLABLE CYR' : 41679, + 'YI SYLLABLE CYRX' : 41678, + 'YI SYLLABLE CYT' : 41674, + 'YI SYLLABLE CYX' : 41675, + 'YI SYLLABLE DA' : 41225, + 'YI SYLLABLE DAP' : 41226, + 'YI SYLLABLE DAT' : 41223, + 'YI SYLLABLE DAX' : 41224, + 'YI SYLLABLE DDA' : 41279, + 'YI SYLLABLE DDAP' : 41280, + 'YI SYLLABLE DDAT' : 41277, + 'YI SYLLABLE DDAX' : 41278, + 'YI SYLLABLE DDE' : 41289, + 'YI SYLLABLE DDEP' : 41290, + 'YI SYLLABLE DDEX' : 41288, + 'YI SYLLABLE DDI' : 41272, + 'YI SYLLABLE DDIE' : 41275, + 'YI SYLLABLE DDIEP' : 41276, + 'YI SYLLABLE DDIEX' : 41274, + 'YI SYLLABLE DDIP' : 41273, + 'YI SYLLABLE DDIT' : 41270, + 'YI SYLLABLE DDIX' : 41271, + 'YI SYLLABLE DDO' : 41286, + 'YI SYLLABLE DDOP' : 41287, + 'YI SYLLABLE DDOT' : 41284, + 'YI SYLLABLE DDOX' : 41285, + 'YI SYLLABLE DDU' : 41293, + 'YI SYLLABLE DDUO' : 41282, + 'YI SYLLABLE DDUOP' : 41283, + 'YI SYLLABLE DDUOX' : 41281, + 'YI SYLLABLE DDUP' : 41294, + 'YI SYLLABLE DDUR' : 41296, + 'YI SYLLABLE DDURX' : 41295, + 'YI SYLLABLE DDUT' : 41291, + 'YI SYLLABLE DDUX' : 41292, + 'YI SYLLABLE DE' : 41234, + 'YI SYLLABLE DEP' : 41235, + 'YI SYLLABLE DEX' : 41233, + 'YI SYLLABLE DI' : 41218, + 'YI SYLLABLE DIE' : 41221, + 'YI SYLLABLE DIEP' : 41222, + 'YI SYLLABLE DIEX' : 41220, + 'YI SYLLABLE DIP' : 41219, + 'YI SYLLABLE DIT' : 41216, + 'YI SYLLABLE DIX' : 41217, + 'YI SYLLABLE DO' : 41231, + 'YI SYLLABLE DOP' : 41232, + 'YI SYLLABLE DOT' : 41229, + 'YI SYLLABLE DOX' : 41230, + 'YI SYLLABLE DU' : 41238, + 'YI SYLLABLE DUO' : 41228, + 'YI SYLLABLE DUOX' : 41227, + 'YI SYLLABLE DUP' : 41239, + 'YI SYLLABLE DUR' : 41241, + 'YI SYLLABLE DURX' : 41240, + 'YI SYLLABLE DUT' : 41236, + 'YI SYLLABLE DUX' : 41237, + 'YI SYLLABLE E' : 40980, + 'YI SYLLABLE EX' : 40979, + 'YI SYLLABLE FA' : 41171, + 'YI SYLLABLE FAP' : 41172, + 'YI SYLLABLE FAT' : 41169, + 'YI SYLLABLE FAX' : 41170, + 'YI SYLLABLE FI' : 41167, + 'YI SYLLABLE FIP' : 41168, + 'YI SYLLABLE FIT' : 41165, + 'YI SYLLABLE FIX' : 41166, + 'YI SYLLABLE FO' : 41174, + 'YI SYLLABLE FOP' : 41175, + 'YI SYLLABLE FOX' : 41173, + 'YI SYLLABLE FU' : 41178, + 'YI SYLLABLE FUP' : 41179, + 'YI SYLLABLE FUR' : 41181, + 'YI SYLLABLE FURX' : 41180, + 'YI SYLLABLE FUT' : 41176, + 'YI SYLLABLE FUX' : 41177, + 'YI SYLLABLE FY' : 41184, + 'YI SYLLABLE FYP' : 41185, + 'YI SYLLABLE FYT' : 41182, + 'YI SYLLABLE FYX' : 41183, + 'YI SYLLABLE GA' : 41444, + 'YI SYLLABLE GAP' : 41445, + 'YI SYLLABLE GAT' : 41442, + 'YI SYLLABLE GAX' : 41443, + 'YI SYLLABLE GE' : 41456, + 'YI SYLLABLE GEP' : 41457, + 'YI SYLLABLE GET' : 41454, + 'YI SYLLABLE GEX' : 41455, + 'YI SYLLABLE GGA' : 41500, + 'YI SYLLABLE GGAP' : 41501, + 'YI SYLLABLE GGAT' : 41498, + 'YI SYLLABLE GGAX' : 41499, + 'YI SYLLABLE GGE' : 41512, + 'YI SYLLABLE GGEP' : 41513, + 'YI SYLLABLE GGET' : 41510, + 'YI SYLLABLE GGEX' : 41511, + 'YI SYLLABLE GGI' : 41494, + 'YI SYLLABLE GGIE' : 41496, + 'YI SYLLABLE GGIEP' : 41497, + 'YI SYLLABLE GGIEX' : 41495, + 'YI SYLLABLE GGIT' : 41492, + 'YI SYLLABLE GGIX' : 41493, + 'YI SYLLABLE GGO' : 41508, + 'YI SYLLABLE GGOP' : 41509, + 'YI SYLLABLE GGOT' : 41506, + 'YI SYLLABLE GGOX' : 41507, + 'YI SYLLABLE GGU' : 41516, + 'YI SYLLABLE GGUO' : 41504, + 'YI SYLLABLE GGUOP' : 41505, + 'YI SYLLABLE GGUOT' : 41502, + 'YI SYLLABLE GGUOX' : 41503, + 'YI SYLLABLE GGUP' : 41517, + 'YI SYLLABLE GGUR' : 41519, + 'YI SYLLABLE GGURX' : 41518, + 'YI SYLLABLE GGUT' : 41514, + 'YI SYLLABLE GGUX' : 41515, + 'YI SYLLABLE GI' : 41436, + 'YI SYLLABLE GIE' : 41440, + 'YI SYLLABLE GIEP' : 41441, + 'YI SYLLABLE GIET' : 41438, + 'YI SYLLABLE GIEX' : 41439, + 'YI SYLLABLE GIP' : 41437, + 'YI SYLLABLE GIT' : 41434, + 'YI SYLLABLE GIX' : 41435, + 'YI SYLLABLE GO' : 41452, + 'YI SYLLABLE GOP' : 41453, + 'YI SYLLABLE GOT' : 41450, + 'YI SYLLABLE GOX' : 41451, + 'YI SYLLABLE GU' : 41460, + 'YI SYLLABLE GUO' : 41448, + 'YI SYLLABLE GUOP' : 41449, + 'YI SYLLABLE GUOT' : 41446, + 'YI SYLLABLE GUOX' : 41447, + 'YI SYLLABLE GUP' : 41461, + 'YI SYLLABLE GUR' : 41463, + 'YI SYLLABLE GURX' : 41462, + 'YI SYLLABLE GUT' : 41458, + 'YI SYLLABLE GUX' : 41459, + 'YI SYLLABLE HA' : 41587, + 'YI SYLLABLE HAP' : 41588, + 'YI SYLLABLE HAT' : 41585, + 'YI SYLLABLE HAX' : 41586, + 'YI SYLLABLE HE' : 41598, + 'YI SYLLABLE HEP' : 41599, + 'YI SYLLABLE HEX' : 41597, + 'YI SYLLABLE HIE' : 41584, + 'YI SYLLABLE HIEX' : 41583, + 'YI SYLLABLE HIT' : 41582, + 'YI SYLLABLE HLA' : 41376, + 'YI SYLLABLE HLAP' : 41377, + 'YI SYLLABLE HLAT' : 41374, + 'YI SYLLABLE HLAX' : 41375, + 'YI SYLLABLE HLE' : 41385, + 'YI SYLLABLE HLEP' : 41386, + 'YI SYLLABLE HLEX' : 41384, + 'YI SYLLABLE HLI' : 41369, + 'YI SYLLABLE HLIE' : 41372, + 'YI SYLLABLE HLIEP' : 41373, + 'YI SYLLABLE HLIEX' : 41371, + 'YI SYLLABLE HLIP' : 41370, + 'YI SYLLABLE HLIT' : 41367, + 'YI SYLLABLE HLIX' : 41368, + 'YI SYLLABLE HLO' : 41382, + 'YI SYLLABLE HLOP' : 41383, + 'YI SYLLABLE HLOX' : 41381, + 'YI SYLLABLE HLU' : 41389, + 'YI SYLLABLE HLUO' : 41379, + 'YI SYLLABLE HLUOP' : 41380, + 'YI SYLLABLE HLUOX' : 41378, + 'YI SYLLABLE HLUP' : 41390, + 'YI SYLLABLE HLUR' : 41392, + 'YI SYLLABLE HLURX' : 41391, + 'YI SYLLABLE HLUT' : 41387, + 'YI SYLLABLE HLUX' : 41388, + 'YI SYLLABLE HLY' : 41395, + 'YI SYLLABLE HLYP' : 41396, + 'YI SYLLABLE HLYR' : 41398, + 'YI SYLLABLE HLYRX' : 41397, + 'YI SYLLABLE HLYT' : 41393, + 'YI SYLLABLE HLYX' : 41394, + 'YI SYLLABLE HMA' : 41114, + 'YI SYLLABLE HMAP' : 41115, + 'YI SYLLABLE HMAT' : 41112, + 'YI SYLLABLE HMAX' : 41113, + 'YI SYLLABLE HMI' : 41107, + 'YI SYLLABLE HMIE' : 41110, + 'YI SYLLABLE HMIEP' : 41111, + 'YI SYLLABLE HMIEX' : 41109, + 'YI SYLLABLE HMIP' : 41108, + 'YI SYLLABLE HMIT' : 41105, + 'YI SYLLABLE HMIX' : 41106, + 'YI SYLLABLE HMO' : 41121, + 'YI SYLLABLE HMOP' : 41122, + 'YI SYLLABLE HMOT' : 41119, + 'YI SYLLABLE HMOX' : 41120, + 'YI SYLLABLE HMU' : 41125, + 'YI SYLLABLE HMUO' : 41117, + 'YI SYLLABLE HMUOP' : 41118, + 'YI SYLLABLE HMUOX' : 41116, + 'YI SYLLABLE HMUP' : 41126, + 'YI SYLLABLE HMUR' : 41128, + 'YI SYLLABLE HMURX' : 41127, + 'YI SYLLABLE HMUT' : 41123, + 'YI SYLLABLE HMUX' : 41124, + 'YI SYLLABLE HMY' : 41130, + 'YI SYLLABLE HMYP' : 41131, + 'YI SYLLABLE HMYR' : 41133, + 'YI SYLLABLE HMYRX' : 41132, + 'YI SYLLABLE HMYX' : 41129, + 'YI SYLLABLE HNA' : 41330, + 'YI SYLLABLE HNAP' : 41331, + 'YI SYLLABLE HNAT' : 41328, + 'YI SYLLABLE HNAX' : 41329, + 'YI SYLLABLE HNE' : 41338, + 'YI SYLLABLE HNEP' : 41339, + 'YI SYLLABLE HNEX' : 41337, + 'YI SYLLABLE HNI' : 41322, + 'YI SYLLABLE HNIE' : 41326, + 'YI SYLLABLE HNIEP' : 41327, + 'YI SYLLABLE HNIET' : 41324, + 'YI SYLLABLE HNIEX' : 41325, + 'YI SYLLABLE HNIP' : 41323, + 'YI SYLLABLE HNIT' : 41320, + 'YI SYLLABLE HNIX' : 41321, + 'YI SYLLABLE HNOP' : 41336, + 'YI SYLLABLE HNOT' : 41334, + 'YI SYLLABLE HNOX' : 41335, + 'YI SYLLABLE HNUO' : 41333, + 'YI SYLLABLE HNUOX' : 41332, + 'YI SYLLABLE HNUT' : 41340, + 'YI SYLLABLE HO' : 41595, + 'YI SYLLABLE HOP' : 41596, + 'YI SYLLABLE HOT' : 41593, + 'YI SYLLABLE HOX' : 41594, + 'YI SYLLABLE HUO' : 41591, + 'YI SYLLABLE HUOP' : 41592, + 'YI SYLLABLE HUOT' : 41589, + 'YI SYLLABLE HUOX' : 41590, + 'YI SYLLABLE HXA' : 41552, + 'YI SYLLABLE HXAP' : 41553, + 'YI SYLLABLE HXAT' : 41550, + 'YI SYLLABLE HXAX' : 41551, + 'YI SYLLABLE HXE' : 41563, + 'YI SYLLABLE HXEP' : 41564, + 'YI SYLLABLE HXEX' : 41562, + 'YI SYLLABLE HXI' : 41544, + 'YI SYLLABLE HXIE' : 41548, + 'YI SYLLABLE HXIEP' : 41549, + 'YI SYLLABLE HXIET' : 41546, + 'YI SYLLABLE HXIEX' : 41547, + 'YI SYLLABLE HXIP' : 41545, + 'YI SYLLABLE HXIT' : 41542, + 'YI SYLLABLE HXIX' : 41543, + 'YI SYLLABLE HXO' : 41560, + 'YI SYLLABLE HXOP' : 41561, + 'YI SYLLABLE HXOT' : 41558, + 'YI SYLLABLE HXOX' : 41559, + 'YI SYLLABLE HXUO' : 41556, + 'YI SYLLABLE HXUOP' : 41557, + 'YI SYLLABLE HXUOT' : 41554, + 'YI SYLLABLE HXUOX' : 41555, + 'YI SYLLABLE I' : 40962, + 'YI SYLLABLE IE' : 40966, + 'YI SYLLABLE IEP' : 40967, + 'YI SYLLABLE IET' : 40964, + 'YI SYLLABLE IEX' : 40965, + 'YI SYLLABLE IP' : 40963, + 'YI SYLLABLE IT' : 40960, + 'YI SYLLABLE IX' : 40961, + 'YI SYLLABLE JI' : 41954, + 'YI SYLLABLE JIE' : 41958, + 'YI SYLLABLE JIEP' : 41959, + 'YI SYLLABLE JIET' : 41956, + 'YI SYLLABLE JIEX' : 41957, + 'YI SYLLABLE JIP' : 41955, + 'YI SYLLABLE JIT' : 41952, + 'YI SYLLABLE JIX' : 41953, + 'YI SYLLABLE JJI' : 42010, + 'YI SYLLABLE JJIE' : 42014, + 'YI SYLLABLE JJIEP' : 42015, + 'YI SYLLABLE JJIET' : 42012, + 'YI SYLLABLE JJIEX' : 42013, + 'YI SYLLABLE JJIP' : 42011, + 'YI SYLLABLE JJIT' : 42008, + 'YI SYLLABLE JJIX' : 42009, + 'YI SYLLABLE JJO' : 42021, + 'YI SYLLABLE JJOP' : 42022, + 'YI SYLLABLE JJOT' : 42019, + 'YI SYLLABLE JJOX' : 42020, + 'YI SYLLABLE JJU' : 42025, + 'YI SYLLABLE JJUO' : 42017, + 'YI SYLLABLE JJUOP' : 42018, + 'YI SYLLABLE JJUOX' : 42016, + 'YI SYLLABLE JJUP' : 42026, + 'YI SYLLABLE JJUR' : 42028, + 'YI SYLLABLE JJURX' : 42027, + 'YI SYLLABLE JJUT' : 42023, + 'YI SYLLABLE JJUX' : 42024, + 'YI SYLLABLE JJY' : 42031, + 'YI SYLLABLE JJYP' : 42032, + 'YI SYLLABLE JJYT' : 42029, + 'YI SYLLABLE JJYX' : 42030, + 'YI SYLLABLE JO' : 41966, + 'YI SYLLABLE JOP' : 41967, + 'YI SYLLABLE JOT' : 41964, + 'YI SYLLABLE JOX' : 41965, + 'YI SYLLABLE JU' : 41970, + 'YI SYLLABLE JUO' : 41962, + 'YI SYLLABLE JUOP' : 41963, + 'YI SYLLABLE JUOT' : 41960, + 'YI SYLLABLE JUOX' : 41961, + 'YI SYLLABLE JUP' : 41971, + 'YI SYLLABLE JUR' : 41973, + 'YI SYLLABLE JURX' : 41972, + 'YI SYLLABLE JUT' : 41968, + 'YI SYLLABLE JUX' : 41969, + 'YI SYLLABLE JY' : 41976, + 'YI SYLLABLE JYP' : 41977, + 'YI SYLLABLE JYR' : 41979, + 'YI SYLLABLE JYRX' : 41978, + 'YI SYLLABLE JYT' : 41974, + 'YI SYLLABLE JYX' : 41975, + 'YI SYLLABLE KA' : 41473, + 'YI SYLLABLE KAP' : 41474, + 'YI SYLLABLE KAT' : 41471, + 'YI SYLLABLE KAX' : 41472, + 'YI SYLLABLE KE' : 41484, + 'YI SYLLABLE KEP' : 41485, + 'YI SYLLABLE KET' : 41482, + 'YI SYLLABLE KEX' : 41483, + 'YI SYLLABLE KI' : 41466, + 'YI SYLLABLE KIE' : 41469, + 'YI SYLLABLE KIEP' : 41470, + 'YI SYLLABLE KIEX' : 41468, + 'YI SYLLABLE KIP' : 41467, + 'YI SYLLABLE KIT' : 41464, + 'YI SYLLABLE KIX' : 41465, + 'YI SYLLABLE KO' : 41480, + 'YI SYLLABLE KOP' : 41481, + 'YI SYLLABLE KOT' : 41478, + 'YI SYLLABLE KOX' : 41479, + 'YI SYLLABLE KU' : 41488, + 'YI SYLLABLE KUO' : 41476, + 'YI SYLLABLE KUOP' : 41477, + 'YI SYLLABLE KUOX' : 41475, + 'YI SYLLABLE KUP' : 41489, + 'YI SYLLABLE KUR' : 41491, + 'YI SYLLABLE KURX' : 41490, + 'YI SYLLABLE KUT' : 41486, + 'YI SYLLABLE KUX' : 41487, + 'YI SYLLABLE LA' : 41409, + 'YI SYLLABLE LAP' : 41410, + 'YI SYLLABLE LAT' : 41407, + 'YI SYLLABLE LAX' : 41408, + 'YI SYLLABLE LE' : 41420, + 'YI SYLLABLE LEP' : 41421, + 'YI SYLLABLE LEX' : 41419, + 'YI SYLLABLE LI' : 41401, + 'YI SYLLABLE LIE' : 41405, + 'YI SYLLABLE LIEP' : 41406, + 'YI SYLLABLE LIET' : 41403, + 'YI SYLLABLE LIEX' : 41404, + 'YI SYLLABLE LIP' : 41402, + 'YI SYLLABLE LIT' : 41399, + 'YI SYLLABLE LIX' : 41400, + 'YI SYLLABLE LO' : 41417, + 'YI SYLLABLE LOP' : 41418, + 'YI SYLLABLE LOT' : 41415, + 'YI SYLLABLE LOX' : 41416, + 'YI SYLLABLE LU' : 41424, + 'YI SYLLABLE LUO' : 41413, + 'YI SYLLABLE LUOP' : 41414, + 'YI SYLLABLE LUOT' : 41411, + 'YI SYLLABLE LUOX' : 41412, + 'YI SYLLABLE LUP' : 41425, + 'YI SYLLABLE LUR' : 41427, + 'YI SYLLABLE LURX' : 41426, + 'YI SYLLABLE LUT' : 41422, + 'YI SYLLABLE LUX' : 41423, + 'YI SYLLABLE LY' : 41430, + 'YI SYLLABLE LYP' : 41431, + 'YI SYLLABLE LYR' : 41433, + 'YI SYLLABLE LYRX' : 41432, + 'YI SYLLABLE LYT' : 41428, + 'YI SYLLABLE LYX' : 41429, + 'YI SYLLABLE MA' : 41143, + 'YI SYLLABLE MAP' : 41144, + 'YI SYLLABLE MAT' : 41141, + 'YI SYLLABLE MAX' : 41142, + 'YI SYLLABLE ME' : 41154, + 'YI SYLLABLE MEX' : 41153, + 'YI SYLLABLE MGA' : 41524, + 'YI SYLLABLE MGAP' : 41525, + 'YI SYLLABLE MGAT' : 41522, + 'YI SYLLABLE MGAX' : 41523, + 'YI SYLLABLE MGE' : 41534, + 'YI SYLLABLE MGEP' : 41535, + 'YI SYLLABLE MGEX' : 41533, + 'YI SYLLABLE MGIE' : 41521, + 'YI SYLLABLE MGIEX' : 41520, + 'YI SYLLABLE MGO' : 41531, + 'YI SYLLABLE MGOP' : 41532, + 'YI SYLLABLE MGOT' : 41529, + 'YI SYLLABLE MGOX' : 41530, + 'YI SYLLABLE MGU' : 41538, + 'YI SYLLABLE MGUO' : 41527, + 'YI SYLLABLE MGUOP' : 41528, + 'YI SYLLABLE MGUOX' : 41526, + 'YI SYLLABLE MGUP' : 41539, + 'YI SYLLABLE MGUR' : 41541, + 'YI SYLLABLE MGURX' : 41540, + 'YI SYLLABLE MGUT' : 41536, + 'YI SYLLABLE MGUX' : 41537, + 'YI SYLLABLE MI' : 41136, + 'YI SYLLABLE MIE' : 41139, + 'YI SYLLABLE MIEP' : 41140, + 'YI SYLLABLE MIEX' : 41138, + 'YI SYLLABLE MIP' : 41137, + 'YI SYLLABLE MIT' : 41134, + 'YI SYLLABLE MIX' : 41135, + 'YI SYLLABLE MO' : 41151, + 'YI SYLLABLE MOP' : 41152, + 'YI SYLLABLE MOT' : 41149, + 'YI SYLLABLE MOX' : 41150, + 'YI SYLLABLE MU' : 41157, + 'YI SYLLABLE MUO' : 41147, + 'YI SYLLABLE MUOP' : 41148, + 'YI SYLLABLE MUOT' : 41145, + 'YI SYLLABLE MUOX' : 41146, + 'YI SYLLABLE MUP' : 41158, + 'YI SYLLABLE MUR' : 41160, + 'YI SYLLABLE MURX' : 41159, + 'YI SYLLABLE MUT' : 41155, + 'YI SYLLABLE MUX' : 41156, + 'YI SYLLABLE MY' : 41163, + 'YI SYLLABLE MYP' : 41164, + 'YI SYLLABLE MYT' : 41161, + 'YI SYLLABLE MYX' : 41162, + 'YI SYLLABLE NA' : 41349, + 'YI SYLLABLE NAP' : 41350, + 'YI SYLLABLE NAX' : 41348, + 'YI SYLLABLE NBA' : 41087, + 'YI SYLLABLE NBAP' : 41088, + 'YI SYLLABLE NBAT' : 41085, + 'YI SYLLABLE NBAX' : 41086, + 'YI SYLLABLE NBI' : 41080, + 'YI SYLLABLE NBIE' : 41083, + 'YI SYLLABLE NBIEP' : 41084, + 'YI SYLLABLE NBIEX' : 41082, + 'YI SYLLABLE NBIP' : 41081, + 'YI SYLLABLE NBIT' : 41078, + 'YI SYLLABLE NBIX' : 41079, + 'YI SYLLABLE NBO' : 41091, + 'YI SYLLABLE NBOP' : 41092, + 'YI SYLLABLE NBOT' : 41089, + 'YI SYLLABLE NBOX' : 41090, + 'YI SYLLABLE NBU' : 41095, + 'YI SYLLABLE NBUP' : 41096, + 'YI SYLLABLE NBUR' : 41098, + 'YI SYLLABLE NBURX' : 41097, + 'YI SYLLABLE NBUT' : 41093, + 'YI SYLLABLE NBUX' : 41094, + 'YI SYLLABLE NBY' : 41101, + 'YI SYLLABLE NBYP' : 41102, + 'YI SYLLABLE NBYR' : 41104, + 'YI SYLLABLE NBYRX' : 41103, + 'YI SYLLABLE NBYT' : 41099, + 'YI SYLLABLE NBYX' : 41100, + 'YI SYLLABLE NDA' : 41305, + 'YI SYLLABLE NDAP' : 41306, + 'YI SYLLABLE NDAT' : 41303, + 'YI SYLLABLE NDAX' : 41304, + 'YI SYLLABLE NDE' : 41312, + 'YI SYLLABLE NDEP' : 41313, + 'YI SYLLABLE NDEX' : 41311, + 'YI SYLLABLE NDI' : 41299, + 'YI SYLLABLE NDIE' : 41302, + 'YI SYLLABLE NDIEX' : 41301, + 'YI SYLLABLE NDIP' : 41300, + 'YI SYLLABLE NDIT' : 41297, + 'YI SYLLABLE NDIX' : 41298, + 'YI SYLLABLE NDO' : 41309, + 'YI SYLLABLE NDOP' : 41310, + 'YI SYLLABLE NDOT' : 41307, + 'YI SYLLABLE NDOX' : 41308, + 'YI SYLLABLE NDU' : 41316, + 'YI SYLLABLE NDUP' : 41317, + 'YI SYLLABLE NDUR' : 41319, + 'YI SYLLABLE NDURX' : 41318, + 'YI SYLLABLE NDUT' : 41314, + 'YI SYLLABLE NDUX' : 41315, + 'YI SYLLABLE NE' : 41359, + 'YI SYLLABLE NEP' : 41360, + 'YI SYLLABLE NEX' : 41358, + 'YI SYLLABLE NGA' : 41570, + 'YI SYLLABLE NGAP' : 41571, + 'YI SYLLABLE NGAT' : 41568, + 'YI SYLLABLE NGAX' : 41569, + 'YI SYLLABLE NGE' : 41580, + 'YI SYLLABLE NGEP' : 41581, + 'YI SYLLABLE NGEX' : 41579, + 'YI SYLLABLE NGIE' : 41566, + 'YI SYLLABLE NGIEP' : 41567, + 'YI SYLLABLE NGIEX' : 41565, + 'YI SYLLABLE NGO' : 41577, + 'YI SYLLABLE NGOP' : 41578, + 'YI SYLLABLE NGOT' : 41575, + 'YI SYLLABLE NGOX' : 41576, + 'YI SYLLABLE NGUO' : 41574, + 'YI SYLLABLE NGUOT' : 41572, + 'YI SYLLABLE NGUOX' : 41573, + 'YI SYLLABLE NI' : 41343, + 'YI SYLLABLE NIE' : 41346, + 'YI SYLLABLE NIEP' : 41347, + 'YI SYLLABLE NIEX' : 41345, + 'YI SYLLABLE NIP' : 41344, + 'YI SYLLABLE NIT' : 41341, + 'YI SYLLABLE NIX' : 41342, + 'YI SYLLABLE NJI' : 42035, + 'YI SYLLABLE NJIE' : 42039, + 'YI SYLLABLE NJIEP' : 42040, + 'YI SYLLABLE NJIET' : 42037, + 'YI SYLLABLE NJIEX' : 42038, + 'YI SYLLABLE NJIP' : 42036, + 'YI SYLLABLE NJIT' : 42033, + 'YI SYLLABLE NJIX' : 42034, + 'YI SYLLABLE NJO' : 42045, + 'YI SYLLABLE NJOP' : 42046, + 'YI SYLLABLE NJOT' : 42043, + 'YI SYLLABLE NJOX' : 42044, + 'YI SYLLABLE NJU' : 42048, + 'YI SYLLABLE NJUO' : 42042, + 'YI SYLLABLE NJUOX' : 42041, + 'YI SYLLABLE NJUP' : 42049, + 'YI SYLLABLE NJUR' : 42051, + 'YI SYLLABLE NJURX' : 42050, + 'YI SYLLABLE NJUX' : 42047, + 'YI SYLLABLE NJY' : 42054, + 'YI SYLLABLE NJYP' : 42055, + 'YI SYLLABLE NJYR' : 42057, + 'YI SYLLABLE NJYRX' : 42056, + 'YI SYLLABLE NJYT' : 42052, + 'YI SYLLABLE NJYX' : 42053, + 'YI SYLLABLE NO' : 41356, + 'YI SYLLABLE NOP' : 41357, + 'YI SYLLABLE NOT' : 41354, + 'YI SYLLABLE NOX' : 41355, + 'YI SYLLABLE NRA' : 41878, + 'YI SYLLABLE NRAP' : 41879, + 'YI SYLLABLE NRAT' : 41876, + 'YI SYLLABLE NRAX' : 41877, + 'YI SYLLABLE NRE' : 41885, + 'YI SYLLABLE NREP' : 41886, + 'YI SYLLABLE NRET' : 41883, + 'YI SYLLABLE NREX' : 41884, + 'YI SYLLABLE NRO' : 41881, + 'YI SYLLABLE NROP' : 41882, + 'YI SYLLABLE NROX' : 41880, + 'YI SYLLABLE NRU' : 41889, + 'YI SYLLABLE NRUP' : 41890, + 'YI SYLLABLE NRUR' : 41892, + 'YI SYLLABLE NRURX' : 41891, + 'YI SYLLABLE NRUT' : 41887, + 'YI SYLLABLE NRUX' : 41888, + 'YI SYLLABLE NRY' : 41895, + 'YI SYLLABLE NRYP' : 41896, + 'YI SYLLABLE NRYR' : 41898, + 'YI SYLLABLE NRYRX' : 41897, + 'YI SYLLABLE NRYT' : 41893, + 'YI SYLLABLE NRYX' : 41894, + 'YI SYLLABLE NU' : 41363, + 'YI SYLLABLE NUO' : 41352, + 'YI SYLLABLE NUOP' : 41353, + 'YI SYLLABLE NUOX' : 41351, + 'YI SYLLABLE NUP' : 41364, + 'YI SYLLABLE NUR' : 41366, + 'YI SYLLABLE NURX' : 41365, + 'YI SYLLABLE NUT' : 41361, + 'YI SYLLABLE NUX' : 41362, + 'YI SYLLABLE NYI' : 42060, + 'YI SYLLABLE NYIE' : 42064, + 'YI SYLLABLE NYIEP' : 42065, + 'YI SYLLABLE NYIET' : 42062, + 'YI SYLLABLE NYIEX' : 42063, + 'YI SYLLABLE NYIP' : 42061, + 'YI SYLLABLE NYIT' : 42058, + 'YI SYLLABLE NYIX' : 42059, + 'YI SYLLABLE NYO' : 42071, + 'YI SYLLABLE NYOP' : 42072, + 'YI SYLLABLE NYOT' : 42069, + 'YI SYLLABLE NYOX' : 42070, + 'YI SYLLABLE NYU' : 42075, + 'YI SYLLABLE NYUO' : 42067, + 'YI SYLLABLE NYUOP' : 42068, + 'YI SYLLABLE NYUOX' : 42066, + 'YI SYLLABLE NYUP' : 42076, + 'YI SYLLABLE NYUT' : 42073, + 'YI SYLLABLE NYUX' : 42074, + 'YI SYLLABLE NZA' : 41718, + 'YI SYLLABLE NZAP' : 41719, + 'YI SYLLABLE NZAT' : 41716, + 'YI SYLLABLE NZAX' : 41717, + 'YI SYLLABLE NZE' : 41725, + 'YI SYLLABLE NZEX' : 41724, + 'YI SYLLABLE NZI' : 41711, + 'YI SYLLABLE NZIE' : 41714, + 'YI SYLLABLE NZIEP' : 41715, + 'YI SYLLABLE NZIEX' : 41713, + 'YI SYLLABLE NZIP' : 41712, + 'YI SYLLABLE NZIT' : 41709, + 'YI SYLLABLE NZIX' : 41710, + 'YI SYLLABLE NZOP' : 41723, + 'YI SYLLABLE NZOX' : 41722, + 'YI SYLLABLE NZU' : 41727, + 'YI SYLLABLE NZUO' : 41721, + 'YI SYLLABLE NZUOX' : 41720, + 'YI SYLLABLE NZUP' : 41728, + 'YI SYLLABLE NZUR' : 41730, + 'YI SYLLABLE NZURX' : 41729, + 'YI SYLLABLE NZUX' : 41726, + 'YI SYLLABLE NZY' : 41733, + 'YI SYLLABLE NZYP' : 41734, + 'YI SYLLABLE NZYR' : 41736, + 'YI SYLLABLE NZYRX' : 41735, + 'YI SYLLABLE NZYT' : 41731, + 'YI SYLLABLE NZYX' : 41732, + 'YI SYLLABLE O' : 40977, + 'YI SYLLABLE OP' : 40978, + 'YI SYLLABLE OT' : 40975, + 'YI SYLLABLE OX' : 40976, + 'YI SYLLABLE PA' : 41025, + 'YI SYLLABLE PAP' : 41026, + 'YI SYLLABLE PAT' : 41023, + 'YI SYLLABLE PAX' : 41024, + 'YI SYLLABLE PI' : 41018, + 'YI SYLLABLE PIE' : 41021, + 'YI SYLLABLE PIEP' : 41022, + 'YI SYLLABLE PIEX' : 41020, + 'YI SYLLABLE PIP' : 41019, + 'YI SYLLABLE PIT' : 41016, + 'YI SYLLABLE PIX' : 41017, + 'YI SYLLABLE PO' : 41032, + 'YI SYLLABLE POP' : 41033, + 'YI SYLLABLE POT' : 41030, + 'YI SYLLABLE POX' : 41031, + 'YI SYLLABLE PU' : 41036, + 'YI SYLLABLE PUO' : 41028, + 'YI SYLLABLE PUOP' : 41029, + 'YI SYLLABLE PUOX' : 41027, + 'YI SYLLABLE PUP' : 41037, + 'YI SYLLABLE PUR' : 41039, + 'YI SYLLABLE PURX' : 41038, + 'YI SYLLABLE PUT' : 41034, + 'YI SYLLABLE PUX' : 41035, + 'YI SYLLABLE PY' : 41042, + 'YI SYLLABLE PYP' : 41043, + 'YI SYLLABLE PYR' : 41045, + 'YI SYLLABLE PYRX' : 41044, + 'YI SYLLABLE PYT' : 41040, + 'YI SYLLABLE PYX' : 41041, + 'YI SYLLABLE QI' : 41982, + 'YI SYLLABLE QIE' : 41986, + 'YI SYLLABLE QIEP' : 41987, + 'YI SYLLABLE QIET' : 41984, + 'YI SYLLABLE QIEX' : 41985, + 'YI SYLLABLE QIP' : 41983, + 'YI SYLLABLE QIT' : 41980, + 'YI SYLLABLE QIX' : 41981, + 'YI SYLLABLE QO' : 41994, + 'YI SYLLABLE QOP' : 41995, + 'YI SYLLABLE QOT' : 41992, + 'YI SYLLABLE QOX' : 41993, + 'YI SYLLABLE QU' : 41998, + 'YI SYLLABLE QUO' : 41990, + 'YI SYLLABLE QUOP' : 41991, + 'YI SYLLABLE QUOT' : 41988, + 'YI SYLLABLE QUOX' : 41989, + 'YI SYLLABLE QUP' : 41999, + 'YI SYLLABLE QUR' : 42001, + 'YI SYLLABLE QURX' : 42000, + 'YI SYLLABLE QUT' : 41996, + 'YI SYLLABLE QUX' : 41997, + 'YI SYLLABLE QY' : 42004, + 'YI SYLLABLE QYP' : 42005, + 'YI SYLLABLE QYR' : 42007, + 'YI SYLLABLE QYRX' : 42006, + 'YI SYLLABLE QYT' : 42002, + 'YI SYLLABLE QYX' : 42003, + 'YI SYLLABLE RA' : 41928, + 'YI SYLLABLE RAP' : 41929, + 'YI SYLLABLE RAT' : 41926, + 'YI SYLLABLE RAX' : 41927, + 'YI SYLLABLE RE' : 41938, + 'YI SYLLABLE REP' : 41939, + 'YI SYLLABLE REX' : 41937, + 'YI SYLLABLE RO' : 41935, + 'YI SYLLABLE ROP' : 41936, + 'YI SYLLABLE ROT' : 41933, + 'YI SYLLABLE ROX' : 41934, + 'YI SYLLABLE RRA' : 41853, + 'YI SYLLABLE RRAX' : 41852, + 'YI SYLLABLE RRE' : 41862, + 'YI SYLLABLE RREP' : 41863, + 'YI SYLLABLE RRET' : 41860, + 'YI SYLLABLE RREX' : 41861, + 'YI SYLLABLE RRO' : 41858, + 'YI SYLLABLE RROP' : 41859, + 'YI SYLLABLE RROT' : 41856, + 'YI SYLLABLE RROX' : 41857, + 'YI SYLLABLE RRU' : 41866, + 'YI SYLLABLE RRUO' : 41855, + 'YI SYLLABLE RRUOX' : 41854, + 'YI SYLLABLE RRUP' : 41867, + 'YI SYLLABLE RRUR' : 41869, + 'YI SYLLABLE RRURX' : 41868, + 'YI SYLLABLE RRUT' : 41864, + 'YI SYLLABLE RRUX' : 41865, + 'YI SYLLABLE RRY' : 41872, + 'YI SYLLABLE RRYP' : 41873, + 'YI SYLLABLE RRYR' : 41875, + 'YI SYLLABLE RRYRX' : 41874, + 'YI SYLLABLE RRYT' : 41870, + 'YI SYLLABLE RRYX' : 41871, + 'YI SYLLABLE RU' : 41942, + 'YI SYLLABLE RUO' : 41931, + 'YI SYLLABLE RUOP' : 41932, + 'YI SYLLABLE RUOX' : 41930, + 'YI SYLLABLE RUP' : 41943, + 'YI SYLLABLE RUR' : 41945, + 'YI SYLLABLE RURX' : 41944, + 'YI SYLLABLE RUT' : 41940, + 'YI SYLLABLE RUX' : 41941, + 'YI SYLLABLE RY' : 41948, + 'YI SYLLABLE RYP' : 41949, + 'YI SYLLABLE RYR' : 41951, + 'YI SYLLABLE RYRX' : 41950, + 'YI SYLLABLE RYT' : 41946, + 'YI SYLLABLE RYX' : 41947, + 'YI SYLLABLE SA' : 41746, + 'YI SYLLABLE SAP' : 41747, + 'YI SYLLABLE SAT' : 41744, + 'YI SYLLABLE SAX' : 41745, + 'YI SYLLABLE SE' : 41756, + 'YI SYLLABLE SEP' : 41757, + 'YI SYLLABLE SEX' : 41755, + 'YI SYLLABLE SHA' : 41901, + 'YI SYLLABLE SHAP' : 41902, + 'YI SYLLABLE SHAT' : 41899, + 'YI SYLLABLE SHAX' : 41900, + 'YI SYLLABLE SHE' : 41912, + 'YI SYLLABLE SHEP' : 41913, + 'YI SYLLABLE SHET' : 41910, + 'YI SYLLABLE SHEX' : 41911, + 'YI SYLLABLE SHO' : 41908, + 'YI SYLLABLE SHOP' : 41909, + 'YI SYLLABLE SHOT' : 41906, + 'YI SYLLABLE SHOX' : 41907, + 'YI SYLLABLE SHU' : 41916, + 'YI SYLLABLE SHUO' : 41904, + 'YI SYLLABLE SHUOP' : 41905, + 'YI SYLLABLE SHUOX' : 41903, + 'YI SYLLABLE SHUP' : 41917, + 'YI SYLLABLE SHUR' : 41919, + 'YI SYLLABLE SHURX' : 41918, + 'YI SYLLABLE SHUT' : 41914, + 'YI SYLLABLE SHUX' : 41915, + 'YI SYLLABLE SHY' : 41922, + 'YI SYLLABLE SHYP' : 41923, + 'YI SYLLABLE SHYR' : 41925, + 'YI SYLLABLE SHYRX' : 41924, + 'YI SYLLABLE SHYT' : 41920, + 'YI SYLLABLE SHYX' : 41921, + 'YI SYLLABLE SI' : 41739, + 'YI SYLLABLE SIE' : 41742, + 'YI SYLLABLE SIEP' : 41743, + 'YI SYLLABLE SIEX' : 41741, + 'YI SYLLABLE SIP' : 41740, + 'YI SYLLABLE SIT' : 41737, + 'YI SYLLABLE SIX' : 41738, + 'YI SYLLABLE SO' : 41753, + 'YI SYLLABLE SOP' : 41754, + 'YI SYLLABLE SOT' : 41751, + 'YI SYLLABLE SOX' : 41752, + 'YI SYLLABLE SSA' : 41779, + 'YI SYLLABLE SSAP' : 41780, + 'YI SYLLABLE SSAT' : 41777, + 'YI SYLLABLE SSAX' : 41778, + 'YI SYLLABLE SSE' : 41786, + 'YI SYLLABLE SSEP' : 41787, + 'YI SYLLABLE SSEX' : 41785, + 'YI SYLLABLE SSI' : 41772, + 'YI SYLLABLE SSIE' : 41775, + 'YI SYLLABLE SSIEP' : 41776, + 'YI SYLLABLE SSIEX' : 41774, + 'YI SYLLABLE SSIP' : 41773, + 'YI SYLLABLE SSIT' : 41770, + 'YI SYLLABLE SSIX' : 41771, + 'YI SYLLABLE SSO' : 41783, + 'YI SYLLABLE SSOP' : 41784, + 'YI SYLLABLE SSOT' : 41781, + 'YI SYLLABLE SSOX' : 41782, + 'YI SYLLABLE SSU' : 41790, + 'YI SYLLABLE SSUP' : 41791, + 'YI SYLLABLE SSUT' : 41788, + 'YI SYLLABLE SSUX' : 41789, + 'YI SYLLABLE SSY' : 41794, + 'YI SYLLABLE SSYP' : 41795, + 'YI SYLLABLE SSYR' : 41797, + 'YI SYLLABLE SSYRX' : 41796, + 'YI SYLLABLE SSYT' : 41792, + 'YI SYLLABLE SSYX' : 41793, + 'YI SYLLABLE SU' : 41760, + 'YI SYLLABLE SUO' : 41749, + 'YI SYLLABLE SUOP' : 41750, + 'YI SYLLABLE SUOX' : 41748, + 'YI SYLLABLE SUP' : 41761, + 'YI SYLLABLE SUR' : 41763, + 'YI SYLLABLE SURX' : 41762, + 'YI SYLLABLE SUT' : 41758, + 'YI SYLLABLE SUX' : 41759, + 'YI SYLLABLE SY' : 41766, + 'YI SYLLABLE SYP' : 41767, + 'YI SYLLABLE SYR' : 41769, + 'YI SYLLABLE SYRX' : 41768, + 'YI SYLLABLE SYT' : 41764, + 'YI SYLLABLE SYX' : 41765, + 'YI SYLLABLE TA' : 41251, + 'YI SYLLABLE TAP' : 41252, + 'YI SYLLABLE TAT' : 41249, + 'YI SYLLABLE TAX' : 41250, + 'YI SYLLABLE TE' : 41262, + 'YI SYLLABLE TEP' : 41263, + 'YI SYLLABLE TEX' : 41261, + 'YI SYLLABLE TI' : 41244, + 'YI SYLLABLE TIE' : 41247, + 'YI SYLLABLE TIEP' : 41248, + 'YI SYLLABLE TIEX' : 41246, + 'YI SYLLABLE TIP' : 41245, + 'YI SYLLABLE TIT' : 41242, + 'YI SYLLABLE TIX' : 41243, + 'YI SYLLABLE TO' : 41259, + 'YI SYLLABLE TOP' : 41260, + 'YI SYLLABLE TOT' : 41257, + 'YI SYLLABLE TOX' : 41258, + 'YI SYLLABLE TU' : 41266, + 'YI SYLLABLE TUO' : 41255, + 'YI SYLLABLE TUOP' : 41256, + 'YI SYLLABLE TUOT' : 41253, + 'YI SYLLABLE TUOX' : 41254, + 'YI SYLLABLE TUP' : 41267, + 'YI SYLLABLE TUR' : 41269, + 'YI SYLLABLE TURX' : 41268, + 'YI SYLLABLE TUT' : 41264, + 'YI SYLLABLE TUX' : 41265, + 'YI SYLLABLE UO' : 40973, + 'YI SYLLABLE UOP' : 40974, + 'YI SYLLABLE UOX' : 40972, + 'YI SYLLABLE VA' : 41196, + 'YI SYLLABLE VAP' : 41197, + 'YI SYLLABLE VAT' : 41194, + 'YI SYLLABLE VAX' : 41195, + 'YI SYLLABLE VEP' : 41203, + 'YI SYLLABLE VEX' : 41202, + 'YI SYLLABLE VI' : 41188, + 'YI SYLLABLE VIE' : 41192, + 'YI SYLLABLE VIEP' : 41193, + 'YI SYLLABLE VIET' : 41190, + 'YI SYLLABLE VIEX' : 41191, + 'YI SYLLABLE VIP' : 41189, + 'YI SYLLABLE VIT' : 41186, + 'YI SYLLABLE VIX' : 41187, + 'YI SYLLABLE VO' : 41200, + 'YI SYLLABLE VOP' : 41201, + 'YI SYLLABLE VOT' : 41198, + 'YI SYLLABLE VOX' : 41199, + 'YI SYLLABLE VU' : 41206, + 'YI SYLLABLE VUP' : 41207, + 'YI SYLLABLE VUR' : 41209, + 'YI SYLLABLE VURX' : 41208, + 'YI SYLLABLE VUT' : 41204, + 'YI SYLLABLE VUX' : 41205, + 'YI SYLLABLE VY' : 41212, + 'YI SYLLABLE VYP' : 41213, + 'YI SYLLABLE VYR' : 41215, + 'YI SYLLABLE VYRX' : 41214, + 'YI SYLLABLE VYT' : 41210, + 'YI SYLLABLE VYX' : 41211, + 'YI SYLLABLE WA' : 41602, + 'YI SYLLABLE WAP' : 41603, + 'YI SYLLABLE WAT' : 41600, + 'YI SYLLABLE WAX' : 41601, + 'YI SYLLABLE WE' : 41611, + 'YI SYLLABLE WEP' : 41612, + 'YI SYLLABLE WEX' : 41610, + 'YI SYLLABLE WO' : 41608, + 'YI SYLLABLE WOP' : 41609, + 'YI SYLLABLE WOX' : 41607, + 'YI SYLLABLE WU' : 40981, + 'YI SYLLABLE WUO' : 41605, + 'YI SYLLABLE WUOP' : 41606, + 'YI SYLLABLE WUOX' : 41604, + 'YI SYLLABLE XI' : 42079, + 'YI SYLLABLE XIE' : 42083, + 'YI SYLLABLE XIEP' : 42084, + 'YI SYLLABLE XIET' : 42081, + 'YI SYLLABLE XIEX' : 42082, + 'YI SYLLABLE XIP' : 42080, + 'YI SYLLABLE XIT' : 42077, + 'YI SYLLABLE XIX' : 42078, + 'YI SYLLABLE XO' : 42089, + 'YI SYLLABLE XOP' : 42090, + 'YI SYLLABLE XOT' : 42087, + 'YI SYLLABLE XOX' : 42088, + 'YI SYLLABLE XUO' : 42086, + 'YI SYLLABLE XUOX' : 42085, + 'YI SYLLABLE XY' : 42093, + 'YI SYLLABLE XYP' : 42094, + 'YI SYLLABLE XYR' : 42096, + 'YI SYLLABLE XYRX' : 42095, + 'YI SYLLABLE XYT' : 42091, + 'YI SYLLABLE XYX' : 42092, + 'YI SYLLABLE YI' : 42099, + 'YI SYLLABLE YIE' : 42103, + 'YI SYLLABLE YIEP' : 42104, + 'YI SYLLABLE YIET' : 42101, + 'YI SYLLABLE YIEX' : 42102, + 'YI SYLLABLE YIP' : 42100, + 'YI SYLLABLE YIT' : 42097, + 'YI SYLLABLE YIX' : 42098, + 'YI SYLLABLE YO' : 42111, + 'YI SYLLABLE YOP' : 42112, + 'YI SYLLABLE YOT' : 42109, + 'YI SYLLABLE YOX' : 42110, + 'YI SYLLABLE YU' : 42115, + 'YI SYLLABLE YUO' : 42107, + 'YI SYLLABLE YUOP' : 42108, + 'YI SYLLABLE YUOT' : 42105, + 'YI SYLLABLE YUOX' : 42106, + 'YI SYLLABLE YUP' : 42116, + 'YI SYLLABLE YUR' : 42118, + 'YI SYLLABLE YURX' : 42117, + 'YI SYLLABLE YUT' : 42113, + 'YI SYLLABLE YUX' : 42114, + 'YI SYLLABLE YY' : 42121, + 'YI SYLLABLE YYP' : 42122, + 'YI SYLLABLE YYR' : 42124, + 'YI SYLLABLE YYRX' : 42123, + 'YI SYLLABLE YYT' : 42119, + 'YI SYLLABLE YYX' : 42120, + 'YI SYLLABLE ZA' : 41622, + 'YI SYLLABLE ZAP' : 41623, + 'YI SYLLABLE ZAT' : 41620, + 'YI SYLLABLE ZAX' : 41621, + 'YI SYLLABLE ZE' : 41632, + 'YI SYLLABLE ZEP' : 41633, + 'YI SYLLABLE ZEX' : 41631, + 'YI SYLLABLE ZHA' : 41800, + 'YI SYLLABLE ZHAP' : 41801, + 'YI SYLLABLE ZHAT' : 41798, + 'YI SYLLABLE ZHAX' : 41799, + 'YI SYLLABLE ZHE' : 41811, + 'YI SYLLABLE ZHEP' : 41812, + 'YI SYLLABLE ZHET' : 41809, + 'YI SYLLABLE ZHEX' : 41810, + 'YI SYLLABLE ZHO' : 41807, + 'YI SYLLABLE ZHOP' : 41808, + 'YI SYLLABLE ZHOT' : 41805, + 'YI SYLLABLE ZHOX' : 41806, + 'YI SYLLABLE ZHU' : 41815, + 'YI SYLLABLE ZHUO' : 41803, + 'YI SYLLABLE ZHUOP' : 41804, + 'YI SYLLABLE ZHUOX' : 41802, + 'YI SYLLABLE ZHUP' : 41816, + 'YI SYLLABLE ZHUR' : 41818, + 'YI SYLLABLE ZHURX' : 41817, + 'YI SYLLABLE ZHUT' : 41813, + 'YI SYLLABLE ZHUX' : 41814, + 'YI SYLLABLE ZHY' : 41821, + 'YI SYLLABLE ZHYP' : 41822, + 'YI SYLLABLE ZHYR' : 41824, + 'YI SYLLABLE ZHYRX' : 41823, + 'YI SYLLABLE ZHYT' : 41819, + 'YI SYLLABLE ZHYX' : 41820, + 'YI SYLLABLE ZI' : 41615, + 'YI SYLLABLE ZIE' : 41618, + 'YI SYLLABLE ZIEP' : 41619, + 'YI SYLLABLE ZIEX' : 41617, + 'YI SYLLABLE ZIP' : 41616, + 'YI SYLLABLE ZIT' : 41613, + 'YI SYLLABLE ZIX' : 41614, + 'YI SYLLABLE ZO' : 41629, + 'YI SYLLABLE ZOP' : 41630, + 'YI SYLLABLE ZOT' : 41627, + 'YI SYLLABLE ZOX' : 41628, + 'YI SYLLABLE ZU' : 41636, + 'YI SYLLABLE ZUO' : 41625, + 'YI SYLLABLE ZUOP' : 41626, + 'YI SYLLABLE ZUOX' : 41624, + 'YI SYLLABLE ZUP' : 41637, + 'YI SYLLABLE ZUR' : 41639, + 'YI SYLLABLE ZURX' : 41638, + 'YI SYLLABLE ZUT' : 41634, + 'YI SYLLABLE ZUX' : 41635, + 'YI SYLLABLE ZY' : 41642, + 'YI SYLLABLE ZYP' : 41643, + 'YI SYLLABLE ZYR' : 41645, + 'YI SYLLABLE ZYRX' : 41644, + 'YI SYLLABLE ZYT' : 41640, + 'YI SYLLABLE ZYX' : 41641, + 'YI SYLLABLE ZZA' : 41690, + 'YI SYLLABLE ZZAP' : 41691, + 'YI SYLLABLE ZZAT' : 41688, + 'YI SYLLABLE ZZAX' : 41689, + 'YI SYLLABLE ZZE' : 41696, + 'YI SYLLABLE ZZEP' : 41697, + 'YI SYLLABLE ZZEX' : 41695, + 'YI SYLLABLE ZZI' : 41682, + 'YI SYLLABLE ZZIE' : 41686, + 'YI SYLLABLE ZZIEP' : 41687, + 'YI SYLLABLE ZZIET' : 41684, + 'YI SYLLABLE ZZIEX' : 41685, + 'YI SYLLABLE ZZIP' : 41683, + 'YI SYLLABLE ZZIT' : 41680, + 'YI SYLLABLE ZZIX' : 41681, + 'YI SYLLABLE ZZO' : 41693, + 'YI SYLLABLE ZZOP' : 41694, + 'YI SYLLABLE ZZOX' : 41692, + 'YI SYLLABLE ZZU' : 41699, + 'YI SYLLABLE ZZUP' : 41700, + 'YI SYLLABLE ZZUR' : 41702, + 'YI SYLLABLE ZZURX' : 41701, + 'YI SYLLABLE ZZUX' : 41698, + 'YI SYLLABLE ZZY' : 41705, + 'YI SYLLABLE ZZYP' : 41706, + 'YI SYLLABLE ZZYR' : 41708, + 'YI SYLLABLE ZZYRX' : 41707, + 'YI SYLLABLE ZZYT' : 41703, + 'YI SYLLABLE ZZYX' : 41704, + 'YIN YANG' : 9775, + 'Z NOTATION BAG MEMBERSHIP' : 8959, + 'Z NOTATION DOMAIN ANTIRESTRICTION' : 10852, + 'Z NOTATION LEFT BINDING BRACKET' : 10633, + 'Z NOTATION LEFT IMAGE BRACKET' : 10631, + 'Z NOTATION RANGE ANTIRESTRICTION' : 10853, + 'Z NOTATION RELATIONAL COMPOSITION' : 10814, + 'Z NOTATION RIGHT BINDING BRACKET' : 10634, + 'Z NOTATION RIGHT IMAGE BRACKET' : 10632, + 'Z NOTATION SCHEMA COMPOSITION' : 10783, + 'Z NOTATION SCHEMA PIPING' : 10784, + 'Z NOTATION SCHEMA PROJECTION' : 10785, + 'Z NOTATION SPOT' : 10625, + 'Z NOTATION TYPE COLON' : 10626, + 'ZERO WIDTH JOINER' : 8205, + 'ZERO WIDTH NO-BREAK SPACE' : 65279, + 'ZERO WIDTH NON-JOINER' : 8204, + 'ZERO WIDTH SPACE' : 8203, +} + +decimalValue = { + 48 : 0, + 49 : 1, + 50 : 2, + 51 : 3, + 52 : 4, + 53 : 5, + 54 : 6, + 55 : 7, + 56 : 8, + 57 : 9, + 178 : 2, + 179 : 3, + 185 : 1, + 1632 : 0, + 1633 : 1, + 1634 : 2, + 1635 : 3, + 1636 : 4, + 1637 : 5, + 1638 : 6, + 1639 : 7, + 1640 : 8, + 1641 : 9, + 1776 : 0, + 1777 : 1, + 1778 : 2, + 1779 : 3, + 1780 : 4, + 1781 : 5, + 1782 : 6, + 1783 : 7, + 1784 : 8, + 1785 : 9, + 2406 : 0, + 2407 : 1, + 2408 : 2, + 2409 : 3, + 2410 : 4, + 2411 : 5, + 2412 : 6, + 2413 : 7, + 2414 : 8, + 2415 : 9, + 2534 : 0, + 2535 : 1, + 2536 : 2, + 2537 : 3, + 2538 : 4, + 2539 : 5, + 2540 : 6, + 2541 : 7, + 2542 : 8, + 2543 : 9, + 2662 : 0, + 2663 : 1, + 2664 : 2, + 2665 : 3, + 2666 : 4, + 2667 : 5, + 2668 : 6, + 2669 : 7, + 2670 : 8, + 2671 : 9, + 2790 : 0, + 2791 : 1, + 2792 : 2, + 2793 : 3, + 2794 : 4, + 2795 : 5, + 2796 : 6, + 2797 : 7, + 2798 : 8, + 2799 : 9, + 2918 : 0, + 2919 : 1, + 2920 : 2, + 2921 : 3, + 2922 : 4, + 2923 : 5, + 2924 : 6, + 2925 : 7, + 2926 : 8, + 2927 : 9, + 3047 : 1, + 3048 : 2, + 3049 : 3, + 3050 : 4, + 3051 : 5, + 3052 : 6, + 3053 : 7, + 3054 : 8, + 3055 : 9, + 3174 : 0, + 3175 : 1, + 3176 : 2, + 3177 : 3, + 3178 : 4, + 3179 : 5, + 3180 : 6, + 3181 : 7, + 3182 : 8, + 3183 : 9, + 3302 : 0, + 3303 : 1, + 3304 : 2, + 3305 : 3, + 3306 : 4, + 3307 : 5, + 3308 : 6, + 3309 : 7, + 3310 : 8, + 3311 : 9, + 3430 : 0, + 3431 : 1, + 3432 : 2, + 3433 : 3, + 3434 : 4, + 3435 : 5, + 3436 : 6, + 3437 : 7, + 3438 : 8, + 3439 : 9, + 3664 : 0, + 3665 : 1, + 3666 : 2, + 3667 : 3, + 3668 : 4, + 3669 : 5, + 3670 : 6, + 3671 : 7, + 3672 : 8, + 3673 : 9, + 3792 : 0, + 3793 : 1, + 3794 : 2, + 3795 : 3, + 3796 : 4, + 3797 : 5, + 3798 : 6, + 3799 : 7, + 3800 : 8, + 3801 : 9, + 3872 : 0, + 3873 : 1, + 3874 : 2, + 3875 : 3, + 3876 : 4, + 3877 : 5, + 3878 : 6, + 3879 : 7, + 3880 : 8, + 3881 : 9, + 4160 : 0, + 4161 : 1, + 4162 : 2, + 4163 : 3, + 4164 : 4, + 4165 : 5, + 4166 : 6, + 4167 : 7, + 4168 : 8, + 4169 : 9, + 4969 : 1, + 4970 : 2, + 4971 : 3, + 4972 : 4, + 4973 : 5, + 4974 : 6, + 4975 : 7, + 4976 : 8, + 4977 : 9, + 6112 : 0, + 6113 : 1, + 6114 : 2, + 6115 : 3, + 6116 : 4, + 6117 : 5, + 6118 : 6, + 6119 : 7, + 6120 : 8, + 6121 : 9, + 6160 : 0, + 6161 : 1, + 6162 : 2, + 6163 : 3, + 6164 : 4, + 6165 : 5, + 6166 : 6, + 6167 : 7, + 6168 : 8, + 6169 : 9, + 8304 : 0, + 8308 : 4, + 8309 : 5, + 8310 : 6, + 8311 : 7, + 8312 : 8, + 8313 : 9, + 8320 : 0, + 8321 : 1, + 8322 : 2, + 8323 : 3, + 8324 : 4, + 8325 : 5, + 8326 : 6, + 8327 : 7, + 8328 : 8, + 8329 : 9, + 65296 : 0, + 65297 : 1, + 65298 : 2, + 65299 : 3, + 65300 : 4, + 65301 : 5, + 65302 : 6, + 65303 : 7, + 65304 : 8, + 65305 : 9, + 120782 : 0, + 120783 : 1, + 120784 : 2, + 120785 : 3, + 120786 : 4, + 120787 : 5, + 120788 : 6, + 120789 : 7, + 120790 : 8, + 120791 : 9, + 120792 : 0, + 120793 : 1, + 120794 : 2, + 120795 : 3, + 120796 : 4, + 120797 : 5, + 120798 : 6, + 120799 : 7, + 120800 : 8, + 120801 : 9, + 120802 : 0, + 120803 : 1, + 120804 : 2, + 120805 : 3, + 120806 : 4, + 120807 : 5, + 120808 : 6, + 120809 : 7, + 120810 : 8, + 120811 : 9, + 120812 : 0, + 120813 : 1, + 120814 : 2, + 120815 : 3, + 120816 : 4, + 120817 : 5, + 120818 : 6, + 120819 : 7, + 120820 : 8, + 120821 : 9, + 120822 : 0, + 120823 : 1, + 120824 : 2, + 120825 : 3, + 120826 : 4, + 120827 : 5, + 120828 : 6, + 120829 : 7, + 120830 : 8, + 120831 : 9, +} + +digitValue = { + 48 : 0, + 49 : 1, + 50 : 2, + 51 : 3, + 52 : 4, + 53 : 5, + 54 : 6, + 55 : 7, + 56 : 8, + 57 : 9, + 178 : 2, + 179 : 3, + 185 : 1, + 1632 : 0, + 1633 : 1, + 1634 : 2, + 1635 : 3, + 1636 : 4, + 1637 : 5, + 1638 : 6, + 1639 : 7, + 1640 : 8, + 1641 : 9, + 1776 : 0, + 1777 : 1, + 1778 : 2, + 1779 : 3, + 1780 : 4, + 1781 : 5, + 1782 : 6, + 1783 : 7, + 1784 : 8, + 1785 : 9, + 2406 : 0, + 2407 : 1, + 2408 : 2, + 2409 : 3, + 2410 : 4, + 2411 : 5, + 2412 : 6, + 2413 : 7, + 2414 : 8, + 2415 : 9, + 2534 : 0, + 2535 : 1, + 2536 : 2, + 2537 : 3, + 2538 : 4, + 2539 : 5, + 2540 : 6, + 2541 : 7, + 2542 : 8, + 2543 : 9, + 2662 : 0, + 2663 : 1, + 2664 : 2, + 2665 : 3, + 2666 : 4, + 2667 : 5, + 2668 : 6, + 2669 : 7, + 2670 : 8, + 2671 : 9, + 2790 : 0, + 2791 : 1, + 2792 : 2, + 2793 : 3, + 2794 : 4, + 2795 : 5, + 2796 : 6, + 2797 : 7, + 2798 : 8, + 2799 : 9, + 2918 : 0, + 2919 : 1, + 2920 : 2, + 2921 : 3, + 2922 : 4, + 2923 : 5, + 2924 : 6, + 2925 : 7, + 2926 : 8, + 2927 : 9, + 3047 : 1, + 3048 : 2, + 3049 : 3, + 3050 : 4, + 3051 : 5, + 3052 : 6, + 3053 : 7, + 3054 : 8, + 3055 : 9, + 3174 : 0, + 3175 : 1, + 3176 : 2, + 3177 : 3, + 3178 : 4, + 3179 : 5, + 3180 : 6, + 3181 : 7, + 3182 : 8, + 3183 : 9, + 3302 : 0, + 3303 : 1, + 3304 : 2, + 3305 : 3, + 3306 : 4, + 3307 : 5, + 3308 : 6, + 3309 : 7, + 3310 : 8, + 3311 : 9, + 3430 : 0, + 3431 : 1, + 3432 : 2, + 3433 : 3, + 3434 : 4, + 3435 : 5, + 3436 : 6, + 3437 : 7, + 3438 : 8, + 3439 : 9, + 3664 : 0, + 3665 : 1, + 3666 : 2, + 3667 : 3, + 3668 : 4, + 3669 : 5, + 3670 : 6, + 3671 : 7, + 3672 : 8, + 3673 : 9, + 3792 : 0, + 3793 : 1, + 3794 : 2, + 3795 : 3, + 3796 : 4, + 3797 : 5, + 3798 : 6, + 3799 : 7, + 3800 : 8, + 3801 : 9, + 3872 : 0, + 3873 : 1, + 3874 : 2, + 3875 : 3, + 3876 : 4, + 3877 : 5, + 3878 : 6, + 3879 : 7, + 3880 : 8, + 3881 : 9, + 4160 : 0, + 4161 : 1, + 4162 : 2, + 4163 : 3, + 4164 : 4, + 4165 : 5, + 4166 : 6, + 4167 : 7, + 4168 : 8, + 4169 : 9, + 4969 : 1, + 4970 : 2, + 4971 : 3, + 4972 : 4, + 4973 : 5, + 4974 : 6, + 4975 : 7, + 4976 : 8, + 4977 : 9, + 6112 : 0, + 6113 : 1, + 6114 : 2, + 6115 : 3, + 6116 : 4, + 6117 : 5, + 6118 : 6, + 6119 : 7, + 6120 : 8, + 6121 : 9, + 6160 : 0, + 6161 : 1, + 6162 : 2, + 6163 : 3, + 6164 : 4, + 6165 : 5, + 6166 : 6, + 6167 : 7, + 6168 : 8, + 6169 : 9, + 8304 : 0, + 8308 : 4, + 8309 : 5, + 8310 : 6, + 8311 : 7, + 8312 : 8, + 8313 : 9, + 8320 : 0, + 8321 : 1, + 8322 : 2, + 8323 : 3, + 8324 : 4, + 8325 : 5, + 8326 : 6, + 8327 : 7, + 8328 : 8, + 8329 : 9, + 9312 : 1, + 9313 : 2, + 9314 : 3, + 9315 : 4, + 9316 : 5, + 9317 : 6, + 9318 : 7, + 9319 : 8, + 9320 : 9, + 9332 : 1, + 9333 : 2, + 9334 : 3, + 9335 : 4, + 9336 : 5, + 9337 : 6, + 9338 : 7, + 9339 : 8, + 9340 : 9, + 9352 : 1, + 9353 : 2, + 9354 : 3, + 9355 : 4, + 9356 : 5, + 9357 : 6, + 9358 : 7, + 9359 : 8, + 9360 : 9, + 9450 : 0, + 9461 : 1, + 9462 : 2, + 9463 : 3, + 9464 : 4, + 9465 : 5, + 9466 : 6, + 9467 : 7, + 9468 : 8, + 9469 : 9, + 10102 : 1, + 10103 : 2, + 10104 : 3, + 10105 : 4, + 10106 : 5, + 10107 : 6, + 10108 : 7, + 10109 : 8, + 10110 : 9, + 10112 : 1, + 10113 : 2, + 10114 : 3, + 10115 : 4, + 10116 : 5, + 10117 : 6, + 10118 : 7, + 10119 : 8, + 10120 : 9, + 10122 : 1, + 10123 : 2, + 10124 : 3, + 10125 : 4, + 10126 : 5, + 10127 : 6, + 10128 : 7, + 10129 : 8, + 10130 : 9, + 65296 : 0, + 65297 : 1, + 65298 : 2, + 65299 : 3, + 65300 : 4, + 65301 : 5, + 65302 : 6, + 65303 : 7, + 65304 : 8, + 65305 : 9, + 120782 : 0, + 120783 : 1, + 120784 : 2, + 120785 : 3, + 120786 : 4, + 120787 : 5, + 120788 : 6, + 120789 : 7, + 120790 : 8, + 120791 : 9, + 120792 : 0, + 120793 : 1, + 120794 : 2, + 120795 : 3, + 120796 : 4, + 120797 : 5, + 120798 : 6, + 120799 : 7, + 120800 : 8, + 120801 : 9, + 120802 : 0, + 120803 : 1, + 120804 : 2, + 120805 : 3, + 120806 : 4, + 120807 : 5, + 120808 : 6, + 120809 : 7, + 120810 : 8, + 120811 : 9, + 120812 : 0, + 120813 : 1, + 120814 : 2, + 120815 : 3, + 120816 : 4, + 120817 : 5, + 120818 : 6, + 120819 : 7, + 120820 : 8, + 120821 : 9, + 120822 : 0, + 120823 : 1, + 120824 : 2, + 120825 : 3, + 120826 : 4, + 120827 : 5, + 120828 : 6, + 120829 : 7, + 120830 : 8, + 120831 : 9, +} + +numericValue = { + 48 : 0.0, + 49 : 1.0, + 50 : 2.0, + 51 : 3.0, + 52 : 4.0, + 53 : 5.0, + 54 : 6.0, + 55 : 7.0, + 56 : 8.0, + 57 : 9.0, + 178 : 2.0, + 179 : 3.0, + 185 : 1.0, + 188 : 0.25, + 189 : 0.5, + 190 : 0.75, + 1632 : 0.0, + 1633 : 1.0, + 1634 : 2.0, + 1635 : 3.0, + 1636 : 4.0, + 1637 : 5.0, + 1638 : 6.0, + 1639 : 7.0, + 1640 : 8.0, + 1641 : 9.0, + 1776 : 0.0, + 1777 : 1.0, + 1778 : 2.0, + 1779 : 3.0, + 1780 : 4.0, + 1781 : 5.0, + 1782 : 6.0, + 1783 : 7.0, + 1784 : 8.0, + 1785 : 9.0, + 2406 : 0.0, + 2407 : 1.0, + 2408 : 2.0, + 2409 : 3.0, + 2410 : 4.0, + 2411 : 5.0, + 2412 : 6.0, + 2413 : 7.0, + 2414 : 8.0, + 2415 : 9.0, + 2534 : 0.0, + 2535 : 1.0, + 2536 : 2.0, + 2537 : 3.0, + 2538 : 4.0, + 2539 : 5.0, + 2540 : 6.0, + 2541 : 7.0, + 2542 : 8.0, + 2543 : 9.0, + 2548 : 1.0, + 2549 : 2.0, + 2550 : 3.0, + 2551 : 4.0, + 2553 : 16.0, + 2662 : 0.0, + 2663 : 1.0, + 2664 : 2.0, + 2665 : 3.0, + 2666 : 4.0, + 2667 : 5.0, + 2668 : 6.0, + 2669 : 7.0, + 2670 : 8.0, + 2671 : 9.0, + 2790 : 0.0, + 2791 : 1.0, + 2792 : 2.0, + 2793 : 3.0, + 2794 : 4.0, + 2795 : 5.0, + 2796 : 6.0, + 2797 : 7.0, + 2798 : 8.0, + 2799 : 9.0, + 2918 : 0.0, + 2919 : 1.0, + 2920 : 2.0, + 2921 : 3.0, + 2922 : 4.0, + 2923 : 5.0, + 2924 : 6.0, + 2925 : 7.0, + 2926 : 8.0, + 2927 : 9.0, + 3047 : 1.0, + 3048 : 2.0, + 3049 : 3.0, + 3050 : 4.0, + 3051 : 5.0, + 3052 : 6.0, + 3053 : 7.0, + 3054 : 8.0, + 3055 : 9.0, + 3056 : 10.0, + 3057 : 100.0, + 3058 : 1000.0, + 3174 : 0.0, + 3175 : 1.0, + 3176 : 2.0, + 3177 : 3.0, + 3178 : 4.0, + 3179 : 5.0, + 3180 : 6.0, + 3181 : 7.0, + 3182 : 8.0, + 3183 : 9.0, + 3302 : 0.0, + 3303 : 1.0, + 3304 : 2.0, + 3305 : 3.0, + 3306 : 4.0, + 3307 : 5.0, + 3308 : 6.0, + 3309 : 7.0, + 3310 : 8.0, + 3311 : 9.0, + 3430 : 0.0, + 3431 : 1.0, + 3432 : 2.0, + 3433 : 3.0, + 3434 : 4.0, + 3435 : 5.0, + 3436 : 6.0, + 3437 : 7.0, + 3438 : 8.0, + 3439 : 9.0, + 3664 : 0.0, + 3665 : 1.0, + 3666 : 2.0, + 3667 : 3.0, + 3668 : 4.0, + 3669 : 5.0, + 3670 : 6.0, + 3671 : 7.0, + 3672 : 8.0, + 3673 : 9.0, + 3792 : 0.0, + 3793 : 1.0, + 3794 : 2.0, + 3795 : 3.0, + 3796 : 4.0, + 3797 : 5.0, + 3798 : 6.0, + 3799 : 7.0, + 3800 : 8.0, + 3801 : 9.0, + 3872 : 0.0, + 3873 : 1.0, + 3874 : 2.0, + 3875 : 3.0, + 3876 : 4.0, + 3877 : 5.0, + 3878 : 6.0, + 3879 : 7.0, + 3880 : 8.0, + 3881 : 9.0, + 3882 : 0.5, + 3883 : 1.5, + 3884 : 2.5, + 3885 : 3.5, + 3886 : 4.5, + 3887 : 5.5, + 3888 : 6.5, + 3889 : 7.5, + 3890 : 8.5, + 3891 : -0.5, + 4160 : 0.0, + 4161 : 1.0, + 4162 : 2.0, + 4163 : 3.0, + 4164 : 4.0, + 4165 : 5.0, + 4166 : 6.0, + 4167 : 7.0, + 4168 : 8.0, + 4169 : 9.0, + 4969 : 1.0, + 4970 : 2.0, + 4971 : 3.0, + 4972 : 4.0, + 4973 : 5.0, + 4974 : 6.0, + 4975 : 7.0, + 4976 : 8.0, + 4977 : 9.0, + 4978 : 10.0, + 4979 : 20.0, + 4980 : 30.0, + 4981 : 40.0, + 4982 : 50.0, + 4983 : 60.0, + 4984 : 70.0, + 4985 : 80.0, + 4986 : 90.0, + 4987 : 100.0, + 4988 : 10000.0, + 5870 : 17.0, + 5871 : 18.0, + 5872 : 19.0, + 6112 : 0.0, + 6113 : 1.0, + 6114 : 2.0, + 6115 : 3.0, + 6116 : 4.0, + 6117 : 5.0, + 6118 : 6.0, + 6119 : 7.0, + 6120 : 8.0, + 6121 : 9.0, + 6160 : 0.0, + 6161 : 1.0, + 6162 : 2.0, + 6163 : 3.0, + 6164 : 4.0, + 6165 : 5.0, + 6166 : 6.0, + 6167 : 7.0, + 6168 : 8.0, + 6169 : 9.0, + 8304 : 0.0, + 8308 : 4.0, + 8309 : 5.0, + 8310 : 6.0, + 8311 : 7.0, + 8312 : 8.0, + 8313 : 9.0, + 8320 : 0.0, + 8321 : 1.0, + 8322 : 2.0, + 8323 : 3.0, + 8324 : 4.0, + 8325 : 5.0, + 8326 : 6.0, + 8327 : 7.0, + 8328 : 8.0, + 8329 : 9.0, + 8531 : 0.33333333333333331, + 8532 : 0.66666666666666663, + 8533 : 0.20000000000000001, + 8534 : 0.40000000000000002, + 8535 : 0.59999999999999998, + 8536 : 0.80000000000000004, + 8537 : 0.16666666666666666, + 8538 : 0.83333333333333337, + 8539 : 0.125, + 8540 : 0.375, + 8541 : 0.625, + 8542 : 0.875, + 8543 : 1.0, + 8544 : 1.0, + 8545 : 2.0, + 8546 : 3.0, + 8547 : 4.0, + 8548 : 5.0, + 8549 : 6.0, + 8550 : 7.0, + 8551 : 8.0, + 8552 : 9.0, + 8553 : 10.0, + 8554 : 11.0, + 8555 : 12.0, + 8556 : 50.0, + 8557 : 100.0, + 8558 : 500.0, + 8559 : 1000.0, + 8560 : 1.0, + 8561 : 2.0, + 8562 : 3.0, + 8563 : 4.0, + 8564 : 5.0, + 8565 : 6.0, + 8566 : 7.0, + 8567 : 8.0, + 8568 : 9.0, + 8569 : 10.0, + 8570 : 11.0, + 8571 : 12.0, + 8572 : 50.0, + 8573 : 100.0, + 8574 : 500.0, + 8575 : 1000.0, + 8576 : 1000.0, + 8577 : 5000.0, + 8578 : 10000.0, + 9312 : 1.0, + 9313 : 2.0, + 9314 : 3.0, + 9315 : 4.0, + 9316 : 5.0, + 9317 : 6.0, + 9318 : 7.0, + 9319 : 8.0, + 9320 : 9.0, + 9321 : 10.0, + 9322 : 11.0, + 9323 : 12.0, + 9324 : 13.0, + 9325 : 14.0, + 9326 : 15.0, + 9327 : 16.0, + 9328 : 17.0, + 9329 : 18.0, + 9330 : 19.0, + 9331 : 20.0, + 9332 : 1.0, + 9333 : 2.0, + 9334 : 3.0, + 9335 : 4.0, + 9336 : 5.0, + 9337 : 6.0, + 9338 : 7.0, + 9339 : 8.0, + 9340 : 9.0, + 9341 : 10.0, + 9342 : 11.0, + 9343 : 12.0, + 9344 : 13.0, + 9345 : 14.0, + 9346 : 15.0, + 9347 : 16.0, + 9348 : 17.0, + 9349 : 18.0, + 9350 : 19.0, + 9351 : 20.0, + 9352 : 1.0, + 9353 : 2.0, + 9354 : 3.0, + 9355 : 4.0, + 9356 : 5.0, + 9357 : 6.0, + 9358 : 7.0, + 9359 : 8.0, + 9360 : 9.0, + 9361 : 10.0, + 9362 : 11.0, + 9363 : 12.0, + 9364 : 13.0, + 9365 : 14.0, + 9366 : 15.0, + 9367 : 16.0, + 9368 : 17.0, + 9369 : 18.0, + 9370 : 19.0, + 9371 : 20.0, + 9450 : 0.0, + 9451 : 11.0, + 9452 : 12.0, + 9453 : 13.0, + 9454 : 14.0, + 9455 : 15.0, + 9456 : 16.0, + 9457 : 17.0, + 9458 : 18.0, + 9459 : 19.0, + 9460 : 20.0, + 9461 : 1.0, + 9462 : 2.0, + 9463 : 3.0, + 9464 : 4.0, + 9465 : 5.0, + 9466 : 6.0, + 9467 : 7.0, + 9468 : 8.0, + 9469 : 9.0, + 9470 : 10.0, + 10102 : 1.0, + 10103 : 2.0, + 10104 : 3.0, + 10105 : 4.0, + 10106 : 5.0, + 10107 : 6.0, + 10108 : 7.0, + 10109 : 8.0, + 10110 : 9.0, + 10111 : 10.0, + 10112 : 1.0, + 10113 : 2.0, + 10114 : 3.0, + 10115 : 4.0, + 10116 : 5.0, + 10117 : 6.0, + 10118 : 7.0, + 10119 : 8.0, + 10120 : 9.0, + 10121 : 10.0, + 10122 : 1.0, + 10123 : 2.0, + 10124 : 3.0, + 10125 : 4.0, + 10126 : 5.0, + 10127 : 6.0, + 10128 : 7.0, + 10129 : 8.0, + 10130 : 9.0, + 10131 : 10.0, + 12295 : 0.0, + 12321 : 1.0, + 12322 : 2.0, + 12323 : 3.0, + 12324 : 4.0, + 12325 : 5.0, + 12326 : 6.0, + 12327 : 7.0, + 12328 : 8.0, + 12329 : 9.0, + 12344 : 10.0, + 12345 : 20.0, + 12346 : 30.0, + 12690 : 1.0, + 12691 : 2.0, + 12692 : 3.0, + 12693 : 4.0, + 12832 : 1.0, + 12833 : 2.0, + 12834 : 3.0, + 12835 : 4.0, + 12836 : 5.0, + 12837 : 6.0, + 12838 : 7.0, + 12839 : 8.0, + 12840 : 9.0, + 12841 : 10.0, + 12881 : 21.0, + 12882 : 22.0, + 12883 : 23.0, + 12884 : 24.0, + 12885 : 25.0, + 12886 : 26.0, + 12887 : 27.0, + 12888 : 28.0, + 12889 : 29.0, + 12890 : 30.0, + 12891 : 31.0, + 12892 : 32.0, + 12893 : 33.0, + 12894 : 34.0, + 12895 : 35.0, + 12928 : 1.0, + 12929 : 2.0, + 12930 : 3.0, + 12931 : 4.0, + 12932 : 5.0, + 12933 : 6.0, + 12934 : 7.0, + 12935 : 8.0, + 12936 : 9.0, + 12937 : 10.0, + 12977 : 36.0, + 12978 : 37.0, + 12979 : 38.0, + 12980 : 39.0, + 12981 : 40.0, + 12982 : 41.0, + 12983 : 42.0, + 12984 : 43.0, + 12985 : 44.0, + 12986 : 45.0, + 12987 : 46.0, + 12988 : 47.0, + 12989 : 48.0, + 12990 : 49.0, + 12991 : 50.0, + 65296 : 0.0, + 65297 : 1.0, + 65298 : 2.0, + 65299 : 3.0, + 65300 : 4.0, + 65301 : 5.0, + 65302 : 6.0, + 65303 : 7.0, + 65304 : 8.0, + 65305 : 9.0, + 66336 : 1.0, + 66337 : 5.0, + 66338 : 10.0, + 66339 : 50.0, + 120782 : 0.0, + 120783 : 1.0, + 120784 : 2.0, + 120785 : 3.0, + 120786 : 4.0, + 120787 : 5.0, + 120788 : 6.0, + 120789 : 7.0, + 120790 : 8.0, + 120791 : 9.0, + 120792 : 0.0, + 120793 : 1.0, + 120794 : 2.0, + 120795 : 3.0, + 120796 : 4.0, + 120797 : 5.0, + 120798 : 6.0, + 120799 : 7.0, + 120800 : 8.0, + 120801 : 9.0, + 120802 : 0.0, + 120803 : 1.0, + 120804 : 2.0, + 120805 : 3.0, + 120806 : 4.0, + 120807 : 5.0, + 120808 : 6.0, + 120809 : 7.0, + 120810 : 8.0, + 120811 : 9.0, + 120812 : 0.0, + 120813 : 1.0, + 120814 : 2.0, + 120815 : 3.0, + 120816 : 4.0, + 120817 : 5.0, + 120818 : 6.0, + 120819 : 7.0, + 120820 : 8.0, + 120821 : 9.0, + 120822 : 0.0, + 120823 : 1.0, + 120824 : 2.0, + 120825 : 3.0, + 120826 : 4.0, + 120827 : 5.0, + 120828 : 6.0, + 120829 : 7.0, + 120830 : 8.0, + 120831 : 9.0, +} + +category = { + 0 : 'Cc', + 1 : 'Cc', + 2 : 'Cc', + 3 : 'Cc', + 4 : 'Cc', + 5 : 'Cc', + 6 : 'Cc', + 7 : 'Cc', + 8 : 'Cc', + 9 : 'Cc', + 10 : 'Cc', + 11 : 'Cc', + 12 : 'Cc', + 13 : 'Cc', + 14 : 'Cc', + 15 : 'Cc', + 16 : 'Cc', + 17 : 'Cc', + 18 : 'Cc', + 19 : 'Cc', + 20 : 'Cc', + 21 : 'Cc', + 22 : 'Cc', + 23 : 'Cc', + 24 : 'Cc', + 25 : 'Cc', + 26 : 'Cc', + 27 : 'Cc', + 28 : 'Cc', + 29 : 'Cc', + 30 : 'Cc', + 31 : 'Cc', + 32 : 'Zs', + 33 : 'Po', + 34 : 'Po', + 35 : 'Po', + 36 : 'Sc', + 37 : 'Po', + 38 : 'Po', + 39 : 'Po', + 40 : 'Ps', + 41 : 'Pe', + 42 : 'Po', + 43 : 'Sm', + 44 : 'Po', + 45 : 'Pd', + 46 : 'Po', + 47 : 'Po', + 48 : 'Nd', + 49 : 'Nd', + 50 : 'Nd', + 51 : 'Nd', + 52 : 'Nd', + 53 : 'Nd', + 54 : 'Nd', + 55 : 'Nd', + 56 : 'Nd', + 57 : 'Nd', + 58 : 'Po', + 59 : 'Po', + 60 : 'Sm', + 61 : 'Sm', + 62 : 'Sm', + 63 : 'Po', + 64 : 'Po', + 65 : 'Lu', + 66 : 'Lu', + 67 : 'Lu', + 68 : 'Lu', + 69 : 'Lu', + 70 : 'Lu', + 71 : 'Lu', + 72 : 'Lu', + 73 : 'Lu', + 74 : 'Lu', + 75 : 'Lu', + 76 : 'Lu', + 77 : 'Lu', + 78 : 'Lu', + 79 : 'Lu', + 80 : 'Lu', + 81 : 'Lu', + 82 : 'Lu', + 83 : 'Lu', + 84 : 'Lu', + 85 : 'Lu', + 86 : 'Lu', + 87 : 'Lu', + 88 : 'Lu', + 89 : 'Lu', + 90 : 'Lu', + 91 : 'Ps', + 92 : 'Po', + 93 : 'Pe', + 94 : 'Sk', + 95 : 'Pc', + 96 : 'Sk', + 97 : 'Ll', + 98 : 'Ll', + 99 : 'Ll', + 100 : 'Ll', + 101 : 'Ll', + 102 : 'Ll', + 103 : 'Ll', + 104 : 'Ll', + 105 : 'Ll', + 106 : 'Ll', + 107 : 'Ll', + 108 : 'Ll', + 109 : 'Ll', + 110 : 'Ll', + 111 : 'Ll', + 112 : 'Ll', + 113 : 'Ll', + 114 : 'Ll', + 115 : 'Ll', + 116 : 'Ll', + 117 : 'Ll', + 118 : 'Ll', + 119 : 'Ll', + 120 : 'Ll', + 121 : 'Ll', + 122 : 'Ll', + 123 : 'Ps', + 124 : 'Sm', + 125 : 'Pe', + 126 : 'Sm', + 127 : 'Cc', + 128 : 'Cc', + 129 : 'Cc', + 130 : 'Cc', + 131 : 'Cc', + 132 : 'Cc', + 133 : 'Cc', + 134 : 'Cc', + 135 : 'Cc', + 136 : 'Cc', + 137 : 'Cc', + 138 : 'Cc', + 139 : 'Cc', + 140 : 'Cc', + 141 : 'Cc', + 142 : 'Cc', + 143 : 'Cc', + 144 : 'Cc', + 145 : 'Cc', + 146 : 'Cc', + 147 : 'Cc', + 148 : 'Cc', + 149 : 'Cc', + 150 : 'Cc', + 151 : 'Cc', + 152 : 'Cc', + 153 : 'Cc', + 154 : 'Cc', + 155 : 'Cc', + 156 : 'Cc', + 157 : 'Cc', + 158 : 'Cc', + 159 : 'Cc', + 160 : 'Zs', + 161 : 'Po', + 162 : 'Sc', + 163 : 'Sc', + 164 : 'Sc', + 165 : 'Sc', + 166 : 'So', + 167 : 'So', + 168 : 'Sk', + 169 : 'So', + 170 : 'Ll', + 171 : 'Pi', + 172 : 'Sm', + 173 : 'Pd', + 174 : 'So', + 175 : 'Sk', + 176 : 'So', + 177 : 'Sm', + 178 : 'No', + 179 : 'No', + 180 : 'Sk', + 181 : 'Ll', + 182 : 'So', + 183 : 'Po', + 184 : 'Sk', + 185 : 'No', + 186 : 'Ll', + 187 : 'Pf', + 188 : 'No', + 189 : 'No', + 190 : 'No', + 191 : 'Po', + 192 : 'Lu', + 193 : 'Lu', + 194 : 'Lu', + 195 : 'Lu', + 196 : 'Lu', + 197 : 'Lu', + 198 : 'Lu', + 199 : 'Lu', + 200 : 'Lu', + 201 : 'Lu', + 202 : 'Lu', + 203 : 'Lu', + 204 : 'Lu', + 205 : 'Lu', + 206 : 'Lu', + 207 : 'Lu', + 208 : 'Lu', + 209 : 'Lu', + 210 : 'Lu', + 211 : 'Lu', + 212 : 'Lu', + 213 : 'Lu', + 214 : 'Lu', + 215 : 'Sm', + 216 : 'Lu', + 217 : 'Lu', + 218 : 'Lu', + 219 : 'Lu', + 220 : 'Lu', + 221 : 'Lu', + 222 : 'Lu', + 223 : 'Ll', + 224 : 'Ll', + 225 : 'Ll', + 226 : 'Ll', + 227 : 'Ll', + 228 : 'Ll', + 229 : 'Ll', + 230 : 'Ll', + 231 : 'Ll', + 232 : 'Ll', + 233 : 'Ll', + 234 : 'Ll', + 235 : 'Ll', + 236 : 'Ll', + 237 : 'Ll', + 238 : 'Ll', + 239 : 'Ll', + 240 : 'Ll', + 241 : 'Ll', + 242 : 'Ll', + 243 : 'Ll', + 244 : 'Ll', + 245 : 'Ll', + 246 : 'Ll', + 247 : 'Sm', + 248 : 'Ll', + 249 : 'Ll', + 250 : 'Ll', + 251 : 'Ll', + 252 : 'Ll', + 253 : 'Ll', + 254 : 'Ll', + 255 : 'Ll', + 256 : 'Lu', + 257 : 'Ll', + 258 : 'Lu', + 259 : 'Ll', + 260 : 'Lu', + 261 : 'Ll', + 262 : 'Lu', + 263 : 'Ll', + 264 : 'Lu', + 265 : 'Ll', + 266 : 'Lu', + 267 : 'Ll', + 268 : 'Lu', + 269 : 'Ll', + 270 : 'Lu', + 271 : 'Ll', + 272 : 'Lu', + 273 : 'Ll', + 274 : 'Lu', + 275 : 'Ll', + 276 : 'Lu', + 277 : 'Ll', + 278 : 'Lu', + 279 : 'Ll', + 280 : 'Lu', + 281 : 'Ll', + 282 : 'Lu', + 283 : 'Ll', + 284 : 'Lu', + 285 : 'Ll', + 286 : 'Lu', + 287 : 'Ll', + 288 : 'Lu', + 289 : 'Ll', + 290 : 'Lu', + 291 : 'Ll', + 292 : 'Lu', + 293 : 'Ll', + 294 : 'Lu', + 295 : 'Ll', + 296 : 'Lu', + 297 : 'Ll', + 298 : 'Lu', + 299 : 'Ll', + 300 : 'Lu', + 301 : 'Ll', + 302 : 'Lu', + 303 : 'Ll', + 304 : 'Lu', + 305 : 'Ll', + 306 : 'Lu', + 307 : 'Ll', + 308 : 'Lu', + 309 : 'Ll', + 310 : 'Lu', + 311 : 'Ll', + 312 : 'Ll', + 313 : 'Lu', + 314 : 'Ll', + 315 : 'Lu', + 316 : 'Ll', + 317 : 'Lu', + 318 : 'Ll', + 319 : 'Lu', + 320 : 'Ll', + 321 : 'Lu', + 322 : 'Ll', + 323 : 'Lu', + 324 : 'Ll', + 325 : 'Lu', + 326 : 'Ll', + 327 : 'Lu', + 328 : 'Ll', + 329 : 'Ll', + 330 : 'Lu', + 331 : 'Ll', + 332 : 'Lu', + 333 : 'Ll', + 334 : 'Lu', + 335 : 'Ll', + 336 : 'Lu', + 337 : 'Ll', + 338 : 'Lu', + 339 : 'Ll', + 340 : 'Lu', + 341 : 'Ll', + 342 : 'Lu', + 343 : 'Ll', + 344 : 'Lu', + 345 : 'Ll', + 346 : 'Lu', + 347 : 'Ll', + 348 : 'Lu', + 349 : 'Ll', + 350 : 'Lu', + 351 : 'Ll', + 352 : 'Lu', + 353 : 'Ll', + 354 : 'Lu', + 355 : 'Ll', + 356 : 'Lu', + 357 : 'Ll', + 358 : 'Lu', + 359 : 'Ll', + 360 : 'Lu', + 361 : 'Ll', + 362 : 'Lu', + 363 : 'Ll', + 364 : 'Lu', + 365 : 'Ll', + 366 : 'Lu', + 367 : 'Ll', + 368 : 'Lu', + 369 : 'Ll', + 370 : 'Lu', + 371 : 'Ll', + 372 : 'Lu', + 373 : 'Ll', + 374 : 'Lu', + 375 : 'Ll', + 376 : 'Lu', + 377 : 'Lu', + 378 : 'Ll', + 379 : 'Lu', + 380 : 'Ll', + 381 : 'Lu', + 382 : 'Ll', + 383 : 'Ll', + 384 : 'Ll', + 385 : 'Lu', + 386 : 'Lu', + 387 : 'Ll', + 388 : 'Lu', + 389 : 'Ll', + 390 : 'Lu', + 391 : 'Lu', + 392 : 'Ll', + 393 : 'Lu', + 394 : 'Lu', + 395 : 'Lu', + 396 : 'Ll', + 397 : 'Ll', + 398 : 'Lu', + 399 : 'Lu', + 400 : 'Lu', + 401 : 'Lu', + 402 : 'Ll', + 403 : 'Lu', + 404 : 'Lu', + 405 : 'Ll', + 406 : 'Lu', + 407 : 'Lu', + 408 : 'Lu', + 409 : 'Ll', + 410 : 'Ll', + 411 : 'Ll', + 412 : 'Lu', + 413 : 'Lu', + 414 : 'Ll', + 415 : 'Lu', + 416 : 'Lu', + 417 : 'Ll', + 418 : 'Lu', + 419 : 'Ll', + 420 : 'Lu', + 421 : 'Ll', + 422 : 'Lu', + 423 : 'Lu', + 424 : 'Ll', + 425 : 'Lu', + 426 : 'Ll', + 427 : 'Ll', + 428 : 'Lu', + 429 : 'Ll', + 430 : 'Lu', + 431 : 'Lu', + 432 : 'Ll', + 433 : 'Lu', + 434 : 'Lu', + 435 : 'Lu', + 436 : 'Ll', + 437 : 'Lu', + 438 : 'Ll', + 439 : 'Lu', + 440 : 'Lu', + 441 : 'Ll', + 442 : 'Ll', + 443 : 'Lo', + 444 : 'Lu', + 445 : 'Ll', + 446 : 'Ll', + 447 : 'Ll', + 448 : 'Lo', + 449 : 'Lo', + 450 : 'Lo', + 451 : 'Lo', + 452 : 'Lu', + 453 : 'Lt', + 454 : 'Ll', + 455 : 'Lu', + 456 : 'Lt', + 457 : 'Ll', + 458 : 'Lu', + 459 : 'Lt', + 460 : 'Ll', + 461 : 'Lu', + 462 : 'Ll', + 463 : 'Lu', + 464 : 'Ll', + 465 : 'Lu', + 466 : 'Ll', + 467 : 'Lu', + 468 : 'Ll', + 469 : 'Lu', + 470 : 'Ll', + 471 : 'Lu', + 472 : 'Ll', + 473 : 'Lu', + 474 : 'Ll', + 475 : 'Lu', + 476 : 'Ll', + 477 : 'Ll', + 478 : 'Lu', + 479 : 'Ll', + 480 : 'Lu', + 481 : 'Ll', + 482 : 'Lu', + 483 : 'Ll', + 484 : 'Lu', + 485 : 'Ll', + 486 : 'Lu', + 487 : 'Ll', + 488 : 'Lu', + 489 : 'Ll', + 490 : 'Lu', + 491 : 'Ll', + 492 : 'Lu', + 493 : 'Ll', + 494 : 'Lu', + 495 : 'Ll', + 496 : 'Ll', + 497 : 'Lu', + 498 : 'Lt', + 499 : 'Ll', + 500 : 'Lu', + 501 : 'Ll', + 502 : 'Lu', + 503 : 'Lu', + 504 : 'Lu', + 505 : 'Ll', + 506 : 'Lu', + 507 : 'Ll', + 508 : 'Lu', + 509 : 'Ll', + 510 : 'Lu', + 511 : 'Ll', + 512 : 'Lu', + 513 : 'Ll', + 514 : 'Lu', + 515 : 'Ll', + 516 : 'Lu', + 517 : 'Ll', + 518 : 'Lu', + 519 : 'Ll', + 520 : 'Lu', + 521 : 'Ll', + 522 : 'Lu', + 523 : 'Ll', + 524 : 'Lu', + 525 : 'Ll', + 526 : 'Lu', + 527 : 'Ll', + 528 : 'Lu', + 529 : 'Ll', + 530 : 'Lu', + 531 : 'Ll', + 532 : 'Lu', + 533 : 'Ll', + 534 : 'Lu', + 535 : 'Ll', + 536 : 'Lu', + 537 : 'Ll', + 538 : 'Lu', + 539 : 'Ll', + 540 : 'Lu', + 541 : 'Ll', + 542 : 'Lu', + 543 : 'Ll', + 544 : 'Lu', + 546 : 'Lu', + 547 : 'Ll', + 548 : 'Lu', + 549 : 'Ll', + 550 : 'Lu', + 551 : 'Ll', + 552 : 'Lu', + 553 : 'Ll', + 554 : 'Lu', + 555 : 'Ll', + 556 : 'Lu', + 557 : 'Ll', + 558 : 'Lu', + 559 : 'Ll', + 560 : 'Lu', + 561 : 'Ll', + 562 : 'Lu', + 563 : 'Ll', + 592 : 'Ll', + 593 : 'Ll', + 594 : 'Ll', + 595 : 'Ll', + 596 : 'Ll', + 597 : 'Ll', + 598 : 'Ll', + 599 : 'Ll', + 600 : 'Ll', + 601 : 'Ll', + 602 : 'Ll', + 603 : 'Ll', + 604 : 'Ll', + 605 : 'Ll', + 606 : 'Ll', + 607 : 'Ll', + 608 : 'Ll', + 609 : 'Ll', + 610 : 'Ll', + 611 : 'Ll', + 612 : 'Ll', + 613 : 'Ll', + 614 : 'Ll', + 615 : 'Ll', + 616 : 'Ll', + 617 : 'Ll', + 618 : 'Ll', + 619 : 'Ll', + 620 : 'Ll', + 621 : 'Ll', + 622 : 'Ll', + 623 : 'Ll', + 624 : 'Ll', + 625 : 'Ll', + 626 : 'Ll', + 627 : 'Ll', + 628 : 'Ll', + 629 : 'Ll', + 630 : 'Ll', + 631 : 'Ll', + 632 : 'Ll', + 633 : 'Ll', + 634 : 'Ll', + 635 : 'Ll', + 636 : 'Ll', + 637 : 'Ll', + 638 : 'Ll', + 639 : 'Ll', + 640 : 'Ll', + 641 : 'Ll', + 642 : 'Ll', + 643 : 'Ll', + 644 : 'Ll', + 645 : 'Ll', + 646 : 'Ll', + 647 : 'Ll', + 648 : 'Ll', + 649 : 'Ll', + 650 : 'Ll', + 651 : 'Ll', + 652 : 'Ll', + 653 : 'Ll', + 654 : 'Ll', + 655 : 'Ll', + 656 : 'Ll', + 657 : 'Ll', + 658 : 'Ll', + 659 : 'Ll', + 660 : 'Ll', + 661 : 'Ll', + 662 : 'Ll', + 663 : 'Ll', + 664 : 'Ll', + 665 : 'Ll', + 666 : 'Ll', + 667 : 'Ll', + 668 : 'Ll', + 669 : 'Ll', + 670 : 'Ll', + 671 : 'Ll', + 672 : 'Ll', + 673 : 'Ll', + 674 : 'Ll', + 675 : 'Ll', + 676 : 'Ll', + 677 : 'Ll', + 678 : 'Ll', + 679 : 'Ll', + 680 : 'Ll', + 681 : 'Ll', + 682 : 'Ll', + 683 : 'Ll', + 684 : 'Ll', + 685 : 'Ll', + 688 : 'Lm', + 689 : 'Lm', + 690 : 'Lm', + 691 : 'Lm', + 692 : 'Lm', + 693 : 'Lm', + 694 : 'Lm', + 695 : 'Lm', + 696 : 'Lm', + 697 : 'Sk', + 698 : 'Sk', + 699 : 'Lm', + 700 : 'Lm', + 701 : 'Lm', + 702 : 'Lm', + 703 : 'Lm', + 704 : 'Lm', + 705 : 'Lm', + 706 : 'Sk', + 707 : 'Sk', + 708 : 'Sk', + 709 : 'Sk', + 710 : 'Sk', + 711 : 'Sk', + 712 : 'Sk', + 713 : 'Sk', + 714 : 'Sk', + 715 : 'Sk', + 716 : 'Sk', + 717 : 'Sk', + 718 : 'Sk', + 719 : 'Sk', + 720 : 'Lm', + 721 : 'Lm', + 722 : 'Sk', + 723 : 'Sk', + 724 : 'Sk', + 725 : 'Sk', + 726 : 'Sk', + 727 : 'Sk', + 728 : 'Sk', + 729 : 'Sk', + 730 : 'Sk', + 731 : 'Sk', + 732 : 'Sk', + 733 : 'Sk', + 734 : 'Sk', + 735 : 'Sk', + 736 : 'Lm', + 737 : 'Lm', + 738 : 'Lm', + 739 : 'Lm', + 740 : 'Lm', + 741 : 'Sk', + 742 : 'Sk', + 743 : 'Sk', + 744 : 'Sk', + 745 : 'Sk', + 746 : 'Sk', + 747 : 'Sk', + 748 : 'Sk', + 749 : 'Sk', + 750 : 'Lm', + 768 : 'Mn', + 769 : 'Mn', + 770 : 'Mn', + 771 : 'Mn', + 772 : 'Mn', + 773 : 'Mn', + 774 : 'Mn', + 775 : 'Mn', + 776 : 'Mn', + 777 : 'Mn', + 778 : 'Mn', + 779 : 'Mn', + 780 : 'Mn', + 781 : 'Mn', + 782 : 'Mn', + 783 : 'Mn', + 784 : 'Mn', + 785 : 'Mn', + 786 : 'Mn', + 787 : 'Mn', + 788 : 'Mn', + 789 : 'Mn', + 790 : 'Mn', + 791 : 'Mn', + 792 : 'Mn', + 793 : 'Mn', + 794 : 'Mn', + 795 : 'Mn', + 796 : 'Mn', + 797 : 'Mn', + 798 : 'Mn', + 799 : 'Mn', + 800 : 'Mn', + 801 : 'Mn', + 802 : 'Mn', + 803 : 'Mn', + 804 : 'Mn', + 805 : 'Mn', + 806 : 'Mn', + 807 : 'Mn', + 808 : 'Mn', + 809 : 'Mn', + 810 : 'Mn', + 811 : 'Mn', + 812 : 'Mn', + 813 : 'Mn', + 814 : 'Mn', + 815 : 'Mn', + 816 : 'Mn', + 817 : 'Mn', + 818 : 'Mn', + 819 : 'Mn', + 820 : 'Mn', + 821 : 'Mn', + 822 : 'Mn', + 823 : 'Mn', + 824 : 'Mn', + 825 : 'Mn', + 826 : 'Mn', + 827 : 'Mn', + 828 : 'Mn', + 829 : 'Mn', + 830 : 'Mn', + 831 : 'Mn', + 832 : 'Mn', + 833 : 'Mn', + 834 : 'Mn', + 835 : 'Mn', + 836 : 'Mn', + 837 : 'Mn', + 838 : 'Mn', + 839 : 'Mn', + 840 : 'Mn', + 841 : 'Mn', + 842 : 'Mn', + 843 : 'Mn', + 844 : 'Mn', + 845 : 'Mn', + 846 : 'Mn', + 847 : 'Mn', + 864 : 'Mn', + 865 : 'Mn', + 866 : 'Mn', + 867 : 'Mn', + 868 : 'Mn', + 869 : 'Mn', + 870 : 'Mn', + 871 : 'Mn', + 872 : 'Mn', + 873 : 'Mn', + 874 : 'Mn', + 875 : 'Mn', + 876 : 'Mn', + 877 : 'Mn', + 878 : 'Mn', + 879 : 'Mn', + 884 : 'Sk', + 885 : 'Sk', + 890 : 'Lm', + 894 : 'Po', + 900 : 'Sk', + 901 : 'Sk', + 902 : 'Lu', + 903 : 'Po', + 904 : 'Lu', + 905 : 'Lu', + 906 : 'Lu', + 908 : 'Lu', + 910 : 'Lu', + 911 : 'Lu', + 912 : 'Ll', + 913 : 'Lu', + 914 : 'Lu', + 915 : 'Lu', + 916 : 'Lu', + 917 : 'Lu', + 918 : 'Lu', + 919 : 'Lu', + 920 : 'Lu', + 921 : 'Lu', + 922 : 'Lu', + 923 : 'Lu', + 924 : 'Lu', + 925 : 'Lu', + 926 : 'Lu', + 927 : 'Lu', + 928 : 'Lu', + 929 : 'Lu', + 931 : 'Lu', + 932 : 'Lu', + 933 : 'Lu', + 934 : 'Lu', + 935 : 'Lu', + 936 : 'Lu', + 937 : 'Lu', + 938 : 'Lu', + 939 : 'Lu', + 940 : 'Ll', + 941 : 'Ll', + 942 : 'Ll', + 943 : 'Ll', + 944 : 'Ll', + 945 : 'Ll', + 946 : 'Ll', + 947 : 'Ll', + 948 : 'Ll', + 949 : 'Ll', + 950 : 'Ll', + 951 : 'Ll', + 952 : 'Ll', + 953 : 'Ll', + 954 : 'Ll', + 955 : 'Ll', + 956 : 'Ll', + 957 : 'Ll', + 958 : 'Ll', + 959 : 'Ll', + 960 : 'Ll', + 961 : 'Ll', + 962 : 'Ll', + 963 : 'Ll', + 964 : 'Ll', + 965 : 'Ll', + 966 : 'Ll', + 967 : 'Ll', + 968 : 'Ll', + 969 : 'Ll', + 970 : 'Ll', + 971 : 'Ll', + 972 : 'Ll', + 973 : 'Ll', + 974 : 'Ll', + 976 : 'Ll', + 977 : 'Ll', + 978 : 'Lu', + 979 : 'Lu', + 980 : 'Lu', + 981 : 'Ll', + 982 : 'Ll', + 983 : 'Ll', + 984 : 'Lu', + 985 : 'Ll', + 986 : 'Lu', + 987 : 'Ll', + 988 : 'Lu', + 989 : 'Ll', + 990 : 'Lu', + 991 : 'Ll', + 992 : 'Lu', + 993 : 'Ll', + 994 : 'Lu', + 995 : 'Ll', + 996 : 'Lu', + 997 : 'Ll', + 998 : 'Lu', + 999 : 'Ll', + 1000 : 'Lu', + 1001 : 'Ll', + 1002 : 'Lu', + 1003 : 'Ll', + 1004 : 'Lu', + 1005 : 'Ll', + 1006 : 'Lu', + 1007 : 'Ll', + 1008 : 'Ll', + 1009 : 'Ll', + 1010 : 'Ll', + 1011 : 'Ll', + 1012 : 'Lu', + 1013 : 'Ll', + 1014 : 'Sm', + 1024 : 'Lu', + 1025 : 'Lu', + 1026 : 'Lu', + 1027 : 'Lu', + 1028 : 'Lu', + 1029 : 'Lu', + 1030 : 'Lu', + 1031 : 'Lu', + 1032 : 'Lu', + 1033 : 'Lu', + 1034 : 'Lu', + 1035 : 'Lu', + 1036 : 'Lu', + 1037 : 'Lu', + 1038 : 'Lu', + 1039 : 'Lu', + 1040 : 'Lu', + 1041 : 'Lu', + 1042 : 'Lu', + 1043 : 'Lu', + 1044 : 'Lu', + 1045 : 'Lu', + 1046 : 'Lu', + 1047 : 'Lu', + 1048 : 'Lu', + 1049 : 'Lu', + 1050 : 'Lu', + 1051 : 'Lu', + 1052 : 'Lu', + 1053 : 'Lu', + 1054 : 'Lu', + 1055 : 'Lu', + 1056 : 'Lu', + 1057 : 'Lu', + 1058 : 'Lu', + 1059 : 'Lu', + 1060 : 'Lu', + 1061 : 'Lu', + 1062 : 'Lu', + 1063 : 'Lu', + 1064 : 'Lu', + 1065 : 'Lu', + 1066 : 'Lu', + 1067 : 'Lu', + 1068 : 'Lu', + 1069 : 'Lu', + 1070 : 'Lu', + 1071 : 'Lu', + 1072 : 'Ll', + 1073 : 'Ll', + 1074 : 'Ll', + 1075 : 'Ll', + 1076 : 'Ll', + 1077 : 'Ll', + 1078 : 'Ll', + 1079 : 'Ll', + 1080 : 'Ll', + 1081 : 'Ll', + 1082 : 'Ll', + 1083 : 'Ll', + 1084 : 'Ll', + 1085 : 'Ll', + 1086 : 'Ll', + 1087 : 'Ll', + 1088 : 'Ll', + 1089 : 'Ll', + 1090 : 'Ll', + 1091 : 'Ll', + 1092 : 'Ll', + 1093 : 'Ll', + 1094 : 'Ll', + 1095 : 'Ll', + 1096 : 'Ll', + 1097 : 'Ll', + 1098 : 'Ll', + 1099 : 'Ll', + 1100 : 'Ll', + 1101 : 'Ll', + 1102 : 'Ll', + 1103 : 'Ll', + 1104 : 'Ll', + 1105 : 'Ll', + 1106 : 'Ll', + 1107 : 'Ll', + 1108 : 'Ll', + 1109 : 'Ll', + 1110 : 'Ll', + 1111 : 'Ll', + 1112 : 'Ll', + 1113 : 'Ll', + 1114 : 'Ll', + 1115 : 'Ll', + 1116 : 'Ll', + 1117 : 'Ll', + 1118 : 'Ll', + 1119 : 'Ll', + 1120 : 'Lu', + 1121 : 'Ll', + 1122 : 'Lu', + 1123 : 'Ll', + 1124 : 'Lu', + 1125 : 'Ll', + 1126 : 'Lu', + 1127 : 'Ll', + 1128 : 'Lu', + 1129 : 'Ll', + 1130 : 'Lu', + 1131 : 'Ll', + 1132 : 'Lu', + 1133 : 'Ll', + 1134 : 'Lu', + 1135 : 'Ll', + 1136 : 'Lu', + 1137 : 'Ll', + 1138 : 'Lu', + 1139 : 'Ll', + 1140 : 'Lu', + 1141 : 'Ll', + 1142 : 'Lu', + 1143 : 'Ll', + 1144 : 'Lu', + 1145 : 'Ll', + 1146 : 'Lu', + 1147 : 'Ll', + 1148 : 'Lu', + 1149 : 'Ll', + 1150 : 'Lu', + 1151 : 'Ll', + 1152 : 'Lu', + 1153 : 'Ll', + 1154 : 'So', + 1155 : 'Mn', + 1156 : 'Mn', + 1157 : 'Mn', + 1158 : 'Mn', + 1160 : 'Me', + 1161 : 'Me', + 1162 : 'Lu', + 1163 : 'Ll', + 1164 : 'Lu', + 1165 : 'Ll', + 1166 : 'Lu', + 1167 : 'Ll', + 1168 : 'Lu', + 1169 : 'Ll', + 1170 : 'Lu', + 1171 : 'Ll', + 1172 : 'Lu', + 1173 : 'Ll', + 1174 : 'Lu', + 1175 : 'Ll', + 1176 : 'Lu', + 1177 : 'Ll', + 1178 : 'Lu', + 1179 : 'Ll', + 1180 : 'Lu', + 1181 : 'Ll', + 1182 : 'Lu', + 1183 : 'Ll', + 1184 : 'Lu', + 1185 : 'Ll', + 1186 : 'Lu', + 1187 : 'Ll', + 1188 : 'Lu', + 1189 : 'Ll', + 1190 : 'Lu', + 1191 : 'Ll', + 1192 : 'Lu', + 1193 : 'Ll', + 1194 : 'Lu', + 1195 : 'Ll', + 1196 : 'Lu', + 1197 : 'Ll', + 1198 : 'Lu', + 1199 : 'Ll', + 1200 : 'Lu', + 1201 : 'Ll', + 1202 : 'Lu', + 1203 : 'Ll', + 1204 : 'Lu', + 1205 : 'Ll', + 1206 : 'Lu', + 1207 : 'Ll', + 1208 : 'Lu', + 1209 : 'Ll', + 1210 : 'Lu', + 1211 : 'Ll', + 1212 : 'Lu', + 1213 : 'Ll', + 1214 : 'Lu', + 1215 : 'Ll', + 1216 : 'Lu', + 1217 : 'Lu', + 1218 : 'Ll', + 1219 : 'Lu', + 1220 : 'Ll', + 1221 : 'Lu', + 1222 : 'Ll', + 1223 : 'Lu', + 1224 : 'Ll', + 1225 : 'Lu', + 1226 : 'Ll', + 1227 : 'Lu', + 1228 : 'Ll', + 1229 : 'Lu', + 1230 : 'Ll', + 1232 : 'Lu', + 1233 : 'Ll', + 1234 : 'Lu', + 1235 : 'Ll', + 1236 : 'Lu', + 1237 : 'Ll', + 1238 : 'Lu', + 1239 : 'Ll', + 1240 : 'Lu', + 1241 : 'Ll', + 1242 : 'Lu', + 1243 : 'Ll', + 1244 : 'Lu', + 1245 : 'Ll', + 1246 : 'Lu', + 1247 : 'Ll', + 1248 : 'Lu', + 1249 : 'Ll', + 1250 : 'Lu', + 1251 : 'Ll', + 1252 : 'Lu', + 1253 : 'Ll', + 1254 : 'Lu', + 1255 : 'Ll', + 1256 : 'Lu', + 1257 : 'Ll', + 1258 : 'Lu', + 1259 : 'Ll', + 1260 : 'Lu', + 1261 : 'Ll', + 1262 : 'Lu', + 1263 : 'Ll', + 1264 : 'Lu', + 1265 : 'Ll', + 1266 : 'Lu', + 1267 : 'Ll', + 1268 : 'Lu', + 1269 : 'Ll', + 1272 : 'Lu', + 1273 : 'Ll', + 1280 : 'Lu', + 1281 : 'Ll', + 1282 : 'Lu', + 1283 : 'Ll', + 1284 : 'Lu', + 1285 : 'Ll', + 1286 : 'Lu', + 1287 : 'Ll', + 1288 : 'Lu', + 1289 : 'Ll', + 1290 : 'Lu', + 1291 : 'Ll', + 1292 : 'Lu', + 1293 : 'Ll', + 1294 : 'Lu', + 1295 : 'Ll', + 1329 : 'Lu', + 1330 : 'Lu', + 1331 : 'Lu', + 1332 : 'Lu', + 1333 : 'Lu', + 1334 : 'Lu', + 1335 : 'Lu', + 1336 : 'Lu', + 1337 : 'Lu', + 1338 : 'Lu', + 1339 : 'Lu', + 1340 : 'Lu', + 1341 : 'Lu', + 1342 : 'Lu', + 1343 : 'Lu', + 1344 : 'Lu', + 1345 : 'Lu', + 1346 : 'Lu', + 1347 : 'Lu', + 1348 : 'Lu', + 1349 : 'Lu', + 1350 : 'Lu', + 1351 : 'Lu', + 1352 : 'Lu', + 1353 : 'Lu', + 1354 : 'Lu', + 1355 : 'Lu', + 1356 : 'Lu', + 1357 : 'Lu', + 1358 : 'Lu', + 1359 : 'Lu', + 1360 : 'Lu', + 1361 : 'Lu', + 1362 : 'Lu', + 1363 : 'Lu', + 1364 : 'Lu', + 1365 : 'Lu', + 1366 : 'Lu', + 1369 : 'Lm', + 1370 : 'Po', + 1371 : 'Po', + 1372 : 'Po', + 1373 : 'Po', + 1374 : 'Po', + 1375 : 'Po', + 1377 : 'Ll', + 1378 : 'Ll', + 1379 : 'Ll', + 1380 : 'Ll', + 1381 : 'Ll', + 1382 : 'Ll', + 1383 : 'Ll', + 1384 : 'Ll', + 1385 : 'Ll', + 1386 : 'Ll', + 1387 : 'Ll', + 1388 : 'Ll', + 1389 : 'Ll', + 1390 : 'Ll', + 1391 : 'Ll', + 1392 : 'Ll', + 1393 : 'Ll', + 1394 : 'Ll', + 1395 : 'Ll', + 1396 : 'Ll', + 1397 : 'Ll', + 1398 : 'Ll', + 1399 : 'Ll', + 1400 : 'Ll', + 1401 : 'Ll', + 1402 : 'Ll', + 1403 : 'Ll', + 1404 : 'Ll', + 1405 : 'Ll', + 1406 : 'Ll', + 1407 : 'Ll', + 1408 : 'Ll', + 1409 : 'Ll', + 1410 : 'Ll', + 1411 : 'Ll', + 1412 : 'Ll', + 1413 : 'Ll', + 1414 : 'Ll', + 1415 : 'Ll', + 1417 : 'Po', + 1418 : 'Pd', + 1425 : 'Mn', + 1426 : 'Mn', + 1427 : 'Mn', + 1428 : 'Mn', + 1429 : 'Mn', + 1430 : 'Mn', + 1431 : 'Mn', + 1432 : 'Mn', + 1433 : 'Mn', + 1434 : 'Mn', + 1435 : 'Mn', + 1436 : 'Mn', + 1437 : 'Mn', + 1438 : 'Mn', + 1439 : 'Mn', + 1440 : 'Mn', + 1441 : 'Mn', + 1443 : 'Mn', + 1444 : 'Mn', + 1445 : 'Mn', + 1446 : 'Mn', + 1447 : 'Mn', + 1448 : 'Mn', + 1449 : 'Mn', + 1450 : 'Mn', + 1451 : 'Mn', + 1452 : 'Mn', + 1453 : 'Mn', + 1454 : 'Mn', + 1455 : 'Mn', + 1456 : 'Mn', + 1457 : 'Mn', + 1458 : 'Mn', + 1459 : 'Mn', + 1460 : 'Mn', + 1461 : 'Mn', + 1462 : 'Mn', + 1463 : 'Mn', + 1464 : 'Mn', + 1465 : 'Mn', + 1467 : 'Mn', + 1468 : 'Mn', + 1469 : 'Mn', + 1470 : 'Po', + 1471 : 'Mn', + 1472 : 'Po', + 1473 : 'Mn', + 1474 : 'Mn', + 1475 : 'Po', + 1476 : 'Mn', + 1488 : 'Lo', + 1489 : 'Lo', + 1490 : 'Lo', + 1491 : 'Lo', + 1492 : 'Lo', + 1493 : 'Lo', + 1494 : 'Lo', + 1495 : 'Lo', + 1496 : 'Lo', + 1497 : 'Lo', + 1498 : 'Lo', + 1499 : 'Lo', + 1500 : 'Lo', + 1501 : 'Lo', + 1502 : 'Lo', + 1503 : 'Lo', + 1504 : 'Lo', + 1505 : 'Lo', + 1506 : 'Lo', + 1507 : 'Lo', + 1508 : 'Lo', + 1509 : 'Lo', + 1510 : 'Lo', + 1511 : 'Lo', + 1512 : 'Lo', + 1513 : 'Lo', + 1514 : 'Lo', + 1520 : 'Lo', + 1521 : 'Lo', + 1522 : 'Lo', + 1523 : 'Po', + 1524 : 'Po', + 1548 : 'Po', + 1563 : 'Po', + 1567 : 'Po', + 1569 : 'Lo', + 1570 : 'Lo', + 1571 : 'Lo', + 1572 : 'Lo', + 1573 : 'Lo', + 1574 : 'Lo', + 1575 : 'Lo', + 1576 : 'Lo', + 1577 : 'Lo', + 1578 : 'Lo', + 1579 : 'Lo', + 1580 : 'Lo', + 1581 : 'Lo', + 1582 : 'Lo', + 1583 : 'Lo', + 1584 : 'Lo', + 1585 : 'Lo', + 1586 : 'Lo', + 1587 : 'Lo', + 1588 : 'Lo', + 1589 : 'Lo', + 1590 : 'Lo', + 1591 : 'Lo', + 1592 : 'Lo', + 1593 : 'Lo', + 1594 : 'Lo', + 1600 : 'Lm', + 1601 : 'Lo', + 1602 : 'Lo', + 1603 : 'Lo', + 1604 : 'Lo', + 1605 : 'Lo', + 1606 : 'Lo', + 1607 : 'Lo', + 1608 : 'Lo', + 1609 : 'Lo', + 1610 : 'Lo', + 1611 : 'Mn', + 1612 : 'Mn', + 1613 : 'Mn', + 1614 : 'Mn', + 1615 : 'Mn', + 1616 : 'Mn', + 1617 : 'Mn', + 1618 : 'Mn', + 1619 : 'Mn', + 1620 : 'Mn', + 1621 : 'Mn', + 1632 : 'Nd', + 1633 : 'Nd', + 1634 : 'Nd', + 1635 : 'Nd', + 1636 : 'Nd', + 1637 : 'Nd', + 1638 : 'Nd', + 1639 : 'Nd', + 1640 : 'Nd', + 1641 : 'Nd', + 1642 : 'Po', + 1643 : 'Po', + 1644 : 'Po', + 1645 : 'Po', + 1646 : 'Lo', + 1647 : 'Lo', + 1648 : 'Mn', + 1649 : 'Lo', + 1650 : 'Lo', + 1651 : 'Lo', + 1652 : 'Lo', + 1653 : 'Lo', + 1654 : 'Lo', + 1655 : 'Lo', + 1656 : 'Lo', + 1657 : 'Lo', + 1658 : 'Lo', + 1659 : 'Lo', + 1660 : 'Lo', + 1661 : 'Lo', + 1662 : 'Lo', + 1663 : 'Lo', + 1664 : 'Lo', + 1665 : 'Lo', + 1666 : 'Lo', + 1667 : 'Lo', + 1668 : 'Lo', + 1669 : 'Lo', + 1670 : 'Lo', + 1671 : 'Lo', + 1672 : 'Lo', + 1673 : 'Lo', + 1674 : 'Lo', + 1675 : 'Lo', + 1676 : 'Lo', + 1677 : 'Lo', + 1678 : 'Lo', + 1679 : 'Lo', + 1680 : 'Lo', + 1681 : 'Lo', + 1682 : 'Lo', + 1683 : 'Lo', + 1684 : 'Lo', + 1685 : 'Lo', + 1686 : 'Lo', + 1687 : 'Lo', + 1688 : 'Lo', + 1689 : 'Lo', + 1690 : 'Lo', + 1691 : 'Lo', + 1692 : 'Lo', + 1693 : 'Lo', + 1694 : 'Lo', + 1695 : 'Lo', + 1696 : 'Lo', + 1697 : 'Lo', + 1698 : 'Lo', + 1699 : 'Lo', + 1700 : 'Lo', + 1701 : 'Lo', + 1702 : 'Lo', + 1703 : 'Lo', + 1704 : 'Lo', + 1705 : 'Lo', + 1706 : 'Lo', + 1707 : 'Lo', + 1708 : 'Lo', + 1709 : 'Lo', + 1710 : 'Lo', + 1711 : 'Lo', + 1712 : 'Lo', + 1713 : 'Lo', + 1714 : 'Lo', + 1715 : 'Lo', + 1716 : 'Lo', + 1717 : 'Lo', + 1718 : 'Lo', + 1719 : 'Lo', + 1720 : 'Lo', + 1721 : 'Lo', + 1722 : 'Lo', + 1723 : 'Lo', + 1724 : 'Lo', + 1725 : 'Lo', + 1726 : 'Lo', + 1727 : 'Lo', + 1728 : 'Lo', + 1729 : 'Lo', + 1730 : 'Lo', + 1731 : 'Lo', + 1732 : 'Lo', + 1733 : 'Lo', + 1734 : 'Lo', + 1735 : 'Lo', + 1736 : 'Lo', + 1737 : 'Lo', + 1738 : 'Lo', + 1739 : 'Lo', + 1740 : 'Lo', + 1741 : 'Lo', + 1742 : 'Lo', + 1743 : 'Lo', + 1744 : 'Lo', + 1745 : 'Lo', + 1746 : 'Lo', + 1747 : 'Lo', + 1748 : 'Po', + 1749 : 'Lo', + 1750 : 'Mn', + 1751 : 'Mn', + 1752 : 'Mn', + 1753 : 'Mn', + 1754 : 'Mn', + 1755 : 'Mn', + 1756 : 'Mn', + 1757 : 'Cf', + 1758 : 'Me', + 1759 : 'Mn', + 1760 : 'Mn', + 1761 : 'Mn', + 1762 : 'Mn', + 1763 : 'Mn', + 1764 : 'Mn', + 1765 : 'Lm', + 1766 : 'Lm', + 1767 : 'Mn', + 1768 : 'Mn', + 1769 : 'So', + 1770 : 'Mn', + 1771 : 'Mn', + 1772 : 'Mn', + 1773 : 'Mn', + 1776 : 'Nd', + 1777 : 'Nd', + 1778 : 'Nd', + 1779 : 'Nd', + 1780 : 'Nd', + 1781 : 'Nd', + 1782 : 'Nd', + 1783 : 'Nd', + 1784 : 'Nd', + 1785 : 'Nd', + 1786 : 'Lo', + 1787 : 'Lo', + 1788 : 'Lo', + 1789 : 'So', + 1790 : 'So', + 1792 : 'Po', + 1793 : 'Po', + 1794 : 'Po', + 1795 : 'Po', + 1796 : 'Po', + 1797 : 'Po', + 1798 : 'Po', + 1799 : 'Po', + 1800 : 'Po', + 1801 : 'Po', + 1802 : 'Po', + 1803 : 'Po', + 1804 : 'Po', + 1805 : 'Po', + 1807 : 'Cf', + 1808 : 'Lo', + 1809 : 'Mn', + 1810 : 'Lo', + 1811 : 'Lo', + 1812 : 'Lo', + 1813 : 'Lo', + 1814 : 'Lo', + 1815 : 'Lo', + 1816 : 'Lo', + 1817 : 'Lo', + 1818 : 'Lo', + 1819 : 'Lo', + 1820 : 'Lo', + 1821 : 'Lo', + 1822 : 'Lo', + 1823 : 'Lo', + 1824 : 'Lo', + 1825 : 'Lo', + 1826 : 'Lo', + 1827 : 'Lo', + 1828 : 'Lo', + 1829 : 'Lo', + 1830 : 'Lo', + 1831 : 'Lo', + 1832 : 'Lo', + 1833 : 'Lo', + 1834 : 'Lo', + 1835 : 'Lo', + 1836 : 'Lo', + 1840 : 'Mn', + 1841 : 'Mn', + 1842 : 'Mn', + 1843 : 'Mn', + 1844 : 'Mn', + 1845 : 'Mn', + 1846 : 'Mn', + 1847 : 'Mn', + 1848 : 'Mn', + 1849 : 'Mn', + 1850 : 'Mn', + 1851 : 'Mn', + 1852 : 'Mn', + 1853 : 'Mn', + 1854 : 'Mn', + 1855 : 'Mn', + 1856 : 'Mn', + 1857 : 'Mn', + 1858 : 'Mn', + 1859 : 'Mn', + 1860 : 'Mn', + 1861 : 'Mn', + 1862 : 'Mn', + 1863 : 'Mn', + 1864 : 'Mn', + 1865 : 'Mn', + 1866 : 'Mn', + 1920 : 'Lo', + 1921 : 'Lo', + 1922 : 'Lo', + 1923 : 'Lo', + 1924 : 'Lo', + 1925 : 'Lo', + 1926 : 'Lo', + 1927 : 'Lo', + 1928 : 'Lo', + 1929 : 'Lo', + 1930 : 'Lo', + 1931 : 'Lo', + 1932 : 'Lo', + 1933 : 'Lo', + 1934 : 'Lo', + 1935 : 'Lo', + 1936 : 'Lo', + 1937 : 'Lo', + 1938 : 'Lo', + 1939 : 'Lo', + 1940 : 'Lo', + 1941 : 'Lo', + 1942 : 'Lo', + 1943 : 'Lo', + 1944 : 'Lo', + 1945 : 'Lo', + 1946 : 'Lo', + 1947 : 'Lo', + 1948 : 'Lo', + 1949 : 'Lo', + 1950 : 'Lo', + 1951 : 'Lo', + 1952 : 'Lo', + 1953 : 'Lo', + 1954 : 'Lo', + 1955 : 'Lo', + 1956 : 'Lo', + 1957 : 'Lo', + 1958 : 'Mn', + 1959 : 'Mn', + 1960 : 'Mn', + 1961 : 'Mn', + 1962 : 'Mn', + 1963 : 'Mn', + 1964 : 'Mn', + 1965 : 'Mn', + 1966 : 'Mn', + 1967 : 'Mn', + 1968 : 'Mn', + 1969 : 'Lo', + 2305 : 'Mn', + 2306 : 'Mn', + 2307 : 'Mc', + 2309 : 'Lo', + 2310 : 'Lo', + 2311 : 'Lo', + 2312 : 'Lo', + 2313 : 'Lo', + 2314 : 'Lo', + 2315 : 'Lo', + 2316 : 'Lo', + 2317 : 'Lo', + 2318 : 'Lo', + 2319 : 'Lo', + 2320 : 'Lo', + 2321 : 'Lo', + 2322 : 'Lo', + 2323 : 'Lo', + 2324 : 'Lo', + 2325 : 'Lo', + 2326 : 'Lo', + 2327 : 'Lo', + 2328 : 'Lo', + 2329 : 'Lo', + 2330 : 'Lo', + 2331 : 'Lo', + 2332 : 'Lo', + 2333 : 'Lo', + 2334 : 'Lo', + 2335 : 'Lo', + 2336 : 'Lo', + 2337 : 'Lo', + 2338 : 'Lo', + 2339 : 'Lo', + 2340 : 'Lo', + 2341 : 'Lo', + 2342 : 'Lo', + 2343 : 'Lo', + 2344 : 'Lo', + 2345 : 'Lo', + 2346 : 'Lo', + 2347 : 'Lo', + 2348 : 'Lo', + 2349 : 'Lo', + 2350 : 'Lo', + 2351 : 'Lo', + 2352 : 'Lo', + 2353 : 'Lo', + 2354 : 'Lo', + 2355 : 'Lo', + 2356 : 'Lo', + 2357 : 'Lo', + 2358 : 'Lo', + 2359 : 'Lo', + 2360 : 'Lo', + 2361 : 'Lo', + 2364 : 'Mn', + 2365 : 'Lo', + 2366 : 'Mc', + 2367 : 'Mc', + 2368 : 'Mc', + 2369 : 'Mn', + 2370 : 'Mn', + 2371 : 'Mn', + 2372 : 'Mn', + 2373 : 'Mn', + 2374 : 'Mn', + 2375 : 'Mn', + 2376 : 'Mn', + 2377 : 'Mc', + 2378 : 'Mc', + 2379 : 'Mc', + 2380 : 'Mc', + 2381 : 'Mn', + 2384 : 'Lo', + 2385 : 'Mn', + 2386 : 'Mn', + 2387 : 'Mn', + 2388 : 'Mn', + 2392 : 'Lo', + 2393 : 'Lo', + 2394 : 'Lo', + 2395 : 'Lo', + 2396 : 'Lo', + 2397 : 'Lo', + 2398 : 'Lo', + 2399 : 'Lo', + 2400 : 'Lo', + 2401 : 'Lo', + 2402 : 'Mn', + 2403 : 'Mn', + 2404 : 'Po', + 2405 : 'Po', + 2406 : 'Nd', + 2407 : 'Nd', + 2408 : 'Nd', + 2409 : 'Nd', + 2410 : 'Nd', + 2411 : 'Nd', + 2412 : 'Nd', + 2413 : 'Nd', + 2414 : 'Nd', + 2415 : 'Nd', + 2416 : 'Po', + 2433 : 'Mn', + 2434 : 'Mc', + 2435 : 'Mc', + 2437 : 'Lo', + 2438 : 'Lo', + 2439 : 'Lo', + 2440 : 'Lo', + 2441 : 'Lo', + 2442 : 'Lo', + 2443 : 'Lo', + 2444 : 'Lo', + 2447 : 'Lo', + 2448 : 'Lo', + 2451 : 'Lo', + 2452 : 'Lo', + 2453 : 'Lo', + 2454 : 'Lo', + 2455 : 'Lo', + 2456 : 'Lo', + 2457 : 'Lo', + 2458 : 'Lo', + 2459 : 'Lo', + 2460 : 'Lo', + 2461 : 'Lo', + 2462 : 'Lo', + 2463 : 'Lo', + 2464 : 'Lo', + 2465 : 'Lo', + 2466 : 'Lo', + 2467 : 'Lo', + 2468 : 'Lo', + 2469 : 'Lo', + 2470 : 'Lo', + 2471 : 'Lo', + 2472 : 'Lo', + 2474 : 'Lo', + 2475 : 'Lo', + 2476 : 'Lo', + 2477 : 'Lo', + 2478 : 'Lo', + 2479 : 'Lo', + 2480 : 'Lo', + 2482 : 'Lo', + 2486 : 'Lo', + 2487 : 'Lo', + 2488 : 'Lo', + 2489 : 'Lo', + 2492 : 'Mn', + 2494 : 'Mc', + 2495 : 'Mc', + 2496 : 'Mc', + 2497 : 'Mn', + 2498 : 'Mn', + 2499 : 'Mn', + 2500 : 'Mn', + 2503 : 'Mc', + 2504 : 'Mc', + 2507 : 'Mc', + 2508 : 'Mc', + 2509 : 'Mn', + 2519 : 'Mc', + 2524 : 'Lo', + 2525 : 'Lo', + 2527 : 'Lo', + 2528 : 'Lo', + 2529 : 'Lo', + 2530 : 'Mn', + 2531 : 'Mn', + 2534 : 'Nd', + 2535 : 'Nd', + 2536 : 'Nd', + 2537 : 'Nd', + 2538 : 'Nd', + 2539 : 'Nd', + 2540 : 'Nd', + 2541 : 'Nd', + 2542 : 'Nd', + 2543 : 'Nd', + 2544 : 'Lo', + 2545 : 'Lo', + 2546 : 'Sc', + 2547 : 'Sc', + 2548 : 'No', + 2549 : 'No', + 2550 : 'No', + 2551 : 'No', + 2552 : 'No', + 2553 : 'No', + 2554 : 'So', + 2562 : 'Mn', + 2565 : 'Lo', + 2566 : 'Lo', + 2567 : 'Lo', + 2568 : 'Lo', + 2569 : 'Lo', + 2570 : 'Lo', + 2575 : 'Lo', + 2576 : 'Lo', + 2579 : 'Lo', + 2580 : 'Lo', + 2581 : 'Lo', + 2582 : 'Lo', + 2583 : 'Lo', + 2584 : 'Lo', + 2585 : 'Lo', + 2586 : 'Lo', + 2587 : 'Lo', + 2588 : 'Lo', + 2589 : 'Lo', + 2590 : 'Lo', + 2591 : 'Lo', + 2592 : 'Lo', + 2593 : 'Lo', + 2594 : 'Lo', + 2595 : 'Lo', + 2596 : 'Lo', + 2597 : 'Lo', + 2598 : 'Lo', + 2599 : 'Lo', + 2600 : 'Lo', + 2602 : 'Lo', + 2603 : 'Lo', + 2604 : 'Lo', + 2605 : 'Lo', + 2606 : 'Lo', + 2607 : 'Lo', + 2608 : 'Lo', + 2610 : 'Lo', + 2611 : 'Lo', + 2613 : 'Lo', + 2614 : 'Lo', + 2616 : 'Lo', + 2617 : 'Lo', + 2620 : 'Mn', + 2622 : 'Mc', + 2623 : 'Mc', + 2624 : 'Mc', + 2625 : 'Mn', + 2626 : 'Mn', + 2631 : 'Mn', + 2632 : 'Mn', + 2635 : 'Mn', + 2636 : 'Mn', + 2637 : 'Mn', + 2649 : 'Lo', + 2650 : 'Lo', + 2651 : 'Lo', + 2652 : 'Lo', + 2654 : 'Lo', + 2662 : 'Nd', + 2663 : 'Nd', + 2664 : 'Nd', + 2665 : 'Nd', + 2666 : 'Nd', + 2667 : 'Nd', + 2668 : 'Nd', + 2669 : 'Nd', + 2670 : 'Nd', + 2671 : 'Nd', + 2672 : 'Mn', + 2673 : 'Mn', + 2674 : 'Lo', + 2675 : 'Lo', + 2676 : 'Lo', + 2689 : 'Mn', + 2690 : 'Mn', + 2691 : 'Mc', + 2693 : 'Lo', + 2694 : 'Lo', + 2695 : 'Lo', + 2696 : 'Lo', + 2697 : 'Lo', + 2698 : 'Lo', + 2699 : 'Lo', + 2701 : 'Lo', + 2703 : 'Lo', + 2704 : 'Lo', + 2705 : 'Lo', + 2707 : 'Lo', + 2708 : 'Lo', + 2709 : 'Lo', + 2710 : 'Lo', + 2711 : 'Lo', + 2712 : 'Lo', + 2713 : 'Lo', + 2714 : 'Lo', + 2715 : 'Lo', + 2716 : 'Lo', + 2717 : 'Lo', + 2718 : 'Lo', + 2719 : 'Lo', + 2720 : 'Lo', + 2721 : 'Lo', + 2722 : 'Lo', + 2723 : 'Lo', + 2724 : 'Lo', + 2725 : 'Lo', + 2726 : 'Lo', + 2727 : 'Lo', + 2728 : 'Lo', + 2730 : 'Lo', + 2731 : 'Lo', + 2732 : 'Lo', + 2733 : 'Lo', + 2734 : 'Lo', + 2735 : 'Lo', + 2736 : 'Lo', + 2738 : 'Lo', + 2739 : 'Lo', + 2741 : 'Lo', + 2742 : 'Lo', + 2743 : 'Lo', + 2744 : 'Lo', + 2745 : 'Lo', + 2748 : 'Mn', + 2749 : 'Lo', + 2750 : 'Mc', + 2751 : 'Mc', + 2752 : 'Mc', + 2753 : 'Mn', + 2754 : 'Mn', + 2755 : 'Mn', + 2756 : 'Mn', + 2757 : 'Mn', + 2759 : 'Mn', + 2760 : 'Mn', + 2761 : 'Mc', + 2763 : 'Mc', + 2764 : 'Mc', + 2765 : 'Mn', + 2768 : 'Lo', + 2784 : 'Lo', + 2790 : 'Nd', + 2791 : 'Nd', + 2792 : 'Nd', + 2793 : 'Nd', + 2794 : 'Nd', + 2795 : 'Nd', + 2796 : 'Nd', + 2797 : 'Nd', + 2798 : 'Nd', + 2799 : 'Nd', + 2817 : 'Mn', + 2818 : 'Mc', + 2819 : 'Mc', + 2821 : 'Lo', + 2822 : 'Lo', + 2823 : 'Lo', + 2824 : 'Lo', + 2825 : 'Lo', + 2826 : 'Lo', + 2827 : 'Lo', + 2828 : 'Lo', + 2831 : 'Lo', + 2832 : 'Lo', + 2835 : 'Lo', + 2836 : 'Lo', + 2837 : 'Lo', + 2838 : 'Lo', + 2839 : 'Lo', + 2840 : 'Lo', + 2841 : 'Lo', + 2842 : 'Lo', + 2843 : 'Lo', + 2844 : 'Lo', + 2845 : 'Lo', + 2846 : 'Lo', + 2847 : 'Lo', + 2848 : 'Lo', + 2849 : 'Lo', + 2850 : 'Lo', + 2851 : 'Lo', + 2852 : 'Lo', + 2853 : 'Lo', + 2854 : 'Lo', + 2855 : 'Lo', + 2856 : 'Lo', + 2858 : 'Lo', + 2859 : 'Lo', + 2860 : 'Lo', + 2861 : 'Lo', + 2862 : 'Lo', + 2863 : 'Lo', + 2864 : 'Lo', + 2866 : 'Lo', + 2867 : 'Lo', + 2870 : 'Lo', + 2871 : 'Lo', + 2872 : 'Lo', + 2873 : 'Lo', + 2876 : 'Mn', + 2877 : 'Lo', + 2878 : 'Mc', + 2879 : 'Mn', + 2880 : 'Mc', + 2881 : 'Mn', + 2882 : 'Mn', + 2883 : 'Mn', + 2887 : 'Mc', + 2888 : 'Mc', + 2891 : 'Mc', + 2892 : 'Mc', + 2893 : 'Mn', + 2902 : 'Mn', + 2903 : 'Mc', + 2908 : 'Lo', + 2909 : 'Lo', + 2911 : 'Lo', + 2912 : 'Lo', + 2913 : 'Lo', + 2918 : 'Nd', + 2919 : 'Nd', + 2920 : 'Nd', + 2921 : 'Nd', + 2922 : 'Nd', + 2923 : 'Nd', + 2924 : 'Nd', + 2925 : 'Nd', + 2926 : 'Nd', + 2927 : 'Nd', + 2928 : 'So', + 2946 : 'Mn', + 2947 : 'Lo', + 2949 : 'Lo', + 2950 : 'Lo', + 2951 : 'Lo', + 2952 : 'Lo', + 2953 : 'Lo', + 2954 : 'Lo', + 2958 : 'Lo', + 2959 : 'Lo', + 2960 : 'Lo', + 2962 : 'Lo', + 2963 : 'Lo', + 2964 : 'Lo', + 2965 : 'Lo', + 2969 : 'Lo', + 2970 : 'Lo', + 2972 : 'Lo', + 2974 : 'Lo', + 2975 : 'Lo', + 2979 : 'Lo', + 2980 : 'Lo', + 2984 : 'Lo', + 2985 : 'Lo', + 2986 : 'Lo', + 2990 : 'Lo', + 2991 : 'Lo', + 2992 : 'Lo', + 2993 : 'Lo', + 2994 : 'Lo', + 2995 : 'Lo', + 2996 : 'Lo', + 2997 : 'Lo', + 2999 : 'Lo', + 3000 : 'Lo', + 3001 : 'Lo', + 3006 : 'Mc', + 3007 : 'Mc', + 3008 : 'Mn', + 3009 : 'Mc', + 3010 : 'Mc', + 3014 : 'Mc', + 3015 : 'Mc', + 3016 : 'Mc', + 3018 : 'Mc', + 3019 : 'Mc', + 3020 : 'Mc', + 3021 : 'Mn', + 3031 : 'Mc', + 3047 : 'Nd', + 3048 : 'Nd', + 3049 : 'Nd', + 3050 : 'Nd', + 3051 : 'Nd', + 3052 : 'Nd', + 3053 : 'Nd', + 3054 : 'Nd', + 3055 : 'Nd', + 3056 : 'No', + 3057 : 'No', + 3058 : 'No', + 3073 : 'Mc', + 3074 : 'Mc', + 3075 : 'Mc', + 3077 : 'Lo', + 3078 : 'Lo', + 3079 : 'Lo', + 3080 : 'Lo', + 3081 : 'Lo', + 3082 : 'Lo', + 3083 : 'Lo', + 3084 : 'Lo', + 3086 : 'Lo', + 3087 : 'Lo', + 3088 : 'Lo', + 3090 : 'Lo', + 3091 : 'Lo', + 3092 : 'Lo', + 3093 : 'Lo', + 3094 : 'Lo', + 3095 : 'Lo', + 3096 : 'Lo', + 3097 : 'Lo', + 3098 : 'Lo', + 3099 : 'Lo', + 3100 : 'Lo', + 3101 : 'Lo', + 3102 : 'Lo', + 3103 : 'Lo', + 3104 : 'Lo', + 3105 : 'Lo', + 3106 : 'Lo', + 3107 : 'Lo', + 3108 : 'Lo', + 3109 : 'Lo', + 3110 : 'Lo', + 3111 : 'Lo', + 3112 : 'Lo', + 3114 : 'Lo', + 3115 : 'Lo', + 3116 : 'Lo', + 3117 : 'Lo', + 3118 : 'Lo', + 3119 : 'Lo', + 3120 : 'Lo', + 3121 : 'Lo', + 3122 : 'Lo', + 3123 : 'Lo', + 3125 : 'Lo', + 3126 : 'Lo', + 3127 : 'Lo', + 3128 : 'Lo', + 3129 : 'Lo', + 3134 : 'Mn', + 3135 : 'Mn', + 3136 : 'Mn', + 3137 : 'Mc', + 3138 : 'Mc', + 3139 : 'Mc', + 3140 : 'Mc', + 3142 : 'Mn', + 3143 : 'Mn', + 3144 : 'Mn', + 3146 : 'Mn', + 3147 : 'Mn', + 3148 : 'Mn', + 3149 : 'Mn', + 3157 : 'Mn', + 3158 : 'Mn', + 3168 : 'Lo', + 3169 : 'Lo', + 3174 : 'Nd', + 3175 : 'Nd', + 3176 : 'Nd', + 3177 : 'Nd', + 3178 : 'Nd', + 3179 : 'Nd', + 3180 : 'Nd', + 3181 : 'Nd', + 3182 : 'Nd', + 3183 : 'Nd', + 3202 : 'Mc', + 3203 : 'Mc', + 3205 : 'Lo', + 3206 : 'Lo', + 3207 : 'Lo', + 3208 : 'Lo', + 3209 : 'Lo', + 3210 : 'Lo', + 3211 : 'Lo', + 3212 : 'Lo', + 3214 : 'Lo', + 3215 : 'Lo', + 3216 : 'Lo', + 3218 : 'Lo', + 3219 : 'Lo', + 3220 : 'Lo', + 3221 : 'Lo', + 3222 : 'Lo', + 3223 : 'Lo', + 3224 : 'Lo', + 3225 : 'Lo', + 3226 : 'Lo', + 3227 : 'Lo', + 3228 : 'Lo', + 3229 : 'Lo', + 3230 : 'Lo', + 3231 : 'Lo', + 3232 : 'Lo', + 3233 : 'Lo', + 3234 : 'Lo', + 3235 : 'Lo', + 3236 : 'Lo', + 3237 : 'Lo', + 3238 : 'Lo', + 3239 : 'Lo', + 3240 : 'Lo', + 3242 : 'Lo', + 3243 : 'Lo', + 3244 : 'Lo', + 3245 : 'Lo', + 3246 : 'Lo', + 3247 : 'Lo', + 3248 : 'Lo', + 3249 : 'Lo', + 3250 : 'Lo', + 3251 : 'Lo', + 3253 : 'Lo', + 3254 : 'Lo', + 3255 : 'Lo', + 3256 : 'Lo', + 3257 : 'Lo', + 3262 : 'Mc', + 3263 : 'Mn', + 3264 : 'Mc', + 3265 : 'Mc', + 3266 : 'Mc', + 3267 : 'Mc', + 3268 : 'Mc', + 3270 : 'Mn', + 3271 : 'Mc', + 3272 : 'Mc', + 3274 : 'Mc', + 3275 : 'Mc', + 3276 : 'Mn', + 3277 : 'Mn', + 3285 : 'Mc', + 3286 : 'Mc', + 3294 : 'Lo', + 3296 : 'Lo', + 3297 : 'Lo', + 3302 : 'Nd', + 3303 : 'Nd', + 3304 : 'Nd', + 3305 : 'Nd', + 3306 : 'Nd', + 3307 : 'Nd', + 3308 : 'Nd', + 3309 : 'Nd', + 3310 : 'Nd', + 3311 : 'Nd', + 3330 : 'Mc', + 3331 : 'Mc', + 3333 : 'Lo', + 3334 : 'Lo', + 3335 : 'Lo', + 3336 : 'Lo', + 3337 : 'Lo', + 3338 : 'Lo', + 3339 : 'Lo', + 3340 : 'Lo', + 3342 : 'Lo', + 3343 : 'Lo', + 3344 : 'Lo', + 3346 : 'Lo', + 3347 : 'Lo', + 3348 : 'Lo', + 3349 : 'Lo', + 3350 : 'Lo', + 3351 : 'Lo', + 3352 : 'Lo', + 3353 : 'Lo', + 3354 : 'Lo', + 3355 : 'Lo', + 3356 : 'Lo', + 3357 : 'Lo', + 3358 : 'Lo', + 3359 : 'Lo', + 3360 : 'Lo', + 3361 : 'Lo', + 3362 : 'Lo', + 3363 : 'Lo', + 3364 : 'Lo', + 3365 : 'Lo', + 3366 : 'Lo', + 3367 : 'Lo', + 3368 : 'Lo', + 3370 : 'Lo', + 3371 : 'Lo', + 3372 : 'Lo', + 3373 : 'Lo', + 3374 : 'Lo', + 3375 : 'Lo', + 3376 : 'Lo', + 3377 : 'Lo', + 3378 : 'Lo', + 3379 : 'Lo', + 3380 : 'Lo', + 3381 : 'Lo', + 3382 : 'Lo', + 3383 : 'Lo', + 3384 : 'Lo', + 3385 : 'Lo', + 3390 : 'Mc', + 3391 : 'Mc', + 3392 : 'Mc', + 3393 : 'Mn', + 3394 : 'Mn', + 3395 : 'Mn', + 3398 : 'Mc', + 3399 : 'Mc', + 3400 : 'Mc', + 3402 : 'Mc', + 3403 : 'Mc', + 3404 : 'Mc', + 3405 : 'Mn', + 3415 : 'Mc', + 3424 : 'Lo', + 3425 : 'Lo', + 3430 : 'Nd', + 3431 : 'Nd', + 3432 : 'Nd', + 3433 : 'Nd', + 3434 : 'Nd', + 3435 : 'Nd', + 3436 : 'Nd', + 3437 : 'Nd', + 3438 : 'Nd', + 3439 : 'Nd', + 3458 : 'Mc', + 3459 : 'Mc', + 3461 : 'Lo', + 3462 : 'Lo', + 3463 : 'Lo', + 3464 : 'Lo', + 3465 : 'Lo', + 3466 : 'Lo', + 3467 : 'Lo', + 3468 : 'Lo', + 3469 : 'Lo', + 3470 : 'Lo', + 3471 : 'Lo', + 3472 : 'Lo', + 3473 : 'Lo', + 3474 : 'Lo', + 3475 : 'Lo', + 3476 : 'Lo', + 3477 : 'Lo', + 3478 : 'Lo', + 3482 : 'Lo', + 3483 : 'Lo', + 3484 : 'Lo', + 3485 : 'Lo', + 3486 : 'Lo', + 3487 : 'Lo', + 3488 : 'Lo', + 3489 : 'Lo', + 3490 : 'Lo', + 3491 : 'Lo', + 3492 : 'Lo', + 3493 : 'Lo', + 3494 : 'Lo', + 3495 : 'Lo', + 3496 : 'Lo', + 3497 : 'Lo', + 3498 : 'Lo', + 3499 : 'Lo', + 3500 : 'Lo', + 3501 : 'Lo', + 3502 : 'Lo', + 3503 : 'Lo', + 3504 : 'Lo', + 3505 : 'Lo', + 3507 : 'Lo', + 3508 : 'Lo', + 3509 : 'Lo', + 3510 : 'Lo', + 3511 : 'Lo', + 3512 : 'Lo', + 3513 : 'Lo', + 3514 : 'Lo', + 3515 : 'Lo', + 3517 : 'Lo', + 3520 : 'Lo', + 3521 : 'Lo', + 3522 : 'Lo', + 3523 : 'Lo', + 3524 : 'Lo', + 3525 : 'Lo', + 3526 : 'Lo', + 3530 : 'Mn', + 3535 : 'Mc', + 3536 : 'Mc', + 3537 : 'Mc', + 3538 : 'Mn', + 3539 : 'Mn', + 3540 : 'Mn', + 3542 : 'Mn', + 3544 : 'Mc', + 3545 : 'Mc', + 3546 : 'Mc', + 3547 : 'Mc', + 3548 : 'Mc', + 3549 : 'Mc', + 3550 : 'Mc', + 3551 : 'Mc', + 3570 : 'Mc', + 3571 : 'Mc', + 3572 : 'Po', + 3585 : 'Lo', + 3586 : 'Lo', + 3587 : 'Lo', + 3588 : 'Lo', + 3589 : 'Lo', + 3590 : 'Lo', + 3591 : 'Lo', + 3592 : 'Lo', + 3593 : 'Lo', + 3594 : 'Lo', + 3595 : 'Lo', + 3596 : 'Lo', + 3597 : 'Lo', + 3598 : 'Lo', + 3599 : 'Lo', + 3600 : 'Lo', + 3601 : 'Lo', + 3602 : 'Lo', + 3603 : 'Lo', + 3604 : 'Lo', + 3605 : 'Lo', + 3606 : 'Lo', + 3607 : 'Lo', + 3608 : 'Lo', + 3609 : 'Lo', + 3610 : 'Lo', + 3611 : 'Lo', + 3612 : 'Lo', + 3613 : 'Lo', + 3614 : 'Lo', + 3615 : 'Lo', + 3616 : 'Lo', + 3617 : 'Lo', + 3618 : 'Lo', + 3619 : 'Lo', + 3620 : 'Lo', + 3621 : 'Lo', + 3622 : 'Lo', + 3623 : 'Lo', + 3624 : 'Lo', + 3625 : 'Lo', + 3626 : 'Lo', + 3627 : 'Lo', + 3628 : 'Lo', + 3629 : 'Lo', + 3630 : 'Lo', + 3631 : 'Lo', + 3632 : 'Lo', + 3633 : 'Mn', + 3634 : 'Lo', + 3635 : 'Lo', + 3636 : 'Mn', + 3637 : 'Mn', + 3638 : 'Mn', + 3639 : 'Mn', + 3640 : 'Mn', + 3641 : 'Mn', + 3642 : 'Mn', + 3647 : 'Sc', + 3648 : 'Lo', + 3649 : 'Lo', + 3650 : 'Lo', + 3651 : 'Lo', + 3652 : 'Lo', + 3653 : 'Lo', + 3654 : 'Lm', + 3655 : 'Mn', + 3656 : 'Mn', + 3657 : 'Mn', + 3658 : 'Mn', + 3659 : 'Mn', + 3660 : 'Mn', + 3661 : 'Mn', + 3662 : 'Mn', + 3663 : 'Po', + 3664 : 'Nd', + 3665 : 'Nd', + 3666 : 'Nd', + 3667 : 'Nd', + 3668 : 'Nd', + 3669 : 'Nd', + 3670 : 'Nd', + 3671 : 'Nd', + 3672 : 'Nd', + 3673 : 'Nd', + 3674 : 'Po', + 3675 : 'Po', + 3713 : 'Lo', + 3714 : 'Lo', + 3716 : 'Lo', + 3719 : 'Lo', + 3720 : 'Lo', + 3722 : 'Lo', + 3725 : 'Lo', + 3732 : 'Lo', + 3733 : 'Lo', + 3734 : 'Lo', + 3735 : 'Lo', + 3737 : 'Lo', + 3738 : 'Lo', + 3739 : 'Lo', + 3740 : 'Lo', + 3741 : 'Lo', + 3742 : 'Lo', + 3743 : 'Lo', + 3745 : 'Lo', + 3746 : 'Lo', + 3747 : 'Lo', + 3749 : 'Lo', + 3751 : 'Lo', + 3754 : 'Lo', + 3755 : 'Lo', + 3757 : 'Lo', + 3758 : 'Lo', + 3759 : 'Lo', + 3760 : 'Lo', + 3761 : 'Mn', + 3762 : 'Lo', + 3763 : 'Lo', + 3764 : 'Mn', + 3765 : 'Mn', + 3766 : 'Mn', + 3767 : 'Mn', + 3768 : 'Mn', + 3769 : 'Mn', + 3771 : 'Mn', + 3772 : 'Mn', + 3773 : 'Lo', + 3776 : 'Lo', + 3777 : 'Lo', + 3778 : 'Lo', + 3779 : 'Lo', + 3780 : 'Lo', + 3782 : 'Lm', + 3784 : 'Mn', + 3785 : 'Mn', + 3786 : 'Mn', + 3787 : 'Mn', + 3788 : 'Mn', + 3789 : 'Mn', + 3792 : 'Nd', + 3793 : 'Nd', + 3794 : 'Nd', + 3795 : 'Nd', + 3796 : 'Nd', + 3797 : 'Nd', + 3798 : 'Nd', + 3799 : 'Nd', + 3800 : 'Nd', + 3801 : 'Nd', + 3804 : 'Lo', + 3805 : 'Lo', + 3840 : 'Lo', + 3841 : 'So', + 3842 : 'So', + 3843 : 'So', + 3844 : 'Po', + 3845 : 'Po', + 3846 : 'Po', + 3847 : 'Po', + 3848 : 'Po', + 3849 : 'Po', + 3850 : 'Po', + 3851 : 'Po', + 3852 : 'Po', + 3853 : 'Po', + 3854 : 'Po', + 3855 : 'Po', + 3856 : 'Po', + 3857 : 'Po', + 3858 : 'Po', + 3859 : 'So', + 3860 : 'So', + 3861 : 'So', + 3862 : 'So', + 3863 : 'So', + 3864 : 'Mn', + 3865 : 'Mn', + 3866 : 'So', + 3867 : 'So', + 3868 : 'So', + 3869 : 'So', + 3870 : 'So', + 3871 : 'So', + 3872 : 'Nd', + 3873 : 'Nd', + 3874 : 'Nd', + 3875 : 'Nd', + 3876 : 'Nd', + 3877 : 'Nd', + 3878 : 'Nd', + 3879 : 'Nd', + 3880 : 'Nd', + 3881 : 'Nd', + 3882 : 'No', + 3883 : 'No', + 3884 : 'No', + 3885 : 'No', + 3886 : 'No', + 3887 : 'No', + 3888 : 'No', + 3889 : 'No', + 3890 : 'No', + 3891 : 'No', + 3892 : 'So', + 3893 : 'Mn', + 3894 : 'So', + 3895 : 'Mn', + 3896 : 'So', + 3897 : 'Mn', + 3898 : 'Ps', + 3899 : 'Pe', + 3900 : 'Ps', + 3901 : 'Pe', + 3902 : 'Mc', + 3903 : 'Mc', + 3904 : 'Lo', + 3905 : 'Lo', + 3906 : 'Lo', + 3907 : 'Lo', + 3908 : 'Lo', + 3909 : 'Lo', + 3910 : 'Lo', + 3911 : 'Lo', + 3913 : 'Lo', + 3914 : 'Lo', + 3915 : 'Lo', + 3916 : 'Lo', + 3917 : 'Lo', + 3918 : 'Lo', + 3919 : 'Lo', + 3920 : 'Lo', + 3921 : 'Lo', + 3922 : 'Lo', + 3923 : 'Lo', + 3924 : 'Lo', + 3925 : 'Lo', + 3926 : 'Lo', + 3927 : 'Lo', + 3928 : 'Lo', + 3929 : 'Lo', + 3930 : 'Lo', + 3931 : 'Lo', + 3932 : 'Lo', + 3933 : 'Lo', + 3934 : 'Lo', + 3935 : 'Lo', + 3936 : 'Lo', + 3937 : 'Lo', + 3938 : 'Lo', + 3939 : 'Lo', + 3940 : 'Lo', + 3941 : 'Lo', + 3942 : 'Lo', + 3943 : 'Lo', + 3944 : 'Lo', + 3945 : 'Lo', + 3946 : 'Lo', + 3953 : 'Mn', + 3954 : 'Mn', + 3955 : 'Mn', + 3956 : 'Mn', + 3957 : 'Mn', + 3958 : 'Mn', + 3959 : 'Mn', + 3960 : 'Mn', + 3961 : 'Mn', + 3962 : 'Mn', + 3963 : 'Mn', + 3964 : 'Mn', + 3965 : 'Mn', + 3966 : 'Mn', + 3967 : 'Mc', + 3968 : 'Mn', + 3969 : 'Mn', + 3970 : 'Mn', + 3971 : 'Mn', + 3972 : 'Mn', + 3973 : 'Po', + 3974 : 'Mn', + 3975 : 'Mn', + 3976 : 'Lo', + 3977 : 'Lo', + 3978 : 'Lo', + 3979 : 'Lo', + 3984 : 'Mn', + 3985 : 'Mn', + 3986 : 'Mn', + 3987 : 'Mn', + 3988 : 'Mn', + 3989 : 'Mn', + 3990 : 'Mn', + 3991 : 'Mn', + 3993 : 'Mn', + 3994 : 'Mn', + 3995 : 'Mn', + 3996 : 'Mn', + 3997 : 'Mn', + 3998 : 'Mn', + 3999 : 'Mn', + 4000 : 'Mn', + 4001 : 'Mn', + 4002 : 'Mn', + 4003 : 'Mn', + 4004 : 'Mn', + 4005 : 'Mn', + 4006 : 'Mn', + 4007 : 'Mn', + 4008 : 'Mn', + 4009 : 'Mn', + 4010 : 'Mn', + 4011 : 'Mn', + 4012 : 'Mn', + 4013 : 'Mn', + 4014 : 'Mn', + 4015 : 'Mn', + 4016 : 'Mn', + 4017 : 'Mn', + 4018 : 'Mn', + 4019 : 'Mn', + 4020 : 'Mn', + 4021 : 'Mn', + 4022 : 'Mn', + 4023 : 'Mn', + 4024 : 'Mn', + 4025 : 'Mn', + 4026 : 'Mn', + 4027 : 'Mn', + 4028 : 'Mn', + 4030 : 'So', + 4031 : 'So', + 4032 : 'So', + 4033 : 'So', + 4034 : 'So', + 4035 : 'So', + 4036 : 'So', + 4037 : 'So', + 4038 : 'Mn', + 4039 : 'So', + 4040 : 'So', + 4041 : 'So', + 4042 : 'So', + 4043 : 'So', + 4044 : 'So', + 4047 : 'So', + 4096 : 'Lo', + 4097 : 'Lo', + 4098 : 'Lo', + 4099 : 'Lo', + 4100 : 'Lo', + 4101 : 'Lo', + 4102 : 'Lo', + 4103 : 'Lo', + 4104 : 'Lo', + 4105 : 'Lo', + 4106 : 'Lo', + 4107 : 'Lo', + 4108 : 'Lo', + 4109 : 'Lo', + 4110 : 'Lo', + 4111 : 'Lo', + 4112 : 'Lo', + 4113 : 'Lo', + 4114 : 'Lo', + 4115 : 'Lo', + 4116 : 'Lo', + 4117 : 'Lo', + 4118 : 'Lo', + 4119 : 'Lo', + 4120 : 'Lo', + 4121 : 'Lo', + 4122 : 'Lo', + 4123 : 'Lo', + 4124 : 'Lo', + 4125 : 'Lo', + 4126 : 'Lo', + 4127 : 'Lo', + 4128 : 'Lo', + 4129 : 'Lo', + 4131 : 'Lo', + 4132 : 'Lo', + 4133 : 'Lo', + 4134 : 'Lo', + 4135 : 'Lo', + 4137 : 'Lo', + 4138 : 'Lo', + 4140 : 'Mc', + 4141 : 'Mn', + 4142 : 'Mn', + 4143 : 'Mn', + 4144 : 'Mn', + 4145 : 'Mc', + 4146 : 'Mn', + 4150 : 'Mn', + 4151 : 'Mn', + 4152 : 'Mc', + 4153 : 'Mn', + 4160 : 'Nd', + 4161 : 'Nd', + 4162 : 'Nd', + 4163 : 'Nd', + 4164 : 'Nd', + 4165 : 'Nd', + 4166 : 'Nd', + 4167 : 'Nd', + 4168 : 'Nd', + 4169 : 'Nd', + 4170 : 'Po', + 4171 : 'Po', + 4172 : 'Po', + 4173 : 'Po', + 4174 : 'Po', + 4175 : 'Po', + 4176 : 'Lo', + 4177 : 'Lo', + 4178 : 'Lo', + 4179 : 'Lo', + 4180 : 'Lo', + 4181 : 'Lo', + 4182 : 'Mc', + 4183 : 'Mc', + 4184 : 'Mn', + 4185 : 'Mn', + 4256 : 'Lu', + 4257 : 'Lu', + 4258 : 'Lu', + 4259 : 'Lu', + 4260 : 'Lu', + 4261 : 'Lu', + 4262 : 'Lu', + 4263 : 'Lu', + 4264 : 'Lu', + 4265 : 'Lu', + 4266 : 'Lu', + 4267 : 'Lu', + 4268 : 'Lu', + 4269 : 'Lu', + 4270 : 'Lu', + 4271 : 'Lu', + 4272 : 'Lu', + 4273 : 'Lu', + 4274 : 'Lu', + 4275 : 'Lu', + 4276 : 'Lu', + 4277 : 'Lu', + 4278 : 'Lu', + 4279 : 'Lu', + 4280 : 'Lu', + 4281 : 'Lu', + 4282 : 'Lu', + 4283 : 'Lu', + 4284 : 'Lu', + 4285 : 'Lu', + 4286 : 'Lu', + 4287 : 'Lu', + 4288 : 'Lu', + 4289 : 'Lu', + 4290 : 'Lu', + 4291 : 'Lu', + 4292 : 'Lu', + 4293 : 'Lu', + 4304 : 'Lo', + 4305 : 'Lo', + 4306 : 'Lo', + 4307 : 'Lo', + 4308 : 'Lo', + 4309 : 'Lo', + 4310 : 'Lo', + 4311 : 'Lo', + 4312 : 'Lo', + 4313 : 'Lo', + 4314 : 'Lo', + 4315 : 'Lo', + 4316 : 'Lo', + 4317 : 'Lo', + 4318 : 'Lo', + 4319 : 'Lo', + 4320 : 'Lo', + 4321 : 'Lo', + 4322 : 'Lo', + 4323 : 'Lo', + 4324 : 'Lo', + 4325 : 'Lo', + 4326 : 'Lo', + 4327 : 'Lo', + 4328 : 'Lo', + 4329 : 'Lo', + 4330 : 'Lo', + 4331 : 'Lo', + 4332 : 'Lo', + 4333 : 'Lo', + 4334 : 'Lo', + 4335 : 'Lo', + 4336 : 'Lo', + 4337 : 'Lo', + 4338 : 'Lo', + 4339 : 'Lo', + 4340 : 'Lo', + 4341 : 'Lo', + 4342 : 'Lo', + 4343 : 'Lo', + 4344 : 'Lo', + 4347 : 'Po', + 4352 : 'Lo', + 4353 : 'Lo', + 4354 : 'Lo', + 4355 : 'Lo', + 4356 : 'Lo', + 4357 : 'Lo', + 4358 : 'Lo', + 4359 : 'Lo', + 4360 : 'Lo', + 4361 : 'Lo', + 4362 : 'Lo', + 4363 : 'Lo', + 4364 : 'Lo', + 4365 : 'Lo', + 4366 : 'Lo', + 4367 : 'Lo', + 4368 : 'Lo', + 4369 : 'Lo', + 4370 : 'Lo', + 4371 : 'Lo', + 4372 : 'Lo', + 4373 : 'Lo', + 4374 : 'Lo', + 4375 : 'Lo', + 4376 : 'Lo', + 4377 : 'Lo', + 4378 : 'Lo', + 4379 : 'Lo', + 4380 : 'Lo', + 4381 : 'Lo', + 4382 : 'Lo', + 4383 : 'Lo', + 4384 : 'Lo', + 4385 : 'Lo', + 4386 : 'Lo', + 4387 : 'Lo', + 4388 : 'Lo', + 4389 : 'Lo', + 4390 : 'Lo', + 4391 : 'Lo', + 4392 : 'Lo', + 4393 : 'Lo', + 4394 : 'Lo', + 4395 : 'Lo', + 4396 : 'Lo', + 4397 : 'Lo', + 4398 : 'Lo', + 4399 : 'Lo', + 4400 : 'Lo', + 4401 : 'Lo', + 4402 : 'Lo', + 4403 : 'Lo', + 4404 : 'Lo', + 4405 : 'Lo', + 4406 : 'Lo', + 4407 : 'Lo', + 4408 : 'Lo', + 4409 : 'Lo', + 4410 : 'Lo', + 4411 : 'Lo', + 4412 : 'Lo', + 4413 : 'Lo', + 4414 : 'Lo', + 4415 : 'Lo', + 4416 : 'Lo', + 4417 : 'Lo', + 4418 : 'Lo', + 4419 : 'Lo', + 4420 : 'Lo', + 4421 : 'Lo', + 4422 : 'Lo', + 4423 : 'Lo', + 4424 : 'Lo', + 4425 : 'Lo', + 4426 : 'Lo', + 4427 : 'Lo', + 4428 : 'Lo', + 4429 : 'Lo', + 4430 : 'Lo', + 4431 : 'Lo', + 4432 : 'Lo', + 4433 : 'Lo', + 4434 : 'Lo', + 4435 : 'Lo', + 4436 : 'Lo', + 4437 : 'Lo', + 4438 : 'Lo', + 4439 : 'Lo', + 4440 : 'Lo', + 4441 : 'Lo', + 4447 : 'Lo', + 4448 : 'Lo', + 4449 : 'Lo', + 4450 : 'Lo', + 4451 : 'Lo', + 4452 : 'Lo', + 4453 : 'Lo', + 4454 : 'Lo', + 4455 : 'Lo', + 4456 : 'Lo', + 4457 : 'Lo', + 4458 : 'Lo', + 4459 : 'Lo', + 4460 : 'Lo', + 4461 : 'Lo', + 4462 : 'Lo', + 4463 : 'Lo', + 4464 : 'Lo', + 4465 : 'Lo', + 4466 : 'Lo', + 4467 : 'Lo', + 4468 : 'Lo', + 4469 : 'Lo', + 4470 : 'Lo', + 4471 : 'Lo', + 4472 : 'Lo', + 4473 : 'Lo', + 4474 : 'Lo', + 4475 : 'Lo', + 4476 : 'Lo', + 4477 : 'Lo', + 4478 : 'Lo', + 4479 : 'Lo', + 4480 : 'Lo', + 4481 : 'Lo', + 4482 : 'Lo', + 4483 : 'Lo', + 4484 : 'Lo', + 4485 : 'Lo', + 4486 : 'Lo', + 4487 : 'Lo', + 4488 : 'Lo', + 4489 : 'Lo', + 4490 : 'Lo', + 4491 : 'Lo', + 4492 : 'Lo', + 4493 : 'Lo', + 4494 : 'Lo', + 4495 : 'Lo', + 4496 : 'Lo', + 4497 : 'Lo', + 4498 : 'Lo', + 4499 : 'Lo', + 4500 : 'Lo', + 4501 : 'Lo', + 4502 : 'Lo', + 4503 : 'Lo', + 4504 : 'Lo', + 4505 : 'Lo', + 4506 : 'Lo', + 4507 : 'Lo', + 4508 : 'Lo', + 4509 : 'Lo', + 4510 : 'Lo', + 4511 : 'Lo', + 4512 : 'Lo', + 4513 : 'Lo', + 4514 : 'Lo', + 4520 : 'Lo', + 4521 : 'Lo', + 4522 : 'Lo', + 4523 : 'Lo', + 4524 : 'Lo', + 4525 : 'Lo', + 4526 : 'Lo', + 4527 : 'Lo', + 4528 : 'Lo', + 4529 : 'Lo', + 4530 : 'Lo', + 4531 : 'Lo', + 4532 : 'Lo', + 4533 : 'Lo', + 4534 : 'Lo', + 4535 : 'Lo', + 4536 : 'Lo', + 4537 : 'Lo', + 4538 : 'Lo', + 4539 : 'Lo', + 4540 : 'Lo', + 4541 : 'Lo', + 4542 : 'Lo', + 4543 : 'Lo', + 4544 : 'Lo', + 4545 : 'Lo', + 4546 : 'Lo', + 4547 : 'Lo', + 4548 : 'Lo', + 4549 : 'Lo', + 4550 : 'Lo', + 4551 : 'Lo', + 4552 : 'Lo', + 4553 : 'Lo', + 4554 : 'Lo', + 4555 : 'Lo', + 4556 : 'Lo', + 4557 : 'Lo', + 4558 : 'Lo', + 4559 : 'Lo', + 4560 : 'Lo', + 4561 : 'Lo', + 4562 : 'Lo', + 4563 : 'Lo', + 4564 : 'Lo', + 4565 : 'Lo', + 4566 : 'Lo', + 4567 : 'Lo', + 4568 : 'Lo', + 4569 : 'Lo', + 4570 : 'Lo', + 4571 : 'Lo', + 4572 : 'Lo', + 4573 : 'Lo', + 4574 : 'Lo', + 4575 : 'Lo', + 4576 : 'Lo', + 4577 : 'Lo', + 4578 : 'Lo', + 4579 : 'Lo', + 4580 : 'Lo', + 4581 : 'Lo', + 4582 : 'Lo', + 4583 : 'Lo', + 4584 : 'Lo', + 4585 : 'Lo', + 4586 : 'Lo', + 4587 : 'Lo', + 4588 : 'Lo', + 4589 : 'Lo', + 4590 : 'Lo', + 4591 : 'Lo', + 4592 : 'Lo', + 4593 : 'Lo', + 4594 : 'Lo', + 4595 : 'Lo', + 4596 : 'Lo', + 4597 : 'Lo', + 4598 : 'Lo', + 4599 : 'Lo', + 4600 : 'Lo', + 4601 : 'Lo', + 4608 : 'Lo', + 4609 : 'Lo', + 4610 : 'Lo', + 4611 : 'Lo', + 4612 : 'Lo', + 4613 : 'Lo', + 4614 : 'Lo', + 4616 : 'Lo', + 4617 : 'Lo', + 4618 : 'Lo', + 4619 : 'Lo', + 4620 : 'Lo', + 4621 : 'Lo', + 4622 : 'Lo', + 4623 : 'Lo', + 4624 : 'Lo', + 4625 : 'Lo', + 4626 : 'Lo', + 4627 : 'Lo', + 4628 : 'Lo', + 4629 : 'Lo', + 4630 : 'Lo', + 4631 : 'Lo', + 4632 : 'Lo', + 4633 : 'Lo', + 4634 : 'Lo', + 4635 : 'Lo', + 4636 : 'Lo', + 4637 : 'Lo', + 4638 : 'Lo', + 4639 : 'Lo', + 4640 : 'Lo', + 4641 : 'Lo', + 4642 : 'Lo', + 4643 : 'Lo', + 4644 : 'Lo', + 4645 : 'Lo', + 4646 : 'Lo', + 4647 : 'Lo', + 4648 : 'Lo', + 4649 : 'Lo', + 4650 : 'Lo', + 4651 : 'Lo', + 4652 : 'Lo', + 4653 : 'Lo', + 4654 : 'Lo', + 4655 : 'Lo', + 4656 : 'Lo', + 4657 : 'Lo', + 4658 : 'Lo', + 4659 : 'Lo', + 4660 : 'Lo', + 4661 : 'Lo', + 4662 : 'Lo', + 4663 : 'Lo', + 4664 : 'Lo', + 4665 : 'Lo', + 4666 : 'Lo', + 4667 : 'Lo', + 4668 : 'Lo', + 4669 : 'Lo', + 4670 : 'Lo', + 4671 : 'Lo', + 4672 : 'Lo', + 4673 : 'Lo', + 4674 : 'Lo', + 4675 : 'Lo', + 4676 : 'Lo', + 4677 : 'Lo', + 4678 : 'Lo', + 4680 : 'Lo', + 4682 : 'Lo', + 4683 : 'Lo', + 4684 : 'Lo', + 4685 : 'Lo', + 4688 : 'Lo', + 4689 : 'Lo', + 4690 : 'Lo', + 4691 : 'Lo', + 4692 : 'Lo', + 4693 : 'Lo', + 4694 : 'Lo', + 4696 : 'Lo', + 4698 : 'Lo', + 4699 : 'Lo', + 4700 : 'Lo', + 4701 : 'Lo', + 4704 : 'Lo', + 4705 : 'Lo', + 4706 : 'Lo', + 4707 : 'Lo', + 4708 : 'Lo', + 4709 : 'Lo', + 4710 : 'Lo', + 4711 : 'Lo', + 4712 : 'Lo', + 4713 : 'Lo', + 4714 : 'Lo', + 4715 : 'Lo', + 4716 : 'Lo', + 4717 : 'Lo', + 4718 : 'Lo', + 4719 : 'Lo', + 4720 : 'Lo', + 4721 : 'Lo', + 4722 : 'Lo', + 4723 : 'Lo', + 4724 : 'Lo', + 4725 : 'Lo', + 4726 : 'Lo', + 4727 : 'Lo', + 4728 : 'Lo', + 4729 : 'Lo', + 4730 : 'Lo', + 4731 : 'Lo', + 4732 : 'Lo', + 4733 : 'Lo', + 4734 : 'Lo', + 4735 : 'Lo', + 4736 : 'Lo', + 4737 : 'Lo', + 4738 : 'Lo', + 4739 : 'Lo', + 4740 : 'Lo', + 4741 : 'Lo', + 4742 : 'Lo', + 4744 : 'Lo', + 4746 : 'Lo', + 4747 : 'Lo', + 4748 : 'Lo', + 4749 : 'Lo', + 4752 : 'Lo', + 4753 : 'Lo', + 4754 : 'Lo', + 4755 : 'Lo', + 4756 : 'Lo', + 4757 : 'Lo', + 4758 : 'Lo', + 4759 : 'Lo', + 4760 : 'Lo', + 4761 : 'Lo', + 4762 : 'Lo', + 4763 : 'Lo', + 4764 : 'Lo', + 4765 : 'Lo', + 4766 : 'Lo', + 4767 : 'Lo', + 4768 : 'Lo', + 4769 : 'Lo', + 4770 : 'Lo', + 4771 : 'Lo', + 4772 : 'Lo', + 4773 : 'Lo', + 4774 : 'Lo', + 4775 : 'Lo', + 4776 : 'Lo', + 4777 : 'Lo', + 4778 : 'Lo', + 4779 : 'Lo', + 4780 : 'Lo', + 4781 : 'Lo', + 4782 : 'Lo', + 4784 : 'Lo', + 4786 : 'Lo', + 4787 : 'Lo', + 4788 : 'Lo', + 4789 : 'Lo', + 4792 : 'Lo', + 4793 : 'Lo', + 4794 : 'Lo', + 4795 : 'Lo', + 4796 : 'Lo', + 4797 : 'Lo', + 4798 : 'Lo', + 4800 : 'Lo', + 4802 : 'Lo', + 4803 : 'Lo', + 4804 : 'Lo', + 4805 : 'Lo', + 4808 : 'Lo', + 4809 : 'Lo', + 4810 : 'Lo', + 4811 : 'Lo', + 4812 : 'Lo', + 4813 : 'Lo', + 4814 : 'Lo', + 4816 : 'Lo', + 4817 : 'Lo', + 4818 : 'Lo', + 4819 : 'Lo', + 4820 : 'Lo', + 4821 : 'Lo', + 4822 : 'Lo', + 4824 : 'Lo', + 4825 : 'Lo', + 4826 : 'Lo', + 4827 : 'Lo', + 4828 : 'Lo', + 4829 : 'Lo', + 4830 : 'Lo', + 4831 : 'Lo', + 4832 : 'Lo', + 4833 : 'Lo', + 4834 : 'Lo', + 4835 : 'Lo', + 4836 : 'Lo', + 4837 : 'Lo', + 4838 : 'Lo', + 4839 : 'Lo', + 4840 : 'Lo', + 4841 : 'Lo', + 4842 : 'Lo', + 4843 : 'Lo', + 4844 : 'Lo', + 4845 : 'Lo', + 4846 : 'Lo', + 4848 : 'Lo', + 4849 : 'Lo', + 4850 : 'Lo', + 4851 : 'Lo', + 4852 : 'Lo', + 4853 : 'Lo', + 4854 : 'Lo', + 4855 : 'Lo', + 4856 : 'Lo', + 4857 : 'Lo', + 4858 : 'Lo', + 4859 : 'Lo', + 4860 : 'Lo', + 4861 : 'Lo', + 4862 : 'Lo', + 4863 : 'Lo', + 4864 : 'Lo', + 4865 : 'Lo', + 4866 : 'Lo', + 4867 : 'Lo', + 4868 : 'Lo', + 4869 : 'Lo', + 4870 : 'Lo', + 4871 : 'Lo', + 4872 : 'Lo', + 4873 : 'Lo', + 4874 : 'Lo', + 4875 : 'Lo', + 4876 : 'Lo', + 4877 : 'Lo', + 4878 : 'Lo', + 4880 : 'Lo', + 4882 : 'Lo', + 4883 : 'Lo', + 4884 : 'Lo', + 4885 : 'Lo', + 4888 : 'Lo', + 4889 : 'Lo', + 4890 : 'Lo', + 4891 : 'Lo', + 4892 : 'Lo', + 4893 : 'Lo', + 4894 : 'Lo', + 4896 : 'Lo', + 4897 : 'Lo', + 4898 : 'Lo', + 4899 : 'Lo', + 4900 : 'Lo', + 4901 : 'Lo', + 4902 : 'Lo', + 4903 : 'Lo', + 4904 : 'Lo', + 4905 : 'Lo', + 4906 : 'Lo', + 4907 : 'Lo', + 4908 : 'Lo', + 4909 : 'Lo', + 4910 : 'Lo', + 4911 : 'Lo', + 4912 : 'Lo', + 4913 : 'Lo', + 4914 : 'Lo', + 4915 : 'Lo', + 4916 : 'Lo', + 4917 : 'Lo', + 4918 : 'Lo', + 4919 : 'Lo', + 4920 : 'Lo', + 4921 : 'Lo', + 4922 : 'Lo', + 4923 : 'Lo', + 4924 : 'Lo', + 4925 : 'Lo', + 4926 : 'Lo', + 4927 : 'Lo', + 4928 : 'Lo', + 4929 : 'Lo', + 4930 : 'Lo', + 4931 : 'Lo', + 4932 : 'Lo', + 4933 : 'Lo', + 4934 : 'Lo', + 4936 : 'Lo', + 4937 : 'Lo', + 4938 : 'Lo', + 4939 : 'Lo', + 4940 : 'Lo', + 4941 : 'Lo', + 4942 : 'Lo', + 4943 : 'Lo', + 4944 : 'Lo', + 4945 : 'Lo', + 4946 : 'Lo', + 4947 : 'Lo', + 4948 : 'Lo', + 4949 : 'Lo', + 4950 : 'Lo', + 4951 : 'Lo', + 4952 : 'Lo', + 4953 : 'Lo', + 4954 : 'Lo', + 4961 : 'Po', + 4962 : 'Po', + 4963 : 'Po', + 4964 : 'Po', + 4965 : 'Po', + 4966 : 'Po', + 4967 : 'Po', + 4968 : 'Po', + 4969 : 'Nd', + 4970 : 'Nd', + 4971 : 'Nd', + 4972 : 'Nd', + 4973 : 'Nd', + 4974 : 'Nd', + 4975 : 'Nd', + 4976 : 'Nd', + 4977 : 'Nd', + 4978 : 'No', + 4979 : 'No', + 4980 : 'No', + 4981 : 'No', + 4982 : 'No', + 4983 : 'No', + 4984 : 'No', + 4985 : 'No', + 4986 : 'No', + 4987 : 'No', + 4988 : 'No', + 5024 : 'Lo', + 5025 : 'Lo', + 5026 : 'Lo', + 5027 : 'Lo', + 5028 : 'Lo', + 5029 : 'Lo', + 5030 : 'Lo', + 5031 : 'Lo', + 5032 : 'Lo', + 5033 : 'Lo', + 5034 : 'Lo', + 5035 : 'Lo', + 5036 : 'Lo', + 5037 : 'Lo', + 5038 : 'Lo', + 5039 : 'Lo', + 5040 : 'Lo', + 5041 : 'Lo', + 5042 : 'Lo', + 5043 : 'Lo', + 5044 : 'Lo', + 5045 : 'Lo', + 5046 : 'Lo', + 5047 : 'Lo', + 5048 : 'Lo', + 5049 : 'Lo', + 5050 : 'Lo', + 5051 : 'Lo', + 5052 : 'Lo', + 5053 : 'Lo', + 5054 : 'Lo', + 5055 : 'Lo', + 5056 : 'Lo', + 5057 : 'Lo', + 5058 : 'Lo', + 5059 : 'Lo', + 5060 : 'Lo', + 5061 : 'Lo', + 5062 : 'Lo', + 5063 : 'Lo', + 5064 : 'Lo', + 5065 : 'Lo', + 5066 : 'Lo', + 5067 : 'Lo', + 5068 : 'Lo', + 5069 : 'Lo', + 5070 : 'Lo', + 5071 : 'Lo', + 5072 : 'Lo', + 5073 : 'Lo', + 5074 : 'Lo', + 5075 : 'Lo', + 5076 : 'Lo', + 5077 : 'Lo', + 5078 : 'Lo', + 5079 : 'Lo', + 5080 : 'Lo', + 5081 : 'Lo', + 5082 : 'Lo', + 5083 : 'Lo', + 5084 : 'Lo', + 5085 : 'Lo', + 5086 : 'Lo', + 5087 : 'Lo', + 5088 : 'Lo', + 5089 : 'Lo', + 5090 : 'Lo', + 5091 : 'Lo', + 5092 : 'Lo', + 5093 : 'Lo', + 5094 : 'Lo', + 5095 : 'Lo', + 5096 : 'Lo', + 5097 : 'Lo', + 5098 : 'Lo', + 5099 : 'Lo', + 5100 : 'Lo', + 5101 : 'Lo', + 5102 : 'Lo', + 5103 : 'Lo', + 5104 : 'Lo', + 5105 : 'Lo', + 5106 : 'Lo', + 5107 : 'Lo', + 5108 : 'Lo', + 5121 : 'Lo', + 5122 : 'Lo', + 5123 : 'Lo', + 5124 : 'Lo', + 5125 : 'Lo', + 5126 : 'Lo', + 5127 : 'Lo', + 5128 : 'Lo', + 5129 : 'Lo', + 5130 : 'Lo', + 5131 : 'Lo', + 5132 : 'Lo', + 5133 : 'Lo', + 5134 : 'Lo', + 5135 : 'Lo', + 5136 : 'Lo', + 5137 : 'Lo', + 5138 : 'Lo', + 5139 : 'Lo', + 5140 : 'Lo', + 5141 : 'Lo', + 5142 : 'Lo', + 5143 : 'Lo', + 5144 : 'Lo', + 5145 : 'Lo', + 5146 : 'Lo', + 5147 : 'Lo', + 5148 : 'Lo', + 5149 : 'Lo', + 5150 : 'Lo', + 5151 : 'Lo', + 5152 : 'Lo', + 5153 : 'Lo', + 5154 : 'Lo', + 5155 : 'Lo', + 5156 : 'Lo', + 5157 : 'Lo', + 5158 : 'Lo', + 5159 : 'Lo', + 5160 : 'Lo', + 5161 : 'Lo', + 5162 : 'Lo', + 5163 : 'Lo', + 5164 : 'Lo', + 5165 : 'Lo', + 5166 : 'Lo', + 5167 : 'Lo', + 5168 : 'Lo', + 5169 : 'Lo', + 5170 : 'Lo', + 5171 : 'Lo', + 5172 : 'Lo', + 5173 : 'Lo', + 5174 : 'Lo', + 5175 : 'Lo', + 5176 : 'Lo', + 5177 : 'Lo', + 5178 : 'Lo', + 5179 : 'Lo', + 5180 : 'Lo', + 5181 : 'Lo', + 5182 : 'Lo', + 5183 : 'Lo', + 5184 : 'Lo', + 5185 : 'Lo', + 5186 : 'Lo', + 5187 : 'Lo', + 5188 : 'Lo', + 5189 : 'Lo', + 5190 : 'Lo', + 5191 : 'Lo', + 5192 : 'Lo', + 5193 : 'Lo', + 5194 : 'Lo', + 5195 : 'Lo', + 5196 : 'Lo', + 5197 : 'Lo', + 5198 : 'Lo', + 5199 : 'Lo', + 5200 : 'Lo', + 5201 : 'Lo', + 5202 : 'Lo', + 5203 : 'Lo', + 5204 : 'Lo', + 5205 : 'Lo', + 5206 : 'Lo', + 5207 : 'Lo', + 5208 : 'Lo', + 5209 : 'Lo', + 5210 : 'Lo', + 5211 : 'Lo', + 5212 : 'Lo', + 5213 : 'Lo', + 5214 : 'Lo', + 5215 : 'Lo', + 5216 : 'Lo', + 5217 : 'Lo', + 5218 : 'Lo', + 5219 : 'Lo', + 5220 : 'Lo', + 5221 : 'Lo', + 5222 : 'Lo', + 5223 : 'Lo', + 5224 : 'Lo', + 5225 : 'Lo', + 5226 : 'Lo', + 5227 : 'Lo', + 5228 : 'Lo', + 5229 : 'Lo', + 5230 : 'Lo', + 5231 : 'Lo', + 5232 : 'Lo', + 5233 : 'Lo', + 5234 : 'Lo', + 5235 : 'Lo', + 5236 : 'Lo', + 5237 : 'Lo', + 5238 : 'Lo', + 5239 : 'Lo', + 5240 : 'Lo', + 5241 : 'Lo', + 5242 : 'Lo', + 5243 : 'Lo', + 5244 : 'Lo', + 5245 : 'Lo', + 5246 : 'Lo', + 5247 : 'Lo', + 5248 : 'Lo', + 5249 : 'Lo', + 5250 : 'Lo', + 5251 : 'Lo', + 5252 : 'Lo', + 5253 : 'Lo', + 5254 : 'Lo', + 5255 : 'Lo', + 5256 : 'Lo', + 5257 : 'Lo', + 5258 : 'Lo', + 5259 : 'Lo', + 5260 : 'Lo', + 5261 : 'Lo', + 5262 : 'Lo', + 5263 : 'Lo', + 5264 : 'Lo', + 5265 : 'Lo', + 5266 : 'Lo', + 5267 : 'Lo', + 5268 : 'Lo', + 5269 : 'Lo', + 5270 : 'Lo', + 5271 : 'Lo', + 5272 : 'Lo', + 5273 : 'Lo', + 5274 : 'Lo', + 5275 : 'Lo', + 5276 : 'Lo', + 5277 : 'Lo', + 5278 : 'Lo', + 5279 : 'Lo', + 5280 : 'Lo', + 5281 : 'Lo', + 5282 : 'Lo', + 5283 : 'Lo', + 5284 : 'Lo', + 5285 : 'Lo', + 5286 : 'Lo', + 5287 : 'Lo', + 5288 : 'Lo', + 5289 : 'Lo', + 5290 : 'Lo', + 5291 : 'Lo', + 5292 : 'Lo', + 5293 : 'Lo', + 5294 : 'Lo', + 5295 : 'Lo', + 5296 : 'Lo', + 5297 : 'Lo', + 5298 : 'Lo', + 5299 : 'Lo', + 5300 : 'Lo', + 5301 : 'Lo', + 5302 : 'Lo', + 5303 : 'Lo', + 5304 : 'Lo', + 5305 : 'Lo', + 5306 : 'Lo', + 5307 : 'Lo', + 5308 : 'Lo', + 5309 : 'Lo', + 5310 : 'Lo', + 5311 : 'Lo', + 5312 : 'Lo', + 5313 : 'Lo', + 5314 : 'Lo', + 5315 : 'Lo', + 5316 : 'Lo', + 5317 : 'Lo', + 5318 : 'Lo', + 5319 : 'Lo', + 5320 : 'Lo', + 5321 : 'Lo', + 5322 : 'Lo', + 5323 : 'Lo', + 5324 : 'Lo', + 5325 : 'Lo', + 5326 : 'Lo', + 5327 : 'Lo', + 5328 : 'Lo', + 5329 : 'Lo', + 5330 : 'Lo', + 5331 : 'Lo', + 5332 : 'Lo', + 5333 : 'Lo', + 5334 : 'Lo', + 5335 : 'Lo', + 5336 : 'Lo', + 5337 : 'Lo', + 5338 : 'Lo', + 5339 : 'Lo', + 5340 : 'Lo', + 5341 : 'Lo', + 5342 : 'Lo', + 5343 : 'Lo', + 5344 : 'Lo', + 5345 : 'Lo', + 5346 : 'Lo', + 5347 : 'Lo', + 5348 : 'Lo', + 5349 : 'Lo', + 5350 : 'Lo', + 5351 : 'Lo', + 5352 : 'Lo', + 5353 : 'Lo', + 5354 : 'Lo', + 5355 : 'Lo', + 5356 : 'Lo', + 5357 : 'Lo', + 5358 : 'Lo', + 5359 : 'Lo', + 5360 : 'Lo', + 5361 : 'Lo', + 5362 : 'Lo', + 5363 : 'Lo', + 5364 : 'Lo', + 5365 : 'Lo', + 5366 : 'Lo', + 5367 : 'Lo', + 5368 : 'Lo', + 5369 : 'Lo', + 5370 : 'Lo', + 5371 : 'Lo', + 5372 : 'Lo', + 5373 : 'Lo', + 5374 : 'Lo', + 5375 : 'Lo', + 5376 : 'Lo', + 5377 : 'Lo', + 5378 : 'Lo', + 5379 : 'Lo', + 5380 : 'Lo', + 5381 : 'Lo', + 5382 : 'Lo', + 5383 : 'Lo', + 5384 : 'Lo', + 5385 : 'Lo', + 5386 : 'Lo', + 5387 : 'Lo', + 5388 : 'Lo', + 5389 : 'Lo', + 5390 : 'Lo', + 5391 : 'Lo', + 5392 : 'Lo', + 5393 : 'Lo', + 5394 : 'Lo', + 5395 : 'Lo', + 5396 : 'Lo', + 5397 : 'Lo', + 5398 : 'Lo', + 5399 : 'Lo', + 5400 : 'Lo', + 5401 : 'Lo', + 5402 : 'Lo', + 5403 : 'Lo', + 5404 : 'Lo', + 5405 : 'Lo', + 5406 : 'Lo', + 5407 : 'Lo', + 5408 : 'Lo', + 5409 : 'Lo', + 5410 : 'Lo', + 5411 : 'Lo', + 5412 : 'Lo', + 5413 : 'Lo', + 5414 : 'Lo', + 5415 : 'Lo', + 5416 : 'Lo', + 5417 : 'Lo', + 5418 : 'Lo', + 5419 : 'Lo', + 5420 : 'Lo', + 5421 : 'Lo', + 5422 : 'Lo', + 5423 : 'Lo', + 5424 : 'Lo', + 5425 : 'Lo', + 5426 : 'Lo', + 5427 : 'Lo', + 5428 : 'Lo', + 5429 : 'Lo', + 5430 : 'Lo', + 5431 : 'Lo', + 5432 : 'Lo', + 5433 : 'Lo', + 5434 : 'Lo', + 5435 : 'Lo', + 5436 : 'Lo', + 5437 : 'Lo', + 5438 : 'Lo', + 5439 : 'Lo', + 5440 : 'Lo', + 5441 : 'Lo', + 5442 : 'Lo', + 5443 : 'Lo', + 5444 : 'Lo', + 5445 : 'Lo', + 5446 : 'Lo', + 5447 : 'Lo', + 5448 : 'Lo', + 5449 : 'Lo', + 5450 : 'Lo', + 5451 : 'Lo', + 5452 : 'Lo', + 5453 : 'Lo', + 5454 : 'Lo', + 5455 : 'Lo', + 5456 : 'Lo', + 5457 : 'Lo', + 5458 : 'Lo', + 5459 : 'Lo', + 5460 : 'Lo', + 5461 : 'Lo', + 5462 : 'Lo', + 5463 : 'Lo', + 5464 : 'Lo', + 5465 : 'Lo', + 5466 : 'Lo', + 5467 : 'Lo', + 5468 : 'Lo', + 5469 : 'Lo', + 5470 : 'Lo', + 5471 : 'Lo', + 5472 : 'Lo', + 5473 : 'Lo', + 5474 : 'Lo', + 5475 : 'Lo', + 5476 : 'Lo', + 5477 : 'Lo', + 5478 : 'Lo', + 5479 : 'Lo', + 5480 : 'Lo', + 5481 : 'Lo', + 5482 : 'Lo', + 5483 : 'Lo', + 5484 : 'Lo', + 5485 : 'Lo', + 5486 : 'Lo', + 5487 : 'Lo', + 5488 : 'Lo', + 5489 : 'Lo', + 5490 : 'Lo', + 5491 : 'Lo', + 5492 : 'Lo', + 5493 : 'Lo', + 5494 : 'Lo', + 5495 : 'Lo', + 5496 : 'Lo', + 5497 : 'Lo', + 5498 : 'Lo', + 5499 : 'Lo', + 5500 : 'Lo', + 5501 : 'Lo', + 5502 : 'Lo', + 5503 : 'Lo', + 5504 : 'Lo', + 5505 : 'Lo', + 5506 : 'Lo', + 5507 : 'Lo', + 5508 : 'Lo', + 5509 : 'Lo', + 5510 : 'Lo', + 5511 : 'Lo', + 5512 : 'Lo', + 5513 : 'Lo', + 5514 : 'Lo', + 5515 : 'Lo', + 5516 : 'Lo', + 5517 : 'Lo', + 5518 : 'Lo', + 5519 : 'Lo', + 5520 : 'Lo', + 5521 : 'Lo', + 5522 : 'Lo', + 5523 : 'Lo', + 5524 : 'Lo', + 5525 : 'Lo', + 5526 : 'Lo', + 5527 : 'Lo', + 5528 : 'Lo', + 5529 : 'Lo', + 5530 : 'Lo', + 5531 : 'Lo', + 5532 : 'Lo', + 5533 : 'Lo', + 5534 : 'Lo', + 5535 : 'Lo', + 5536 : 'Lo', + 5537 : 'Lo', + 5538 : 'Lo', + 5539 : 'Lo', + 5540 : 'Lo', + 5541 : 'Lo', + 5542 : 'Lo', + 5543 : 'Lo', + 5544 : 'Lo', + 5545 : 'Lo', + 5546 : 'Lo', + 5547 : 'Lo', + 5548 : 'Lo', + 5549 : 'Lo', + 5550 : 'Lo', + 5551 : 'Lo', + 5552 : 'Lo', + 5553 : 'Lo', + 5554 : 'Lo', + 5555 : 'Lo', + 5556 : 'Lo', + 5557 : 'Lo', + 5558 : 'Lo', + 5559 : 'Lo', + 5560 : 'Lo', + 5561 : 'Lo', + 5562 : 'Lo', + 5563 : 'Lo', + 5564 : 'Lo', + 5565 : 'Lo', + 5566 : 'Lo', + 5567 : 'Lo', + 5568 : 'Lo', + 5569 : 'Lo', + 5570 : 'Lo', + 5571 : 'Lo', + 5572 : 'Lo', + 5573 : 'Lo', + 5574 : 'Lo', + 5575 : 'Lo', + 5576 : 'Lo', + 5577 : 'Lo', + 5578 : 'Lo', + 5579 : 'Lo', + 5580 : 'Lo', + 5581 : 'Lo', + 5582 : 'Lo', + 5583 : 'Lo', + 5584 : 'Lo', + 5585 : 'Lo', + 5586 : 'Lo', + 5587 : 'Lo', + 5588 : 'Lo', + 5589 : 'Lo', + 5590 : 'Lo', + 5591 : 'Lo', + 5592 : 'Lo', + 5593 : 'Lo', + 5594 : 'Lo', + 5595 : 'Lo', + 5596 : 'Lo', + 5597 : 'Lo', + 5598 : 'Lo', + 5599 : 'Lo', + 5600 : 'Lo', + 5601 : 'Lo', + 5602 : 'Lo', + 5603 : 'Lo', + 5604 : 'Lo', + 5605 : 'Lo', + 5606 : 'Lo', + 5607 : 'Lo', + 5608 : 'Lo', + 5609 : 'Lo', + 5610 : 'Lo', + 5611 : 'Lo', + 5612 : 'Lo', + 5613 : 'Lo', + 5614 : 'Lo', + 5615 : 'Lo', + 5616 : 'Lo', + 5617 : 'Lo', + 5618 : 'Lo', + 5619 : 'Lo', + 5620 : 'Lo', + 5621 : 'Lo', + 5622 : 'Lo', + 5623 : 'Lo', + 5624 : 'Lo', + 5625 : 'Lo', + 5626 : 'Lo', + 5627 : 'Lo', + 5628 : 'Lo', + 5629 : 'Lo', + 5630 : 'Lo', + 5631 : 'Lo', + 5632 : 'Lo', + 5633 : 'Lo', + 5634 : 'Lo', + 5635 : 'Lo', + 5636 : 'Lo', + 5637 : 'Lo', + 5638 : 'Lo', + 5639 : 'Lo', + 5640 : 'Lo', + 5641 : 'Lo', + 5642 : 'Lo', + 5643 : 'Lo', + 5644 : 'Lo', + 5645 : 'Lo', + 5646 : 'Lo', + 5647 : 'Lo', + 5648 : 'Lo', + 5649 : 'Lo', + 5650 : 'Lo', + 5651 : 'Lo', + 5652 : 'Lo', + 5653 : 'Lo', + 5654 : 'Lo', + 5655 : 'Lo', + 5656 : 'Lo', + 5657 : 'Lo', + 5658 : 'Lo', + 5659 : 'Lo', + 5660 : 'Lo', + 5661 : 'Lo', + 5662 : 'Lo', + 5663 : 'Lo', + 5664 : 'Lo', + 5665 : 'Lo', + 5666 : 'Lo', + 5667 : 'Lo', + 5668 : 'Lo', + 5669 : 'Lo', + 5670 : 'Lo', + 5671 : 'Lo', + 5672 : 'Lo', + 5673 : 'Lo', + 5674 : 'Lo', + 5675 : 'Lo', + 5676 : 'Lo', + 5677 : 'Lo', + 5678 : 'Lo', + 5679 : 'Lo', + 5680 : 'Lo', + 5681 : 'Lo', + 5682 : 'Lo', + 5683 : 'Lo', + 5684 : 'Lo', + 5685 : 'Lo', + 5686 : 'Lo', + 5687 : 'Lo', + 5688 : 'Lo', + 5689 : 'Lo', + 5690 : 'Lo', + 5691 : 'Lo', + 5692 : 'Lo', + 5693 : 'Lo', + 5694 : 'Lo', + 5695 : 'Lo', + 5696 : 'Lo', + 5697 : 'Lo', + 5698 : 'Lo', + 5699 : 'Lo', + 5700 : 'Lo', + 5701 : 'Lo', + 5702 : 'Lo', + 5703 : 'Lo', + 5704 : 'Lo', + 5705 : 'Lo', + 5706 : 'Lo', + 5707 : 'Lo', + 5708 : 'Lo', + 5709 : 'Lo', + 5710 : 'Lo', + 5711 : 'Lo', + 5712 : 'Lo', + 5713 : 'Lo', + 5714 : 'Lo', + 5715 : 'Lo', + 5716 : 'Lo', + 5717 : 'Lo', + 5718 : 'Lo', + 5719 : 'Lo', + 5720 : 'Lo', + 5721 : 'Lo', + 5722 : 'Lo', + 5723 : 'Lo', + 5724 : 'Lo', + 5725 : 'Lo', + 5726 : 'Lo', + 5727 : 'Lo', + 5728 : 'Lo', + 5729 : 'Lo', + 5730 : 'Lo', + 5731 : 'Lo', + 5732 : 'Lo', + 5733 : 'Lo', + 5734 : 'Lo', + 5735 : 'Lo', + 5736 : 'Lo', + 5737 : 'Lo', + 5738 : 'Lo', + 5739 : 'Lo', + 5740 : 'Lo', + 5741 : 'Po', + 5742 : 'Po', + 5743 : 'Lo', + 5744 : 'Lo', + 5745 : 'Lo', + 5746 : 'Lo', + 5747 : 'Lo', + 5748 : 'Lo', + 5749 : 'Lo', + 5750 : 'Lo', + 5760 : 'Zs', + 5761 : 'Lo', + 5762 : 'Lo', + 5763 : 'Lo', + 5764 : 'Lo', + 5765 : 'Lo', + 5766 : 'Lo', + 5767 : 'Lo', + 5768 : 'Lo', + 5769 : 'Lo', + 5770 : 'Lo', + 5771 : 'Lo', + 5772 : 'Lo', + 5773 : 'Lo', + 5774 : 'Lo', + 5775 : 'Lo', + 5776 : 'Lo', + 5777 : 'Lo', + 5778 : 'Lo', + 5779 : 'Lo', + 5780 : 'Lo', + 5781 : 'Lo', + 5782 : 'Lo', + 5783 : 'Lo', + 5784 : 'Lo', + 5785 : 'Lo', + 5786 : 'Lo', + 5787 : 'Ps', + 5788 : 'Pe', + 5792 : 'Lo', + 5793 : 'Lo', + 5794 : 'Lo', + 5795 : 'Lo', + 5796 : 'Lo', + 5797 : 'Lo', + 5798 : 'Lo', + 5799 : 'Lo', + 5800 : 'Lo', + 5801 : 'Lo', + 5802 : 'Lo', + 5803 : 'Lo', + 5804 : 'Lo', + 5805 : 'Lo', + 5806 : 'Lo', + 5807 : 'Lo', + 5808 : 'Lo', + 5809 : 'Lo', + 5810 : 'Lo', + 5811 : 'Lo', + 5812 : 'Lo', + 5813 : 'Lo', + 5814 : 'Lo', + 5815 : 'Lo', + 5816 : 'Lo', + 5817 : 'Lo', + 5818 : 'Lo', + 5819 : 'Lo', + 5820 : 'Lo', + 5821 : 'Lo', + 5822 : 'Lo', + 5823 : 'Lo', + 5824 : 'Lo', + 5825 : 'Lo', + 5826 : 'Lo', + 5827 : 'Lo', + 5828 : 'Lo', + 5829 : 'Lo', + 5830 : 'Lo', + 5831 : 'Lo', + 5832 : 'Lo', + 5833 : 'Lo', + 5834 : 'Lo', + 5835 : 'Lo', + 5836 : 'Lo', + 5837 : 'Lo', + 5838 : 'Lo', + 5839 : 'Lo', + 5840 : 'Lo', + 5841 : 'Lo', + 5842 : 'Lo', + 5843 : 'Lo', + 5844 : 'Lo', + 5845 : 'Lo', + 5846 : 'Lo', + 5847 : 'Lo', + 5848 : 'Lo', + 5849 : 'Lo', + 5850 : 'Lo', + 5851 : 'Lo', + 5852 : 'Lo', + 5853 : 'Lo', + 5854 : 'Lo', + 5855 : 'Lo', + 5856 : 'Lo', + 5857 : 'Lo', + 5858 : 'Lo', + 5859 : 'Lo', + 5860 : 'Lo', + 5861 : 'Lo', + 5862 : 'Lo', + 5863 : 'Lo', + 5864 : 'Lo', + 5865 : 'Lo', + 5866 : 'Lo', + 5867 : 'Po', + 5868 : 'Po', + 5869 : 'Po', + 5870 : 'Nl', + 5871 : 'Nl', + 5872 : 'Nl', + 5888 : 'Lo', + 5889 : 'Lo', + 5890 : 'Lo', + 5891 : 'Lo', + 5892 : 'Lo', + 5893 : 'Lo', + 5894 : 'Lo', + 5895 : 'Lo', + 5896 : 'Lo', + 5897 : 'Lo', + 5898 : 'Lo', + 5899 : 'Lo', + 5900 : 'Lo', + 5902 : 'Lo', + 5903 : 'Lo', + 5904 : 'Lo', + 5905 : 'Lo', + 5906 : 'Mn', + 5907 : 'Mn', + 5908 : 'Mn', + 5920 : 'Lo', + 5921 : 'Lo', + 5922 : 'Lo', + 5923 : 'Lo', + 5924 : 'Lo', + 5925 : 'Lo', + 5926 : 'Lo', + 5927 : 'Lo', + 5928 : 'Lo', + 5929 : 'Lo', + 5930 : 'Lo', + 5931 : 'Lo', + 5932 : 'Lo', + 5933 : 'Lo', + 5934 : 'Lo', + 5935 : 'Lo', + 5936 : 'Lo', + 5937 : 'Lo', + 5938 : 'Mn', + 5939 : 'Mn', + 5940 : 'Mn', + 5941 : 'Po', + 5942 : 'Po', + 5952 : 'Lo', + 5953 : 'Lo', + 5954 : 'Lo', + 5955 : 'Lo', + 5956 : 'Lo', + 5957 : 'Lo', + 5958 : 'Lo', + 5959 : 'Lo', + 5960 : 'Lo', + 5961 : 'Lo', + 5962 : 'Lo', + 5963 : 'Lo', + 5964 : 'Lo', + 5965 : 'Lo', + 5966 : 'Lo', + 5967 : 'Lo', + 5968 : 'Lo', + 5969 : 'Lo', + 5970 : 'Mn', + 5971 : 'Mn', + 5984 : 'Lo', + 5985 : 'Lo', + 5986 : 'Lo', + 5987 : 'Lo', + 5988 : 'Lo', + 5989 : 'Lo', + 5990 : 'Lo', + 5991 : 'Lo', + 5992 : 'Lo', + 5993 : 'Lo', + 5994 : 'Lo', + 5995 : 'Lo', + 5996 : 'Lo', + 5998 : 'Lo', + 5999 : 'Lo', + 6000 : 'Lo', + 6002 : 'Mn', + 6003 : 'Mn', + 6016 : 'Lo', + 6017 : 'Lo', + 6018 : 'Lo', + 6019 : 'Lo', + 6020 : 'Lo', + 6021 : 'Lo', + 6022 : 'Lo', + 6023 : 'Lo', + 6024 : 'Lo', + 6025 : 'Lo', + 6026 : 'Lo', + 6027 : 'Lo', + 6028 : 'Lo', + 6029 : 'Lo', + 6030 : 'Lo', + 6031 : 'Lo', + 6032 : 'Lo', + 6033 : 'Lo', + 6034 : 'Lo', + 6035 : 'Lo', + 6036 : 'Lo', + 6037 : 'Lo', + 6038 : 'Lo', + 6039 : 'Lo', + 6040 : 'Lo', + 6041 : 'Lo', + 6042 : 'Lo', + 6043 : 'Lo', + 6044 : 'Lo', + 6045 : 'Lo', + 6046 : 'Lo', + 6047 : 'Lo', + 6048 : 'Lo', + 6049 : 'Lo', + 6050 : 'Lo', + 6051 : 'Lo', + 6052 : 'Lo', + 6053 : 'Lo', + 6054 : 'Lo', + 6055 : 'Lo', + 6056 : 'Lo', + 6057 : 'Lo', + 6058 : 'Lo', + 6059 : 'Lo', + 6060 : 'Lo', + 6061 : 'Lo', + 6062 : 'Lo', + 6063 : 'Lo', + 6064 : 'Lo', + 6065 : 'Lo', + 6066 : 'Lo', + 6067 : 'Lo', + 6068 : 'Mc', + 6069 : 'Mc', + 6070 : 'Mc', + 6071 : 'Mn', + 6072 : 'Mn', + 6073 : 'Mn', + 6074 : 'Mn', + 6075 : 'Mn', + 6076 : 'Mn', + 6077 : 'Mn', + 6078 : 'Mc', + 6079 : 'Mc', + 6080 : 'Mc', + 6081 : 'Mc', + 6082 : 'Mc', + 6083 : 'Mc', + 6084 : 'Mc', + 6085 : 'Mc', + 6086 : 'Mn', + 6087 : 'Mc', + 6088 : 'Mc', + 6089 : 'Mn', + 6090 : 'Mn', + 6091 : 'Mn', + 6092 : 'Mn', + 6093 : 'Mn', + 6094 : 'Mn', + 6095 : 'Mn', + 6096 : 'Mn', + 6097 : 'Mn', + 6098 : 'Mn', + 6099 : 'Mn', + 6100 : 'Po', + 6101 : 'Po', + 6102 : 'Po', + 6103 : 'Lm', + 6104 : 'Po', + 6105 : 'Po', + 6106 : 'Po', + 6107 : 'Sc', + 6108 : 'Lo', + 6112 : 'Nd', + 6113 : 'Nd', + 6114 : 'Nd', + 6115 : 'Nd', + 6116 : 'Nd', + 6117 : 'Nd', + 6118 : 'Nd', + 6119 : 'Nd', + 6120 : 'Nd', + 6121 : 'Nd', + 6144 : 'Po', + 6145 : 'Po', + 6146 : 'Po', + 6147 : 'Po', + 6148 : 'Po', + 6149 : 'Po', + 6150 : 'Pd', + 6151 : 'Po', + 6152 : 'Po', + 6153 : 'Po', + 6154 : 'Po', + 6155 : 'Mn', + 6156 : 'Mn', + 6157 : 'Mn', + 6158 : 'Cf', + 6160 : 'Nd', + 6161 : 'Nd', + 6162 : 'Nd', + 6163 : 'Nd', + 6164 : 'Nd', + 6165 : 'Nd', + 6166 : 'Nd', + 6167 : 'Nd', + 6168 : 'Nd', + 6169 : 'Nd', + 6176 : 'Lo', + 6177 : 'Lo', + 6178 : 'Lo', + 6179 : 'Lo', + 6180 : 'Lo', + 6181 : 'Lo', + 6182 : 'Lo', + 6183 : 'Lo', + 6184 : 'Lo', + 6185 : 'Lo', + 6186 : 'Lo', + 6187 : 'Lo', + 6188 : 'Lo', + 6189 : 'Lo', + 6190 : 'Lo', + 6191 : 'Lo', + 6192 : 'Lo', + 6193 : 'Lo', + 6194 : 'Lo', + 6195 : 'Lo', + 6196 : 'Lo', + 6197 : 'Lo', + 6198 : 'Lo', + 6199 : 'Lo', + 6200 : 'Lo', + 6201 : 'Lo', + 6202 : 'Lo', + 6203 : 'Lo', + 6204 : 'Lo', + 6205 : 'Lo', + 6206 : 'Lo', + 6207 : 'Lo', + 6208 : 'Lo', + 6209 : 'Lo', + 6210 : 'Lo', + 6211 : 'Lm', + 6212 : 'Lo', + 6213 : 'Lo', + 6214 : 'Lo', + 6215 : 'Lo', + 6216 : 'Lo', + 6217 : 'Lo', + 6218 : 'Lo', + 6219 : 'Lo', + 6220 : 'Lo', + 6221 : 'Lo', + 6222 : 'Lo', + 6223 : 'Lo', + 6224 : 'Lo', + 6225 : 'Lo', + 6226 : 'Lo', + 6227 : 'Lo', + 6228 : 'Lo', + 6229 : 'Lo', + 6230 : 'Lo', + 6231 : 'Lo', + 6232 : 'Lo', + 6233 : 'Lo', + 6234 : 'Lo', + 6235 : 'Lo', + 6236 : 'Lo', + 6237 : 'Lo', + 6238 : 'Lo', + 6239 : 'Lo', + 6240 : 'Lo', + 6241 : 'Lo', + 6242 : 'Lo', + 6243 : 'Lo', + 6244 : 'Lo', + 6245 : 'Lo', + 6246 : 'Lo', + 6247 : 'Lo', + 6248 : 'Lo', + 6249 : 'Lo', + 6250 : 'Lo', + 6251 : 'Lo', + 6252 : 'Lo', + 6253 : 'Lo', + 6254 : 'Lo', + 6255 : 'Lo', + 6256 : 'Lo', + 6257 : 'Lo', + 6258 : 'Lo', + 6259 : 'Lo', + 6260 : 'Lo', + 6261 : 'Lo', + 6262 : 'Lo', + 6263 : 'Lo', + 6272 : 'Lo', + 6273 : 'Lo', + 6274 : 'Lo', + 6275 : 'Lo', + 6276 : 'Lo', + 6277 : 'Lo', + 6278 : 'Lo', + 6279 : 'Lo', + 6280 : 'Lo', + 6281 : 'Lo', + 6282 : 'Lo', + 6283 : 'Lo', + 6284 : 'Lo', + 6285 : 'Lo', + 6286 : 'Lo', + 6287 : 'Lo', + 6288 : 'Lo', + 6289 : 'Lo', + 6290 : 'Lo', + 6291 : 'Lo', + 6292 : 'Lo', + 6293 : 'Lo', + 6294 : 'Lo', + 6295 : 'Lo', + 6296 : 'Lo', + 6297 : 'Lo', + 6298 : 'Lo', + 6299 : 'Lo', + 6300 : 'Lo', + 6301 : 'Lo', + 6302 : 'Lo', + 6303 : 'Lo', + 6304 : 'Lo', + 6305 : 'Lo', + 6306 : 'Lo', + 6307 : 'Lo', + 6308 : 'Lo', + 6309 : 'Lo', + 6310 : 'Lo', + 6311 : 'Lo', + 6312 : 'Lo', + 6313 : 'Mn', + 7680 : 'Lu', + 7681 : 'Ll', + 7682 : 'Lu', + 7683 : 'Ll', + 7684 : 'Lu', + 7685 : 'Ll', + 7686 : 'Lu', + 7687 : 'Ll', + 7688 : 'Lu', + 7689 : 'Ll', + 7690 : 'Lu', + 7691 : 'Ll', + 7692 : 'Lu', + 7693 : 'Ll', + 7694 : 'Lu', + 7695 : 'Ll', + 7696 : 'Lu', + 7697 : 'Ll', + 7698 : 'Lu', + 7699 : 'Ll', + 7700 : 'Lu', + 7701 : 'Ll', + 7702 : 'Lu', + 7703 : 'Ll', + 7704 : 'Lu', + 7705 : 'Ll', + 7706 : 'Lu', + 7707 : 'Ll', + 7708 : 'Lu', + 7709 : 'Ll', + 7710 : 'Lu', + 7711 : 'Ll', + 7712 : 'Lu', + 7713 : 'Ll', + 7714 : 'Lu', + 7715 : 'Ll', + 7716 : 'Lu', + 7717 : 'Ll', + 7718 : 'Lu', + 7719 : 'Ll', + 7720 : 'Lu', + 7721 : 'Ll', + 7722 : 'Lu', + 7723 : 'Ll', + 7724 : 'Lu', + 7725 : 'Ll', + 7726 : 'Lu', + 7727 : 'Ll', + 7728 : 'Lu', + 7729 : 'Ll', + 7730 : 'Lu', + 7731 : 'Ll', + 7732 : 'Lu', + 7733 : 'Ll', + 7734 : 'Lu', + 7735 : 'Ll', + 7736 : 'Lu', + 7737 : 'Ll', + 7738 : 'Lu', + 7739 : 'Ll', + 7740 : 'Lu', + 7741 : 'Ll', + 7742 : 'Lu', + 7743 : 'Ll', + 7744 : 'Lu', + 7745 : 'Ll', + 7746 : 'Lu', + 7747 : 'Ll', + 7748 : 'Lu', + 7749 : 'Ll', + 7750 : 'Lu', + 7751 : 'Ll', + 7752 : 'Lu', + 7753 : 'Ll', + 7754 : 'Lu', + 7755 : 'Ll', + 7756 : 'Lu', + 7757 : 'Ll', + 7758 : 'Lu', + 7759 : 'Ll', + 7760 : 'Lu', + 7761 : 'Ll', + 7762 : 'Lu', + 7763 : 'Ll', + 7764 : 'Lu', + 7765 : 'Ll', + 7766 : 'Lu', + 7767 : 'Ll', + 7768 : 'Lu', + 7769 : 'Ll', + 7770 : 'Lu', + 7771 : 'Ll', + 7772 : 'Lu', + 7773 : 'Ll', + 7774 : 'Lu', + 7775 : 'Ll', + 7776 : 'Lu', + 7777 : 'Ll', + 7778 : 'Lu', + 7779 : 'Ll', + 7780 : 'Lu', + 7781 : 'Ll', + 7782 : 'Lu', + 7783 : 'Ll', + 7784 : 'Lu', + 7785 : 'Ll', + 7786 : 'Lu', + 7787 : 'Ll', + 7788 : 'Lu', + 7789 : 'Ll', + 7790 : 'Lu', + 7791 : 'Ll', + 7792 : 'Lu', + 7793 : 'Ll', + 7794 : 'Lu', + 7795 : 'Ll', + 7796 : 'Lu', + 7797 : 'Ll', + 7798 : 'Lu', + 7799 : 'Ll', + 7800 : 'Lu', + 7801 : 'Ll', + 7802 : 'Lu', + 7803 : 'Ll', + 7804 : 'Lu', + 7805 : 'Ll', + 7806 : 'Lu', + 7807 : 'Ll', + 7808 : 'Lu', + 7809 : 'Ll', + 7810 : 'Lu', + 7811 : 'Ll', + 7812 : 'Lu', + 7813 : 'Ll', + 7814 : 'Lu', + 7815 : 'Ll', + 7816 : 'Lu', + 7817 : 'Ll', + 7818 : 'Lu', + 7819 : 'Ll', + 7820 : 'Lu', + 7821 : 'Ll', + 7822 : 'Lu', + 7823 : 'Ll', + 7824 : 'Lu', + 7825 : 'Ll', + 7826 : 'Lu', + 7827 : 'Ll', + 7828 : 'Lu', + 7829 : 'Ll', + 7830 : 'Ll', + 7831 : 'Ll', + 7832 : 'Ll', + 7833 : 'Ll', + 7834 : 'Ll', + 7835 : 'Ll', + 7840 : 'Lu', + 7841 : 'Ll', + 7842 : 'Lu', + 7843 : 'Ll', + 7844 : 'Lu', + 7845 : 'Ll', + 7846 : 'Lu', + 7847 : 'Ll', + 7848 : 'Lu', + 7849 : 'Ll', + 7850 : 'Lu', + 7851 : 'Ll', + 7852 : 'Lu', + 7853 : 'Ll', + 7854 : 'Lu', + 7855 : 'Ll', + 7856 : 'Lu', + 7857 : 'Ll', + 7858 : 'Lu', + 7859 : 'Ll', + 7860 : 'Lu', + 7861 : 'Ll', + 7862 : 'Lu', + 7863 : 'Ll', + 7864 : 'Lu', + 7865 : 'Ll', + 7866 : 'Lu', + 7867 : 'Ll', + 7868 : 'Lu', + 7869 : 'Ll', + 7870 : 'Lu', + 7871 : 'Ll', + 7872 : 'Lu', + 7873 : 'Ll', + 7874 : 'Lu', + 7875 : 'Ll', + 7876 : 'Lu', + 7877 : 'Ll', + 7878 : 'Lu', + 7879 : 'Ll', + 7880 : 'Lu', + 7881 : 'Ll', + 7882 : 'Lu', + 7883 : 'Ll', + 7884 : 'Lu', + 7885 : 'Ll', + 7886 : 'Lu', + 7887 : 'Ll', + 7888 : 'Lu', + 7889 : 'Ll', + 7890 : 'Lu', + 7891 : 'Ll', + 7892 : 'Lu', + 7893 : 'Ll', + 7894 : 'Lu', + 7895 : 'Ll', + 7896 : 'Lu', + 7897 : 'Ll', + 7898 : 'Lu', + 7899 : 'Ll', + 7900 : 'Lu', + 7901 : 'Ll', + 7902 : 'Lu', + 7903 : 'Ll', + 7904 : 'Lu', + 7905 : 'Ll', + 7906 : 'Lu', + 7907 : 'Ll', + 7908 : 'Lu', + 7909 : 'Ll', + 7910 : 'Lu', + 7911 : 'Ll', + 7912 : 'Lu', + 7913 : 'Ll', + 7914 : 'Lu', + 7915 : 'Ll', + 7916 : 'Lu', + 7917 : 'Ll', + 7918 : 'Lu', + 7919 : 'Ll', + 7920 : 'Lu', + 7921 : 'Ll', + 7922 : 'Lu', + 7923 : 'Ll', + 7924 : 'Lu', + 7925 : 'Ll', + 7926 : 'Lu', + 7927 : 'Ll', + 7928 : 'Lu', + 7929 : 'Ll', + 7936 : 'Ll', + 7937 : 'Ll', + 7938 : 'Ll', + 7939 : 'Ll', + 7940 : 'Ll', + 7941 : 'Ll', + 7942 : 'Ll', + 7943 : 'Ll', + 7944 : 'Lu', + 7945 : 'Lu', + 7946 : 'Lu', + 7947 : 'Lu', + 7948 : 'Lu', + 7949 : 'Lu', + 7950 : 'Lu', + 7951 : 'Lu', + 7952 : 'Ll', + 7953 : 'Ll', + 7954 : 'Ll', + 7955 : 'Ll', + 7956 : 'Ll', + 7957 : 'Ll', + 7960 : 'Lu', + 7961 : 'Lu', + 7962 : 'Lu', + 7963 : 'Lu', + 7964 : 'Lu', + 7965 : 'Lu', + 7968 : 'Ll', + 7969 : 'Ll', + 7970 : 'Ll', + 7971 : 'Ll', + 7972 : 'Ll', + 7973 : 'Ll', + 7974 : 'Ll', + 7975 : 'Ll', + 7976 : 'Lu', + 7977 : 'Lu', + 7978 : 'Lu', + 7979 : 'Lu', + 7980 : 'Lu', + 7981 : 'Lu', + 7982 : 'Lu', + 7983 : 'Lu', + 7984 : 'Ll', + 7985 : 'Ll', + 7986 : 'Ll', + 7987 : 'Ll', + 7988 : 'Ll', + 7989 : 'Ll', + 7990 : 'Ll', + 7991 : 'Ll', + 7992 : 'Lu', + 7993 : 'Lu', + 7994 : 'Lu', + 7995 : 'Lu', + 7996 : 'Lu', + 7997 : 'Lu', + 7998 : 'Lu', + 7999 : 'Lu', + 8000 : 'Ll', + 8001 : 'Ll', + 8002 : 'Ll', + 8003 : 'Ll', + 8004 : 'Ll', + 8005 : 'Ll', + 8008 : 'Lu', + 8009 : 'Lu', + 8010 : 'Lu', + 8011 : 'Lu', + 8012 : 'Lu', + 8013 : 'Lu', + 8016 : 'Ll', + 8017 : 'Ll', + 8018 : 'Ll', + 8019 : 'Ll', + 8020 : 'Ll', + 8021 : 'Ll', + 8022 : 'Ll', + 8023 : 'Ll', + 8025 : 'Lu', + 8027 : 'Lu', + 8029 : 'Lu', + 8031 : 'Lu', + 8032 : 'Ll', + 8033 : 'Ll', + 8034 : 'Ll', + 8035 : 'Ll', + 8036 : 'Ll', + 8037 : 'Ll', + 8038 : 'Ll', + 8039 : 'Ll', + 8040 : 'Lu', + 8041 : 'Lu', + 8042 : 'Lu', + 8043 : 'Lu', + 8044 : 'Lu', + 8045 : 'Lu', + 8046 : 'Lu', + 8047 : 'Lu', + 8048 : 'Ll', + 8049 : 'Ll', + 8050 : 'Ll', + 8051 : 'Ll', + 8052 : 'Ll', + 8053 : 'Ll', + 8054 : 'Ll', + 8055 : 'Ll', + 8056 : 'Ll', + 8057 : 'Ll', + 8058 : 'Ll', + 8059 : 'Ll', + 8060 : 'Ll', + 8061 : 'Ll', + 8064 : 'Ll', + 8065 : 'Ll', + 8066 : 'Ll', + 8067 : 'Ll', + 8068 : 'Ll', + 8069 : 'Ll', + 8070 : 'Ll', + 8071 : 'Ll', + 8072 : 'Lt', + 8073 : 'Lt', + 8074 : 'Lt', + 8075 : 'Lt', + 8076 : 'Lt', + 8077 : 'Lt', + 8078 : 'Lt', + 8079 : 'Lt', + 8080 : 'Ll', + 8081 : 'Ll', + 8082 : 'Ll', + 8083 : 'Ll', + 8084 : 'Ll', + 8085 : 'Ll', + 8086 : 'Ll', + 8087 : 'Ll', + 8088 : 'Lt', + 8089 : 'Lt', + 8090 : 'Lt', + 8091 : 'Lt', + 8092 : 'Lt', + 8093 : 'Lt', + 8094 : 'Lt', + 8095 : 'Lt', + 8096 : 'Ll', + 8097 : 'Ll', + 8098 : 'Ll', + 8099 : 'Ll', + 8100 : 'Ll', + 8101 : 'Ll', + 8102 : 'Ll', + 8103 : 'Ll', + 8104 : 'Lt', + 8105 : 'Lt', + 8106 : 'Lt', + 8107 : 'Lt', + 8108 : 'Lt', + 8109 : 'Lt', + 8110 : 'Lt', + 8111 : 'Lt', + 8112 : 'Ll', + 8113 : 'Ll', + 8114 : 'Ll', + 8115 : 'Ll', + 8116 : 'Ll', + 8118 : 'Ll', + 8119 : 'Ll', + 8120 : 'Lu', + 8121 : 'Lu', + 8122 : 'Lu', + 8123 : 'Lu', + 8124 : 'Lt', + 8125 : 'Sk', + 8126 : 'Ll', + 8127 : 'Sk', + 8128 : 'Sk', + 8129 : 'Sk', + 8130 : 'Ll', + 8131 : 'Ll', + 8132 : 'Ll', + 8134 : 'Ll', + 8135 : 'Ll', + 8136 : 'Lu', + 8137 : 'Lu', + 8138 : 'Lu', + 8139 : 'Lu', + 8140 : 'Lt', + 8141 : 'Sk', + 8142 : 'Sk', + 8143 : 'Sk', + 8144 : 'Ll', + 8145 : 'Ll', + 8146 : 'Ll', + 8147 : 'Ll', + 8150 : 'Ll', + 8151 : 'Ll', + 8152 : 'Lu', + 8153 : 'Lu', + 8154 : 'Lu', + 8155 : 'Lu', + 8157 : 'Sk', + 8158 : 'Sk', + 8159 : 'Sk', + 8160 : 'Ll', + 8161 : 'Ll', + 8162 : 'Ll', + 8163 : 'Ll', + 8164 : 'Ll', + 8165 : 'Ll', + 8166 : 'Ll', + 8167 : 'Ll', + 8168 : 'Lu', + 8169 : 'Lu', + 8170 : 'Lu', + 8171 : 'Lu', + 8172 : 'Lu', + 8173 : 'Sk', + 8174 : 'Sk', + 8175 : 'Sk', + 8178 : 'Ll', + 8179 : 'Ll', + 8180 : 'Ll', + 8182 : 'Ll', + 8183 : 'Ll', + 8184 : 'Lu', + 8185 : 'Lu', + 8186 : 'Lu', + 8187 : 'Lu', + 8188 : 'Lt', + 8189 : 'Sk', + 8190 : 'Sk', + 8192 : 'Zs', + 8193 : 'Zs', + 8194 : 'Zs', + 8195 : 'Zs', + 8196 : 'Zs', + 8197 : 'Zs', + 8198 : 'Zs', + 8199 : 'Zs', + 8200 : 'Zs', + 8201 : 'Zs', + 8202 : 'Zs', + 8203 : 'Zs', + 8204 : 'Cf', + 8205 : 'Cf', + 8206 : 'Cf', + 8207 : 'Cf', + 8208 : 'Pd', + 8209 : 'Pd', + 8210 : 'Pd', + 8211 : 'Pd', + 8212 : 'Pd', + 8213 : 'Pd', + 8214 : 'Po', + 8215 : 'Po', + 8216 : 'Pi', + 8217 : 'Pf', + 8218 : 'Ps', + 8219 : 'Pi', + 8220 : 'Pi', + 8221 : 'Pf', + 8222 : 'Ps', + 8223 : 'Pi', + 8224 : 'Po', + 8225 : 'Po', + 8226 : 'Po', + 8227 : 'Po', + 8228 : 'Po', + 8229 : 'Po', + 8230 : 'Po', + 8231 : 'Po', + 8232 : 'Zl', + 8233 : 'Zp', + 8234 : 'Cf', + 8235 : 'Cf', + 8236 : 'Cf', + 8237 : 'Cf', + 8238 : 'Cf', + 8239 : 'Zs', + 8240 : 'Po', + 8241 : 'Po', + 8242 : 'Po', + 8243 : 'Po', + 8244 : 'Po', + 8245 : 'Po', + 8246 : 'Po', + 8247 : 'Po', + 8248 : 'Po', + 8249 : 'Pi', + 8250 : 'Pf', + 8251 : 'Po', + 8252 : 'Po', + 8253 : 'Po', + 8254 : 'Po', + 8255 : 'Pc', + 8256 : 'Pc', + 8257 : 'Po', + 8258 : 'Po', + 8259 : 'Po', + 8260 : 'Sm', + 8261 : 'Ps', + 8262 : 'Pe', + 8263 : 'Po', + 8264 : 'Po', + 8265 : 'Po', + 8266 : 'Po', + 8267 : 'Po', + 8268 : 'Po', + 8269 : 'Po', + 8270 : 'Po', + 8271 : 'Po', + 8272 : 'Po', + 8273 : 'Po', + 8274 : 'Sm', + 8279 : 'Po', + 8287 : 'Zs', + 8288 : 'Cf', + 8289 : 'Cf', + 8290 : 'Cf', + 8291 : 'Cf', + 8298 : 'Cf', + 8299 : 'Cf', + 8300 : 'Cf', + 8301 : 'Cf', + 8302 : 'Cf', + 8303 : 'Cf', + 8304 : 'No', + 8305 : 'Ll', + 8308 : 'No', + 8309 : 'No', + 8310 : 'No', + 8311 : 'No', + 8312 : 'No', + 8313 : 'No', + 8314 : 'Sm', + 8315 : 'Sm', + 8316 : 'Sm', + 8317 : 'Ps', + 8318 : 'Pe', + 8319 : 'Ll', + 8320 : 'No', + 8321 : 'No', + 8322 : 'No', + 8323 : 'No', + 8324 : 'No', + 8325 : 'No', + 8326 : 'No', + 8327 : 'No', + 8328 : 'No', + 8329 : 'No', + 8330 : 'Sm', + 8331 : 'Sm', + 8332 : 'Sm', + 8333 : 'Ps', + 8334 : 'Pe', + 8352 : 'Sc', + 8353 : 'Sc', + 8354 : 'Sc', + 8355 : 'Sc', + 8356 : 'Sc', + 8357 : 'Sc', + 8358 : 'Sc', + 8359 : 'Sc', + 8360 : 'Sc', + 8361 : 'Sc', + 8362 : 'Sc', + 8363 : 'Sc', + 8364 : 'Sc', + 8365 : 'Sc', + 8366 : 'Sc', + 8367 : 'Sc', + 8368 : 'Sc', + 8369 : 'Sc', + 8400 : 'Mn', + 8401 : 'Mn', + 8402 : 'Mn', + 8403 : 'Mn', + 8404 : 'Mn', + 8405 : 'Mn', + 8406 : 'Mn', + 8407 : 'Mn', + 8408 : 'Mn', + 8409 : 'Mn', + 8410 : 'Mn', + 8411 : 'Mn', + 8412 : 'Mn', + 8413 : 'Me', + 8414 : 'Me', + 8415 : 'Me', + 8416 : 'Me', + 8417 : 'Mn', + 8418 : 'Me', + 8419 : 'Me', + 8420 : 'Me', + 8421 : 'Mn', + 8422 : 'Mn', + 8423 : 'Mn', + 8424 : 'Mn', + 8425 : 'Mn', + 8426 : 'Mn', + 8448 : 'So', + 8449 : 'So', + 8450 : 'Lu', + 8451 : 'So', + 8452 : 'So', + 8453 : 'So', + 8454 : 'So', + 8455 : 'Lu', + 8456 : 'So', + 8457 : 'So', + 8458 : 'Ll', + 8459 : 'Lu', + 8460 : 'Lu', + 8461 : 'Lu', + 8462 : 'Ll', + 8463 : 'Ll', + 8464 : 'Lu', + 8465 : 'Lu', + 8466 : 'Lu', + 8467 : 'Ll', + 8468 : 'So', + 8469 : 'Lu', + 8470 : 'So', + 8471 : 'So', + 8472 : 'So', + 8473 : 'Lu', + 8474 : 'Lu', + 8475 : 'Lu', + 8476 : 'Lu', + 8477 : 'Lu', + 8478 : 'So', + 8479 : 'So', + 8480 : 'So', + 8481 : 'So', + 8482 : 'So', + 8483 : 'So', + 8484 : 'Lu', + 8485 : 'So', + 8486 : 'Lu', + 8487 : 'So', + 8488 : 'Lu', + 8489 : 'So', + 8490 : 'Lu', + 8491 : 'Lu', + 8492 : 'Lu', + 8493 : 'Lu', + 8494 : 'So', + 8495 : 'Ll', + 8496 : 'Lu', + 8497 : 'Lu', + 8498 : 'So', + 8499 : 'Lu', + 8500 : 'Ll', + 8501 : 'Lo', + 8502 : 'Lo', + 8503 : 'Lo', + 8504 : 'Lo', + 8505 : 'Ll', + 8506 : 'So', + 8509 : 'Ll', + 8510 : 'Lu', + 8511 : 'Lu', + 8512 : 'Sm', + 8513 : 'Sm', + 8514 : 'Sm', + 8515 : 'Sm', + 8516 : 'Sm', + 8517 : 'Lu', + 8518 : 'Ll', + 8519 : 'Ll', + 8520 : 'Ll', + 8521 : 'Ll', + 8522 : 'So', + 8523 : 'Sm', + 8531 : 'No', + 8532 : 'No', + 8533 : 'No', + 8534 : 'No', + 8535 : 'No', + 8536 : 'No', + 8537 : 'No', + 8538 : 'No', + 8539 : 'No', + 8540 : 'No', + 8541 : 'No', + 8542 : 'No', + 8543 : 'No', + 8544 : 'Nl', + 8545 : 'Nl', + 8546 : 'Nl', + 8547 : 'Nl', + 8548 : 'Nl', + 8549 : 'Nl', + 8550 : 'Nl', + 8551 : 'Nl', + 8552 : 'Nl', + 8553 : 'Nl', + 8554 : 'Nl', + 8555 : 'Nl', + 8556 : 'Nl', + 8557 : 'Nl', + 8558 : 'Nl', + 8559 : 'Nl', + 8560 : 'Nl', + 8561 : 'Nl', + 8562 : 'Nl', + 8563 : 'Nl', + 8564 : 'Nl', + 8565 : 'Nl', + 8566 : 'Nl', + 8567 : 'Nl', + 8568 : 'Nl', + 8569 : 'Nl', + 8570 : 'Nl', + 8571 : 'Nl', + 8572 : 'Nl', + 8573 : 'Nl', + 8574 : 'Nl', + 8575 : 'Nl', + 8576 : 'Nl', + 8577 : 'Nl', + 8578 : 'Nl', + 8579 : 'Nl', + 8592 : 'Sm', + 8593 : 'Sm', + 8594 : 'Sm', + 8595 : 'Sm', + 8596 : 'Sm', + 8597 : 'So', + 8598 : 'So', + 8599 : 'So', + 8600 : 'So', + 8601 : 'So', + 8602 : 'Sm', + 8603 : 'Sm', + 8604 : 'So', + 8605 : 'So', + 8606 : 'So', + 8607 : 'So', + 8608 : 'Sm', + 8609 : 'So', + 8610 : 'So', + 8611 : 'Sm', + 8612 : 'So', + 8613 : 'So', + 8614 : 'Sm', + 8615 : 'So', + 8616 : 'So', + 8617 : 'So', + 8618 : 'So', + 8619 : 'So', + 8620 : 'So', + 8621 : 'So', + 8622 : 'Sm', + 8623 : 'So', + 8624 : 'So', + 8625 : 'So', + 8626 : 'So', + 8627 : 'So', + 8628 : 'So', + 8629 : 'So', + 8630 : 'So', + 8631 : 'So', + 8632 : 'So', + 8633 : 'So', + 8634 : 'So', + 8635 : 'So', + 8636 : 'So', + 8637 : 'So', + 8638 : 'So', + 8639 : 'So', + 8640 : 'So', + 8641 : 'So', + 8642 : 'So', + 8643 : 'So', + 8644 : 'So', + 8645 : 'So', + 8646 : 'So', + 8647 : 'So', + 8648 : 'So', + 8649 : 'So', + 8650 : 'So', + 8651 : 'So', + 8652 : 'So', + 8653 : 'So', + 8654 : 'Sm', + 8655 : 'Sm', + 8656 : 'So', + 8657 : 'So', + 8658 : 'Sm', + 8659 : 'So', + 8660 : 'Sm', + 8661 : 'So', + 8662 : 'So', + 8663 : 'So', + 8664 : 'So', + 8665 : 'So', + 8666 : 'So', + 8667 : 'So', + 8668 : 'So', + 8669 : 'So', + 8670 : 'So', + 8671 : 'So', + 8672 : 'So', + 8673 : 'So', + 8674 : 'So', + 8675 : 'So', + 8676 : 'So', + 8677 : 'So', + 8678 : 'So', + 8679 : 'So', + 8680 : 'So', + 8681 : 'So', + 8682 : 'So', + 8683 : 'So', + 8684 : 'So', + 8685 : 'So', + 8686 : 'So', + 8687 : 'So', + 8688 : 'So', + 8689 : 'So', + 8690 : 'So', + 8691 : 'So', + 8692 : 'Sm', + 8693 : 'Sm', + 8694 : 'Sm', + 8695 : 'Sm', + 8696 : 'Sm', + 8697 : 'Sm', + 8698 : 'Sm', + 8699 : 'Sm', + 8700 : 'Sm', + 8701 : 'Sm', + 8702 : 'Sm', + 8703 : 'Sm', + 8704 : 'Sm', + 8705 : 'Sm', + 8706 : 'Sm', + 8707 : 'Sm', + 8708 : 'Sm', + 8709 : 'Sm', + 8710 : 'Sm', + 8711 : 'Sm', + 8712 : 'Sm', + 8713 : 'Sm', + 8714 : 'Sm', + 8715 : 'Sm', + 8716 : 'Sm', + 8717 : 'Sm', + 8718 : 'Sm', + 8719 : 'Sm', + 8720 : 'Sm', + 8721 : 'Sm', + 8722 : 'Sm', + 8723 : 'Sm', + 8724 : 'Sm', + 8725 : 'Sm', + 8726 : 'Sm', + 8727 : 'Sm', + 8728 : 'Sm', + 8729 : 'Sm', + 8730 : 'Sm', + 8731 : 'Sm', + 8732 : 'Sm', + 8733 : 'Sm', + 8734 : 'Sm', + 8735 : 'Sm', + 8736 : 'Sm', + 8737 : 'Sm', + 8738 : 'Sm', + 8739 : 'Sm', + 8740 : 'Sm', + 8741 : 'Sm', + 8742 : 'Sm', + 8743 : 'Sm', + 8744 : 'Sm', + 8745 : 'Sm', + 8746 : 'Sm', + 8747 : 'Sm', + 8748 : 'Sm', + 8749 : 'Sm', + 8750 : 'Sm', + 8751 : 'Sm', + 8752 : 'Sm', + 8753 : 'Sm', + 8754 : 'Sm', + 8755 : 'Sm', + 8756 : 'Sm', + 8757 : 'Sm', + 8758 : 'Sm', + 8759 : 'Sm', + 8760 : 'Sm', + 8761 : 'Sm', + 8762 : 'Sm', + 8763 : 'Sm', + 8764 : 'Sm', + 8765 : 'Sm', + 8766 : 'Sm', + 8767 : 'Sm', + 8768 : 'Sm', + 8769 : 'Sm', + 8770 : 'Sm', + 8771 : 'Sm', + 8772 : 'Sm', + 8773 : 'Sm', + 8774 : 'Sm', + 8775 : 'Sm', + 8776 : 'Sm', + 8777 : 'Sm', + 8778 : 'Sm', + 8779 : 'Sm', + 8780 : 'Sm', + 8781 : 'Sm', + 8782 : 'Sm', + 8783 : 'Sm', + 8784 : 'Sm', + 8785 : 'Sm', + 8786 : 'Sm', + 8787 : 'Sm', + 8788 : 'Sm', + 8789 : 'Sm', + 8790 : 'Sm', + 8791 : 'Sm', + 8792 : 'Sm', + 8793 : 'Sm', + 8794 : 'Sm', + 8795 : 'Sm', + 8796 : 'Sm', + 8797 : 'Sm', + 8798 : 'Sm', + 8799 : 'Sm', + 8800 : 'Sm', + 8801 : 'Sm', + 8802 : 'Sm', + 8803 : 'Sm', + 8804 : 'Sm', + 8805 : 'Sm', + 8806 : 'Sm', + 8807 : 'Sm', + 8808 : 'Sm', + 8809 : 'Sm', + 8810 : 'Sm', + 8811 : 'Sm', + 8812 : 'Sm', + 8813 : 'Sm', + 8814 : 'Sm', + 8815 : 'Sm', + 8816 : 'Sm', + 8817 : 'Sm', + 8818 : 'Sm', + 8819 : 'Sm', + 8820 : 'Sm', + 8821 : 'Sm', + 8822 : 'Sm', + 8823 : 'Sm', + 8824 : 'Sm', + 8825 : 'Sm', + 8826 : 'Sm', + 8827 : 'Sm', + 8828 : 'Sm', + 8829 : 'Sm', + 8830 : 'Sm', + 8831 : 'Sm', + 8832 : 'Sm', + 8833 : 'Sm', + 8834 : 'Sm', + 8835 : 'Sm', + 8836 : 'Sm', + 8837 : 'Sm', + 8838 : 'Sm', + 8839 : 'Sm', + 8840 : 'Sm', + 8841 : 'Sm', + 8842 : 'Sm', + 8843 : 'Sm', + 8844 : 'Sm', + 8845 : 'Sm', + 8846 : 'Sm', + 8847 : 'Sm', + 8848 : 'Sm', + 8849 : 'Sm', + 8850 : 'Sm', + 8851 : 'Sm', + 8852 : 'Sm', + 8853 : 'Sm', + 8854 : 'Sm', + 8855 : 'Sm', + 8856 : 'Sm', + 8857 : 'Sm', + 8858 : 'Sm', + 8859 : 'Sm', + 8860 : 'Sm', + 8861 : 'Sm', + 8862 : 'Sm', + 8863 : 'Sm', + 8864 : 'Sm', + 8865 : 'Sm', + 8866 : 'Sm', + 8867 : 'Sm', + 8868 : 'Sm', + 8869 : 'Sm', + 8870 : 'Sm', + 8871 : 'Sm', + 8872 : 'Sm', + 8873 : 'Sm', + 8874 : 'Sm', + 8875 : 'Sm', + 8876 : 'Sm', + 8877 : 'Sm', + 8878 : 'Sm', + 8879 : 'Sm', + 8880 : 'Sm', + 8881 : 'Sm', + 8882 : 'Sm', + 8883 : 'Sm', + 8884 : 'Sm', + 8885 : 'Sm', + 8886 : 'Sm', + 8887 : 'Sm', + 8888 : 'Sm', + 8889 : 'Sm', + 8890 : 'Sm', + 8891 : 'Sm', + 8892 : 'Sm', + 8893 : 'Sm', + 8894 : 'Sm', + 8895 : 'Sm', + 8896 : 'Sm', + 8897 : 'Sm', + 8898 : 'Sm', + 8899 : 'Sm', + 8900 : 'Sm', + 8901 : 'Sm', + 8902 : 'Sm', + 8903 : 'Sm', + 8904 : 'Sm', + 8905 : 'Sm', + 8906 : 'Sm', + 8907 : 'Sm', + 8908 : 'Sm', + 8909 : 'Sm', + 8910 : 'Sm', + 8911 : 'Sm', + 8912 : 'Sm', + 8913 : 'Sm', + 8914 : 'Sm', + 8915 : 'Sm', + 8916 : 'Sm', + 8917 : 'Sm', + 8918 : 'Sm', + 8919 : 'Sm', + 8920 : 'Sm', + 8921 : 'Sm', + 8922 : 'Sm', + 8923 : 'Sm', + 8924 : 'Sm', + 8925 : 'Sm', + 8926 : 'Sm', + 8927 : 'Sm', + 8928 : 'Sm', + 8929 : 'Sm', + 8930 : 'Sm', + 8931 : 'Sm', + 8932 : 'Sm', + 8933 : 'Sm', + 8934 : 'Sm', + 8935 : 'Sm', + 8936 : 'Sm', + 8937 : 'Sm', + 8938 : 'Sm', + 8939 : 'Sm', + 8940 : 'Sm', + 8941 : 'Sm', + 8942 : 'Sm', + 8943 : 'Sm', + 8944 : 'Sm', + 8945 : 'Sm', + 8946 : 'Sm', + 8947 : 'Sm', + 8948 : 'Sm', + 8949 : 'Sm', + 8950 : 'Sm', + 8951 : 'Sm', + 8952 : 'Sm', + 8953 : 'Sm', + 8954 : 'Sm', + 8955 : 'Sm', + 8956 : 'Sm', + 8957 : 'Sm', + 8958 : 'Sm', + 8959 : 'Sm', + 8960 : 'So', + 8961 : 'So', + 8962 : 'So', + 8963 : 'So', + 8964 : 'So', + 8965 : 'So', + 8966 : 'So', + 8967 : 'So', + 8968 : 'Sm', + 8969 : 'Sm', + 8970 : 'Sm', + 8971 : 'Sm', + 8972 : 'So', + 8973 : 'So', + 8974 : 'So', + 8975 : 'So', + 8976 : 'So', + 8977 : 'So', + 8978 : 'So', + 8979 : 'So', + 8980 : 'So', + 8981 : 'So', + 8982 : 'So', + 8983 : 'So', + 8984 : 'So', + 8985 : 'So', + 8986 : 'So', + 8987 : 'So', + 8988 : 'So', + 8989 : 'So', + 8990 : 'So', + 8991 : 'So', + 8992 : 'Sm', + 8993 : 'Sm', + 8994 : 'So', + 8995 : 'So', + 8996 : 'So', + 8997 : 'So', + 8998 : 'So', + 8999 : 'So', + 9000 : 'So', + 9001 : 'Ps', + 9002 : 'Pe', + 9003 : 'So', + 9004 : 'So', + 9005 : 'So', + 9006 : 'So', + 9007 : 'So', + 9008 : 'So', + 9009 : 'So', + 9010 : 'So', + 9011 : 'So', + 9012 : 'So', + 9013 : 'So', + 9014 : 'So', + 9015 : 'So', + 9016 : 'So', + 9017 : 'So', + 9018 : 'So', + 9019 : 'So', + 9020 : 'So', + 9021 : 'So', + 9022 : 'So', + 9023 : 'So', + 9024 : 'So', + 9025 : 'So', + 9026 : 'So', + 9027 : 'So', + 9028 : 'So', + 9029 : 'So', + 9030 : 'So', + 9031 : 'So', + 9032 : 'So', + 9033 : 'So', + 9034 : 'So', + 9035 : 'So', + 9036 : 'So', + 9037 : 'So', + 9038 : 'So', + 9039 : 'So', + 9040 : 'So', + 9041 : 'So', + 9042 : 'So', + 9043 : 'So', + 9044 : 'So', + 9045 : 'So', + 9046 : 'So', + 9047 : 'So', + 9048 : 'So', + 9049 : 'So', + 9050 : 'So', + 9051 : 'So', + 9052 : 'So', + 9053 : 'So', + 9054 : 'So', + 9055 : 'So', + 9056 : 'So', + 9057 : 'So', + 9058 : 'So', + 9059 : 'So', + 9060 : 'So', + 9061 : 'So', + 9062 : 'So', + 9063 : 'So', + 9064 : 'So', + 9065 : 'So', + 9066 : 'So', + 9067 : 'So', + 9068 : 'So', + 9069 : 'So', + 9070 : 'So', + 9071 : 'So', + 9072 : 'So', + 9073 : 'So', + 9074 : 'So', + 9075 : 'So', + 9076 : 'So', + 9077 : 'So', + 9078 : 'So', + 9079 : 'So', + 9080 : 'So', + 9081 : 'So', + 9082 : 'So', + 9083 : 'So', + 9084 : 'Sm', + 9085 : 'So', + 9086 : 'So', + 9087 : 'So', + 9088 : 'So', + 9089 : 'So', + 9090 : 'So', + 9091 : 'So', + 9092 : 'So', + 9093 : 'So', + 9094 : 'So', + 9095 : 'So', + 9096 : 'So', + 9097 : 'So', + 9098 : 'So', + 9099 : 'So', + 9100 : 'So', + 9101 : 'So', + 9102 : 'So', + 9103 : 'So', + 9104 : 'So', + 9105 : 'So', + 9106 : 'So', + 9107 : 'So', + 9108 : 'So', + 9109 : 'So', + 9110 : 'So', + 9111 : 'So', + 9112 : 'So', + 9113 : 'So', + 9114 : 'So', + 9115 : 'Sm', + 9116 : 'Sm', + 9117 : 'Sm', + 9118 : 'Sm', + 9119 : 'Sm', + 9120 : 'Sm', + 9121 : 'Sm', + 9122 : 'Sm', + 9123 : 'Sm', + 9124 : 'Sm', + 9125 : 'Sm', + 9126 : 'Sm', + 9127 : 'Sm', + 9128 : 'Sm', + 9129 : 'Sm', + 9130 : 'Sm', + 9131 : 'Sm', + 9132 : 'Sm', + 9133 : 'Sm', + 9134 : 'Sm', + 9135 : 'Sm', + 9136 : 'Sm', + 9137 : 'Sm', + 9138 : 'Sm', + 9139 : 'Sm', + 9140 : 'Ps', + 9141 : 'Pe', + 9142 : 'Po', + 9143 : 'So', + 9144 : 'So', + 9145 : 'So', + 9146 : 'So', + 9147 : 'So', + 9148 : 'So', + 9149 : 'So', + 9150 : 'So', + 9151 : 'So', + 9152 : 'So', + 9153 : 'So', + 9154 : 'So', + 9155 : 'So', + 9156 : 'So', + 9157 : 'So', + 9158 : 'So', + 9159 : 'So', + 9160 : 'So', + 9161 : 'So', + 9162 : 'So', + 9163 : 'So', + 9164 : 'So', + 9165 : 'So', + 9166 : 'So', + 9216 : 'So', + 9217 : 'So', + 9218 : 'So', + 9219 : 'So', + 9220 : 'So', + 9221 : 'So', + 9222 : 'So', + 9223 : 'So', + 9224 : 'So', + 9225 : 'So', + 9226 : 'So', + 9227 : 'So', + 9228 : 'So', + 9229 : 'So', + 9230 : 'So', + 9231 : 'So', + 9232 : 'So', + 9233 : 'So', + 9234 : 'So', + 9235 : 'So', + 9236 : 'So', + 9237 : 'So', + 9238 : 'So', + 9239 : 'So', + 9240 : 'So', + 9241 : 'So', + 9242 : 'So', + 9243 : 'So', + 9244 : 'So', + 9245 : 'So', + 9246 : 'So', + 9247 : 'So', + 9248 : 'So', + 9249 : 'So', + 9250 : 'So', + 9251 : 'So', + 9252 : 'So', + 9253 : 'So', + 9254 : 'So', + 9280 : 'So', + 9281 : 'So', + 9282 : 'So', + 9283 : 'So', + 9284 : 'So', + 9285 : 'So', + 9286 : 'So', + 9287 : 'So', + 9288 : 'So', + 9289 : 'So', + 9290 : 'So', + 9312 : 'No', + 9313 : 'No', + 9314 : 'No', + 9315 : 'No', + 9316 : 'No', + 9317 : 'No', + 9318 : 'No', + 9319 : 'No', + 9320 : 'No', + 9321 : 'No', + 9322 : 'No', + 9323 : 'No', + 9324 : 'No', + 9325 : 'No', + 9326 : 'No', + 9327 : 'No', + 9328 : 'No', + 9329 : 'No', + 9330 : 'No', + 9331 : 'No', + 9332 : 'No', + 9333 : 'No', + 9334 : 'No', + 9335 : 'No', + 9336 : 'No', + 9337 : 'No', + 9338 : 'No', + 9339 : 'No', + 9340 : 'No', + 9341 : 'No', + 9342 : 'No', + 9343 : 'No', + 9344 : 'No', + 9345 : 'No', + 9346 : 'No', + 9347 : 'No', + 9348 : 'No', + 9349 : 'No', + 9350 : 'No', + 9351 : 'No', + 9352 : 'No', + 9353 : 'No', + 9354 : 'No', + 9355 : 'No', + 9356 : 'No', + 9357 : 'No', + 9358 : 'No', + 9359 : 'No', + 9360 : 'No', + 9361 : 'No', + 9362 : 'No', + 9363 : 'No', + 9364 : 'No', + 9365 : 'No', + 9366 : 'No', + 9367 : 'No', + 9368 : 'No', + 9369 : 'No', + 9370 : 'No', + 9371 : 'No', + 9372 : 'So', + 9373 : 'So', + 9374 : 'So', + 9375 : 'So', + 9376 : 'So', + 9377 : 'So', + 9378 : 'So', + 9379 : 'So', + 9380 : 'So', + 9381 : 'So', + 9382 : 'So', + 9383 : 'So', + 9384 : 'So', + 9385 : 'So', + 9386 : 'So', + 9387 : 'So', + 9388 : 'So', + 9389 : 'So', + 9390 : 'So', + 9391 : 'So', + 9392 : 'So', + 9393 : 'So', + 9394 : 'So', + 9395 : 'So', + 9396 : 'So', + 9397 : 'So', + 9398 : 'So', + 9399 : 'So', + 9400 : 'So', + 9401 : 'So', + 9402 : 'So', + 9403 : 'So', + 9404 : 'So', + 9405 : 'So', + 9406 : 'So', + 9407 : 'So', + 9408 : 'So', + 9409 : 'So', + 9410 : 'So', + 9411 : 'So', + 9412 : 'So', + 9413 : 'So', + 9414 : 'So', + 9415 : 'So', + 9416 : 'So', + 9417 : 'So', + 9418 : 'So', + 9419 : 'So', + 9420 : 'So', + 9421 : 'So', + 9422 : 'So', + 9423 : 'So', + 9424 : 'So', + 9425 : 'So', + 9426 : 'So', + 9427 : 'So', + 9428 : 'So', + 9429 : 'So', + 9430 : 'So', + 9431 : 'So', + 9432 : 'So', + 9433 : 'So', + 9434 : 'So', + 9435 : 'So', + 9436 : 'So', + 9437 : 'So', + 9438 : 'So', + 9439 : 'So', + 9440 : 'So', + 9441 : 'So', + 9442 : 'So', + 9443 : 'So', + 9444 : 'So', + 9445 : 'So', + 9446 : 'So', + 9447 : 'So', + 9448 : 'So', + 9449 : 'So', + 9450 : 'No', + 9451 : 'No', + 9452 : 'No', + 9453 : 'No', + 9454 : 'No', + 9455 : 'No', + 9456 : 'No', + 9457 : 'No', + 9458 : 'No', + 9459 : 'No', + 9460 : 'No', + 9461 : 'No', + 9462 : 'No', + 9463 : 'No', + 9464 : 'No', + 9465 : 'No', + 9466 : 'No', + 9467 : 'No', + 9468 : 'No', + 9469 : 'No', + 9470 : 'No', + 9472 : 'So', + 9473 : 'So', + 9474 : 'So', + 9475 : 'So', + 9476 : 'So', + 9477 : 'So', + 9478 : 'So', + 9479 : 'So', + 9480 : 'So', + 9481 : 'So', + 9482 : 'So', + 9483 : 'So', + 9484 : 'So', + 9485 : 'So', + 9486 : 'So', + 9487 : 'So', + 9488 : 'So', + 9489 : 'So', + 9490 : 'So', + 9491 : 'So', + 9492 : 'So', + 9493 : 'So', + 9494 : 'So', + 9495 : 'So', + 9496 : 'So', + 9497 : 'So', + 9498 : 'So', + 9499 : 'So', + 9500 : 'So', + 9501 : 'So', + 9502 : 'So', + 9503 : 'So', + 9504 : 'So', + 9505 : 'So', + 9506 : 'So', + 9507 : 'So', + 9508 : 'So', + 9509 : 'So', + 9510 : 'So', + 9511 : 'So', + 9512 : 'So', + 9513 : 'So', + 9514 : 'So', + 9515 : 'So', + 9516 : 'So', + 9517 : 'So', + 9518 : 'So', + 9519 : 'So', + 9520 : 'So', + 9521 : 'So', + 9522 : 'So', + 9523 : 'So', + 9524 : 'So', + 9525 : 'So', + 9526 : 'So', + 9527 : 'So', + 9528 : 'So', + 9529 : 'So', + 9530 : 'So', + 9531 : 'So', + 9532 : 'So', + 9533 : 'So', + 9534 : 'So', + 9535 : 'So', + 9536 : 'So', + 9537 : 'So', + 9538 : 'So', + 9539 : 'So', + 9540 : 'So', + 9541 : 'So', + 9542 : 'So', + 9543 : 'So', + 9544 : 'So', + 9545 : 'So', + 9546 : 'So', + 9547 : 'So', + 9548 : 'So', + 9549 : 'So', + 9550 : 'So', + 9551 : 'So', + 9552 : 'So', + 9553 : 'So', + 9554 : 'So', + 9555 : 'So', + 9556 : 'So', + 9557 : 'So', + 9558 : 'So', + 9559 : 'So', + 9560 : 'So', + 9561 : 'So', + 9562 : 'So', + 9563 : 'So', + 9564 : 'So', + 9565 : 'So', + 9566 : 'So', + 9567 : 'So', + 9568 : 'So', + 9569 : 'So', + 9570 : 'So', + 9571 : 'So', + 9572 : 'So', + 9573 : 'So', + 9574 : 'So', + 9575 : 'So', + 9576 : 'So', + 9577 : 'So', + 9578 : 'So', + 9579 : 'So', + 9580 : 'So', + 9581 : 'So', + 9582 : 'So', + 9583 : 'So', + 9584 : 'So', + 9585 : 'So', + 9586 : 'So', + 9587 : 'So', + 9588 : 'So', + 9589 : 'So', + 9590 : 'So', + 9591 : 'So', + 9592 : 'So', + 9593 : 'So', + 9594 : 'So', + 9595 : 'So', + 9596 : 'So', + 9597 : 'So', + 9598 : 'So', + 9599 : 'So', + 9600 : 'So', + 9601 : 'So', + 9602 : 'So', + 9603 : 'So', + 9604 : 'So', + 9605 : 'So', + 9606 : 'So', + 9607 : 'So', + 9608 : 'So', + 9609 : 'So', + 9610 : 'So', + 9611 : 'So', + 9612 : 'So', + 9613 : 'So', + 9614 : 'So', + 9615 : 'So', + 9616 : 'So', + 9617 : 'So', + 9618 : 'So', + 9619 : 'So', + 9620 : 'So', + 9621 : 'So', + 9622 : 'So', + 9623 : 'So', + 9624 : 'So', + 9625 : 'So', + 9626 : 'So', + 9627 : 'So', + 9628 : 'So', + 9629 : 'So', + 9630 : 'So', + 9631 : 'So', + 9632 : 'So', + 9633 : 'So', + 9634 : 'So', + 9635 : 'So', + 9636 : 'So', + 9637 : 'So', + 9638 : 'So', + 9639 : 'So', + 9640 : 'So', + 9641 : 'So', + 9642 : 'So', + 9643 : 'So', + 9644 : 'So', + 9645 : 'So', + 9646 : 'So', + 9647 : 'So', + 9648 : 'So', + 9649 : 'So', + 9650 : 'So', + 9651 : 'So', + 9652 : 'So', + 9653 : 'So', + 9654 : 'So', + 9655 : 'Sm', + 9656 : 'So', + 9657 : 'So', + 9658 : 'So', + 9659 : 'So', + 9660 : 'So', + 9661 : 'So', + 9662 : 'So', + 9663 : 'So', + 9664 : 'So', + 9665 : 'Sm', + 9666 : 'So', + 9667 : 'So', + 9668 : 'So', + 9669 : 'So', + 9670 : 'So', + 9671 : 'So', + 9672 : 'So', + 9673 : 'So', + 9674 : 'So', + 9675 : 'So', + 9676 : 'So', + 9677 : 'So', + 9678 : 'So', + 9679 : 'So', + 9680 : 'So', + 9681 : 'So', + 9682 : 'So', + 9683 : 'So', + 9684 : 'So', + 9685 : 'So', + 9686 : 'So', + 9687 : 'So', + 9688 : 'So', + 9689 : 'So', + 9690 : 'So', + 9691 : 'So', + 9692 : 'So', + 9693 : 'So', + 9694 : 'So', + 9695 : 'So', + 9696 : 'So', + 9697 : 'So', + 9698 : 'So', + 9699 : 'So', + 9700 : 'So', + 9701 : 'So', + 9702 : 'So', + 9703 : 'So', + 9704 : 'So', + 9705 : 'So', + 9706 : 'So', + 9707 : 'So', + 9708 : 'So', + 9709 : 'So', + 9710 : 'So', + 9711 : 'So', + 9712 : 'So', + 9713 : 'So', + 9714 : 'So', + 9715 : 'So', + 9716 : 'So', + 9717 : 'So', + 9718 : 'So', + 9719 : 'So', + 9720 : 'Sm', + 9721 : 'Sm', + 9722 : 'Sm', + 9723 : 'Sm', + 9724 : 'Sm', + 9725 : 'Sm', + 9726 : 'Sm', + 9727 : 'Sm', + 9728 : 'So', + 9729 : 'So', + 9730 : 'So', + 9731 : 'So', + 9732 : 'So', + 9733 : 'So', + 9734 : 'So', + 9735 : 'So', + 9736 : 'So', + 9737 : 'So', + 9738 : 'So', + 9739 : 'So', + 9740 : 'So', + 9741 : 'So', + 9742 : 'So', + 9743 : 'So', + 9744 : 'So', + 9745 : 'So', + 9746 : 'So', + 9747 : 'So', + 9750 : 'So', + 9751 : 'So', + 9753 : 'So', + 9754 : 'So', + 9755 : 'So', + 9756 : 'So', + 9757 : 'So', + 9758 : 'So', + 9759 : 'So', + 9760 : 'So', + 9761 : 'So', + 9762 : 'So', + 9763 : 'So', + 9764 : 'So', + 9765 : 'So', + 9766 : 'So', + 9767 : 'So', + 9768 : 'So', + 9769 : 'So', + 9770 : 'So', + 9771 : 'So', + 9772 : 'So', + 9773 : 'So', + 9774 : 'So', + 9775 : 'So', + 9776 : 'So', + 9777 : 'So', + 9778 : 'So', + 9779 : 'So', + 9780 : 'So', + 9781 : 'So', + 9782 : 'So', + 9783 : 'So', + 9784 : 'So', + 9785 : 'So', + 9786 : 'So', + 9787 : 'So', + 9788 : 'So', + 9789 : 'So', + 9790 : 'So', + 9791 : 'So', + 9792 : 'So', + 9793 : 'So', + 9794 : 'So', + 9795 : 'So', + 9796 : 'So', + 9797 : 'So', + 9798 : 'So', + 9799 : 'So', + 9800 : 'So', + 9801 : 'So', + 9802 : 'So', + 9803 : 'So', + 9804 : 'So', + 9805 : 'So', + 9806 : 'So', + 9807 : 'So', + 9808 : 'So', + 9809 : 'So', + 9810 : 'So', + 9811 : 'So', + 9812 : 'So', + 9813 : 'So', + 9814 : 'So', + 9815 : 'So', + 9816 : 'So', + 9817 : 'So', + 9818 : 'So', + 9819 : 'So', + 9820 : 'So', + 9821 : 'So', + 9822 : 'So', + 9823 : 'So', + 9824 : 'So', + 9825 : 'So', + 9826 : 'So', + 9827 : 'So', + 9828 : 'So', + 9829 : 'So', + 9830 : 'So', + 9831 : 'So', + 9832 : 'So', + 9833 : 'So', + 9834 : 'So', + 9835 : 'So', + 9836 : 'So', + 9837 : 'So', + 9838 : 'So', + 9839 : 'Sm', + 9840 : 'So', + 9841 : 'So', + 9842 : 'So', + 9843 : 'So', + 9844 : 'So', + 9845 : 'So', + 9846 : 'So', + 9847 : 'So', + 9848 : 'So', + 9849 : 'So', + 9850 : 'So', + 9851 : 'So', + 9852 : 'So', + 9853 : 'So', + 9856 : 'So', + 9857 : 'So', + 9858 : 'So', + 9859 : 'So', + 9860 : 'So', + 9861 : 'So', + 9862 : 'So', + 9863 : 'So', + 9864 : 'So', + 9865 : 'So', + 9985 : 'So', + 9986 : 'So', + 9987 : 'So', + 9988 : 'So', + 9990 : 'So', + 9991 : 'So', + 9992 : 'So', + 9993 : 'So', + 9996 : 'So', + 9997 : 'So', + 9998 : 'So', + 9999 : 'So', + 10000 : 'So', + 10001 : 'So', + 10002 : 'So', + 10003 : 'So', + 10004 : 'So', + 10005 : 'So', + 10006 : 'So', + 10007 : 'So', + 10008 : 'So', + 10009 : 'So', + 10010 : 'So', + 10011 : 'So', + 10012 : 'So', + 10013 : 'So', + 10014 : 'So', + 10015 : 'So', + 10016 : 'So', + 10017 : 'So', + 10018 : 'So', + 10019 : 'So', + 10020 : 'So', + 10021 : 'So', + 10022 : 'So', + 10023 : 'So', + 10025 : 'So', + 10026 : 'So', + 10027 : 'So', + 10028 : 'So', + 10029 : 'So', + 10030 : 'So', + 10031 : 'So', + 10032 : 'So', + 10033 : 'So', + 10034 : 'So', + 10035 : 'So', + 10036 : 'So', + 10037 : 'So', + 10038 : 'So', + 10039 : 'So', + 10040 : 'So', + 10041 : 'So', + 10042 : 'So', + 10043 : 'So', + 10044 : 'So', + 10045 : 'So', + 10046 : 'So', + 10047 : 'So', + 10048 : 'So', + 10049 : 'So', + 10050 : 'So', + 10051 : 'So', + 10052 : 'So', + 10053 : 'So', + 10054 : 'So', + 10055 : 'So', + 10056 : 'So', + 10057 : 'So', + 10058 : 'So', + 10059 : 'So', + 10061 : 'So', + 10063 : 'So', + 10064 : 'So', + 10065 : 'So', + 10066 : 'So', + 10070 : 'So', + 10072 : 'So', + 10073 : 'So', + 10074 : 'So', + 10075 : 'So', + 10076 : 'So', + 10077 : 'So', + 10078 : 'So', + 10081 : 'So', + 10082 : 'So', + 10083 : 'So', + 10084 : 'So', + 10085 : 'So', + 10086 : 'So', + 10087 : 'So', + 10088 : 'Ps', + 10089 : 'Pe', + 10090 : 'Ps', + 10091 : 'Pe', + 10092 : 'Ps', + 10093 : 'Pe', + 10094 : 'Ps', + 10095 : 'Pe', + 10096 : 'Ps', + 10097 : 'Pe', + 10098 : 'Ps', + 10099 : 'Pe', + 10100 : 'Ps', + 10101 : 'Pe', + 10102 : 'No', + 10103 : 'No', + 10104 : 'No', + 10105 : 'No', + 10106 : 'No', + 10107 : 'No', + 10108 : 'No', + 10109 : 'No', + 10110 : 'No', + 10111 : 'No', + 10112 : 'No', + 10113 : 'No', + 10114 : 'No', + 10115 : 'No', + 10116 : 'No', + 10117 : 'No', + 10118 : 'No', + 10119 : 'No', + 10120 : 'No', + 10121 : 'No', + 10122 : 'No', + 10123 : 'No', + 10124 : 'No', + 10125 : 'No', + 10126 : 'No', + 10127 : 'No', + 10128 : 'No', + 10129 : 'No', + 10130 : 'No', + 10131 : 'No', + 10132 : 'So', + 10136 : 'So', + 10137 : 'So', + 10138 : 'So', + 10139 : 'So', + 10140 : 'So', + 10141 : 'So', + 10142 : 'So', + 10143 : 'So', + 10144 : 'So', + 10145 : 'So', + 10146 : 'So', + 10147 : 'So', + 10148 : 'So', + 10149 : 'So', + 10150 : 'So', + 10151 : 'So', + 10152 : 'So', + 10153 : 'So', + 10154 : 'So', + 10155 : 'So', + 10156 : 'So', + 10157 : 'So', + 10158 : 'So', + 10159 : 'So', + 10161 : 'So', + 10162 : 'So', + 10163 : 'So', + 10164 : 'So', + 10165 : 'So', + 10166 : 'So', + 10167 : 'So', + 10168 : 'So', + 10169 : 'So', + 10170 : 'So', + 10171 : 'So', + 10172 : 'So', + 10173 : 'So', + 10174 : 'So', + 10192 : 'Sm', + 10193 : 'Sm', + 10194 : 'Sm', + 10195 : 'Sm', + 10196 : 'Sm', + 10197 : 'Sm', + 10198 : 'Sm', + 10199 : 'Sm', + 10200 : 'Sm', + 10201 : 'Sm', + 10202 : 'Sm', + 10203 : 'Sm', + 10204 : 'Sm', + 10205 : 'Sm', + 10206 : 'Sm', + 10207 : 'Sm', + 10208 : 'Sm', + 10209 : 'Sm', + 10210 : 'Sm', + 10211 : 'Sm', + 10212 : 'Sm', + 10213 : 'Sm', + 10214 : 'Ps', + 10215 : 'Pe', + 10216 : 'Ps', + 10217 : 'Pe', + 10218 : 'Ps', + 10219 : 'Pe', + 10224 : 'Sm', + 10225 : 'Sm', + 10226 : 'Sm', + 10227 : 'Sm', + 10228 : 'Sm', + 10229 : 'Sm', + 10230 : 'Sm', + 10231 : 'Sm', + 10232 : 'Sm', + 10233 : 'Sm', + 10234 : 'Sm', + 10235 : 'Sm', + 10236 : 'Sm', + 10237 : 'Sm', + 10238 : 'Sm', + 10239 : 'Sm', + 10240 : 'So', + 10241 : 'So', + 10242 : 'So', + 10243 : 'So', + 10244 : 'So', + 10245 : 'So', + 10246 : 'So', + 10247 : 'So', + 10248 : 'So', + 10249 : 'So', + 10250 : 'So', + 10251 : 'So', + 10252 : 'So', + 10253 : 'So', + 10254 : 'So', + 10255 : 'So', + 10256 : 'So', + 10257 : 'So', + 10258 : 'So', + 10259 : 'So', + 10260 : 'So', + 10261 : 'So', + 10262 : 'So', + 10263 : 'So', + 10264 : 'So', + 10265 : 'So', + 10266 : 'So', + 10267 : 'So', + 10268 : 'So', + 10269 : 'So', + 10270 : 'So', + 10271 : 'So', + 10272 : 'So', + 10273 : 'So', + 10274 : 'So', + 10275 : 'So', + 10276 : 'So', + 10277 : 'So', + 10278 : 'So', + 10279 : 'So', + 10280 : 'So', + 10281 : 'So', + 10282 : 'So', + 10283 : 'So', + 10284 : 'So', + 10285 : 'So', + 10286 : 'So', + 10287 : 'So', + 10288 : 'So', + 10289 : 'So', + 10290 : 'So', + 10291 : 'So', + 10292 : 'So', + 10293 : 'So', + 10294 : 'So', + 10295 : 'So', + 10296 : 'So', + 10297 : 'So', + 10298 : 'So', + 10299 : 'So', + 10300 : 'So', + 10301 : 'So', + 10302 : 'So', + 10303 : 'So', + 10304 : 'So', + 10305 : 'So', + 10306 : 'So', + 10307 : 'So', + 10308 : 'So', + 10309 : 'So', + 10310 : 'So', + 10311 : 'So', + 10312 : 'So', + 10313 : 'So', + 10314 : 'So', + 10315 : 'So', + 10316 : 'So', + 10317 : 'So', + 10318 : 'So', + 10319 : 'So', + 10320 : 'So', + 10321 : 'So', + 10322 : 'So', + 10323 : 'So', + 10324 : 'So', + 10325 : 'So', + 10326 : 'So', + 10327 : 'So', + 10328 : 'So', + 10329 : 'So', + 10330 : 'So', + 10331 : 'So', + 10332 : 'So', + 10333 : 'So', + 10334 : 'So', + 10335 : 'So', + 10336 : 'So', + 10337 : 'So', + 10338 : 'So', + 10339 : 'So', + 10340 : 'So', + 10341 : 'So', + 10342 : 'So', + 10343 : 'So', + 10344 : 'So', + 10345 : 'So', + 10346 : 'So', + 10347 : 'So', + 10348 : 'So', + 10349 : 'So', + 10350 : 'So', + 10351 : 'So', + 10352 : 'So', + 10353 : 'So', + 10354 : 'So', + 10355 : 'So', + 10356 : 'So', + 10357 : 'So', + 10358 : 'So', + 10359 : 'So', + 10360 : 'So', + 10361 : 'So', + 10362 : 'So', + 10363 : 'So', + 10364 : 'So', + 10365 : 'So', + 10366 : 'So', + 10367 : 'So', + 10368 : 'So', + 10369 : 'So', + 10370 : 'So', + 10371 : 'So', + 10372 : 'So', + 10373 : 'So', + 10374 : 'So', + 10375 : 'So', + 10376 : 'So', + 10377 : 'So', + 10378 : 'So', + 10379 : 'So', + 10380 : 'So', + 10381 : 'So', + 10382 : 'So', + 10383 : 'So', + 10384 : 'So', + 10385 : 'So', + 10386 : 'So', + 10387 : 'So', + 10388 : 'So', + 10389 : 'So', + 10390 : 'So', + 10391 : 'So', + 10392 : 'So', + 10393 : 'So', + 10394 : 'So', + 10395 : 'So', + 10396 : 'So', + 10397 : 'So', + 10398 : 'So', + 10399 : 'So', + 10400 : 'So', + 10401 : 'So', + 10402 : 'So', + 10403 : 'So', + 10404 : 'So', + 10405 : 'So', + 10406 : 'So', + 10407 : 'So', + 10408 : 'So', + 10409 : 'So', + 10410 : 'So', + 10411 : 'So', + 10412 : 'So', + 10413 : 'So', + 10414 : 'So', + 10415 : 'So', + 10416 : 'So', + 10417 : 'So', + 10418 : 'So', + 10419 : 'So', + 10420 : 'So', + 10421 : 'So', + 10422 : 'So', + 10423 : 'So', + 10424 : 'So', + 10425 : 'So', + 10426 : 'So', + 10427 : 'So', + 10428 : 'So', + 10429 : 'So', + 10430 : 'So', + 10431 : 'So', + 10432 : 'So', + 10433 : 'So', + 10434 : 'So', + 10435 : 'So', + 10436 : 'So', + 10437 : 'So', + 10438 : 'So', + 10439 : 'So', + 10440 : 'So', + 10441 : 'So', + 10442 : 'So', + 10443 : 'So', + 10444 : 'So', + 10445 : 'So', + 10446 : 'So', + 10447 : 'So', + 10448 : 'So', + 10449 : 'So', + 10450 : 'So', + 10451 : 'So', + 10452 : 'So', + 10453 : 'So', + 10454 : 'So', + 10455 : 'So', + 10456 : 'So', + 10457 : 'So', + 10458 : 'So', + 10459 : 'So', + 10460 : 'So', + 10461 : 'So', + 10462 : 'So', + 10463 : 'So', + 10464 : 'So', + 10465 : 'So', + 10466 : 'So', + 10467 : 'So', + 10468 : 'So', + 10469 : 'So', + 10470 : 'So', + 10471 : 'So', + 10472 : 'So', + 10473 : 'So', + 10474 : 'So', + 10475 : 'So', + 10476 : 'So', + 10477 : 'So', + 10478 : 'So', + 10479 : 'So', + 10480 : 'So', + 10481 : 'So', + 10482 : 'So', + 10483 : 'So', + 10484 : 'So', + 10485 : 'So', + 10486 : 'So', + 10487 : 'So', + 10488 : 'So', + 10489 : 'So', + 10490 : 'So', + 10491 : 'So', + 10492 : 'So', + 10493 : 'So', + 10494 : 'So', + 10495 : 'So', + 10496 : 'Sm', + 10497 : 'Sm', + 10498 : 'Sm', + 10499 : 'Sm', + 10500 : 'Sm', + 10501 : 'Sm', + 10502 : 'Sm', + 10503 : 'Sm', + 10504 : 'Sm', + 10505 : 'Sm', + 10506 : 'Sm', + 10507 : 'Sm', + 10508 : 'Sm', + 10509 : 'Sm', + 10510 : 'Sm', + 10511 : 'Sm', + 10512 : 'Sm', + 10513 : 'Sm', + 10514 : 'Sm', + 10515 : 'Sm', + 10516 : 'Sm', + 10517 : 'Sm', + 10518 : 'Sm', + 10519 : 'Sm', + 10520 : 'Sm', + 10521 : 'Sm', + 10522 : 'Sm', + 10523 : 'Sm', + 10524 : 'Sm', + 10525 : 'Sm', + 10526 : 'Sm', + 10527 : 'Sm', + 10528 : 'Sm', + 10529 : 'Sm', + 10530 : 'Sm', + 10531 : 'Sm', + 10532 : 'Sm', + 10533 : 'Sm', + 10534 : 'Sm', + 10535 : 'Sm', + 10536 : 'Sm', + 10537 : 'Sm', + 10538 : 'Sm', + 10539 : 'Sm', + 10540 : 'Sm', + 10541 : 'Sm', + 10542 : 'Sm', + 10543 : 'Sm', + 10544 : 'Sm', + 10545 : 'Sm', + 10546 : 'Sm', + 10547 : 'Sm', + 10548 : 'Sm', + 10549 : 'Sm', + 10550 : 'Sm', + 10551 : 'Sm', + 10552 : 'Sm', + 10553 : 'Sm', + 10554 : 'Sm', + 10555 : 'Sm', + 10556 : 'Sm', + 10557 : 'Sm', + 10558 : 'Sm', + 10559 : 'Sm', + 10560 : 'Sm', + 10561 : 'Sm', + 10562 : 'Sm', + 10563 : 'Sm', + 10564 : 'Sm', + 10565 : 'Sm', + 10566 : 'Sm', + 10567 : 'Sm', + 10568 : 'Sm', + 10569 : 'Sm', + 10570 : 'Sm', + 10571 : 'Sm', + 10572 : 'Sm', + 10573 : 'Sm', + 10574 : 'Sm', + 10575 : 'Sm', + 10576 : 'Sm', + 10577 : 'Sm', + 10578 : 'Sm', + 10579 : 'Sm', + 10580 : 'Sm', + 10581 : 'Sm', + 10582 : 'Sm', + 10583 : 'Sm', + 10584 : 'Sm', + 10585 : 'Sm', + 10586 : 'Sm', + 10587 : 'Sm', + 10588 : 'Sm', + 10589 : 'Sm', + 10590 : 'Sm', + 10591 : 'Sm', + 10592 : 'Sm', + 10593 : 'Sm', + 10594 : 'Sm', + 10595 : 'Sm', + 10596 : 'Sm', + 10597 : 'Sm', + 10598 : 'Sm', + 10599 : 'Sm', + 10600 : 'Sm', + 10601 : 'Sm', + 10602 : 'Sm', + 10603 : 'Sm', + 10604 : 'Sm', + 10605 : 'Sm', + 10606 : 'Sm', + 10607 : 'Sm', + 10608 : 'Sm', + 10609 : 'Sm', + 10610 : 'Sm', + 10611 : 'Sm', + 10612 : 'Sm', + 10613 : 'Sm', + 10614 : 'Sm', + 10615 : 'Sm', + 10616 : 'Sm', + 10617 : 'Sm', + 10618 : 'Sm', + 10619 : 'Sm', + 10620 : 'Sm', + 10621 : 'Sm', + 10622 : 'Sm', + 10623 : 'Sm', + 10624 : 'Sm', + 10625 : 'Sm', + 10626 : 'Sm', + 10627 : 'Ps', + 10628 : 'Pe', + 10629 : 'Ps', + 10630 : 'Pe', + 10631 : 'Ps', + 10632 : 'Pe', + 10633 : 'Ps', + 10634 : 'Pe', + 10635 : 'Ps', + 10636 : 'Pe', + 10637 : 'Ps', + 10638 : 'Pe', + 10639 : 'Ps', + 10640 : 'Pe', + 10641 : 'Ps', + 10642 : 'Pe', + 10643 : 'Ps', + 10644 : 'Pe', + 10645 : 'Ps', + 10646 : 'Pe', + 10647 : 'Ps', + 10648 : 'Pe', + 10649 : 'Sm', + 10650 : 'Sm', + 10651 : 'Sm', + 10652 : 'Sm', + 10653 : 'Sm', + 10654 : 'Sm', + 10655 : 'Sm', + 10656 : 'Sm', + 10657 : 'Sm', + 10658 : 'Sm', + 10659 : 'Sm', + 10660 : 'Sm', + 10661 : 'Sm', + 10662 : 'Sm', + 10663 : 'Sm', + 10664 : 'Sm', + 10665 : 'Sm', + 10666 : 'Sm', + 10667 : 'Sm', + 10668 : 'Sm', + 10669 : 'Sm', + 10670 : 'Sm', + 10671 : 'Sm', + 10672 : 'Sm', + 10673 : 'Sm', + 10674 : 'Sm', + 10675 : 'Sm', + 10676 : 'Sm', + 10677 : 'Sm', + 10678 : 'Sm', + 10679 : 'Sm', + 10680 : 'Sm', + 10681 : 'Sm', + 10682 : 'Sm', + 10683 : 'Sm', + 10684 : 'Sm', + 10685 : 'Sm', + 10686 : 'Sm', + 10687 : 'Sm', + 10688 : 'Sm', + 10689 : 'Sm', + 10690 : 'Sm', + 10691 : 'Sm', + 10692 : 'Sm', + 10693 : 'Sm', + 10694 : 'Sm', + 10695 : 'Sm', + 10696 : 'Sm', + 10697 : 'Sm', + 10698 : 'Sm', + 10699 : 'Sm', + 10700 : 'Sm', + 10701 : 'Sm', + 10702 : 'Sm', + 10703 : 'Sm', + 10704 : 'Sm', + 10705 : 'Sm', + 10706 : 'Sm', + 10707 : 'Sm', + 10708 : 'Sm', + 10709 : 'Sm', + 10710 : 'Sm', + 10711 : 'Sm', + 10712 : 'Ps', + 10713 : 'Pe', + 10714 : 'Ps', + 10715 : 'Pe', + 10716 : 'Sm', + 10717 : 'Sm', + 10718 : 'Sm', + 10719 : 'Sm', + 10720 : 'Sm', + 10721 : 'Sm', + 10722 : 'Sm', + 10723 : 'Sm', + 10724 : 'Sm', + 10725 : 'Sm', + 10726 : 'Sm', + 10727 : 'Sm', + 10728 : 'Sm', + 10729 : 'Sm', + 10730 : 'Sm', + 10731 : 'Sm', + 10732 : 'Sm', + 10733 : 'Sm', + 10734 : 'Sm', + 10735 : 'Sm', + 10736 : 'Sm', + 10737 : 'Sm', + 10738 : 'Sm', + 10739 : 'Sm', + 10740 : 'Sm', + 10741 : 'Sm', + 10742 : 'Sm', + 10743 : 'Sm', + 10744 : 'Sm', + 10745 : 'Sm', + 10746 : 'Sm', + 10747 : 'Sm', + 10748 : 'Ps', + 10749 : 'Pe', + 10750 : 'Sm', + 10751 : 'Sm', + 10752 : 'Sm', + 10753 : 'Sm', + 10754 : 'Sm', + 10755 : 'Sm', + 10756 : 'Sm', + 10757 : 'Sm', + 10758 : 'Sm', + 10759 : 'Sm', + 10760 : 'Sm', + 10761 : 'Sm', + 10762 : 'Sm', + 10763 : 'Sm', + 10764 : 'Sm', + 10765 : 'Sm', + 10766 : 'Sm', + 10767 : 'Sm', + 10768 : 'Sm', + 10769 : 'Sm', + 10770 : 'Sm', + 10771 : 'Sm', + 10772 : 'Sm', + 10773 : 'Sm', + 10774 : 'Sm', + 10775 : 'Sm', + 10776 : 'Sm', + 10777 : 'Sm', + 10778 : 'Sm', + 10779 : 'Sm', + 10780 : 'Sm', + 10781 : 'Sm', + 10782 : 'Sm', + 10783 : 'Sm', + 10784 : 'Sm', + 10785 : 'Sm', + 10786 : 'Sm', + 10787 : 'Sm', + 10788 : 'Sm', + 10789 : 'Sm', + 10790 : 'Sm', + 10791 : 'Sm', + 10792 : 'Sm', + 10793 : 'Sm', + 10794 : 'Sm', + 10795 : 'Sm', + 10796 : 'Sm', + 10797 : 'Sm', + 10798 : 'Sm', + 10799 : 'Sm', + 10800 : 'Sm', + 10801 : 'Sm', + 10802 : 'Sm', + 10803 : 'Sm', + 10804 : 'Sm', + 10805 : 'Sm', + 10806 : 'Sm', + 10807 : 'Sm', + 10808 : 'Sm', + 10809 : 'Sm', + 10810 : 'Sm', + 10811 : 'Sm', + 10812 : 'Sm', + 10813 : 'Sm', + 10814 : 'Sm', + 10815 : 'Sm', + 10816 : 'Sm', + 10817 : 'Sm', + 10818 : 'Sm', + 10819 : 'Sm', + 10820 : 'Sm', + 10821 : 'Sm', + 10822 : 'Sm', + 10823 : 'Sm', + 10824 : 'Sm', + 10825 : 'Sm', + 10826 : 'Sm', + 10827 : 'Sm', + 10828 : 'Sm', + 10829 : 'Sm', + 10830 : 'Sm', + 10831 : 'Sm', + 10832 : 'Sm', + 10833 : 'Sm', + 10834 : 'Sm', + 10835 : 'Sm', + 10836 : 'Sm', + 10837 : 'Sm', + 10838 : 'Sm', + 10839 : 'Sm', + 10840 : 'Sm', + 10841 : 'Sm', + 10842 : 'Sm', + 10843 : 'Sm', + 10844 : 'Sm', + 10845 : 'Sm', + 10846 : 'Sm', + 10847 : 'Sm', + 10848 : 'Sm', + 10849 : 'Sm', + 10850 : 'Sm', + 10851 : 'Sm', + 10852 : 'Sm', + 10853 : 'Sm', + 10854 : 'Sm', + 10855 : 'Sm', + 10856 : 'Sm', + 10857 : 'Sm', + 10858 : 'Sm', + 10859 : 'Sm', + 10860 : 'Sm', + 10861 : 'Sm', + 10862 : 'Sm', + 10863 : 'Sm', + 10864 : 'Sm', + 10865 : 'Sm', + 10866 : 'Sm', + 10867 : 'Sm', + 10868 : 'Sm', + 10869 : 'Sm', + 10870 : 'Sm', + 10871 : 'Sm', + 10872 : 'Sm', + 10873 : 'Sm', + 10874 : 'Sm', + 10875 : 'Sm', + 10876 : 'Sm', + 10877 : 'Sm', + 10878 : 'Sm', + 10879 : 'Sm', + 10880 : 'Sm', + 10881 : 'Sm', + 10882 : 'Sm', + 10883 : 'Sm', + 10884 : 'Sm', + 10885 : 'Sm', + 10886 : 'Sm', + 10887 : 'Sm', + 10888 : 'Sm', + 10889 : 'Sm', + 10890 : 'Sm', + 10891 : 'Sm', + 10892 : 'Sm', + 10893 : 'Sm', + 10894 : 'Sm', + 10895 : 'Sm', + 10896 : 'Sm', + 10897 : 'Sm', + 10898 : 'Sm', + 10899 : 'Sm', + 10900 : 'Sm', + 10901 : 'Sm', + 10902 : 'Sm', + 10903 : 'Sm', + 10904 : 'Sm', + 10905 : 'Sm', + 10906 : 'Sm', + 10907 : 'Sm', + 10908 : 'Sm', + 10909 : 'Sm', + 10910 : 'Sm', + 10911 : 'Sm', + 10912 : 'Sm', + 10913 : 'Sm', + 10914 : 'Sm', + 10915 : 'Sm', + 10916 : 'Sm', + 10917 : 'Sm', + 10918 : 'Sm', + 10919 : 'Sm', + 10920 : 'Sm', + 10921 : 'Sm', + 10922 : 'Sm', + 10923 : 'Sm', + 10924 : 'Sm', + 10925 : 'Sm', + 10926 : 'Sm', + 10927 : 'Sm', + 10928 : 'Sm', + 10929 : 'Sm', + 10930 : 'Sm', + 10931 : 'Sm', + 10932 : 'Sm', + 10933 : 'Sm', + 10934 : 'Sm', + 10935 : 'Sm', + 10936 : 'Sm', + 10937 : 'Sm', + 10938 : 'Sm', + 10939 : 'Sm', + 10940 : 'Sm', + 10941 : 'Sm', + 10942 : 'Sm', + 10943 : 'Sm', + 10944 : 'Sm', + 10945 : 'Sm', + 10946 : 'Sm', + 10947 : 'Sm', + 10948 : 'Sm', + 10949 : 'Sm', + 10950 : 'Sm', + 10951 : 'Sm', + 10952 : 'Sm', + 10953 : 'Sm', + 10954 : 'Sm', + 10955 : 'Sm', + 10956 : 'Sm', + 10957 : 'Sm', + 10958 : 'Sm', + 10959 : 'Sm', + 10960 : 'Sm', + 10961 : 'Sm', + 10962 : 'Sm', + 10963 : 'Sm', + 10964 : 'Sm', + 10965 : 'Sm', + 10966 : 'Sm', + 10967 : 'Sm', + 10968 : 'Sm', + 10969 : 'Sm', + 10970 : 'Sm', + 10971 : 'Sm', + 10972 : 'Sm', + 10973 : 'Sm', + 10974 : 'Sm', + 10975 : 'Sm', + 10976 : 'Sm', + 10977 : 'Sm', + 10978 : 'Sm', + 10979 : 'Sm', + 10980 : 'Sm', + 10981 : 'Sm', + 10982 : 'Sm', + 10983 : 'Sm', + 10984 : 'Sm', + 10985 : 'Sm', + 10986 : 'Sm', + 10987 : 'Sm', + 10988 : 'Sm', + 10989 : 'Sm', + 10990 : 'Sm', + 10991 : 'Sm', + 10992 : 'Sm', + 10993 : 'Sm', + 10994 : 'Sm', + 10995 : 'Sm', + 10996 : 'Sm', + 10997 : 'Sm', + 10998 : 'Sm', + 10999 : 'Sm', + 11000 : 'Sm', + 11001 : 'Sm', + 11002 : 'Sm', + 11003 : 'Sm', + 11004 : 'Sm', + 11005 : 'Sm', + 11006 : 'Sm', + 11007 : 'Sm', + 11904 : 'So', + 11905 : 'So', + 11906 : 'So', + 11907 : 'So', + 11908 : 'So', + 11909 : 'So', + 11910 : 'So', + 11911 : 'So', + 11912 : 'So', + 11913 : 'So', + 11914 : 'So', + 11915 : 'So', + 11916 : 'So', + 11917 : 'So', + 11918 : 'So', + 11919 : 'So', + 11920 : 'So', + 11921 : 'So', + 11922 : 'So', + 11923 : 'So', + 11924 : 'So', + 11925 : 'So', + 11926 : 'So', + 11927 : 'So', + 11928 : 'So', + 11929 : 'So', + 11931 : 'So', + 11932 : 'So', + 11933 : 'So', + 11934 : 'So', + 11935 : 'So', + 11936 : 'So', + 11937 : 'So', + 11938 : 'So', + 11939 : 'So', + 11940 : 'So', + 11941 : 'So', + 11942 : 'So', + 11943 : 'So', + 11944 : 'So', + 11945 : 'So', + 11946 : 'So', + 11947 : 'So', + 11948 : 'So', + 11949 : 'So', + 11950 : 'So', + 11951 : 'So', + 11952 : 'So', + 11953 : 'So', + 11954 : 'So', + 11955 : 'So', + 11956 : 'So', + 11957 : 'So', + 11958 : 'So', + 11959 : 'So', + 11960 : 'So', + 11961 : 'So', + 11962 : 'So', + 11963 : 'So', + 11964 : 'So', + 11965 : 'So', + 11966 : 'So', + 11967 : 'So', + 11968 : 'So', + 11969 : 'So', + 11970 : 'So', + 11971 : 'So', + 11972 : 'So', + 11973 : 'So', + 11974 : 'So', + 11975 : 'So', + 11976 : 'So', + 11977 : 'So', + 11978 : 'So', + 11979 : 'So', + 11980 : 'So', + 11981 : 'So', + 11982 : 'So', + 11983 : 'So', + 11984 : 'So', + 11985 : 'So', + 11986 : 'So', + 11987 : 'So', + 11988 : 'So', + 11989 : 'So', + 11990 : 'So', + 11991 : 'So', + 11992 : 'So', + 11993 : 'So', + 11994 : 'So', + 11995 : 'So', + 11996 : 'So', + 11997 : 'So', + 11998 : 'So', + 11999 : 'So', + 12000 : 'So', + 12001 : 'So', + 12002 : 'So', + 12003 : 'So', + 12004 : 'So', + 12005 : 'So', + 12006 : 'So', + 12007 : 'So', + 12008 : 'So', + 12009 : 'So', + 12010 : 'So', + 12011 : 'So', + 12012 : 'So', + 12013 : 'So', + 12014 : 'So', + 12015 : 'So', + 12016 : 'So', + 12017 : 'So', + 12018 : 'So', + 12019 : 'So', + 12032 : 'So', + 12033 : 'So', + 12034 : 'So', + 12035 : 'So', + 12036 : 'So', + 12037 : 'So', + 12038 : 'So', + 12039 : 'So', + 12040 : 'So', + 12041 : 'So', + 12042 : 'So', + 12043 : 'So', + 12044 : 'So', + 12045 : 'So', + 12046 : 'So', + 12047 : 'So', + 12048 : 'So', + 12049 : 'So', + 12050 : 'So', + 12051 : 'So', + 12052 : 'So', + 12053 : 'So', + 12054 : 'So', + 12055 : 'So', + 12056 : 'So', + 12057 : 'So', + 12058 : 'So', + 12059 : 'So', + 12060 : 'So', + 12061 : 'So', + 12062 : 'So', + 12063 : 'So', + 12064 : 'So', + 12065 : 'So', + 12066 : 'So', + 12067 : 'So', + 12068 : 'So', + 12069 : 'So', + 12070 : 'So', + 12071 : 'So', + 12072 : 'So', + 12073 : 'So', + 12074 : 'So', + 12075 : 'So', + 12076 : 'So', + 12077 : 'So', + 12078 : 'So', + 12079 : 'So', + 12080 : 'So', + 12081 : 'So', + 12082 : 'So', + 12083 : 'So', + 12084 : 'So', + 12085 : 'So', + 12086 : 'So', + 12087 : 'So', + 12088 : 'So', + 12089 : 'So', + 12090 : 'So', + 12091 : 'So', + 12092 : 'So', + 12093 : 'So', + 12094 : 'So', + 12095 : 'So', + 12096 : 'So', + 12097 : 'So', + 12098 : 'So', + 12099 : 'So', + 12100 : 'So', + 12101 : 'So', + 12102 : 'So', + 12103 : 'So', + 12104 : 'So', + 12105 : 'So', + 12106 : 'So', + 12107 : 'So', + 12108 : 'So', + 12109 : 'So', + 12110 : 'So', + 12111 : 'So', + 12112 : 'So', + 12113 : 'So', + 12114 : 'So', + 12115 : 'So', + 12116 : 'So', + 12117 : 'So', + 12118 : 'So', + 12119 : 'So', + 12120 : 'So', + 12121 : 'So', + 12122 : 'So', + 12123 : 'So', + 12124 : 'So', + 12125 : 'So', + 12126 : 'So', + 12127 : 'So', + 12128 : 'So', + 12129 : 'So', + 12130 : 'So', + 12131 : 'So', + 12132 : 'So', + 12133 : 'So', + 12134 : 'So', + 12135 : 'So', + 12136 : 'So', + 12137 : 'So', + 12138 : 'So', + 12139 : 'So', + 12140 : 'So', + 12141 : 'So', + 12142 : 'So', + 12143 : 'So', + 12144 : 'So', + 12145 : 'So', + 12146 : 'So', + 12147 : 'So', + 12148 : 'So', + 12149 : 'So', + 12150 : 'So', + 12151 : 'So', + 12152 : 'So', + 12153 : 'So', + 12154 : 'So', + 12155 : 'So', + 12156 : 'So', + 12157 : 'So', + 12158 : 'So', + 12159 : 'So', + 12160 : 'So', + 12161 : 'So', + 12162 : 'So', + 12163 : 'So', + 12164 : 'So', + 12165 : 'So', + 12166 : 'So', + 12167 : 'So', + 12168 : 'So', + 12169 : 'So', + 12170 : 'So', + 12171 : 'So', + 12172 : 'So', + 12173 : 'So', + 12174 : 'So', + 12175 : 'So', + 12176 : 'So', + 12177 : 'So', + 12178 : 'So', + 12179 : 'So', + 12180 : 'So', + 12181 : 'So', + 12182 : 'So', + 12183 : 'So', + 12184 : 'So', + 12185 : 'So', + 12186 : 'So', + 12187 : 'So', + 12188 : 'So', + 12189 : 'So', + 12190 : 'So', + 12191 : 'So', + 12192 : 'So', + 12193 : 'So', + 12194 : 'So', + 12195 : 'So', + 12196 : 'So', + 12197 : 'So', + 12198 : 'So', + 12199 : 'So', + 12200 : 'So', + 12201 : 'So', + 12202 : 'So', + 12203 : 'So', + 12204 : 'So', + 12205 : 'So', + 12206 : 'So', + 12207 : 'So', + 12208 : 'So', + 12209 : 'So', + 12210 : 'So', + 12211 : 'So', + 12212 : 'So', + 12213 : 'So', + 12214 : 'So', + 12215 : 'So', + 12216 : 'So', + 12217 : 'So', + 12218 : 'So', + 12219 : 'So', + 12220 : 'So', + 12221 : 'So', + 12222 : 'So', + 12223 : 'So', + 12224 : 'So', + 12225 : 'So', + 12226 : 'So', + 12227 : 'So', + 12228 : 'So', + 12229 : 'So', + 12230 : 'So', + 12231 : 'So', + 12232 : 'So', + 12233 : 'So', + 12234 : 'So', + 12235 : 'So', + 12236 : 'So', + 12237 : 'So', + 12238 : 'So', + 12239 : 'So', + 12240 : 'So', + 12241 : 'So', + 12242 : 'So', + 12243 : 'So', + 12244 : 'So', + 12245 : 'So', + 12272 : 'So', + 12273 : 'So', + 12274 : 'So', + 12275 : 'So', + 12276 : 'So', + 12277 : 'So', + 12278 : 'So', + 12279 : 'So', + 12280 : 'So', + 12281 : 'So', + 12282 : 'So', + 12283 : 'So', + 12288 : 'Zs', + 12289 : 'Po', + 12290 : 'Po', + 12291 : 'Po', + 12292 : 'So', + 12293 : 'Lm', + 12294 : 'Lo', + 12295 : 'Nl', + 12296 : 'Ps', + 12297 : 'Pe', + 12298 : 'Ps', + 12299 : 'Pe', + 12300 : 'Ps', + 12301 : 'Pe', + 12302 : 'Ps', + 12303 : 'Pe', + 12304 : 'Ps', + 12305 : 'Pe', + 12306 : 'So', + 12307 : 'So', + 12308 : 'Ps', + 12309 : 'Pe', + 12310 : 'Ps', + 12311 : 'Pe', + 12312 : 'Ps', + 12313 : 'Pe', + 12314 : 'Ps', + 12315 : 'Pe', + 12316 : 'Pd', + 12317 : 'Ps', + 12318 : 'Pe', + 12319 : 'Pe', + 12320 : 'So', + 12321 : 'Nl', + 12322 : 'Nl', + 12323 : 'Nl', + 12324 : 'Nl', + 12325 : 'Nl', + 12326 : 'Nl', + 12327 : 'Nl', + 12328 : 'Nl', + 12329 : 'Nl', + 12330 : 'Mn', + 12331 : 'Mn', + 12332 : 'Mn', + 12333 : 'Mn', + 12334 : 'Mn', + 12335 : 'Mn', + 12336 : 'Pd', + 12337 : 'Lm', + 12338 : 'Lm', + 12339 : 'Lm', + 12340 : 'Lm', + 12341 : 'Lm', + 12342 : 'So', + 12343 : 'So', + 12344 : 'Nl', + 12345 : 'Nl', + 12346 : 'Nl', + 12347 : 'Lm', + 12348 : 'Lo', + 12349 : 'Po', + 12350 : 'So', + 12351 : 'So', + 12353 : 'Lo', + 12354 : 'Lo', + 12355 : 'Lo', + 12356 : 'Lo', + 12357 : 'Lo', + 12358 : 'Lo', + 12359 : 'Lo', + 12360 : 'Lo', + 12361 : 'Lo', + 12362 : 'Lo', + 12363 : 'Lo', + 12364 : 'Lo', + 12365 : 'Lo', + 12366 : 'Lo', + 12367 : 'Lo', + 12368 : 'Lo', + 12369 : 'Lo', + 12370 : 'Lo', + 12371 : 'Lo', + 12372 : 'Lo', + 12373 : 'Lo', + 12374 : 'Lo', + 12375 : 'Lo', + 12376 : 'Lo', + 12377 : 'Lo', + 12378 : 'Lo', + 12379 : 'Lo', + 12380 : 'Lo', + 12381 : 'Lo', + 12382 : 'Lo', + 12383 : 'Lo', + 12384 : 'Lo', + 12385 : 'Lo', + 12386 : 'Lo', + 12387 : 'Lo', + 12388 : 'Lo', + 12389 : 'Lo', + 12390 : 'Lo', + 12391 : 'Lo', + 12392 : 'Lo', + 12393 : 'Lo', + 12394 : 'Lo', + 12395 : 'Lo', + 12396 : 'Lo', + 12397 : 'Lo', + 12398 : 'Lo', + 12399 : 'Lo', + 12400 : 'Lo', + 12401 : 'Lo', + 12402 : 'Lo', + 12403 : 'Lo', + 12404 : 'Lo', + 12405 : 'Lo', + 12406 : 'Lo', + 12407 : 'Lo', + 12408 : 'Lo', + 12409 : 'Lo', + 12410 : 'Lo', + 12411 : 'Lo', + 12412 : 'Lo', + 12413 : 'Lo', + 12414 : 'Lo', + 12415 : 'Lo', + 12416 : 'Lo', + 12417 : 'Lo', + 12418 : 'Lo', + 12419 : 'Lo', + 12420 : 'Lo', + 12421 : 'Lo', + 12422 : 'Lo', + 12423 : 'Lo', + 12424 : 'Lo', + 12425 : 'Lo', + 12426 : 'Lo', + 12427 : 'Lo', + 12428 : 'Lo', + 12429 : 'Lo', + 12430 : 'Lo', + 12431 : 'Lo', + 12432 : 'Lo', + 12433 : 'Lo', + 12434 : 'Lo', + 12435 : 'Lo', + 12436 : 'Lo', + 12437 : 'Lo', + 12438 : 'Lo', + 12441 : 'Mn', + 12442 : 'Mn', + 12443 : 'Sk', + 12444 : 'Sk', + 12445 : 'Lm', + 12446 : 'Lm', + 12447 : 'Lo', + 12448 : 'Pd', + 12449 : 'Lo', + 12450 : 'Lo', + 12451 : 'Lo', + 12452 : 'Lo', + 12453 : 'Lo', + 12454 : 'Lo', + 12455 : 'Lo', + 12456 : 'Lo', + 12457 : 'Lo', + 12458 : 'Lo', + 12459 : 'Lo', + 12460 : 'Lo', + 12461 : 'Lo', + 12462 : 'Lo', + 12463 : 'Lo', + 12464 : 'Lo', + 12465 : 'Lo', + 12466 : 'Lo', + 12467 : 'Lo', + 12468 : 'Lo', + 12469 : 'Lo', + 12470 : 'Lo', + 12471 : 'Lo', + 12472 : 'Lo', + 12473 : 'Lo', + 12474 : 'Lo', + 12475 : 'Lo', + 12476 : 'Lo', + 12477 : 'Lo', + 12478 : 'Lo', + 12479 : 'Lo', + 12480 : 'Lo', + 12481 : 'Lo', + 12482 : 'Lo', + 12483 : 'Lo', + 12484 : 'Lo', + 12485 : 'Lo', + 12486 : 'Lo', + 12487 : 'Lo', + 12488 : 'Lo', + 12489 : 'Lo', + 12490 : 'Lo', + 12491 : 'Lo', + 12492 : 'Lo', + 12493 : 'Lo', + 12494 : 'Lo', + 12495 : 'Lo', + 12496 : 'Lo', + 12497 : 'Lo', + 12498 : 'Lo', + 12499 : 'Lo', + 12500 : 'Lo', + 12501 : 'Lo', + 12502 : 'Lo', + 12503 : 'Lo', + 12504 : 'Lo', + 12505 : 'Lo', + 12506 : 'Lo', + 12507 : 'Lo', + 12508 : 'Lo', + 12509 : 'Lo', + 12510 : 'Lo', + 12511 : 'Lo', + 12512 : 'Lo', + 12513 : 'Lo', + 12514 : 'Lo', + 12515 : 'Lo', + 12516 : 'Lo', + 12517 : 'Lo', + 12518 : 'Lo', + 12519 : 'Lo', + 12520 : 'Lo', + 12521 : 'Lo', + 12522 : 'Lo', + 12523 : 'Lo', + 12524 : 'Lo', + 12525 : 'Lo', + 12526 : 'Lo', + 12527 : 'Lo', + 12528 : 'Lo', + 12529 : 'Lo', + 12530 : 'Lo', + 12531 : 'Lo', + 12532 : 'Lo', + 12533 : 'Lo', + 12534 : 'Lo', + 12535 : 'Lo', + 12536 : 'Lo', + 12537 : 'Lo', + 12538 : 'Lo', + 12539 : 'Pc', + 12540 : 'Lm', + 12541 : 'Lm', + 12542 : 'Lm', + 12543 : 'Lo', + 12549 : 'Lo', + 12550 : 'Lo', + 12551 : 'Lo', + 12552 : 'Lo', + 12553 : 'Lo', + 12554 : 'Lo', + 12555 : 'Lo', + 12556 : 'Lo', + 12557 : 'Lo', + 12558 : 'Lo', + 12559 : 'Lo', + 12560 : 'Lo', + 12561 : 'Lo', + 12562 : 'Lo', + 12563 : 'Lo', + 12564 : 'Lo', + 12565 : 'Lo', + 12566 : 'Lo', + 12567 : 'Lo', + 12568 : 'Lo', + 12569 : 'Lo', + 12570 : 'Lo', + 12571 : 'Lo', + 12572 : 'Lo', + 12573 : 'Lo', + 12574 : 'Lo', + 12575 : 'Lo', + 12576 : 'Lo', + 12577 : 'Lo', + 12578 : 'Lo', + 12579 : 'Lo', + 12580 : 'Lo', + 12581 : 'Lo', + 12582 : 'Lo', + 12583 : 'Lo', + 12584 : 'Lo', + 12585 : 'Lo', + 12586 : 'Lo', + 12587 : 'Lo', + 12588 : 'Lo', + 12593 : 'Lo', + 12594 : 'Lo', + 12595 : 'Lo', + 12596 : 'Lo', + 12597 : 'Lo', + 12598 : 'Lo', + 12599 : 'Lo', + 12600 : 'Lo', + 12601 : 'Lo', + 12602 : 'Lo', + 12603 : 'Lo', + 12604 : 'Lo', + 12605 : 'Lo', + 12606 : 'Lo', + 12607 : 'Lo', + 12608 : 'Lo', + 12609 : 'Lo', + 12610 : 'Lo', + 12611 : 'Lo', + 12612 : 'Lo', + 12613 : 'Lo', + 12614 : 'Lo', + 12615 : 'Lo', + 12616 : 'Lo', + 12617 : 'Lo', + 12618 : 'Lo', + 12619 : 'Lo', + 12620 : 'Lo', + 12621 : 'Lo', + 12622 : 'Lo', + 12623 : 'Lo', + 12624 : 'Lo', + 12625 : 'Lo', + 12626 : 'Lo', + 12627 : 'Lo', + 12628 : 'Lo', + 12629 : 'Lo', + 12630 : 'Lo', + 12631 : 'Lo', + 12632 : 'Lo', + 12633 : 'Lo', + 12634 : 'Lo', + 12635 : 'Lo', + 12636 : 'Lo', + 12637 : 'Lo', + 12638 : 'Lo', + 12639 : 'Lo', + 12640 : 'Lo', + 12641 : 'Lo', + 12642 : 'Lo', + 12643 : 'Lo', + 12644 : 'Lo', + 12645 : 'Lo', + 12646 : 'Lo', + 12647 : 'Lo', + 12648 : 'Lo', + 12649 : 'Lo', + 12650 : 'Lo', + 12651 : 'Lo', + 12652 : 'Lo', + 12653 : 'Lo', + 12654 : 'Lo', + 12655 : 'Lo', + 12656 : 'Lo', + 12657 : 'Lo', + 12658 : 'Lo', + 12659 : 'Lo', + 12660 : 'Lo', + 12661 : 'Lo', + 12662 : 'Lo', + 12663 : 'Lo', + 12664 : 'Lo', + 12665 : 'Lo', + 12666 : 'Lo', + 12667 : 'Lo', + 12668 : 'Lo', + 12669 : 'Lo', + 12670 : 'Lo', + 12671 : 'Lo', + 12672 : 'Lo', + 12673 : 'Lo', + 12674 : 'Lo', + 12675 : 'Lo', + 12676 : 'Lo', + 12677 : 'Lo', + 12678 : 'Lo', + 12679 : 'Lo', + 12680 : 'Lo', + 12681 : 'Lo', + 12682 : 'Lo', + 12683 : 'Lo', + 12684 : 'Lo', + 12685 : 'Lo', + 12686 : 'Lo', + 12688 : 'So', + 12689 : 'So', + 12690 : 'No', + 12691 : 'No', + 12692 : 'No', + 12693 : 'No', + 12694 : 'So', + 12695 : 'So', + 12696 : 'So', + 12697 : 'So', + 12698 : 'So', + 12699 : 'So', + 12700 : 'So', + 12701 : 'So', + 12702 : 'So', + 12703 : 'So', + 12704 : 'Lo', + 12705 : 'Lo', + 12706 : 'Lo', + 12707 : 'Lo', + 12708 : 'Lo', + 12709 : 'Lo', + 12710 : 'Lo', + 12711 : 'Lo', + 12712 : 'Lo', + 12713 : 'Lo', + 12714 : 'Lo', + 12715 : 'Lo', + 12716 : 'Lo', + 12717 : 'Lo', + 12718 : 'Lo', + 12719 : 'Lo', + 12720 : 'Lo', + 12721 : 'Lo', + 12722 : 'Lo', + 12723 : 'Lo', + 12724 : 'Lo', + 12725 : 'Lo', + 12726 : 'Lo', + 12727 : 'Lo', + 12784 : 'Lo', + 12785 : 'Lo', + 12786 : 'Lo', + 12787 : 'Lo', + 12788 : 'Lo', + 12789 : 'Lo', + 12790 : 'Lo', + 12791 : 'Lo', + 12792 : 'Lo', + 12793 : 'Lo', + 12794 : 'Lo', + 12795 : 'Lo', + 12796 : 'Lo', + 12797 : 'Lo', + 12798 : 'Lo', + 12799 : 'Lo', + 12800 : 'So', + 12801 : 'So', + 12802 : 'So', + 12803 : 'So', + 12804 : 'So', + 12805 : 'So', + 12806 : 'So', + 12807 : 'So', + 12808 : 'So', + 12809 : 'So', + 12810 : 'So', + 12811 : 'So', + 12812 : 'So', + 12813 : 'So', + 12814 : 'So', + 12815 : 'So', + 12816 : 'So', + 12817 : 'So', + 12818 : 'So', + 12819 : 'So', + 12820 : 'So', + 12821 : 'So', + 12822 : 'So', + 12823 : 'So', + 12824 : 'So', + 12825 : 'So', + 12826 : 'So', + 12827 : 'So', + 12828 : 'So', + 12832 : 'No', + 12833 : 'No', + 12834 : 'No', + 12835 : 'No', + 12836 : 'No', + 12837 : 'No', + 12838 : 'No', + 12839 : 'No', + 12840 : 'No', + 12841 : 'No', + 12842 : 'So', + 12843 : 'So', + 12844 : 'So', + 12845 : 'So', + 12846 : 'So', + 12847 : 'So', + 12848 : 'So', + 12849 : 'So', + 12850 : 'So', + 12851 : 'So', + 12852 : 'So', + 12853 : 'So', + 12854 : 'So', + 12855 : 'So', + 12856 : 'So', + 12857 : 'So', + 12858 : 'So', + 12859 : 'So', + 12860 : 'So', + 12861 : 'So', + 12862 : 'So', + 12863 : 'So', + 12864 : 'So', + 12865 : 'So', + 12866 : 'So', + 12867 : 'So', + 12881 : 'No', + 12882 : 'No', + 12883 : 'No', + 12884 : 'No', + 12885 : 'No', + 12886 : 'No', + 12887 : 'No', + 12888 : 'No', + 12889 : 'No', + 12890 : 'No', + 12891 : 'No', + 12892 : 'No', + 12893 : 'No', + 12894 : 'No', + 12895 : 'No', + 12896 : 'So', + 12897 : 'So', + 12898 : 'So', + 12899 : 'So', + 12900 : 'So', + 12901 : 'So', + 12902 : 'So', + 12903 : 'So', + 12904 : 'So', + 12905 : 'So', + 12906 : 'So', + 12907 : 'So', + 12908 : 'So', + 12909 : 'So', + 12910 : 'So', + 12911 : 'So', + 12912 : 'So', + 12913 : 'So', + 12914 : 'So', + 12915 : 'So', + 12916 : 'So', + 12917 : 'So', + 12918 : 'So', + 12919 : 'So', + 12920 : 'So', + 12921 : 'So', + 12922 : 'So', + 12923 : 'So', + 12927 : 'So', + 12928 : 'No', + 12929 : 'No', + 12930 : 'No', + 12931 : 'No', + 12932 : 'No', + 12933 : 'No', + 12934 : 'No', + 12935 : 'No', + 12936 : 'No', + 12937 : 'No', + 12938 : 'So', + 12939 : 'So', + 12940 : 'So', + 12941 : 'So', + 12942 : 'So', + 12943 : 'So', + 12944 : 'So', + 12945 : 'So', + 12946 : 'So', + 12947 : 'So', + 12948 : 'So', + 12949 : 'So', + 12950 : 'So', + 12951 : 'So', + 12952 : 'So', + 12953 : 'So', + 12954 : 'So', + 12955 : 'So', + 12956 : 'So', + 12957 : 'So', + 12958 : 'So', + 12959 : 'So', + 12960 : 'So', + 12961 : 'So', + 12962 : 'So', + 12963 : 'So', + 12964 : 'So', + 12965 : 'So', + 12966 : 'So', + 12967 : 'So', + 12968 : 'So', + 12969 : 'So', + 12970 : 'So', + 12971 : 'So', + 12972 : 'So', + 12973 : 'So', + 12974 : 'So', + 12975 : 'So', + 12976 : 'So', + 12977 : 'No', + 12978 : 'No', + 12979 : 'No', + 12980 : 'No', + 12981 : 'No', + 12982 : 'No', + 12983 : 'No', + 12984 : 'No', + 12985 : 'No', + 12986 : 'No', + 12987 : 'No', + 12988 : 'No', + 12989 : 'No', + 12990 : 'No', + 12991 : 'No', + 12992 : 'So', + 12993 : 'So', + 12994 : 'So', + 12995 : 'So', + 12996 : 'So', + 12997 : 'So', + 12998 : 'So', + 12999 : 'So', + 13000 : 'So', + 13001 : 'So', + 13002 : 'So', + 13003 : 'So', + 13008 : 'So', + 13009 : 'So', + 13010 : 'So', + 13011 : 'So', + 13012 : 'So', + 13013 : 'So', + 13014 : 'So', + 13015 : 'So', + 13016 : 'So', + 13017 : 'So', + 13018 : 'So', + 13019 : 'So', + 13020 : 'So', + 13021 : 'So', + 13022 : 'So', + 13023 : 'So', + 13024 : 'So', + 13025 : 'So', + 13026 : 'So', + 13027 : 'So', + 13028 : 'So', + 13029 : 'So', + 13030 : 'So', + 13031 : 'So', + 13032 : 'So', + 13033 : 'So', + 13034 : 'So', + 13035 : 'So', + 13036 : 'So', + 13037 : 'So', + 13038 : 'So', + 13039 : 'So', + 13040 : 'So', + 13041 : 'So', + 13042 : 'So', + 13043 : 'So', + 13044 : 'So', + 13045 : 'So', + 13046 : 'So', + 13047 : 'So', + 13048 : 'So', + 13049 : 'So', + 13050 : 'So', + 13051 : 'So', + 13052 : 'So', + 13053 : 'So', + 13054 : 'So', + 13056 : 'So', + 13057 : 'So', + 13058 : 'So', + 13059 : 'So', + 13060 : 'So', + 13061 : 'So', + 13062 : 'So', + 13063 : 'So', + 13064 : 'So', + 13065 : 'So', + 13066 : 'So', + 13067 : 'So', + 13068 : 'So', + 13069 : 'So', + 13070 : 'So', + 13071 : 'So', + 13072 : 'So', + 13073 : 'So', + 13074 : 'So', + 13075 : 'So', + 13076 : 'So', + 13077 : 'So', + 13078 : 'So', + 13079 : 'So', + 13080 : 'So', + 13081 : 'So', + 13082 : 'So', + 13083 : 'So', + 13084 : 'So', + 13085 : 'So', + 13086 : 'So', + 13087 : 'So', + 13088 : 'So', + 13089 : 'So', + 13090 : 'So', + 13091 : 'So', + 13092 : 'So', + 13093 : 'So', + 13094 : 'So', + 13095 : 'So', + 13096 : 'So', + 13097 : 'So', + 13098 : 'So', + 13099 : 'So', + 13100 : 'So', + 13101 : 'So', + 13102 : 'So', + 13103 : 'So', + 13104 : 'So', + 13105 : 'So', + 13106 : 'So', + 13107 : 'So', + 13108 : 'So', + 13109 : 'So', + 13110 : 'So', + 13111 : 'So', + 13112 : 'So', + 13113 : 'So', + 13114 : 'So', + 13115 : 'So', + 13116 : 'So', + 13117 : 'So', + 13118 : 'So', + 13119 : 'So', + 13120 : 'So', + 13121 : 'So', + 13122 : 'So', + 13123 : 'So', + 13124 : 'So', + 13125 : 'So', + 13126 : 'So', + 13127 : 'So', + 13128 : 'So', + 13129 : 'So', + 13130 : 'So', + 13131 : 'So', + 13132 : 'So', + 13133 : 'So', + 13134 : 'So', + 13135 : 'So', + 13136 : 'So', + 13137 : 'So', + 13138 : 'So', + 13139 : 'So', + 13140 : 'So', + 13141 : 'So', + 13142 : 'So', + 13143 : 'So', + 13144 : 'So', + 13145 : 'So', + 13146 : 'So', + 13147 : 'So', + 13148 : 'So', + 13149 : 'So', + 13150 : 'So', + 13151 : 'So', + 13152 : 'So', + 13153 : 'So', + 13154 : 'So', + 13155 : 'So', + 13156 : 'So', + 13157 : 'So', + 13158 : 'So', + 13159 : 'So', + 13160 : 'So', + 13161 : 'So', + 13162 : 'So', + 13163 : 'So', + 13164 : 'So', + 13165 : 'So', + 13166 : 'So', + 13167 : 'So', + 13168 : 'So', + 13169 : 'So', + 13170 : 'So', + 13171 : 'So', + 13172 : 'So', + 13173 : 'So', + 13174 : 'So', + 13179 : 'So', + 13180 : 'So', + 13181 : 'So', + 13182 : 'So', + 13183 : 'So', + 13184 : 'So', + 13185 : 'So', + 13186 : 'So', + 13187 : 'So', + 13188 : 'So', + 13189 : 'So', + 13190 : 'So', + 13191 : 'So', + 13192 : 'So', + 13193 : 'So', + 13194 : 'So', + 13195 : 'So', + 13196 : 'So', + 13197 : 'So', + 13198 : 'So', + 13199 : 'So', + 13200 : 'So', + 13201 : 'So', + 13202 : 'So', + 13203 : 'So', + 13204 : 'So', + 13205 : 'So', + 13206 : 'So', + 13207 : 'So', + 13208 : 'So', + 13209 : 'So', + 13210 : 'So', + 13211 : 'So', + 13212 : 'So', + 13213 : 'So', + 13214 : 'So', + 13215 : 'So', + 13216 : 'So', + 13217 : 'So', + 13218 : 'So', + 13219 : 'So', + 13220 : 'So', + 13221 : 'So', + 13222 : 'So', + 13223 : 'So', + 13224 : 'So', + 13225 : 'So', + 13226 : 'So', + 13227 : 'So', + 13228 : 'So', + 13229 : 'So', + 13230 : 'So', + 13231 : 'So', + 13232 : 'So', + 13233 : 'So', + 13234 : 'So', + 13235 : 'So', + 13236 : 'So', + 13237 : 'So', + 13238 : 'So', + 13239 : 'So', + 13240 : 'So', + 13241 : 'So', + 13242 : 'So', + 13243 : 'So', + 13244 : 'So', + 13245 : 'So', + 13246 : 'So', + 13247 : 'So', + 13248 : 'So', + 13249 : 'So', + 13250 : 'So', + 13251 : 'So', + 13252 : 'So', + 13253 : 'So', + 13254 : 'So', + 13255 : 'So', + 13256 : 'So', + 13257 : 'So', + 13258 : 'So', + 13259 : 'So', + 13260 : 'So', + 13261 : 'So', + 13262 : 'So', + 13263 : 'So', + 13264 : 'So', + 13265 : 'So', + 13266 : 'So', + 13267 : 'So', + 13268 : 'So', + 13269 : 'So', + 13270 : 'So', + 13271 : 'So', + 13272 : 'So', + 13273 : 'So', + 13274 : 'So', + 13275 : 'So', + 13276 : 'So', + 13277 : 'So', + 13280 : 'So', + 13281 : 'So', + 13282 : 'So', + 13283 : 'So', + 13284 : 'So', + 13285 : 'So', + 13286 : 'So', + 13287 : 'So', + 13288 : 'So', + 13289 : 'So', + 13290 : 'So', + 13291 : 'So', + 13292 : 'So', + 13293 : 'So', + 13294 : 'So', + 13295 : 'So', + 13296 : 'So', + 13297 : 'So', + 13298 : 'So', + 13299 : 'So', + 13300 : 'So', + 13301 : 'So', + 13302 : 'So', + 13303 : 'So', + 13304 : 'So', + 13305 : 'So', + 13306 : 'So', + 13307 : 'So', + 13308 : 'So', + 13309 : 'So', + 13310 : 'So', + 13312 : 'Lo', + 19893 : 'Lo', + 19968 : 'Lo', + 40869 : 'Lo', + 40960 : 'Lo', + 40961 : 'Lo', + 40962 : 'Lo', + 40963 : 'Lo', + 40964 : 'Lo', + 40965 : 'Lo', + 40966 : 'Lo', + 40967 : 'Lo', + 40968 : 'Lo', + 40969 : 'Lo', + 40970 : 'Lo', + 40971 : 'Lo', + 40972 : 'Lo', + 40973 : 'Lo', + 40974 : 'Lo', + 40975 : 'Lo', + 40976 : 'Lo', + 40977 : 'Lo', + 40978 : 'Lo', + 40979 : 'Lo', + 40980 : 'Lo', + 40981 : 'Lo', + 40982 : 'Lo', + 40983 : 'Lo', + 40984 : 'Lo', + 40985 : 'Lo', + 40986 : 'Lo', + 40987 : 'Lo', + 40988 : 'Lo', + 40989 : 'Lo', + 40990 : 'Lo', + 40991 : 'Lo', + 40992 : 'Lo', + 40993 : 'Lo', + 40994 : 'Lo', + 40995 : 'Lo', + 40996 : 'Lo', + 40997 : 'Lo', + 40998 : 'Lo', + 40999 : 'Lo', + 41000 : 'Lo', + 41001 : 'Lo', + 41002 : 'Lo', + 41003 : 'Lo', + 41004 : 'Lo', + 41005 : 'Lo', + 41006 : 'Lo', + 41007 : 'Lo', + 41008 : 'Lo', + 41009 : 'Lo', + 41010 : 'Lo', + 41011 : 'Lo', + 41012 : 'Lo', + 41013 : 'Lo', + 41014 : 'Lo', + 41015 : 'Lo', + 41016 : 'Lo', + 41017 : 'Lo', + 41018 : 'Lo', + 41019 : 'Lo', + 41020 : 'Lo', + 41021 : 'Lo', + 41022 : 'Lo', + 41023 : 'Lo', + 41024 : 'Lo', + 41025 : 'Lo', + 41026 : 'Lo', + 41027 : 'Lo', + 41028 : 'Lo', + 41029 : 'Lo', + 41030 : 'Lo', + 41031 : 'Lo', + 41032 : 'Lo', + 41033 : 'Lo', + 41034 : 'Lo', + 41035 : 'Lo', + 41036 : 'Lo', + 41037 : 'Lo', + 41038 : 'Lo', + 41039 : 'Lo', + 41040 : 'Lo', + 41041 : 'Lo', + 41042 : 'Lo', + 41043 : 'Lo', + 41044 : 'Lo', + 41045 : 'Lo', + 41046 : 'Lo', + 41047 : 'Lo', + 41048 : 'Lo', + 41049 : 'Lo', + 41050 : 'Lo', + 41051 : 'Lo', + 41052 : 'Lo', + 41053 : 'Lo', + 41054 : 'Lo', + 41055 : 'Lo', + 41056 : 'Lo', + 41057 : 'Lo', + 41058 : 'Lo', + 41059 : 'Lo', + 41060 : 'Lo', + 41061 : 'Lo', + 41062 : 'Lo', + 41063 : 'Lo', + 41064 : 'Lo', + 41065 : 'Lo', + 41066 : 'Lo', + 41067 : 'Lo', + 41068 : 'Lo', + 41069 : 'Lo', + 41070 : 'Lo', + 41071 : 'Lo', + 41072 : 'Lo', + 41073 : 'Lo', + 41074 : 'Lo', + 41075 : 'Lo', + 41076 : 'Lo', + 41077 : 'Lo', + 41078 : 'Lo', + 41079 : 'Lo', + 41080 : 'Lo', + 41081 : 'Lo', + 41082 : 'Lo', + 41083 : 'Lo', + 41084 : 'Lo', + 41085 : 'Lo', + 41086 : 'Lo', + 41087 : 'Lo', + 41088 : 'Lo', + 41089 : 'Lo', + 41090 : 'Lo', + 41091 : 'Lo', + 41092 : 'Lo', + 41093 : 'Lo', + 41094 : 'Lo', + 41095 : 'Lo', + 41096 : 'Lo', + 41097 : 'Lo', + 41098 : 'Lo', + 41099 : 'Lo', + 41100 : 'Lo', + 41101 : 'Lo', + 41102 : 'Lo', + 41103 : 'Lo', + 41104 : 'Lo', + 41105 : 'Lo', + 41106 : 'Lo', + 41107 : 'Lo', + 41108 : 'Lo', + 41109 : 'Lo', + 41110 : 'Lo', + 41111 : 'Lo', + 41112 : 'Lo', + 41113 : 'Lo', + 41114 : 'Lo', + 41115 : 'Lo', + 41116 : 'Lo', + 41117 : 'Lo', + 41118 : 'Lo', + 41119 : 'Lo', + 41120 : 'Lo', + 41121 : 'Lo', + 41122 : 'Lo', + 41123 : 'Lo', + 41124 : 'Lo', + 41125 : 'Lo', + 41126 : 'Lo', + 41127 : 'Lo', + 41128 : 'Lo', + 41129 : 'Lo', + 41130 : 'Lo', + 41131 : 'Lo', + 41132 : 'Lo', + 41133 : 'Lo', + 41134 : 'Lo', + 41135 : 'Lo', + 41136 : 'Lo', + 41137 : 'Lo', + 41138 : 'Lo', + 41139 : 'Lo', + 41140 : 'Lo', + 41141 : 'Lo', + 41142 : 'Lo', + 41143 : 'Lo', + 41144 : 'Lo', + 41145 : 'Lo', + 41146 : 'Lo', + 41147 : 'Lo', + 41148 : 'Lo', + 41149 : 'Lo', + 41150 : 'Lo', + 41151 : 'Lo', + 41152 : 'Lo', + 41153 : 'Lo', + 41154 : 'Lo', + 41155 : 'Lo', + 41156 : 'Lo', + 41157 : 'Lo', + 41158 : 'Lo', + 41159 : 'Lo', + 41160 : 'Lo', + 41161 : 'Lo', + 41162 : 'Lo', + 41163 : 'Lo', + 41164 : 'Lo', + 41165 : 'Lo', + 41166 : 'Lo', + 41167 : 'Lo', + 41168 : 'Lo', + 41169 : 'Lo', + 41170 : 'Lo', + 41171 : 'Lo', + 41172 : 'Lo', + 41173 : 'Lo', + 41174 : 'Lo', + 41175 : 'Lo', + 41176 : 'Lo', + 41177 : 'Lo', + 41178 : 'Lo', + 41179 : 'Lo', + 41180 : 'Lo', + 41181 : 'Lo', + 41182 : 'Lo', + 41183 : 'Lo', + 41184 : 'Lo', + 41185 : 'Lo', + 41186 : 'Lo', + 41187 : 'Lo', + 41188 : 'Lo', + 41189 : 'Lo', + 41190 : 'Lo', + 41191 : 'Lo', + 41192 : 'Lo', + 41193 : 'Lo', + 41194 : 'Lo', + 41195 : 'Lo', + 41196 : 'Lo', + 41197 : 'Lo', + 41198 : 'Lo', + 41199 : 'Lo', + 41200 : 'Lo', + 41201 : 'Lo', + 41202 : 'Lo', + 41203 : 'Lo', + 41204 : 'Lo', + 41205 : 'Lo', + 41206 : 'Lo', + 41207 : 'Lo', + 41208 : 'Lo', + 41209 : 'Lo', + 41210 : 'Lo', + 41211 : 'Lo', + 41212 : 'Lo', + 41213 : 'Lo', + 41214 : 'Lo', + 41215 : 'Lo', + 41216 : 'Lo', + 41217 : 'Lo', + 41218 : 'Lo', + 41219 : 'Lo', + 41220 : 'Lo', + 41221 : 'Lo', + 41222 : 'Lo', + 41223 : 'Lo', + 41224 : 'Lo', + 41225 : 'Lo', + 41226 : 'Lo', + 41227 : 'Lo', + 41228 : 'Lo', + 41229 : 'Lo', + 41230 : 'Lo', + 41231 : 'Lo', + 41232 : 'Lo', + 41233 : 'Lo', + 41234 : 'Lo', + 41235 : 'Lo', + 41236 : 'Lo', + 41237 : 'Lo', + 41238 : 'Lo', + 41239 : 'Lo', + 41240 : 'Lo', + 41241 : 'Lo', + 41242 : 'Lo', + 41243 : 'Lo', + 41244 : 'Lo', + 41245 : 'Lo', + 41246 : 'Lo', + 41247 : 'Lo', + 41248 : 'Lo', + 41249 : 'Lo', + 41250 : 'Lo', + 41251 : 'Lo', + 41252 : 'Lo', + 41253 : 'Lo', + 41254 : 'Lo', + 41255 : 'Lo', + 41256 : 'Lo', + 41257 : 'Lo', + 41258 : 'Lo', + 41259 : 'Lo', + 41260 : 'Lo', + 41261 : 'Lo', + 41262 : 'Lo', + 41263 : 'Lo', + 41264 : 'Lo', + 41265 : 'Lo', + 41266 : 'Lo', + 41267 : 'Lo', + 41268 : 'Lo', + 41269 : 'Lo', + 41270 : 'Lo', + 41271 : 'Lo', + 41272 : 'Lo', + 41273 : 'Lo', + 41274 : 'Lo', + 41275 : 'Lo', + 41276 : 'Lo', + 41277 : 'Lo', + 41278 : 'Lo', + 41279 : 'Lo', + 41280 : 'Lo', + 41281 : 'Lo', + 41282 : 'Lo', + 41283 : 'Lo', + 41284 : 'Lo', + 41285 : 'Lo', + 41286 : 'Lo', + 41287 : 'Lo', + 41288 : 'Lo', + 41289 : 'Lo', + 41290 : 'Lo', + 41291 : 'Lo', + 41292 : 'Lo', + 41293 : 'Lo', + 41294 : 'Lo', + 41295 : 'Lo', + 41296 : 'Lo', + 41297 : 'Lo', + 41298 : 'Lo', + 41299 : 'Lo', + 41300 : 'Lo', + 41301 : 'Lo', + 41302 : 'Lo', + 41303 : 'Lo', + 41304 : 'Lo', + 41305 : 'Lo', + 41306 : 'Lo', + 41307 : 'Lo', + 41308 : 'Lo', + 41309 : 'Lo', + 41310 : 'Lo', + 41311 : 'Lo', + 41312 : 'Lo', + 41313 : 'Lo', + 41314 : 'Lo', + 41315 : 'Lo', + 41316 : 'Lo', + 41317 : 'Lo', + 41318 : 'Lo', + 41319 : 'Lo', + 41320 : 'Lo', + 41321 : 'Lo', + 41322 : 'Lo', + 41323 : 'Lo', + 41324 : 'Lo', + 41325 : 'Lo', + 41326 : 'Lo', + 41327 : 'Lo', + 41328 : 'Lo', + 41329 : 'Lo', + 41330 : 'Lo', + 41331 : 'Lo', + 41332 : 'Lo', + 41333 : 'Lo', + 41334 : 'Lo', + 41335 : 'Lo', + 41336 : 'Lo', + 41337 : 'Lo', + 41338 : 'Lo', + 41339 : 'Lo', + 41340 : 'Lo', + 41341 : 'Lo', + 41342 : 'Lo', + 41343 : 'Lo', + 41344 : 'Lo', + 41345 : 'Lo', + 41346 : 'Lo', + 41347 : 'Lo', + 41348 : 'Lo', + 41349 : 'Lo', + 41350 : 'Lo', + 41351 : 'Lo', + 41352 : 'Lo', + 41353 : 'Lo', + 41354 : 'Lo', + 41355 : 'Lo', + 41356 : 'Lo', + 41357 : 'Lo', + 41358 : 'Lo', + 41359 : 'Lo', + 41360 : 'Lo', + 41361 : 'Lo', + 41362 : 'Lo', + 41363 : 'Lo', + 41364 : 'Lo', + 41365 : 'Lo', + 41366 : 'Lo', + 41367 : 'Lo', + 41368 : 'Lo', + 41369 : 'Lo', + 41370 : 'Lo', + 41371 : 'Lo', + 41372 : 'Lo', + 41373 : 'Lo', + 41374 : 'Lo', + 41375 : 'Lo', + 41376 : 'Lo', + 41377 : 'Lo', + 41378 : 'Lo', + 41379 : 'Lo', + 41380 : 'Lo', + 41381 : 'Lo', + 41382 : 'Lo', + 41383 : 'Lo', + 41384 : 'Lo', + 41385 : 'Lo', + 41386 : 'Lo', + 41387 : 'Lo', + 41388 : 'Lo', + 41389 : 'Lo', + 41390 : 'Lo', + 41391 : 'Lo', + 41392 : 'Lo', + 41393 : 'Lo', + 41394 : 'Lo', + 41395 : 'Lo', + 41396 : 'Lo', + 41397 : 'Lo', + 41398 : 'Lo', + 41399 : 'Lo', + 41400 : 'Lo', + 41401 : 'Lo', + 41402 : 'Lo', + 41403 : 'Lo', + 41404 : 'Lo', + 41405 : 'Lo', + 41406 : 'Lo', + 41407 : 'Lo', + 41408 : 'Lo', + 41409 : 'Lo', + 41410 : 'Lo', + 41411 : 'Lo', + 41412 : 'Lo', + 41413 : 'Lo', + 41414 : 'Lo', + 41415 : 'Lo', + 41416 : 'Lo', + 41417 : 'Lo', + 41418 : 'Lo', + 41419 : 'Lo', + 41420 : 'Lo', + 41421 : 'Lo', + 41422 : 'Lo', + 41423 : 'Lo', + 41424 : 'Lo', + 41425 : 'Lo', + 41426 : 'Lo', + 41427 : 'Lo', + 41428 : 'Lo', + 41429 : 'Lo', + 41430 : 'Lo', + 41431 : 'Lo', + 41432 : 'Lo', + 41433 : 'Lo', + 41434 : 'Lo', + 41435 : 'Lo', + 41436 : 'Lo', + 41437 : 'Lo', + 41438 : 'Lo', + 41439 : 'Lo', + 41440 : 'Lo', + 41441 : 'Lo', + 41442 : 'Lo', + 41443 : 'Lo', + 41444 : 'Lo', + 41445 : 'Lo', + 41446 : 'Lo', + 41447 : 'Lo', + 41448 : 'Lo', + 41449 : 'Lo', + 41450 : 'Lo', + 41451 : 'Lo', + 41452 : 'Lo', + 41453 : 'Lo', + 41454 : 'Lo', + 41455 : 'Lo', + 41456 : 'Lo', + 41457 : 'Lo', + 41458 : 'Lo', + 41459 : 'Lo', + 41460 : 'Lo', + 41461 : 'Lo', + 41462 : 'Lo', + 41463 : 'Lo', + 41464 : 'Lo', + 41465 : 'Lo', + 41466 : 'Lo', + 41467 : 'Lo', + 41468 : 'Lo', + 41469 : 'Lo', + 41470 : 'Lo', + 41471 : 'Lo', + 41472 : 'Lo', + 41473 : 'Lo', + 41474 : 'Lo', + 41475 : 'Lo', + 41476 : 'Lo', + 41477 : 'Lo', + 41478 : 'Lo', + 41479 : 'Lo', + 41480 : 'Lo', + 41481 : 'Lo', + 41482 : 'Lo', + 41483 : 'Lo', + 41484 : 'Lo', + 41485 : 'Lo', + 41486 : 'Lo', + 41487 : 'Lo', + 41488 : 'Lo', + 41489 : 'Lo', + 41490 : 'Lo', + 41491 : 'Lo', + 41492 : 'Lo', + 41493 : 'Lo', + 41494 : 'Lo', + 41495 : 'Lo', + 41496 : 'Lo', + 41497 : 'Lo', + 41498 : 'Lo', + 41499 : 'Lo', + 41500 : 'Lo', + 41501 : 'Lo', + 41502 : 'Lo', + 41503 : 'Lo', + 41504 : 'Lo', + 41505 : 'Lo', + 41506 : 'Lo', + 41507 : 'Lo', + 41508 : 'Lo', + 41509 : 'Lo', + 41510 : 'Lo', + 41511 : 'Lo', + 41512 : 'Lo', + 41513 : 'Lo', + 41514 : 'Lo', + 41515 : 'Lo', + 41516 : 'Lo', + 41517 : 'Lo', + 41518 : 'Lo', + 41519 : 'Lo', + 41520 : 'Lo', + 41521 : 'Lo', + 41522 : 'Lo', + 41523 : 'Lo', + 41524 : 'Lo', + 41525 : 'Lo', + 41526 : 'Lo', + 41527 : 'Lo', + 41528 : 'Lo', + 41529 : 'Lo', + 41530 : 'Lo', + 41531 : 'Lo', + 41532 : 'Lo', + 41533 : 'Lo', + 41534 : 'Lo', + 41535 : 'Lo', + 41536 : 'Lo', + 41537 : 'Lo', + 41538 : 'Lo', + 41539 : 'Lo', + 41540 : 'Lo', + 41541 : 'Lo', + 41542 : 'Lo', + 41543 : 'Lo', + 41544 : 'Lo', + 41545 : 'Lo', + 41546 : 'Lo', + 41547 : 'Lo', + 41548 : 'Lo', + 41549 : 'Lo', + 41550 : 'Lo', + 41551 : 'Lo', + 41552 : 'Lo', + 41553 : 'Lo', + 41554 : 'Lo', + 41555 : 'Lo', + 41556 : 'Lo', + 41557 : 'Lo', + 41558 : 'Lo', + 41559 : 'Lo', + 41560 : 'Lo', + 41561 : 'Lo', + 41562 : 'Lo', + 41563 : 'Lo', + 41564 : 'Lo', + 41565 : 'Lo', + 41566 : 'Lo', + 41567 : 'Lo', + 41568 : 'Lo', + 41569 : 'Lo', + 41570 : 'Lo', + 41571 : 'Lo', + 41572 : 'Lo', + 41573 : 'Lo', + 41574 : 'Lo', + 41575 : 'Lo', + 41576 : 'Lo', + 41577 : 'Lo', + 41578 : 'Lo', + 41579 : 'Lo', + 41580 : 'Lo', + 41581 : 'Lo', + 41582 : 'Lo', + 41583 : 'Lo', + 41584 : 'Lo', + 41585 : 'Lo', + 41586 : 'Lo', + 41587 : 'Lo', + 41588 : 'Lo', + 41589 : 'Lo', + 41590 : 'Lo', + 41591 : 'Lo', + 41592 : 'Lo', + 41593 : 'Lo', + 41594 : 'Lo', + 41595 : 'Lo', + 41596 : 'Lo', + 41597 : 'Lo', + 41598 : 'Lo', + 41599 : 'Lo', + 41600 : 'Lo', + 41601 : 'Lo', + 41602 : 'Lo', + 41603 : 'Lo', + 41604 : 'Lo', + 41605 : 'Lo', + 41606 : 'Lo', + 41607 : 'Lo', + 41608 : 'Lo', + 41609 : 'Lo', + 41610 : 'Lo', + 41611 : 'Lo', + 41612 : 'Lo', + 41613 : 'Lo', + 41614 : 'Lo', + 41615 : 'Lo', + 41616 : 'Lo', + 41617 : 'Lo', + 41618 : 'Lo', + 41619 : 'Lo', + 41620 : 'Lo', + 41621 : 'Lo', + 41622 : 'Lo', + 41623 : 'Lo', + 41624 : 'Lo', + 41625 : 'Lo', + 41626 : 'Lo', + 41627 : 'Lo', + 41628 : 'Lo', + 41629 : 'Lo', + 41630 : 'Lo', + 41631 : 'Lo', + 41632 : 'Lo', + 41633 : 'Lo', + 41634 : 'Lo', + 41635 : 'Lo', + 41636 : 'Lo', + 41637 : 'Lo', + 41638 : 'Lo', + 41639 : 'Lo', + 41640 : 'Lo', + 41641 : 'Lo', + 41642 : 'Lo', + 41643 : 'Lo', + 41644 : 'Lo', + 41645 : 'Lo', + 41646 : 'Lo', + 41647 : 'Lo', + 41648 : 'Lo', + 41649 : 'Lo', + 41650 : 'Lo', + 41651 : 'Lo', + 41652 : 'Lo', + 41653 : 'Lo', + 41654 : 'Lo', + 41655 : 'Lo', + 41656 : 'Lo', + 41657 : 'Lo', + 41658 : 'Lo', + 41659 : 'Lo', + 41660 : 'Lo', + 41661 : 'Lo', + 41662 : 'Lo', + 41663 : 'Lo', + 41664 : 'Lo', + 41665 : 'Lo', + 41666 : 'Lo', + 41667 : 'Lo', + 41668 : 'Lo', + 41669 : 'Lo', + 41670 : 'Lo', + 41671 : 'Lo', + 41672 : 'Lo', + 41673 : 'Lo', + 41674 : 'Lo', + 41675 : 'Lo', + 41676 : 'Lo', + 41677 : 'Lo', + 41678 : 'Lo', + 41679 : 'Lo', + 41680 : 'Lo', + 41681 : 'Lo', + 41682 : 'Lo', + 41683 : 'Lo', + 41684 : 'Lo', + 41685 : 'Lo', + 41686 : 'Lo', + 41687 : 'Lo', + 41688 : 'Lo', + 41689 : 'Lo', + 41690 : 'Lo', + 41691 : 'Lo', + 41692 : 'Lo', + 41693 : 'Lo', + 41694 : 'Lo', + 41695 : 'Lo', + 41696 : 'Lo', + 41697 : 'Lo', + 41698 : 'Lo', + 41699 : 'Lo', + 41700 : 'Lo', + 41701 : 'Lo', + 41702 : 'Lo', + 41703 : 'Lo', + 41704 : 'Lo', + 41705 : 'Lo', + 41706 : 'Lo', + 41707 : 'Lo', + 41708 : 'Lo', + 41709 : 'Lo', + 41710 : 'Lo', + 41711 : 'Lo', + 41712 : 'Lo', + 41713 : 'Lo', + 41714 : 'Lo', + 41715 : 'Lo', + 41716 : 'Lo', + 41717 : 'Lo', + 41718 : 'Lo', + 41719 : 'Lo', + 41720 : 'Lo', + 41721 : 'Lo', + 41722 : 'Lo', + 41723 : 'Lo', + 41724 : 'Lo', + 41725 : 'Lo', + 41726 : 'Lo', + 41727 : 'Lo', + 41728 : 'Lo', + 41729 : 'Lo', + 41730 : 'Lo', + 41731 : 'Lo', + 41732 : 'Lo', + 41733 : 'Lo', + 41734 : 'Lo', + 41735 : 'Lo', + 41736 : 'Lo', + 41737 : 'Lo', + 41738 : 'Lo', + 41739 : 'Lo', + 41740 : 'Lo', + 41741 : 'Lo', + 41742 : 'Lo', + 41743 : 'Lo', + 41744 : 'Lo', + 41745 : 'Lo', + 41746 : 'Lo', + 41747 : 'Lo', + 41748 : 'Lo', + 41749 : 'Lo', + 41750 : 'Lo', + 41751 : 'Lo', + 41752 : 'Lo', + 41753 : 'Lo', + 41754 : 'Lo', + 41755 : 'Lo', + 41756 : 'Lo', + 41757 : 'Lo', + 41758 : 'Lo', + 41759 : 'Lo', + 41760 : 'Lo', + 41761 : 'Lo', + 41762 : 'Lo', + 41763 : 'Lo', + 41764 : 'Lo', + 41765 : 'Lo', + 41766 : 'Lo', + 41767 : 'Lo', + 41768 : 'Lo', + 41769 : 'Lo', + 41770 : 'Lo', + 41771 : 'Lo', + 41772 : 'Lo', + 41773 : 'Lo', + 41774 : 'Lo', + 41775 : 'Lo', + 41776 : 'Lo', + 41777 : 'Lo', + 41778 : 'Lo', + 41779 : 'Lo', + 41780 : 'Lo', + 41781 : 'Lo', + 41782 : 'Lo', + 41783 : 'Lo', + 41784 : 'Lo', + 41785 : 'Lo', + 41786 : 'Lo', + 41787 : 'Lo', + 41788 : 'Lo', + 41789 : 'Lo', + 41790 : 'Lo', + 41791 : 'Lo', + 41792 : 'Lo', + 41793 : 'Lo', + 41794 : 'Lo', + 41795 : 'Lo', + 41796 : 'Lo', + 41797 : 'Lo', + 41798 : 'Lo', + 41799 : 'Lo', + 41800 : 'Lo', + 41801 : 'Lo', + 41802 : 'Lo', + 41803 : 'Lo', + 41804 : 'Lo', + 41805 : 'Lo', + 41806 : 'Lo', + 41807 : 'Lo', + 41808 : 'Lo', + 41809 : 'Lo', + 41810 : 'Lo', + 41811 : 'Lo', + 41812 : 'Lo', + 41813 : 'Lo', + 41814 : 'Lo', + 41815 : 'Lo', + 41816 : 'Lo', + 41817 : 'Lo', + 41818 : 'Lo', + 41819 : 'Lo', + 41820 : 'Lo', + 41821 : 'Lo', + 41822 : 'Lo', + 41823 : 'Lo', + 41824 : 'Lo', + 41825 : 'Lo', + 41826 : 'Lo', + 41827 : 'Lo', + 41828 : 'Lo', + 41829 : 'Lo', + 41830 : 'Lo', + 41831 : 'Lo', + 41832 : 'Lo', + 41833 : 'Lo', + 41834 : 'Lo', + 41835 : 'Lo', + 41836 : 'Lo', + 41837 : 'Lo', + 41838 : 'Lo', + 41839 : 'Lo', + 41840 : 'Lo', + 41841 : 'Lo', + 41842 : 'Lo', + 41843 : 'Lo', + 41844 : 'Lo', + 41845 : 'Lo', + 41846 : 'Lo', + 41847 : 'Lo', + 41848 : 'Lo', + 41849 : 'Lo', + 41850 : 'Lo', + 41851 : 'Lo', + 41852 : 'Lo', + 41853 : 'Lo', + 41854 : 'Lo', + 41855 : 'Lo', + 41856 : 'Lo', + 41857 : 'Lo', + 41858 : 'Lo', + 41859 : 'Lo', + 41860 : 'Lo', + 41861 : 'Lo', + 41862 : 'Lo', + 41863 : 'Lo', + 41864 : 'Lo', + 41865 : 'Lo', + 41866 : 'Lo', + 41867 : 'Lo', + 41868 : 'Lo', + 41869 : 'Lo', + 41870 : 'Lo', + 41871 : 'Lo', + 41872 : 'Lo', + 41873 : 'Lo', + 41874 : 'Lo', + 41875 : 'Lo', + 41876 : 'Lo', + 41877 : 'Lo', + 41878 : 'Lo', + 41879 : 'Lo', + 41880 : 'Lo', + 41881 : 'Lo', + 41882 : 'Lo', + 41883 : 'Lo', + 41884 : 'Lo', + 41885 : 'Lo', + 41886 : 'Lo', + 41887 : 'Lo', + 41888 : 'Lo', + 41889 : 'Lo', + 41890 : 'Lo', + 41891 : 'Lo', + 41892 : 'Lo', + 41893 : 'Lo', + 41894 : 'Lo', + 41895 : 'Lo', + 41896 : 'Lo', + 41897 : 'Lo', + 41898 : 'Lo', + 41899 : 'Lo', + 41900 : 'Lo', + 41901 : 'Lo', + 41902 : 'Lo', + 41903 : 'Lo', + 41904 : 'Lo', + 41905 : 'Lo', + 41906 : 'Lo', + 41907 : 'Lo', + 41908 : 'Lo', + 41909 : 'Lo', + 41910 : 'Lo', + 41911 : 'Lo', + 41912 : 'Lo', + 41913 : 'Lo', + 41914 : 'Lo', + 41915 : 'Lo', + 41916 : 'Lo', + 41917 : 'Lo', + 41918 : 'Lo', + 41919 : 'Lo', + 41920 : 'Lo', + 41921 : 'Lo', + 41922 : 'Lo', + 41923 : 'Lo', + 41924 : 'Lo', + 41925 : 'Lo', + 41926 : 'Lo', + 41927 : 'Lo', + 41928 : 'Lo', + 41929 : 'Lo', + 41930 : 'Lo', + 41931 : 'Lo', + 41932 : 'Lo', + 41933 : 'Lo', + 41934 : 'Lo', + 41935 : 'Lo', + 41936 : 'Lo', + 41937 : 'Lo', + 41938 : 'Lo', + 41939 : 'Lo', + 41940 : 'Lo', + 41941 : 'Lo', + 41942 : 'Lo', + 41943 : 'Lo', + 41944 : 'Lo', + 41945 : 'Lo', + 41946 : 'Lo', + 41947 : 'Lo', + 41948 : 'Lo', + 41949 : 'Lo', + 41950 : 'Lo', + 41951 : 'Lo', + 41952 : 'Lo', + 41953 : 'Lo', + 41954 : 'Lo', + 41955 : 'Lo', + 41956 : 'Lo', + 41957 : 'Lo', + 41958 : 'Lo', + 41959 : 'Lo', + 41960 : 'Lo', + 41961 : 'Lo', + 41962 : 'Lo', + 41963 : 'Lo', + 41964 : 'Lo', + 41965 : 'Lo', + 41966 : 'Lo', + 41967 : 'Lo', + 41968 : 'Lo', + 41969 : 'Lo', + 41970 : 'Lo', + 41971 : 'Lo', + 41972 : 'Lo', + 41973 : 'Lo', + 41974 : 'Lo', + 41975 : 'Lo', + 41976 : 'Lo', + 41977 : 'Lo', + 41978 : 'Lo', + 41979 : 'Lo', + 41980 : 'Lo', + 41981 : 'Lo', + 41982 : 'Lo', + 41983 : 'Lo', + 41984 : 'Lo', + 41985 : 'Lo', + 41986 : 'Lo', + 41987 : 'Lo', + 41988 : 'Lo', + 41989 : 'Lo', + 41990 : 'Lo', + 41991 : 'Lo', + 41992 : 'Lo', + 41993 : 'Lo', + 41994 : 'Lo', + 41995 : 'Lo', + 41996 : 'Lo', + 41997 : 'Lo', + 41998 : 'Lo', + 41999 : 'Lo', + 42000 : 'Lo', + 42001 : 'Lo', + 42002 : 'Lo', + 42003 : 'Lo', + 42004 : 'Lo', + 42005 : 'Lo', + 42006 : 'Lo', + 42007 : 'Lo', + 42008 : 'Lo', + 42009 : 'Lo', + 42010 : 'Lo', + 42011 : 'Lo', + 42012 : 'Lo', + 42013 : 'Lo', + 42014 : 'Lo', + 42015 : 'Lo', + 42016 : 'Lo', + 42017 : 'Lo', + 42018 : 'Lo', + 42019 : 'Lo', + 42020 : 'Lo', + 42021 : 'Lo', + 42022 : 'Lo', + 42023 : 'Lo', + 42024 : 'Lo', + 42025 : 'Lo', + 42026 : 'Lo', + 42027 : 'Lo', + 42028 : 'Lo', + 42029 : 'Lo', + 42030 : 'Lo', + 42031 : 'Lo', + 42032 : 'Lo', + 42033 : 'Lo', + 42034 : 'Lo', + 42035 : 'Lo', + 42036 : 'Lo', + 42037 : 'Lo', + 42038 : 'Lo', + 42039 : 'Lo', + 42040 : 'Lo', + 42041 : 'Lo', + 42042 : 'Lo', + 42043 : 'Lo', + 42044 : 'Lo', + 42045 : 'Lo', + 42046 : 'Lo', + 42047 : 'Lo', + 42048 : 'Lo', + 42049 : 'Lo', + 42050 : 'Lo', + 42051 : 'Lo', + 42052 : 'Lo', + 42053 : 'Lo', + 42054 : 'Lo', + 42055 : 'Lo', + 42056 : 'Lo', + 42057 : 'Lo', + 42058 : 'Lo', + 42059 : 'Lo', + 42060 : 'Lo', + 42061 : 'Lo', + 42062 : 'Lo', + 42063 : 'Lo', + 42064 : 'Lo', + 42065 : 'Lo', + 42066 : 'Lo', + 42067 : 'Lo', + 42068 : 'Lo', + 42069 : 'Lo', + 42070 : 'Lo', + 42071 : 'Lo', + 42072 : 'Lo', + 42073 : 'Lo', + 42074 : 'Lo', + 42075 : 'Lo', + 42076 : 'Lo', + 42077 : 'Lo', + 42078 : 'Lo', + 42079 : 'Lo', + 42080 : 'Lo', + 42081 : 'Lo', + 42082 : 'Lo', + 42083 : 'Lo', + 42084 : 'Lo', + 42085 : 'Lo', + 42086 : 'Lo', + 42087 : 'Lo', + 42088 : 'Lo', + 42089 : 'Lo', + 42090 : 'Lo', + 42091 : 'Lo', + 42092 : 'Lo', + 42093 : 'Lo', + 42094 : 'Lo', + 42095 : 'Lo', + 42096 : 'Lo', + 42097 : 'Lo', + 42098 : 'Lo', + 42099 : 'Lo', + 42100 : 'Lo', + 42101 : 'Lo', + 42102 : 'Lo', + 42103 : 'Lo', + 42104 : 'Lo', + 42105 : 'Lo', + 42106 : 'Lo', + 42107 : 'Lo', + 42108 : 'Lo', + 42109 : 'Lo', + 42110 : 'Lo', + 42111 : 'Lo', + 42112 : 'Lo', + 42113 : 'Lo', + 42114 : 'Lo', + 42115 : 'Lo', + 42116 : 'Lo', + 42117 : 'Lo', + 42118 : 'Lo', + 42119 : 'Lo', + 42120 : 'Lo', + 42121 : 'Lo', + 42122 : 'Lo', + 42123 : 'Lo', + 42124 : 'Lo', + 42128 : 'So', + 42129 : 'So', + 42130 : 'So', + 42131 : 'So', + 42132 : 'So', + 42133 : 'So', + 42134 : 'So', + 42135 : 'So', + 42136 : 'So', + 42137 : 'So', + 42138 : 'So', + 42139 : 'So', + 42140 : 'So', + 42141 : 'So', + 42142 : 'So', + 42143 : 'So', + 42144 : 'So', + 42145 : 'So', + 42146 : 'So', + 42147 : 'So', + 42148 : 'So', + 42149 : 'So', + 42150 : 'So', + 42151 : 'So', + 42152 : 'So', + 42153 : 'So', + 42154 : 'So', + 42155 : 'So', + 42156 : 'So', + 42157 : 'So', + 42158 : 'So', + 42159 : 'So', + 42160 : 'So', + 42161 : 'So', + 42162 : 'So', + 42163 : 'So', + 42164 : 'So', + 42165 : 'So', + 42166 : 'So', + 42167 : 'So', + 42168 : 'So', + 42169 : 'So', + 42170 : 'So', + 42171 : 'So', + 42172 : 'So', + 42173 : 'So', + 42174 : 'So', + 42175 : 'So', + 42176 : 'So', + 42177 : 'So', + 42178 : 'So', + 42179 : 'So', + 42180 : 'So', + 42181 : 'So', + 42182 : 'So', + 44032 : 'Lo', + 55203 : 'Lo', + 55296 : 'Cs', + 56191 : 'Cs', + 56192 : 'Cs', + 56319 : 'Cs', + 56320 : 'Cs', + 57343 : 'Cs', + 57344 : 'Co', + 63743 : 'Co', + 63744 : 'Lo', + 63745 : 'Lo', + 63746 : 'Lo', + 63747 : 'Lo', + 63748 : 'Lo', + 63749 : 'Lo', + 63750 : 'Lo', + 63751 : 'Lo', + 63752 : 'Lo', + 63753 : 'Lo', + 63754 : 'Lo', + 63755 : 'Lo', + 63756 : 'Lo', + 63757 : 'Lo', + 63758 : 'Lo', + 63759 : 'Lo', + 63760 : 'Lo', + 63761 : 'Lo', + 63762 : 'Lo', + 63763 : 'Lo', + 63764 : 'Lo', + 63765 : 'Lo', + 63766 : 'Lo', + 63767 : 'Lo', + 63768 : 'Lo', + 63769 : 'Lo', + 63770 : 'Lo', + 63771 : 'Lo', + 63772 : 'Lo', + 63773 : 'Lo', + 63774 : 'Lo', + 63775 : 'Lo', + 63776 : 'Lo', + 63777 : 'Lo', + 63778 : 'Lo', + 63779 : 'Lo', + 63780 : 'Lo', + 63781 : 'Lo', + 63782 : 'Lo', + 63783 : 'Lo', + 63784 : 'Lo', + 63785 : 'Lo', + 63786 : 'Lo', + 63787 : 'Lo', + 63788 : 'Lo', + 63789 : 'Lo', + 63790 : 'Lo', + 63791 : 'Lo', + 63792 : 'Lo', + 63793 : 'Lo', + 63794 : 'Lo', + 63795 : 'Lo', + 63796 : 'Lo', + 63797 : 'Lo', + 63798 : 'Lo', + 63799 : 'Lo', + 63800 : 'Lo', + 63801 : 'Lo', + 63802 : 'Lo', + 63803 : 'Lo', + 63804 : 'Lo', + 63805 : 'Lo', + 63806 : 'Lo', + 63807 : 'Lo', + 63808 : 'Lo', + 63809 : 'Lo', + 63810 : 'Lo', + 63811 : 'Lo', + 63812 : 'Lo', + 63813 : 'Lo', + 63814 : 'Lo', + 63815 : 'Lo', + 63816 : 'Lo', + 63817 : 'Lo', + 63818 : 'Lo', + 63819 : 'Lo', + 63820 : 'Lo', + 63821 : 'Lo', + 63822 : 'Lo', + 63823 : 'Lo', + 63824 : 'Lo', + 63825 : 'Lo', + 63826 : 'Lo', + 63827 : 'Lo', + 63828 : 'Lo', + 63829 : 'Lo', + 63830 : 'Lo', + 63831 : 'Lo', + 63832 : 'Lo', + 63833 : 'Lo', + 63834 : 'Lo', + 63835 : 'Lo', + 63836 : 'Lo', + 63837 : 'Lo', + 63838 : 'Lo', + 63839 : 'Lo', + 63840 : 'Lo', + 63841 : 'Lo', + 63842 : 'Lo', + 63843 : 'Lo', + 63844 : 'Lo', + 63845 : 'Lo', + 63846 : 'Lo', + 63847 : 'Lo', + 63848 : 'Lo', + 63849 : 'Lo', + 63850 : 'Lo', + 63851 : 'Lo', + 63852 : 'Lo', + 63853 : 'Lo', + 63854 : 'Lo', + 63855 : 'Lo', + 63856 : 'Lo', + 63857 : 'Lo', + 63858 : 'Lo', + 63859 : 'Lo', + 63860 : 'Lo', + 63861 : 'Lo', + 63862 : 'Lo', + 63863 : 'Lo', + 63864 : 'Lo', + 63865 : 'Lo', + 63866 : 'Lo', + 63867 : 'Lo', + 63868 : 'Lo', + 63869 : 'Lo', + 63870 : 'Lo', + 63871 : 'Lo', + 63872 : 'Lo', + 63873 : 'Lo', + 63874 : 'Lo', + 63875 : 'Lo', + 63876 : 'Lo', + 63877 : 'Lo', + 63878 : 'Lo', + 63879 : 'Lo', + 63880 : 'Lo', + 63881 : 'Lo', + 63882 : 'Lo', + 63883 : 'Lo', + 63884 : 'Lo', + 63885 : 'Lo', + 63886 : 'Lo', + 63887 : 'Lo', + 63888 : 'Lo', + 63889 : 'Lo', + 63890 : 'Lo', + 63891 : 'Lo', + 63892 : 'Lo', + 63893 : 'Lo', + 63894 : 'Lo', + 63895 : 'Lo', + 63896 : 'Lo', + 63897 : 'Lo', + 63898 : 'Lo', + 63899 : 'Lo', + 63900 : 'Lo', + 63901 : 'Lo', + 63902 : 'Lo', + 63903 : 'Lo', + 63904 : 'Lo', + 63905 : 'Lo', + 63906 : 'Lo', + 63907 : 'Lo', + 63908 : 'Lo', + 63909 : 'Lo', + 63910 : 'Lo', + 63911 : 'Lo', + 63912 : 'Lo', + 63913 : 'Lo', + 63914 : 'Lo', + 63915 : 'Lo', + 63916 : 'Lo', + 63917 : 'Lo', + 63918 : 'Lo', + 63919 : 'Lo', + 63920 : 'Lo', + 63921 : 'Lo', + 63922 : 'Lo', + 63923 : 'Lo', + 63924 : 'Lo', + 63925 : 'Lo', + 63926 : 'Lo', + 63927 : 'Lo', + 63928 : 'Lo', + 63929 : 'Lo', + 63930 : 'Lo', + 63931 : 'Lo', + 63932 : 'Lo', + 63933 : 'Lo', + 63934 : 'Lo', + 63935 : 'Lo', + 63936 : 'Lo', + 63937 : 'Lo', + 63938 : 'Lo', + 63939 : 'Lo', + 63940 : 'Lo', + 63941 : 'Lo', + 63942 : 'Lo', + 63943 : 'Lo', + 63944 : 'Lo', + 63945 : 'Lo', + 63946 : 'Lo', + 63947 : 'Lo', + 63948 : 'Lo', + 63949 : 'Lo', + 63950 : 'Lo', + 63951 : 'Lo', + 63952 : 'Lo', + 63953 : 'Lo', + 63954 : 'Lo', + 63955 : 'Lo', + 63956 : 'Lo', + 63957 : 'Lo', + 63958 : 'Lo', + 63959 : 'Lo', + 63960 : 'Lo', + 63961 : 'Lo', + 63962 : 'Lo', + 63963 : 'Lo', + 63964 : 'Lo', + 63965 : 'Lo', + 63966 : 'Lo', + 63967 : 'Lo', + 63968 : 'Lo', + 63969 : 'Lo', + 63970 : 'Lo', + 63971 : 'Lo', + 63972 : 'Lo', + 63973 : 'Lo', + 63974 : 'Lo', + 63975 : 'Lo', + 63976 : 'Lo', + 63977 : 'Lo', + 63978 : 'Lo', + 63979 : 'Lo', + 63980 : 'Lo', + 63981 : 'Lo', + 63982 : 'Lo', + 63983 : 'Lo', + 63984 : 'Lo', + 63985 : 'Lo', + 63986 : 'Lo', + 63987 : 'Lo', + 63988 : 'Lo', + 63989 : 'Lo', + 63990 : 'Lo', + 63991 : 'Lo', + 63992 : 'Lo', + 63993 : 'Lo', + 63994 : 'Lo', + 63995 : 'Lo', + 63996 : 'Lo', + 63997 : 'Lo', + 63998 : 'Lo', + 63999 : 'Lo', + 64000 : 'Lo', + 64001 : 'Lo', + 64002 : 'Lo', + 64003 : 'Lo', + 64004 : 'Lo', + 64005 : 'Lo', + 64006 : 'Lo', + 64007 : 'Lo', + 64008 : 'Lo', + 64009 : 'Lo', + 64010 : 'Lo', + 64011 : 'Lo', + 64012 : 'Lo', + 64013 : 'Lo', + 64014 : 'Lo', + 64015 : 'Lo', + 64016 : 'Lo', + 64017 : 'Lo', + 64018 : 'Lo', + 64019 : 'Lo', + 64020 : 'Lo', + 64021 : 'Lo', + 64022 : 'Lo', + 64023 : 'Lo', + 64024 : 'Lo', + 64025 : 'Lo', + 64026 : 'Lo', + 64027 : 'Lo', + 64028 : 'Lo', + 64029 : 'Lo', + 64030 : 'Lo', + 64031 : 'Lo', + 64032 : 'Lo', + 64033 : 'Lo', + 64034 : 'Lo', + 64035 : 'Lo', + 64036 : 'Lo', + 64037 : 'Lo', + 64038 : 'Lo', + 64039 : 'Lo', + 64040 : 'Lo', + 64041 : 'Lo', + 64042 : 'Lo', + 64043 : 'Lo', + 64044 : 'Lo', + 64045 : 'Lo', + 64048 : 'Lo', + 64049 : 'Lo', + 64050 : 'Lo', + 64051 : 'Lo', + 64052 : 'Lo', + 64053 : 'Lo', + 64054 : 'Lo', + 64055 : 'Lo', + 64056 : 'Lo', + 64057 : 'Lo', + 64058 : 'Lo', + 64059 : 'Lo', + 64060 : 'Lo', + 64061 : 'Lo', + 64062 : 'Lo', + 64063 : 'Lo', + 64064 : 'Lo', + 64065 : 'Lo', + 64066 : 'Lo', + 64067 : 'Lo', + 64068 : 'Lo', + 64069 : 'Lo', + 64070 : 'Lo', + 64071 : 'Lo', + 64072 : 'Lo', + 64073 : 'Lo', + 64074 : 'Lo', + 64075 : 'Lo', + 64076 : 'Lo', + 64077 : 'Lo', + 64078 : 'Lo', + 64079 : 'Lo', + 64080 : 'Lo', + 64081 : 'Lo', + 64082 : 'Lo', + 64083 : 'Lo', + 64084 : 'Lo', + 64085 : 'Lo', + 64086 : 'Lo', + 64087 : 'Lo', + 64088 : 'Lo', + 64089 : 'Lo', + 64090 : 'Lo', + 64091 : 'Lo', + 64092 : 'Lo', + 64093 : 'Lo', + 64094 : 'Lo', + 64095 : 'Lo', + 64096 : 'Lo', + 64097 : 'Lo', + 64098 : 'Lo', + 64099 : 'Lo', + 64100 : 'Lo', + 64101 : 'Lo', + 64102 : 'Lo', + 64103 : 'Lo', + 64104 : 'Lo', + 64105 : 'Lo', + 64106 : 'Lo', + 64256 : 'Ll', + 64257 : 'Ll', + 64258 : 'Ll', + 64259 : 'Ll', + 64260 : 'Ll', + 64261 : 'Ll', + 64262 : 'Ll', + 64275 : 'Ll', + 64276 : 'Ll', + 64277 : 'Ll', + 64278 : 'Ll', + 64279 : 'Ll', + 64285 : 'Lo', + 64286 : 'Mn', + 64287 : 'Lo', + 64288 : 'Lo', + 64289 : 'Lo', + 64290 : 'Lo', + 64291 : 'Lo', + 64292 : 'Lo', + 64293 : 'Lo', + 64294 : 'Lo', + 64295 : 'Lo', + 64296 : 'Lo', + 64297 : 'Sm', + 64298 : 'Lo', + 64299 : 'Lo', + 64300 : 'Lo', + 64301 : 'Lo', + 64302 : 'Lo', + 64303 : 'Lo', + 64304 : 'Lo', + 64305 : 'Lo', + 64306 : 'Lo', + 64307 : 'Lo', + 64308 : 'Lo', + 64309 : 'Lo', + 64310 : 'Lo', + 64312 : 'Lo', + 64313 : 'Lo', + 64314 : 'Lo', + 64315 : 'Lo', + 64316 : 'Lo', + 64318 : 'Lo', + 64320 : 'Lo', + 64321 : 'Lo', + 64323 : 'Lo', + 64324 : 'Lo', + 64326 : 'Lo', + 64327 : 'Lo', + 64328 : 'Lo', + 64329 : 'Lo', + 64330 : 'Lo', + 64331 : 'Lo', + 64332 : 'Lo', + 64333 : 'Lo', + 64334 : 'Lo', + 64335 : 'Lo', + 64336 : 'Lo', + 64337 : 'Lo', + 64338 : 'Lo', + 64339 : 'Lo', + 64340 : 'Lo', + 64341 : 'Lo', + 64342 : 'Lo', + 64343 : 'Lo', + 64344 : 'Lo', + 64345 : 'Lo', + 64346 : 'Lo', + 64347 : 'Lo', + 64348 : 'Lo', + 64349 : 'Lo', + 64350 : 'Lo', + 64351 : 'Lo', + 64352 : 'Lo', + 64353 : 'Lo', + 64354 : 'Lo', + 64355 : 'Lo', + 64356 : 'Lo', + 64357 : 'Lo', + 64358 : 'Lo', + 64359 : 'Lo', + 64360 : 'Lo', + 64361 : 'Lo', + 64362 : 'Lo', + 64363 : 'Lo', + 64364 : 'Lo', + 64365 : 'Lo', + 64366 : 'Lo', + 64367 : 'Lo', + 64368 : 'Lo', + 64369 : 'Lo', + 64370 : 'Lo', + 64371 : 'Lo', + 64372 : 'Lo', + 64373 : 'Lo', + 64374 : 'Lo', + 64375 : 'Lo', + 64376 : 'Lo', + 64377 : 'Lo', + 64378 : 'Lo', + 64379 : 'Lo', + 64380 : 'Lo', + 64381 : 'Lo', + 64382 : 'Lo', + 64383 : 'Lo', + 64384 : 'Lo', + 64385 : 'Lo', + 64386 : 'Lo', + 64387 : 'Lo', + 64388 : 'Lo', + 64389 : 'Lo', + 64390 : 'Lo', + 64391 : 'Lo', + 64392 : 'Lo', + 64393 : 'Lo', + 64394 : 'Lo', + 64395 : 'Lo', + 64396 : 'Lo', + 64397 : 'Lo', + 64398 : 'Lo', + 64399 : 'Lo', + 64400 : 'Lo', + 64401 : 'Lo', + 64402 : 'Lo', + 64403 : 'Lo', + 64404 : 'Lo', + 64405 : 'Lo', + 64406 : 'Lo', + 64407 : 'Lo', + 64408 : 'Lo', + 64409 : 'Lo', + 64410 : 'Lo', + 64411 : 'Lo', + 64412 : 'Lo', + 64413 : 'Lo', + 64414 : 'Lo', + 64415 : 'Lo', + 64416 : 'Lo', + 64417 : 'Lo', + 64418 : 'Lo', + 64419 : 'Lo', + 64420 : 'Lo', + 64421 : 'Lo', + 64422 : 'Lo', + 64423 : 'Lo', + 64424 : 'Lo', + 64425 : 'Lo', + 64426 : 'Lo', + 64427 : 'Lo', + 64428 : 'Lo', + 64429 : 'Lo', + 64430 : 'Lo', + 64431 : 'Lo', + 64432 : 'Lo', + 64433 : 'Lo', + 64467 : 'Lo', + 64468 : 'Lo', + 64469 : 'Lo', + 64470 : 'Lo', + 64471 : 'Lo', + 64472 : 'Lo', + 64473 : 'Lo', + 64474 : 'Lo', + 64475 : 'Lo', + 64476 : 'Lo', + 64477 : 'Lo', + 64478 : 'Lo', + 64479 : 'Lo', + 64480 : 'Lo', + 64481 : 'Lo', + 64482 : 'Lo', + 64483 : 'Lo', + 64484 : 'Lo', + 64485 : 'Lo', + 64486 : 'Lo', + 64487 : 'Lo', + 64488 : 'Lo', + 64489 : 'Lo', + 64490 : 'Lo', + 64491 : 'Lo', + 64492 : 'Lo', + 64493 : 'Lo', + 64494 : 'Lo', + 64495 : 'Lo', + 64496 : 'Lo', + 64497 : 'Lo', + 64498 : 'Lo', + 64499 : 'Lo', + 64500 : 'Lo', + 64501 : 'Lo', + 64502 : 'Lo', + 64503 : 'Lo', + 64504 : 'Lo', + 64505 : 'Lo', + 64506 : 'Lo', + 64507 : 'Lo', + 64508 : 'Lo', + 64509 : 'Lo', + 64510 : 'Lo', + 64511 : 'Lo', + 64512 : 'Lo', + 64513 : 'Lo', + 64514 : 'Lo', + 64515 : 'Lo', + 64516 : 'Lo', + 64517 : 'Lo', + 64518 : 'Lo', + 64519 : 'Lo', + 64520 : 'Lo', + 64521 : 'Lo', + 64522 : 'Lo', + 64523 : 'Lo', + 64524 : 'Lo', + 64525 : 'Lo', + 64526 : 'Lo', + 64527 : 'Lo', + 64528 : 'Lo', + 64529 : 'Lo', + 64530 : 'Lo', + 64531 : 'Lo', + 64532 : 'Lo', + 64533 : 'Lo', + 64534 : 'Lo', + 64535 : 'Lo', + 64536 : 'Lo', + 64537 : 'Lo', + 64538 : 'Lo', + 64539 : 'Lo', + 64540 : 'Lo', + 64541 : 'Lo', + 64542 : 'Lo', + 64543 : 'Lo', + 64544 : 'Lo', + 64545 : 'Lo', + 64546 : 'Lo', + 64547 : 'Lo', + 64548 : 'Lo', + 64549 : 'Lo', + 64550 : 'Lo', + 64551 : 'Lo', + 64552 : 'Lo', + 64553 : 'Lo', + 64554 : 'Lo', + 64555 : 'Lo', + 64556 : 'Lo', + 64557 : 'Lo', + 64558 : 'Lo', + 64559 : 'Lo', + 64560 : 'Lo', + 64561 : 'Lo', + 64562 : 'Lo', + 64563 : 'Lo', + 64564 : 'Lo', + 64565 : 'Lo', + 64566 : 'Lo', + 64567 : 'Lo', + 64568 : 'Lo', + 64569 : 'Lo', + 64570 : 'Lo', + 64571 : 'Lo', + 64572 : 'Lo', + 64573 : 'Lo', + 64574 : 'Lo', + 64575 : 'Lo', + 64576 : 'Lo', + 64577 : 'Lo', + 64578 : 'Lo', + 64579 : 'Lo', + 64580 : 'Lo', + 64581 : 'Lo', + 64582 : 'Lo', + 64583 : 'Lo', + 64584 : 'Lo', + 64585 : 'Lo', + 64586 : 'Lo', + 64587 : 'Lo', + 64588 : 'Lo', + 64589 : 'Lo', + 64590 : 'Lo', + 64591 : 'Lo', + 64592 : 'Lo', + 64593 : 'Lo', + 64594 : 'Lo', + 64595 : 'Lo', + 64596 : 'Lo', + 64597 : 'Lo', + 64598 : 'Lo', + 64599 : 'Lo', + 64600 : 'Lo', + 64601 : 'Lo', + 64602 : 'Lo', + 64603 : 'Lo', + 64604 : 'Lo', + 64605 : 'Lo', + 64606 : 'Lo', + 64607 : 'Lo', + 64608 : 'Lo', + 64609 : 'Lo', + 64610 : 'Lo', + 64611 : 'Lo', + 64612 : 'Lo', + 64613 : 'Lo', + 64614 : 'Lo', + 64615 : 'Lo', + 64616 : 'Lo', + 64617 : 'Lo', + 64618 : 'Lo', + 64619 : 'Lo', + 64620 : 'Lo', + 64621 : 'Lo', + 64622 : 'Lo', + 64623 : 'Lo', + 64624 : 'Lo', + 64625 : 'Lo', + 64626 : 'Lo', + 64627 : 'Lo', + 64628 : 'Lo', + 64629 : 'Lo', + 64630 : 'Lo', + 64631 : 'Lo', + 64632 : 'Lo', + 64633 : 'Lo', + 64634 : 'Lo', + 64635 : 'Lo', + 64636 : 'Lo', + 64637 : 'Lo', + 64638 : 'Lo', + 64639 : 'Lo', + 64640 : 'Lo', + 64641 : 'Lo', + 64642 : 'Lo', + 64643 : 'Lo', + 64644 : 'Lo', + 64645 : 'Lo', + 64646 : 'Lo', + 64647 : 'Lo', + 64648 : 'Lo', + 64649 : 'Lo', + 64650 : 'Lo', + 64651 : 'Lo', + 64652 : 'Lo', + 64653 : 'Lo', + 64654 : 'Lo', + 64655 : 'Lo', + 64656 : 'Lo', + 64657 : 'Lo', + 64658 : 'Lo', + 64659 : 'Lo', + 64660 : 'Lo', + 64661 : 'Lo', + 64662 : 'Lo', + 64663 : 'Lo', + 64664 : 'Lo', + 64665 : 'Lo', + 64666 : 'Lo', + 64667 : 'Lo', + 64668 : 'Lo', + 64669 : 'Lo', + 64670 : 'Lo', + 64671 : 'Lo', + 64672 : 'Lo', + 64673 : 'Lo', + 64674 : 'Lo', + 64675 : 'Lo', + 64676 : 'Lo', + 64677 : 'Lo', + 64678 : 'Lo', + 64679 : 'Lo', + 64680 : 'Lo', + 64681 : 'Lo', + 64682 : 'Lo', + 64683 : 'Lo', + 64684 : 'Lo', + 64685 : 'Lo', + 64686 : 'Lo', + 64687 : 'Lo', + 64688 : 'Lo', + 64689 : 'Lo', + 64690 : 'Lo', + 64691 : 'Lo', + 64692 : 'Lo', + 64693 : 'Lo', + 64694 : 'Lo', + 64695 : 'Lo', + 64696 : 'Lo', + 64697 : 'Lo', + 64698 : 'Lo', + 64699 : 'Lo', + 64700 : 'Lo', + 64701 : 'Lo', + 64702 : 'Lo', + 64703 : 'Lo', + 64704 : 'Lo', + 64705 : 'Lo', + 64706 : 'Lo', + 64707 : 'Lo', + 64708 : 'Lo', + 64709 : 'Lo', + 64710 : 'Lo', + 64711 : 'Lo', + 64712 : 'Lo', + 64713 : 'Lo', + 64714 : 'Lo', + 64715 : 'Lo', + 64716 : 'Lo', + 64717 : 'Lo', + 64718 : 'Lo', + 64719 : 'Lo', + 64720 : 'Lo', + 64721 : 'Lo', + 64722 : 'Lo', + 64723 : 'Lo', + 64724 : 'Lo', + 64725 : 'Lo', + 64726 : 'Lo', + 64727 : 'Lo', + 64728 : 'Lo', + 64729 : 'Lo', + 64730 : 'Lo', + 64731 : 'Lo', + 64732 : 'Lo', + 64733 : 'Lo', + 64734 : 'Lo', + 64735 : 'Lo', + 64736 : 'Lo', + 64737 : 'Lo', + 64738 : 'Lo', + 64739 : 'Lo', + 64740 : 'Lo', + 64741 : 'Lo', + 64742 : 'Lo', + 64743 : 'Lo', + 64744 : 'Lo', + 64745 : 'Lo', + 64746 : 'Lo', + 64747 : 'Lo', + 64748 : 'Lo', + 64749 : 'Lo', + 64750 : 'Lo', + 64751 : 'Lo', + 64752 : 'Lo', + 64753 : 'Lo', + 64754 : 'Lo', + 64755 : 'Lo', + 64756 : 'Lo', + 64757 : 'Lo', + 64758 : 'Lo', + 64759 : 'Lo', + 64760 : 'Lo', + 64761 : 'Lo', + 64762 : 'Lo', + 64763 : 'Lo', + 64764 : 'Lo', + 64765 : 'Lo', + 64766 : 'Lo', + 64767 : 'Lo', + 64768 : 'Lo', + 64769 : 'Lo', + 64770 : 'Lo', + 64771 : 'Lo', + 64772 : 'Lo', + 64773 : 'Lo', + 64774 : 'Lo', + 64775 : 'Lo', + 64776 : 'Lo', + 64777 : 'Lo', + 64778 : 'Lo', + 64779 : 'Lo', + 64780 : 'Lo', + 64781 : 'Lo', + 64782 : 'Lo', + 64783 : 'Lo', + 64784 : 'Lo', + 64785 : 'Lo', + 64786 : 'Lo', + 64787 : 'Lo', + 64788 : 'Lo', + 64789 : 'Lo', + 64790 : 'Lo', + 64791 : 'Lo', + 64792 : 'Lo', + 64793 : 'Lo', + 64794 : 'Lo', + 64795 : 'Lo', + 64796 : 'Lo', + 64797 : 'Lo', + 64798 : 'Lo', + 64799 : 'Lo', + 64800 : 'Lo', + 64801 : 'Lo', + 64802 : 'Lo', + 64803 : 'Lo', + 64804 : 'Lo', + 64805 : 'Lo', + 64806 : 'Lo', + 64807 : 'Lo', + 64808 : 'Lo', + 64809 : 'Lo', + 64810 : 'Lo', + 64811 : 'Lo', + 64812 : 'Lo', + 64813 : 'Lo', + 64814 : 'Lo', + 64815 : 'Lo', + 64816 : 'Lo', + 64817 : 'Lo', + 64818 : 'Lo', + 64819 : 'Lo', + 64820 : 'Lo', + 64821 : 'Lo', + 64822 : 'Lo', + 64823 : 'Lo', + 64824 : 'Lo', + 64825 : 'Lo', + 64826 : 'Lo', + 64827 : 'Lo', + 64828 : 'Lo', + 64829 : 'Lo', + 64830 : 'Ps', + 64831 : 'Pe', + 64848 : 'Lo', + 64849 : 'Lo', + 64850 : 'Lo', + 64851 : 'Lo', + 64852 : 'Lo', + 64853 : 'Lo', + 64854 : 'Lo', + 64855 : 'Lo', + 64856 : 'Lo', + 64857 : 'Lo', + 64858 : 'Lo', + 64859 : 'Lo', + 64860 : 'Lo', + 64861 : 'Lo', + 64862 : 'Lo', + 64863 : 'Lo', + 64864 : 'Lo', + 64865 : 'Lo', + 64866 : 'Lo', + 64867 : 'Lo', + 64868 : 'Lo', + 64869 : 'Lo', + 64870 : 'Lo', + 64871 : 'Lo', + 64872 : 'Lo', + 64873 : 'Lo', + 64874 : 'Lo', + 64875 : 'Lo', + 64876 : 'Lo', + 64877 : 'Lo', + 64878 : 'Lo', + 64879 : 'Lo', + 64880 : 'Lo', + 64881 : 'Lo', + 64882 : 'Lo', + 64883 : 'Lo', + 64884 : 'Lo', + 64885 : 'Lo', + 64886 : 'Lo', + 64887 : 'Lo', + 64888 : 'Lo', + 64889 : 'Lo', + 64890 : 'Lo', + 64891 : 'Lo', + 64892 : 'Lo', + 64893 : 'Lo', + 64894 : 'Lo', + 64895 : 'Lo', + 64896 : 'Lo', + 64897 : 'Lo', + 64898 : 'Lo', + 64899 : 'Lo', + 64900 : 'Lo', + 64901 : 'Lo', + 64902 : 'Lo', + 64903 : 'Lo', + 64904 : 'Lo', + 64905 : 'Lo', + 64906 : 'Lo', + 64907 : 'Lo', + 64908 : 'Lo', + 64909 : 'Lo', + 64910 : 'Lo', + 64911 : 'Lo', + 64914 : 'Lo', + 64915 : 'Lo', + 64916 : 'Lo', + 64917 : 'Lo', + 64918 : 'Lo', + 64919 : 'Lo', + 64920 : 'Lo', + 64921 : 'Lo', + 64922 : 'Lo', + 64923 : 'Lo', + 64924 : 'Lo', + 64925 : 'Lo', + 64926 : 'Lo', + 64927 : 'Lo', + 64928 : 'Lo', + 64929 : 'Lo', + 64930 : 'Lo', + 64931 : 'Lo', + 64932 : 'Lo', + 64933 : 'Lo', + 64934 : 'Lo', + 64935 : 'Lo', + 64936 : 'Lo', + 64937 : 'Lo', + 64938 : 'Lo', + 64939 : 'Lo', + 64940 : 'Lo', + 64941 : 'Lo', + 64942 : 'Lo', + 64943 : 'Lo', + 64944 : 'Lo', + 64945 : 'Lo', + 64946 : 'Lo', + 64947 : 'Lo', + 64948 : 'Lo', + 64949 : 'Lo', + 64950 : 'Lo', + 64951 : 'Lo', + 64952 : 'Lo', + 64953 : 'Lo', + 64954 : 'Lo', + 64955 : 'Lo', + 64956 : 'Lo', + 64957 : 'Lo', + 64958 : 'Lo', + 64959 : 'Lo', + 64960 : 'Lo', + 64961 : 'Lo', + 64962 : 'Lo', + 64963 : 'Lo', + 64964 : 'Lo', + 64965 : 'Lo', + 64966 : 'Lo', + 64967 : 'Lo', + 65008 : 'Lo', + 65009 : 'Lo', + 65010 : 'Lo', + 65011 : 'Lo', + 65012 : 'Lo', + 65013 : 'Lo', + 65014 : 'Lo', + 65015 : 'Lo', + 65016 : 'Lo', + 65017 : 'Lo', + 65018 : 'Lo', + 65019 : 'Lo', + 65020 : 'Sc', + 65024 : 'Mn', + 65025 : 'Mn', + 65026 : 'Mn', + 65027 : 'Mn', + 65028 : 'Mn', + 65029 : 'Mn', + 65030 : 'Mn', + 65031 : 'Mn', + 65032 : 'Mn', + 65033 : 'Mn', + 65034 : 'Mn', + 65035 : 'Mn', + 65036 : 'Mn', + 65037 : 'Mn', + 65038 : 'Mn', + 65039 : 'Mn', + 65056 : 'Mn', + 65057 : 'Mn', + 65058 : 'Mn', + 65059 : 'Mn', + 65072 : 'Po', + 65073 : 'Pd', + 65074 : 'Pd', + 65075 : 'Pc', + 65076 : 'Pc', + 65077 : 'Ps', + 65078 : 'Pe', + 65079 : 'Ps', + 65080 : 'Pe', + 65081 : 'Ps', + 65082 : 'Pe', + 65083 : 'Ps', + 65084 : 'Pe', + 65085 : 'Ps', + 65086 : 'Pe', + 65087 : 'Ps', + 65088 : 'Pe', + 65089 : 'Ps', + 65090 : 'Pe', + 65091 : 'Ps', + 65092 : 'Pe', + 65093 : 'Po', + 65094 : 'Po', + 65097 : 'Po', + 65098 : 'Po', + 65099 : 'Po', + 65100 : 'Po', + 65101 : 'Pc', + 65102 : 'Pc', + 65103 : 'Pc', + 65104 : 'Po', + 65105 : 'Po', + 65106 : 'Po', + 65108 : 'Po', + 65109 : 'Po', + 65110 : 'Po', + 65111 : 'Po', + 65112 : 'Pd', + 65113 : 'Ps', + 65114 : 'Pe', + 65115 : 'Ps', + 65116 : 'Pe', + 65117 : 'Ps', + 65118 : 'Pe', + 65119 : 'Po', + 65120 : 'Po', + 65121 : 'Po', + 65122 : 'Sm', + 65123 : 'Pd', + 65124 : 'Sm', + 65125 : 'Sm', + 65126 : 'Sm', + 65128 : 'Po', + 65129 : 'Sc', + 65130 : 'Po', + 65131 : 'Po', + 65136 : 'Lo', + 65137 : 'Lo', + 65138 : 'Lo', + 65139 : 'Lo', + 65140 : 'Lo', + 65142 : 'Lo', + 65143 : 'Lo', + 65144 : 'Lo', + 65145 : 'Lo', + 65146 : 'Lo', + 65147 : 'Lo', + 65148 : 'Lo', + 65149 : 'Lo', + 65150 : 'Lo', + 65151 : 'Lo', + 65152 : 'Lo', + 65153 : 'Lo', + 65154 : 'Lo', + 65155 : 'Lo', + 65156 : 'Lo', + 65157 : 'Lo', + 65158 : 'Lo', + 65159 : 'Lo', + 65160 : 'Lo', + 65161 : 'Lo', + 65162 : 'Lo', + 65163 : 'Lo', + 65164 : 'Lo', + 65165 : 'Lo', + 65166 : 'Lo', + 65167 : 'Lo', + 65168 : 'Lo', + 65169 : 'Lo', + 65170 : 'Lo', + 65171 : 'Lo', + 65172 : 'Lo', + 65173 : 'Lo', + 65174 : 'Lo', + 65175 : 'Lo', + 65176 : 'Lo', + 65177 : 'Lo', + 65178 : 'Lo', + 65179 : 'Lo', + 65180 : 'Lo', + 65181 : 'Lo', + 65182 : 'Lo', + 65183 : 'Lo', + 65184 : 'Lo', + 65185 : 'Lo', + 65186 : 'Lo', + 65187 : 'Lo', + 65188 : 'Lo', + 65189 : 'Lo', + 65190 : 'Lo', + 65191 : 'Lo', + 65192 : 'Lo', + 65193 : 'Lo', + 65194 : 'Lo', + 65195 : 'Lo', + 65196 : 'Lo', + 65197 : 'Lo', + 65198 : 'Lo', + 65199 : 'Lo', + 65200 : 'Lo', + 65201 : 'Lo', + 65202 : 'Lo', + 65203 : 'Lo', + 65204 : 'Lo', + 65205 : 'Lo', + 65206 : 'Lo', + 65207 : 'Lo', + 65208 : 'Lo', + 65209 : 'Lo', + 65210 : 'Lo', + 65211 : 'Lo', + 65212 : 'Lo', + 65213 : 'Lo', + 65214 : 'Lo', + 65215 : 'Lo', + 65216 : 'Lo', + 65217 : 'Lo', + 65218 : 'Lo', + 65219 : 'Lo', + 65220 : 'Lo', + 65221 : 'Lo', + 65222 : 'Lo', + 65223 : 'Lo', + 65224 : 'Lo', + 65225 : 'Lo', + 65226 : 'Lo', + 65227 : 'Lo', + 65228 : 'Lo', + 65229 : 'Lo', + 65230 : 'Lo', + 65231 : 'Lo', + 65232 : 'Lo', + 65233 : 'Lo', + 65234 : 'Lo', + 65235 : 'Lo', + 65236 : 'Lo', + 65237 : 'Lo', + 65238 : 'Lo', + 65239 : 'Lo', + 65240 : 'Lo', + 65241 : 'Lo', + 65242 : 'Lo', + 65243 : 'Lo', + 65244 : 'Lo', + 65245 : 'Lo', + 65246 : 'Lo', + 65247 : 'Lo', + 65248 : 'Lo', + 65249 : 'Lo', + 65250 : 'Lo', + 65251 : 'Lo', + 65252 : 'Lo', + 65253 : 'Lo', + 65254 : 'Lo', + 65255 : 'Lo', + 65256 : 'Lo', + 65257 : 'Lo', + 65258 : 'Lo', + 65259 : 'Lo', + 65260 : 'Lo', + 65261 : 'Lo', + 65262 : 'Lo', + 65263 : 'Lo', + 65264 : 'Lo', + 65265 : 'Lo', + 65266 : 'Lo', + 65267 : 'Lo', + 65268 : 'Lo', + 65269 : 'Lo', + 65270 : 'Lo', + 65271 : 'Lo', + 65272 : 'Lo', + 65273 : 'Lo', + 65274 : 'Lo', + 65275 : 'Lo', + 65276 : 'Lo', + 65279 : 'Cf', + 65281 : 'Po', + 65282 : 'Po', + 65283 : 'Po', + 65284 : 'Sc', + 65285 : 'Po', + 65286 : 'Po', + 65287 : 'Po', + 65288 : 'Ps', + 65289 : 'Pe', + 65290 : 'Po', + 65291 : 'Sm', + 65292 : 'Po', + 65293 : 'Pd', + 65294 : 'Po', + 65295 : 'Po', + 65296 : 'Nd', + 65297 : 'Nd', + 65298 : 'Nd', + 65299 : 'Nd', + 65300 : 'Nd', + 65301 : 'Nd', + 65302 : 'Nd', + 65303 : 'Nd', + 65304 : 'Nd', + 65305 : 'Nd', + 65306 : 'Po', + 65307 : 'Po', + 65308 : 'Sm', + 65309 : 'Sm', + 65310 : 'Sm', + 65311 : 'Po', + 65312 : 'Po', + 65313 : 'Lu', + 65314 : 'Lu', + 65315 : 'Lu', + 65316 : 'Lu', + 65317 : 'Lu', + 65318 : 'Lu', + 65319 : 'Lu', + 65320 : 'Lu', + 65321 : 'Lu', + 65322 : 'Lu', + 65323 : 'Lu', + 65324 : 'Lu', + 65325 : 'Lu', + 65326 : 'Lu', + 65327 : 'Lu', + 65328 : 'Lu', + 65329 : 'Lu', + 65330 : 'Lu', + 65331 : 'Lu', + 65332 : 'Lu', + 65333 : 'Lu', + 65334 : 'Lu', + 65335 : 'Lu', + 65336 : 'Lu', + 65337 : 'Lu', + 65338 : 'Lu', + 65339 : 'Ps', + 65340 : 'Po', + 65341 : 'Pe', + 65342 : 'Sk', + 65343 : 'Pc', + 65344 : 'Sk', + 65345 : 'Ll', + 65346 : 'Ll', + 65347 : 'Ll', + 65348 : 'Ll', + 65349 : 'Ll', + 65350 : 'Ll', + 65351 : 'Ll', + 65352 : 'Ll', + 65353 : 'Ll', + 65354 : 'Ll', + 65355 : 'Ll', + 65356 : 'Ll', + 65357 : 'Ll', + 65358 : 'Ll', + 65359 : 'Ll', + 65360 : 'Ll', + 65361 : 'Ll', + 65362 : 'Ll', + 65363 : 'Ll', + 65364 : 'Ll', + 65365 : 'Ll', + 65366 : 'Ll', + 65367 : 'Ll', + 65368 : 'Ll', + 65369 : 'Ll', + 65370 : 'Ll', + 65371 : 'Ps', + 65372 : 'Sm', + 65373 : 'Pe', + 65374 : 'Sm', + 65375 : 'Ps', + 65376 : 'Pe', + 65377 : 'Po', + 65378 : 'Ps', + 65379 : 'Pe', + 65380 : 'Po', + 65381 : 'Pc', + 65382 : 'Lo', + 65383 : 'Lo', + 65384 : 'Lo', + 65385 : 'Lo', + 65386 : 'Lo', + 65387 : 'Lo', + 65388 : 'Lo', + 65389 : 'Lo', + 65390 : 'Lo', + 65391 : 'Lo', + 65392 : 'Lm', + 65393 : 'Lo', + 65394 : 'Lo', + 65395 : 'Lo', + 65396 : 'Lo', + 65397 : 'Lo', + 65398 : 'Lo', + 65399 : 'Lo', + 65400 : 'Lo', + 65401 : 'Lo', + 65402 : 'Lo', + 65403 : 'Lo', + 65404 : 'Lo', + 65405 : 'Lo', + 65406 : 'Lo', + 65407 : 'Lo', + 65408 : 'Lo', + 65409 : 'Lo', + 65410 : 'Lo', + 65411 : 'Lo', + 65412 : 'Lo', + 65413 : 'Lo', + 65414 : 'Lo', + 65415 : 'Lo', + 65416 : 'Lo', + 65417 : 'Lo', + 65418 : 'Lo', + 65419 : 'Lo', + 65420 : 'Lo', + 65421 : 'Lo', + 65422 : 'Lo', + 65423 : 'Lo', + 65424 : 'Lo', + 65425 : 'Lo', + 65426 : 'Lo', + 65427 : 'Lo', + 65428 : 'Lo', + 65429 : 'Lo', + 65430 : 'Lo', + 65431 : 'Lo', + 65432 : 'Lo', + 65433 : 'Lo', + 65434 : 'Lo', + 65435 : 'Lo', + 65436 : 'Lo', + 65437 : 'Lo', + 65438 : 'Lm', + 65439 : 'Lm', + 65440 : 'Lo', + 65441 : 'Lo', + 65442 : 'Lo', + 65443 : 'Lo', + 65444 : 'Lo', + 65445 : 'Lo', + 65446 : 'Lo', + 65447 : 'Lo', + 65448 : 'Lo', + 65449 : 'Lo', + 65450 : 'Lo', + 65451 : 'Lo', + 65452 : 'Lo', + 65453 : 'Lo', + 65454 : 'Lo', + 65455 : 'Lo', + 65456 : 'Lo', + 65457 : 'Lo', + 65458 : 'Lo', + 65459 : 'Lo', + 65460 : 'Lo', + 65461 : 'Lo', + 65462 : 'Lo', + 65463 : 'Lo', + 65464 : 'Lo', + 65465 : 'Lo', + 65466 : 'Lo', + 65467 : 'Lo', + 65468 : 'Lo', + 65469 : 'Lo', + 65470 : 'Lo', + 65474 : 'Lo', + 65475 : 'Lo', + 65476 : 'Lo', + 65477 : 'Lo', + 65478 : 'Lo', + 65479 : 'Lo', + 65482 : 'Lo', + 65483 : 'Lo', + 65484 : 'Lo', + 65485 : 'Lo', + 65486 : 'Lo', + 65487 : 'Lo', + 65490 : 'Lo', + 65491 : 'Lo', + 65492 : 'Lo', + 65493 : 'Lo', + 65494 : 'Lo', + 65495 : 'Lo', + 65498 : 'Lo', + 65499 : 'Lo', + 65500 : 'Lo', + 65504 : 'Sc', + 65505 : 'Sc', + 65506 : 'Sm', + 65507 : 'Sk', + 65508 : 'So', + 65509 : 'Sc', + 65510 : 'Sc', + 65512 : 'So', + 65513 : 'Sm', + 65514 : 'Sm', + 65515 : 'Sm', + 65516 : 'Sm', + 65517 : 'So', + 65518 : 'So', + 65529 : 'Cf', + 65530 : 'Cf', + 65531 : 'Cf', + 65532 : 'So', + 65533 : 'So', + 66304 : 'Lo', + 66305 : 'Lo', + 66306 : 'Lo', + 66307 : 'Lo', + 66308 : 'Lo', + 66309 : 'Lo', + 66310 : 'Lo', + 66311 : 'Lo', + 66312 : 'Lo', + 66313 : 'Lo', + 66314 : 'Lo', + 66315 : 'Lo', + 66316 : 'Lo', + 66317 : 'Lo', + 66318 : 'Lo', + 66319 : 'Lo', + 66320 : 'Lo', + 66321 : 'Lo', + 66322 : 'Lo', + 66323 : 'Lo', + 66324 : 'Lo', + 66325 : 'Lo', + 66326 : 'Lo', + 66327 : 'Lo', + 66328 : 'Lo', + 66329 : 'Lo', + 66330 : 'Lo', + 66331 : 'Lo', + 66332 : 'Lo', + 66333 : 'Lo', + 66334 : 'Lo', + 66336 : 'No', + 66337 : 'No', + 66338 : 'No', + 66339 : 'No', + 66352 : 'Lo', + 66353 : 'Lo', + 66354 : 'Lo', + 66355 : 'Lo', + 66356 : 'Lo', + 66357 : 'Lo', + 66358 : 'Lo', + 66359 : 'Lo', + 66360 : 'Lo', + 66361 : 'Lo', + 66362 : 'Lo', + 66363 : 'Lo', + 66364 : 'Lo', + 66365 : 'Lo', + 66366 : 'Lo', + 66367 : 'Lo', + 66368 : 'Lo', + 66369 : 'Lo', + 66370 : 'Lo', + 66371 : 'Lo', + 66372 : 'Lo', + 66373 : 'Lo', + 66374 : 'Lo', + 66375 : 'Lo', + 66376 : 'Lo', + 66377 : 'Lo', + 66378 : 'Nl', + 66560 : 'Lu', + 66561 : 'Lu', + 66562 : 'Lu', + 66563 : 'Lu', + 66564 : 'Lu', + 66565 : 'Lu', + 66566 : 'Lu', + 66567 : 'Lu', + 66568 : 'Lu', + 66569 : 'Lu', + 66570 : 'Lu', + 66571 : 'Lu', + 66572 : 'Lu', + 66573 : 'Lu', + 66574 : 'Lu', + 66575 : 'Lu', + 66576 : 'Lu', + 66577 : 'Lu', + 66578 : 'Lu', + 66579 : 'Lu', + 66580 : 'Lu', + 66581 : 'Lu', + 66582 : 'Lu', + 66583 : 'Lu', + 66584 : 'Lu', + 66585 : 'Lu', + 66586 : 'Lu', + 66587 : 'Lu', + 66588 : 'Lu', + 66589 : 'Lu', + 66590 : 'Lu', + 66591 : 'Lu', + 66592 : 'Lu', + 66593 : 'Lu', + 66594 : 'Lu', + 66595 : 'Lu', + 66596 : 'Lu', + 66597 : 'Lu', + 66600 : 'Ll', + 66601 : 'Ll', + 66602 : 'Ll', + 66603 : 'Ll', + 66604 : 'Ll', + 66605 : 'Ll', + 66606 : 'Ll', + 66607 : 'Ll', + 66608 : 'Ll', + 66609 : 'Ll', + 66610 : 'Ll', + 66611 : 'Ll', + 66612 : 'Ll', + 66613 : 'Ll', + 66614 : 'Ll', + 66615 : 'Ll', + 66616 : 'Ll', + 66617 : 'Ll', + 66618 : 'Ll', + 66619 : 'Ll', + 66620 : 'Ll', + 66621 : 'Ll', + 66622 : 'Ll', + 66623 : 'Ll', + 66624 : 'Ll', + 66625 : 'Ll', + 66626 : 'Ll', + 66627 : 'Ll', + 66628 : 'Ll', + 66629 : 'Ll', + 66630 : 'Ll', + 66631 : 'Ll', + 66632 : 'Ll', + 66633 : 'Ll', + 66634 : 'Ll', + 66635 : 'Ll', + 66636 : 'Ll', + 66637 : 'Ll', + 118784 : 'So', + 118785 : 'So', + 118786 : 'So', + 118787 : 'So', + 118788 : 'So', + 118789 : 'So', + 118790 : 'So', + 118791 : 'So', + 118792 : 'So', + 118793 : 'So', + 118794 : 'So', + 118795 : 'So', + 118796 : 'So', + 118797 : 'So', + 118798 : 'So', + 118799 : 'So', + 118800 : 'So', + 118801 : 'So', + 118802 : 'So', + 118803 : 'So', + 118804 : 'So', + 118805 : 'So', + 118806 : 'So', + 118807 : 'So', + 118808 : 'So', + 118809 : 'So', + 118810 : 'So', + 118811 : 'So', + 118812 : 'So', + 118813 : 'So', + 118814 : 'So', + 118815 : 'So', + 118816 : 'So', + 118817 : 'So', + 118818 : 'So', + 118819 : 'So', + 118820 : 'So', + 118821 : 'So', + 118822 : 'So', + 118823 : 'So', + 118824 : 'So', + 118825 : 'So', + 118826 : 'So', + 118827 : 'So', + 118828 : 'So', + 118829 : 'So', + 118830 : 'So', + 118831 : 'So', + 118832 : 'So', + 118833 : 'So', + 118834 : 'So', + 118835 : 'So', + 118836 : 'So', + 118837 : 'So', + 118838 : 'So', + 118839 : 'So', + 118840 : 'So', + 118841 : 'So', + 118842 : 'So', + 118843 : 'So', + 118844 : 'So', + 118845 : 'So', + 118846 : 'So', + 118847 : 'So', + 118848 : 'So', + 118849 : 'So', + 118850 : 'So', + 118851 : 'So', + 118852 : 'So', + 118853 : 'So', + 118854 : 'So', + 118855 : 'So', + 118856 : 'So', + 118857 : 'So', + 118858 : 'So', + 118859 : 'So', + 118860 : 'So', + 118861 : 'So', + 118862 : 'So', + 118863 : 'So', + 118864 : 'So', + 118865 : 'So', + 118866 : 'So', + 118867 : 'So', + 118868 : 'So', + 118869 : 'So', + 118870 : 'So', + 118871 : 'So', + 118872 : 'So', + 118873 : 'So', + 118874 : 'So', + 118875 : 'So', + 118876 : 'So', + 118877 : 'So', + 118878 : 'So', + 118879 : 'So', + 118880 : 'So', + 118881 : 'So', + 118882 : 'So', + 118883 : 'So', + 118884 : 'So', + 118885 : 'So', + 118886 : 'So', + 118887 : 'So', + 118888 : 'So', + 118889 : 'So', + 118890 : 'So', + 118891 : 'So', + 118892 : 'So', + 118893 : 'So', + 118894 : 'So', + 118895 : 'So', + 118896 : 'So', + 118897 : 'So', + 118898 : 'So', + 118899 : 'So', + 118900 : 'So', + 118901 : 'So', + 118902 : 'So', + 118903 : 'So', + 118904 : 'So', + 118905 : 'So', + 118906 : 'So', + 118907 : 'So', + 118908 : 'So', + 118909 : 'So', + 118910 : 'So', + 118911 : 'So', + 118912 : 'So', + 118913 : 'So', + 118914 : 'So', + 118915 : 'So', + 118916 : 'So', + 118917 : 'So', + 118918 : 'So', + 118919 : 'So', + 118920 : 'So', + 118921 : 'So', + 118922 : 'So', + 118923 : 'So', + 118924 : 'So', + 118925 : 'So', + 118926 : 'So', + 118927 : 'So', + 118928 : 'So', + 118929 : 'So', + 118930 : 'So', + 118931 : 'So', + 118932 : 'So', + 118933 : 'So', + 118934 : 'So', + 118935 : 'So', + 118936 : 'So', + 118937 : 'So', + 118938 : 'So', + 118939 : 'So', + 118940 : 'So', + 118941 : 'So', + 118942 : 'So', + 118943 : 'So', + 118944 : 'So', + 118945 : 'So', + 118946 : 'So', + 118947 : 'So', + 118948 : 'So', + 118949 : 'So', + 118950 : 'So', + 118951 : 'So', + 118952 : 'So', + 118953 : 'So', + 118954 : 'So', + 118955 : 'So', + 118956 : 'So', + 118957 : 'So', + 118958 : 'So', + 118959 : 'So', + 118960 : 'So', + 118961 : 'So', + 118962 : 'So', + 118963 : 'So', + 118964 : 'So', + 118965 : 'So', + 118966 : 'So', + 118967 : 'So', + 118968 : 'So', + 118969 : 'So', + 118970 : 'So', + 118971 : 'So', + 118972 : 'So', + 118973 : 'So', + 118974 : 'So', + 118975 : 'So', + 118976 : 'So', + 118977 : 'So', + 118978 : 'So', + 118979 : 'So', + 118980 : 'So', + 118981 : 'So', + 118982 : 'So', + 118983 : 'So', + 118984 : 'So', + 118985 : 'So', + 118986 : 'So', + 118987 : 'So', + 118988 : 'So', + 118989 : 'So', + 118990 : 'So', + 118991 : 'So', + 118992 : 'So', + 118993 : 'So', + 118994 : 'So', + 118995 : 'So', + 118996 : 'So', + 118997 : 'So', + 118998 : 'So', + 118999 : 'So', + 119000 : 'So', + 119001 : 'So', + 119002 : 'So', + 119003 : 'So', + 119004 : 'So', + 119005 : 'So', + 119006 : 'So', + 119007 : 'So', + 119008 : 'So', + 119009 : 'So', + 119010 : 'So', + 119011 : 'So', + 119012 : 'So', + 119013 : 'So', + 119014 : 'So', + 119015 : 'So', + 119016 : 'So', + 119017 : 'So', + 119018 : 'So', + 119019 : 'So', + 119020 : 'So', + 119021 : 'So', + 119022 : 'So', + 119023 : 'So', + 119024 : 'So', + 119025 : 'So', + 119026 : 'So', + 119027 : 'So', + 119028 : 'So', + 119029 : 'So', + 119040 : 'So', + 119041 : 'So', + 119042 : 'So', + 119043 : 'So', + 119044 : 'So', + 119045 : 'So', + 119046 : 'So', + 119047 : 'So', + 119048 : 'So', + 119049 : 'So', + 119050 : 'So', + 119051 : 'So', + 119052 : 'So', + 119053 : 'So', + 119054 : 'So', + 119055 : 'So', + 119056 : 'So', + 119057 : 'So', + 119058 : 'So', + 119059 : 'So', + 119060 : 'So', + 119061 : 'So', + 119062 : 'So', + 119063 : 'So', + 119064 : 'So', + 119065 : 'So', + 119066 : 'So', + 119067 : 'So', + 119068 : 'So', + 119069 : 'So', + 119070 : 'So', + 119071 : 'So', + 119072 : 'So', + 119073 : 'So', + 119074 : 'So', + 119075 : 'So', + 119076 : 'So', + 119077 : 'So', + 119078 : 'So', + 119082 : 'So', + 119083 : 'So', + 119084 : 'So', + 119085 : 'So', + 119086 : 'So', + 119087 : 'So', + 119088 : 'So', + 119089 : 'So', + 119090 : 'So', + 119091 : 'So', + 119092 : 'So', + 119093 : 'So', + 119094 : 'So', + 119095 : 'So', + 119096 : 'So', + 119097 : 'So', + 119098 : 'So', + 119099 : 'So', + 119100 : 'So', + 119101 : 'So', + 119102 : 'So', + 119103 : 'So', + 119104 : 'So', + 119105 : 'So', + 119106 : 'So', + 119107 : 'So', + 119108 : 'So', + 119109 : 'So', + 119110 : 'So', + 119111 : 'So', + 119112 : 'So', + 119113 : 'So', + 119114 : 'So', + 119115 : 'So', + 119116 : 'So', + 119117 : 'So', + 119118 : 'So', + 119119 : 'So', + 119120 : 'So', + 119121 : 'So', + 119122 : 'So', + 119123 : 'So', + 119124 : 'So', + 119125 : 'So', + 119126 : 'So', + 119127 : 'So', + 119128 : 'So', + 119129 : 'So', + 119130 : 'So', + 119131 : 'So', + 119132 : 'So', + 119133 : 'So', + 119134 : 'So', + 119135 : 'So', + 119136 : 'So', + 119137 : 'So', + 119138 : 'So', + 119139 : 'So', + 119140 : 'So', + 119141 : 'Mc', + 119142 : 'Mc', + 119143 : 'Mn', + 119144 : 'Mn', + 119145 : 'Mn', + 119146 : 'So', + 119147 : 'So', + 119148 : 'So', + 119149 : 'Mc', + 119150 : 'Mc', + 119151 : 'Mc', + 119152 : 'Mc', + 119153 : 'Mc', + 119154 : 'Mc', + 119155 : 'Cf', + 119156 : 'Cf', + 119157 : 'Cf', + 119158 : 'Cf', + 119159 : 'Cf', + 119160 : 'Cf', + 119161 : 'Cf', + 119162 : 'Cf', + 119163 : 'Mn', + 119164 : 'Mn', + 119165 : 'Mn', + 119166 : 'Mn', + 119167 : 'Mn', + 119168 : 'Mn', + 119169 : 'Mn', + 119170 : 'Mn', + 119171 : 'So', + 119172 : 'So', + 119173 : 'Mn', + 119174 : 'Mn', + 119175 : 'Mn', + 119176 : 'Mn', + 119177 : 'Mn', + 119178 : 'Mn', + 119179 : 'Mn', + 119180 : 'So', + 119181 : 'So', + 119182 : 'So', + 119183 : 'So', + 119184 : 'So', + 119185 : 'So', + 119186 : 'So', + 119187 : 'So', + 119188 : 'So', + 119189 : 'So', + 119190 : 'So', + 119191 : 'So', + 119192 : 'So', + 119193 : 'So', + 119194 : 'So', + 119195 : 'So', + 119196 : 'So', + 119197 : 'So', + 119198 : 'So', + 119199 : 'So', + 119200 : 'So', + 119201 : 'So', + 119202 : 'So', + 119203 : 'So', + 119204 : 'So', + 119205 : 'So', + 119206 : 'So', + 119207 : 'So', + 119208 : 'So', + 119209 : 'So', + 119210 : 'Mn', + 119211 : 'Mn', + 119212 : 'Mn', + 119213 : 'Mn', + 119214 : 'So', + 119215 : 'So', + 119216 : 'So', + 119217 : 'So', + 119218 : 'So', + 119219 : 'So', + 119220 : 'So', + 119221 : 'So', + 119222 : 'So', + 119223 : 'So', + 119224 : 'So', + 119225 : 'So', + 119226 : 'So', + 119227 : 'So', + 119228 : 'So', + 119229 : 'So', + 119230 : 'So', + 119231 : 'So', + 119232 : 'So', + 119233 : 'So', + 119234 : 'So', + 119235 : 'So', + 119236 : 'So', + 119237 : 'So', + 119238 : 'So', + 119239 : 'So', + 119240 : 'So', + 119241 : 'So', + 119242 : 'So', + 119243 : 'So', + 119244 : 'So', + 119245 : 'So', + 119246 : 'So', + 119247 : 'So', + 119248 : 'So', + 119249 : 'So', + 119250 : 'So', + 119251 : 'So', + 119252 : 'So', + 119253 : 'So', + 119254 : 'So', + 119255 : 'So', + 119256 : 'So', + 119257 : 'So', + 119258 : 'So', + 119259 : 'So', + 119260 : 'So', + 119261 : 'So', + 119808 : 'Lu', + 119809 : 'Lu', + 119810 : 'Lu', + 119811 : 'Lu', + 119812 : 'Lu', + 119813 : 'Lu', + 119814 : 'Lu', + 119815 : 'Lu', + 119816 : 'Lu', + 119817 : 'Lu', + 119818 : 'Lu', + 119819 : 'Lu', + 119820 : 'Lu', + 119821 : 'Lu', + 119822 : 'Lu', + 119823 : 'Lu', + 119824 : 'Lu', + 119825 : 'Lu', + 119826 : 'Lu', + 119827 : 'Lu', + 119828 : 'Lu', + 119829 : 'Lu', + 119830 : 'Lu', + 119831 : 'Lu', + 119832 : 'Lu', + 119833 : 'Lu', + 119834 : 'Ll', + 119835 : 'Ll', + 119836 : 'Ll', + 119837 : 'Ll', + 119838 : 'Ll', + 119839 : 'Ll', + 119840 : 'Ll', + 119841 : 'Ll', + 119842 : 'Ll', + 119843 : 'Ll', + 119844 : 'Ll', + 119845 : 'Ll', + 119846 : 'Ll', + 119847 : 'Ll', + 119848 : 'Ll', + 119849 : 'Ll', + 119850 : 'Ll', + 119851 : 'Ll', + 119852 : 'Ll', + 119853 : 'Ll', + 119854 : 'Ll', + 119855 : 'Ll', + 119856 : 'Ll', + 119857 : 'Ll', + 119858 : 'Ll', + 119859 : 'Ll', + 119860 : 'Lu', + 119861 : 'Lu', + 119862 : 'Lu', + 119863 : 'Lu', + 119864 : 'Lu', + 119865 : 'Lu', + 119866 : 'Lu', + 119867 : 'Lu', + 119868 : 'Lu', + 119869 : 'Lu', + 119870 : 'Lu', + 119871 : 'Lu', + 119872 : 'Lu', + 119873 : 'Lu', + 119874 : 'Lu', + 119875 : 'Lu', + 119876 : 'Lu', + 119877 : 'Lu', + 119878 : 'Lu', + 119879 : 'Lu', + 119880 : 'Lu', + 119881 : 'Lu', + 119882 : 'Lu', + 119883 : 'Lu', + 119884 : 'Lu', + 119885 : 'Lu', + 119886 : 'Ll', + 119887 : 'Ll', + 119888 : 'Ll', + 119889 : 'Ll', + 119890 : 'Ll', + 119891 : 'Ll', + 119892 : 'Ll', + 119894 : 'Ll', + 119895 : 'Ll', + 119896 : 'Ll', + 119897 : 'Ll', + 119898 : 'Ll', + 119899 : 'Ll', + 119900 : 'Ll', + 119901 : 'Ll', + 119902 : 'Ll', + 119903 : 'Ll', + 119904 : 'Ll', + 119905 : 'Ll', + 119906 : 'Ll', + 119907 : 'Ll', + 119908 : 'Ll', + 119909 : 'Ll', + 119910 : 'Ll', + 119911 : 'Ll', + 119912 : 'Lu', + 119913 : 'Lu', + 119914 : 'Lu', + 119915 : 'Lu', + 119916 : 'Lu', + 119917 : 'Lu', + 119918 : 'Lu', + 119919 : 'Lu', + 119920 : 'Lu', + 119921 : 'Lu', + 119922 : 'Lu', + 119923 : 'Lu', + 119924 : 'Lu', + 119925 : 'Lu', + 119926 : 'Lu', + 119927 : 'Lu', + 119928 : 'Lu', + 119929 : 'Lu', + 119930 : 'Lu', + 119931 : 'Lu', + 119932 : 'Lu', + 119933 : 'Lu', + 119934 : 'Lu', + 119935 : 'Lu', + 119936 : 'Lu', + 119937 : 'Lu', + 119938 : 'Ll', + 119939 : 'Ll', + 119940 : 'Ll', + 119941 : 'Ll', + 119942 : 'Ll', + 119943 : 'Ll', + 119944 : 'Ll', + 119945 : 'Ll', + 119946 : 'Ll', + 119947 : 'Ll', + 119948 : 'Ll', + 119949 : 'Ll', + 119950 : 'Ll', + 119951 : 'Ll', + 119952 : 'Ll', + 119953 : 'Ll', + 119954 : 'Ll', + 119955 : 'Ll', + 119956 : 'Ll', + 119957 : 'Ll', + 119958 : 'Ll', + 119959 : 'Ll', + 119960 : 'Ll', + 119961 : 'Ll', + 119962 : 'Ll', + 119963 : 'Ll', + 119964 : 'Lu', + 119966 : 'Lu', + 119967 : 'Lu', + 119970 : 'Lu', + 119973 : 'Lu', + 119974 : 'Lu', + 119977 : 'Lu', + 119978 : 'Lu', + 119979 : 'Lu', + 119980 : 'Lu', + 119982 : 'Lu', + 119983 : 'Lu', + 119984 : 'Lu', + 119985 : 'Lu', + 119986 : 'Lu', + 119987 : 'Lu', + 119988 : 'Lu', + 119989 : 'Lu', + 119990 : 'Ll', + 119991 : 'Ll', + 119992 : 'Ll', + 119993 : 'Ll', + 119995 : 'Ll', + 119997 : 'Ll', + 119998 : 'Ll', + 119999 : 'Ll', + 120000 : 'Ll', + 120002 : 'Ll', + 120003 : 'Ll', + 120005 : 'Ll', + 120006 : 'Ll', + 120007 : 'Ll', + 120008 : 'Ll', + 120009 : 'Ll', + 120010 : 'Ll', + 120011 : 'Ll', + 120012 : 'Ll', + 120013 : 'Ll', + 120014 : 'Ll', + 120015 : 'Ll', + 120016 : 'Lu', + 120017 : 'Lu', + 120018 : 'Lu', + 120019 : 'Lu', + 120020 : 'Lu', + 120021 : 'Lu', + 120022 : 'Lu', + 120023 : 'Lu', + 120024 : 'Lu', + 120025 : 'Lu', + 120026 : 'Lu', + 120027 : 'Lu', + 120028 : 'Lu', + 120029 : 'Lu', + 120030 : 'Lu', + 120031 : 'Lu', + 120032 : 'Lu', + 120033 : 'Lu', + 120034 : 'Lu', + 120035 : 'Lu', + 120036 : 'Lu', + 120037 : 'Lu', + 120038 : 'Lu', + 120039 : 'Lu', + 120040 : 'Lu', + 120041 : 'Lu', + 120042 : 'Ll', + 120043 : 'Ll', + 120044 : 'Ll', + 120045 : 'Ll', + 120046 : 'Ll', + 120047 : 'Ll', + 120048 : 'Ll', + 120049 : 'Ll', + 120050 : 'Ll', + 120051 : 'Ll', + 120052 : 'Ll', + 120053 : 'Ll', + 120054 : 'Ll', + 120055 : 'Ll', + 120056 : 'Ll', + 120057 : 'Ll', + 120058 : 'Ll', + 120059 : 'Ll', + 120060 : 'Ll', + 120061 : 'Ll', + 120062 : 'Ll', + 120063 : 'Ll', + 120064 : 'Ll', + 120065 : 'Ll', + 120066 : 'Ll', + 120067 : 'Ll', + 120068 : 'Lu', + 120069 : 'Lu', + 120071 : 'Lu', + 120072 : 'Lu', + 120073 : 'Lu', + 120074 : 'Lu', + 120077 : 'Lu', + 120078 : 'Lu', + 120079 : 'Lu', + 120080 : 'Lu', + 120081 : 'Lu', + 120082 : 'Lu', + 120083 : 'Lu', + 120084 : 'Lu', + 120086 : 'Lu', + 120087 : 'Lu', + 120088 : 'Lu', + 120089 : 'Lu', + 120090 : 'Lu', + 120091 : 'Lu', + 120092 : 'Lu', + 120094 : 'Ll', + 120095 : 'Ll', + 120096 : 'Ll', + 120097 : 'Ll', + 120098 : 'Ll', + 120099 : 'Ll', + 120100 : 'Ll', + 120101 : 'Ll', + 120102 : 'Ll', + 120103 : 'Ll', + 120104 : 'Ll', + 120105 : 'Ll', + 120106 : 'Ll', + 120107 : 'Ll', + 120108 : 'Ll', + 120109 : 'Ll', + 120110 : 'Ll', + 120111 : 'Ll', + 120112 : 'Ll', + 120113 : 'Ll', + 120114 : 'Ll', + 120115 : 'Ll', + 120116 : 'Ll', + 120117 : 'Ll', + 120118 : 'Ll', + 120119 : 'Ll', + 120120 : 'Lu', + 120121 : 'Lu', + 120123 : 'Lu', + 120124 : 'Lu', + 120125 : 'Lu', + 120126 : 'Lu', + 120128 : 'Lu', + 120129 : 'Lu', + 120130 : 'Lu', + 120131 : 'Lu', + 120132 : 'Lu', + 120134 : 'Lu', + 120138 : 'Lu', + 120139 : 'Lu', + 120140 : 'Lu', + 120141 : 'Lu', + 120142 : 'Lu', + 120143 : 'Lu', + 120144 : 'Lu', + 120146 : 'Ll', + 120147 : 'Ll', + 120148 : 'Ll', + 120149 : 'Ll', + 120150 : 'Ll', + 120151 : 'Ll', + 120152 : 'Ll', + 120153 : 'Ll', + 120154 : 'Ll', + 120155 : 'Ll', + 120156 : 'Ll', + 120157 : 'Ll', + 120158 : 'Ll', + 120159 : 'Ll', + 120160 : 'Ll', + 120161 : 'Ll', + 120162 : 'Ll', + 120163 : 'Ll', + 120164 : 'Ll', + 120165 : 'Ll', + 120166 : 'Ll', + 120167 : 'Ll', + 120168 : 'Ll', + 120169 : 'Ll', + 120170 : 'Ll', + 120171 : 'Ll', + 120172 : 'Lu', + 120173 : 'Lu', + 120174 : 'Lu', + 120175 : 'Lu', + 120176 : 'Lu', + 120177 : 'Lu', + 120178 : 'Lu', + 120179 : 'Lu', + 120180 : 'Lu', + 120181 : 'Lu', + 120182 : 'Lu', + 120183 : 'Lu', + 120184 : 'Lu', + 120185 : 'Lu', + 120186 : 'Lu', + 120187 : 'Lu', + 120188 : 'Lu', + 120189 : 'Lu', + 120190 : 'Lu', + 120191 : 'Lu', + 120192 : 'Lu', + 120193 : 'Lu', + 120194 : 'Lu', + 120195 : 'Lu', + 120196 : 'Lu', + 120197 : 'Lu', + 120198 : 'Ll', + 120199 : 'Ll', + 120200 : 'Ll', + 120201 : 'Ll', + 120202 : 'Ll', + 120203 : 'Ll', + 120204 : 'Ll', + 120205 : 'Ll', + 120206 : 'Ll', + 120207 : 'Ll', + 120208 : 'Ll', + 120209 : 'Ll', + 120210 : 'Ll', + 120211 : 'Ll', + 120212 : 'Ll', + 120213 : 'Ll', + 120214 : 'Ll', + 120215 : 'Ll', + 120216 : 'Ll', + 120217 : 'Ll', + 120218 : 'Ll', + 120219 : 'Ll', + 120220 : 'Ll', + 120221 : 'Ll', + 120222 : 'Ll', + 120223 : 'Ll', + 120224 : 'Lu', + 120225 : 'Lu', + 120226 : 'Lu', + 120227 : 'Lu', + 120228 : 'Lu', + 120229 : 'Lu', + 120230 : 'Lu', + 120231 : 'Lu', + 120232 : 'Lu', + 120233 : 'Lu', + 120234 : 'Lu', + 120235 : 'Lu', + 120236 : 'Lu', + 120237 : 'Lu', + 120238 : 'Lu', + 120239 : 'Lu', + 120240 : 'Lu', + 120241 : 'Lu', + 120242 : 'Lu', + 120243 : 'Lu', + 120244 : 'Lu', + 120245 : 'Lu', + 120246 : 'Lu', + 120247 : 'Lu', + 120248 : 'Lu', + 120249 : 'Lu', + 120250 : 'Ll', + 120251 : 'Ll', + 120252 : 'Ll', + 120253 : 'Ll', + 120254 : 'Ll', + 120255 : 'Ll', + 120256 : 'Ll', + 120257 : 'Ll', + 120258 : 'Ll', + 120259 : 'Ll', + 120260 : 'Ll', + 120261 : 'Ll', + 120262 : 'Ll', + 120263 : 'Ll', + 120264 : 'Ll', + 120265 : 'Ll', + 120266 : 'Ll', + 120267 : 'Ll', + 120268 : 'Ll', + 120269 : 'Ll', + 120270 : 'Ll', + 120271 : 'Ll', + 120272 : 'Ll', + 120273 : 'Ll', + 120274 : 'Ll', + 120275 : 'Ll', + 120276 : 'Lu', + 120277 : 'Lu', + 120278 : 'Lu', + 120279 : 'Lu', + 120280 : 'Lu', + 120281 : 'Lu', + 120282 : 'Lu', + 120283 : 'Lu', + 120284 : 'Lu', + 120285 : 'Lu', + 120286 : 'Lu', + 120287 : 'Lu', + 120288 : 'Lu', + 120289 : 'Lu', + 120290 : 'Lu', + 120291 : 'Lu', + 120292 : 'Lu', + 120293 : 'Lu', + 120294 : 'Lu', + 120295 : 'Lu', + 120296 : 'Lu', + 120297 : 'Lu', + 120298 : 'Lu', + 120299 : 'Lu', + 120300 : 'Lu', + 120301 : 'Lu', + 120302 : 'Ll', + 120303 : 'Ll', + 120304 : 'Ll', + 120305 : 'Ll', + 120306 : 'Ll', + 120307 : 'Ll', + 120308 : 'Ll', + 120309 : 'Ll', + 120310 : 'Ll', + 120311 : 'Ll', + 120312 : 'Ll', + 120313 : 'Ll', + 120314 : 'Ll', + 120315 : 'Ll', + 120316 : 'Ll', + 120317 : 'Ll', + 120318 : 'Ll', + 120319 : 'Ll', + 120320 : 'Ll', + 120321 : 'Ll', + 120322 : 'Ll', + 120323 : 'Ll', + 120324 : 'Ll', + 120325 : 'Ll', + 120326 : 'Ll', + 120327 : 'Ll', + 120328 : 'Lu', + 120329 : 'Lu', + 120330 : 'Lu', + 120331 : 'Lu', + 120332 : 'Lu', + 120333 : 'Lu', + 120334 : 'Lu', + 120335 : 'Lu', + 120336 : 'Lu', + 120337 : 'Lu', + 120338 : 'Lu', + 120339 : 'Lu', + 120340 : 'Lu', + 120341 : 'Lu', + 120342 : 'Lu', + 120343 : 'Lu', + 120344 : 'Lu', + 120345 : 'Lu', + 120346 : 'Lu', + 120347 : 'Lu', + 120348 : 'Lu', + 120349 : 'Lu', + 120350 : 'Lu', + 120351 : 'Lu', + 120352 : 'Lu', + 120353 : 'Lu', + 120354 : 'Ll', + 120355 : 'Ll', + 120356 : 'Ll', + 120357 : 'Ll', + 120358 : 'Ll', + 120359 : 'Ll', + 120360 : 'Ll', + 120361 : 'Ll', + 120362 : 'Ll', + 120363 : 'Ll', + 120364 : 'Ll', + 120365 : 'Ll', + 120366 : 'Ll', + 120367 : 'Ll', + 120368 : 'Ll', + 120369 : 'Ll', + 120370 : 'Ll', + 120371 : 'Ll', + 120372 : 'Ll', + 120373 : 'Ll', + 120374 : 'Ll', + 120375 : 'Ll', + 120376 : 'Ll', + 120377 : 'Ll', + 120378 : 'Ll', + 120379 : 'Ll', + 120380 : 'Lu', + 120381 : 'Lu', + 120382 : 'Lu', + 120383 : 'Lu', + 120384 : 'Lu', + 120385 : 'Lu', + 120386 : 'Lu', + 120387 : 'Lu', + 120388 : 'Lu', + 120389 : 'Lu', + 120390 : 'Lu', + 120391 : 'Lu', + 120392 : 'Lu', + 120393 : 'Lu', + 120394 : 'Lu', + 120395 : 'Lu', + 120396 : 'Lu', + 120397 : 'Lu', + 120398 : 'Lu', + 120399 : 'Lu', + 120400 : 'Lu', + 120401 : 'Lu', + 120402 : 'Lu', + 120403 : 'Lu', + 120404 : 'Lu', + 120405 : 'Lu', + 120406 : 'Ll', + 120407 : 'Ll', + 120408 : 'Ll', + 120409 : 'Ll', + 120410 : 'Ll', + 120411 : 'Ll', + 120412 : 'Ll', + 120413 : 'Ll', + 120414 : 'Ll', + 120415 : 'Ll', + 120416 : 'Ll', + 120417 : 'Ll', + 120418 : 'Ll', + 120419 : 'Ll', + 120420 : 'Ll', + 120421 : 'Ll', + 120422 : 'Ll', + 120423 : 'Ll', + 120424 : 'Ll', + 120425 : 'Ll', + 120426 : 'Ll', + 120427 : 'Ll', + 120428 : 'Ll', + 120429 : 'Ll', + 120430 : 'Ll', + 120431 : 'Ll', + 120432 : 'Lu', + 120433 : 'Lu', + 120434 : 'Lu', + 120435 : 'Lu', + 120436 : 'Lu', + 120437 : 'Lu', + 120438 : 'Lu', + 120439 : 'Lu', + 120440 : 'Lu', + 120441 : 'Lu', + 120442 : 'Lu', + 120443 : 'Lu', + 120444 : 'Lu', + 120445 : 'Lu', + 120446 : 'Lu', + 120447 : 'Lu', + 120448 : 'Lu', + 120449 : 'Lu', + 120450 : 'Lu', + 120451 : 'Lu', + 120452 : 'Lu', + 120453 : 'Lu', + 120454 : 'Lu', + 120455 : 'Lu', + 120456 : 'Lu', + 120457 : 'Lu', + 120458 : 'Ll', + 120459 : 'Ll', + 120460 : 'Ll', + 120461 : 'Ll', + 120462 : 'Ll', + 120463 : 'Ll', + 120464 : 'Ll', + 120465 : 'Ll', + 120466 : 'Ll', + 120467 : 'Ll', + 120468 : 'Ll', + 120469 : 'Ll', + 120470 : 'Ll', + 120471 : 'Ll', + 120472 : 'Ll', + 120473 : 'Ll', + 120474 : 'Ll', + 120475 : 'Ll', + 120476 : 'Ll', + 120477 : 'Ll', + 120478 : 'Ll', + 120479 : 'Ll', + 120480 : 'Ll', + 120481 : 'Ll', + 120482 : 'Ll', + 120483 : 'Ll', + 120488 : 'Lu', + 120489 : 'Lu', + 120490 : 'Lu', + 120491 : 'Lu', + 120492 : 'Lu', + 120493 : 'Lu', + 120494 : 'Lu', + 120495 : 'Lu', + 120496 : 'Lu', + 120497 : 'Lu', + 120498 : 'Lu', + 120499 : 'Lu', + 120500 : 'Lu', + 120501 : 'Lu', + 120502 : 'Lu', + 120503 : 'Lu', + 120504 : 'Lu', + 120505 : 'Lu', + 120506 : 'Lu', + 120507 : 'Lu', + 120508 : 'Lu', + 120509 : 'Lu', + 120510 : 'Lu', + 120511 : 'Lu', + 120512 : 'Lu', + 120513 : 'Sm', + 120514 : 'Ll', + 120515 : 'Ll', + 120516 : 'Ll', + 120517 : 'Ll', + 120518 : 'Ll', + 120519 : 'Ll', + 120520 : 'Ll', + 120521 : 'Ll', + 120522 : 'Ll', + 120523 : 'Ll', + 120524 : 'Ll', + 120525 : 'Ll', + 120526 : 'Ll', + 120527 : 'Ll', + 120528 : 'Ll', + 120529 : 'Ll', + 120530 : 'Ll', + 120531 : 'Ll', + 120532 : 'Ll', + 120533 : 'Ll', + 120534 : 'Ll', + 120535 : 'Ll', + 120536 : 'Ll', + 120537 : 'Ll', + 120538 : 'Ll', + 120539 : 'Sm', + 120540 : 'Ll', + 120541 : 'Ll', + 120542 : 'Ll', + 120543 : 'Ll', + 120544 : 'Ll', + 120545 : 'Ll', + 120546 : 'Lu', + 120547 : 'Lu', + 120548 : 'Lu', + 120549 : 'Lu', + 120550 : 'Lu', + 120551 : 'Lu', + 120552 : 'Lu', + 120553 : 'Lu', + 120554 : 'Lu', + 120555 : 'Lu', + 120556 : 'Lu', + 120557 : 'Lu', + 120558 : 'Lu', + 120559 : 'Lu', + 120560 : 'Lu', + 120561 : 'Lu', + 120562 : 'Lu', + 120563 : 'Lu', + 120564 : 'Lu', + 120565 : 'Lu', + 120566 : 'Lu', + 120567 : 'Lu', + 120568 : 'Lu', + 120569 : 'Lu', + 120570 : 'Lu', + 120571 : 'Sm', + 120572 : 'Ll', + 120573 : 'Ll', + 120574 : 'Ll', + 120575 : 'Ll', + 120576 : 'Ll', + 120577 : 'Ll', + 120578 : 'Ll', + 120579 : 'Ll', + 120580 : 'Ll', + 120581 : 'Ll', + 120582 : 'Ll', + 120583 : 'Ll', + 120584 : 'Ll', + 120585 : 'Ll', + 120586 : 'Ll', + 120587 : 'Ll', + 120588 : 'Ll', + 120589 : 'Ll', + 120590 : 'Ll', + 120591 : 'Ll', + 120592 : 'Ll', + 120593 : 'Ll', + 120594 : 'Ll', + 120595 : 'Ll', + 120596 : 'Ll', + 120597 : 'Sm', + 120598 : 'Ll', + 120599 : 'Ll', + 120600 : 'Ll', + 120601 : 'Ll', + 120602 : 'Ll', + 120603 : 'Ll', + 120604 : 'Lu', + 120605 : 'Lu', + 120606 : 'Lu', + 120607 : 'Lu', + 120608 : 'Lu', + 120609 : 'Lu', + 120610 : 'Lu', + 120611 : 'Lu', + 120612 : 'Lu', + 120613 : 'Lu', + 120614 : 'Lu', + 120615 : 'Lu', + 120616 : 'Lu', + 120617 : 'Lu', + 120618 : 'Lu', + 120619 : 'Lu', + 120620 : 'Lu', + 120621 : 'Lu', + 120622 : 'Lu', + 120623 : 'Lu', + 120624 : 'Lu', + 120625 : 'Lu', + 120626 : 'Lu', + 120627 : 'Lu', + 120628 : 'Lu', + 120629 : 'Sm', + 120630 : 'Ll', + 120631 : 'Ll', + 120632 : 'Ll', + 120633 : 'Ll', + 120634 : 'Ll', + 120635 : 'Ll', + 120636 : 'Ll', + 120637 : 'Ll', + 120638 : 'Ll', + 120639 : 'Ll', + 120640 : 'Ll', + 120641 : 'Ll', + 120642 : 'Ll', + 120643 : 'Ll', + 120644 : 'Ll', + 120645 : 'Ll', + 120646 : 'Ll', + 120647 : 'Ll', + 120648 : 'Ll', + 120649 : 'Ll', + 120650 : 'Ll', + 120651 : 'Ll', + 120652 : 'Ll', + 120653 : 'Ll', + 120654 : 'Ll', + 120655 : 'Sm', + 120656 : 'Ll', + 120657 : 'Ll', + 120658 : 'Ll', + 120659 : 'Ll', + 120660 : 'Ll', + 120661 : 'Ll', + 120662 : 'Lu', + 120663 : 'Lu', + 120664 : 'Lu', + 120665 : 'Lu', + 120666 : 'Lu', + 120667 : 'Lu', + 120668 : 'Lu', + 120669 : 'Lu', + 120670 : 'Lu', + 120671 : 'Lu', + 120672 : 'Lu', + 120673 : 'Lu', + 120674 : 'Lu', + 120675 : 'Lu', + 120676 : 'Lu', + 120677 : 'Lu', + 120678 : 'Lu', + 120679 : 'Lu', + 120680 : 'Lu', + 120681 : 'Lu', + 120682 : 'Lu', + 120683 : 'Lu', + 120684 : 'Lu', + 120685 : 'Lu', + 120686 : 'Lu', + 120687 : 'Sm', + 120688 : 'Ll', + 120689 : 'Ll', + 120690 : 'Ll', + 120691 : 'Ll', + 120692 : 'Ll', + 120693 : 'Ll', + 120694 : 'Ll', + 120695 : 'Ll', + 120696 : 'Ll', + 120697 : 'Ll', + 120698 : 'Ll', + 120699 : 'Ll', + 120700 : 'Ll', + 120701 : 'Ll', + 120702 : 'Ll', + 120703 : 'Ll', + 120704 : 'Ll', + 120705 : 'Ll', + 120706 : 'Ll', + 120707 : 'Ll', + 120708 : 'Ll', + 120709 : 'Ll', + 120710 : 'Ll', + 120711 : 'Ll', + 120712 : 'Ll', + 120713 : 'Sm', + 120714 : 'Ll', + 120715 : 'Ll', + 120716 : 'Ll', + 120717 : 'Ll', + 120718 : 'Ll', + 120719 : 'Ll', + 120720 : 'Lu', + 120721 : 'Lu', + 120722 : 'Lu', + 120723 : 'Lu', + 120724 : 'Lu', + 120725 : 'Lu', + 120726 : 'Lu', + 120727 : 'Lu', + 120728 : 'Lu', + 120729 : 'Lu', + 120730 : 'Lu', + 120731 : 'Lu', + 120732 : 'Lu', + 120733 : 'Lu', + 120734 : 'Lu', + 120735 : 'Lu', + 120736 : 'Lu', + 120737 : 'Lu', + 120738 : 'Lu', + 120739 : 'Lu', + 120740 : 'Lu', + 120741 : 'Lu', + 120742 : 'Lu', + 120743 : 'Lu', + 120744 : 'Lu', + 120745 : 'Sm', + 120746 : 'Ll', + 120747 : 'Ll', + 120748 : 'Ll', + 120749 : 'Ll', + 120750 : 'Ll', + 120751 : 'Ll', + 120752 : 'Ll', + 120753 : 'Ll', + 120754 : 'Ll', + 120755 : 'Ll', + 120756 : 'Ll', + 120757 : 'Ll', + 120758 : 'Ll', + 120759 : 'Ll', + 120760 : 'Ll', + 120761 : 'Ll', + 120762 : 'Ll', + 120763 : 'Ll', + 120764 : 'Ll', + 120765 : 'Ll', + 120766 : 'Ll', + 120767 : 'Ll', + 120768 : 'Ll', + 120769 : 'Ll', + 120770 : 'Ll', + 120771 : 'Sm', + 120772 : 'Ll', + 120773 : 'Ll', + 120774 : 'Ll', + 120775 : 'Ll', + 120776 : 'Ll', + 120777 : 'Ll', + 120782 : 'Nd', + 120783 : 'Nd', + 120784 : 'Nd', + 120785 : 'Nd', + 120786 : 'Nd', + 120787 : 'Nd', + 120788 : 'Nd', + 120789 : 'Nd', + 120790 : 'Nd', + 120791 : 'Nd', + 120792 : 'Nd', + 120793 : 'Nd', + 120794 : 'Nd', + 120795 : 'Nd', + 120796 : 'Nd', + 120797 : 'Nd', + 120798 : 'Nd', + 120799 : 'Nd', + 120800 : 'Nd', + 120801 : 'Nd', + 120802 : 'Nd', + 120803 : 'Nd', + 120804 : 'Nd', + 120805 : 'Nd', + 120806 : 'Nd', + 120807 : 'Nd', + 120808 : 'Nd', + 120809 : 'Nd', + 120810 : 'Nd', + 120811 : 'Nd', + 120812 : 'Nd', + 120813 : 'Nd', + 120814 : 'Nd', + 120815 : 'Nd', + 120816 : 'Nd', + 120817 : 'Nd', + 120818 : 'Nd', + 120819 : 'Nd', + 120820 : 'Nd', + 120821 : 'Nd', + 120822 : 'Nd', + 120823 : 'Nd', + 120824 : 'Nd', + 120825 : 'Nd', + 120826 : 'Nd', + 120827 : 'Nd', + 120828 : 'Nd', + 120829 : 'Nd', + 120830 : 'Nd', + 120831 : 'Nd', + 131072 : 'Lo', + 173782 : 'Lo', + 194560 : 'Lo', + 194561 : 'Lo', + 194562 : 'Lo', + 194563 : 'Lo', + 194564 : 'Lo', + 194565 : 'Lo', + 194566 : 'Lo', + 194567 : 'Lo', + 194568 : 'Lo', + 194569 : 'Lo', + 194570 : 'Lo', + 194571 : 'Lo', + 194572 : 'Lo', + 194573 : 'Lo', + 194574 : 'Lo', + 194575 : 'Lo', + 194576 : 'Lo', + 194577 : 'Lo', + 194578 : 'Lo', + 194579 : 'Lo', + 194580 : 'Lo', + 194581 : 'Lo', + 194582 : 'Lo', + 194583 : 'Lo', + 194584 : 'Lo', + 194585 : 'Lo', + 194586 : 'Lo', + 194587 : 'Lo', + 194588 : 'Lo', + 194589 : 'Lo', + 194590 : 'Lo', + 194591 : 'Lo', + 194592 : 'Lo', + 194593 : 'Lo', + 194594 : 'Lo', + 194595 : 'Lo', + 194596 : 'Lo', + 194597 : 'Lo', + 194598 : 'Lo', + 194599 : 'Lo', + 194600 : 'Lo', + 194601 : 'Lo', + 194602 : 'Lo', + 194603 : 'Lo', + 194604 : 'Lo', + 194605 : 'Lo', + 194606 : 'Lo', + 194607 : 'Lo', + 194608 : 'Lo', + 194609 : 'Lo', + 194610 : 'Lo', + 194611 : 'Lo', + 194612 : 'Lo', + 194613 : 'Lo', + 194614 : 'Lo', + 194615 : 'Lo', + 194616 : 'Lo', + 194617 : 'Lo', + 194618 : 'Lo', + 194619 : 'Lo', + 194620 : 'Lo', + 194621 : 'Lo', + 194622 : 'Lo', + 194623 : 'Lo', + 194624 : 'Lo', + 194625 : 'Lo', + 194626 : 'Lo', + 194627 : 'Lo', + 194628 : 'Lo', + 194629 : 'Lo', + 194630 : 'Lo', + 194631 : 'Lo', + 194632 : 'Lo', + 194633 : 'Lo', + 194634 : 'Lo', + 194635 : 'Lo', + 194636 : 'Lo', + 194637 : 'Lo', + 194638 : 'Lo', + 194639 : 'Lo', + 194640 : 'Lo', + 194641 : 'Lo', + 194642 : 'Lo', + 194643 : 'Lo', + 194644 : 'Lo', + 194645 : 'Lo', + 194646 : 'Lo', + 194647 : 'Lo', + 194648 : 'Lo', + 194649 : 'Lo', + 194650 : 'Lo', + 194651 : 'Lo', + 194652 : 'Lo', + 194653 : 'Lo', + 194654 : 'Lo', + 194655 : 'Lo', + 194656 : 'Lo', + 194657 : 'Lo', + 194658 : 'Lo', + 194659 : 'Lo', + 194660 : 'Lo', + 194661 : 'Lo', + 194662 : 'Lo', + 194663 : 'Lo', + 194664 : 'Lo', + 194665 : 'Lo', + 194666 : 'Lo', + 194667 : 'Lo', + 194668 : 'Lo', + 194669 : 'Lo', + 194670 : 'Lo', + 194671 : 'Lo', + 194672 : 'Lo', + 194673 : 'Lo', + 194674 : 'Lo', + 194675 : 'Lo', + 194676 : 'Lo', + 194677 : 'Lo', + 194678 : 'Lo', + 194679 : 'Lo', + 194680 : 'Lo', + 194681 : 'Lo', + 194682 : 'Lo', + 194683 : 'Lo', + 194684 : 'Lo', + 194685 : 'Lo', + 194686 : 'Lo', + 194687 : 'Lo', + 194688 : 'Lo', + 194689 : 'Lo', + 194690 : 'Lo', + 194691 : 'Lo', + 194692 : 'Lo', + 194693 : 'Lo', + 194694 : 'Lo', + 194695 : 'Lo', + 194696 : 'Lo', + 194697 : 'Lo', + 194698 : 'Lo', + 194699 : 'Lo', + 194700 : 'Lo', + 194701 : 'Lo', + 194702 : 'Lo', + 194703 : 'Lo', + 194704 : 'Lo', + 194705 : 'Lo', + 194706 : 'Lo', + 194707 : 'Lo', + 194708 : 'Lo', + 194709 : 'Lo', + 194710 : 'Lo', + 194711 : 'Lo', + 194712 : 'Lo', + 194713 : 'Lo', + 194714 : 'Lo', + 194715 : 'Lo', + 194716 : 'Lo', + 194717 : 'Lo', + 194718 : 'Lo', + 194719 : 'Lo', + 194720 : 'Lo', + 194721 : 'Lo', + 194722 : 'Lo', + 194723 : 'Lo', + 194724 : 'Lo', + 194725 : 'Lo', + 194726 : 'Lo', + 194727 : 'Lo', + 194728 : 'Lo', + 194729 : 'Lo', + 194730 : 'Lo', + 194731 : 'Lo', + 194732 : 'Lo', + 194733 : 'Lo', + 194734 : 'Lo', + 194735 : 'Lo', + 194736 : 'Lo', + 194737 : 'Lo', + 194738 : 'Lo', + 194739 : 'Lo', + 194740 : 'Lo', + 194741 : 'Lo', + 194742 : 'Lo', + 194743 : 'Lo', + 194744 : 'Lo', + 194745 : 'Lo', + 194746 : 'Lo', + 194747 : 'Lo', + 194748 : 'Lo', + 194749 : 'Lo', + 194750 : 'Lo', + 194751 : 'Lo', + 194752 : 'Lo', + 194753 : 'Lo', + 194754 : 'Lo', + 194755 : 'Lo', + 194756 : 'Lo', + 194757 : 'Lo', + 194758 : 'Lo', + 194759 : 'Lo', + 194760 : 'Lo', + 194761 : 'Lo', + 194762 : 'Lo', + 194763 : 'Lo', + 194764 : 'Lo', + 194765 : 'Lo', + 194766 : 'Lo', + 194767 : 'Lo', + 194768 : 'Lo', + 194769 : 'Lo', + 194770 : 'Lo', + 194771 : 'Lo', + 194772 : 'Lo', + 194773 : 'Lo', + 194774 : 'Lo', + 194775 : 'Lo', + 194776 : 'Lo', + 194777 : 'Lo', + 194778 : 'Lo', + 194779 : 'Lo', + 194780 : 'Lo', + 194781 : 'Lo', + 194782 : 'Lo', + 194783 : 'Lo', + 194784 : 'Lo', + 194785 : 'Lo', + 194786 : 'Lo', + 194787 : 'Lo', + 194788 : 'Lo', + 194789 : 'Lo', + 194790 : 'Lo', + 194791 : 'Lo', + 194792 : 'Lo', + 194793 : 'Lo', + 194794 : 'Lo', + 194795 : 'Lo', + 194796 : 'Lo', + 194797 : 'Lo', + 194798 : 'Lo', + 194799 : 'Lo', + 194800 : 'Lo', + 194801 : 'Lo', + 194802 : 'Lo', + 194803 : 'Lo', + 194804 : 'Lo', + 194805 : 'Lo', + 194806 : 'Lo', + 194807 : 'Lo', + 194808 : 'Lo', + 194809 : 'Lo', + 194810 : 'Lo', + 194811 : 'Lo', + 194812 : 'Lo', + 194813 : 'Lo', + 194814 : 'Lo', + 194815 : 'Lo', + 194816 : 'Lo', + 194817 : 'Lo', + 194818 : 'Lo', + 194819 : 'Lo', + 194820 : 'Lo', + 194821 : 'Lo', + 194822 : 'Lo', + 194823 : 'Lo', + 194824 : 'Lo', + 194825 : 'Lo', + 194826 : 'Lo', + 194827 : 'Lo', + 194828 : 'Lo', + 194829 : 'Lo', + 194830 : 'Lo', + 194831 : 'Lo', + 194832 : 'Lo', + 194833 : 'Lo', + 194834 : 'Lo', + 194835 : 'Lo', + 194836 : 'Lo', + 194837 : 'Lo', + 194838 : 'Lo', + 194839 : 'Lo', + 194840 : 'Lo', + 194841 : 'Lo', + 194842 : 'Lo', + 194843 : 'Lo', + 194844 : 'Lo', + 194845 : 'Lo', + 194846 : 'Lo', + 194847 : 'Lo', + 194848 : 'Lo', + 194849 : 'Lo', + 194850 : 'Lo', + 194851 : 'Lo', + 194852 : 'Lo', + 194853 : 'Lo', + 194854 : 'Lo', + 194855 : 'Lo', + 194856 : 'Lo', + 194857 : 'Lo', + 194858 : 'Lo', + 194859 : 'Lo', + 194860 : 'Lo', + 194861 : 'Lo', + 194862 : 'Lo', + 194863 : 'Lo', + 194864 : 'Lo', + 194865 : 'Lo', + 194866 : 'Lo', + 194867 : 'Lo', + 194868 : 'Lo', + 194869 : 'Lo', + 194870 : 'Lo', + 194871 : 'Lo', + 194872 : 'Lo', + 194873 : 'Lo', + 194874 : 'Lo', + 194875 : 'Lo', + 194876 : 'Lo', + 194877 : 'Lo', + 194878 : 'Lo', + 194879 : 'Lo', + 194880 : 'Lo', + 194881 : 'Lo', + 194882 : 'Lo', + 194883 : 'Lo', + 194884 : 'Lo', + 194885 : 'Lo', + 194886 : 'Lo', + 194887 : 'Lo', + 194888 : 'Lo', + 194889 : 'Lo', + 194890 : 'Lo', + 194891 : 'Lo', + 194892 : 'Lo', + 194893 : 'Lo', + 194894 : 'Lo', + 194895 : 'Lo', + 194896 : 'Lo', + 194897 : 'Lo', + 194898 : 'Lo', + 194899 : 'Lo', + 194900 : 'Lo', + 194901 : 'Lo', + 194902 : 'Lo', + 194903 : 'Lo', + 194904 : 'Lo', + 194905 : 'Lo', + 194906 : 'Lo', + 194907 : 'Lo', + 194908 : 'Lo', + 194909 : 'Lo', + 194910 : 'Lo', + 194911 : 'Lo', + 194912 : 'Lo', + 194913 : 'Lo', + 194914 : 'Lo', + 194915 : 'Lo', + 194916 : 'Lo', + 194917 : 'Lo', + 194918 : 'Lo', + 194919 : 'Lo', + 194920 : 'Lo', + 194921 : 'Lo', + 194922 : 'Lo', + 194923 : 'Lo', + 194924 : 'Lo', + 194925 : 'Lo', + 194926 : 'Lo', + 194927 : 'Lo', + 194928 : 'Lo', + 194929 : 'Lo', + 194930 : 'Lo', + 194931 : 'Lo', + 194932 : 'Lo', + 194933 : 'Lo', + 194934 : 'Lo', + 194935 : 'Lo', + 194936 : 'Lo', + 194937 : 'Lo', + 194938 : 'Lo', + 194939 : 'Lo', + 194940 : 'Lo', + 194941 : 'Lo', + 194942 : 'Lo', + 194943 : 'Lo', + 194944 : 'Lo', + 194945 : 'Lo', + 194946 : 'Lo', + 194947 : 'Lo', + 194948 : 'Lo', + 194949 : 'Lo', + 194950 : 'Lo', + 194951 : 'Lo', + 194952 : 'Lo', + 194953 : 'Lo', + 194954 : 'Lo', + 194955 : 'Lo', + 194956 : 'Lo', + 194957 : 'Lo', + 194958 : 'Lo', + 194959 : 'Lo', + 194960 : 'Lo', + 194961 : 'Lo', + 194962 : 'Lo', + 194963 : 'Lo', + 194964 : 'Lo', + 194965 : 'Lo', + 194966 : 'Lo', + 194967 : 'Lo', + 194968 : 'Lo', + 194969 : 'Lo', + 194970 : 'Lo', + 194971 : 'Lo', + 194972 : 'Lo', + 194973 : 'Lo', + 194974 : 'Lo', + 194975 : 'Lo', + 194976 : 'Lo', + 194977 : 'Lo', + 194978 : 'Lo', + 194979 : 'Lo', + 194980 : 'Lo', + 194981 : 'Lo', + 194982 : 'Lo', + 194983 : 'Lo', + 194984 : 'Lo', + 194985 : 'Lo', + 194986 : 'Lo', + 194987 : 'Lo', + 194988 : 'Lo', + 194989 : 'Lo', + 194990 : 'Lo', + 194991 : 'Lo', + 194992 : 'Lo', + 194993 : 'Lo', + 194994 : 'Lo', + 194995 : 'Lo', + 194996 : 'Lo', + 194997 : 'Lo', + 194998 : 'Lo', + 194999 : 'Lo', + 195000 : 'Lo', + 195001 : 'Lo', + 195002 : 'Lo', + 195003 : 'Lo', + 195004 : 'Lo', + 195005 : 'Lo', + 195006 : 'Lo', + 195007 : 'Lo', + 195008 : 'Lo', + 195009 : 'Lo', + 195010 : 'Lo', + 195011 : 'Lo', + 195012 : 'Lo', + 195013 : 'Lo', + 195014 : 'Lo', + 195015 : 'Lo', + 195016 : 'Lo', + 195017 : 'Lo', + 195018 : 'Lo', + 195019 : 'Lo', + 195020 : 'Lo', + 195021 : 'Lo', + 195022 : 'Lo', + 195023 : 'Lo', + 195024 : 'Lo', + 195025 : 'Lo', + 195026 : 'Lo', + 195027 : 'Lo', + 195028 : 'Lo', + 195029 : 'Lo', + 195030 : 'Lo', + 195031 : 'Lo', + 195032 : 'Lo', + 195033 : 'Lo', + 195034 : 'Lo', + 195035 : 'Lo', + 195036 : 'Lo', + 195037 : 'Lo', + 195038 : 'Lo', + 195039 : 'Lo', + 195040 : 'Lo', + 195041 : 'Lo', + 195042 : 'Lo', + 195043 : 'Lo', + 195044 : 'Lo', + 195045 : 'Lo', + 195046 : 'Lo', + 195047 : 'Lo', + 195048 : 'Lo', + 195049 : 'Lo', + 195050 : 'Lo', + 195051 : 'Lo', + 195052 : 'Lo', + 195053 : 'Lo', + 195054 : 'Lo', + 195055 : 'Lo', + 195056 : 'Lo', + 195057 : 'Lo', + 195058 : 'Lo', + 195059 : 'Lo', + 195060 : 'Lo', + 195061 : 'Lo', + 195062 : 'Lo', + 195063 : 'Lo', + 195064 : 'Lo', + 195065 : 'Lo', + 195066 : 'Lo', + 195067 : 'Lo', + 195068 : 'Lo', + 195069 : 'Lo', + 195070 : 'Lo', + 195071 : 'Lo', + 195072 : 'Lo', + 195073 : 'Lo', + 195074 : 'Lo', + 195075 : 'Lo', + 195076 : 'Lo', + 195077 : 'Lo', + 195078 : 'Lo', + 195079 : 'Lo', + 195080 : 'Lo', + 195081 : 'Lo', + 195082 : 'Lo', + 195083 : 'Lo', + 195084 : 'Lo', + 195085 : 'Lo', + 195086 : 'Lo', + 195087 : 'Lo', + 195088 : 'Lo', + 195089 : 'Lo', + 195090 : 'Lo', + 195091 : 'Lo', + 195092 : 'Lo', + 195093 : 'Lo', + 195094 : 'Lo', + 195095 : 'Lo', + 195096 : 'Lo', + 195097 : 'Lo', + 195098 : 'Lo', + 195099 : 'Lo', + 195100 : 'Lo', + 195101 : 'Lo', + 917505 : 'Cf', + 917536 : 'Cf', + 917537 : 'Cf', + 917538 : 'Cf', + 917539 : 'Cf', + 917540 : 'Cf', + 917541 : 'Cf', + 917542 : 'Cf', + 917543 : 'Cf', + 917544 : 'Cf', + 917545 : 'Cf', + 917546 : 'Cf', + 917547 : 'Cf', + 917548 : 'Cf', + 917549 : 'Cf', + 917550 : 'Cf', + 917551 : 'Cf', + 917552 : 'Cf', + 917553 : 'Cf', + 917554 : 'Cf', + 917555 : 'Cf', + 917556 : 'Cf', + 917557 : 'Cf', + 917558 : 'Cf', + 917559 : 'Cf', + 917560 : 'Cf', + 917561 : 'Cf', + 917562 : 'Cf', + 917563 : 'Cf', + 917564 : 'Cf', + 917565 : 'Cf', + 917566 : 'Cf', + 917567 : 'Cf', + 917568 : 'Cf', + 917569 : 'Cf', + 917570 : 'Cf', + 917571 : 'Cf', + 917572 : 'Cf', + 917573 : 'Cf', + 917574 : 'Cf', + 917575 : 'Cf', + 917576 : 'Cf', + 917577 : 'Cf', + 917578 : 'Cf', + 917579 : 'Cf', + 917580 : 'Cf', + 917581 : 'Cf', + 917582 : 'Cf', + 917583 : 'Cf', + 917584 : 'Cf', + 917585 : 'Cf', + 917586 : 'Cf', + 917587 : 'Cf', + 917588 : 'Cf', + 917589 : 'Cf', + 917590 : 'Cf', + 917591 : 'Cf', + 917592 : 'Cf', + 917593 : 'Cf', + 917594 : 'Cf', + 917595 : 'Cf', + 917596 : 'Cf', + 917597 : 'Cf', + 917598 : 'Cf', + 917599 : 'Cf', + 917600 : 'Cf', + 917601 : 'Cf', + 917602 : 'Cf', + 917603 : 'Cf', + 917604 : 'Cf', + 917605 : 'Cf', + 917606 : 'Cf', + 917607 : 'Cf', + 917608 : 'Cf', + 917609 : 'Cf', + 917610 : 'Cf', + 917611 : 'Cf', + 917612 : 'Cf', + 917613 : 'Cf', + 917614 : 'Cf', + 917615 : 'Cf', + 917616 : 'Cf', + 917617 : 'Cf', + 917618 : 'Cf', + 917619 : 'Cf', + 917620 : 'Cf', + 917621 : 'Cf', + 917622 : 'Cf', + 917623 : 'Cf', + 917624 : 'Cf', + 917625 : 'Cf', + 917626 : 'Cf', + 917627 : 'Cf', + 917628 : 'Cf', + 917629 : 'Cf', + 917630 : 'Cf', + 917631 : 'Cf', + 983040 : 'Co', + 1048573 : 'Co', + 1048576 : 'Co', + 1114109 : 'Co', +} + +bidirectional = { +} + +combining = { + 768 : 230, + 769 : 230, + 770 : 230, + 771 : 230, + 772 : 230, + 773 : 230, + 774 : 230, + 775 : 230, + 776 : 230, + 777 : 230, + 778 : 230, + 779 : 230, + 780 : 230, + 781 : 230, + 782 : 230, + 783 : 230, + 784 : 230, + 785 : 230, + 786 : 230, + 787 : 230, + 788 : 230, + 789 : 232, + 790 : 220, + 791 : 220, + 792 : 220, + 793 : 220, + 794 : 232, + 795 : 216, + 796 : 220, + 797 : 220, + 798 : 220, + 799 : 220, + 800 : 220, + 801 : 202, + 802 : 202, + 803 : 220, + 804 : 220, + 805 : 220, + 806 : 220, + 807 : 202, + 808 : 202, + 809 : 220, + 810 : 220, + 811 : 220, + 812 : 220, + 813 : 220, + 814 : 220, + 815 : 220, + 816 : 220, + 817 : 220, + 818 : 220, + 819 : 220, + 820 : 1, + 821 : 1, + 822 : 1, + 823 : 1, + 824 : 1, + 825 : 220, + 826 : 220, + 827 : 220, + 828 : 220, + 829 : 230, + 830 : 230, + 831 : 230, + 832 : 230, + 833 : 230, + 834 : 230, + 835 : 230, + 836 : 230, + 837 : 240, + 838 : 230, + 839 : 220, + 840 : 220, + 841 : 220, + 842 : 230, + 843 : 230, + 844 : 230, + 845 : 220, + 846 : 220, + 864 : 234, + 865 : 234, + 866 : 233, + 867 : 230, + 868 : 230, + 869 : 230, + 870 : 230, + 871 : 230, + 872 : 230, + 873 : 230, + 874 : 230, + 875 : 230, + 876 : 230, + 877 : 230, + 878 : 230, + 879 : 230, + 1155 : 230, + 1156 : 230, + 1157 : 230, + 1158 : 230, + 1425 : 220, + 1426 : 230, + 1427 : 230, + 1428 : 230, + 1429 : 230, + 1430 : 220, + 1431 : 230, + 1432 : 230, + 1433 : 230, + 1434 : 222, + 1435 : 220, + 1436 : 230, + 1437 : 230, + 1438 : 230, + 1439 : 230, + 1440 : 230, + 1441 : 230, + 1443 : 220, + 1444 : 220, + 1445 : 220, + 1446 : 220, + 1447 : 220, + 1448 : 230, + 1449 : 230, + 1450 : 220, + 1451 : 230, + 1452 : 230, + 1453 : 222, + 1454 : 228, + 1455 : 230, + 1456 : 10, + 1457 : 11, + 1458 : 12, + 1459 : 13, + 1460 : 14, + 1461 : 15, + 1462 : 16, + 1463 : 17, + 1464 : 18, + 1465 : 19, + 1467 : 20, + 1468 : 21, + 1469 : 22, + 1471 : 23, + 1473 : 24, + 1474 : 25, + 1476 : 230, + 1611 : 27, + 1612 : 28, + 1613 : 29, + 1614 : 30, + 1615 : 31, + 1616 : 32, + 1617 : 33, + 1618 : 34, + 1619 : 230, + 1620 : 230, + 1621 : 220, + 1648 : 35, + 1750 : 230, + 1751 : 230, + 1752 : 230, + 1753 : 230, + 1754 : 230, + 1755 : 230, + 1756 : 230, + 1759 : 230, + 1760 : 230, + 1761 : 230, + 1762 : 230, + 1763 : 220, + 1764 : 230, + 1767 : 230, + 1768 : 230, + 1770 : 220, + 1771 : 230, + 1772 : 230, + 1773 : 220, + 1809 : 36, + 1840 : 230, + 1841 : 220, + 1842 : 230, + 1843 : 230, + 1844 : 220, + 1845 : 230, + 1846 : 230, + 1847 : 220, + 1848 : 220, + 1849 : 220, + 1850 : 230, + 1851 : 220, + 1852 : 220, + 1853 : 230, + 1854 : 220, + 1855 : 230, + 1856 : 230, + 1857 : 230, + 1858 : 220, + 1859 : 230, + 1860 : 220, + 1861 : 230, + 1862 : 220, + 1863 : 230, + 1864 : 220, + 1865 : 230, + 1866 : 230, + 2364 : 7, + 2381 : 9, + 2385 : 230, + 2386 : 220, + 2387 : 230, + 2388 : 230, + 2492 : 7, + 2509 : 9, + 2620 : 7, + 2637 : 9, + 2748 : 7, + 2765 : 9, + 2876 : 7, + 2893 : 9, + 3021 : 9, + 3149 : 9, + 3157 : 84, + 3158 : 91, + 3277 : 9, + 3405 : 9, + 3530 : 9, + 3640 : 103, + 3641 : 103, + 3642 : 9, + 3656 : 107, + 3657 : 107, + 3658 : 107, + 3659 : 107, + 3768 : 118, + 3769 : 118, + 3784 : 122, + 3785 : 122, + 3786 : 122, + 3787 : 122, + 3864 : 220, + 3865 : 220, + 3893 : 220, + 3895 : 220, + 3897 : 216, + 3953 : 129, + 3954 : 130, + 3956 : 132, + 3962 : 130, + 3963 : 130, + 3964 : 130, + 3965 : 130, + 3968 : 130, + 3970 : 230, + 3971 : 230, + 3972 : 9, + 3974 : 230, + 3975 : 230, + 4038 : 220, + 4151 : 7, + 4153 : 9, + 5908 : 9, + 5940 : 9, + 6098 : 9, + 6313 : 228, + 8400 : 230, + 8401 : 230, + 8402 : 1, + 8403 : 1, + 8404 : 230, + 8405 : 230, + 8406 : 230, + 8407 : 230, + 8408 : 1, + 8409 : 1, + 8410 : 1, + 8411 : 230, + 8412 : 230, + 8417 : 230, + 8421 : 1, + 8422 : 1, + 8423 : 230, + 8424 : 220, + 8425 : 230, + 8426 : 1, + 12330 : 218, + 12331 : 228, + 12332 : 232, + 12333 : 222, + 12334 : 224, + 12335 : 224, + 12441 : 8, + 12442 : 8, + 64286 : 26, + 65056 : 230, + 65057 : 230, + 65058 : 230, + 65059 : 230, + 119141 : 216, + 119142 : 216, + 119143 : 1, + 119144 : 1, + 119145 : 1, + 119149 : 226, + 119150 : 216, + 119151 : 216, + 119152 : 216, + 119153 : 216, + 119154 : 216, + 119163 : 220, + 119164 : 220, + 119165 : 220, + 119166 : 220, + 119167 : 220, + 119168 : 220, + 119169 : 220, + 119170 : 220, + 119173 : 230, + 119174 : 230, + 119175 : 230, + 119176 : 230, + 119177 : 230, + 119178 : 220, + 119179 : 220, + 119210 : 230, + 119211 : 230, + 119212 : 230, + 119213 : 230, +} + +mirrored = { +} + +decomposition = { +} + +uppercase = { + 97 : 65, + 98 : 66, + 99 : 67, + 100 : 68, + 101 : 69, + 102 : 70, + 103 : 71, + 104 : 72, + 105 : 73, + 106 : 74, + 107 : 75, + 108 : 76, + 109 : 77, + 110 : 78, + 111 : 79, + 112 : 80, + 113 : 81, + 114 : 82, + 115 : 83, + 116 : 84, + 117 : 85, + 118 : 86, + 119 : 87, + 120 : 88, + 121 : 89, + 122 : 90, + 181 : 924, + 224 : 192, + 225 : 193, + 226 : 194, + 227 : 195, + 228 : 196, + 229 : 197, + 230 : 198, + 231 : 199, + 232 : 200, + 233 : 201, + 234 : 202, + 235 : 203, + 236 : 204, + 237 : 205, + 238 : 206, + 239 : 207, + 240 : 208, + 241 : 209, + 242 : 210, + 243 : 211, + 244 : 212, + 245 : 213, + 246 : 214, + 248 : 216, + 249 : 217, + 250 : 218, + 251 : 219, + 252 : 220, + 253 : 221, + 254 : 222, + 255 : 376, + 257 : 256, + 259 : 258, + 261 : 260, + 263 : 262, + 265 : 264, + 267 : 266, + 269 : 268, + 271 : 270, + 273 : 272, + 275 : 274, + 277 : 276, + 279 : 278, + 281 : 280, + 283 : 282, + 285 : 284, + 287 : 286, + 289 : 288, + 291 : 290, + 293 : 292, + 295 : 294, + 297 : 296, + 299 : 298, + 301 : 300, + 303 : 302, + 305 : 73, + 307 : 306, + 309 : 308, + 311 : 310, + 314 : 313, + 316 : 315, + 318 : 317, + 320 : 319, + 322 : 321, + 324 : 323, + 326 : 325, + 328 : 327, + 331 : 330, + 333 : 332, + 335 : 334, + 337 : 336, + 339 : 338, + 341 : 340, + 343 : 342, + 345 : 344, + 347 : 346, + 349 : 348, + 351 : 350, + 353 : 352, + 355 : 354, + 357 : 356, + 359 : 358, + 361 : 360, + 363 : 362, + 365 : 364, + 367 : 366, + 369 : 368, + 371 : 370, + 373 : 372, + 375 : 374, + 378 : 377, + 380 : 379, + 382 : 381, + 383 : 83, + 387 : 386, + 389 : 388, + 392 : 391, + 396 : 395, + 402 : 401, + 405 : 502, + 409 : 408, + 414 : 544, + 417 : 416, + 419 : 418, + 421 : 420, + 424 : 423, + 429 : 428, + 432 : 431, + 436 : 435, + 438 : 437, + 441 : 440, + 445 : 444, + 447 : 503, + 453 : 452, + 454 : 452, + 456 : 455, + 457 : 455, + 459 : 458, + 460 : 458, + 462 : 461, + 464 : 463, + 466 : 465, + 468 : 467, + 470 : 469, + 472 : 471, + 474 : 473, + 476 : 475, + 477 : 398, + 479 : 478, + 481 : 480, + 483 : 482, + 485 : 484, + 487 : 486, + 489 : 488, + 491 : 490, + 493 : 492, + 495 : 494, + 498 : 497, + 499 : 497, + 501 : 500, + 505 : 504, + 507 : 506, + 509 : 508, + 511 : 510, + 513 : 512, + 515 : 514, + 517 : 516, + 519 : 518, + 521 : 520, + 523 : 522, + 525 : 524, + 527 : 526, + 529 : 528, + 531 : 530, + 533 : 532, + 535 : 534, + 537 : 536, + 539 : 538, + 541 : 540, + 543 : 542, + 547 : 546, + 549 : 548, + 551 : 550, + 553 : 552, + 555 : 554, + 557 : 556, + 559 : 558, + 561 : 560, + 563 : 562, + 595 : 385, + 596 : 390, + 598 : 393, + 599 : 394, + 601 : 399, + 603 : 400, + 608 : 403, + 611 : 404, + 616 : 407, + 617 : 406, + 623 : 412, + 626 : 413, + 629 : 415, + 640 : 422, + 643 : 425, + 648 : 430, + 650 : 433, + 651 : 434, + 658 : 439, + 837 : 921, + 940 : 902, + 941 : 904, + 942 : 905, + 943 : 906, + 945 : 913, + 946 : 914, + 947 : 915, + 948 : 916, + 949 : 917, + 950 : 918, + 951 : 919, + 952 : 920, + 953 : 921, + 954 : 922, + 955 : 923, + 956 : 924, + 957 : 925, + 958 : 926, + 959 : 927, + 960 : 928, + 961 : 929, + 962 : 931, + 963 : 931, + 964 : 932, + 965 : 933, + 966 : 934, + 967 : 935, + 968 : 936, + 969 : 937, + 970 : 938, + 971 : 939, + 972 : 908, + 973 : 910, + 974 : 911, + 976 : 914, + 977 : 920, + 981 : 934, + 982 : 928, + 985 : 984, + 987 : 986, + 989 : 988, + 991 : 990, + 993 : 992, + 995 : 994, + 997 : 996, + 999 : 998, + 1001 : 1000, + 1003 : 1002, + 1005 : 1004, + 1007 : 1006, + 1008 : 922, + 1009 : 929, + 1010 : 931, + 1013 : 917, + 1072 : 1040, + 1073 : 1041, + 1074 : 1042, + 1075 : 1043, + 1076 : 1044, + 1077 : 1045, + 1078 : 1046, + 1079 : 1047, + 1080 : 1048, + 1081 : 1049, + 1082 : 1050, + 1083 : 1051, + 1084 : 1052, + 1085 : 1053, + 1086 : 1054, + 1087 : 1055, + 1088 : 1056, + 1089 : 1057, + 1090 : 1058, + 1091 : 1059, + 1092 : 1060, + 1093 : 1061, + 1094 : 1062, + 1095 : 1063, + 1096 : 1064, + 1097 : 1065, + 1098 : 1066, + 1099 : 1067, + 1100 : 1068, + 1101 : 1069, + 1102 : 1070, + 1103 : 1071, + 1104 : 1024, + 1105 : 1025, + 1106 : 1026, + 1107 : 1027, + 1108 : 1028, + 1109 : 1029, + 1110 : 1030, + 1111 : 1031, + 1112 : 1032, + 1113 : 1033, + 1114 : 1034, + 1115 : 1035, + 1116 : 1036, + 1117 : 1037, + 1118 : 1038, + 1119 : 1039, + 1121 : 1120, + 1123 : 1122, + 1125 : 1124, + 1127 : 1126, + 1129 : 1128, + 1131 : 1130, + 1133 : 1132, + 1135 : 1134, + 1137 : 1136, + 1139 : 1138, + 1141 : 1140, + 1143 : 1142, + 1145 : 1144, + 1147 : 1146, + 1149 : 1148, + 1151 : 1150, + 1153 : 1152, + 1163 : 1162, + 1165 : 1164, + 1167 : 1166, + 1169 : 1168, + 1171 : 1170, + 1173 : 1172, + 1175 : 1174, + 1177 : 1176, + 1179 : 1178, + 1181 : 1180, + 1183 : 1182, + 1185 : 1184, + 1187 : 1186, + 1189 : 1188, + 1191 : 1190, + 1193 : 1192, + 1195 : 1194, + 1197 : 1196, + 1199 : 1198, + 1201 : 1200, + 1203 : 1202, + 1205 : 1204, + 1207 : 1206, + 1209 : 1208, + 1211 : 1210, + 1213 : 1212, + 1215 : 1214, + 1218 : 1217, + 1220 : 1219, + 1222 : 1221, + 1224 : 1223, + 1226 : 1225, + 1228 : 1227, + 1230 : 1229, + 1233 : 1232, + 1235 : 1234, + 1237 : 1236, + 1239 : 1238, + 1241 : 1240, + 1243 : 1242, + 1245 : 1244, + 1247 : 1246, + 1249 : 1248, + 1251 : 1250, + 1253 : 1252, + 1255 : 1254, + 1257 : 1256, + 1259 : 1258, + 1261 : 1260, + 1263 : 1262, + 1265 : 1264, + 1267 : 1266, + 1269 : 1268, + 1273 : 1272, + 1281 : 1280, + 1283 : 1282, + 1285 : 1284, + 1287 : 1286, + 1289 : 1288, + 1291 : 1290, + 1293 : 1292, + 1295 : 1294, + 1377 : 1329, + 1378 : 1330, + 1379 : 1331, + 1380 : 1332, + 1381 : 1333, + 1382 : 1334, + 1383 : 1335, + 1384 : 1336, + 1385 : 1337, + 1386 : 1338, + 1387 : 1339, + 1388 : 1340, + 1389 : 1341, + 1390 : 1342, + 1391 : 1343, + 1392 : 1344, + 1393 : 1345, + 1394 : 1346, + 1395 : 1347, + 1396 : 1348, + 1397 : 1349, + 1398 : 1350, + 1399 : 1351, + 1400 : 1352, + 1401 : 1353, + 1402 : 1354, + 1403 : 1355, + 1404 : 1356, + 1405 : 1357, + 1406 : 1358, + 1407 : 1359, + 1408 : 1360, + 1409 : 1361, + 1410 : 1362, + 1411 : 1363, + 1412 : 1364, + 1413 : 1365, + 1414 : 1366, + 7681 : 7680, + 7683 : 7682, + 7685 : 7684, + 7687 : 7686, + 7689 : 7688, + 7691 : 7690, + 7693 : 7692, + 7695 : 7694, + 7697 : 7696, + 7699 : 7698, + 7701 : 7700, + 7703 : 7702, + 7705 : 7704, + 7707 : 7706, + 7709 : 7708, + 7711 : 7710, + 7713 : 7712, + 7715 : 7714, + 7717 : 7716, + 7719 : 7718, + 7721 : 7720, + 7723 : 7722, + 7725 : 7724, + 7727 : 7726, + 7729 : 7728, + 7731 : 7730, + 7733 : 7732, + 7735 : 7734, + 7737 : 7736, + 7739 : 7738, + 7741 : 7740, + 7743 : 7742, + 7745 : 7744, + 7747 : 7746, + 7749 : 7748, + 7751 : 7750, + 7753 : 7752, + 7755 : 7754, + 7757 : 7756, + 7759 : 7758, + 7761 : 7760, + 7763 : 7762, + 7765 : 7764, + 7767 : 7766, + 7769 : 7768, + 7771 : 7770, + 7773 : 7772, + 7775 : 7774, + 7777 : 7776, + 7779 : 7778, + 7781 : 7780, + 7783 : 7782, + 7785 : 7784, + 7787 : 7786, + 7789 : 7788, + 7791 : 7790, + 7793 : 7792, + 7795 : 7794, + 7797 : 7796, + 7799 : 7798, + 7801 : 7800, + 7803 : 7802, + 7805 : 7804, + 7807 : 7806, + 7809 : 7808, + 7811 : 7810, + 7813 : 7812, + 7815 : 7814, + 7817 : 7816, + 7819 : 7818, + 7821 : 7820, + 7823 : 7822, + 7825 : 7824, + 7827 : 7826, + 7829 : 7828, + 7835 : 7776, + 7841 : 7840, + 7843 : 7842, + 7845 : 7844, + 7847 : 7846, + 7849 : 7848, + 7851 : 7850, + 7853 : 7852, + 7855 : 7854, + 7857 : 7856, + 7859 : 7858, + 7861 : 7860, + 7863 : 7862, + 7865 : 7864, + 7867 : 7866, + 7869 : 7868, + 7871 : 7870, + 7873 : 7872, + 7875 : 7874, + 7877 : 7876, + 7879 : 7878, + 7881 : 7880, + 7883 : 7882, + 7885 : 7884, + 7887 : 7886, + 7889 : 7888, + 7891 : 7890, + 7893 : 7892, + 7895 : 7894, + 7897 : 7896, + 7899 : 7898, + 7901 : 7900, + 7903 : 7902, + 7905 : 7904, + 7907 : 7906, + 7909 : 7908, + 7911 : 7910, + 7913 : 7912, + 7915 : 7914, + 7917 : 7916, + 7919 : 7918, + 7921 : 7920, + 7923 : 7922, + 7925 : 7924, + 7927 : 7926, + 7929 : 7928, + 7936 : 7944, + 7937 : 7945, + 7938 : 7946, + 7939 : 7947, + 7940 : 7948, + 7941 : 7949, + 7942 : 7950, + 7943 : 7951, + 7952 : 7960, + 7953 : 7961, + 7954 : 7962, + 7955 : 7963, + 7956 : 7964, + 7957 : 7965, + 7968 : 7976, + 7969 : 7977, + 7970 : 7978, + 7971 : 7979, + 7972 : 7980, + 7973 : 7981, + 7974 : 7982, + 7975 : 7983, + 7984 : 7992, + 7985 : 7993, + 7986 : 7994, + 7987 : 7995, + 7988 : 7996, + 7989 : 7997, + 7990 : 7998, + 7991 : 7999, + 8000 : 8008, + 8001 : 8009, + 8002 : 8010, + 8003 : 8011, + 8004 : 8012, + 8005 : 8013, + 8017 : 8025, + 8019 : 8027, + 8021 : 8029, + 8023 : 8031, + 8032 : 8040, + 8033 : 8041, + 8034 : 8042, + 8035 : 8043, + 8036 : 8044, + 8037 : 8045, + 8038 : 8046, + 8039 : 8047, + 8048 : 8122, + 8049 : 8123, + 8050 : 8136, + 8051 : 8137, + 8052 : 8138, + 8053 : 8139, + 8054 : 8154, + 8055 : 8155, + 8056 : 8184, + 8057 : 8185, + 8058 : 8170, + 8059 : 8171, + 8060 : 8186, + 8061 : 8187, + 8064 : 8072, + 8065 : 8073, + 8066 : 8074, + 8067 : 8075, + 8068 : 8076, + 8069 : 8077, + 8070 : 8078, + 8071 : 8079, + 8080 : 8088, + 8081 : 8089, + 8082 : 8090, + 8083 : 8091, + 8084 : 8092, + 8085 : 8093, + 8086 : 8094, + 8087 : 8095, + 8096 : 8104, + 8097 : 8105, + 8098 : 8106, + 8099 : 8107, + 8100 : 8108, + 8101 : 8109, + 8102 : 8110, + 8103 : 8111, + 8112 : 8120, + 8113 : 8121, + 8115 : 8124, + 8126 : 921, + 8131 : 8140, + 8144 : 8152, + 8145 : 8153, + 8160 : 8168, + 8161 : 8169, + 8165 : 8172, + 8179 : 8188, + 8560 : 8544, + 8561 : 8545, + 8562 : 8546, + 8563 : 8547, + 8564 : 8548, + 8565 : 8549, + 8566 : 8550, + 8567 : 8551, + 8568 : 8552, + 8569 : 8553, + 8570 : 8554, + 8571 : 8555, + 8572 : 8556, + 8573 : 8557, + 8574 : 8558, + 8575 : 8559, + 9424 : 9398, + 9425 : 9399, + 9426 : 9400, + 9427 : 9401, + 9428 : 9402, + 9429 : 9403, + 9430 : 9404, + 9431 : 9405, + 9432 : 9406, + 9433 : 9407, + 9434 : 9408, + 9435 : 9409, + 9436 : 9410, + 9437 : 9411, + 9438 : 9412, + 9439 : 9413, + 9440 : 9414, + 9441 : 9415, + 9442 : 9416, + 9443 : 9417, + 9444 : 9418, + 9445 : 9419, + 9446 : 9420, + 9447 : 9421, + 9448 : 9422, + 9449 : 9423, + 65345 : 65313, + 65346 : 65314, + 65347 : 65315, + 65348 : 65316, + 65349 : 65317, + 65350 : 65318, + 65351 : 65319, + 65352 : 65320, + 65353 : 65321, + 65354 : 65322, + 65355 : 65323, + 65356 : 65324, + 65357 : 65325, + 65358 : 65326, + 65359 : 65327, + 65360 : 65328, + 65361 : 65329, + 65362 : 65330, + 65363 : 65331, + 65364 : 65332, + 65365 : 65333, + 65366 : 65334, + 65367 : 65335, + 65368 : 65336, + 65369 : 65337, + 65370 : 65338, + 66600 : 66560, + 66601 : 66561, + 66602 : 66562, + 66603 : 66563, + 66604 : 66564, + 66605 : 66565, + 66606 : 66566, + 66607 : 66567, + 66608 : 66568, + 66609 : 66569, + 66610 : 66570, + 66611 : 66571, + 66612 : 66572, + 66613 : 66573, + 66614 : 66574, + 66615 : 66575, + 66616 : 66576, + 66617 : 66577, + 66618 : 66578, + 66619 : 66579, + 66620 : 66580, + 66621 : 66581, + 66622 : 66582, + 66623 : 66583, + 66624 : 66584, + 66625 : 66585, + 66626 : 66586, + 66627 : 66587, + 66628 : 66588, + 66629 : 66589, + 66630 : 66590, + 66631 : 66591, + 66632 : 66592, + 66633 : 66593, + 66634 : 66594, + 66635 : 66595, + 66636 : 66596, + 66637 : 66597, +} + +lowercase = { + 65 : 97, + 66 : 98, + 67 : 99, + 68 : 100, + 69 : 101, + 70 : 102, + 71 : 103, + 72 : 104, + 73 : 105, + 74 : 106, + 75 : 107, + 76 : 108, + 77 : 109, + 78 : 110, + 79 : 111, + 80 : 112, + 81 : 113, + 82 : 114, + 83 : 115, + 84 : 116, + 85 : 117, + 86 : 118, + 87 : 119, + 88 : 120, + 89 : 121, + 90 : 122, + 192 : 224, + 193 : 225, + 194 : 226, + 195 : 227, + 196 : 228, + 197 : 229, + 198 : 230, + 199 : 231, + 200 : 232, + 201 : 233, + 202 : 234, + 203 : 235, + 204 : 236, + 205 : 237, + 206 : 238, + 207 : 239, + 208 : 240, + 209 : 241, + 210 : 242, + 211 : 243, + 212 : 244, + 213 : 245, + 214 : 246, + 216 : 248, + 217 : 249, + 218 : 250, + 219 : 251, + 220 : 252, + 221 : 253, + 222 : 254, + 256 : 257, + 258 : 259, + 260 : 261, + 262 : 263, + 264 : 265, + 266 : 267, + 268 : 269, + 270 : 271, + 272 : 273, + 274 : 275, + 276 : 277, + 278 : 279, + 280 : 281, + 282 : 283, + 284 : 285, + 286 : 287, + 288 : 289, + 290 : 291, + 292 : 293, + 294 : 295, + 296 : 297, + 298 : 299, + 300 : 301, + 302 : 303, + 304 : 105, + 306 : 307, + 308 : 309, + 310 : 311, + 313 : 314, + 315 : 316, + 317 : 318, + 319 : 320, + 321 : 322, + 323 : 324, + 325 : 326, + 327 : 328, + 330 : 331, + 332 : 333, + 334 : 335, + 336 : 337, + 338 : 339, + 340 : 341, + 342 : 343, + 344 : 345, + 346 : 347, + 348 : 349, + 350 : 351, + 352 : 353, + 354 : 355, + 356 : 357, + 358 : 359, + 360 : 361, + 362 : 363, + 364 : 365, + 366 : 367, + 368 : 369, + 370 : 371, + 372 : 373, + 374 : 375, + 376 : 255, + 377 : 378, + 379 : 380, + 381 : 382, + 385 : 595, + 386 : 387, + 388 : 389, + 390 : 596, + 391 : 392, + 393 : 598, + 394 : 599, + 395 : 396, + 398 : 477, + 399 : 601, + 400 : 603, + 401 : 402, + 403 : 608, + 404 : 611, + 406 : 617, + 407 : 616, + 408 : 409, + 412 : 623, + 413 : 626, + 415 : 629, + 416 : 417, + 418 : 419, + 420 : 421, + 422 : 640, + 423 : 424, + 425 : 643, + 428 : 429, + 430 : 648, + 431 : 432, + 433 : 650, + 434 : 651, + 435 : 436, + 437 : 438, + 439 : 658, + 440 : 441, + 444 : 445, + 452 : 454, + 453 : 454, + 455 : 457, + 456 : 457, + 458 : 460, + 459 : 460, + 461 : 462, + 463 : 464, + 465 : 466, + 467 : 468, + 469 : 470, + 471 : 472, + 473 : 474, + 475 : 476, + 478 : 479, + 480 : 481, + 482 : 483, + 484 : 485, + 486 : 487, + 488 : 489, + 490 : 491, + 492 : 493, + 494 : 495, + 497 : 499, + 498 : 499, + 500 : 501, + 502 : 405, + 503 : 447, + 504 : 505, + 506 : 507, + 508 : 509, + 510 : 511, + 512 : 513, + 514 : 515, + 516 : 517, + 518 : 519, + 520 : 521, + 522 : 523, + 524 : 525, + 526 : 527, + 528 : 529, + 530 : 531, + 532 : 533, + 534 : 535, + 536 : 537, + 538 : 539, + 540 : 541, + 542 : 543, + 544 : 414, + 546 : 547, + 548 : 549, + 550 : 551, + 552 : 553, + 554 : 555, + 556 : 557, + 558 : 559, + 560 : 561, + 562 : 563, + 902 : 940, + 904 : 941, + 905 : 942, + 906 : 943, + 908 : 972, + 910 : 973, + 911 : 974, + 913 : 945, + 914 : 946, + 915 : 947, + 916 : 948, + 917 : 949, + 918 : 950, + 919 : 951, + 920 : 952, + 921 : 953, + 922 : 954, + 923 : 955, + 924 : 956, + 925 : 957, + 926 : 958, + 927 : 959, + 928 : 960, + 929 : 961, + 931 : 963, + 932 : 964, + 933 : 965, + 934 : 966, + 935 : 967, + 936 : 968, + 937 : 969, + 938 : 970, + 939 : 971, + 984 : 985, + 986 : 987, + 988 : 989, + 990 : 991, + 992 : 993, + 994 : 995, + 996 : 997, + 998 : 999, + 1000 : 1001, + 1002 : 1003, + 1004 : 1005, + 1006 : 1007, + 1012 : 952, + 1024 : 1104, + 1025 : 1105, + 1026 : 1106, + 1027 : 1107, + 1028 : 1108, + 1029 : 1109, + 1030 : 1110, + 1031 : 1111, + 1032 : 1112, + 1033 : 1113, + 1034 : 1114, + 1035 : 1115, + 1036 : 1116, + 1037 : 1117, + 1038 : 1118, + 1039 : 1119, + 1040 : 1072, + 1041 : 1073, + 1042 : 1074, + 1043 : 1075, + 1044 : 1076, + 1045 : 1077, + 1046 : 1078, + 1047 : 1079, + 1048 : 1080, + 1049 : 1081, + 1050 : 1082, + 1051 : 1083, + 1052 : 1084, + 1053 : 1085, + 1054 : 1086, + 1055 : 1087, + 1056 : 1088, + 1057 : 1089, + 1058 : 1090, + 1059 : 1091, + 1060 : 1092, + 1061 : 1093, + 1062 : 1094, + 1063 : 1095, + 1064 : 1096, + 1065 : 1097, + 1066 : 1098, + 1067 : 1099, + 1068 : 1100, + 1069 : 1101, + 1070 : 1102, + 1071 : 1103, + 1120 : 1121, + 1122 : 1123, + 1124 : 1125, + 1126 : 1127, + 1128 : 1129, + 1130 : 1131, + 1132 : 1133, + 1134 : 1135, + 1136 : 1137, + 1138 : 1139, + 1140 : 1141, + 1142 : 1143, + 1144 : 1145, + 1146 : 1147, + 1148 : 1149, + 1150 : 1151, + 1152 : 1153, + 1162 : 1163, + 1164 : 1165, + 1166 : 1167, + 1168 : 1169, + 1170 : 1171, + 1172 : 1173, + 1174 : 1175, + 1176 : 1177, + 1178 : 1179, + 1180 : 1181, + 1182 : 1183, + 1184 : 1185, + 1186 : 1187, + 1188 : 1189, + 1190 : 1191, + 1192 : 1193, + 1194 : 1195, + 1196 : 1197, + 1198 : 1199, + 1200 : 1201, + 1202 : 1203, + 1204 : 1205, + 1206 : 1207, + 1208 : 1209, + 1210 : 1211, + 1212 : 1213, + 1214 : 1215, + 1217 : 1218, + 1219 : 1220, + 1221 : 1222, + 1223 : 1224, + 1225 : 1226, + 1227 : 1228, + 1229 : 1230, + 1232 : 1233, + 1234 : 1235, + 1236 : 1237, + 1238 : 1239, + 1240 : 1241, + 1242 : 1243, + 1244 : 1245, + 1246 : 1247, + 1248 : 1249, + 1250 : 1251, + 1252 : 1253, + 1254 : 1255, + 1256 : 1257, + 1258 : 1259, + 1260 : 1261, + 1262 : 1263, + 1264 : 1265, + 1266 : 1267, + 1268 : 1269, + 1272 : 1273, + 1280 : 1281, + 1282 : 1283, + 1284 : 1285, + 1286 : 1287, + 1288 : 1289, + 1290 : 1291, + 1292 : 1293, + 1294 : 1295, + 1329 : 1377, + 1330 : 1378, + 1331 : 1379, + 1332 : 1380, + 1333 : 1381, + 1334 : 1382, + 1335 : 1383, + 1336 : 1384, + 1337 : 1385, + 1338 : 1386, + 1339 : 1387, + 1340 : 1388, + 1341 : 1389, + 1342 : 1390, + 1343 : 1391, + 1344 : 1392, + 1345 : 1393, + 1346 : 1394, + 1347 : 1395, + 1348 : 1396, + 1349 : 1397, + 1350 : 1398, + 1351 : 1399, + 1352 : 1400, + 1353 : 1401, + 1354 : 1402, + 1355 : 1403, + 1356 : 1404, + 1357 : 1405, + 1358 : 1406, + 1359 : 1407, + 1360 : 1408, + 1361 : 1409, + 1362 : 1410, + 1363 : 1411, + 1364 : 1412, + 1365 : 1413, + 1366 : 1414, + 7680 : 7681, + 7682 : 7683, + 7684 : 7685, + 7686 : 7687, + 7688 : 7689, + 7690 : 7691, + 7692 : 7693, + 7694 : 7695, + 7696 : 7697, + 7698 : 7699, + 7700 : 7701, + 7702 : 7703, + 7704 : 7705, + 7706 : 7707, + 7708 : 7709, + 7710 : 7711, + 7712 : 7713, + 7714 : 7715, + 7716 : 7717, + 7718 : 7719, + 7720 : 7721, + 7722 : 7723, + 7724 : 7725, + 7726 : 7727, + 7728 : 7729, + 7730 : 7731, + 7732 : 7733, + 7734 : 7735, + 7736 : 7737, + 7738 : 7739, + 7740 : 7741, + 7742 : 7743, + 7744 : 7745, + 7746 : 7747, + 7748 : 7749, + 7750 : 7751, + 7752 : 7753, + 7754 : 7755, + 7756 : 7757, + 7758 : 7759, + 7760 : 7761, + 7762 : 7763, + 7764 : 7765, + 7766 : 7767, + 7768 : 7769, + 7770 : 7771, + 7772 : 7773, + 7774 : 7775, + 7776 : 7777, + 7778 : 7779, + 7780 : 7781, + 7782 : 7783, + 7784 : 7785, + 7786 : 7787, + 7788 : 7789, + 7790 : 7791, + 7792 : 7793, + 7794 : 7795, + 7796 : 7797, + 7798 : 7799, + 7800 : 7801, + 7802 : 7803, + 7804 : 7805, + 7806 : 7807, + 7808 : 7809, + 7810 : 7811, + 7812 : 7813, + 7814 : 7815, + 7816 : 7817, + 7818 : 7819, + 7820 : 7821, + 7822 : 7823, + 7824 : 7825, + 7826 : 7827, + 7828 : 7829, + 7840 : 7841, + 7842 : 7843, + 7844 : 7845, + 7846 : 7847, + 7848 : 7849, + 7850 : 7851, + 7852 : 7853, + 7854 : 7855, + 7856 : 7857, + 7858 : 7859, + 7860 : 7861, + 7862 : 7863, + 7864 : 7865, + 7866 : 7867, + 7868 : 7869, + 7870 : 7871, + 7872 : 7873, + 7874 : 7875, + 7876 : 7877, + 7878 : 7879, + 7880 : 7881, + 7882 : 7883, + 7884 : 7885, + 7886 : 7887, + 7888 : 7889, + 7890 : 7891, + 7892 : 7893, + 7894 : 7895, + 7896 : 7897, + 7898 : 7899, + 7900 : 7901, + 7902 : 7903, + 7904 : 7905, + 7906 : 7907, + 7908 : 7909, + 7910 : 7911, + 7912 : 7913, + 7914 : 7915, + 7916 : 7917, + 7918 : 7919, + 7920 : 7921, + 7922 : 7923, + 7924 : 7925, + 7926 : 7927, + 7928 : 7929, + 7944 : 7936, + 7945 : 7937, + 7946 : 7938, + 7947 : 7939, + 7948 : 7940, + 7949 : 7941, + 7950 : 7942, + 7951 : 7943, + 7960 : 7952, + 7961 : 7953, + 7962 : 7954, + 7963 : 7955, + 7964 : 7956, + 7965 : 7957, + 7976 : 7968, + 7977 : 7969, + 7978 : 7970, + 7979 : 7971, + 7980 : 7972, + 7981 : 7973, + 7982 : 7974, + 7983 : 7975, + 7992 : 7984, + 7993 : 7985, + 7994 : 7986, + 7995 : 7987, + 7996 : 7988, + 7997 : 7989, + 7998 : 7990, + 7999 : 7991, + 8008 : 8000, + 8009 : 8001, + 8010 : 8002, + 8011 : 8003, + 8012 : 8004, + 8013 : 8005, + 8025 : 8017, + 8027 : 8019, + 8029 : 8021, + 8031 : 8023, + 8040 : 8032, + 8041 : 8033, + 8042 : 8034, + 8043 : 8035, + 8044 : 8036, + 8045 : 8037, + 8046 : 8038, + 8047 : 8039, + 8072 : 8064, + 8073 : 8065, + 8074 : 8066, + 8075 : 8067, + 8076 : 8068, + 8077 : 8069, + 8078 : 8070, + 8079 : 8071, + 8088 : 8080, + 8089 : 8081, + 8090 : 8082, + 8091 : 8083, + 8092 : 8084, + 8093 : 8085, + 8094 : 8086, + 8095 : 8087, + 8104 : 8096, + 8105 : 8097, + 8106 : 8098, + 8107 : 8099, + 8108 : 8100, + 8109 : 8101, + 8110 : 8102, + 8111 : 8103, + 8120 : 8112, + 8121 : 8113, + 8122 : 8048, + 8123 : 8049, + 8124 : 8115, + 8136 : 8050, + 8137 : 8051, + 8138 : 8052, + 8139 : 8053, + 8140 : 8131, + 8152 : 8144, + 8153 : 8145, + 8154 : 8054, + 8155 : 8055, + 8168 : 8160, + 8169 : 8161, + 8170 : 8058, + 8171 : 8059, + 8172 : 8165, + 8184 : 8056, + 8185 : 8057, + 8186 : 8060, + 8187 : 8061, + 8188 : 8179, + 8486 : 969, + 8490 : 107, + 8491 : 229, + 8544 : 8560, + 8545 : 8561, + 8546 : 8562, + 8547 : 8563, + 8548 : 8564, + 8549 : 8565, + 8550 : 8566, + 8551 : 8567, + 8552 : 8568, + 8553 : 8569, + 8554 : 8570, + 8555 : 8571, + 8556 : 8572, + 8557 : 8573, + 8558 : 8574, + 8559 : 8575, + 9398 : 9424, + 9399 : 9425, + 9400 : 9426, + 9401 : 9427, + 9402 : 9428, + 9403 : 9429, + 9404 : 9430, + 9405 : 9431, + 9406 : 9432, + 9407 : 9433, + 9408 : 9434, + 9409 : 9435, + 9410 : 9436, + 9411 : 9437, + 9412 : 9438, + 9413 : 9439, + 9414 : 9440, + 9415 : 9441, + 9416 : 9442, + 9417 : 9443, + 9418 : 9444, + 9419 : 9445, + 9420 : 9446, + 9421 : 9447, + 9422 : 9448, + 9423 : 9449, + 65313 : 65345, + 65314 : 65346, + 65315 : 65347, + 65316 : 65348, + 65317 : 65349, + 65318 : 65350, + 65319 : 65351, + 65320 : 65352, + 65321 : 65353, + 65322 : 65354, + 65323 : 65355, + 65324 : 65356, + 65325 : 65357, + 65326 : 65358, + 65327 : 65359, + 65328 : 65360, + 65329 : 65361, + 65330 : 65362, + 65331 : 65363, + 65332 : 65364, + 65333 : 65365, + 65334 : 65366, + 65335 : 65367, + 65336 : 65368, + 65337 : 65369, + 65338 : 65370, + 66560 : 66600, + 66561 : 66601, + 66562 : 66602, + 66563 : 66603, + 66564 : 66604, + 66565 : 66605, + 66566 : 66606, + 66567 : 66607, + 66568 : 66608, + 66569 : 66609, + 66570 : 66610, + 66571 : 66611, + 66572 : 66612, + 66573 : 66613, + 66574 : 66614, + 66575 : 66615, + 66576 : 66616, + 66577 : 66617, + 66578 : 66618, + 66579 : 66619, + 66580 : 66620, + 66581 : 66621, + 66582 : 66622, + 66583 : 66623, + 66584 : 66624, + 66585 : 66625, + 66586 : 66626, + 66587 : 66627, + 66588 : 66628, + 66589 : 66629, + 66590 : 66630, + 66591 : 66631, + 66592 : 66632, + 66593 : 66633, + 66594 : 66634, + 66595 : 66635, + 66596 : 66636, + 66597 : 66637, +} + +titlecase = { + 97 : 65, + 98 : 66, + 99 : 67, + 100 : 68, + 101 : 69, + 102 : 70, + 103 : 71, + 104 : 72, + 105 : 73, + 106 : 74, + 107 : 75, + 108 : 76, + 109 : 77, + 110 : 78, + 111 : 79, + 112 : 80, + 113 : 81, + 114 : 82, + 115 : 83, + 116 : 84, + 117 : 85, + 118 : 86, + 119 : 87, + 120 : 88, + 121 : 89, + 122 : 90, + 181 : 924, + 224 : 192, + 225 : 193, + 226 : 194, + 227 : 195, + 228 : 196, + 229 : 197, + 230 : 198, + 231 : 199, + 232 : 200, + 233 : 201, + 234 : 202, + 235 : 203, + 236 : 204, + 237 : 205, + 238 : 206, + 239 : 207, + 240 : 208, + 241 : 209, + 242 : 210, + 243 : 211, + 244 : 212, + 245 : 213, + 246 : 214, + 248 : 216, + 249 : 217, + 250 : 218, + 251 : 219, + 252 : 220, + 253 : 221, + 254 : 222, + 255 : 376, + 257 : 256, + 259 : 258, + 261 : 260, + 263 : 262, + 265 : 264, + 267 : 266, + 269 : 268, + 271 : 270, + 273 : 272, + 275 : 274, + 277 : 276, + 279 : 278, + 281 : 280, + 283 : 282, + 285 : 284, + 287 : 286, + 289 : 288, + 291 : 290, + 293 : 292, + 295 : 294, + 297 : 296, + 299 : 298, + 301 : 300, + 303 : 302, + 305 : 73, + 307 : 306, + 309 : 308, + 311 : 310, + 314 : 313, + 316 : 315, + 318 : 317, + 320 : 319, + 322 : 321, + 324 : 323, + 326 : 325, + 328 : 327, + 331 : 330, + 333 : 332, + 335 : 334, + 337 : 336, + 339 : 338, + 341 : 340, + 343 : 342, + 345 : 344, + 347 : 346, + 349 : 348, + 351 : 350, + 353 : 352, + 355 : 354, + 357 : 356, + 359 : 358, + 361 : 360, + 363 : 362, + 365 : 364, + 367 : 366, + 369 : 368, + 371 : 370, + 373 : 372, + 375 : 374, + 378 : 377, + 380 : 379, + 382 : 381, + 383 : 83, + 387 : 386, + 389 : 388, + 392 : 391, + 396 : 395, + 402 : 401, + 405 : 502, + 409 : 408, + 414 : 544, + 417 : 416, + 419 : 418, + 421 : 420, + 424 : 423, + 429 : 428, + 432 : 431, + 436 : 435, + 438 : 437, + 441 : 440, + 445 : 444, + 447 : 503, + 452 : 453, + 454 : 453, + 455 : 456, + 457 : 456, + 458 : 459, + 460 : 459, + 462 : 461, + 464 : 463, + 466 : 465, + 468 : 467, + 470 : 469, + 472 : 471, + 474 : 473, + 476 : 475, + 477 : 398, + 479 : 478, + 481 : 480, + 483 : 482, + 485 : 484, + 487 : 486, + 489 : 488, + 491 : 490, + 493 : 492, + 495 : 494, + 497 : 498, + 499 : 498, + 501 : 500, + 505 : 504, + 507 : 506, + 509 : 508, + 511 : 510, + 513 : 512, + 515 : 514, + 517 : 516, + 519 : 518, + 521 : 520, + 523 : 522, + 525 : 524, + 527 : 526, + 529 : 528, + 531 : 530, + 533 : 532, + 535 : 534, + 537 : 536, + 539 : 538, + 541 : 540, + 543 : 542, + 547 : 546, + 549 : 548, + 551 : 550, + 553 : 552, + 555 : 554, + 557 : 556, + 559 : 558, + 561 : 560, + 563 : 562, + 595 : 385, + 596 : 390, + 598 : 393, + 599 : 394, + 601 : 399, + 603 : 400, + 608 : 403, + 611 : 404, + 616 : 407, + 617 : 406, + 623 : 412, + 626 : 413, + 629 : 415, + 640 : 422, + 643 : 425, + 648 : 430, + 650 : 433, + 651 : 434, + 658 : 439, + 837 : 921, + 940 : 902, + 941 : 904, + 942 : 905, + 943 : 906, + 945 : 913, + 946 : 914, + 947 : 915, + 948 : 916, + 949 : 917, + 950 : 918, + 951 : 919, + 952 : 920, + 953 : 921, + 954 : 922, + 955 : 923, + 956 : 924, + 957 : 925, + 958 : 926, + 959 : 927, + 960 : 928, + 961 : 929, + 962 : 931, + 963 : 931, + 964 : 932, + 965 : 933, + 966 : 934, + 967 : 935, + 968 : 936, + 969 : 937, + 970 : 938, + 971 : 939, + 972 : 908, + 973 : 910, + 974 : 911, + 976 : 914, + 977 : 920, + 981 : 934, + 982 : 928, + 985 : 984, + 987 : 986, + 989 : 988, + 991 : 990, + 993 : 992, + 995 : 994, + 997 : 996, + 999 : 998, + 1001 : 1000, + 1003 : 1002, + 1005 : 1004, + 1007 : 1006, + 1008 : 922, + 1009 : 929, + 1010 : 931, + 1013 : 917, + 1072 : 1040, + 1073 : 1041, + 1074 : 1042, + 1075 : 1043, + 1076 : 1044, + 1077 : 1045, + 1078 : 1046, + 1079 : 1047, + 1080 : 1048, + 1081 : 1049, + 1082 : 1050, + 1083 : 1051, + 1084 : 1052, + 1085 : 1053, + 1086 : 1054, + 1087 : 1055, + 1088 : 1056, + 1089 : 1057, + 1090 : 1058, + 1091 : 1059, + 1092 : 1060, + 1093 : 1061, + 1094 : 1062, + 1095 : 1063, + 1096 : 1064, + 1097 : 1065, + 1098 : 1066, + 1099 : 1067, + 1100 : 1068, + 1101 : 1069, + 1102 : 1070, + 1103 : 1071, + 1104 : 1024, + 1105 : 1025, + 1106 : 1026, + 1107 : 1027, + 1108 : 1028, + 1109 : 1029, + 1110 : 1030, + 1111 : 1031, + 1112 : 1032, + 1113 : 1033, + 1114 : 1034, + 1115 : 1035, + 1116 : 1036, + 1117 : 1037, + 1118 : 1038, + 1119 : 1039, + 1121 : 1120, + 1123 : 1122, + 1125 : 1124, + 1127 : 1126, + 1129 : 1128, + 1131 : 1130, + 1133 : 1132, + 1135 : 1134, + 1137 : 1136, + 1139 : 1138, + 1141 : 1140, + 1143 : 1142, + 1145 : 1144, + 1147 : 1146, + 1149 : 1148, + 1151 : 1150, + 1153 : 1152, + 1163 : 1162, + 1165 : 1164, + 1167 : 1166, + 1169 : 1168, + 1171 : 1170, + 1173 : 1172, + 1175 : 1174, + 1177 : 1176, + 1179 : 1178, + 1181 : 1180, + 1183 : 1182, + 1185 : 1184, + 1187 : 1186, + 1189 : 1188, + 1191 : 1190, + 1193 : 1192, + 1195 : 1194, + 1197 : 1196, + 1199 : 1198, + 1201 : 1200, + 1203 : 1202, + 1205 : 1204, + 1207 : 1206, + 1209 : 1208, + 1211 : 1210, + 1213 : 1212, + 1215 : 1214, + 1218 : 1217, + 1220 : 1219, + 1222 : 1221, + 1224 : 1223, + 1226 : 1225, + 1228 : 1227, + 1230 : 1229, + 1233 : 1232, + 1235 : 1234, + 1237 : 1236, + 1239 : 1238, + 1241 : 1240, + 1243 : 1242, + 1245 : 1244, + 1247 : 1246, + 1249 : 1248, + 1251 : 1250, + 1253 : 1252, + 1255 : 1254, + 1257 : 1256, + 1259 : 1258, + 1261 : 1260, + 1263 : 1262, + 1265 : 1264, + 1267 : 1266, + 1269 : 1268, + 1273 : 1272, + 1281 : 1280, + 1283 : 1282, + 1285 : 1284, + 1287 : 1286, + 1289 : 1288, + 1291 : 1290, + 1293 : 1292, + 1295 : 1294, + 1377 : 1329, + 1378 : 1330, + 1379 : 1331, + 1380 : 1332, + 1381 : 1333, + 1382 : 1334, + 1383 : 1335, + 1384 : 1336, + 1385 : 1337, + 1386 : 1338, + 1387 : 1339, + 1388 : 1340, + 1389 : 1341, + 1390 : 1342, + 1391 : 1343, + 1392 : 1344, + 1393 : 1345, + 1394 : 1346, + 1395 : 1347, + 1396 : 1348, + 1397 : 1349, + 1398 : 1350, + 1399 : 1351, + 1400 : 1352, + 1401 : 1353, + 1402 : 1354, + 1403 : 1355, + 1404 : 1356, + 1405 : 1357, + 1406 : 1358, + 1407 : 1359, + 1408 : 1360, + 1409 : 1361, + 1410 : 1362, + 1411 : 1363, + 1412 : 1364, + 1413 : 1365, + 1414 : 1366, + 7681 : 7680, + 7683 : 7682, + 7685 : 7684, + 7687 : 7686, + 7689 : 7688, + 7691 : 7690, + 7693 : 7692, + 7695 : 7694, + 7697 : 7696, + 7699 : 7698, + 7701 : 7700, + 7703 : 7702, + 7705 : 7704, + 7707 : 7706, + 7709 : 7708, + 7711 : 7710, + 7713 : 7712, + 7715 : 7714, + 7717 : 7716, + 7719 : 7718, + 7721 : 7720, + 7723 : 7722, + 7725 : 7724, + 7727 : 7726, + 7729 : 7728, + 7731 : 7730, + 7733 : 7732, + 7735 : 7734, + 7737 : 7736, + 7739 : 7738, + 7741 : 7740, + 7743 : 7742, + 7745 : 7744, + 7747 : 7746, + 7749 : 7748, + 7751 : 7750, + 7753 : 7752, + 7755 : 7754, + 7757 : 7756, + 7759 : 7758, + 7761 : 7760, + 7763 : 7762, + 7765 : 7764, + 7767 : 7766, + 7769 : 7768, + 7771 : 7770, + 7773 : 7772, + 7775 : 7774, + 7777 : 7776, + 7779 : 7778, + 7781 : 7780, + 7783 : 7782, + 7785 : 7784, + 7787 : 7786, + 7789 : 7788, + 7791 : 7790, + 7793 : 7792, + 7795 : 7794, + 7797 : 7796, + 7799 : 7798, + 7801 : 7800, + 7803 : 7802, + 7805 : 7804, + 7807 : 7806, + 7809 : 7808, + 7811 : 7810, + 7813 : 7812, + 7815 : 7814, + 7817 : 7816, + 7819 : 7818, + 7821 : 7820, + 7823 : 7822, + 7825 : 7824, + 7827 : 7826, + 7829 : 7828, + 7835 : 7776, + 7841 : 7840, + 7843 : 7842, + 7845 : 7844, + 7847 : 7846, + 7849 : 7848, + 7851 : 7850, + 7853 : 7852, + 7855 : 7854, + 7857 : 7856, + 7859 : 7858, + 7861 : 7860, + 7863 : 7862, + 7865 : 7864, + 7867 : 7866, + 7869 : 7868, + 7871 : 7870, + 7873 : 7872, + 7875 : 7874, + 7877 : 7876, + 7879 : 7878, + 7881 : 7880, + 7883 : 7882, + 7885 : 7884, + 7887 : 7886, + 7889 : 7888, + 7891 : 7890, + 7893 : 7892, + 7895 : 7894, + 7897 : 7896, + 7899 : 7898, + 7901 : 7900, + 7903 : 7902, + 7905 : 7904, + 7907 : 7906, + 7909 : 7908, + 7911 : 7910, + 7913 : 7912, + 7915 : 7914, + 7917 : 7916, + 7919 : 7918, + 7921 : 7920, + 7923 : 7922, + 7925 : 7924, + 7927 : 7926, + 7929 : 7928, + 7936 : 7944, + 7937 : 7945, + 7938 : 7946, + 7939 : 7947, + 7940 : 7948, + 7941 : 7949, + 7942 : 7950, + 7943 : 7951, + 7952 : 7960, + 7953 : 7961, + 7954 : 7962, + 7955 : 7963, + 7956 : 7964, + 7957 : 7965, + 7968 : 7976, + 7969 : 7977, + 7970 : 7978, + 7971 : 7979, + 7972 : 7980, + 7973 : 7981, + 7974 : 7982, + 7975 : 7983, + 7984 : 7992, + 7985 : 7993, + 7986 : 7994, + 7987 : 7995, + 7988 : 7996, + 7989 : 7997, + 7990 : 7998, + 7991 : 7999, + 8000 : 8008, + 8001 : 8009, + 8002 : 8010, + 8003 : 8011, + 8004 : 8012, + 8005 : 8013, + 8017 : 8025, + 8019 : 8027, + 8021 : 8029, + 8023 : 8031, + 8032 : 8040, + 8033 : 8041, + 8034 : 8042, + 8035 : 8043, + 8036 : 8044, + 8037 : 8045, + 8038 : 8046, + 8039 : 8047, + 8048 : 8122, + 8049 : 8123, + 8050 : 8136, + 8051 : 8137, + 8052 : 8138, + 8053 : 8139, + 8054 : 8154, + 8055 : 8155, + 8056 : 8184, + 8057 : 8185, + 8058 : 8170, + 8059 : 8171, + 8060 : 8186, + 8061 : 8187, + 8064 : 8072, + 8065 : 8073, + 8066 : 8074, + 8067 : 8075, + 8068 : 8076, + 8069 : 8077, + 8070 : 8078, + 8071 : 8079, + 8080 : 8088, + 8081 : 8089, + 8082 : 8090, + 8083 : 8091, + 8084 : 8092, + 8085 : 8093, + 8086 : 8094, + 8087 : 8095, + 8096 : 8104, + 8097 : 8105, + 8098 : 8106, + 8099 : 8107, + 8100 : 8108, + 8101 : 8109, + 8102 : 8110, + 8103 : 8111, + 8112 : 8120, + 8113 : 8121, + 8115 : 8124, + 8126 : 921, + 8131 : 8140, + 8144 : 8152, + 8145 : 8153, + 8160 : 8168, + 8161 : 8169, + 8165 : 8172, + 8179 : 8188, + 8560 : 8544, + 8561 : 8545, + 8562 : 8546, + 8563 : 8547, + 8564 : 8548, + 8565 : 8549, + 8566 : 8550, + 8567 : 8551, + 8568 : 8552, + 8569 : 8553, + 8570 : 8554, + 8571 : 8555, + 8572 : 8556, + 8573 : 8557, + 8574 : 8558, + 8575 : 8559, + 9424 : 9398, + 9425 : 9399, + 9426 : 9400, + 9427 : 9401, + 9428 : 9402, + 9429 : 9403, + 9430 : 9404, + 9431 : 9405, + 9432 : 9406, + 9433 : 9407, + 9434 : 9408, + 9435 : 9409, + 9436 : 9410, + 9437 : 9411, + 9438 : 9412, + 9439 : 9413, + 9440 : 9414, + 9441 : 9415, + 9442 : 9416, + 9443 : 9417, + 9444 : 9418, + 9445 : 9419, + 9446 : 9420, + 9447 : 9421, + 9448 : 9422, + 9449 : 9423, + 65345 : 65313, + 65346 : 65314, + 65347 : 65315, + 65348 : 65316, + 65349 : 65317, + 65350 : 65318, + 65351 : 65319, + 65352 : 65320, + 65353 : 65321, + 65354 : 65322, + 65355 : 65323, + 65356 : 65324, + 65357 : 65325, + 65358 : 65326, + 65359 : 65327, + 65360 : 65328, + 65361 : 65329, + 65362 : 65330, + 65363 : 65331, + 65364 : 65332, + 65365 : 65333, + 65366 : 65334, + 65367 : 65335, + 65368 : 65336, + 65369 : 65337, + 65370 : 65338, + 66600 : 66560, + 66601 : 66561, + 66602 : 66562, + 66603 : 66563, + 66604 : 66564, + 66605 : 66565, + 66606 : 66566, + 66607 : 66567, + 66608 : 66568, + 66609 : 66569, + 66610 : 66570, + 66611 : 66571, + 66612 : 66572, + 66613 : 66573, + 66614 : 66574, + 66615 : 66575, + 66616 : 66576, + 66617 : 66577, + 66618 : 66578, + 66619 : 66579, + 66620 : 66580, + 66621 : 66581, + 66622 : 66582, + 66623 : 66583, + 66624 : 66584, + 66625 : 66585, + 66626 : 66586, + 66627 : 66587, + 66628 : 66588, + 66629 : 66589, + 66630 : 66590, + 66631 : 66591, + 66632 : 66592, + 66633 : 66593, + 66634 : 66594, + 66635 : 66595, + 66636 : 66596, + 66637 : 66597, +} + Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py ============================================================================== --- pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py (original) +++ pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py Thu Apr 28 15:38:16 2005 @@ -6,6 +6,7 @@ from pypy.objspace.std import slicetype from pypy.objspace.std.strutil import string_to_int, string_to_long, ParseStringError from pypy.tool.rarithmetic import intmask +from pypy.module.unicodedata import unicodedb class W_UnicodeObject(W_Object): from pypy.objspace.std.unicodetype import unicode_typedef as typedef @@ -197,6 +198,7 @@ r = [uni[start + i*step] for i in range(sl)] return W_UnicodeObject(space, r) + def mul__Unicode_ANY(space, w_uni, w_times): chars = w_uni._value charlen = len(chars) @@ -219,7 +221,11 @@ return space.mul(w_uni, w_times) def _isspace(uchar): - return uchar.isspace() + code = ord(uchar) + try: + return unicodedb.category[code] == 'Zs' or unicodedb.bidirectional[code] in ("WS", "B", "S") + except: + return False def _strip(space, w_self, w_chars, left, right): "internal function called by str_xstrip methods" From pedronis at codespeak.net Thu Apr 28 16:43:25 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 16:43:25 +0200 (CEST) Subject: [pypy-svn] r11594 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050428144325.8C86627BD3@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 16:43:22 2005 New Revision: 11594 Modified: pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt pypy/dist/lib-python-2.3.4/test/result/test___all__.txt pypy/dist/lib-python-2.3.4/test/result/test___future__.txt pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt pypy/dist/lib-python-2.3.4/test/result/test_al.txt pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt pypy/dist/lib-python-2.3.4/test/result/test_array.txt pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt pypy/dist/lib-python-2.3.4/test/result/test_base64.txt pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt pypy/dist/lib-python-2.3.4/test/result/test_binop.txt pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt pypy/dist/lib-python-2.3.4/test/result/test_bool.txt pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt pypy/dist/lib-python-2.3.4/test/result/test_call.txt pypy/dist/lib-python-2.3.4/test/result/test_capi.txt pypy/dist/lib-python-2.3.4/test/result/test_cd.txt pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt pypy/dist/lib-python-2.3.4/test/result/test_cl.txt pypy/dist/lib-python-2.3.4/test/result/test_class.txt pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt pypy/dist/lib-python-2.3.4/test/result/test_coercion.out pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt pypy/dist/lib-python-2.3.4/test/result/test_commands.txt pypy/dist/lib-python-2.3.4/test/result/test_compare.txt pypy/dist/lib-python-2.3.4/test/result/test_compile.txt pypy/dist/lib-python-2.3.4/test/result/test_complex.txt pypy/dist/lib-python-2.3.4/test/result/test_contains.txt pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt pypy/dist/lib-python-2.3.4/test/result/test_copy.txt pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt pypy/dist/lib-python-2.3.4/test/result/test_csv.txt pypy/dist/lib-python-2.3.4/test/result/test_curses.txt pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt pypy/dist/lib-python-2.3.4/test/result/test_descr.txt pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt pypy/dist/lib-python-2.3.4/test/result/test_dis.txt pypy/dist/lib-python-2.3.4/test/result/test_dl.txt pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt pypy/dist/lib-python-2.3.4/test/result/test_email.txt pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt pypy/dist/lib-python-2.3.4/test/result/test_eof.txt pypy/dist/lib-python-2.3.4/test/result/test_errno.txt pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt pypy/dist/lib-python-2.3.4/test/result/test_file.txt pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt pypy/dist/lib-python-2.3.4/test/result/test_format.txt pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt pypy/dist/lib-python-2.3.4/test/result/test_future.txt pypy/dist/lib-python-2.3.4/test/result/test_future1.txt pypy/dist/lib-python-2.3.4/test/result/test_future2.txt pypy/dist/lib-python-2.3.4/test/result/test_future3.txt pypy/dist/lib-python-2.3.4/test/result/test_gc.txt pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt pypy/dist/lib-python-2.3.4/test/result/test_generators.txt pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt pypy/dist/lib-python-2.3.4/test/result/test_gl.txt pypy/dist/lib-python-2.3.4/test/result/test_glob.txt pypy/dist/lib-python-2.3.4/test/result/test_global.txt pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt pypy/dist/lib-python-2.3.4/test/result/test_grp.txt pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt pypy/dist/lib-python-2.3.4/test/result/test_hash.txt pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt pypy/dist/lib-python-2.3.4/test/result/test_imp.txt pypy/dist/lib-python-2.3.4/test/result/test_import.txt pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt pypy/dist/lib-python-2.3.4/test/result/test_iter.txt pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/test_locale.txt pypy/dist/lib-python-2.3.4/test/result/test_logging.txt pypy/dist/lib-python-2.3.4/test/result/test_long.txt pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt pypy/dist/lib-python-2.3.4/test/result/test_math.txt pypy/dist/lib-python-2.3.4/test/result/test_md5.txt pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt pypy/dist/lib-python-2.3.4/test/result/test_module.txt pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt pypy/dist/lib-python-2.3.4/test/result/test_new.out pypy/dist/lib-python-2.3.4/test/result/test_new.txt pypy/dist/lib-python-2.3.4/test/result/test_nis.txt pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt pypy/dist/lib-python-2.3.4/test/result/test_openpty.out pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt pypy/dist/lib-python-2.3.4/test/result/test_operations.txt pypy/dist/lib-python-2.3.4/test/result/test_operator.txt pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt pypy/dist/lib-python-2.3.4/test/result/test_os.txt pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/test_parser.txt pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt pypy/dist/lib-python-2.3.4/test/result/test_pkg.out pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt pypy/dist/lib-python-2.3.4/test/result/test_poll.txt pypy/dist/lib-python-2.3.4/test/result/test_popen.txt pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt pypy/dist/lib-python-2.3.4/test/result/test_posix.txt pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt pypy/dist/lib-python-2.3.4/test/result/test_pow.txt pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt pypy/dist/lib-python-2.3.4/test/result/test_profile.out pypy/dist/lib-python-2.3.4/test/result/test_profile.txt pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt pypy/dist/lib-python-2.3.4/test/result/test_pty.txt pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt pypy/dist/lib-python-2.3.4/test/result/test_queue.txt pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt pypy/dist/lib-python-2.3.4/test/result/test_random.txt pypy/dist/lib-python-2.3.4/test/result/test_re.txt pypy/dist/lib-python-2.3.4/test/result/test_regex.txt pypy/dist/lib-python-2.3.4/test/result/test_repr.txt pypy/dist/lib-python-2.3.4/test/result/test_resource.txt pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt pypy/dist/lib-python-2.3.4/test/result/test_sax.txt pypy/dist/lib-python-2.3.4/test/result/test_scope.txt pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt pypy/dist/lib-python-2.3.4/test/result/test_select.txt pypy/dist/lib-python-2.3.4/test/result/test_sets.txt pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_sha.txt pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt pypy/dist/lib-python-2.3.4/test/result/test_signal.txt pypy/dist/lib-python-2.3.4/test/result/test_slice.txt pypy/dist/lib-python-2.3.4/test/result/test_socket.txt pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt pypy/dist/lib-python-2.3.4/test/result/test_sort.txt pypy/dist/lib-python-2.3.4/test/result/test_str.txt pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt pypy/dist/lib-python-2.3.4/test/result/test_string.txt pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt pypy/dist/lib-python-2.3.4/test/result/test_strop.txt pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt pypy/dist/lib-python-2.3.4/test/result/test_struct.txt pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt pypy/dist/lib-python-2.3.4/test/result/test_support.txt pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt pypy/dist/lib-python-2.3.4/test/result/test_sys.txt pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt pypy/dist/lib-python-2.3.4/test/result/test_thread.txt pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt pypy/dist/lib-python-2.3.4/test/result/test_threading.txt pypy/dist/lib-python-2.3.4/test/result/test_time.txt pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt pypy/dist/lib-python-2.3.4/test/result/test_timing.txt pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt pypy/dist/lib-python-2.3.4/test/result/test_trace.txt pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt pypy/dist/lib-python-2.3.4/test/result/test_types.out pypy/dist/lib-python-2.3.4/test/result/test_types.txt pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt pypy/dist/lib-python-2.3.4/test/result/test_unary.txt pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt pypy/dist/lib-python-2.3.4/test/result/test_uu.txt pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt pypy/dist/lib-python-2.3.4/test/result/test_wave.txt pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt Log: more recent full batch of results (notice that some tests that timed out passed or failed here, all still run with old-style classes on) Modified: pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt Thu Apr 28 16:43:22 2005 @@ -1,17 +1,18 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_MimeWriter.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_MimeWriter.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:23:46 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:31:10 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_MimeWriter.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_MimeWriter.out ============================================================ faking faking faking faking faking +OK ========================== closed ========================== -execution time: 12.537391901 seconds +execution time: 9.36941385269 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_StringIO.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_StringIO.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:31:37 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:18:10 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -38,9 +38,9 @@ test_writes (__main__.TestBuffercStringIO) ... ok ---------------------------------------------------------------------- -Ran 26 tests in 41.869s +Ran 26 tests in 30.355s OK ========================== closed ========================== -execution time: 59.4854989052 seconds +execution time: 43.2511920929 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test___all__.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test___all__.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test___all__.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:13:53 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:40:56 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -17,46 +17,42 @@ faking faking faking -==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py", line 205 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 205 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py", line 202 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 202 in test_main test_support.run_unittest(AllTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py", line 120 in test_all - self.check_all("mimify") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test___all__.py", line 21 in check_all - exec "import %s" % modname in names - File "", line 1 in ? - File "/home/arigo/pypysrc/lib-python-2.3.4/mimify.py", line 35 in ? -base64_re = re.compile('^content-transfer-encoding:\\s*base64', re.I) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 179 in compile - return _compile(pattern, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile - p = sre_compile.compile(pattern, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 467 in compile - p = sre_parse.parse(p, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 624 in parse - p = _parse_sub(source, pattern, 0) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 392 in _parse - subpattern.append((LITERAL, ord(this))) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 146 in append - self.data.append(code) -KeyboardInterrupt -test_all (__main__.AllTest) ... ========================== closed ========================== -execution time: 900.358663082 seconds + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 144, in test_all + self.check_all("re") + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 41, in check_all + "%s has no __all__ attribute" % modname) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180, in verify + raise TestFailed(reason) +TestFailed: re has no __all__ attribute + +test_all (__main__.AllTest) ... ERROR + +====================================================================== +ERROR: test_all (__main__.AllTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 144, in test_all + self.check_all("re") + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 41, in check_all + "%s has no __all__ attribute" % modname) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180, in verify + raise TestFailed(reason) +TestFailed: re has no __all__ attribute + +---------------------------------------------------------------------- +Ran 1 test in 793.580s + +FAILED (errors=1) +========================== closed ========================== +execution time: 821.671632051 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test___future__.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test___future__.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test___future__.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test___future__.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___future__.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:13:45 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:54:38 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,5 +14,5 @@ Checking __future__ generators value _Feature((2, 2, 0, 'alpha', 1), (2, 3, 0, 'final', 0), 4096) Checking __future__ division value _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192) ========================== closed ========================== -execution time: 7.98354697227 seconds +execution time: 8.18518209457 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_aepack.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_aepack.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:13:39 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:54:46 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_aepack.py", line 4 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_aepack.py", line 4 in ? import aepack ImportError: aepack ========================== closed ========================== -execution time: 5.29398584366 seconds +execution time: 4.09968686104 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_al.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_al.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_al.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_al.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_al.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:13:38 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:54:51 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_al.py", line 5 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_al.py", line 5 in ? import al ImportError: al ========================== closed ========================== -execution time: 0.858690977097 seconds +execution time: 0.787994146347 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_anydbm.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_anydbm.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:12:49 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:54:52 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -20,9 +20,9 @@ test_anydbm_read (__main__.AnyDBMTestCase) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 34.893s +Ran 4 tests in 29.785s OK ========================== closed ========================== -execution time: 48.8308150768 seconds +execution time: 40.3560171127 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_array.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_array.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_array.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_array.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_array.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:11:21 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:55:32 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -42,198 +42,201 @@ test_str (__main__.CharacterTest) ... ok test_subbclassing (__main__.CharacterTest) ... ok test_tofromfile (__main__.CharacterTest) ... Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 644, in CALL_FUNCTION_VAR + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 644, in CALL_FUNCTION_VAR f.CALL_FUNCTION(oparg, w_varargs) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW f.CALL_FUNCTION(oparg, w_varargs, w_varkw) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args frame.setfastscope(scope_w) - File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > ========================== closed ========================== -execution time: 87.0289859772 seconds +execution time: 66.1407701969 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt Thu Apr 28 16:43:22 2005 @@ -1,18 +1,19 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_asynchat.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_asynchat.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:11:20 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:56:39 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_asynchat.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_asynchat.out ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_asynchat.py", line 3 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_asynchat.py", line 3 in ? import thread # If this fails, we can't test this module ImportError: thread +FAILED: test output differs ========================== closed ========================== -execution time: 0.944401025772 seconds +execution time: 2.45180296898 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_atexit.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_atexit.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:11:12 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:56:42 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,11 +14,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_atexit.py", line 37 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_atexit.py", line 37 in ? """) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 194 in vereq + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 194 in vereq raise TestFailed, "%r == %r" % (a, b) TestFailed: '' == "handler2 (7,) {'kw': 'abc'}\nhandler2 () {}\nhandler1\n" ========================== closed ========================== -execution time: 7.03922986984 seconds +execution time: 8.41355109215 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_audioop.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_audioop.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:11:11 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:56:52 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_audioop.py", line 2 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_audioop.py", line 2 in ? import audioop ImportError: audioop ========================== closed ========================== -execution time: 0.879395008087 seconds +execution time: 1.88180184364 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt Thu Apr 28 16:43:22 2005 @@ -1,15 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_augassign.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_augassign.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:11:06 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:56:55 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_augassign.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_augassign.out ============================================================ faking faking faking +OK ========================== closed ========================== -execution time: 5.25186896324 seconds +execution time: 4.99358296394 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_base64.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_base64.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_base64.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_base64.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_base64.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:10:57 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:57:00 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,9 +14,9 @@ test_encodestring (__main__.Base64TestCase) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 0.884s +Ran 2 tests in 0.647s OK ========================== closed ========================== -execution time: 8.38066196442 seconds +execution time: 9.76265597343 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt Thu Apr 28 16:43:22 2005 @@ -1,12 +1,12 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bastion.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bastion.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:10:57 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:57:10 2005 +pypy-revision: 11549 ============================================================ faking faking ========================== closed ========================== -execution time: 0.851797103882 seconds +execution time: 0.777083873749 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:09:56 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:57:10 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,13 +13,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py", line 155 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py", line 155 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py", line 152 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py", line 152 in test_main test_support.run_unittest(BinASCIITest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred in __main__.BinASCIITest test_base64invalid (__main__.BinASCIITest) ... ok @@ -35,7 +35,7 @@ ERROR: test_exceptions (__main__.BinASCIITest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py", line 17, in test_exceptions + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py", line 17, in test_exceptions self.assert_(issubclass(binascii.Error, Exception)) TypeError: arg 1 must be a class or type @@ -43,14 +43,14 @@ ERROR: test_uu (__main__.BinASCIITest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binascii.py", line 102, in test_uu + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py", line 102, in test_uu self.assertRaises(binascii.Error, binascii.a2b_uu, "\xff\x00") TypeError: instance exception may not have a separate value ---------------------------------------------------------------------- -Ran 8 tests in 50.609s +Ran 8 tests in 39.460s FAILED (errors=2) ========================== closed ========================== -execution time: 60.0292649269 seconds +execution time: 47.0662410259 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:09:43 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:57:58 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,28 +11,28 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py", line 49 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py", line 49 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py", line 45 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py", line 45 in test_main test_support.run_unittest(BinHexTestCase) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py", line 33, in test_binhex + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py", line 33, in test_binhex binhex.binhex(self.fname1, self.fname2) - File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 260, in binhex + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 260, in binhex ofp = BinHex(finfo, out) - File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 196, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 196, in __init__ self._writeinfo(name, finfo) - File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 212, in _writeinfo + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 212, in _writeinfo self._writecrc() - File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 221, in _writecrc + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 221, in _writecrc self.ofp.write(struct.pack('>h', self.crc)) - File "/home/arigo/pypysrc/pypy/lib/struct.py", line 293, in pack + File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 293, in pack result += [format['pack'](var,format['size'],endianness)] - File "/home/arigo/pypysrc/pypy/lib/struct.py", line 111, in pack_signed_int + File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 111, in pack_signed_int raise OverflowError,"Number:%i to large to convert" % number OverflowError: Number:51917 to large to convert @@ -42,26 +42,26 @@ ERROR: test_binhex (__main__.BinHexTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_binhex.py", line 33, in test_binhex + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py", line 33, in test_binhex binhex.binhex(self.fname1, self.fname2) - File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 260, in binhex + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 260, in binhex ofp = BinHex(finfo, out) - File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 196, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 196, in __init__ self._writeinfo(name, finfo) - File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 212, in _writeinfo + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 212, in _writeinfo self._writecrc() - File "/home/arigo/pypysrc/lib-python-2.3.4/binhex.py", line 221, in _writecrc + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 221, in _writecrc self.ofp.write(struct.pack('>h', self.crc)) - File "/home/arigo/pypysrc/pypy/lib/struct.py", line 293, in pack + File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 293, in pack result += [format['pack'](var,format['size'],endianness)] - File "/home/arigo/pypysrc/pypy/lib/struct.py", line 111, in pack_signed_int + File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 111, in pack_signed_int raise OverflowError,"Number:%i to large to convert" % number OverflowError: Number:51917 to large to convert ---------------------------------------------------------------------- -Ran 1 test in 4.243s +Ran 1 test in 3.151s FAILED (errors=1) ========================== closed ========================== -execution time: 12.7835309505 seconds +execution time: 9.49319386482 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_binop.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_binop.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_binop.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_binop.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binop.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:09:16 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:58:08 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -21,9 +21,9 @@ test_sub (__main__.RatTestCase) ... ok ---------------------------------------------------------------------- -Ran 9 tests in 18.806s +Ran 9 tests in 13.950s OK ========================== closed ========================== -execution time: 26.5153589249 seconds +execution time: 19.6783590317 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bisect.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bisect.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 05:00:30 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 21:58:28 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -22,10 +22,10 @@ test_vsListSort (__main__.TestInsort) ... ok ---------------------------------------------------------------------- -Ran 6 tests in 140.836s +Ran 6 tests in 107.855s OK doctest (test.test_bisect) ... 14 tests with zero failures ========================== closed ========================== -execution time: 526.357240915 seconds +execution time: 404.654814959 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_bool.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_bool.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_bool.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:59:20 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:05:12 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -15,20 +15,20 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 348 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 348 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 345 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 345 in test_main test_support.run_unittest(BoolTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 331, in test_convert_to_bool + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 331, in test_convert_to_bool check(Foo()) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 327, in + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 327, in check = lambda o: self.assertRaises(TypeError, bool, o) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises callableObj(*args, **kwargs) RuntimeError: internal errormaximum recursion depth exceeded @@ -59,18 +59,18 @@ ERROR: test_convert_to_bool (__main__.BoolTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 331, in test_convert_to_bool + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 331, in test_convert_to_bool check(Foo()) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bool.py", line 327, in + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 327, in check = lambda o: self.assertRaises(TypeError, bool, o) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises callableObj(*args, **kwargs) RuntimeError: internal errormaximum recursion depth exceeded ---------------------------------------------------------------------- -Ran 22 tests in 60.683s +Ran 22 tests in 44.826s FAILED (errors=1) ========================== closed ========================== -execution time: 69.3459248543 seconds +execution time: 52.0181930065 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:59:15 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:06:05 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,11 +11,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb.py", line 6 in ? import bsddb - File "/home/arigo/pypysrc/lib-python-2.3.4/bsddb/__init__.py", line 40 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/bsddb/__init__.py", line 40 in ? import _bsddb ImportError: _bsddb ========================== closed ========================== -execution time: 4.26038885117 seconds +execution time: 3.27077317238 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb185.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb185.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:59:09 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:06:09 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb185.py", line 9 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb185.py", line 9 in ? import bsddb185 ImportError: bsddb185 ========================== closed ========================== -execution time: 5.5461909771 seconds +execution time: 4.13291215897 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb3.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb3.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:59:02 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:06:13 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,11 +11,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bsddb3.py", line 58 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb3.py", line 58 in ? from bsddb import db - File "/home/arigo/pypysrc/lib-python-2.3.4/bsddb/__init__.py", line 40 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/bsddb/__init__.py", line 40 in ? import _bsddb ImportError: _bsddb ========================== closed ========================== -execution time: 6.08635902405 seconds +execution time: 4.46537494659 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bufio.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bufio.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:45:02 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:06:18 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,5 +11,5 @@ faking faking ========================== closed ========================== -execution time: 840.088413954 seconds +execution time: 547.107976913 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:31:35 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:15:25 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,23 +12,23 @@ faking faking faking -/home/arigo/pypysrc/pypy/objspace/std/intobject.py:442: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up +/u/pedronis/PyPy/dist/pypy/objspace/std/intobject.py:442: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up ret = "0x%lx" % x -/home/arigo/pypysrc/pypy/objspace/std/intobject.py:430: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up +/u/pedronis/PyPy/dist/pypy/objspace/std/intobject.py:430: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up ret = "0%lo" % x Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py", line 1161 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py", line 1161 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py", line 1158 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py", line 1158 in test_main test.test_support.run_unittest(BuiltinTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py", line 151, in test_callable + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py", line 151, in test_callable self.assert_(not callable(x)) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError @@ -87,16 +87,16 @@ FAIL: test_callable (__main__.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_builtin.py", line 151, in test_callable + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py", line 151, in test_callable self.assert_(not callable(x)) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError ---------------------------------------------------------------------- -Ran 50 tests in 749.880s +Ran 50 tests in 293.222s FAILED (failures=1) ========================== closed ========================== -execution time: 806.528295994 seconds +execution time: 316.236166 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_bz2.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bz2.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:31:26 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:20:42 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_bz2.py", line 11 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bz2.py", line 11 in ? import bz2 ImportError: bz2 ========================== closed ========================== -execution time: 8.71124315262 seconds +execution time: 4.66898298264 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_calendar.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_calendar.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:29:46 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:20:47 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,9 +18,9 @@ test_setfirstweekday (__main__.CalendarTestCase) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 82.565s +Ran 5 tests in 28.342s OK ========================== closed ========================== -execution time: 100.287414074 seconds +execution time: 35.5092589855 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_call.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_call.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_call.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_call.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_call.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:29:15 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:21:23 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -39,9 +39,9 @@ test_varargs2_kw (__main__.CFunctionCalls) ... ok ---------------------------------------------------------------------- -Ran 27 tests in 17.272s +Ran 27 tests in 6.015s OK ========================== closed ========================== -execution time: 30.9581329823 seconds +execution time: 12.0413000584 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_capi.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_capi.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_capi.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_capi.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_capi.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:29:01 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:21:35 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_capi.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_capi.py", line 6 in ? import _testcapi ImportError: _testcapi ========================== closed ========================== -execution time: 11.5215249062 seconds +execution time: 4.10063791275 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_cd.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_cd.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_cd.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cd.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cd.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:28:58 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:21:39 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cd.py", line 5 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cd.py", line 5 in ? import cd ImportError: cd ========================== closed ========================== -execution time: 2.56447100639 seconds +execution time: 0.751883029938 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cfgparser.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cfgparser.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:23:56 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:21:41 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -37,261 +37,264 @@ test_boolean (__main__.SafeConfigParserTestCase) ... ok test_case_sensitivity (__main__.SafeConfigParserTestCase) ... ok test_interpolation (__main__.SafeConfigParserTestCase) ... Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 499, in LOAD_ATTR + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 499, in LOAD_ATTR w_value = f.space.getattr(w_obj, w_attributename) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 126, in getattr + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 126, in getattr return space.get_and_call_function(w_descr, w_obj, w_name) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 87, in get_and_call_function + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 87, in get_and_call_function return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_ObjSpace_Arguments - File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 1747, in __getattribute__ + File "", line 3, in _run_UWS_ObjSpace_Arguments + File "/u/pedronis/PyPy/dist/pypy/module/classobjinterp.py", line 1747, in __getattribute__ return fastf_instance___getattribute__(space, w_self, w_name) - File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 1757, in __getattribute__ + File "/u/pedronis/PyPy/dist/pypy/module/classobjinterp.py", line 1757, in __getattribute__ w_0 = space.call_function(gfunc_instance_getattr1, w_self, w_name) - File "/home/arigo/pypysrc/pypy/interpreter/baseobjspace.py", line 234, in call_function + File "/u/pedronis/PyPy/dist/pypy/interpreter/baseobjspace.py", line 234, in call_function return self.call_args(w_func, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_ObjSpace_Arguments - File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 1556, in instance_getattr1 + File "", line 3, in _run_UWS_ObjSpace_Arguments + File "/u/pedronis/PyPy/dist/pypy/module/classobjinterp.py", line 1556, in instance_getattr1 return fastf_instance_getattr1(space, w_inst, w_name, w_exc) - File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 1722, in instance_getattr1 + File "/u/pedronis/PyPy/dist/pypy/module/classobjinterp.py", line 1722, in instance_getattr1 w_43 = space.call_function(w_39, w_40, w_41, w_42) - File "/home/arigo/pypysrc/pypy/interpreter/baseobjspace.py", line 234, in call_function + File "/u/pedronis/PyPy/dist/pypy/interpreter/baseobjspace.py", line 234, in call_function return self.call_args(w_func, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args frame.setfastscope(scope_w) - File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > ========================== closed ========================== -execution time: 300.988641024 seconds +execution time: 118.21816802 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cgi.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cgi.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:18:55 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:23:39 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_cgi.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_cgi.out ============================================================ faking faking @@ -15,6 +15,7 @@ faking faking faking +OK ========================== closed ========================== -execution time: 301.199226141 seconds +execution time: 92.329431057 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:18:22 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:25:12 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,13 +11,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 45 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 45 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 42 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 42 in test_main test.test_support.run_unittest(CharmapCodecTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred in __main__.CharmapCodecTest test_constructorx (__main__.CharmapCodecTest) ... ERROR @@ -29,7 +29,7 @@ ERROR: test_constructorx (__main__.CharmapCodecTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 19, in test_constructorx + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 19, in test_constructorx self.assertEquals(unicode('abc', codecname), u'abc') LookupError: unknown encoding: test.testcodec @@ -37,7 +37,7 @@ ERROR: test_constructory (__main__.CharmapCodecTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 33, in test_constructory + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 33, in test_constructory self.assertEquals(unicode('ydef', codecname), u'def') LookupError: unknown encoding: test.testcodec @@ -45,7 +45,7 @@ ERROR: test_encodex (__main__.CharmapCodecTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 26, in test_encodex + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 26, in test_encodex self.assertEquals(u'abc'.encode(codecname), 'abc') LookupError: unknown encoding: test.testcodec @@ -53,16 +53,16 @@ ERROR: test_maptoundefined (__main__.CharmapCodecTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_charmapcodec.py", line 39, in test_maptoundefined + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 39, in test_maptoundefined self.assertRaises(UnicodeError, unicode, 'abc\001', codecname) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises callableObj(*args, **kwargs) LookupError: unknown encoding: test.testcodec ---------------------------------------------------------------------- -Ran 4 tests in 8.493s +Ran 4 tests in 2.636s FAILED (errors=4) ========================== closed ========================== -execution time: 32.0733180046 seconds +execution time: 9.98971414566 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_cl.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_cl.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_cl.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cl.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cl.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:18:20 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:25:22 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cl.py", line 5 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cl.py", line 5 in ? import cl ImportError: cl ========================== closed ========================== -execution time: 1.98149299622 seconds +execution time: 0.714554071426 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_class.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_class.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_class.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_class.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_class.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:17:23 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:25:24 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_class.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_class.out ============================================================ faking faking @@ -14,9 +14,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_class.py", line 199 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_class.py", line 199 in ? int(testme) TypeError: __int__ returned non-int (type NoneType) +FAILED: test output differs ========================== closed ========================== -execution time: 56.4155960083 seconds +execution time: 15.9479799271 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cmath.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cmath.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:16:36 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:25:40 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -29,5 +29,5 @@ PI = 3.14159265358 E = 2.71828182845 ========================== closed ========================== -execution time: 47.0223078728 seconds +execution time: 13.1306848526 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_codeccallbacks.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_codeccallbacks.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:15:34 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:25:53 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,183 +12,186 @@ faking test_backslashescape (__main__.CodecCallbackTest) ... ok test_badandgoodbackslashreplaceexceptions (__main__.CodecCallbackTest) ... Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW f.CALL_FUNCTION(oparg, w_varargs, w_varkw) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args frame.setfastscope(scope_w) - File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > ========================== closed ========================== -execution time: 61.0466151237 seconds +execution time: 19.1045050621 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_codecs.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_codecs.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:15:02 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:26:13 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,158 +12,161 @@ faking faking test_only_one_bom (__main__.UTF16Test) ... Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args frame.setfastscope(scope_w) - File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > ========================== closed ========================== -execution time: 31.93232584 seconds +execution time: 9.94337916374 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_codeop.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_codeop.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 04:14:34 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:26:23 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,9 +16,9 @@ test_valid (__main__.CodeopTests) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 9.212s +Ran 4 tests in 2.874s OK ========================== closed ========================== -execution time: 27.4823389053 seconds +execution time: 8.81113386154 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_coercion.out ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_coercion.out (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_coercion.out Thu Apr 28 16:43:22 2005 @@ -900,3 +900,155 @@ % 2 = 0 %= 2 => 0 + (2+0j) = (4+0j) + += (2+0j) => (4+0j) + - (2+0j) = 0j + -= (2+0j) => 0j + * (2+0j) = (4+0j) + *= (2+0j) => (4+0j) + / (2+0j) = (1+0j) + /= (2+0j) => (1+0j) + ** (2+0j) = (4+0j) + **= (2+0j) => (4+0j) + % (2+0j) = 0j + %= (2+0j) => 0j + + [1] ... + += [1] ... + - [1] ... + -= [1] ... + * [1] = [1, 1] + *= [1] => [1, 1] + / [1] ... + /= [1] ... + ** [1] ... + **= [1] ... + % [1] ... + %= [1] ... + + (2,) ... + += (2,) ... + - (2,) ... + -= (2,) ... + * (2,) = (2, 2) + *= (2,) => (2, 2) + / (2,) ... + /= (2,) ... + ** (2,) ... + **= (2,) ... + % (2,) ... + %= (2,) ... + + None ... + += None ... + - None ... + -= None ... + * None ... + *= None ... + / None ... + /= None ... + ** None ... + **= None ... + % None ... + %= None ... + + = 3 + += => 3 + - = 1 + -= => 1 + * = 2 + *= => 2 + / = 2 + /= => 2 + ** = 2 + **= => 2 + % = 0 + %= => 0 + + = 4 + += => 4 + - = 0 + -= => 0 + * = 4 + *= => 4 + / = 1 + /= => 1 + ** = 4 + **= => 4 + % = 0 + %= => 0 +divmod(2, 2) = (1, 0) +divmod(2, 4.0) = (0.0, 2.0) +divmod(2, 2) = (1L, 0L) +divmod(2, (2+0j)) = ((1+0j), 0j) +divmod(2, [1]) ... +divmod(2, (2,)) ... +divmod(2, None) ... +divmod(2, ) ... +divmod(2, ) = (1, 0) +divmod(4.0, 2) = (2.0, 0.0) +divmod(4.0, 4.0) = (1.0, 0.0) +divmod(4.0, 2) = (2.0, 0.0) +divmod(4.0, (2+0j)) = ((2+0j), 0j) +divmod(4.0, [1]) ... +divmod(4.0, (2,)) ... +divmod(4.0, None) ... +divmod(4.0, ) ... +divmod(4.0, ) = (2.0, 0.0) +divmod(2, 2) = (1L, 0L) +divmod(2, 4.0) = (0.0, 2.0) +divmod(2, 2) = (1L, 0L) +divmod(2, (2+0j)) = ((1+0j), 0j) +divmod(2, [1]) ... +divmod(2, (2,)) ... +divmod(2, None) ... +divmod(2, ) ... +divmod(2, ) = (1L, 0L) +divmod((2+0j), 2) = ((1+0j), 0j) +divmod((2+0j), 4.0) = (0j, (2+0j)) +divmod((2+0j), 2) = ((1+0j), 0j) +divmod((2+0j), (2+0j)) = ((1+0j), 0j) +divmod((2+0j), [1]) ... +divmod((2+0j), (2,)) ... +divmod((2+0j), None) ... +divmod((2+0j), ) ... +divmod((2+0j), ) = ((1+0j), 0j) +divmod([1], 2) ... +divmod([1], 4.0) ... +divmod([1], 2) ... +divmod([1], (2+0j)) ... +divmod([1], [1]) ... +divmod([1], (2,)) ... +divmod([1], None) ... +divmod([1], ) ... +divmod([1], ) ... +divmod((2,), 2) ... +divmod((2,), 4.0) ... +divmod((2,), 2) ... +divmod((2,), (2+0j)) ... +divmod((2,), [1]) ... +divmod((2,), (2,)) ... +divmod((2,), None) ... +divmod((2,), ) ... +divmod((2,), ) ... +divmod(None, 2) ... +divmod(None, 4.0) ... +divmod(None, 2) ... +divmod(None, (2+0j)) ... +divmod(None, [1]) ... +divmod(None, (2,)) ... +divmod(None, None) ... +divmod(None, ) ... +divmod(None, ) ... +divmod(, 2) ... +divmod(, 4.0) ... +divmod(, 2) ... +divmod(, (2+0j)) ... +divmod(, [1]) ... +divmod(, (2,)) ... +divmod(, None) ... +divmod(, ) ... +divmod(, ) ... +divmod(, 2) = (1, 0) +divmod(, 4.0) = (0.0, 2.0) +divmod(, 2) = (1L, 0L) +divmod(, (2+0j)) = ((1+0j), 0j) +divmod(, [1]) ... +divmod(, (2,)) ... +divmod(, None) ... +divmod(, ) ... +divmod(, ) = (1, 0) Modified: pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:59:33 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:26:32 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_coercion.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_coercion.out ============================================================ faking faking @@ -16,24 +16,14 @@ faking faking faking -/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py:0: DeprecationWarning: complex divmod(), // and % are deprecated -/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py:1: DeprecationWarning: complex divmod(), // and % are deprecated +/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py:0: DeprecationWarning: complex divmod(), // and % are deprecated +/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py:1: DeprecationWarning: complex divmod(), // and % are deprecated import copy -/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py:63: DeprecationWarning: complex divmod(), // and % are deprecated +/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py:63: DeprecationWarning: complex divmod(), // and % are deprecated return other % self.arg -/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py:60: DeprecationWarning: complex divmod(), // and % are deprecated +/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py:60: DeprecationWarning: complex divmod(), // and % are deprecated return self.arg % other -==========================timeout========================== -Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py", line 117 in ? -do_infix_binops() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_coercion.py", line 88 in do_infix_binops - z = copy.copy(a) - File "/home/arigo/pypysrc/lib-python-2.3.4/copy.py", line 75 in copy - return copier(x) - File "/home/arigo/pypysrc/lib-python-2.3.4/copy.py", line 140 in _copy_inst - if hasattr(x, '__copy__'): -KeyboardInterrupt +FAILED: test output differs ========================== closed ========================== -execution time: 900.308280945 seconds -exit status: 1 +execution time: 618.596800089 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_commands.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_commands.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_commands.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_commands.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_commands.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:58:28 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:36:51 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,9 +18,9 @@ test_getstatus (__main__.CommandTests) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 54.851s +Ran 2 tests in 39.567s OK ========================== closed ========================== -execution time: 65.4368319511 seconds +execution time: 47.484126091 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_compare.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_compare.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_compare.txt Thu Apr 28 16:43:22 2005 @@ -1,15 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_compare.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_compare.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:56:38 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:37:39 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_compare.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_compare.out ============================================================ faking faking faking +OK ========================== closed ========================== -execution time: 110.46966815 seconds +execution time: 80.4267160892 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_compile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_compile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_compile.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_compile.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_compile.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:56:12 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:38:59 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -27,9 +27,9 @@ test_unary_minus (__main__.TestSpecifics) ... ok ---------------------------------------------------------------------- -Ran 11 tests in 17.815s +Ran 11 tests in 13.062s OK ========================== closed ========================== -execution time: 25.7041759491 seconds +execution time: 19.0551571846 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_complex.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_complex.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_complex.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:41:11 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:39:18 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,26 +14,26 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py", line 316 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py", line 316 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py", line 313 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py", line 313 in test_main test_support.run_unittest(ComplexTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py", line 75 in test_div + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py", line 75 in test_div self.check_div(x, y) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_complex.py", line 58 in check_div - q = z.__div__(x) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py", line 67 in check_div + q = z.__truediv__(y) KeyboardInterrupt test_abs (__main__.ComplexTest) ... ok test_boolcontext (__main__.ComplexTest) ... ok @@ -41,5 +41,5 @@ test_conjugate (__main__.ComplexTest) ... ok test_constructor (__main__.ComplexTest) ... ERROR test_div (__main__.ComplexTest) ... ========================== closed ========================== -execution time: 900.152910948 seconds +execution time: 899.966392994 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_contains.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_contains.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_contains.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_contains.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_contains.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:40:57 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:54:19 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,5 +11,5 @@ faking faking ========================== closed ========================== -execution time: 13.7012701035 seconds +execution time: 10.3121509552 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cookie.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cookie.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:32:12 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 22:54:29 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_cookie.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_cookie.out ============================================================ faking faking @@ -17,11 +17,12 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cookie.py", line 52 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cookie.py", line 52 in ? run_doctest(Cookie) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest raise TestFailed("%d of %d doctests failed" % (f, t)) TestFailed: 1 of 46 doctests failed +FAILED: test output differs ========================== closed ========================== -execution time: 525.243942022 seconds +execution time: 379.597671986 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_copy.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_copy.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_copy.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_copy.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_copy.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:31:27 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:00:49 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -66,9 +66,9 @@ test_reduce_5tuple (__main__.TestCopy) ... ok ---------------------------------------------------------------------- -Ran 54 tests in 35.532s +Ran 54 tests in 25.612s OK ========================== closed ========================== -execution time: 44.4596099854 seconds +execution time: 32.3190760612 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_copy_reg.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_copy_reg.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:30:59 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:01:21 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -21,9 +21,9 @@ test_noncallable_reduce (__main__.CopyRegTestCase) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 4.166s +Ran 5 tests in 3.032s OK ========================== closed ========================== -execution time: 27.7843389511 seconds +execution time: 20.5545630455 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_cpickle.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cpickle.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:15:59 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:01:42 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,41 +16,33 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cpickle.py", line 103 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cpickle.py", line 103 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_cpickle.py", line 99 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cpickle.py", line 99 in test_main cPickleFastPicklerTests - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "pickletester.py", line 776 in test_dict_chunking - s = self.dumps(x, proto) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 1386 in dumps - Pickler(file, protocol, bin).dump(obj) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 231 in dump - self.save(obj) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save - f(self, obj) # Call unbound method with explicit self - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 663 in save_dict - self._batch_setitems(obj.iteritems()) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 677 in _batch_setitems - save(v) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save - f(self, obj) # Call unbound method with explicit self - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 441 in save_none - self.write(NONE) - File "/home/arigo/pypysrc/lib-python-2.3.4/StringIO.py", line 165 in write - self.len = self.pos = self.pos + len(s) + File "pickletester.py", line 777 in test_dict_chunking + y = self.loads(s) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 1394 in loads + return Unpickler(file).load() + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 872 in load + dispatch[key](self) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 926 in load_int + data = self.readline() + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/StringIO.py", line 129 in readline + r = self.buf[self.pos:newpos] KeyboardInterrupt test_dict_chunking (__main__.cPickleTests) ... ========================== closed ========================== -execution time: 900.230950117 seconds +execution time: 900.079277039 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_crypt.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_crypt.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:15:53 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:16:43 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_crypt.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_crypt.py", line 7 in ? import crypt ImportError: crypt ========================== closed ========================== -execution time: 5.54157614708 seconds +execution time: 4.3122279644 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_csv.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_csv.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_csv.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_csv.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_csv.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:15:45 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:16:47 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,11 +13,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_csv.py", line 8 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_csv.py", line 8 in ? import csv - File "/home/arigo/pypysrc/lib-python-2.3.4/csv.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/csv.py", line 7 in ? from _csv import Error, __version__, writer, reader, register_dialect, \ ImportError: _csv ========================== closed ========================== -execution time: 7.3782081604 seconds +execution time: 5.46783208847 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_curses.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_curses.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_curses.txt Thu Apr 28 16:43:22 2005 @@ -1,19 +1,19 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_curses.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_curses.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:15:43 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:16:53 2005 +pypy-revision: 11549 ============================================================ faking faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_curses.py", line 11 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_curses.py", line 11 in ? import curses, sys, tempfile - File "/home/arigo/pypysrc/lib-python-2.3.4/curses/__init__.py", line 15 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/curses/__init__.py", line 15 in ? from _curses import * ImportError: _curses ========================== closed ========================== -execution time: 0.982558012009 seconds +execution time: 0.830815076828 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_datetime.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_datetime.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:00:43 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:16:55 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,26 +18,28 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_datetime.py", line 3113 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_datetime.py", line 3113 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_datetime.py", line 3096 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_datetime.py", line 3096 in test_main test_support.run_suite(thesuite) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_datetime.py", line 1385 in test_extract - self.assertEqual(dt.time(), time(18, 45, 3, 1234)) - File "/home/arigo/pypysrc/pypy/lib/datetime.py", line 1479 in time - return time(self.hour, self.minute, self.second, self.microsecond) - File "/home/arigo/pypysrc/pypy/lib/datetime.py", line 1099 in __new__ - if isinstance(hour, str): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_datetime.py", line 570 in test_ordinal_conversions + self.assertEqual(d, d2) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 301 in failUnlessEqual + if not first == second: + File "/u/pedronis/PyPy/dist/pypy/lib/datetime.py", line 1634 in __eq__ + return self.__cmp(other) == 0 + File "/u/pedronis/PyPy/dist/pypy/lib/datetime.py", line 1681 in __cmp + assert isinstance(other, datetime) KeyboardInterrupt test_constants (__main__.TestModule) ... ok test_non_abstractness (__main__.TestTZInfo) ... ok @@ -101,6 +103,22 @@ test_compare (__main__.TestDateTime) ... ok test_computations (__main__.TestDateTime) ... ok test_ctime (__main__.TestDateTime) ... ok -test_extract (__main__.TestDateTime) ... ========================== closed ========================== -execution time: 900.215548992 seconds +test_extract (__main__.TestDateTime) ... ok +test_extreme_ordinals (__main__.TestDateTime) ... ok +test_extreme_timedelta (__main__.TestDateTime) ... ok +test_fromtimestamp (__main__.TestDateTime) ... ok +test_harmful_mixed_comparison (__main__.TestDateTime) ... ok +test_harmless_mixed_comparison (__main__.TestDateTime) ... ok +test_hash_equality (__main__.TestDateTime) ... ok +test_iso_long_years (__main__.TestDateTime) ... ok +test_isocalendar (__main__.TestDateTime) ... ok +test_isoformat (__main__.TestDateTime) ... ok +test_mixed_compare (__main__.TestDateTime) ... ok +test_more_compare (__main__.TestDateTime) ... ok +test_more_ctime (__main__.TestDateTime) ... ok +test_more_pickling (__main__.TestDateTime) ... ok +test_more_strftime (__main__.TestDateTime) ... ok +test_more_timetuple (__main__.TestDateTime) ... ok +test_ordinal_conversions (__main__.TestDateTime) ... ========================== closed ========================== +execution time: 900.033421993 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dbm.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dbm.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:00:37 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:31:55 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_dbm.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dbm.py", line 7 in ? import dbm ImportError: dbm ========================== closed ========================== -execution time: 5.21238517761 seconds +execution time: 3.99978995323 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_descr.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_descr.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_descr.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_descr.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descr.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 03:00:08 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:32:00 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,16 +13,16 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descr.py", line 4050 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descr.py", line 4050 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descr.py", line 3956 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descr.py", line 3956 in test_main weakref_segfault() # Must be first, somehow - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descr.py", line 3924 in weakref_segfault + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descr.py", line 3924 in weakref_segfault import weakref - File "/home/arigo/pypysrc/lib-python-2.3.4/weakref.py", line 14 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/weakref.py", line 14 in ? from _weakref import \ ImportError: _weakref Testing weakref segfault... ========================== closed ========================== -execution time: 28.1001598835 seconds +execution time: 20.6545219421 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_descrtut.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descrtut.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:52:18 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:32:21 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -165,11 +165,11 @@ 4 items had failures: 6 of 30 in test.test_descrtut.__test__.tut1 4 of 1Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descrtut.py", line 503 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descrtut.py", line 503 in ? test_main(1) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_descrtut.py", line 499 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descrtut.py", line 499 in test_main test_support.run_doctest(test_descrtut, verbose) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest raise TestFailed("%d of %d doctests failed" % (f, t)) TestFailed: 12 of 96 doctests failed 3 in test.test_descrtut.__test__.tut3 @@ -177,5 +177,5 @@ 1 of 6 in test.test_descrtut.__test__.tut8 ***Test Failed*** 12 failures. ========================== closed ========================== -execution time: 470.132879972 seconds +execution time: 341.696279049 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_difflib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_difflib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:37:17 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:38:03 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,50 +16,50 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_difflib.py", line 17 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_difflib.py", line 17 in ? test_support.run_unittest(TestSFbugs, Doctests) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 423 in runTest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 423 in runTest self.__testFunc() - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 1359 in runit + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 1359 in runit _utest(tester, name, doc, filename, lineno) - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 1298 in _utest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 1298 in _utest failures, tries = tester.runstring(doc, name) - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 743 in runstring + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 743 in runstring self.compileflags, self.optionflags) - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 510 in _run_examples + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 510 in _run_examples optionflags) - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442 in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442 in _run_examples_inner compileflags, 1) in globs File "", line 1 in ? - File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 54 in pprint + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 54 in pprint printer.pprint(object) - File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 105 in pprint + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 105 in pprint self._stream.write(self.pformat(object) + "\n") - File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 109 in pformat + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 109 in pformat self._format(object, sio, 0, 0, {}, 0) - File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 127 in _format + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 127 in _format rep = self._repr(object, context, level - 1) - File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 191 in _repr + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 191 in _repr self._depth, level) - File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 203 in format + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 203 in format return _safe_repr(object, context, maxlevels, level) - File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 277 in _safe_repr + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 277 in _safe_repr orepr, oreadable, orecur = _safe_repr(o, context, maxlevels, level) - File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 277 in _safe_repr + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 277 in _safe_repr orepr, oreadable, orecur = _safe_repr(o, context, maxlevels, level) - File "/home/arigo/pypysrc/lib-python-2.3.4/pprint.py", line 268 in _safe_repr + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 268 in _safe_repr if objid in context: KeyboardInterrupt test_ratio_for_null_seqn (__main__.TestSFbugs) ... ok @@ -72,5 +72,5 @@ doctest of difflib.SequenceMatcher ... ok doctest of difflib.SequenceMatcher.find_longest_match ... ok doctest of difflib.SequenceMatcher.get_grouped_opcodes ... ========================== closed ========================== -execution time: 900.179348946 seconds +execution time: 899.986752033 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dircache.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dircache.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:37:08 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:53:04 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,9 +14,9 @@ test_listdir (__main__.DircacheTests) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 1.882s +Ran 2 tests in 1.804s OK ========================== closed ========================== -execution time: 9.47014212608 seconds +execution time: 7.55877494812 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dis.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dis.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dis.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dis.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dis.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:36:08 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:53:11 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -20,9 +20,9 @@ test_opname (__main__.DisTests) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 50.453s +Ran 5 tests in 36.534s OK ========================== closed ========================== -execution time: 59.9506599903 seconds +execution time: 43.7140760422 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dl.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dl.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dl.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dl.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dl.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:36:06 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:53:55 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_dl.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dl.py", line 6 in ? import dl ImportError: dl ========================== closed ========================== -execution time: 0.862523078918 seconds +execution time: 0.777956008911 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_doctest.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_doctest.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:27:43 2005 -pypy-revision: 11518 +startdate: Wed Apr 27 23:53:56 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -470,5 +470,5 @@ Test passed. doctest (doctest) ... 71 tests with zero failures ========================== closed ========================== -execution time: 502.863053083 seconds +execution time: 367.565813065 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_doctest2.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_doctest2.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:21:13 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:00:04 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -114,5 +114,5 @@ Test passed. doctest (test.test_doctest2) ... 19 tests with zero failures ========================== closed ========================== -execution time: 390.301733971 seconds +execution time: 285.577181101 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dumbdbm.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dumbdbm.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:14:43 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:04:57 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -19,9 +19,9 @@ test_write_write_read (__main__.DumbDBMTestCase) ... ok ---------------------------------------------------------------------- -Ran 7 tests in 381.958s +Ran 7 tests in 434.531s OK ========================== closed ========================== -execution time: 389.892908096 seconds +execution time: 442.381337881 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dummy_thread.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dummy_thread.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:14:24 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:12:20 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,7 +11,7 @@ faking faking -*** Using as _thread module *** +*** Using as _thread module *** test_cond_acquire_fail (__main__.LockTests) ... ok test_cond_acquire_success (__main__.LockTests) ... ok test_improper_release (__main__.LockTests) ... ok @@ -35,9 +35,9 @@ ok ---------------------------------------------------------------------- -Ran 15 tests in 7.949s +Ran 15 tests in 5.786s OK ========================== closed ========================== -execution time: 19.5353479385 seconds +execution time: 20.2266039848 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_dummy_threading.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dummy_threading.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:14:08 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:12:41 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -53,5 +53,5 @@ waiting for all tasks to complete all tasks done ========================== closed ========================== -execution time: 15.1704230309 seconds +execution time: 13.0425028801 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_email.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_email.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_email.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_email.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_email.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:14:02 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:12:54 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,13 +11,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_email.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_email.py", line 6 in ? from email.test.test_email import suite - File "/home/arigo/pypysrc/lib-python-2.3.4/email/__init__.py", line 69 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/email/__init__.py", line 69 in ? from encodings.aliases import aliases # The aliases dictionary - File "/home/arigo/pypysrc/lib-python-2.3.4/encodings/__init__.py", line 137 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/encodings/__init__.py", line 137 in ? codecs.register(search_function) TypeError: argument must be callable ========================== closed ========================== -execution time: 5.98763108253 seconds +execution time: 5.51378512383 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_email_codecs.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_email_codecs.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:13:55 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:13:00 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,13 +11,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_email_codecs.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_email_codecs.py", line 6 in ? from email.test.test_email_codecs import suite - File "/home/arigo/pypysrc/lib-python-2.3.4/email/__init__.py", line 69 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/email/__init__.py", line 69 in ? from encodings.aliases import aliases # The aliases dictionary - File "/home/arigo/pypysrc/lib-python-2.3.4/encodings/__init__.py", line 137 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/encodings/__init__.py", line 137 in ? codecs.register(search_function) TypeError: argument must be callable ========================== closed ========================== -execution time: 6.06226205826 seconds +execution time: 5.0849070549 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_enumerate.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_enumerate.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:13:48 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:13:06 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_enumerate.py", line 111 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_enumerate.py", line 111 in ? class MyEnum(enumerate): TypeError: default __new__ takes no parameters ========================== closed ========================== -execution time: 6.52210712433 seconds +execution time: 4.98667097092 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_eof.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_eof.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_eof.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:13:36 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:13:12 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,13 +11,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py", line 32 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py", line 32 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py", line 29 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py", line 29 in test_main test_support.run_unittest(EOFTestCase) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred in __main__.EOFTestCase test_EOFC (__main__.EOFTestCase) ... FAIL @@ -27,9 +27,9 @@ FAIL: test_EOFC (__main__.EOFTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py", line 15, in test_EOFC + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py", line 15, in test_EOFC "EOL while scanning single-quoted string (line 1)") - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ AssertionError: "args=('EOL while scanning single-quoted string (, line 1)',)" != 'EOL while scanning single-quoted string (line 1)' @@ -37,16 +37,16 @@ FAIL: test_EOFS (__main__.EOFTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_eof.py", line 24, in test_EOFS + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py", line 24, in test_EOFS "EOF while scanning triple-quoted string (line 1)") - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ AssertionError: "args=('EOF while scanning triple-quoted string (, line 1)',)" != 'EOF while scanning triple-quoted string (line 1)' ---------------------------------------------------------------------- -Ran 2 tests in 3.038s +Ran 2 tests in 2.223s FAILED (failures=2) ========================== closed ========================== -execution time: 11.7555420399 seconds +execution time: 9.08724808693 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_errno.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_errno.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_errno.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_errno.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_errno.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:13:14 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:13:21 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -128,5 +128,5 @@ EXDEV: 18 EXFULL: 54 ========================== closed ========================== -execution time: 21.7187051773 seconds +execution time: 17.3119370937 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_exceptions.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_exceptions.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:58:14 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:13:40 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_exceptions.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_exceptions.out ============================================================ faking faking @@ -16,9 +16,10 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_exceptions.py", line 95 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_exceptions.py", line 95 in ? while 1: x = x+x KeyboardInterrupt +FAILED: test output differs ========================== closed ========================== -execution time: 900.142353058 seconds +execution time: 900.337150097 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt Thu Apr 28 16:43:22 2005 @@ -1,17 +1,18 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_extcall.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_extcall.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:56:28 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:28:41 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_extcall.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_extcall.out ============================================================ faking faking faking faking faking +FAILED: test output differs ========================== closed ========================== -execution time: 105.713932991 seconds +execution time: 84.05382514 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt Thu Apr 28 16:43:22 2005 @@ -1,17 +1,17 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fcntl.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fcntl.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:56:26 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:30:09 2005 +pypy-revision: 11549 ============================================================ faking faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_fcntl.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fcntl.py", line 7 in ? import fcntl ImportError: fcntl ========================== closed ========================== -execution time: 1.04784798622 seconds +execution time: 5.84749293327 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_file.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_file.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_file.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_file.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_file.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:56:20 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:30:15 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,41 +12,44 @@ faking faking Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args frame.setfastscope(scope_w) - File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > ========================== closed ========================== -execution time: 5.77532792091 seconds +execution time: 7.10462999344 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_filecmp.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_filecmp.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:55:50 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:30:23 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,9 +16,9 @@ test_dircmp (__main__.DirCompareTestCase) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 19.353s +Ran 4 tests in 16.762s OK ========================== closed ========================== -execution time: 30.3245141506 seconds +execution time: 25.5888230801 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fileinput.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fileinput.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:53:37 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:30:49 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -29,5 +29,5 @@ 13. 0-byte files 14. Files that don't end with newline ========================== closed ========================== -execution time: 133.065872908 seconds +execution time: 109.3401649 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fnmatch.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fnmatch.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:52:53 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:32:38 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -17,9 +17,9 @@ test_fnmatch (__main__.FnmatchTestCase) ... ok ---------------------------------------------------------------------- -Ran 1 test in 34.290s +Ran 1 test in 24.904s OK ========================== closed ========================== -execution time: 43.6942389011 seconds +execution time: 33.4621779919 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fork1.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fork1.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:52:48 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:33:12 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_fork1.py", line 13 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fork1.py", line 13 in ? import os, sys, time, thread ImportError: thread ========================== closed ========================== -execution time: 4.29120087624 seconds +execution time: 4.03707313538 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_format.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_format.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_format.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_format.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_format.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:50:24 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:33:17 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -223,7 +223,7 @@ '%#X' % 1L =? '0X1' ... yes u'%#X' % 1L =? '0X1' ... yes '%Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_format.py", line 236 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_format.py", line 236 in ? "%*d"%(sys.maxint, -127) OverflowError: repeated string is too long: 1 2147483643 #o' % 1 =? '01' ... yes @@ -272,5 +272,5 @@ u'no format' % '1' works? ... yes u'no format' % u'1' works? ... yes ========================== closed ========================== -execution time: 143.244663 seconds +execution time: 106.728466034 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_fpformat.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fpformat.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:46:57 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:35:06 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -19,9 +19,9 @@ test_reasonable_values (__main__.FpformatTest) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 179.001s +Ran 3 tests in 129.490s OK ========================== closed ========================== -execution time: 207.484343052 seconds +execution time: 152.666088104 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_frozen.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_frozen.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:46:51 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:37:39 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_frozen.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_frozen.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_frozen.py", line 9 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_frozen.py", line 9 in ? raise TestFailed, "import __hello__ failed:" + str(x) TestFailed: import __hello__ failed:__hello__ +FAILED: test output differs ========================== closed ========================== -execution time: 5.56635308266 seconds +execution time: 5.75176596642 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_funcattrs.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_funcattrs.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:46:45 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:37:45 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_funcattrs.py", line 38 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_funcattrs.py", line 38 in ? del b.__dict__ AttributeError: cannot delete attribute ========================== closed ========================== -execution time: 5.79542803764 seconds +execution time: 4.61488699913 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_future.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_future.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_future.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_future.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_future.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:46:28 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:37:51 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_future.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_future.out ============================================================ faking faking @@ -16,6 +16,7 @@ faking faking faking +OK ========================== closed ========================== -execution time: 16.9328770638 seconds +execution time: 13.5751800537 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_future1.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_future1.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_future1.txt Thu Apr 28 16:43:22 2005 @@ -1,14 +1,14 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_future1.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_future1.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:46:26 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:38:05 2005 +pypy-revision: 11549 ============================================================ faking faking faking 6 ========================== closed ========================== -execution time: 1.38675808907 seconds +execution time: 1.19209599495 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_future2.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_future2.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_future2.txt Thu Apr 28 16:43:22 2005 @@ -1,14 +1,14 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_future2.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_future2.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:46:24 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:38:06 2005 +pypy-revision: 11549 ============================================================ faking faking faking 6 ========================== closed ========================== -execution time: 2.18088293076 seconds +execution time: 1.63168501854 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_future3.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_future3.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_future3.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_future3.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_future3.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:46:16 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:38:07 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -15,9 +15,9 @@ test_true_div_as_default (__main__.TestFuture) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 0.936s +Ran 3 tests in 0.685s OK ========================== closed ========================== -execution time: 8.44127821922 seconds +execution time: 6.43897008896 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_gc.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_gc.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_gc.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gc.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gc.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:46:09 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:38:14 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,12 +11,12 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gc.py", line 419 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gc.py", line 419 in ? test() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gc.py", line 399 in test + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gc.py", line 399 in test enabled = gc.isenabled() AttributeError: 'module' object has no attribute 'isenabled' disabling automatic collection ========================== closed ========================== -execution time: 5.74649000168 seconds +execution time: 5.23049592972 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gdbm.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gdbm.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:46:08 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:38:20 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gdbm.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gdbm.py", line 6 in ? import gdbm ImportError: gdbm ========================== closed ========================== -execution time: 0.873334169388 seconds +execution time: 1.40752983093 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_generators.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_generators.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_generators.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_generators.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_generators.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:31:42 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:38:23 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -44,7 +44,7 @@ from line #146 of test.test_generators.__test__.email Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? AttributeError: 'module' object has no attribute 'WichmannHill' @@ -65,7 +65,7 @@ from line #147 of test.test_generators.__test__.email Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 6, in ? NameError: global name 'gen' is not defined @@ -200,10 +200,10 @@ from line #2 of test.test_generators.__test__.weakref Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? - File "/home/arigo/pypysrc/lib-python-2.3.4/weakref.py", line 14, in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/weakref.py", line 14, in ? from _weakref import \ ImportError: _weakref ***************************************************************** @@ -211,7 +211,7 @@ from line #6 of test.test_generators.__test__.weakref Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? NameError: global name 'weakref' is not defined @@ -220,24 +220,24 @@ from line #7 of test.test_generators.__test__.weakref Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? NameError: global name 'wr' is not defined -***************************************************************** -FailTraceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_generators.py", line 1412 in ? +**********************************************************Traceback (application-level): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_generators.py", line 1412 in ? test_main(1) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_generators.py", line 1408 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_generators.py", line 1408 in test_main test_support.run_doctest(test_generators, verbose) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest raise TestFailed("%d of %d doctests failed" % (f, t)) TestFailed: 30 of 152 doctests failed -ure in example: p = weakref.proxy(gen) +******* +Failure in example: p = weakref.proxy(gen) from line #9 of test.test_generators.__test__.weakref Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? NameError: global name 'weakref' is not defined @@ -246,7 +246,7 @@ from line #14 of test.test_generators.__test__.weakref Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? NameError: global name 'weakref' is not defined @@ -255,7 +255,7 @@ from line #15 of test.test_generators.__test__.weakref Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? NameError: global name 'wr' is not defined @@ -264,7 +264,7 @@ from line #17 of test.test_generators.__test__.weakref Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? NameError: global name 'weakref' is not defined @@ -273,7 +273,7 @@ from line #18 of test.test_generators.__test__.weakref Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? NameError: global name 'p' is not defined @@ -285,5 +285,5 @@ 8 of 10 in test.test_generators.__test__.weakref ***Test Failed*** 30 failures. ========================== closed ========================== -execution time: 865.736933947 seconds +execution time: 629.011167049 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_getargs.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getargs.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:31:35 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:48:53 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,15 +11,15 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_getargs.py", line 22 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getargs.py", line 22 in ? marshal.loads(unicode(r"\222", 'unicode-escape')) - File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 343 in loads + File "/u/pedronis/PyPy/dist/pypy/lib/marshal.py", line 343 in loads return load(f) - File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 334 in load + File "/u/pedronis/PyPy/dist/pypy/lib/marshal.py", line 334 in load return Unmarshaller(f).load() - File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 187 in load + File "/u/pedronis/PyPy/dist/pypy/lib/marshal.py", line 187 in load return self.dispatch[c](self) KeyError: u'\x92' ========================== closed ========================== -execution time: 6.512155056 seconds +execution time: 8.69703292847 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_getargs2.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getargs2.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:31:11 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:49:03 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,9 +13,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_getargs2.py", line 50 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getargs2.py", line 50 in ? from _testcapi import UCHAR_MAX, USHRT_MAX, UINT_MAX, ULONG_MAX, INT_MAX, \ ImportError: _testcapi ========================== closed ========================== -execution time: 22.9749560356 seconds +execution time: 20.2972948551 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_getopt.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getopt.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:24:55 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:49:25 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -23,5 +23,5 @@ doctest (__main__) ... 12 tests with zero failures Module getopt: tests completed successfully. ========================== closed ========================== -execution time: 375.843743086 seconds +execution time: 274.563966036 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:17:46 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:53:59 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -47,17 +47,17 @@ ERROR: test_double_quotes (__main__.GettextTestCase1) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 91, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 91, in setUp gettext.install('gettext', self.localedir) - File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 428, in install + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 428, in install translation(domain, localedir, fallback=True).install(unicode) - File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 416, in translation + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 416, in translation t = _translations.setdefault(key, class_(open(mofile, 'rb'))) - File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 176, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 176, in __init__ self._parse(fp) - File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 282, in _parse + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 282, in _parse self.plural = c2py(plural) - File "/home/arigo/pypysrc/lib-python-2.3.4/gettext.py", line 121, in c2py + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 121, in c2py plural = expr.sub(repl, stack.pop()) TypeError: len() of unsized object @@ -65,11 +65,11 @@ ERROR: test_multiline_strings (__main__.GettextTestCase1) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -77,11 +77,11 @@ ERROR: test_some_translations (__main__.GettextTestCase1) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -89,11 +89,11 @@ ERROR: test_the_alternative_interface (__main__.GettextTestCase1) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -101,11 +101,11 @@ ERROR: test_triple_double_quotes (__main__.GettextTestCase1) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -113,11 +113,11 @@ ERROR: test_triple_single_quotes (__main__.GettextTestCase1) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -125,11 +125,11 @@ ERROR: test_bindtextdomain (__main__.GettextTestCase2) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -137,11 +137,11 @@ ERROR: test_double_quotes (__main__.GettextTestCase2) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -149,11 +149,11 @@ ERROR: test_multiline_strings (__main__.GettextTestCase2) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -161,11 +161,11 @@ ERROR: test_some_translations (__main__.GettextTestCase2) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -173,11 +173,11 @@ ERROR: test_textdomain (__main__.GettextTestCase2) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -185,11 +185,11 @@ ERROR: test_triple_double_quotes (__main__.GettextTestCase2) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -197,11 +197,11 @@ ERROR: test_triple_single_quotes (__main__.GettextTestCase2) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -209,11 +209,11 @@ ERROR: test_de (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -221,11 +221,11 @@ ERROR: test_fr (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -233,11 +233,11 @@ ERROR: test_gd (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -245,11 +245,11 @@ ERROR: test_gd2 (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -257,11 +257,11 @@ ERROR: test_hu (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -269,11 +269,11 @@ ERROR: test_lt (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -281,11 +281,11 @@ ERROR: test_pl (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -293,11 +293,11 @@ ERROR: test_plural_forms1 (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -305,31 +305,31 @@ ERROR: test_plural_forms2 (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_ru (__main__.PluralFormsTestCase) -----------------Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 345 in ? +OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSATraceback (application-level): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 345 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 341 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 341 in test_main run_suite(suite()) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred; run in verbose mode for details ------------------------------------------------------- +GES + +====================================================================== +ERROR: test_ru (__main__.PluralFormsTestCase) +---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -337,11 +337,11 @@ ERROR: test_security (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -349,11 +349,11 @@ ERROR: test_sl (__main__.PluralFormsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -361,11 +361,11 @@ ERROR: test_unicode_msgid (__main__.UnicodeTranslationsTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 293, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 293, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -373,11 +373,11 @@ ERROR: test_unicode_msgstr (__main__.UnicodeTranslationsTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 293, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 293, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES @@ -385,18 +385,18 @@ ERROR: test_weird_metadata (__main__.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 313, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 313, in setUp GettextBaseTest.setUp(self) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp os.makedirs(LOCALEDIR) - File "/home/arigo/pypysrc/lib-python-2.3.4/os.py", line 154, in makedirs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs mkdir(name, mode) OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES ---------------------------------------------------------------------- -Ran 28 tests in 396.780s +Ran 28 tests in 294.663s FAILED (errors=28) ========================== closed ========================== -execution time: 429.322220087 seconds +execution time: 323.007567883 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_gl.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_gl.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_gl.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gl.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gl.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:17:39 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:59:23 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gl.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gl.py", line 7 in ? import gl, GL, time ImportError: gl ========================== closed ========================== -execution time: 5.54836797714 seconds +execution time: 5.7698700428 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_glob.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_glob.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_glob.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_glob.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_glob.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:16:53 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 00:59:29 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -20,9 +20,9 @@ test_glob_one_directory (__main__.GlobTests) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 33.006s +Ran 4 tests in 31.023s OK ========================== closed ========================== -execution time: 46.5945489407 seconds +execution time: 44.2822029591 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_global.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_global.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_global.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_global.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_global.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:16:41 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:00:15 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_global.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_global.out ============================================================ faking faking @@ -18,6 +18,7 @@ :2: SyntaxWarning: name 'b' is assigned to before global declaration :2: SyntaxWarning: name 'x' is used prior to global declaration :2: SyntaxWarning: name 'x' is assigned to before global declaration +FAILED: test output differs ========================== closed ========================== -execution time: 12.1803069115 seconds +execution time: 10.2659399509 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt Thu Apr 28 16:43:22 2005 @@ -1,30 +1,31 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:16:31 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:00:26 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_grammar.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_grammar.out ============================================================ faking faking -/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py:42: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py:42: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up if -2147483647-1 != 020000000000: raise TestFailed, 'max negative int' -/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py:44: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py:44: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up if 037777777777 != -1: raise TestFailed, 'oct -1' -/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py:45: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up +/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py:45: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up if 0xffffffff != -1: raise TestFailed, 'hex -1' faking faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py", line 453 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py", line 453 in ? f() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_grammar.py", line 446 in f + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py", line 446 in f exec r"""if 1: File "", line 2 in ? TypeError: exec: arg 1 must be a string, file, or code object +FAILED: test output differs ========================== closed ========================== -execution time: 9.57444095612 seconds +execution time: 9.01975488663 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_grp.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_grp.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_grp.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_grp.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grp.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:16:29 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:00:36 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_grp.py", line 3 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grp.py", line 3 in ? import grp ImportError: grp ========================== closed ========================== -execution time: 0.856007099152 seconds +execution time: 1.79234695435 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_gzip.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gzip.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:16:23 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:00:39 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,11 +11,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_gzip.py", line 3 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gzip.py", line 3 in ? import gzip - File "/home/arigo/pypysrc/lib-python-2.3.4/gzip.py", line 9 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gzip.py", line 9 in ? import zlib ImportError: zlib ========================== closed ========================== -execution time: 5.7197458744 seconds +execution time: 7.8925640583 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_hash.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_hash.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_hash.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_hash.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hash.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:16:14 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:00:47 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -15,9 +15,9 @@ test_numeric_literals (__main__.HashEqualityTestCase) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 1.198s +Ran 3 tests in 0.871s OK ========================== closed ========================== -execution time: 8.76216888428 seconds +execution time: 7.48015403748 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_heapq.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_heapq.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:07:39 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:00:55 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,5 +12,5 @@ faking All OK ========================== closed ========================== -execution time: 514.994452 seconds +execution time: 383.960414171 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_hexoct.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hexoct.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:07:21 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:07:19 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -30,9 +30,9 @@ test_oct_unsigned (__main__.TextHexOct) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 1.307s +Ran 4 tests in 0.954s OK ========================== closed ========================== -execution time: 18.2040359974 seconds +execution time: 15.7908778191 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:04:08 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:07:35 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,20 +11,20 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 167 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 167 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 163 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 163 in test_main CopyTestCase - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors "9294727A3638BB1C13F48EF8158BFC9D") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test self.assertEqual(h.hexdigest().upper(), digest.upper()) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ AssertionError: '000000000000000000000000E71DFA9D' != '9294727A3638BB1C13F48EF8158BFC9D' @@ -43,18 +43,18 @@ FAIL: test_md5_vectors (__main__.TestVectorsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors "9294727A3638BB1C13F48EF8158BFC9D") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test self.assertEqual(h.hexdigest().upper(), digest.upper()) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ AssertionError: '000000000000000000000000E71DFA9D' != '9294727A3638BB1C13F48EF8158BFC9D' ---------------------------------------------------------------------- -Ran 10 tests in 179.320s +Ran 10 tests in 130.733s FAILED (failures=1) ========================== closed ========================== -execution time: 192.207137108 seconds +execution time: 141.457495928 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt Thu Apr 28 16:43:22 2005 @@ -1,19 +1,19 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_hotshot.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hotshot.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:04:07 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:09:57 2005 +pypy-revision: 11549 ============================================================ faking faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_hotshot.py", line 1 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hotshot.py", line 1 in ? import hotshot - File "/home/arigo/pypysrc/lib-python-2.3.4/hotshot/__init__.py", line 3 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/hotshot/__init__.py", line 3 in ? import _hotshot ImportError: _hotshot ========================== closed ========================== -execution time: 0.968793869019 seconds +execution time: 4.8516690731 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_htmllib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmllib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:01:12 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:10:04 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,9 +18,9 @@ test_decl_collection (__main__.HTMLParserTestCase) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 11.749s +Ran 2 tests in 8.538s OK ========================== closed ========================== -execution time: 175.091779947 seconds +execution time: 129.793881178 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:46:11 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:12:14 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,36 +16,26 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py", line 301 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py", line 301 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py", line 297 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py", line 297 in test_main test_support.run_unittest(HTMLParserTestCase) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py", line 160 in test_doctype_decl - self._run_check("" % inside, [ - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_htmlparser.py", line 79 in _run_check + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py", line 104 in test_processing_instruction_only + self._run_check("", [ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py", line 79 in _run_check parser.feed(s) - File "/home/arigo/pypysrc/lib-python-2.3.4/HTMLParser.py", line 108 in feed - self.goahead(0) - File "/home/arigo/pypysrc/lib-python-2.3.4/HTMLParser.py", line 156 in goahead - k = self.parse_declaration(i) - File "/home/arigo/pypysrc/lib-python-2.3.4/markupbase.py", line 116 in parse_declaration - j = self._parse_doctype_subset(j + 1, i) - File "/home/arigo/pypysrc/lib-python-2.3.4/markupbase.py", line 205 in _parse_doctype_subset - j = meth(j, declstartpos) - File "/home/arigo/pypysrc/lib-python-2.3.4/markupbase.py", line 278 in _parse_doctype_attlist - name, j = self._scan_name(j, declstartpos) KeyboardInterrupt test_attr_entity_replacement (__main__.HTMLParserTestCase) ... ok test_attr_funky_names (__main__.HTMLParserTestCase) ... ok @@ -57,6 +47,9 @@ test_buffer_artefacts (__main__.HTMLParserTestCase) ... ok test_cdata_content (__main__.HTMLParserTestCase) ... ok test_declaration_junk_chars (__main__.HTMLParserTestCase) ... ok -test_doctype_decl (__main__.HTMLParserTestCase) ... ========================== closed ========================== -execution time: 900.158081055 seconds +test_doctype_decl (__main__.HTMLParserTestCase) ... ok +test_get_starttag_text (__main__.HTMLParserTestCase) ... ok +test_illegal_declarations (__main__.HTMLParserTestCase) ... ok +test_processing_instruction_only (__main__.HTMLParserTestCase) ... ========================== closed ========================== +execution time: 901.847540855 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_httplib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_httplib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:45:36 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:27:17 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_httplib.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_httplib.out ============================================================ faking faking @@ -15,6 +15,7 @@ faking faking faking +OK ========================== closed ========================== -execution time: 35.2412950993 seconds +execution time: 30.9055290222 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_imageop.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imageop.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:45:30 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:27:48 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imageop.py", line 10 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imageop.py", line 10 in ? import imageop, uu, os ImportError: imageop ========================== closed ========================== -execution time: 5.54031991959 seconds +execution time: 4.55727982521 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_imaplib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imaplib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:43:18 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:27:53 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -17,5 +17,5 @@ faking faking ========================== closed ========================== -execution time: 132.257404089 seconds +execution time: 97.3515319824 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_imgfile.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imgfile.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:43:12 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:29:30 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imgfile.py", line 9 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imgfile.py", line 9 in ? import imgfile, uu, os ImportError: imgfile ========================== closed ========================== -execution time: 5.53751707077 seconds +execution time: 5.05778217316 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_imp.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_imp.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_imp.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_imp.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imp.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:43:06 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:29:36 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,13 +11,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imp.py", line 39 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imp.py", line 39 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imp.py", line 36 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imp.py", line 36 in test_main testLock() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_imp.py", line 13 in testLock + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imp.py", line 13 in testLock lock_held_at_start = imp.lock_held() AttributeError: 'module' object has no attribute 'lock_held' ========================== closed ========================== -execution time: 5.56586003304 seconds +execution time: 4.62441587448 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_import.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_import.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_import.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_import.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_import.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:42:57 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:29:41 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,11 +11,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_import.py", line 67 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_import.py", line 67 in ? test_with_extension(os.extsep + "py") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_import.py", line 53 in test_with_extension + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_import.py", line 53 in test_with_extension raise ValueError("import from .pyc/.pyo failed: %s" % err) ValueError: import from .pyc/.pyo failed: No module named @test ========================== closed ========================== -execution time: 8.07526302338 seconds +execution time: 6.98207688332 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:42:42 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:29:49 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,13 +11,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 206 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 206 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 203 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 203 in test_main test_support.run_unittest(ImportHooksTestCase) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred in __main__.ImportHooksTestCase testBlocker (__main__.ImportHooksTestCase) ... ERROR @@ -29,7 +29,7 @@ ERROR: testBlocker (__main__.ImportHooksTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp self.meta_path = sys.meta_path[:] AttributeError: 'module' object has no attribute 'meta_path' @@ -37,7 +37,7 @@ ERROR: testImpWrapper (__main__.ImportHooksTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp self.meta_path = sys.meta_path[:] AttributeError: 'module' object has no attribute 'meta_path' @@ -45,7 +45,7 @@ ERROR: testMetaPath (__main__.ImportHooksTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp self.meta_path = sys.meta_path[:] AttributeError: 'module' object has no attribute 'meta_path' @@ -53,14 +53,14 @@ ERROR: testPathHook (__main__.ImportHooksTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp self.meta_path = sys.meta_path[:] AttributeError: 'module' object has no attribute 'meta_path' ---------------------------------------------------------------------- -Ran 4 tests in 3.283s +Ran 4 tests in 2.386s FAILED (errors=4) ========================== closed ========================== -execution time: 14.5766859055 seconds +execution time: 10.7792191505 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_inspect.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_inspect.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:31:48 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:30:01 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,9 +13,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_inspect.py", line 80 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_inspect.py", line 80 in ? mod = imp.load_source('testmod', TESTFN) AttributeError: 'module' object has no attribute 'load_source' ========================== closed ========================== -execution time: 652.909941912 seconds +execution time: 255.218666077 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_ioctl.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ioctl.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:31:23 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:34:17 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,11 +11,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ioctl.py", line 2 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ioctl.py", line 2 in ? from test_support import TestSkipped, run_unittest File "test_support.py", line 4 in ? raise ImportError, 'test_support must be imported from the test package' ImportError: test_support must be imported from the test package ========================== closed ========================== -execution time: 25.3406322002 seconds +execution time: 8.79495596886 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:29:58 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:34:26 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,13 +11,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py", line 278 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py", line 278 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py", line 273 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py", line 273 in test_main TestIsInstanceIsSubclass - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred; run in verbose mode for details test_bases_raises_other_than_attribute_error (__main__.TestIsInstanceExceptions) ... ok @@ -40,9 +40,9 @@ FAIL: test_isinstance_recursion_limit (__main__.TestIsInstanceIsSubclass) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py", line 256, in test_isinstance_recursion_limit + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py", line 256, in test_isinstance_recursion_limit self.assertRaises(RuntimeError, blowstack, isinstance, '', str) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises raise self.failureException, excName AssertionError: RuntimeError @@ -50,16 +50,16 @@ FAIL: test_subclass_recursion_limit (__main__.TestIsInstanceIsSubclass) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_isinstance.py", line 251, in test_subclass_recursion_limit + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py", line 251, in test_subclass_recursion_limit self.assertRaises(RuntimeError, blowstack, issubclass, str, str) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises raise self.failureException, excName AssertionError: RuntimeError ---------------------------------------------------------------------- -Ran 15 tests in 48.323s +Ran 15 tests in 12.244s FAILED (failures=2) ========================== closed ========================== -execution time: 84.0605962276 seconds +execution time: 21.7371780872 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_iter.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_iter.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_iter.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_iter.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_iter.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:25:34 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:34:49 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -56,169 +56,172 @@ test_unicode_join_endcase (__main__.TestCase) ... ok test_unpack_iter (__main__.TestCase) ... FAIL test_writelines (__main__.TestCase) ... Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args frame.setfastscope(scope_w) - File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > ========================== closed ========================== -execution time: 263.113600969 seconds +execution time: 102.834505796 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/pypy/lib/test2/test_itertools.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/pypy/lib/test2/test_itertools.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:10:34 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:36:33 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,24 +12,24 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/pypy/lib/test2/test_itertools.py", line 654 in ? + File "/u/pedronis/PyPy/dist/pypy/lib/test2/test_itertools.py", line 654 in ? test_main(verbose=True) - File "/home/arigo/pypysrc/pypy/lib/test2/test_itertools.py", line 638 in test_main + File "/u/pedronis/PyPy/dist/pypy/lib/test2/test_itertools.py", line 638 in test_main test_support.run_unittest(*test_classes) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/pypy/lib/test2/test_itertools.py", line 432 in test_dropwhile - self.assertRaises(TypeError, list, dropwhile(isOdd, N(s))) + File "/u/pedronis/PyPy/dist/pypy/lib/test2/test_itertools.py", line 406 in test_starmap + self.assertEqual(list(starmap(operator.pow, g(ss))), map(operator.pow, g(s), g(s))) KeyboardInterrupt test_StopIteration (__main__.TestBasicOps) ... ok test_chain (__main__.TestBasicOps) ... ok @@ -46,6 +46,12 @@ test_takewhile (__main__.TestBasicOps) ... ok test_chain (__main__.TestVariousIteratorArgs) ... ok test_cycle (__main__.TestVariousIteratorArgs) ... ok -test_dropwhile (__main__.TestVariousIteratorArgs) ... ========================== closed ========================== -execution time: 900.342549086 seconds +test_dropwhile (__main__.TestVariousIteratorArgs) ... ok +test_ifilter (__main__.TestVariousIteratorArgs) ... ok +test_ifilterfalse (__main__.TestVariousIteratorArgs) ... ok +test_imap (__main__.TestVariousIteratorArgs) ... ok +test_islice (__main__.TestVariousIteratorArgs) ... ok +test_izip (__main__.TestVariousIteratorArgs) ... ok +test_starmap (__main__.TestVariousIteratorArgs) ... ========================== closed ========================== +execution time: 900.903362989 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_largefile.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_largefile.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:10:06 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:51:35 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -51,5 +51,5 @@ 0L =?= 0 ... yes 1 =?= 1 ... yes ========================== closed ========================== -execution time: 27.9014949799 seconds +execution time: 14.4720249176 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_linuxaudiodev.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_linuxaudiodev.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:09:52 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:51:49 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_linuxaudiodev.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_linuxaudiodev.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_linuxaudiodev.py", line 7 in ? import fcntl ImportError: fcntl +FAILED: test output differs ========================== closed ========================== -execution time: 13.2105879784 seconds +execution time: 5.08338594437 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_locale.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_locale.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_locale.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_locale.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_locale.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:09:38 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:51:56 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_locale.py", line 16 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_locale.py", line 16 in ? raise ImportError, "test locale %s not supported" % tloc ImportError: test locale en_US not supported ========================== closed ========================== -execution time: 13.8007359505 seconds +execution time: 5.23888087273 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_logging.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_logging.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_logging.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_logging.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_logging.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:08:49 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:52:03 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_logging.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_logging.out ============================================================ faking faking @@ -20,11 +20,12 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_logging.py", line 29 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_logging.py", line 29 in ? import socket, threading, time - File "/home/arigo/pypysrc/lib-python-2.3.4/threading.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/threading.py", line 6 in ? import thread ImportError: thread +FAILED: test output differs ========================== closed ========================== -execution time: 48.6045329571 seconds +execution time: 15.7029800415 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_long.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_long.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_long.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_long.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:53:48 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 01:52:20 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,14 +12,14 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long.py", line 436 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long.py", line 436 in ? test_division() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long.py", line 100 in test_division + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long.py", line 100 in test_division y = getran(leny) or 1L - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long.py", line 59 in getran + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long.py", line 59 in getran r = int(random() * (SHIFT * 2)) KeyboardInterrupt long / * % divmod ========================== closed ========================== -execution time: 900.321178913 seconds +execution time: 900.978562117 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_long_future.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long_future.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:53:40 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:07:22 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,14 +11,14 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long_future.py", line 55 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long_future.py", line 55 in ? test_true_division() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_long_future.py", line 19 in test_true_division + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long_future.py", line 19 in test_true_division verify(1 / mhuge == 0.0) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 180 in verify + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180 in verify raise TestFailed(reason) TestFailed: test failed long true division ========================== closed ========================== -execution time: 7.60211396217 seconds +execution time: 6.14067292213 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt Thu Apr 28 16:43:22 2005 @@ -1,15 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_longexp.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_longexp.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:53:37 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:07:29 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_longexp.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_longexp.out ============================================================ faking faking faking +OK ========================== closed ========================== -execution time: 3.1265900135 seconds +execution time: 2.79140210152 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_macfs.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macfs.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:53:15 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:07:32 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,9 +13,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_macfs.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macfs.py", line 6 in ? import macfs ImportError: macfs ========================== closed ========================== -execution time: 20.9656069279 seconds +execution time: 10.4201729298 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_macostools.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macostools.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:53:08 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:07:43 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_macostools.py", line 4 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macostools.py", line 4 in ? import macostools ImportError: macostools ========================== closed ========================== -execution time: 6.03005599976 seconds +execution time: 3.9751958847 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_macpath.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macpath.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:52:54 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:07:48 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,9 +18,9 @@ test_splitext (__main__.MacPathTestCase) ... ok ---------------------------------------------------------------------- -Ran 6 tests in 4.158s +Ran 6 tests in 2.620s OK ========================== closed ========================== -execution time: 14.3959858418 seconds +execution time: 9.74198007584 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mailbox.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mailbox.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:52:19 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:07:58 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,9 +16,9 @@ test_nonempty_maildir_new (__main__.MaildirTestCase) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 9.789s +Ran 4 tests in 9.863s OK ========================== closed ========================== -execution time: 34.6647808552 seconds +execution time: 16.7193570137 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt Thu Apr 28 16:43:22 2005 @@ -1,30 +1,15 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_marshal.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_marshal.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:37:18 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:08:14 2005 +pypy-revision: 11549 ============================================================ faking faking faking faking faking -==========================timeout========================== -Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_marshal.py", line 44 in ? -marshal.dumps([128] * 1000) - File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 338 in dumps - dump(x, f) - File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 331 in dump - Marshaller(f).dump(x) - File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 41 in dump - self.dispatch[type(x)](self, x) - File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 142 in dump_list - self.dump(item) - File "/home/arigo/pypysrc/pypy/lib/marshal.py", line 41 in dump - self.dispatch[type(x)](self, x) -KeyboardInterrupt ========================== closed ========================== -execution time: 900.541698933 seconds -exit status: 1 +execution time: 783.13994503 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_math.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_math.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_math.txt Thu Apr 28 16:43:22 2005 @@ -1,17 +1,18 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_math.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_math.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:37:12 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:21:18 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_math.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_math.out ============================================================ faking faking faking faking faking +FAILED: test output differs ========================== closed ========================== -execution time: 6.5071618557 seconds +execution time: 5.44168496132 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_md5.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_md5.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_md5.txt Thu Apr 28 16:43:22 2005 @@ -1,15 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_md5.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_md5.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:36:54 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:21:23 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_md5.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_md5.out ============================================================ faking faking faking +FAILED: test output differs ========================== closed ========================== -execution time: 18.02038908 seconds +execution time: 13.2258200645 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mhlib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mhlib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:26:26 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:21:37 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -21,9 +21,9 @@ test_sequence (__main__.MhlibTests) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 610.792s +Ran 5 tests in 454.479s OK ========================== closed ========================== -execution time: 627.443366051 seconds +execution time: 466.838415861 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mimetools.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mimetools.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:24:57 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:29:24 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,9 +18,9 @@ test_message (__main__.MimeToolsTest) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 76.316s +Ran 3 tests in 52.793s OK ========================== closed ========================== -execution time: 89.063904047 seconds +execution time: 62.6498670578 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mimetypes.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mimetypes.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:23:58 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:30:27 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -24,9 +24,9 @@ test_non_standard_types (__main__.MimeTypesTestCase) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 44.121s +Ran 5 tests in 31.935s OK ========================== closed ========================== -execution time: 58.8752701283 seconds +execution time: 42.8693101406 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_minidom.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_minidom.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:23:20 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:31:19 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -15,11 +15,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_minidom.py", line 12 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_minidom.py", line 12 in ? import xml.parsers.expat - File "/home/arigo/pypysrc/lib-python-2.3.4/xml/parsers/expat.py", line 4 in ? + File "/usr/lib/python2.3/site-packages/_xmlplus/parsers/expat.py", line 4 in ? from pyexpat import * ImportError: pyexpat ========================== closed ========================== -execution time: 24.8063130379 seconds +execution time: 35.8120279312 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mmap.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mmap.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:23:14 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:31:55 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_mmap.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_mmap.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_mmap.py", line 2 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mmap.py", line 2 in ? import mmap ImportError: mmap +FAILED: test output differs ========================== closed ========================== -execution time: 5.55223202705 seconds +execution time: 4.39550495148 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_module.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_module.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_module.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_module.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_module.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:23:08 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:32:00 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,11 +11,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_module.py", line 10 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_module.py", line 10 in ? verify(foo.__dict__ is None) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 180 in verify + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180 in verify raise TestFailed(reason) TestFailed: test failed ========================== closed ========================== -execution time: 5.52077507973 seconds +execution time: 4.18672609329 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mpz.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mpz.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:23:07 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:32:05 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_mpz.py", line 2 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mpz.py", line 2 in ? import mpz ImportError: mpz ========================== closed ========================== -execution time: 0.877066135406 seconds +execution time: 0.689690113068 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_multifile.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_multifile.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:22:40 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 02:32:06 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,5 +11,5 @@ faking faking ========================== closed ========================== -execution time: 27.0769410133 seconds +execution time: 19.7668139935 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_netrc.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_netrc.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:58:03 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:30:22 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,9 +13,9 @@ test_case_1 (__main__.NetrcTestCase) ... ok ---------------------------------------------------------------------- -Ran 1 test in 15.914s +Ran 1 test in 12.436s OK ========================== closed ========================== -execution time: 23.7061269283 seconds +execution time: 18.8283009529 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_new.out ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_new.out (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_new.out Thu Apr 28 16:43:22 2005 @@ -1,10 +1,10 @@ test_new new.module() - + new.classobj() __main__.Spam new.instance() -<__main__.Spam instance at 0x40bcc98c> +<__main__.Spam instance at 0x413c234c> new.instancemethod() - + new.function() Modified: pypy/dist/lib-python-2.3.4/test/result/test_new.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_new.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_new.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_new.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_new.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:57:56 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:30:41 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_new.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_new.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_new.py", line 67 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_new.py", line 67 in ? func = new.function(ccode, g) TypeError: default __new__ takes no parameters +FAILED: test output differs ========================== closed ========================== -execution time: 6.74917197227 seconds +execution time: 5.20506906509 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_nis.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_nis.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_nis.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_nis.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_nis.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:57:50 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:30:47 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_nis.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_nis.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_nis.py", line 2 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_nis.py", line 2 in ? import nis ImportError: nis +FAILED: test output differs ========================== closed ========================== -execution time: 5.52605700493 seconds +execution time: 4.31751489639 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_normalization.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_normalization.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:57:43 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:30:51 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,11 +11,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_normalization.py", line 91 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_normalization.py", line 91 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_normalization.py", line 44 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_normalization.py", line 44 in test_main raise TestSkipped(TESTDATAFILE + " not found, download from " + TestSkipped: NormalizationTest-3.2.0.txt not found, download from http://www.unicode.org/Public/3.2-Update/NormalizationTest-3.2.0.txt ========================== closed ========================== -execution time: 5.65503716469 seconds +execution time: 4.30832386017 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_ntpath.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ntpath.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:57:34 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:30:56 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,5 +12,5 @@ faking No errors. Thank your lucky stars. ========================== closed ========================== -execution time: 9.62477493286 seconds +execution time: 7.37295985222 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_opcodes.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_opcodes.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:57:24 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:31:04 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_opcodes.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_opcodes.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_opcodes.py", line 61 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_opcodes.py", line 61 in ? try: raise BClass, a -BClass: <__main__.BClass instance at 0x40bd2ecc> +BClass: <__main__.BClass instance at 0x413d4d4c> +FAILED: test output differs ========================== closed ========================== -execution time: 8.82748818398 seconds +execution time: 6.91907310486 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_openpty.out ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_openpty.out (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_openpty.out Thu Apr 28 16:43:22 2005 @@ -1,4 +1,4 @@ test_openpty Calling os.openpty() -(master, slave) = (5, 6) +(master, slave) = (3, 4) Ping! Modified: pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt Thu Apr 28 16:43:22 2005 @@ -1,17 +1,18 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_openpty.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_openpty.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:57:19 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:31:11 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_openpty.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_openpty.out ============================================================ faking faking faking faking faking +FAILED: test output differs ========================== closed ========================== -execution time: 5.74162387848 seconds +execution time: 6.78429794312 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_operations.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_operations.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_operations.txt Thu Apr 28 16:43:22 2005 @@ -1,21 +1,22 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_operations.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operations.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:57:16 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:31:18 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_operations.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_operations.out ============================================================ faking faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operations.py", line 36 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operations.py", line 36 in ? d[x2] = 2 - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operations.py", line 29 in __cmp__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operations.py", line 29 in __cmp__ raise RuntimeError, "gotcha" RuntimeError: gotcha +FAILED: test output differs ========================== closed ========================== -execution time: 1.90072512627 seconds +execution time: 2.17960906029 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_operator.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_operator.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_operator.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:56:52 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:31:21 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,20 +11,20 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 235 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 235 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 231 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 231 in test_main test_support.run_unittest(OperatorTestCase) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 116, in test_isCallable + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 116, in test_isCallable check(self, C(), 0) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 112, in check + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 112, in check self.assert_(operator.isCallable(o) == callable(o) == v) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError @@ -74,18 +74,18 @@ FAIL: test_isCallable (__main__.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 116, in test_isCallable + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 116, in test_isCallable check(self, C(), 0) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_operator.py", line 112, in check + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 112, in check self.assert_(operator.isCallable(o) == callable(o) == v) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError ---------------------------------------------------------------------- -Ran 41 tests in 14.734s +Ran 41 tests in 10.831s FAILED (failures=1) ========================== closed ========================== -execution time: 23.8398969173 seconds +execution time: 17.710351944 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_optparse.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_optparse.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:56:05 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:31:39 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,19 +13,19 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_optparse.py", line 1219 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_optparse.py", line 1219 in ? unittest.main() - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 720 in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 720 in __init__ self.parseArgs(argv) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 741 in parseArgs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 741 in parseArgs self.test = self.testLoader.loadTestsFromModule(self.module) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 465 in loadTestsFromModule + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 465 in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 456 in loadTestsFromTestCase + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 456 in loadTestsFromTestCase self.getTestCaseNames(testCaseClass))) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 532 in getTestCaseNames + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 532 in getTestCaseNames testFnNames.sort(self.sortTestMethodsUsing) TypeError: cmp() takes exactly 2 arguments (3 given) ========================== closed ========================== -execution time: 46.2194261551 seconds +execution time: 37.1863081455 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_os.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_os.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_os.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_os.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_os.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:55:24 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:32:17 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,9 +12,9 @@ faking faking faking -/home/arigo/pypysrc/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program +/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program result = apply(fn, self.unwrappedargs, self.unwrappedkwds) -/home/arigo/pypysrc/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program +/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program result = apply(fn, self.unwrappedargs, self.unwrappedkwds) test_tempnam (__main__.TemporaryFileTests) ... ok test_tmpfile (__main__.TemporaryFileTests) ... ok @@ -26,9 +26,9 @@ test_traversal (__main__.WalkTests) ... ok ---------------------------------------------------------------------- -Ran 8 tests in 17.968s +Ran 8 tests in 15.158s OK ========================== closed ========================== -execution time: 40.9059519768 seconds +execution time: 32.4310340881 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_ossaudiodev.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ossaudiodev.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:55:18 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:32:50 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_ossaudiodev.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ossaudiodev.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ossaudiodev.py", line 7 in ? import fcntl ImportError: fcntl +FAILED: test output differs ========================== closed ========================== -execution time: 5.58309197426 seconds +execution time: 4.33334302902 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_parser.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_parser.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_parser.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:54:38 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:32:54 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -36,11 +36,11 @@ ERROR: test_assert (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 142, in test_assert + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 142, in test_assert self.check_suite("assert alo < ahi and blo < bhi\n") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -48,11 +48,11 @@ ERROR: test_basic_import_statement (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 131, in test_basic_import_statement + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 131, in test_basic_import_statement self.check_suite("import sys") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -60,11 +60,11 @@ ERROR: test_expressions (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 39, in test_expressions + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 39, in test_expressions self.check_expr("foo(1)") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 25, in check_expr + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 25, in check_expr self.roundtrip(parser.expr, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -72,11 +72,11 @@ ERROR: test_function_defs (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 102, in test_function_defs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 102, in test_function_defs self.check_suite("def f(): pass") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -84,11 +84,11 @@ ERROR: test_import_from_statement (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 121, in test_import_from_statement + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 121, in test_import_from_statement self.check_suite("from sys.path import *") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -96,11 +96,11 @@ ERROR: test_pep263 (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 138, in test_pep263 + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 138, in test_pep263 self.check_suite("# -*- coding: iso-8859-1 -*-\n" - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -108,11 +108,11 @@ ERROR: test_print (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 72, in test_print + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 72, in test_print self.check_suite("print") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -120,11 +120,11 @@ ERROR: test_simple_assignments (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 84, in test_simple_assignments + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 84, in test_simple_assignments self.check_suite("a = b") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -132,11 +132,11 @@ ERROR: test_simple_augmented_assignments (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 88, in test_simple_augmented_assignments + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 88, in test_simple_augmented_assignments self.check_suite("a += b") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -144,33 +144,33 @@ ERROR: test_simple_expression (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 81, in test_simple_expression + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 81, in test_simple_expression self.check_suite("a") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' ====================================================================== ERROR: test_yield_statement (__main__.RoundtripLegalSyntaxTestCase) -------------------------------------------------------------------Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 384 in ? +------Traceback (application-level): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 384 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 379 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 379 in test_main IllegalSyntaxTestCase - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred; run in verbose mode for details ----- +---------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 31, in test_yield_statement + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 31, in test_yield_statement self.check_suite("def f(): yield 1") - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -178,7 +178,7 @@ ERROR: test_a_comma_comma_c (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 330, in test_a_comma_comma_c + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 330, in test_a_comma_comma_c self.check_bad_tree(tree, "a,,c") TypeError: instance exception may not have a separate value @@ -186,7 +186,7 @@ ERROR: test_illegal_operator (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 363, in test_illegal_operator + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 363, in test_illegal_operator self.check_bad_tree(tree, "a $= b") TypeError: instance exception may not have a separate value @@ -194,7 +194,7 @@ ERROR: test_illegal_yield_1 (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 216, in test_illegal_yield_1 + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 216, in test_illegal_yield_1 self.check_bad_tree(tree, "def f():\n return 1\n yield 1") TypeError: instance exception may not have a separate value @@ -202,7 +202,7 @@ ERROR: test_illegal_yield_2 (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 280, in test_illegal_yield_2 + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 280, in test_illegal_yield_2 self.check_bad_tree(tree, "def f():\n return 1\n yield 1") TypeError: instance exception may not have a separate value @@ -210,7 +210,7 @@ ERROR: test_junk (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 161, in test_junk + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 161, in test_junk self.check_bad_tree((1, 2, 3), "") TypeError: instance exception may not have a separate value @@ -218,7 +218,7 @@ ERROR: test_malformed_global (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 374, in test_malformed_global + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 374, in test_malformed_global self.check_bad_tree(tree, "malformed global ast") TypeError: instance exception may not have a separate value @@ -226,14 +226,14 @@ ERROR: test_print_chevron_comma (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_parser.py", line 303, in test_print_chevron_comma + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 303, in test_print_chevron_comma self.check_bad_tree(tree, "print >>fp,") TypeError: instance exception may not have a separate value ---------------------------------------------------------------------- -Ran 18 tests in 21.775s +Ran 18 tests in 16.099s FAILED (errors=18) ========================== closed ========================== -execution time: 39.7464900017 seconds +execution time: 30.3473911285 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt Thu Apr 28 16:43:22 2005 @@ -1,19 +1,19 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pep247.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep247.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:54:32 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:33:25 2005 +pypy-revision: 11549 ============================================================ faking faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pep247.py", line 48 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep247.py", line 48 in ? check_hash_module(md5) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pep247.py", line 29 in check_hash_module + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep247.py", line 29 in check_hash_module assert hasattr(obj1, 'digest_size'), "Objects must have digest_size attr" AssertionError: Objects must have digest_size attr ========================== closed ========================== -execution time: 5.19608592987 seconds +execution time: 4.53939318657 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt Thu Apr 28 16:43:22 2005 @@ -1,12 +1,12 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pep263.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep263.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:54:31 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:33:30 2005 +pypy-revision: 11549 ============================================================ faking faking ========================== closed ========================== -execution time: 0.839457035065 seconds +execution time: 0.77823805809 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pep277.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep277.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:54:25 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:33:31 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pep277.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep277.py", line 6 in ? raise test_support.TestSkipped, "test works only on NT+" TestSkipped: test works only on NT+ ========================== closed ========================== -execution time: 5.53592705727 seconds +execution time: 4.25580000877 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pickle.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickle.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:39:25 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:33:36 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,43 +16,43 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pickle.py", line 73 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickle.py", line 73 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pickle.py", line 68 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickle.py", line 68 in test_main PersPicklerTests - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/pickletester.py", line 776 in test_dict_chunking + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/pickletester.py", line 776 in test_dict_chunking s = self.dumps(x, proto) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pickle.py", line 15 in dumps + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickle.py", line 15 in dumps return pickle.dumps(arg, proto) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 1386 in dumps + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 1386 in dumps Pickler(file, protocol, bin).dump(obj) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 231 in dump + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 231 in dump self.save(obj) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 293 in save f(self, obj) # Call unbound method with explicit self - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 663 in save_dict + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 663 in save_dict self._batch_setitems(obj.iteritems()) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 677 in _batch_setitems - save(v) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 676 in _batch_setitems + save(k) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 293 in save f(self, obj) # Call unbound method with explicit self - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 441 in save_none - self.write(NONE) - File "/home/arigo/pypysrc/lib-python-2.3.4/StringIO.py", line 161 in write - if not isinstance(s, basestring): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 472 in save_int + self.write(INT + `obj` + '\n') + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/StringIO.py", line 165 in write + self.len = self.pos = self.pos + len(s) KeyboardInterrupt test_dict_chunking (__main__.PickleTests) ... ========================== closed ========================== -execution time: 900.225749016 seconds +execution time: 900.041561127 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pickletools.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickletools.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:27:38 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:48:36 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -399,16 +399,16 @@ from line #58 of pickletools.__test__.disassembler_test Exception raised: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner compileflags, 1) in globs File "", line 1, in ? - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 1386, in dumps + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 1386, in dumps Pickler(file, protocol, bin).dump(obj) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 231, in dump + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 231, in dump self.save(obj) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 313, in save + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 313, in save rv = reduce(self.proto) - File "/home/arigo/pypysrc/lib-python-2.3.4/copy_reg.py", line 69, in _reduce_ex + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/copy_reg.py", line 69, in _reduce_ex raise TypeError, "can't pickle %s objects" % base.__name__ TypeError: can't pickle method objects Trying: x = [pickle.PicklingError()] * 2 @@ -598,13 +598,13 @@ Trying: dis(pickle.dumps(L, 1)) Expecting: 0: ] EMPTY_LIST - 1: q BINPUT Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pickletools.py", line 3 in ? + 1: q Traceback (application-level): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickletools.py", line 3 in ? test_support.run_doctest(pickletools) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest raise TestFailed("%d of %d doctests failed" % (f, t)) TestFailed: 5 of 94 doctests failed - 0 +BINPUT 0 3: ( MARK 4: h BINGET 0 6: t TUPLE (MARK at 3) @@ -709,5 +709,5 @@ 89 passed and 5 failed. ***Test Failed*** 5 failures. ========================== closed ========================== -execution time: 705.901865959 seconds +execution time: 487.773357153 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pkg.out ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pkg.out (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pkg.out Thu Apr 28 16:43:22 2005 @@ -1,18 +1,18 @@ test_pkg running test t1 -mkdir /tmp/tmpDnJyrz/t1 -write /tmp/tmpDnJyrz/t1/__init__.py -sys.path = ['/tmp/tmpDnJyrz', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] -rmdir /tmp/tmpDnJyrz/t1 -rmdir /tmp/tmpDnJyrz +mkdir /tmp/tmpyjFK1y/t1 +write /tmp/tmpyjFK1y/t1/__init__.py +sys.path = ['/tmp/tmpyjFK1y', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] +rmdir /tmp/tmpyjFK1y/t1 +rmdir /tmp/tmpyjFK1y running test t2 -mkdir /tmp/tmpfJHwsP/t2 -write /tmp/tmpfJHwsP/t2/__init__.py -mkdir /tmp/tmpfJHwsP/t2/sub -write /tmp/tmpfJHwsP/t2/sub/__init__.py -mkdir /tmp/tmpfJHwsP/t2/sub/subsub -write /tmp/tmpfJHwsP/t2/sub/subsub/__init__.py -sys.path = ['/tmp/tmpfJHwsP', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +mkdir /tmp/tmpO81fq5/t2 +write /tmp/tmpO81fq5/t2/__init__.py +mkdir /tmp/tmpO81fq5/t2/sub +write /tmp/tmpO81fq5/t2/sub/__init__.py +mkdir /tmp/tmpO81fq5/t2/sub/subsub +write /tmp/tmpO81fq5/t2/sub/subsub/__init__.py +sys.path = ['/tmp/tmpO81fq5', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] t2 loading doc for t2 t2.sub.subsub loading @@ -23,56 +23,56 @@ ['spam', 'sub', 'subsub', 't2'] t2 t2.sub t2.sub.subsub ['spam', 'sub', 'subsub', 't2'] -rmdir /tmp/tmpfJHwsP/t2/sub/subsub -rmdir /tmp/tmpfJHwsP/t2/sub -rmdir /tmp/tmpfJHwsP/t2 -rmdir /tmp/tmpfJHwsP +rmdir /tmp/tmpO81fq5/t2/sub/subsub +rmdir /tmp/tmpO81fq5/t2/sub +rmdir /tmp/tmpO81fq5/t2 +rmdir /tmp/tmpO81fq5 running test t3 -mkdir /tmp/tmpmQuS2a/t3 -write /tmp/tmpmQuS2a/t3/__init__.py -mkdir /tmp/tmpmQuS2a/t3/sub -write /tmp/tmpmQuS2a/t3/sub/__init__.py -mkdir /tmp/tmpmQuS2a/t3/sub/subsub -write /tmp/tmpmQuS2a/t3/sub/subsub/__init__.py -sys.path = ['/tmp/tmpmQuS2a', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +mkdir /tmp/tmpZAAbFD/t3 +write /tmp/tmpZAAbFD/t3/__init__.py +mkdir /tmp/tmpZAAbFD/t3/sub +write /tmp/tmpZAAbFD/t3/sub/__init__.py +mkdir /tmp/tmpZAAbFD/t3/sub/subsub +write /tmp/tmpZAAbFD/t3/sub/subsub/__init__.py +sys.path = ['/tmp/tmpZAAbFD', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] t3 loading t3.sub.subsub loading t3 t3.sub t3.sub.subsub t3 loading Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkg.py", line 66, in runtest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkg.py", line 66, in runtest execfile(fname, globals(), {}) - File "/tmp/tmpfIwI2Q", line 5, in ? + File "/tmp/tmpZLWDPt", line 5, in ? reload(t3.sub) AttributeError: 'module' object has no attribute 'sub' -rmdir /tmp/tmpmQuS2a/t3/sub/subsub -rmdir /tmp/tmpmQuS2a/t3/sub -rmdir /tmp/tmpmQuS2a/t3 -rmdir /tmp/tmpmQuS2a +rmdir /tmp/tmpZAAbFD/t3/sub/subsub +rmdir /tmp/tmpZAAbFD/t3/sub +rmdir /tmp/tmpZAAbFD/t3 +rmdir /tmp/tmpZAAbFD running test t4 -write /tmp/tmp3Xr2kH/t4.py -mkdir /tmp/tmp3Xr2kH/t4 -write /tmp/tmp3Xr2kH/t4/__init__.py -write /tmp/tmp3Xr2kH/t4/sub.py -mkdir /tmp/tmp3Xr2kH/t4/sub -write /tmp/tmp3Xr2kH/t4/sub/__init__.py -write /tmp/tmp3Xr2kH/t4/sub/subsub.py -mkdir /tmp/tmp3Xr2kH/t4/sub/subsub -write /tmp/tmp3Xr2kH/t4/sub/subsub/__init__.py -sys.path = ['/tmp/tmp3Xr2kH', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +write /tmp/tmpkf50O2/t4.py +mkdir /tmp/tmpkf50O2/t4 +write /tmp/tmpkf50O2/t4/__init__.py +write /tmp/tmpkf50O2/t4/sub.py +mkdir /tmp/tmpkf50O2/t4/sub +write /tmp/tmpkf50O2/t4/sub/__init__.py +write /tmp/tmpkf50O2/t4/sub/subsub.py +mkdir /tmp/tmpkf50O2/t4/sub/subsub +write /tmp/tmpkf50O2/t4/sub/subsub/__init__.py +sys.path = ['/tmp/tmpkf50O2', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] t4 loading t4.sub.subsub loading t4.sub.subsub.spam = 1 -rmdir /tmp/tmp3Xr2kH/t4/sub/subsub -rmdir /tmp/tmp3Xr2kH/t4/sub -rmdir /tmp/tmp3Xr2kH/t4 -rmdir /tmp/tmp3Xr2kH +rmdir /tmp/tmpkf50O2/t4/sub/subsub +rmdir /tmp/tmpkf50O2/t4/sub +rmdir /tmp/tmpkf50O2/t4 +rmdir /tmp/tmpkf50O2 running test t5 -mkdir /tmp/tmpYd-t_I/t5 -write /tmp/tmpYd-t_I/t5/__init__.py -write /tmp/tmpYd-t_I/t5/string.py -write /tmp/tmpYd-t_I/t5/foo.py -sys.path = ['/tmp/tmpYd-t_I', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +mkdir /tmp/tmpB4z795/t5 +write /tmp/tmpB4z795/t5/__init__.py +write /tmp/tmpB4z795/t5/string.py +write /tmp/tmpB4z795/t5/foo.py +sys.path = ['/tmp/tmpB4z795', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] t5.foo loading t5.string loading 1 @@ -80,42 +80,42 @@ ['__file__', '__name__', '__path__', 'foo', 'string', 't5'] ['__file__', '__name__', 'string'] ['__file__', '__name__', 'spam'] -rmdir /tmp/tmpYd-t_I/t5 -rmdir /tmp/tmpYd-t_I +rmdir /tmp/tmpB4z795/t5 +rmdir /tmp/tmpB4z795 running test t6 -mkdir /tmp/tmp3AU8j0/t6 -write /tmp/tmp3AU8j0/t6/__init__.py -write /tmp/tmp3AU8j0/t6/spam.py -write /tmp/tmp3AU8j0/t6/ham.py -write /tmp/tmp3AU8j0/t6/eggs.py -sys.path = ['/tmp/tmp3AU8j0', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +mkdir /tmp/tmpKIkd4b/t6 +write /tmp/tmpKIkd4b/t6/__init__.py +write /tmp/tmpKIkd4b/t6/spam.py +write /tmp/tmpKIkd4b/t6/ham.py +write /tmp/tmpKIkd4b/t6/eggs.py +sys.path = ['/tmp/tmpKIkd4b', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] ['__all__', '__file__', '__name__', '__path__'] Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkg.py", line 66, in runtest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkg.py", line 66, in runtest execfile(fname, globals(), {}) - File "/tmp/tmpaiL3Dr", line 4, in ? + File "/tmp/tmpL8EK10", line 4, in ? from t6 import * AttributeError: 'module' object has no attribute 'spam' -rmdir /tmp/tmp3AU8j0/t6 -rmdir /tmp/tmp3AU8j0 +rmdir /tmp/tmpKIkd4b/t6 +rmdir /tmp/tmpKIkd4b running test t7 -write /tmp/tmpGteEWu/t7.py -mkdir /tmp/tmpGteEWu/t7 -write /tmp/tmpGteEWu/t7/__init__.py -write /tmp/tmpGteEWu/t7/sub.py -mkdir /tmp/tmpGteEWu/t7/sub -write /tmp/tmpGteEWu/t7/sub/__init__.py -write /tmp/tmpGteEWu/t7/sub/subsub.py -mkdir /tmp/tmpGteEWu/t7/sub/subsub -write /tmp/tmpGteEWu/t7/sub/subsub/__init__.py -sys.path = ['/tmp/tmpGteEWu', '', '/home/arigo/pypysrc/pypy/lib', '/home/arigo/pypysrc/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages'] +write /tmp/tmpZfUKRE/t7.py +mkdir /tmp/tmpZfUKRE/t7 +write /tmp/tmpZfUKRE/t7/__init__.py +write /tmp/tmpZfUKRE/t7/sub.py +mkdir /tmp/tmpZfUKRE/t7/sub +write /tmp/tmpZfUKRE/t7/sub/__init__.py +write /tmp/tmpZfUKRE/t7/sub/subsub.py +mkdir /tmp/tmpZfUKRE/t7/sub/subsub +write /tmp/tmpZfUKRE/t7/sub/subsub/__init__.py +sys.path = ['/tmp/tmpZfUKRE', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] t7 loading ['__file__', '__name__', '__path__'] ['__file__', '__name__', '__path__'] t7.sub.subsub loading ['__file__', '__name__', '__path__', 'spam'] t7.sub.subsub.spam = 1 -rmdir /tmp/tmpGteEWu/t7/sub/subsub -rmdir /tmp/tmpGteEWu/t7/sub -rmdir /tmp/tmpGteEWu/t7 -rmdir /tmp/tmpGteEWu +rmdir /tmp/tmpZfUKRE/t7/sub/subsub +rmdir /tmp/tmpZfUKRE/t7/sub +rmdir /tmp/tmpZfUKRE/t7 +rmdir /tmp/tmpZfUKRE Modified: pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt Thu Apr 28 16:43:22 2005 @@ -1,17 +1,18 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pkg.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkg.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:27:08 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:56:45 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_pkg.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_pkg.out ============================================================ faking faking faking faking faking +FAILED: test output differs ========================== closed ========================== -execution time: 29.933478117 seconds +execution time: 21.8735609055 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:26:54 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:57:07 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,18 +11,18 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py", line 83 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py", line 83 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py", line 79 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py", line 79 in test_main run_unittest(TestImport) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics self.assert_(not sys.modules.has_key(self.module_name) and - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError @@ -32,16 +32,16 @@ FAIL: test_package_import__semantics (__main__.TestImport) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics self.assert_(not sys.modules.has_key(self.module_name) and - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError ---------------------------------------------------------------------- -Ran 1 test in 3.945s +Ran 1 test in 2.738s FAILED (failures=1) ========================== closed ========================== -execution time: 13.7688610554 seconds +execution time: 9.64418315887 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_plistlib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_plistlib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:26:48 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:57:17 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_plistlib.py", line 4 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_plistlib.py", line 4 in ? import plistlib ImportError: plistlib ========================== closed ========================== -execution time: 5.56025099754 seconds +execution time: 4.00961995125 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_poll.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_poll.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_poll.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_poll.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_poll.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:26:41 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:57:22 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_poll.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_poll.out ============================================================ faking faking @@ -14,11 +14,12 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_poll.py", line 171 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_poll.py", line 171 in ? test_poll1() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_poll.py", line 37 in test_poll1 + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_poll.py", line 37 in test_poll1 p.register(rd, select.POLLIN) AttributeError: 'poll' object has no attribute 'register' +FAILED: test output differs ========================== closed ========================== -execution time: 6.85833787918 seconds +execution time: 4.90954208374 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_popen.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_popen.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_popen.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_popen.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_popen.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:26:31 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:57:27 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_popen.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_popen.out ============================================================ faking faking @@ -21,6 +21,7 @@ faking faking faking +OK ========================== closed ========================== -execution time: 9.3032078743 seconds +execution time: 7.19031000137 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt Thu Apr 28 16:43:22 2005 @@ -1,17 +1,18 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_popen2.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_popen2.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:25:28 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:57:35 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_popen2.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_popen2.out ============================================================ faking faking faking faking faking +OK ========================== closed ========================== -execution time: 63.0229299068 seconds +execution time: 43.8546290398 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_posix.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_posix.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_posix.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_posix.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_posix.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:25:01 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:58:18 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,9 +12,9 @@ faking faking faking -/home/arigo/pypysrc/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program +/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program result = apply(fn, self.unwrappedargs, self.unwrappedkwds) -/home/arigo/pypysrc/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program +/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program result = apply(fn, self.unwrappedargs, self.unwrappedkwds) testNoArgFunctions (__main__.PosixTester) ... ok test_access (__main__.PosixTester) ... ok @@ -36,9 +36,9 @@ test_utime (__main__.PosixTester) ... ok ---------------------------------------------------------------------- -Ran 18 tests in 6.299s +Ran 18 tests in 5.236s OK ========================== closed ========================== -execution time: 27.0125200748 seconds +execution time: 19.8876509666 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_posixpath.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_posixpath.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:24:29 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:58:38 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -38,9 +38,9 @@ test_time (__main__.PosixPathTest) ... ok ---------------------------------------------------------------------- -Ran 22 tests in 23.981s +Ran 22 tests in 16.715s OK ========================== closed ========================== -execution time: 32.4078001976 seconds +execution time: 22.6635370255 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pow.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pow.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pow.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pow.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pow.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:13:57 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 11:59:01 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,9 +18,9 @@ test_powlong (__main__.PowTest) ... ok ---------------------------------------------------------------------- -Ran 6 tests in 623.767s +Ran 6 tests in 436.506s OK ========================== closed ========================== -execution time: 631.730129004 seconds +execution time: 442.172743797 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pprint.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pprint.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:11:40 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:06:23 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,9 +18,9 @@ test_unreadable (__main__.QueryTestCase) ... ok ---------------------------------------------------------------------- -Ran 6 tests in 129.195s +Ran 6 tests in 89.198s OK ========================== closed ========================== -execution time: 137.579236984 seconds +execution time: 95.3246901035 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_profile.out ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_profile.out (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_profile.out Thu Apr 28 16:43:22 2005 @@ -1,5 +1,5 @@ test_profile - 53 function calls in 1.000 CPU seconds + 53 function calls in 0.999 CPU seconds Ordered by: standard name Modified: pypy/dist/lib-python-2.3.4/test/result/test_profile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_profile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_profile.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_profile.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_profile.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:10:44 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:07:58 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_profile.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_profile.out ============================================================ faking faking @@ -14,6 +14,7 @@ faking faking faking +FAILED: test output differs ========================== closed ========================== -execution time: 55.2037661076 seconds +execution time: 37.9071319103 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_profilehooks.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_profilehooks.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:10:14 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:08:37 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -29,9 +29,9 @@ test_simple (__main__.ProfileSimulatorTestCase) ... ok ---------------------------------------------------------------------- -Ran 17 tests in 19.202s +Ran 17 tests in 13.247s OK ========================== closed ========================== -execution time: 30.7184958458 seconds +execution time: 21.3004338741 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pty.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pty.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pty.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pty.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pty.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:10:09 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:08:58 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_pty.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_pty.out ============================================================ faking faking @@ -13,11 +13,12 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pty.py", line 1 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pty.py", line 1 in ? import pty, os, sys, signal - File "/home/arigo/pypysrc/lib-python-2.3.4/pty.py", line 19 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pty.py", line 19 in ? import termios ImportError: termios +FAILED: test output differs ========================== closed ========================== -execution time: 4.52974700928 seconds +execution time: 3.28979802132 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pwd.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pwd.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:10:02 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:09:02 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pwd.py", line 4 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pwd.py", line 4 in ? import pwd ImportError: pwd ========================== closed ========================== -execution time: 5.76415896416 seconds +execution time: 4.29201197624 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:40:01 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:09:07 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,47 +16,33 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 162 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py", line 162 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 158 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py", line 158 in test_main run_unittest(PyclbrTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 140, in test_others - cm('random', ignore=('Random',)) # from _random import Random as CoreGenerator - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 80, in checkModule - self.assertHasattr(module, name, ignore) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 37, in assertHasattr - 'expected hasattr(%r, %r)' % (obj, attr)) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError: expected hasattr(, '_verify') - -test_easy (__main__.PyclbrTest) ... ok -test_others (__main__.PyclbrTest) ... ??? _verify -FAIL - -====================================================================== -FAIL: test_others (__main__.PyclbrTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 140, in test_others - cm('random', ignore=('Random',)) # from _random import Random as CoreGenerator - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 80, in checkModule - self.assertHasattr(module, name, ignore) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyclbr.py", line 37, in assertHasattr - 'expected hasattr(%r, %r)' % (obj, attr)) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError: expected hasattr(, '_verify') - ----------------------------------------------------------------------- -Ran 2 tests in 1434.815s - -FAILED (failures=1) -========================== closed ========================== -execution time: 1800.88183284 seconds + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + result = runner.run(suite) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run + test(result) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ + test(result) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ + testMethod() + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py", line 132 in test_easy + self.checkModule('doctest') + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py", line 64 in checkModule + dict = pyclbr.readmodule_ex(moduleName) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pyclbr.py", line 106 in readmodule_ex + return _readmodule(module, path) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pyclbr.py", line 158 in _readmodule + for tokentype, token, start, end, line in g: + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tokenize.py", line 241 in generate_tokens + token, initial = line[start:end], line[start] +KeyboardInterrupt +test_easy (__main__.PyclbrTest) ... ========================== closed ========================== +execution time: 899.995666981 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt Thu Apr 28 16:43:22 2005 @@ -1,18 +1,19 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_pyexpat.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyexpat.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:40:00 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:24:08 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_pyexpat.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_pyexpat.out ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_pyexpat.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyexpat.py", line 6 in ? import pyexpat ImportError: pyexpat +FAILED: test output differs ========================== closed ========================== -execution time: 0.899868965149 seconds +execution time: 0.891980886459 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_queue.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_queue.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_queue.txt Thu Apr 28 16:43:22 2005 @@ -1,19 +1,19 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_queue.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_queue.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:39:58 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:24:09 2005 +pypy-revision: 11549 ============================================================ faking faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_queue.py", line 5 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_queue.py", line 5 in ? import threading - File "/home/arigo/pypysrc/lib-python-2.3.4/threading.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/threading.py", line 6 in ? import thread ImportError: thread ========================== closed ========================== -execution time: 1.1630051136 seconds +execution time: 0.94482088089 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_quopri.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_quopri.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:39:25 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:24:10 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -20,9 +20,9 @@ test_idempotent_string (__main__.QuopriTestCase) ... ok ---------------------------------------------------------------------- -Ran 8 tests in 24.326s +Ran 8 tests in 16.695s OK ========================== closed ========================== -execution time: 32.6021831036 seconds +execution time: 22.6545300484 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_random.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_random.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_random.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_random.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_random.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:39:06 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:24:33 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -15,11 +15,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_random.py", line 124 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_random.py", line 124 in ? class WichmannHill_TestBasicOps(TestBasicOps): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_random.py", line 125 in WichmannHill_TestBasicOps + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_random.py", line 125 in WichmannHill_TestBasicOps gen = random.WichmannHill() AttributeError: 'module' object has no attribute 'WichmannHill' ========================== closed ========================== -execution time: 18.3785350323 seconds +execution time: 12.9748449326 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_re.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_re.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_re.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_re.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_re.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:24:06 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:24:47 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,38 +16,39 @@ faking faking faking +faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_re.py", line 629 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_re.py", line 629 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_re.py", line 625 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_re.py", line 625 in test_main run_unittest(ReTests) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_re.py", line 195 in test_re_groupref - self.assertEqual(re.match(r'^(?:(a)|c)(\1)$', 'aa').groups(), - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 132 in match + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_re.py", line 378 in test_sre_character_literals + self.assertNotEqual(re.match(r"\x%02x0" % i, chr(i)+"0"), None) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 132 in match return _compile(pattern, flags).match(string) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 228 in _compile p = sre_compile.compile(pattern, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 471 in compile - code = _code(p, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 455 in _code - _compile(code, p.data, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 88 in _compile - _compile(code, av[1], flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 27 in _compile - for op, av in pattern: + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_compile.py", line 467 in compile + p = sre_parse.parse(p, flags) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 617 in parse + source = Tokenizer(str) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 186 in __init__ + self.__next() + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 198 in __next + self.index = self.index + len(char) KeyboardInterrupt test_anyall (__main__.ReTests) ... ok test_basic_re_sub (__main__.ReTests) ... ERROR @@ -75,14 +76,24 @@ test_getattr (__main__.ReTests) ... ERROR test_getlower (__main__.ReTests) ... ok test_groupdict (__main__.ReTests) ... ok -test_ignore_case (__main__.ReTests) ... ERROR -test_non_consuming (__main__.ReTests) ... ERROR +test_ignore_case (__main__.ReTests) ... ok +test_non_consuming (__main__.ReTests) ... ok test_not_literal (__main__.ReTests) ... ok test_pickling (__main__.ReTests) ... ERROR test_qualified_re_split (__main__.ReTests) ... ok test_qualified_re_sub (__main__.ReTests) ... ok test_re_escape (__main__.ReTests) ... ok test_re_findall (__main__.ReTests) ... ok -test_re_groupref (__main__.ReTests) ... ========================== closed ========================== -execution time: 900.177868843 seconds +test_re_groupref (__main__.ReTests) ... ok +test_re_groupref_exists (__main__.ReTests) ... ok +test_re_match (__main__.ReTests) ... ok +test_re_split (__main__.ReTests) ... ok +test_re_subn (__main__.ReTests) ... ok +test_repeat_minmax (__main__.ReTests) ... ok +test_scanner (__main__.ReTests) ... ERROR +test_search_coverage (__main__.ReTests) ... ok +test_search_star_plus (__main__.ReTests) ... ok +test_special_escapes (__main__.ReTests) ... ok +test_sre_character_literals (__main__.ReTests) ... ========================== closed ========================== +execution time: 899.978173971 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_regex.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_regex.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_regex.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_regex.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_regex.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:23:47 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:39:47 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_regex.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_regex.out ============================================================ faking faking @@ -15,9 +15,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_regex.py", line 5 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_regex.py", line 5 in ? import regex ImportError: regex +FAILED: test output differs ========================== closed ========================== -execution time: 18.6518280506 seconds +execution time: 15.0013129711 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_repr.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_repr.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_repr.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:22:45 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:40:03 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,13 +12,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 289 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 289 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 283 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 283 in test_main run_unittest(ReprTests) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred in __main__.ReprTests test_buffer (__main__.ReprTests) ... FAIL @@ -38,9 +38,9 @@ FAIL: test_buffer (__main__.ReprTests) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 150, in test_buffer + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 150, in test_buffer self.failUnless(repr(x).startswith('') - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ -AssertionError: '' != '' +AssertionError: '' != '' ====================================================================== FAIL: test_descriptors (__main__.ReprTests) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 159, in test_descriptors + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 159, in test_descriptors eq(repr(dict.items), "") - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ -AssertionError: '' != "" +AssertionError: '' != "" ====================================================================== FAIL: test_lambda (__main__.ReprTests) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 110, in test_lambda + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 110, in test_lambda self.failUnless(repr(lambda x: x).startswith( - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError @@ -78,16 +78,16 @@ FAIL: test_xrange (__main__.ReprTests) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_repr.py", line 125, in test_xrange + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 125, in test_xrange eq(repr(xrange(1)), 'xrange(1)') - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ -AssertionError: '' != 'xrange(1)' +AssertionError: '' != 'xrange(1)' ---------------------------------------------------------------------- -Ran 12 tests in 45.660s +Ran 12 tests in 36.049s FAILED (failures=5) ========================== closed ========================== -execution time: 61.323084116 seconds +execution time: 44.7513849735 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_resource.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_resource.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_resource.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_resource.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_resource.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:22:34 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:40:48 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_resource.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_resource.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_resource.py", line 2 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_resource.py", line 2 in ? import resource ImportError: resource +FAILED: test output differs ========================== closed ========================== -execution time: 9.81122207642 seconds +execution time: 3.53213500977 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_rfc822.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rfc822.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:14:33 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:40:52 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -24,9 +24,9 @@ test_twisted (__main__.MessageTestCase) ... ok ---------------------------------------------------------------------- -Ran 12 tests in 462.430s +Ran 12 tests in 150.885s OK ========================== closed ========================== -execution time: 481.675994158 seconds +execution time: 157.554761171 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt Thu Apr 28 16:43:22 2005 @@ -1,18 +1,19 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_rgbimg.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rgbimg.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:14:30 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:43:30 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_rgbimg.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_rgbimg.out ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_rgbimg.py", line 3 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rgbimg.py", line 3 in ? import rgbimg, os, uu ImportError: rgbimg +FAILED: test output differs ========================== closed ========================== -execution time: 2.02930212021 seconds +execution time: 0.925149917603 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:07:43 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:43:31 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -26,201 +26,201 @@ ERROR: test_recursion2 (__main__.MiscTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 273, in test_recursion2 + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 273, in test_recursion2 self.assert_(Weird() == Weird()) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/home/arigo/pypysrc/lib-python-Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 358 in ? + File "/u/pedronis/PyTraceback (application-level): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 358 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 355 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 355 in test_main test_support.run_unittest(VectorTest, NumberTest, MiscTest, DictTest, ListTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred; run in verbose mode for details -2.3.4/test/test_richcmp.py", line 267, in __ne__ +Py/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + return self != other + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ return self != other - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ return self == other RuntimeError: maximum recursion depth exceeded @@ -228,18 +228,18 @@ ERROR: test_badentry (__main__.ListTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 339, in test_badentry + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 339, in test_badentry self.assertRaises(Exc, op, x, y) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises callableObj(*args, **kwargs) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_richcmp.py", line 91, in + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 91, in "eq": (lambda a,b: a==b, operator.eq, operator.__eq__), TypeError: unsupported operand types for issubtype (classobj, type) ---------------------------------------------------------------------- -Ran 11 tests in 374.388s +Ran 11 tests in 130.603s FAILED (errors=2) ========================== closed ========================== -execution time: 407.159274817 seconds +execution time: 142.851455927 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_robotparser.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_robotparser.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:05:28 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:45:54 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -49,9 +49,9 @@ RobotTest(7, good, /foo.html) ... ok ---------------------------------------------------------------------- -Ran 34 tests in 49.482s +Ran 34 tests in 15.824s OK ========================== closed ========================== -execution time: 134.892240047 seconds +execution time: 43.0967400074 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_rotor.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rotor.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:04:53 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:46:38 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_rotor.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_rotor.out ============================================================ faking faking @@ -15,9 +15,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_rotor.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rotor.py", line 7 in ? import rotor ImportError: rotor +FAILED: test output differs ========================== closed ========================== -execution time: 34.4399428368 seconds +execution time: 12.6251718998 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sax.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sax.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sax.txt Thu Apr 28 16:43:22 2005 @@ -1,19 +1,56 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sax.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sax.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:04:39 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 12:46:51 2005 +pypy-revision: 11549 ============================================================ faking faking faking faking faking +faking +faking +faking +faking +faking +faking +==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sax.py", line 10 in ? - raise ImportError("no XML parsers available") -ImportError: no XML parsers available + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sax.py", line 7 in ? + make_parser() + File "/usr/lib/python2.3/site-packages/_xmlplus/sax/sax2exts.py", line 37 in make_parser + return XMLParserFactory.make_parser(parser_list) + File "/usr/lib/python2.3/site-packages/_xmlplus/sax/saxexts.py", line 64 in make_parser + return self._create_parser(parser_name) + File "/usr/lib/python2.3/site-packages/_xmlplus/sax/saxexts.py", line 42 in _create_parser + drv_module = __import__(parser_name,{},{},['create_parser']) + File "/usr/lib/python2.3/site-packages/_xmlplus/sax/drivers2/drv_xmlproc.py", line 9 in ? +from xml.parsers.xmlproc import xmlproc, xmlval, xmlapp + File "/usr/lib/python2.3/site-packages/_xmlplus/parsers/xmlproc/xmlproc.py", line 14 in ? +from dtdparser import * + File "/usr/lib/python2.3/site-packages/_xmlplus/parsers/xmlproc/dtdparser.py", line 12 in ? +from xmlutils import * + File "/usr/lib/python2.3/site-packages/_xmlplus/parsers/xmlproc/xmlutils.py", line 879 in ? + reg_names = characters.re_Names() + File "/usr/lib/python2.3/site-packages/_xmlplus/utils/characters.py", line 67 in re_Names + _re_Names = re.compile(Names) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 179 in compile + return _compile(pattern, flags) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 228 in _compile + p = sre_compile.compile(pattern, flags) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_compile.py", line 467 in compile + p = sre_parse.parse(p, flags) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 624 in parse + p = _parse_sub(source, pattern, 0) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 404 in _parse + this = source.get() + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 208 in get + self.__next() +KeyboardInterrupt ========================== closed ========================== -execution time: 13.2440299988 seconds +execution time: 900.010243177 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_scope.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_scope.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_scope.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_scope.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_scope.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:03:48 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:01:51 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_scope.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_scope.out ============================================================ faking faking @@ -22,11 +22,12 @@ :6: SyntaxWarning: import * only allowed at module level :11: SyntaxWarning: import * only allowed at module level Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_scope.py", line 410 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_scope.py", line 410 in ? verify(Foo.count == 0) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 180 in verify + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180 in verify raise TestFailed(reason) TestFailed: test failed +FAILED: test output differs ========================== closed ========================== -execution time: 50.6068589687 seconds +execution time: 18.7362339497 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_scriptpackages.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_scriptpackages.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:03:31 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:02:10 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_scriptpackages.py", line 8 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_scriptpackages.py", line 8 in ? import aetools ImportError: aetools ========================== closed ========================== -execution time: 16.2804300785 seconds +execution time: 5.81923818588 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_select.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_select.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_select.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_select.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_select.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:03:14 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:02:17 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,28 +11,31 @@ faking faking Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args frame.setfastscope(scope_w) - File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > ========================== closed ========================== -execution time: 16.6227560043 seconds +execution time: 4.45952796936 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sets.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sets.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sets.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sets.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sets.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:48:13 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:02:22 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -229,56 +229,7 @@ test_copy (__main__.TestCopyingEmpty) ... ok test_deep_copy (__main__.TestCopyingEmpty) ... ok test_copy (__main__.TestCopyingSingleton) ... ok -test_deep_copy (__main__.TestCopyingSingleto==========================timeout========================== -Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sets.py", line 814 in ? - test_main(verbose=True) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sets.py", line 811 in test_main - test_support.run_doctest(test_sets, verbose) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 276 in run_doctest - import doctest - File "/home/arigo/pypysrc/lib-python-2.3.4/doctest.py", line 303 in ? -from inspect import isclass as _isclass - File "/home/arigo/pypysrc/lib-python-2.3.4/inspect.py", line 31 in ? -import sys, os, types, string, re, dis, imp, tokenize, linecache - File "/home/arigo/pypysrc/lib-python-2.3.4/tokenize.py", line 100 in ? -tokenprog, pseudoprog, single3prog, double3prog = map( - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 179 in compile - return _compile(pattern, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile - p = sre_compile.compile(pattern, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 467 in compile - p = sre_parse.parse(p, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 624 in parse - p = _parse_sub(source, pattern, 0) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse - p = _parse_sub(source, state) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse - p = _parse_sub(source, state) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse - p = _parse_sub(source, state) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse - p = _parse_sub(source, state) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse - p = _parse_sub(source, state) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 376 in _parse - this = source.get() - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 208 in get - self.__next() -KeyboardInterrupt -n) ... ok +test_deep_copy (__main__.TestCopyingSingleton) ... ok test_copy (__main__.TestCopyingTriple) ... ok test_deep_copy (__main__.TestCopyingTriple) ... ok test_copy (__main__.TestCopyingTuple) ... ok @@ -291,9 +242,10 @@ test_summations (__main__.TestIdentities) ... ok ---------------------------------------------------------------------- -Ran 225 tests in 592.662s +Ran 225 tests in 142.568s OK +doctest (test.test_sets) ... 14 tests with zero failures ========================== closed ========================== -execution time: 900.905787945 seconds -exit status: 1 +execution time: 582.504189968 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sgmllib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:33:12 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:12:04 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,39 +14,30 @@ faking faking faking -==========================timeout========================== -Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 333 in ? - test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 329 in test_main - test_support.run_unittest(SGMLParserTestCase) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 196 in test_attr_values - [("starttag", "a", [("b", "xxx\n\txxx"), - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 84 in check_events - events = self.get_events(source) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sgmllib.py", line 75 in get_events - parser.feed(s) - File "/home/arigo/pypysrc/lib-python-2.3.4/sgmllib.py", line 95 in feed - self.goahead(0) - File "/home/arigo/pypysrc/lib-python-2.3.4/sgmllib.py", line 129 in goahead - k = self.parse_starttag(i) - File "/home/arigo/pypysrc/lib-python-2.3.4/sgmllib.py", line 230 in parse_starttag - self.__starttag_text = None -KeyboardInterrupt test_attr_funky_names (__main__.SGMLParserTestCase) ... ok test_attr_syntax (__main__.SGMLParserTestCase) ... ok -test_attr_values (__main__.SGMLParserTestCase) ... ========================== closed ========================== -execution time: 900.520838976 seconds -exit status: 1 +test_attr_values (__main__.SGMLParserTestCase) ... ok +test_bad_nesting (__main__.SGMLParserTestCase) ... ok +test_bare_ampersands (__main__.SGMLParserTestCase) ... ok +test_bare_pointy_brackets (__main__.SGMLParserTestCase) ... ok +test_cdata_content (__main__.SGMLParserTestCase) ... ok +test_declaration_junk_chars (__main__.SGMLParserTestCase) ... ok +test_doctype_decl_external (__main__.SGMLParserTestCase) ... ok +test_doctype_decl_internal (__main__.SGMLParserTestCase) ... ok +test_enumerated_attr_type (__main__.SGMLParserTestCase) ... ok +test_get_starttag_text (__main__.SGMLParserTestCase) ... ok +test_illegal_declarations (__main__.SGMLParserTestCase) ... ok +test_processing_instruction_only (__main__.SGMLParserTestCase) ... ok +Be sure quotes in unquoted attributes are made part of the value ... ok +Make sure attribute names with underscores are accepted ... ok +Make sure tag names with underscores are accepted ... ok +test_weird_starttags (__main__.SGMLParserTestCase) ... ok +Handling of XHTML-style empty start tags ... ok + +---------------------------------------------------------------------- +Ran 19 tests in 259.441s + +OK +========================== closed ========================== +execution time: 369.886216879 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sha.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sha.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sha.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/pypy/lib/test2/test_sha.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/pypy/lib/test2/test_sha.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:31:46 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:18:14 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,9 +14,9 @@ test_case_2 (__main__.SHATestCase) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 51.765s +Ran 2 tests in 9.152s OK ========================== closed ========================== -execution time: 85.2664539814 seconds +execution time: 15.4205079079 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_shelve.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_shelve.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:16:45 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:18:30 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -15,41 +15,28 @@ faking faking faking -==========================timeout========================== -Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_shelve.py", line 135 in ? - test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_shelve.py", line 131 in test_main - TestCase - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "test_userdict.py", line 62 in test_read - self.assertEqual(cmp(p,d), -1) - File "/home/arigo/pypysrc/lib-python-2.3.4/UserDict.py", line 161 in __cmp__ - other = dict(other.iteritems()) - File "/home/arigo/pypysrc/lib-python-2.3.4/UserDict.py", line 99 in iteritems - yield (k, self[k]) - File "/home/arigo/pypysrc/lib-python-2.3.4/shelve.py", line 118 in __getitem__ - f = StringIO(self.dict[key]) -KeyboardInterrupt -test_read (__main__.TestAsciiFileShelve) ... FAIL +test_read (__main__.TestAsciiFileShelve) ... ok test_write (__main__.TestAsciiFileShelve) ... ok -test_read (__main__.TestBinaryFileShelve) ... FAIL +test_read (__main__.TestBinaryFileShelve) ... ok test_write (__main__.TestBinaryFileShelve) ... ok -test_read (__main__.TestProto2FileShelve) ... FAIL +test_read (__main__.TestProto2FileShelve) ... ok test_write (__main__.TestProto2FileShelve) ... ok -test_read (__main__.TestAsciiMemShelve) ... FAIL +test_read (__main__.TestAsciiMemShelve) ... ok test_write (__main__.TestAsciiMemShelve) ... ok -test_read (__main__.TestBinaryMemShelve) ... ========================== closed ========================== -execution time: 900.696385145 seconds -exit status: 1 +test_read (__main__.TestBinaryMemShelve) ... ok +test_write (__main__.TestBinaryMemShelve) ... ok +test_read (__main__.TestProto2MemShelve) ... ok +test_write (__main__.TestProto2MemShelve) ... ok +test_ascii_file_shelf (__main__.TestCase) ... ok +test_binary_file_shelf (__main__.TestCase) ... ok +test_in_memory_shelf (__main__.TestCase) ... ok +test_mutable_entry (__main__.TestCase) ... ok +test_proto2_file_shelf (__main__.TestCase) ... ok + +---------------------------------------------------------------------- +Ran 17 tests in 331.441s + +OK +========================== closed ========================== +execution time: 362.125012159 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_shlex.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_shlex.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:04:36 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:24:33 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,9 +14,9 @@ Test data splitting with posix parser ... ok ---------------------------------------------------------------------- -Ran 2 tests in 717.148s +Ran 2 tests in 432.432s OK ========================== closed ========================== -execution time: 728.962695122 seconds +execution time: 438.691277981 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_shutil.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_shutil.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:04:20 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:31:51 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,9 +13,9 @@ test_rmtree_errors (__main__.TestShutil) ... ok ---------------------------------------------------------------------- -Ran 1 test in 4.085s +Ran 1 test in 2.067s OK ========================== closed ========================== -execution time: 15.6597318649 seconds +execution time: 8.71469092369 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_signal.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_signal.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_signal.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_signal.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_signal.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:04:12 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:32:00 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_signal.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_signal.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_signal.py", line 3 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_signal.py", line 3 in ? import signal ImportError: signal +FAILED: test output differs ========================== closed ========================== -execution time: 7.51752710342 seconds +execution time: 4.26091384888 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_slice.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_slice.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_slice.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_slice.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_slice.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:04:05 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:32:05 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,5 +11,5 @@ faking faking ========================== closed ========================== -execution time: 7.15286803246 seconds +execution time: 4.31634616852 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_socket.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_socket.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_socket.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_socket.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:03:49 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:32:09 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,9 +14,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_socket.py", line 9 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket.py", line 9 in ? import thread, threading ImportError: thread ========================== closed ========================== -execution time: 15.3274669647 seconds +execution time: 8.09365582466 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_socket_ssl.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket_ssl.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:03:36 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:32:18 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,11 +14,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_socket_ssl.py", line 68 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket_ssl.py", line 68 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_socket_ssl.py", line 63 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket_ssl.py", line 63 in test_main raise test_support.TestSkipped("socket module has no ssl support") TestSkipped: socket module has no ssl support ========================== closed ========================== -execution time: 13.0907242298 seconds +execution time: 8.08756494522 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_socketserver.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socketserver.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:03:16 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:32:26 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -14,11 +14,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_socketserver.py", line 11 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socketserver.py", line 11 in ? import threading - File "/home/arigo/pypysrc/lib-python-2.3.4/threading.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/threading.py", line 6 in ? import thread ImportError: thread ========================== closed ========================== -execution time: 18.9364500046 seconds +execution time: 9.97106981277 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_softspace.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_softspace.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:02:53 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:32:37 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,5 +11,5 @@ faking faking ========================== closed ========================== -execution time: 23.0105788708 seconds +execution time: 6.17266988754 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sort.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sort.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sort.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sort.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sort.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:47:51 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 13:32:43 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -81,8 +81,6 @@ Checking against an insane comparison function. If the implementation isn't careful, this may segfault. checking an insane function left some permutation - complaining at Complains(0) Complains(2) - checking exception during sort left some permutation checking stability Testing size 8 checking identity @@ -125,12 +123,7 @@ checking reversed checking random permutation checking reversed via function - Checking against an insane co==========================timeout========================== -Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sort.py", line 113 in ? - s = [Stable(random.randrange(10), i) for i in xrange(n)] -KeyboardInterrupt -mparison function. + Checking against an insane comparison function. If the implementation isn't careful, this may segfault. checking an insane function left some permutation checking stability @@ -178,6 +171,8 @@ Checking against an insane comparison function. If the implementation isn't careful, this may segfault. checking an insane function left some permutation + complaining at Complains(59) Complains(58) + checking exception during sort left some permutation checking stability Testing size 65 checking identity @@ -196,6 +191,8 @@ Checking against an insane comparison function. If the implementation isn't careful, this may segfault. checking an insane function left some permutation + complaining at Complains(25) Complains(38) + checking exception during sort left some permutation checking stability Testing size 128 checking identity @@ -205,7 +202,7 @@ Checking against an insane comparison function. If the implementation isn't careful, this may segfault. checking an insane function left some permutation - complaining at Complains(97) Complains(94) + complaining at Complains(60) Complains(77) checking exception during sort left some permutation checking stability Testing size 129 @@ -225,7 +222,7 @@ Checking against an insane comparison function. If the implementation isn't careful, this may segfault. checking an insane function left some permutation - complaining at Complains(21) Complains(15) + complaining at Complains(61) Complains(113) checking exception during sort left some permutation checking stability Testing size 256 @@ -236,8 +233,36 @@ Checking against an insane comparison function. If the implementation isn't careful, this may segfault. checking an insane function left some permutation - complaining at Complains(137) Complains(149) + complaining at Complains(209) Complains(205) + checking exception during sort left some permutati==========================timeout========================== +Traceback (application-level): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sort.py", line 97 in ? + s.sort(lambda a, b: int(random.random() * 3) - 1) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sort.py", line 97 in + s.sort(lambda a, b: int(random.random() * 3) - 1) + File "/u/pedronis/PyPy/dist/pypy/lib/random.py", line 192 in random + self._seed = x, y, z +KeyboardInterrupt +on + checking stability +Testing size 257 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. + checking an insane function left some permutation + complaining at Complains(86) Complains(84) checking exception during sort left some permutation + checking stability +Testing size 511 + checking identity + checking reversed + checking random permutation + checking reversed via function + Checking against an insane comparison function. + If the implementation isn't careful, this may segfault. ========================== closed ========================== -execution time: 901.763422966 seconds +execution time: 899.97881794 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_str.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_str.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_str.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_str.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_str.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:20:37 2005 -pypy-revision: 11535 +startdate: Thu Apr 28 13:47:44 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,26 +12,26 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_str.py", line 25 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_str.py", line 25 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_str.py", line 22 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_str.py", line 22 in test_main test_support.run_unittest(StrTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/string_tests.py", line 586 in test_floatformatting + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/string_tests.py", line 586 in test_floatformatting self.checkcall(format, "__mod__", value) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/string_tests.py", line 81 in checkcall - getattr(object, methodname)(*args) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/string_tests.py", line 80 in checkcall + args = self.fixtype(args) KeyboardInterrupt test___contains__ (__main__.StrTest) ... ok test_capitalize (__main__.StrTest) ... ok @@ -42,5 +42,5 @@ test_expandtabs (__main__.StrTest) ... ok test_find (__main__.StrTest) ... ok test_floatformatting (__main__.StrTest) ... ========================== closed ========================== -execution time: 901.193814039 seconds +execution time: 900.069540977 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_strftime.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strftime.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:32:43 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:02:44 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -17,26 +17,30 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strftime.py", line 158 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strftime.py", line 158 in ? main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strftime.py", line 29 in main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strftime.py", line 29 in main strftest(now + (i + j*100)*23*3603) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strftime.py", line 125 in strftest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strftime.py", line 125 in strftest if re.match(escapestr(e[1], ampm), result): continue - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 132 in match + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 132 in match return _compile(pattern, flags).match(string) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 228 in _compile p = sre_compile.compile(pattern, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 467 in compile + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_compile.py", line 467 in compile p = sre_parse.parse(p, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 617 in parse - source = Tokenizer(str) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 186 in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 624 in parse + p = _parse_sub(source, pattern, 0) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub + items.append(_parse(source, state)) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 376 in _parse + this = source.get() + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 208 in get self.__next() - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 198 in __next - self.index = self.index + len(char) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 189 in __next + self.next = None KeyboardInterrupt -strftime test for Wed Apr 27 19:32:54 2005 +strftime test for Thu Apr 28 14:02:52 2005 Strftime test, platform: linux2, Python version: 2.3.4 Supports nonstandard '%c' format (near-asctime() format) Supports nonstandard '%x' format (%m/%d/%y %H:%M:%S) @@ -53,5 +57,5 @@ Supports nonstandard '%T' format (%H:%M:%S) Supports nonstandard '%3y' format (year without century rendered using fieldwidth) ========================== closed ========================== -execution time: 900.157372952 seconds +execution time: 899.976232052 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_string.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_string.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_string.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_string.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_string.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:35:39 2005 -pypy-revision: 11535 +startdate: Thu Apr 28 14:17:45 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -38,9 +38,9 @@ test_maketrans (__main__.ModuleTest) ... ok ---------------------------------------------------------------------- -Ran 26 tests in 85.198s +Ran 26 tests in 16.790s OK ========================== closed ========================== -execution time: 130.104860067 seconds +execution time: 25.6396739483 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_stringprep.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_stringprep.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:31:29 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:18:54 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,5 +11,5 @@ faking faking ========================== closed ========================== -execution time: 8.25511693954 seconds +execution time: 6.99787116051 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_strop.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_strop.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_strop.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_strop.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strop.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:31:05 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:19:01 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,9 +13,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strop.py", line 5 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strop.py", line 5 in ? import strop ImportError: strop ========================== closed ========================== -execution time: 23.3075590134 seconds +execution time: 17.8228149414 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_strptime.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:16:04 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:19:19 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -15,47 +15,20 @@ faking faking faking -==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strptime.py", line 506 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py", line 506 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strptime.py", line 501 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py", line 501 in test_main CacheTests - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_strptime.py", line 434 in test_gregorian_calculation - format_string) - File "/home/arigo/pypysrc/lib-python-2.3.4/_strptime.py", line 420 in strptime - format_regex = _locale_cache.compile(format) - File "/home/arigo/pypysrc/lib-python-2.3.4/_strptime.py", line 398 in compile - return re_compile(self.pattern(format), IGNORECASE) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 179 in compile - return _compile(pattern, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre.py", line 228 in _compile - p = sre_compile.compile(pattern, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_compile.py", line 467 in compile - p = sre_parse.parse(p, flags) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 624 in parse - p = _parse_sub(source, pattern, 0) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 584 in _parse - p = _parse_sub(source, state) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/home/arigo/pypysrc/lib-python-2.3.4/sre_parse.py", line 374 in _parse - if source.next in ("|", ")"): -KeyboardInterrupt + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + raise TestFailed(err) +TestFailed: Traceback (most recent call last): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py", line 194, in test_compile + "Match failed with '%s' regex and '%s' string" % +AttributeError: 'SRE_Pattern' object has no attribute 'pattern' + test_basic (__main__.getlang_Tests) ... ok test_am_pm (__main__.LocaleTime_Tests) ... ok test_by_hand_input (__main__.LocaleTime_Tests) ... ok @@ -72,7 +45,7 @@ test_pattern (__main__.TimeRETests) ... ok test_pattern_escaping (__main__.TimeRETests) ... ok test_TypeError (__main__.StrptimeTests) ... ok -test_bad_timezone (__main__.StrptimeTests) ... ERROR +test_bad_timezone (__main__.StrptimeTests) ... ok test_caseinsensitive (__main__.StrptimeTests) ... ok test_date (__main__.StrptimeTests) ... ok test_date_time (__main__.StrptimeTests) ... ok @@ -93,6 +66,24 @@ test_twelve_noon_midnight (__main__.Strptime12AMPMTests) ... ok test_all_julian_days (__main__.JulianTests) ... ok test_day_of_week_calculation (__main__.CalculationTests) ... ok -test_gregorian_calculation (__main__.CalculationTests) ... ========================== closed ========================== -execution time: 900.189292908 seconds +test_gregorian_calculation (__main__.CalculationTests) ... ok +test_julian_calculation (__main__.CalculationTests) ... ok +test_new_localetime (__main__.CacheTests) ... ok +test_regex_cleanup (__main__.CacheTests) ... ok +test_time_re_recreation (__main__.CacheTests) ... ok + +====================================================================== +ERROR: test_compile (__main__.TimeRETests) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py", line 194, in test_compile + "Match failed with '%s' regex and '%s' string" % +AttributeError: 'SRE_Pattern' object has no attribute 'pattern' + +---------------------------------------------------------------------- +Ran 42 tests in 728.549s + +FAILED (errors=1) +========================== closed ========================== +execution time: 746.773476124 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_struct.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_struct.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_struct.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_struct.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_struct.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:15:55 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:31:46 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,10 +11,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_struct.py", line 80 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_struct.py", line 80 in ? raise TestFailed, "unpack/pack not transitive (%s, %s)" % ( TestFailed: unpack/pack not transitive (xcbhilfd, ('a', 1, 255, 65535, 65536, 3.1414999961853028, 4.0)) trying: xcbhilfd ========================== closed ========================== -execution time: 9.13393902779 seconds +execution time: 6.83288693428 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_structseq.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_structseq.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:15:48 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:31:54 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,12 +11,52 @@ faking faking faking -Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_structseq.py", line 14 in ? - vereq(t[i:j], astuple[i:j]) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 194 in vereq - raise TestFailed, "%r == %r" % (a, b) -TestFailed: () == (2005,) +Traceback (most recent call last): + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ + main.run_file(args[0], space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code + return frame.run() + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume + result = self.eval(executioncontext) + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval + self.dispatch() + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch + fn(self, oparg) + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION + w_result = f.space.call_args(w_function, args) + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args + return space.get_and_call_args(w_descr, w_obj, args) + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args + return descr.call_args(args.prepend(w_obj)) + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_ObjSpace_W_Root_Arguments + File "", line 4, in _mm_call_typeS0_perform_call + File "", line 2, in _mm_call_typeS0 + File "/u/pedronis/PyPy/dist/pypy/objspace/std/typeobject.py", line 230, in call__Type + w_newobject = space.call_args(w_newfunc, __args__.prepend(w_type)) + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args + return w_obj.call_args(args) + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args + return frame.run() + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run + w_result = self._run() + File "", line 3, in _run_UWS_ObjSpace_W_Root_args_w + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 76, in fake__new__ + args = [space.unwrap(w_arg) for w_arg in args_w] + File "/u/pedronis/PyPy/dist/pypy/objspace/std/objspace.py", line 236, in unwrap + return w_obj.unwrap() + File "/u/pedronis/PyPy/dist/pypy/objspace/std/model.py", line 122, in unwrap + raise UnwrapError, 'cannot unwrap %r' % (w_self,) +pypy.objspace.std.model.UnwrapError: cannot unwrap > ========================== closed ========================== -execution time: 6.03355097771 seconds +execution time: 7.08072185516 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sunaudiodev.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sunaudiodev.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:15:42 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:32:01 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sunaudiodev.py", line 2 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sunaudiodev.py", line 2 in ? import sunaudiodev ImportError: sunaudiodev ========================== closed ========================== -execution time: 5.77252697945 seconds +execution time: 4.54633402824 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sundry.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sundry.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:08:40 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:32:07 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -17,12 +17,12 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_sundry.py", line 38 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sundry.py", line 38 in ? import encodings - File "/home/arigo/pypysrc/lib-python-2.3.4/encodings/__init__.py", line 137 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/encodings/__init__.py", line 137 in ? codecs.register(search_function) TypeError: argument must be callable skipping curses ========================== closed ========================== -execution time: 420.881474018 seconds +execution time: 304.7646451 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_support.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_support.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_support.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:08:39 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:37:12 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 4 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 4 in ? raise ImportError, 'test_support must be imported from the test package' ImportError: test_support must be imported from the test package ========================== closed ========================== -execution time: 0.873281955719 seconds +execution time: 0.801410198212 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_symtable.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_symtable.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:08:33 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:37:13 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_symtable.py", line 3 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_symtable.py", line 3 in ? import _symtable ImportError: _symtable ========================== closed ========================== -execution time: 5.7526819706 seconds +execution time: 4.8308699131 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_syntax.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_syntax.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:08:08 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:37:18 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -19,9 +19,9 @@ test_global_err_then_warn (__main__.SyntaxTestCase) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 14.529s +Ran 3 tests in 11.143s OK ========================== closed ========================== -execution time: 24.5019910336 seconds +execution time: 18.3976719379 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sys.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sys.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sys.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_sys.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sys.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:07:53 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:37:37 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -26,9 +26,9 @@ test_setcheckinterval (__main__.SysModuleTest) ... ok ---------------------------------------------------------------------- -Ran 14 tests in 7.300s +Ran 14 tests in 5.058s OK ========================== closed ========================== -execution time: 15.5937919617 seconds +execution time: 11.6134719849 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:06:42 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:37:48 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -28,15 +28,15 @@ ERROR: Test member extraction. ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp self.tar = tarfile.open(tarname(self.comp), mode) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 875, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 875, in open return func(name, filemode, fileobj) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 912, in taropen + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 912, in taropen return cls(name, mode, fileobj) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ self.firstmember = self.next() - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next raise ReadError,"empty, unreadable or compressed file" ReadError: empty, unreadable or compressed file @@ -44,15 +44,15 @@ ERROR: Test readlines() method of _FileObject. ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp self.tar = tarfile.open(tarname(self.comp), mode) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 875, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 875, in open return func(name, filemode, fileobj) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 912, in taropen + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 912, in taropen return cls(name, mode, fileobj) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ self.firstmember = self.next() - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next raise ReadError,"empty, unreadable or compressed file" ReadError: empty, unreadable or compressed file @@ -60,15 +60,15 @@ ERROR: Test seek() method of _FileObject, incl. random reading. ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp self.tar = tarfile.open(tarname(self.comp), mode) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 875, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 875, in open return func(name, filemode, fileobj) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 912, in taropen + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 912, in taropen return cls(name, mode, fileobj) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ self.firstmember = self.next() - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next raise ReadError,"empty, unreadable or compressed file" ReadError: empty, unreadable or compressed file @@ -76,15 +76,15 @@ ERROR: Test sparse member extraction. ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp self.tar = tarfile.open(tarname(self.comp), mode) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 875, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 875, in open return func(name, filemode, fileobj) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 912, in taropen + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 912, in taropen return cls(name, mode, fileobj) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ self.firstmember = self.next() - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next raise ReadError,"empty, unreadable or compressed file" ReadError: empty, unreadable or compressed file @@ -92,13 +92,13 @@ ERROR: Test member extraction, and for StreamError when ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp self.tar = tarfile.open(tarname(self.comp), mode) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ self.firstmember = self.next() - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next raise ReadError,"empty, unreadable or compressed file" ReadError: empty, unreadable or compressed file @@ -106,13 +106,13 @@ ERROR: Test readlines() method of _FileObject. ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp self.tar = tarfile.open(tarname(self.comp), mode) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ self.firstmember = self.next() - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next raise ReadError,"empty, unreadable or compressed file" ReadError: empty, unreadable or compressed file @@ -120,13 +120,13 @@ ERROR: Test seek() method of _FileObject, incl. random reading. ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp self.tar = tarfile.open(tarname(self.comp), mode) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ self.firstmember = self.next() - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next raise ReadError,"empty, unreadable or compressed file" ReadError: empty, unreadable or compressed file @@ -134,13 +134,13 @@ ERROR: Test sparse member extraction. ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp self.tar = tarfile.open(tarname(self.comp), mode) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ self.firstmember = self.next() - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next raise ReadError,"empty, unreadable or compressed file" ReadError: empty, unreadable or compressed file @@ -148,33 +148,33 @@ ERROR: Compare the normal tar and the stream tar. ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp self.tar = tarfile.open(tarname(self.comp), mode) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 886, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 810, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ self.firstmember = self.next() - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 1578, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 275 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578Traceback (application-level): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 275 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 263 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 263 in test_main test_support.run_unittest(*tests) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred; run in verbose mode for details -empty, unreadable or compressed file +, in next + raise ReadError,"empty, unreadable or compressed file" +ReadError: empty, unreadable or compressed file ====================================================================== ERROR: test_nonposix (__main__.WriteTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp self.src = tarfile.open(tarname(self.comp), 'r') - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 898, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 898, in open raise ReadError, "file could not be opened successfully" ReadError: file could not be opened successfully @@ -182,9 +182,9 @@ ERROR: test_posix (__main__.WriteTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp self.src = tarfile.open(tarname(self.comp), 'r') - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 898, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 898, in open raise ReadError, "file could not be opened successfully" ReadError: file could not be opened successfully @@ -192,9 +192,9 @@ ERROR: test_nonposix (__main__.WriteStreamTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp self.src = tarfile.open(tarname(self.comp), 'r') - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 898, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 898, in open raise ReadError, "file could not be opened successfully" ReadError: file could not be opened successfully @@ -202,16 +202,16 @@ ERROR: test_posix (__main__.WriteStreamTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp self.src = tarfile.open(tarname(self.comp), 'r') - File "/home/arigo/pypysrc/lib-python-2.3.4/tarfile.py", line 898, in open + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 898, in open raise ReadError, "file could not be opened successfully" ReadError: file could not be opened successfully ---------------------------------------------------------------------- -Ran 13 tests in 44.343s +Ran 13 tests in 32.838s FAILED (errors=13) ========================== closed ========================== -execution time: 69.8276779652 seconds +execution time: 50.853992939 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_tempfile.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tempfile.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 19:00:35 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:38:40 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -19,8 +19,8 @@ faking faking faking -fd 112 is open in childTraceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/tf_inherit_check.py", line 20 in ? +fd 110 is open in childTraceback (application-level): + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/tf_inherit_check.py", line 20 in ? sys.exit(1) SystemExit: 1 test_exports (__main__.test_exports) ... ok @@ -41,196 +41,199 @@ test_usable_template (__main__.test_gettempprefix) ... ok test_directory_exists (__main__.test_gettempdir) ... ok test_directory_writable (__main__.test_gettempdir) ... Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 647, in CALL_FUNCTION_VAR + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 644, in CALL_FUNCTION_VAR f.CALL_FUNCTION(oparg, w_varargs) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args frame.setfastscope(scope_w) - File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > ========================== closed ========================== -execution time: 366.91778779 seconds +execution time: 271.10127902 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_textwrap.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_textwrap.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:57:40 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:43:11 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -38,9 +38,9 @@ test_dedent_uneven (__main__.DedentTestCase) ... ok ---------------------------------------------------------------------- -Ran 22 tests in 127.781s +Ran 22 tests in 88.819s OK ========================== closed ========================== -execution time: 174.596956968 seconds +execution time: 121.529804945 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_thread.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_thread.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_thread.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_thread.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_thread.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:57:33 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:45:13 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_thread.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_thread.out ============================================================ faking faking @@ -13,9 +13,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_thread.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_thread.py", line 7 in ? import thread ImportError: thread +FAILED: test output differs ========================== closed ========================== -execution time: 6.72351288795 seconds +execution time: 5.60875320435 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_threaded_import.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threaded_import.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:57:32 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:45:19 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_threaded_import.py", line 8 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threaded_import.py", line 8 in ? import thread ImportError: thread ========================== closed ========================== -execution time: 0.874971151352 seconds +execution time: 1.15094518661 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt Thu Apr 28 16:43:22 2005 @@ -1,18 +1,19 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_threadedtempfile.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threadedtempfile.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:57:30 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:45:21 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_threadedtempfile.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.out ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_threadedtempfile.py", line 23 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threadedtempfile.py", line 23 in ? import thread # If this fails, we can't test this module ImportError: thread +FAILED: test output differs ========================== closed ========================== -execution time: 0.890268802643 seconds +execution time: 1.09182906151 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_threading.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_threading.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_threading.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_threading.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threading.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:57:23 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:45:22 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,11 +11,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_threading.py", line 7 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threading.py", line 7 in ? import threading - File "/home/arigo/pypysrc/lib-python-2.3.4/threading.py", line 6 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/threading.py", line 6 in ? import thread ImportError: thread ========================== closed ========================== -execution time: 6.78938698769 seconds +execution time: 5.38162899017 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_time.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_time.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_time.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_time.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_time.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:57:11 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:45:28 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -21,9 +21,9 @@ test_tzset (__main__.TimeTestCase) ... ok ---------------------------------------------------------------------- -Ran 8 tests in 4.404s +Ran 8 tests in 3.394s OK ========================== closed ========================== -execution time: 12.4395868778 seconds +execution time: 9.14596509933 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_timeout.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_timeout.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:56:53 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:45:37 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -20,223 +20,226 @@ testReturnType (__main__.CreationTestCase) ... ok testTimeoutThenBlocking (__main__.CreationTestCase) ... ok testTypeCheck (__main__.CreationTestCase) ... Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ + File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file + run_string(istring, filename, space) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string + _run_eval_string(source, filename, space, False) + File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string + retval = pycode.exec_code(space, w_globals, w_globals) + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 656, in CALL_FUNCTION_VAR_KW + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW f.CALL_FUNCTION(oparg, w_varargs, w_varkw) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume + File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 647, in CALL_FUNCTION_VAR + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 644, in CALL_FUNCTION_VAR f.CALL_FUNCTION(oparg, w_varargs) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION + File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run + File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call + File "", line 3, in _run_UWS_Method_Arguments + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args + File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 39, in call_args + File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args frame.setfastscope(scope_w) - File "/home/arigo/pypysrc/pypy/objspace/std/fake.py", line 133, in setfastscope + File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > ========================== closed ========================== -execution time: 17.153949976 seconds +execution time: 12.0541088581 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_timing.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_timing.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_timing.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_timing.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_timing.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:56:47 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:45:50 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_timing.py", line 2 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_timing.py", line 2 in ? import timing ImportError: timing ========================== closed ========================== -execution time: 5.76306295395 seconds +execution time: 4.13484716415 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_tokenize.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tokenize.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:46:16 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:45:55 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_tokenize.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_tokenize.out ============================================================ faking faking @@ -16,6 +16,7 @@ faking faking faking +FAILED: test output differs ========================== closed ========================== -execution time: 630.777345896 seconds +execution time: 452.486554146 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_trace.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_trace.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_trace.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_trace.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_trace.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:45:27 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:53:28 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -48,9 +48,9 @@ test_19_no_jump_without_trace_function (__main__.JumpTestCase) ... ok ---------------------------------------------------------------------- -Ran 33 tests in 30.089s +Ran 33 tests in 22.022s OK ========================== closed ========================== -execution time: 49.006565094 seconds +execution time: 39.4037489891 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:45:14 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:54:08 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,13 +11,13 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py", line 49 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py", line 49 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py", line 45 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py", line 45 in test_main run_unittest(TracebackCases) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred in __main__.TracebackCases test_caret (__main__.TracebackCases) ... FAIL @@ -27,9 +27,9 @@ FAIL: test_caret (__main__.TracebackCases) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py", line 30, in test_caret + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py", line 30, in test_caret self.assert_(len(err) == 4) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError @@ -37,16 +37,16 @@ FAIL: test_nocaret (__main__.TracebackCases) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_traceback.py", line 40, in test_nocaret + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py", line 40, in test_nocaret self.assert_(len(err) == 3) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError ---------------------------------------------------------------------- -Ran 2 tests in 2.912s +Ran 2 tests in 2.614s FAILED (failures=2) ========================== closed ========================== -execution time: 12.1203560829 seconds +execution time: 9.74295496941 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_types.out ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_types.out (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_types.out Thu Apr 28 16:43:22 2005 @@ -11,3 +11,15 @@ 6.4.3 Floating point numbers 6.5 Sequence types 6.5.1 Strings +6.5.2 Tuples +6.5.3 Lists +6.5.3a Additional list operations +6.6 Mappings == Dictionaries +6.6.1 dict methods +6.6.2 user-dict methods +6.6.3 dict.fromkeys +6.6.4 dict copy, get, setdefault +6.6.5 dict popitem +6.6.6 dict pop +6.7 type +6.99999999... All tests ran to completion Modified: pypy/dist/lib-python-2.3.4/test/result/test_types.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_types.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_types.txt Thu Apr 28 16:43:22 2005 @@ -1,22 +1,18 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/pypy/lib/test2/test_types.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/pypy/lib/test2/test_types.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:45:07 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:54:18 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_types.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_types.out ============================================================ faking faking faking faking faking -Traceback (application-level): - File "/home/arigo/pypysrc/pypy/lib/test2/test_types.py", line 217 in ? - vereq(a[::], a) -TypeError: an integer is required +FAILED: test output differs ========================== closed ========================== -execution time: 6.94264411926 seconds -exit status: 1 - WORKING ON IT +execution time: 10.963078022 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_ucn.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ucn.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:30:06 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 14:54:29 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,26 +12,26 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ucn.py", line 144 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ucn.py", line 144 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ucn.py", line 141 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ucn.py", line 141 in test_main test_support.run_unittest(UnicodeNamesTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_ucn.py", line 99 in test_bmp_characters + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ucn.py", line 99 in test_bmp_characters char = unichr(code) KeyboardInterrupt test_ascii_letters (__main__.UnicodeNamesTest) ... ok test_bmp_characters (__main__.UnicodeNamesTest) ... ========================== closed ========================== -execution time: 900.137104988 seconds +execution time: 899.962950945 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_unary.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_unary.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_unary.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unary.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unary.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:29:56 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:09:30 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,9 +18,9 @@ test_positive (__main__.UnaryOpTestCase) ... ok ---------------------------------------------------------------------- -Ran 6 tests in 2.343s +Ran 6 tests in 2.198s OK ========================== closed ========================== -execution time: 10.4070091248 seconds +execution time: 9.84963107109 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:37:49 2005 -pypy-revision: 11535 +startdate: Thu Apr 28 15:09:40 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,28 +12,28 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode.py", line 716 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode.py", line 716 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode.py", line 713 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode.py", line 713 in test_main test_support.run_unittest(UnicodeTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode.py", line 624 in test_codecs + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode.py", line 624 in test_codecs u = u''.join(map(unichr, range(0,0xd800)+range(0xe000,0x10000))) KeyboardInterrupt test___contains__ (__main__.UnicodeTest) ... ok test_capitalize (__main__.UnicodeTest) ... ok test_center (__main__.UnicodeTest) ... ok test_codecs (__main__.UnicodeTest) ... ========================== closed ========================== -execution time: 901.142125845 seconds +execution time: 900.133581161 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode_file.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode_file.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:29:36 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:24:40 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_unicode_file.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_unicode_file.out ============================================================ faking faking @@ -15,9 +15,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicode_file.py", line 13 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode_file.py", line 13 in ? raise TestSkipped("No Unicode filesystem semantics on this platform.") TestSkipped: No Unicode filesystem semantics on this platform. +FAILED: test output differs ========================== closed ========================== -execution time: 11.0879468918 seconds +execution time: 8.40083408356 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unicodedata.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicodedata.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:14:36 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:24:49 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,25 +12,25 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicodedata.py", line 213 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicodedata.py", line 213 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicodedata.py", line 209 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicodedata.py", line 209 in test_main UnicodeFunctionsTest - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_unicodedata.py", line 185 in test_decimal_numeric_consistent + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicodedata.py", line 185 in test_decimal_numeric_consistent c = unichr(i) KeyboardInterrupt test_decimal_numeric_consistent (__main__.UnicodeMiscTest) ... ========================== closed ========================== -execution time: 900.154639006 seconds +execution time: 899.971873999 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_univnewlines.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_univnewlines.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:14:08 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:39:50 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -37,9 +37,9 @@ test_seek (__main__.TestMixedNewlines) ... ok ---------------------------------------------------------------------- -Ran 25 tests in 9.215s +Ran 25 tests in 7.485s OK ========================== closed ========================== -execution time: 27.4151549339 seconds +execution time: 20.885365963 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_unpack.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unpack.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:14:01 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:40:11 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -24,5 +24,5 @@ unpack sequence too long, wrong error unpack sequence too short, wrong error ========================== closed ========================== -execution time: 7.14024806023 seconds +execution time: 5.47094893456 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_urllib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 18:09:35 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:40:16 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -46,9 +46,9 @@ test_quoting (__main__.Pathname_Tests) ... ok ---------------------------------------------------------------------- -Ran 26 tests in 242.106s +Ran 26 tests in 184.136s OK ========================== closed ========================== -execution time: 265.865428925 seconds +execution time: 201.134269953 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_urllib2.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllib2.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 20:52:51 2005 -pypy-revision: 11535 +startdate: Thu Apr 28 15:43:37 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -18,27 +18,6 @@ faking faking faking -==========================timeout========================== -Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllib2.py", line 28 in ? -f = urllib2.urlopen(file_url) - File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 129 in urlopen - return _opener.open(url, data) - File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 326 in open - '_open', req) - File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 306 in _call_chain - result = func(*args) - File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 980 in file_open - return self.open_local_file(req) - File "/home/arigo/pypysrc/lib-python-2.3.4/urllib2.py", line 998 in open_local_file - mtype = mimetypes.guess_type(file)[0] - File "/home/arigo/pypysrc/lib-python-2.3.4/mimetypes.py", line 236 in guess_type - init() - File "/home/arigo/pypysrc/lib-python-2.3.4/mimetypes.py", line 292 in init - db = MimeTypes() - File "/home/arigo/pypysrc/lib-python-2.3.4/mimetypes.py", line 61 in __init__ - self.add_type(type, ext, True) -KeyboardInterrupt ========================== closed ========================== -execution time: 900.621522903 seconds -exit status: 1 +execution time: 340.029372931 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:59:56 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:49:17 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -19,20 +19,20 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py", line 160 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py", line 160 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py", line 157 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py", line 157 in test_main urlretrieveNetworkTests) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py", line 113, in test_bad_address + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py", line 113, in test_bad_address urllib.urlopen, "http://www.python.invalid/") - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises callableObj(*args, **kwargs) - File "/home/arigo/pypysrc/lib-python-2.3.4/urllib.py", line 76, in urlopen + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/urllib.py", line 76, in urlopen return opener.open(url) TypeError: instance exception may not have a separate value @@ -51,18 +51,18 @@ ERROR: test_bad_address (__main__.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_urllibnet.py", line 113, in test_bad_address + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py", line 113, in test_bad_address urllib.urlopen, "http://www.python.invalid/") - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises callableObj(*args, **kwargs) - File "/home/arigo/pypysrc/lib-python-2.3.4/urllib.py", line 76, in urlopen + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/urllib.py", line 76, in urlopen return opener.open(url) TypeError: instance exception may not have a separate value ---------------------------------------------------------------------- -Ran 10 tests in 183.957s +Ran 10 tests in 124.984s FAILED (errors=1) ========================== closed ========================== -execution time: 203.925574064 seconds +execution time: 139.159852028 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_urlparse.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urlparse.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:59:36 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:51:37 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -17,9 +17,9 @@ test_urldefrag (__main__.UrlParseTestCase) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 12.186s +Ran 5 tests in 8.444s OK ========================== closed ========================== -execution time: 20.2075228691 seconds +execution time: 14.2433149815 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt Thu Apr 28 16:43:22 2005 @@ -1,58 +1,28 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userdict.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:58:08 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:51:51 2005 +pypy-revision: 11549 ============================================================ faking faking faking faking faking -Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py", line 401 in ? - test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py", line 397 in test_main - UserDictMixinTest - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred; run in verbose mode for details test_read (__main__.TestMappingProtocol) ... ok test_write (__main__.TestMappingProtocol) ... ok test_all (__main__.UserDictTest) ... ok -test_read (__main__.UserDictTest) ... FAIL +test_read (__main__.UserDictTest) ... ok test_write (__main__.UserDictTest) ... ok test_all (__main__.UserDictMixinTest) ... ok -test_read (__main__.UserDictMixinTest) ... FAIL +test_read (__main__.UserDictMixinTest) ... ok test_write (__main__.UserDictMixinTest) ... ok -====================================================================== -FAIL: test_read (__main__.UserDictTest) ---------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py", line 65, in test_read - if p: self.fail("Empty mapping must compare to False") - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 270, in fail - raise self.failureException, msg -AssertionError: Empty mapping must compare to False +Ran 8 tests in 51.954s -====================================================================== -FAIL: test_read (__main__.UserDictMixinTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userdict.py", line 65, in test_read - if p: self.fail("Empty mapping must compare to False") - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 270, in fail - raise self.failureException, msg -AssertionError: Empty mapping must compare to False - ----------------------------------------------------------------------- -Ran 8 tests in 71.928s - -FAILED (failures=2) +OK ========================== closed ========================== -execution time: 86.7255451679 seconds -exit status: 1 +execution time: 63.4154179096 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_userlist.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userlist.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:57:11 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 15:52:55 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -19,9 +19,9 @@ test_count (__main__.UserListTest) ... ok test_delitem (__main__.UserListTest) ... ok test_delslice (__main__.UserListTest) ... ok -test_extend (__main__.UserListTest) ... FAIL +test_extend (__main__.UserListTest) ... ok test_getitem (__main__.UserListTest) ... ok -test_getslice (__main__.UserListTest) ... FAIL +test_getslice (__main__.UserListTest) ... ok test_iadd (__main__.UserListTest) ... ok test_imul (__main__.UserListTest) ... ok test_index (__main__.UserListTest) ... ok @@ -30,216 +30,16 @@ test_radd_specials (__main__.UserListTest) ... ok test_remove (__main__.UserListTest) ... ok test_repr (__main__.UserListTest) ... ok -test_reverse (__main__.UserListTest) ... FAIL +test_reverse (__main__.UserListTest) ... ok test_setitem (__main__.UserListTest) ... ok -test_setslice (__main__.UserListTest) ... Traceback (most recent call last): - File "/home/arigo/pypysrc/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 59, in run_file - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 50, in run_string - File "/home/arigo/svn/pypy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 642, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 57, in dispatch - fn(self) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 240, in STORE_SLICE_2 - f.storeslice(None, w_end) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 229, in storeslice - f.space.setitem(w_obj, w_slice, w_newvalue) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 210, in setitem - return space.get_and_call_function(w_descr, w_obj, w_key, w_val) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 87, in get_and_call_function - return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_ObjSpace_Arguments - File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 2675, in __setitem__ - return fastf_instance___setitem__(space, w_self, w_key, w_value) - File "/home/arigo/pypysrc/pypy/module/classobjinterp.py", line 2727, in __setitem__ - w_10 = space.call_function(w_9, w_key_2, w_value_2) - File "/home/arigo/pypysrc/pypy/interpreter/baseobjspace.py", line 223, in call_function - return self.call_args(w_func, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/home/arigo/pypysrc/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 57, in dispatch - fn(self) - File "/home/arigo/pypysrc/pypy/interpreter/pyopcode.py", line 273, in STORE_SUBSCR - f.space.setitem(w_obj, w_subscr, w_newvalue) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 210, in setitem - return space.get_and_call_function(w_descr, w_obj, w_key, w_val) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 87, in get_and_call_function - return space.get_and_call_args(w_descr, w_obj, args) - File "/home/arigo/pypysrc/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/home/arigo/pypysrc/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/home/arigo/pypysrc/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_ObjSpace_W_Root_W_Root_W_Root - File "", line 4, in _mm_setitem_listS0_perform_call - File "", line 2, in _mm_setitem_listS0 - File "", line 3, in _mm_setitem_listS0__W_ListObject - File "", line 2, in _mm_setitem_listS0__W_ListObject__W_SliceObject - File "/home/arigo/pypysrc/pypy/objspace/std/listobject.py", line 270, in setitem__List_Slice_ANY - return _setitem_slice_helper(space, w_list, w_slice, t, len(t)) - File "/home/arigo/pypysrc/pypy/objspace/std/listobject.py", line 287, in _setitem_slice_helper - items[i] = items[i-delta] -IndexError: list index out of range +test_setslice (__main__.UserListTest) ... ok +test_slice (__main__.UserListTest) ... ok +test_sort (__main__.UserListTest) ... ok + +---------------------------------------------------------------------- +Ran 25 tests in 76.131s + +OK ========================== closed ========================== -execution time: 56.9329071045 seconds -exit status: 1 +execution time: 82.5773038864 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_userstring.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userstring.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:07:52 2005 -pypy-revision: 11535 +startdate: Thu Apr 28 15:54:17 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -12,28 +12,24 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userstring.py", line 50 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userstring.py", line 50 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userstring.py", line 47 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userstring.py", line 47 in test_main test_support.run_unittest(UserStringTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/string_tests.py", line 586 in test_floatformatting - self.checkcall(format, "__mod__", value) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_userstring.py", line 44 in checkcall - getattr(object, methodname)(*args) - File "/home/arigo/pypysrc/lib-python-2.3.4/UserString.py", line 59 in __mod__ - return self.__class__(self.data % args) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/string_tests.py", line 575 in test_floatformatting + format = '%%.%if' % prec KeyboardInterrupt test___contains__ (__main__.UserStringTest) ... ok test_capitalize (__main__.UserStringTest) ... ok @@ -44,5 +40,5 @@ test_expandtabs (__main__.UserStringTest) ... ok test_find (__main__.UserStringTest) ... ok test_floatformatting (__main__.UserStringTest) ... ========================== closed ========================== -execution time: 900.393742085 seconds +execution time: 899.991379976 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_uu.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_uu.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_uu.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:56:30 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:09:18 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,18 +11,18 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py", line 172 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py", line 172 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py", line 169 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py", line 169 in test_main test_support.run_unittest(UUTest, UUStdIOTest, UUFileTest) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py", line 148, in test_decode + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py", line 148, in test_decode self.assertEqual(s, plaintext) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ AssertionError: '' != 'The smooth-scaled python crept over the sleeping dog\n' @@ -40,16 +40,16 @@ FAIL: test_decode (__main__.UUFileTest) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_uu.py", line 148, in test_decode + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py", line 148, in test_decode self.assertEqual(s, plaintext) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ AssertionError: '' != 'The smooth-scaled python crept over the sleeping dog\n' ---------------------------------------------------------------------- -Ran 9 tests in 21.829s +Ran 9 tests in 15.087s FAILED (failures=1) ========================== closed ========================== -execution time: 33.5003721714 seconds +execution time: 23.3923621178 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_warnings.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_warnings.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:56:09 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:09:42 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -19,9 +19,9 @@ test_warn_specific_category (__main__.TestModule) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 12.419s +Ran 3 tests in 8.684s OK ========================== closed ========================== -execution time: 20.4237499237 seconds +execution time: 14.5311660767 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_wave.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_wave.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_wave.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_wave.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_wave.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:56:01 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:09:56 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,21 +11,21 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_wave.py", line 20 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_wave.py", line 20 in ? f.writeframes(output) - File "/home/arigo/pypysrc/lib-python-2.3.4/wave.py", line 421 in writeframes + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/wave.py", line 421 in writeframes self.writeframesraw(data) - File "/home/arigo/pypysrc/lib-python-2.3.4/wave.py", line 405 in writeframesraw + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/wave.py", line 405 in writeframesraw self._ensure_header_written(len(data)) - File "/home/arigo/pypysrc/lib-python-2.3.4/wave.py", line 448 in _ensure_header_written + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/wave.py", line 448 in _ensure_header_written self._write_header(datasize) - File "/home/arigo/pypysrc/lib-python-2.3.4/wave.py", line 461 in _write_header + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/wave.py", line 461 in _write_header self._sampwidth * 8, 'data')) - File "/home/arigo/pypysrc/pypy/lib/struct.py", line 293 in pack + File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 293 in pack result += [format['pack'](var,format['size'],endianness)] - File "/home/arigo/pypysrc/pypy/lib/struct.py", line 109 in pack_signed_int + File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 109 in pack_signed_int raise StructError,"argument for i,I,l,L,q,Q,h,H must be integer" StructError: argument for i,I,l,L,q,Q,h,H must be integer ========================== closed ========================== -execution time: 7.49740386009 seconds +execution time: 5.42613506317 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_weakref.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_weakref.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:55:55 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:10:02 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,11 +11,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_weakref.py", line 5 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_weakref.py", line 5 in ? import weakref - File "/home/arigo/pypysrc/lib-python-2.3.4/weakref.py", line 14 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/weakref.py", line 14 in ? from _weakref import \ ImportError: _weakref ========================== closed ========================== -execution time: 5.77319097519 seconds +execution time: 4.26104903221 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_whichdb.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_whichdb.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:55:29 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:10:07 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -17,9 +17,9 @@ test_whichdb_dumbdbm (__main__.WhichDBTestCase) ... ok ---------------------------------------------------------------------- -Ran 1 test in 9.150s +Ran 1 test in 6.118s OK ========================== closed ========================== -execution time: 25.3580050468 seconds +execution time: 17.6551411152 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt Thu Apr 28 16:43:22 2005 @@ -1,18 +1,19 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_winreg.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_winreg.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:55:28 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:10:25 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_winreg.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_winreg.out ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_winreg.py", line 4 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_winreg.py", line 4 in ? from _winreg import * ImportError: _winreg +FAILED: test output differs ========================== closed ========================== -execution time: 0.896722078323 seconds +execution time: 0.874945163727 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_winsound.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_winsound.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:55:22 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:10:26 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_winsound.py", line 5 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_winsound.py", line 5 in ? import winsound, time ImportError: winsound ========================== closed ========================== -execution time: 5.76984000206 seconds +execution time: 4.26573610306 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_xmllib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmllib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:53:02 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:10:31 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -15,11 +15,11 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmllib.py", line 22 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmllib.py", line 22 in ? import xmllib - File "/home/arigo/pypysrc/lib-python-2.3.4/xmllib.py", line 39 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmllib.py", line 39 in ? starttagmatch = re.compile('<(?P'+_Name+')' AttributeError: 'SRE_Pattern' object has no attribute 'pattern' ========================== closed ========================== -execution time: 138.925571918 seconds +execution time: 102.461355925 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:50:34 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:12:14 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -13,16 +13,16 @@ faking faking faking -/home/arigo/pypysrc/lib-python-2.3.4/xmllib.py:9: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. +/u/pedronis/PyPy/dist/lib-python-2.3.4/xmllib.py:9: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. warnings.warn("The xmllib module is obsolete. Use xml.sax instead.", DeprecationWarning) Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py", line 45 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py", line 45 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py", line 41 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py", line 41 in test_main test_support.run_unittest(XMLRPCTestCase) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred in __main__.XMLRPCTestCase test_dump_bad_dict (__main__.XMLRPCTestCase) ... ok @@ -35,15 +35,15 @@ ERROR: test_dump_load (__main__.XMLRPCTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py", line 19, in test_dump_load + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py", line 19, in test_dump_load xmlrpclib.loads(xmlrpclib.dumps((alist,)))[0][0]) - File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 1011, in loads + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 1011, in loads p, u = getparser() - File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 906, in getparser + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 906, in getparser parser = SlowParser(target) - File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 539, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 539, in __init__ import xmllib # lazy subclassing (!) - File "/home/arigo/pypysrc/lib-python-2.3.4/xmllib.py", line 39, in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmllib.py", line 39, in ? starttagmatch = re.compile('<(?P'+_Name+')' AttributeError: 'SRE_Pattern' object has no attribute 'pattern' @@ -51,20 +51,20 @@ ERROR: test_dump_none (__main__.XMLRPCTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xmlrpc.py", line 37, in test_dump_none + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py", line 37, in test_dump_none xmlrpclib.loads(strg)[0][0]) - File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 1011, in loads + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 1011, in loads p, u = getparser() - File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 906, in getparser + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 906, in getparser parser = SlowParser(target) - File "/home/arigo/pypysrc/lib-python-2.3.4/xmlrpclib.py", line 540, in __init__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 540, in __init__ if xmllib.XMLParser not in SlowParser.__bases__: AttributeError: 'module' object has no attribute 'XMLParser' ---------------------------------------------------------------------- -Ran 5 tests in 132.970s +Ran 5 tests in 103.095s FAILED (errors=2) ========================== closed ========================== -execution time: 148.402704954 seconds +execution time: 114.541185141 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_xpickle.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xpickle.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:35:33 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:14:09 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -16,43 +16,39 @@ faking ==========================timeout========================== Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xpickle.py", line 44 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xpickle.py", line 44 in ? test_main() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xpickle.py", line 40 in test_main + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xpickle.py", line 40 in test_main DumpPickle_LoadCPickle - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 658 in run + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/home/arigo/pypysrc/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/home/arigo/pypysrc/lib-python-2.3.4/test/pickletester.py", line 776 in test_dict_chunking + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/pickletester.py", line 776 in test_dict_chunking s = self.dumps(x, proto) - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xpickle.py", line 19 in dumps + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xpickle.py", line 19 in dumps return cPickle.dumps(arg, proto) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 1386 in dumps + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 1386 in dumps Pickler(file, protocol, bin).dump(obj) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 231 in dump + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 231 in dump self.save(obj) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 293 in save f(self, obj) # Call unbound method with explicit self - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 663 in save_dict + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 663 in save_dict self._batch_setitems(obj.iteritems()) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 676 in _batch_setitems - save(k) - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 293 in save - f(self, obj) # Call unbound method with explicit self - File "/home/arigo/pypysrc/lib-python-2.3.4/pickle.py", line 472 in save_int - self.write(INT + `obj` + '\n') - File "/home/arigo/pypysrc/lib-python-2.3.4/StringIO.py", line 165 in write + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 678 in _batch_setitems + write(SETITEM) + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/StringIO.py", line 165 in write self.len = self.pos = self.pos + len(s) KeyboardInterrupt test_dict_chunking (__main__.DumpCPickle_LoadPickle) ... ========================== closed ========================== -execution time: 900.225219965 seconds +execution time: 900.014615059 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt Thu Apr 28 16:43:22 2005 @@ -1,11 +1,11 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_xreadline.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xreadline.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:35:20 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:29:09 2005 +pypy-revision: 11549 OUTPUT TEST -see output in: /home/arigo/pypysrc/lib-python-2.3.4/test/result/test_xreadline.out +see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_xreadline.out ============================================================ faking faking @@ -15,9 +15,10 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_xreadline.py", line 16 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xreadline.py", line 16 in ? import xreadlines ImportError: xreadlines +FAILED: test output differs ========================== closed ========================== -execution time: 12.5617470741 seconds +execution time: 10.5921299458 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt Thu Apr 28 16:43:22 2005 @@ -1,16 +1,16 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_zipfile.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zipfile.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:35:18 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:29:21 2005 +pypy-revision: 11549 ============================================================ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_zipfile.py", line 1 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zipfile.py", line 1 in ? import zlib # implied prerequisite ImportError: zlib ========================== closed ========================== -execution time: 0.884968042374 seconds +execution time: 0.768661975861 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_zipimport.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zipimport.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:35:12 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:29:22 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_zipimport.py", line 8 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zipimport.py", line 8 in ? import zlib # implied prerequisite ImportError: zlib ========================== closed ========================== -execution time: 5.9705529213 seconds +execution time: 4.60285902023 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt Thu Apr 28 16:43:22 2005 @@ -1,9 +1,9 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_zlib.py -run by: arigo at tismerysoft.de +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zlib.py +run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 17:34:58 2005 -pypy-revision: 11518 +startdate: Thu Apr 28 16:29:27 2005 +pypy-revision: 11549 ============================================================ faking faking @@ -11,9 +11,9 @@ faking faking Traceback (application-level): - File "/home/arigo/pypysrc/lib-python-2.3.4/test/test_zlib.py", line 3 in ? + File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zlib.py", line 3 in ? import zlib ImportError: zlib ========================== closed ========================== -execution time: 13.2909250259 seconds +execution time: 4.73801016808 seconds exit status: 1 From pedronis at codespeak.net Thu Apr 28 16:47:40 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 16:47:40 +0200 (CEST) Subject: [pypy-svn] r11596 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050428144740.EE48227BDF@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 16:47:40 2005 New Revision: 11596 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: test_support is not a test Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Thu Apr 28 16:47:40 2005 @@ -638,7 +638,7 @@ 'test_structseq.py' : TestDecl(False, SimpleRunModule), 'test_sunaudiodev.py' : TestDecl(False, SimpleRunModule), 'test_sundry.py' : TestDecl(False, SimpleRunModule), - 'test_support.py' : TestDecl(False, SimpleRunModule), + # test_support is not a test 'test_symtable.py' : TestDecl(False, SimpleRunModule), 'test_syntax.py' : TestDecl(True, UTTestMainModule), 'test_sys.py' : TestDecl(True, UTTestMainModule), From pedronis at codespeak.net Thu Apr 28 16:48:19 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 16:48:19 +0200 (CEST) Subject: [pypy-svn] r11597 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050428144819.7B44F27BE6@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 16:48:19 2005 New Revision: 11597 Removed: pypy/dist/lib-python-2.3.4/test/result/test_support.txt Log: test_support is not a test Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_support.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_support.txt Thu Apr 28 16:48:19 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:37:12 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 4 in ? - raise ImportError, 'test_support must be imported from the test package' -ImportError: test_support must be imported from the test package -========================== closed ========================== -execution time: 0.801410198212 seconds -exit status: 1 From pedronis at codespeak.net Thu Apr 28 17:28:31 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 17:28:31 +0200 (CEST) Subject: [pypy-svn] r11598 - in pypy/dist: lib-python-2.3.4/test/result pypy/lib/test2 pypy/module/builtin Message-ID: <20050428152831.9EBDE27BD3@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 17:28:31 2005 New Revision: 11598 Modified: pypy/dist/lib-python-2.3.4/test/result/test_types.out pypy/dist/lib-python-2.3.4/test/result/test_types.txt pypy/dist/pypy/lib/test2/test_types.py pypy/dist/pypy/module/builtin/app_buffer.py Log: we had patched the 2.4 version of test_types. Repatched the 2.3 one we pass it with 3 mods, 2 are legitimate (__xxx__ overidding effects are quite undefined) and 3rd is questionable, right now our dict iterators captures the keys at creation time. needed also a fix in our simple-minded buffer impl. Modified: pypy/dist/lib-python-2.3.4/test/result/test_types.out ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_types.out (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_types.out Thu Apr 28 17:28:31 2005 @@ -3,8 +3,6 @@ 6.1 Truth value testing 6.2 Boolean operations 6.3 Comparisons -6.3.1 Conversion errors -6.3.2 Division errors 6.4 Numeric types (mostly conversions) 6.4.1 32-bit integers 6.4.2 Long integers @@ -15,11 +13,4 @@ 6.5.3 Lists 6.5.3a Additional list operations 6.6 Mappings == Dictionaries -6.6.1 dict methods -6.6.2 user-dict methods -6.6.3 dict.fromkeys -6.6.4 dict copy, get, setdefault -6.6.5 dict popitem -6.6.6 dict pop -6.7 type -6.99999999... All tests ran to completion +Buffers Modified: pypy/dist/lib-python-2.3.4/test/result/test_types.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_types.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_types.txt Thu Apr 28 17:28:31 2005 @@ -1,9 +1,10 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/pypy/lib/test2/test_types.py +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py /u/pedronis/PyPy/dist/pypy/lib/test2/test_types.py run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:54:18 2005 -pypy-revision: 11549 +oldstyle: no +startdate: Thu Apr 28 17:21:16 2005 +pypy-revision: 11595 OUTPUT TEST see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_types.out ============================================================ @@ -12,7 +13,7 @@ faking faking faking -FAILED: test output differs +OK ========================== closed ========================== -execution time: 10.963078022 seconds +execution time: 212.364502907 seconds exit status: 0 Modified: pypy/dist/pypy/lib/test2/test_types.py ============================================================================== --- pypy/dist/pypy/lib/test2/test_types.py (original) +++ pypy/dist/pypy/lib/test2/test_types.py Thu Apr 28 17:28:31 2005 @@ -1,5 +1,4 @@ # Python test set -- part 6, built-in types -# Slightly edited version for PyPy. from test.test_support import * @@ -33,7 +32,7 @@ print '6.2 Boolean operations' if 0 or 0: raise TestFailed, '0 or 0 is true instead of false' if 1 and 1: pass -else: raise TestFailed, '1 and 1 is false instead of false' +else: raise TestFailed, '1 and 1 is false instead of true' if not 1: raise TestFailed, 'not 1 is true instead of false' print '6.3 Comparisons' @@ -50,8 +49,6 @@ if None is None and [] is not []: pass else: raise TestFailed, 'identity test failed' - -print '6.3.1 Conversion errors' try: float('') except ValueError: pass else: raise TestFailed, "float('') didn't raise ValueError" @@ -60,7 +57,6 @@ except ValueError: pass else: raise TestFailed, "float('5\0') didn't raise ValueError" -print '6.3.2 Division errors' try: 5.0 / 0.0 except ZeroDivisionError: pass else: raise TestFailed, "5.0 / 0.0 didn't raise ZeroDivisionError" @@ -73,10 +69,6 @@ except ZeroDivisionError: pass else: raise TestFailed, "5.0 % 0.0 didn't raise ZeroDivisionError" -try: 5L / 0 -except ZeroDivisionError: pass -else: raise TestFailed, "5L / 0 didn't raise ZeroDivisionError" - try: 5 / 0L except ZeroDivisionError: pass else: raise TestFailed, "5 / 0L didn't raise ZeroDivisionError" @@ -264,9 +256,8 @@ yield i vereq(list(tuple(f())), range(1000)) -# Verify that __getitem__ overrides are not recognized by __iter__ -# XXX TODO: this fails with PyPy because overriding __getitem__ will -# really override what the sequence iterator returns +# xxx PyPy behaves differently on this detail +## Verify that __getitem__ overrides are not recognized by __iter__ #class T(tuple): # def __getitem__(self, key): # return str(key) + '!!!' @@ -361,7 +352,6 @@ if a != [4]: raise TestFailed, 'list item deletion [0]' del a[-1L] if a != []: raise TestFailed, 'list item deletion [-1]' -a=[] a.append(0) a.append(1) a.append(2) @@ -425,14 +415,13 @@ except TypeError: pass else: raise TestFailed, 'list sort compare function is not callable' -''' XXX TODO: add detection of list modification during sort def selfmodifyingComparison(x,y): z.append(1) return cmp(x, y) try: z.sort(selfmodifyingComparison) except ValueError: pass else: raise TestFailed, 'modifying list during sort' -''' + try: z.sort(lambda x, y: 's') except TypeError: pass @@ -445,6 +434,7 @@ if a[ 3: pow(2,145L) ] != [3,4]: raise TestFailed, "list slicing with too-large long integer" + # extended slicing # subscript @@ -494,8 +484,8 @@ a[::2] = tuple(range(5)) vereq(a, [0, 1, 1, 3, 2, 5, 3, 7, 4, 9]) -# Verify that __getitem__ overrides are not recognized by __iter__ -# XXX TODO same as class T(tuple) above +# xxx PyPy behaves differently on this detail +## Verify that __getitem__ overrides are not recognized by __iter__ #class L(list): # def __getitem__(self, key): # return str(key) + '!!!' @@ -528,7 +518,6 @@ if d['c'] != 3 or d['a'] != 4: raise TestFailed, 'dict item assignment' del d['b'] if d != {'a': 4, 'c': 3}: raise TestFailed, 'dict item deletion' -print '6.6.1 dict methods' # dict.clear() d = {1:1, 2:2, 3:3} d.clear() @@ -542,7 +531,6 @@ try: d.update(None) except AttributeError: pass else: raise TestFailed, 'dict.update(None), AttributeError expected' -print '6.6.2 user-dict methods' class SimpleUserDict: def __init__(self): self.d = {1:1, 2:2, 3:3} @@ -605,7 +593,6 @@ try: d.update(FailingUserDict()) except ValueError: pass else: raise TestFailed, 'dict.update(), __getitem__ expected ValueError' -print '6.6.3 dict.fromkeys' # dict.fromkeys() if dict.fromkeys('abc') != {'a':None, 'b':None, 'c':None}: raise TestFailed, 'dict.fromkeys did not work as a class method' @@ -634,7 +621,6 @@ raise TestFailed, 'dictsubclass.fromkeys created wrong type' if type(dictlike().fromkeys('a')) is not dictlike: raise TestFailed, 'dictsubclass.fromkeys created wrong type' - from UserDict import UserDict class mydict(dict): def __new__(cls): @@ -642,9 +628,6 @@ ud = mydict.fromkeys('ab') if ud != {'a':None, 'b':None} or not isinstance(ud,UserDict): raise TestFailed, 'fromkeys did not instantiate using __new__' - -print '6.6.4 dict copy, get, setdefault' - # dict.copy() d = {1:1, 2:2, 3:3} if d.copy() != {1:1, 2:2, 3:3}: raise TestFailed, 'dict copy' @@ -670,14 +653,11 @@ d.setdefault('key', []).append(4) if len(d['key']) != 2: raise TestFailed, 'present {} setdefault, w/ 2nd arg' - -print '6.6.5 dict popitem' - # dict.popitem() for copymode in -1, +1: # -1: b has same structure as a # +1: b is a.copy() - for log2size in range(4):#(12): + for log2size in range(12): size = 2**log2size a = {} b = {} @@ -703,8 +683,6 @@ except KeyError: pass else: raise TestFailed, "{}.popitem doesn't raise KeyError" -print '6.6.6 dict pop' - # Tests for pop with specified key d.clear() k, v = 'abc', 'def' @@ -732,18 +710,17 @@ d[k] = v if d.pop(k, 1) != v: raise TestFailed, "{}.pop(k, v) doesn't find known key/value pair" -''' TODO: doesn't raise correctly -d[1] = 1 -try: - for i in d: - d[i+1] = 1 -except RuntimeError: - pass -else: - raise TestFailed, "changing dict size during iteration doesn't raise Error" -''' -print '6.7 type' +# xxx PyPy: what do to about this? we iterate over the keys as they were at iter creation time +# +#d[1] = 1 +#try: +# for i in d: +# d[i+1] = 1 +#except RuntimeError: +# pass +#else: +# raise TestFailed, "changing dict size during iteration doesn't raise Error" try: type(1, 2) except TypeError: pass @@ -753,9 +730,7 @@ except TypeError: pass else: raise TestFailed, 'type(), w/4 args expected TypeError' -''' TODO: No buffer support yet XXX -print '6.8 buffer' - +print 'Buffers' try: buffer('asdf', -1) except ValueError: pass else: raise TestFailed, "buffer('asdf', -1) should raise ValueError" @@ -783,5 +758,3 @@ try: a[0:1] = 'g' except TypeError: pass else: raise TestFailed, "buffer slice assignment should raise TypeError" -''' -print '6.99999999... All tests ran to completion' Modified: pypy/dist/pypy/module/builtin/app_buffer.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_buffer.py (original) +++ pypy/dist/pypy/module/builtin/app_buffer.py Thu Apr 28 17:28:31 2005 @@ -17,6 +17,9 @@ else: # XXX check for more types raise TypeError, "buffer object expected" + if offset < 0: + raise ValueError, "offset must be zero or positive" + if size is None: self.buf = object[offset:] else: From pedronis at codespeak.net Thu Apr 28 17:31:20 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 17:31:20 +0200 (CEST) Subject: [pypy-svn] r11599 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050428153120.A5D9627BD3@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 17:31:20 2005 New Revision: 11599 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: added comment about passing test_types Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Thu Apr 28 17:31:20 2005 @@ -667,11 +667,10 @@ 'test_traceback.py' : TestDecl(False, UTTestMainModule), #rev 10840: 2 of 2 tests fail - 'test_types.py' : TestDecl(False, OutputTestModule, modified=True), - #rev 10920: fails with: - # E vereq(a[::], a) - # > (application-level) TypeError: an integer is required - # [/home/hpk/pypy-dist/pypy/lib/test2/test_types.py:217] + 'test_types.py' : TestDecl(True, OutputTestModule, modified=True), + #rev 11598: one of the mod related to dict iterators is questionable + # and questions whether how we implment them is meanigful in the + # long run 'test_ucn.py' : TestDecl(False, UTTestMainModule), 'test_unary.py' : TestDecl(True, UTTestMainModule), From pedronis at codespeak.net Thu Apr 28 17:32:45 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 17:32:45 +0200 (CEST) Subject: [pypy-svn] r11600 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050428153245.821F427BD3@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 17:32:45 2005 New Revision: 11600 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: oops, typos Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Thu Apr 28 17:32:45 2005 @@ -669,7 +669,7 @@ 'test_types.py' : TestDecl(True, OutputTestModule, modified=True), #rev 11598: one of the mod related to dict iterators is questionable - # and questions whether how we implment them is meanigful in the + # and questions whether how we implement them is meaningful in the # long run 'test_ucn.py' : TestDecl(False, UTTestMainModule), From pedronis at codespeak.net Thu Apr 28 18:07:26 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 18:07:26 +0200 (CEST) Subject: [pypy-svn] r11603 - in pypy/dist/pypy/module: builtin test Message-ID: <20050428160726.1FBA827BD3@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 18:07:25 2005 New Revision: 11603 Modified: pypy/dist/pypy/module/builtin/app_inspect.py pypy/dist/pypy/module/test/test_builtin.py Log: fixing callable for oldstyle instances Modified: pypy/dist/pypy/module/builtin/app_inspect.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_inspect.py (original) +++ pypy/dist/pypy/module/builtin/app_inspect.py Thu Apr 28 18:07:25 2005 @@ -74,8 +74,11 @@ return False def callable(ob): + import __builtin__ for c in type(ob).__mro__: if '__call__' in c.__dict__: + if isinstance(ob, __builtin__._instance): # old style instance! + return getattr(ob, '__call__', None) is not None return True else: return False Modified: pypy/dist/pypy/module/test/test_builtin.py ============================================================================== --- pypy/dist/pypy/module/test/test_builtin.py (original) +++ pypy/dist/pypy/module/test/test_builtin.py Thu Apr 28 18:07:25 2005 @@ -289,10 +289,16 @@ class Call: def __call__(self, a): return a+2 - assert not not callable(Call()), ( + assert callable(Call()), ( "Builtin function 'callable' misreads callable object") assert callable(int), ( "Builtin function 'callable' misreads int") + class Call: + __metaclass__ = _classobj + def __call__(self, a): + return a+2 + assert callable(Call()) + def test_uncallable(self): # XXX TODO: I made the NoCall class explicitly newstyle to try and @@ -307,6 +313,9 @@ a.__call__ = lambda: "foo" assert not callable(a), ( "Builtin function 'callable' tricked by instance-__call__") + class NoCall: + __metaclass__ = _classobj + assert not callable(NoCall()) def test_hash(self): assert hash(23) == hash(23) From pedronis at codespeak.net Thu Apr 28 18:14:26 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 28 Apr 2005 18:14:26 +0200 (CEST) Subject: [pypy-svn] r11604 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050428161426.08B2027BD3@code1.codespeak.net> Author: pedronis Date: Thu Apr 28 18:14:25 2005 New Revision: 11604 Modified: pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt Log: passing builtin test with --oldstyle too Modified: pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt Thu Apr 28 18:14:25 2005 @@ -1,9 +1,10 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py +command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py run by: pedronis at ratthing-b246 sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:15:25 2005 -pypy-revision: 11549 +oldstyle: no +startdate: Thu Apr 28 18:08:12 2005 +pypy-revision: 11595 ============================================================ faking faking @@ -16,25 +17,9 @@ ret = "0x%lx" % x /u/pedronis/PyPy/dist/pypy/objspace/std/intobject.py:430: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up ret = "0%lo" % x -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py", line 1161 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py", line 1158 in test_main - test.test_support.run_unittest(BuiltinTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py", line 151, in test_callable - self.assert_(not callable(x)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError - test_abs (__main__.BuiltinTest) ... ok test_apply (__main__.BuiltinTest) ... ok -test_callable (__main__.BuiltinTest) ... FAIL +test_callable (__main__.BuiltinTest) ... ok test_chr (__main__.BuiltinTest) ... ok test_cmp (__main__.BuiltinTest) ... ok test_coerce (__main__.BuiltinTest) ... ok @@ -83,20 +68,10 @@ test_vars (__main__.BuiltinTest) ... ok test_zip (__main__.BuiltinTest) ... ok -====================================================================== -FAIL: test_callable (__main__.BuiltinTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py", line 151, in test_callable - self.assert_(not callable(x)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError - ---------------------------------------------------------------------- -Ran 50 tests in 293.222s +Ran 50 tests in 293.296s -FAILED (failures=1) +OK ========================== closed ========================== -execution time: 316.236166 seconds -exit status: 1 +execution time: 303.068670034 seconds +exit status: 0 From hpk at codespeak.net Thu Apr 28 18:57:51 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 28 Apr 2005 18:57:51 +0200 (CEST) Subject: [pypy-svn] r11605 - in pypy/dist/lib-python-2.3.4/test: . result Message-ID: <20050428165751.0877127BD3@code1.codespeak.net> Author: hpk Date: Thu Apr 28 18:57:50 2005 New Revision: 11605 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py pypy/dist/lib-python-2.3.4/test/result/test_base64.txt Log: - added cpu info if on a linux system - fixed detailled running mode Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Thu Apr 28 18:57:50 2005 @@ -79,6 +79,7 @@ import unittest from test import test_support + import sys def getmethods(suite_or_class): """ flatten out suites down to TestCase instances/methods. """ @@ -132,10 +133,14 @@ method() finally: method.tearDown() + + def set_argv(filename): + sys.argv[:] = ['python', filename] ''') collect_test_main = app.interphook('collect_test_main') run_testcase_method = app.interphook('run_testcase_method') +set_argv = app.interphook('set_argv') class OpErrorModule(py.test.collect.Module): # wraps some methods around a py.test Module in order @@ -204,28 +209,18 @@ else: return self.fspath # unmodified regrtest - def run_file(self, fspath): + def run_file(self): space = self.space if self.testdecl.oldstyle or pypy_option.oldstyle: space.enable_old_style_classes_as_default_metaclass() try: - run_file(str(fspath), space) + callex(space, run_file(str(self.getfspath()), space)) finally: if not pypy_option.oldstyle: space.enable_new_style_classes_as_default_metaclass() def run(self): - fspath = self.getfspath() - try: - self.run_file(fspath) - except OperationError, e: - space = self.space - if space and e.match(space, space.w_KeyboardInterrupt): - raise Keyboardinterrupt - appexcinfo = pytestsupport.AppExceptionInfo(space, e) - if appexcinfo.traceback: - raise self.Failed(excinfo=appexcinfo) - raise + self.run_file() class OutputTestItem(RunAppFileItem): """ Run a module file and compare its output @@ -326,9 +321,7 @@ def run(self): space = self.space filename = str(self.fspath) - w_argv = space.sys.get('argv') - space.setitem(w_argv, space.newslice(None, None, None), - space.newlist([space.wrap(filename)])) + callex(space, set_argv, space, space.wrap(filename)) callex(space, run_testcase_method, space, self.w_method) # ________________________________________________________________________ @@ -802,13 +795,21 @@ username = getpass.getuser() except: username = 'unknown' + print >> resultfile, "testreport-version: 1.0" print >> resultfile, "command:", cmd print >> resultfile, "run by: %s@%s" % (username, socket.gethostname()) print >> resultfile, "sys.platform:", sys.platform print >> resultfile, "sys.version_info:", sys.version_info + info = try_getcpuinfo() + if info is not None: + print >>resultfile, "cpu model:", info['model name'] + print >>resultfile, "cpu mhz:", info['cpu mhz'] + print >> resultfile, "oldstyle:", self.testdecl.oldstyle and 'yes' or 'no' - print >> resultfile, "startdate:", time.ctime() print >> resultfile, 'pypy-revision:', getrev(pypydir) + print >> resultfile, "startdate:", time.ctime() + + print >> resultfile if outputfilename: print >> resultfile, "OUTPUT TEST" print >> resultfile, "see output in:", str(outputfilename) @@ -849,3 +850,18 @@ if failure: time.sleep(0.5) # time for a Ctrl-C to reach us :-) py.test.fail(failure) + + +# +# +# +def try_getcpuinfo(): + if sys.platform.startswith('linux'): + cpuinfopath = py.path.local('/proc/cpuinfo') + d = {} + for line in cpuinfopath.readlines(): + if line.strip(): + name, value = line.split(':', 1) + name = name.strip().lower() + d[name] = value.strip() + return d Modified: pypy/dist/lib-python-2.3.4/test/result/test_base64.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_base64.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_base64.txt Thu Apr 28 18:57:50 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_base64.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_base64.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:57:00 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11604 +startdate: Thu Apr 28 19:51:14 2005 + ============================================================ faking faking @@ -14,9 +19,9 @@ test_encodestring (__main__.Base64TestCase) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 0.647s +Ran 2 tests in 1.330s OK ========================== closed ========================== -execution time: 9.76265597343 seconds +execution time: 9.35255098343 seconds exit status: 0 From hpk at codespeak.net Thu Apr 28 22:23:18 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 28 Apr 2005 22:23:18 +0200 (CEST) Subject: [pypy-svn] r11607 - pypy/dist/lib-python-2.3.4/test/result Message-ID: <20050428202318.0E43927BCC@code1.codespeak.net> Author: hpk Date: Thu Apr 28 22:23:18 2005 New Revision: 11607 Modified: pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt pypy/dist/lib-python-2.3.4/test/result/test_base64.txt pypy/dist/lib-python-2.3.4/test/result/test_binop.txt pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt pypy/dist/lib-python-2.3.4/test/result/test_call.txt pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt pypy/dist/lib-python-2.3.4/test/result/test_commands.txt pypy/dist/lib-python-2.3.4/test/result/test_compare.txt pypy/dist/lib-python-2.3.4/test/result/test_compile.txt pypy/dist/lib-python-2.3.4/test/result/test_copy.txt pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt pypy/dist/lib-python-2.3.4/test/result/test_dis.txt pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt pypy/dist/lib-python-2.3.4/test/result/test_future3.txt pypy/dist/lib-python-2.3.4/test/result/test_glob.txt pypy/dist/lib-python-2.3.4/test/result/test_hash.txt pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt pypy/dist/lib-python-2.3.4/test/result/test_long.txt pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt pypy/dist/lib-python-2.3.4/test/result/test_operator.txt pypy/dist/lib-python-2.3.4/test/result/test_os.txt pypy/dist/lib-python-2.3.4/test/result/test_parser.txt pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt pypy/dist/lib-python-2.3.4/test/result/test_posix.txt pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt pypy/dist/lib-python-2.3.4/test/result/test_pow.txt pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt pypy/dist/lib-python-2.3.4/test/result/test_profile.out pypy/dist/lib-python-2.3.4/test/result/test_profile.txt pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt pypy/dist/lib-python-2.3.4/test/result/test_sets.txt pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_sha.txt pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt pypy/dist/lib-python-2.3.4/test/result/test_string.txt pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt pypy/dist/lib-python-2.3.4/test/result/test_sys.txt pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt pypy/dist/lib-python-2.3.4/test/result/test_time.txt pypy/dist/lib-python-2.3.4/test/result/test_trace.txt pypy/dist/lib-python-2.3.4/test/result/test_types.txt pypy/dist/lib-python-2.3.4/test/result/test_unary.txt pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt Log: - re-running all enabled tests some tests pass that previously failed because this is a run with default == newstyle (the previous runs had default == oldstyle by accident) Modified: pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_StringIO.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_StringIO.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:18:10 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:10:51 2005 + ============================================================ faking faking @@ -38,9 +43,9 @@ test_writes (__main__.TestBuffercStringIO) ... ok ---------------------------------------------------------------------- -Ran 26 tests in 30.355s +Ran 26 tests in 14.696s OK ========================== closed ========================== -execution time: 43.2511920929 seconds +execution time: 32.1398749352 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_base64.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_base64.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_base64.txt Thu Apr 28 22:23:18 2005 @@ -6,8 +6,8 @@ cpu model: AMD Athlon(tm) Processor cpu mhz: 2134.402 oldstyle: no -pypy-revision: 11604 -startdate: Thu Apr 28 19:51:14 2005 +pypy-revision: 11605 +startdate: Thu Apr 28 20:05:26 2005 ============================================================ faking @@ -19,9 +19,9 @@ test_encodestring (__main__.Base64TestCase) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 1.330s +Ran 2 tests in 1.291s OK ========================== closed ========================== -execution time: 9.35255098343 seconds +execution time: 12.391712904 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_binop.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_binop.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_binop.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binop.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_binop.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:58:08 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:05:39 2005 + ============================================================ faking faking @@ -21,9 +26,9 @@ test_sub (__main__.RatTestCase) ... ok ---------------------------------------------------------------------- -Ran 9 tests in 13.950s +Ran 9 tests in 22.342s OK ========================== closed ========================== -execution time: 19.6783590317 seconds +execution time: 30.0572090149 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bisect.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_bisect.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:58:28 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:06:09 2005 + ============================================================ faking faking @@ -22,10 +27,10 @@ test_vsListSort (__main__.TestInsort) ... ok ---------------------------------------------------------------------- -Ran 6 tests in 107.855s +Ran 6 tests in 104.054s OK doctest (test.test_bisect) ... 14 tests with zero failures ========================== closed ========================== -execution time: 404.654814959 seconds +execution time: 203.219065189 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt Thu Apr 28 22:23:18 2005 @@ -1,10 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_builtin.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_builtin.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 oldstyle: no -startdate: Thu Apr 28 18:08:12 2005 -pypy-revision: 11595 +pypy-revision: 11605 +startdate: Thu Apr 28 20:09:32 2005 + ============================================================ faking faking @@ -13,9 +17,9 @@ faking faking faking -/u/pedronis/PyPy/dist/pypy/objspace/std/intobject.py:442: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up +/home/hpk/pypy-dist/pypy/objspace/std/intobject.py:442: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up ret = "0x%lx" % x -/u/pedronis/PyPy/dist/pypy/objspace/std/intobject.py:430: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up +/home/hpk/pypy-dist/pypy/objspace/std/intobject.py:430: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up ret = "0%lo" % x test_abs (__main__.BuiltinTest) ... ok test_apply (__main__.BuiltinTest) ... ok @@ -69,9 +73,9 @@ test_zip (__main__.BuiltinTest) ... ok ---------------------------------------------------------------------- -Ran 50 tests in 293.296s +Ran 50 tests in 480.231s OK ========================== closed ========================== -execution time: 303.068670034 seconds +execution time: 497.741446972 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_calendar.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_calendar.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:20:47 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:17:50 2005 + ============================================================ faking faking @@ -18,9 +23,9 @@ test_setfirstweekday (__main__.CalendarTestCase) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 28.342s +Ran 5 tests in 40.134s OK ========================== closed ========================== -execution time: 35.5092589855 seconds +execution time: 61.0287189484 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_call.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_call.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_call.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_call.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_call.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:21:23 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:18:51 2005 + ============================================================ faking faking @@ -39,9 +44,9 @@ test_varargs2_kw (__main__.CFunctionCalls) ... ok ---------------------------------------------------------------------- -Ran 27 tests in 6.015s +Ran 27 tests in 9.826s OK ========================== closed ========================== -execution time: 12.0413000584 seconds +execution time: 18.6441709995 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt Thu Apr 28 22:23:18 2005 @@ -1,68 +1,29 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_charmapcodec.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:25:12 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:19:10 2005 + ============================================================ faking faking faking faking faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 45 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 42 in test_main - test.test_support.run_unittest(CharmapCodecTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred in __main__.CharmapCodecTest -test_constructorx (__main__.CharmapCodecTest) ... ERROR -test_constructory (__main__.CharmapCodecTest) ... ERROR -test_encodex (__main__.CharmapCodecTest) ... ERROR -test_maptoundefined (__main__.CharmapCodecTest) ... ERROR - -====================================================================== -ERROR: test_constructorx (__main__.CharmapCodecTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 19, in test_constructorx - self.assertEquals(unicode('abc', codecname), u'abc') -LookupError: unknown encoding: test.testcodec - -====================================================================== -ERROR: test_constructory (__main__.CharmapCodecTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 33, in test_constructory - self.assertEquals(unicode('ydef', codecname), u'def') -LookupError: unknown encoding: test.testcodec - -====================================================================== -ERROR: test_encodex (__main__.CharmapCodecTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 26, in test_encodex - self.assertEquals(u'abc'.encode(codecname), 'abc') -LookupError: unknown encoding: test.testcodec - -====================================================================== -ERROR: test_maptoundefined (__main__.CharmapCodecTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_charmapcodec.py", line 39, in test_maptoundefined - self.assertRaises(UnicodeError, unicode, 'abc\001', codecname) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises - callableObj(*args, **kwargs) -LookupError: unknown encoding: test.testcodec +test_constructorx (__main__.CharmapCodecTest) ... ok +test_constructory (__main__.CharmapCodecTest) ... ok +test_encodex (__main__.CharmapCodecTest) ... ok +test_maptoundefined (__main__.CharmapCodecTest) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 2.636s +Ran 4 tests in 2.154s -FAILED (errors=4) +OK ========================== closed ========================== -execution time: 9.98971414566 seconds -exit status: 1 +execution time: 9.77231407166 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cmath.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_cmath.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:25:40 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:19:19 2005 + ============================================================ faking faking @@ -29,5 +34,5 @@ PI = 3.14159265358 E = 2.71828182845 ========================== closed ========================== -execution time: 13.1306848526 seconds +execution time: 19.7615480423 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_codeop.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_codeop.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:26:23 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:19:39 2005 + ============================================================ faking faking @@ -16,9 +21,9 @@ test_valid (__main__.CodeopTests) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 2.874s +Ran 4 tests in 4.787s OK ========================== closed ========================== -execution time: 8.81113386154 seconds +execution time: 12.7703418732 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_commands.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_commands.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_commands.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_commands.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_commands.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:36:51 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:19:53 2005 + ============================================================ faking faking @@ -18,9 +23,9 @@ test_getstatus (__main__.CommandTests) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 39.567s +Ran 2 tests in 7.524s OK ========================== closed ========================== -execution time: 47.484126091 seconds +execution time: 17.2003479004 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_compare.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_compare.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_compare.txt Thu Apr 28 22:23:18 2005 @@ -1,16 +1,21 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_compare.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py --oldstyle /home/hpk/pypy-dist/lib-python-2.3.4/test/test_compare.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:37:39 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: yes +pypy-revision: 11605 +startdate: Thu Apr 28 20:20:10 2005 + OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_compare.out +see output in: /home/hpk/pypy-dist/lib-python-2.3.4/test/result/test_compare.out ============================================================ faking faking faking OK ========================== closed ========================== -execution time: 80.4267160892 seconds +execution time: 129.927108049 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_compile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_compile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_compile.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_compile.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_compile.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:38:59 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:22:20 2005 + ============================================================ faking faking @@ -27,9 +32,9 @@ test_unary_minus (__main__.TestSpecifics) ... ok ---------------------------------------------------------------------- -Ran 11 tests in 13.062s +Ran 11 tests in 8.363s OK ========================== closed ========================== -execution time: 19.0551571846 seconds +execution time: 45.7873818874 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_copy.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_copy.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_copy.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_copy.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_copy.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:00:49 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:23:06 2005 + ============================================================ faking faking @@ -66,9 +71,9 @@ test_reduce_5tuple (__main__.TestCopy) ... ok ---------------------------------------------------------------------- -Ran 54 tests in 25.612s +Ran 54 tests in 28.907s OK ========================== closed ========================== -execution time: 32.3190760612 seconds +execution time: 38.0915360451 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_copy_reg.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_copy_reg.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:01:21 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:23:44 2005 + ============================================================ faking faking @@ -21,9 +26,9 @@ test_noncallable_reduce (__main__.CopyRegTestCase) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 3.032s +Ran 5 tests in 4.719s OK ========================== closed ========================== -execution time: 20.5545630455 seconds +execution time: 25.5751731396 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_datetime.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_datetime.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:16:55 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:24:09 2005 + ============================================================ faking faking @@ -18,28 +23,22 @@ faking ==========================timeout========================== Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_datetime.py", line 3113 in ? + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_datetime.py", line 3113 in ? test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_datetime.py", line 3096 in test_main + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_datetime.py", line 3096 in test_main test_support.run_suite(thesuite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 658 in run test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 389 in __call__ test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 229 in __call__ testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_datetime.py", line 570 in test_ordinal_conversions - self.assertEqual(d, d2) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 301 in failUnlessEqual - if not first == second: - File "/u/pedronis/PyPy/dist/pypy/lib/datetime.py", line 1634 in __eq__ - return self.__cmp(other) == 0 - File "/u/pedronis/PyPy/dist/pypy/lib/datetime.py", line 1681 in __cmp - assert isinstance(other, datetime) + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_datetime.py", line 565 in test_ordinal_conversions + self.assertEqual(d, d2) KeyboardInterrupt test_constants (__main__.TestModule) ... ok test_non_abstractness (__main__.TestTZInfo) ... ok @@ -120,5 +119,5 @@ test_more_strftime (__main__.TestDateTime) ... ok test_more_timetuple (__main__.TestDateTime) ... ok test_ordinal_conversions (__main__.TestDateTime) ... ========================== closed ========================== -execution time: 900.033421993 seconds +execution time: 904.02614212 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dircache.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_dircache.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:53:04 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:39:14 2005 + ============================================================ faking faking @@ -14,9 +19,9 @@ test_listdir (__main__.DircacheTests) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 1.804s +Ran 2 tests in 2.794s OK ========================== closed ========================== -execution time: 7.55877494812 seconds +execution time: 13.2859859467 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dis.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dis.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dis.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dis.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_dis.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:53:11 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:39:27 2005 + ============================================================ faking faking @@ -20,9 +25,9 @@ test_opname (__main__.DisTests) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 36.534s +Ran 5 tests in 9.770s OK ========================== closed ========================== -execution time: 43.7140760422 seconds +execution time: 19.4439890385 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_doctest2.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_doctest2.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:00:04 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:39:47 2005 + ============================================================ faking faking @@ -114,5 +119,5 @@ Test passed. doctest (test.test_doctest2) ... 19 tests with zero failures ========================== closed ========================== -execution time: 285.577181101 seconds +execution time: 91.4183619022 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dummy_thread.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_dummy_thread.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:12:20 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:41:18 2005 + ============================================================ faking faking @@ -11,7 +16,7 @@ faking faking -*** Using as _thread module *** +*** Using as _thread module *** test_cond_acquire_fail (__main__.LockTests) ... ok test_cond_acquire_success (__main__.LockTests) ... ok test_improper_release (__main__.LockTests) ... ok @@ -35,9 +40,9 @@ ok ---------------------------------------------------------------------- -Ran 15 tests in 5.786s +Ran 15 tests in 6.778s OK ========================== closed ========================== -execution time: 20.2266039848 seconds +execution time: 18.1124308109 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fnmatch.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_fnmatch.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:32:38 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:41:36 2005 + ============================================================ faking faking @@ -17,9 +22,9 @@ test_fnmatch (__main__.FnmatchTestCase) ... ok ---------------------------------------------------------------------- -Ran 1 test in 24.904s +Ran 1 test in 10.575s OK ========================== closed ========================== -execution time: 33.4621779919 seconds +execution time: 19.2948019505 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fpformat.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_fpformat.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:35:06 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:41:56 2005 + ============================================================ faking faking @@ -19,9 +24,9 @@ test_reasonable_values (__main__.FpformatTest) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 129.490s +Ran 3 tests in 206.369s OK ========================== closed ========================== -execution time: 152.666088104 seconds +execution time: 218.382091999 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_future3.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_future3.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_future3.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_future3.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_future3.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:38:07 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:45:34 2005 + ============================================================ faking faking @@ -15,9 +20,9 @@ test_true_div_as_default (__main__.TestFuture) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 0.685s +Ran 3 tests in 1.301s OK ========================== closed ========================== -execution time: 6.43897008896 seconds +execution time: 14.6286120415 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_glob.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_glob.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_glob.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_glob.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_glob.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:59:29 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:45:49 2005 + ============================================================ faking faking @@ -20,9 +25,9 @@ test_glob_one_directory (__main__.GlobTests) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 31.023s +Ran 4 tests in 20.096s OK ========================== closed ========================== -execution time: 44.2822029591 seconds +execution time: 31.215569973 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_hash.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_hash.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_hash.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hash.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_hash.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:00:47 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:46:20 2005 + ============================================================ faking faking @@ -15,9 +20,9 @@ test_numeric_literals (__main__.HashEqualityTestCase) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 0.871s +Ran 3 tests in 1.526s OK ========================== closed ========================== -execution time: 7.48015403748 seconds +execution time: 11.7051789761 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_heapq.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_heapq.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:00:55 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:46:32 2005 + ============================================================ faking faking @@ -12,5 +17,5 @@ faking All OK ========================== closed ========================== -execution time: 383.960414171 seconds +execution time: 382.338042974 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hexoct.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_hexoct.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:07:19 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:52:54 2005 + ============================================================ faking faking @@ -30,9 +35,9 @@ test_oct_unsigned (__main__.TextHexOct) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 0.954s +Ran 4 tests in 1.857s OK ========================== closed ========================== -execution time: 15.7908778191 seconds +execution time: 16.4112038612 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:07:35 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:53:11 2005 + ============================================================ faking faking @@ -11,20 +16,20 @@ faking faking Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 167 in ? + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 167 in ? test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 163 in test_main + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 163 in test_main CopyTestCase - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors "9294727A3638BB1C13F48EF8158BFC9D") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test self.assertEqual(h.hexdigest().upper(), digest.upper()) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ AssertionError: '000000000000000000000000E71DFA9D' != '9294727A3638BB1C13F48EF8158BFC9D' @@ -43,18 +48,18 @@ FAIL: test_md5_vectors (__main__.TestVectorsTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors "9294727A3638BB1C13F48EF8158BFC9D") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test self.assertEqual(h.hexdigest().upper(), digest.upper()) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual raise self.failureException, \ AssertionError: '000000000000000000000000E71DFA9D' != '9294727A3638BB1C13F48EF8158BFC9D' ---------------------------------------------------------------------- -Ran 10 tests in 130.733s +Ran 10 tests in 167.282s FAILED (failures=1) ========================== closed ========================== -execution time: 141.457495928 seconds +execution time: 182.006867886 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmllib.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_htmllib.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:10:04 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:56:13 2005 + ============================================================ faking faking @@ -18,9 +23,9 @@ test_decl_collection (__main__.HTMLParserTestCase) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 8.538s +Ran 2 tests in 2.094s OK ========================== closed ========================== -execution time: 129.793881178 seconds +execution time: 63.9509100914 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_htmlparser.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:12:14 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 20:57:19 2005 + ============================================================ faking faking @@ -14,29 +19,6 @@ faking faking faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py", line 301 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py", line 297 in test_main - test_support.run_unittest(HTMLParserTestCase) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py", line 104 in test_processing_instruction_only - self._run_check("", [ - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_htmlparser.py", line 79 in _run_check - parser.feed(s) -KeyboardInterrupt test_attr_entity_replacement (__main__.HTMLParserTestCase) ... ok test_attr_funky_names (__main__.HTMLParserTestCase) ... ok test_attr_syntax (__main__.HTMLParserTestCase) ... ok @@ -50,6 +32,17 @@ test_doctype_decl (__main__.HTMLParserTestCase) ... ok test_get_starttag_text (__main__.HTMLParserTestCase) ... ok test_illegal_declarations (__main__.HTMLParserTestCase) ... ok -test_processing_instruction_only (__main__.HTMLParserTestCase) ... ========================== closed ========================== -execution time: 901.847540855 seconds -exit status: 1 +test_processing_instruction_only (__main__.HTMLParserTestCase) ... ok +test_simple_html (__main__.HTMLParserTestCase) ... ok +test_startendtag (__main__.HTMLParserTestCase) ... ok +test_starttag_end_boundary (__main__.HTMLParserTestCase) ... ok +test_starttag_junk_chars (__main__.HTMLParserTestCase) ... ok +test_unclosed_entityref (__main__.HTMLParserTestCase) ... ok + +---------------------------------------------------------------------- +Ran 19 tests in 282.261s + +OK +========================== closed ========================== +execution time: 336.537530899 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:34:26 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:02:55 2005 + ============================================================ faking faking @@ -11,13 +16,13 @@ faking faking Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py", line 278 in ? + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py", line 278 in ? test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py", line 273 in test_main + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py", line 273 in test_main TestIsInstanceIsSubclass - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite raise TestFailed(msg) TestFailed: errors occurred; run in verbose mode for details test_bases_raises_other_than_attribute_error (__main__.TestIsInstanceExceptions) ... ok @@ -40,9 +45,9 @@ FAIL: test_isinstance_recursion_limit (__main__.TestIsInstanceIsSubclass) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py", line 256, in test_isinstance_recursion_limit + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py", line 256, in test_isinstance_recursion_limit self.assertRaises(RuntimeError, blowstack, isinstance, '', str) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises raise self.failureException, excName AssertionError: RuntimeError @@ -50,16 +55,16 @@ FAIL: test_subclass_recursion_limit (__main__.TestIsInstanceIsSubclass) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py", line 251, in test_subclass_recursion_limit + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py", line 251, in test_subclass_recursion_limit self.assertRaises(RuntimeError, blowstack, issubclass, str, str) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises raise self.failureException, excName AssertionError: RuntimeError ---------------------------------------------------------------------- -Ran 15 tests in 12.244s +Ran 15 tests in 18.782s FAILED (failures=2) ========================== closed ========================== -execution time: 21.7371780872 seconds +execution time: 36.8320848942 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt Thu Apr 28 22:23:18 2005 @@ -1,36 +1,24 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/pypy/lib/test2/test_itertools.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/pypy/lib/test2/test_itertools.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:36:33 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:03:33 2005 + ============================================================ faking faking faking faking faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/pypy/lib/test2/test_itertools.py", line 654 in ? - test_main(verbose=True) - File "/u/pedronis/PyPy/dist/pypy/lib/test2/test_itertools.py", line 638 in test_main - test_support.run_unittest(*test_classes) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/pypy/lib/test2/test_itertools.py", line 406 in test_starmap - self.assertEqual(list(starmap(operator.pow, g(ss))), map(operator.pow, g(s), g(s))) -KeyboardInterrupt +faking +faking +faking +faking test_StopIteration (__main__.TestBasicOps) ... ok test_chain (__main__.TestBasicOps) ... ok test_count (__main__.TestBasicOps) ... ok @@ -52,6 +40,24 @@ test_imap (__main__.TestVariousIteratorArgs) ... ok test_islice (__main__.TestVariousIteratorArgs) ... ok test_izip (__main__.TestVariousIteratorArgs) ... ok -test_starmap (__main__.TestVariousIteratorArgs) ... ========================== closed ========================== -execution time: 900.903362989 seconds -exit status: 1 +test_starmap (__main__.TestVariousIteratorArgs) ... ok +test_takewhile (__main__.TestVariousIteratorArgs) ... ok +test_chain (__main__.TestGC) ... ok +test_cycle (__main__.TestGC) ... ok +test_ifilter (__main__.TestGC) ... ok +test_ifilterfalse (__main__.TestGC) ... ok +test_imap (__main__.TestGC) ... ok +test_islice (__main__.TestGC) ... ok +test_izip (__main__.TestGC) ... ok +test_starmap (__main__.TestGC) ... ok +test_sf_793826 (__main__.RegressionTests) ... ok +test_sf_950057 (__main__.RegressionTests) ... ok + +---------------------------------------------------------------------- +Ran 33 tests in 256.648s + +OK +doctest (__main__) ... 35 tests with zero failures +========================== closed ========================== +execution time: 386.108942032 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_long.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_long.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_long.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_long.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:52:20 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:09:59 2005 + ============================================================ faking faking @@ -12,14 +17,14 @@ faking ==========================timeout========================== Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long.py", line 436 in ? + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_long.py", line 436 in ? test_division() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long.py", line 100 in test_division + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_long.py", line 100 in test_division y = getran(leny) or 1L - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long.py", line 59 in getran - r = int(random() * (SHIFT * 2)) + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_long.py", line 50 in getran + r = int(random() * (SHIFT * 2)) | 1 # force 1 bits to start KeyboardInterrupt long / * % divmod ========================== closed ========================== -execution time: 900.978562117 seconds +execution time: 902.377927065 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mailbox.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_mailbox.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:07:58 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:25:02 2005 + ============================================================ faking faking @@ -16,9 +21,9 @@ test_nonempty_maildir_new (__main__.MaildirTestCase) ... ok ---------------------------------------------------------------------- -Ran 4 tests in 9.863s +Ran 4 tests in 3.131s OK ========================== closed ========================== -execution time: 16.7193570137 seconds +execution time: 19.8124909401 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mhlib.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_mhlib.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:21:37 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:25:21 2005 + ============================================================ faking faking @@ -21,9 +26,9 @@ test_sequence (__main__.MhlibTests) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 454.479s +Ran 5 tests in 644.741s OK ========================== closed ========================== -execution time: 466.838415861 seconds +execution time: 657.055916071 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mimetools.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_mimetools.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:29:24 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:36:19 2005 + ============================================================ faking faking @@ -18,9 +23,9 @@ test_message (__main__.MimeToolsTest) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 52.793s +Ran 3 tests in 56.622s OK ========================== closed ========================== -execution time: 62.6498670578 seconds +execution time: 65.6861732006 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mimetypes.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_mimetypes.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:30:27 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:37:24 2005 + ============================================================ faking faking @@ -24,9 +29,9 @@ test_non_standard_types (__main__.MimeTypesTestCase) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 31.935s +Ran 5 tests in 14.173s OK ========================== closed ========================== -execution time: 42.8693101406 seconds +execution time: 28.6301989555 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_multifile.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_multifile.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:32:06 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:37:53 2005 + ============================================================ faking faking @@ -11,5 +16,5 @@ faking faking ========================== closed ========================== -execution time: 19.7668139935 seconds +execution time: 8.31684589386 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_netrc.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_netrc.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:30:22 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:38:01 2005 + ============================================================ faking faking @@ -13,9 +18,9 @@ test_case_1 (__main__.NetrcTestCase) ... ok ---------------------------------------------------------------------- -Ran 1 test in 12.436s +Ran 1 test in 2.597s OK ========================== closed ========================== -execution time: 18.8283009529 seconds +execution time: 10.0679290295 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_operator.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_operator.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_operator.txt Thu Apr 28 22:23:18 2005 @@ -1,33 +1,20 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_operator.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:31:21 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:38:11 2005 + ============================================================ faking faking faking faking faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 235 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 231 in test_main - test_support.run_unittest(OperatorTestCase) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 116, in test_isCallable - check(self, C(), 0) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 112, in check - self.assert_(operator.isCallable(o) == callable(o) == v) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError - test_abs (__main__.OperatorTestCase) ... ok test_add (__main__.OperatorTestCase) ... ok test_bitwise_and (__main__.OperatorTestCase) ... ok @@ -48,7 +35,7 @@ test_indexOf (__main__.OperatorTestCase) ... ok test_invert (__main__.OperatorTestCase) ... ok test_is (__main__.OperatorTestCase) ... ok -test_isCallable (__main__.OperatorTestCase) ... FAIL +test_isCallable (__main__.OperatorTestCase) ... ok test_isMappingType (__main__.OperatorTestCase) ... ok test_isNumberType (__main__.OperatorTestCase) ... ok test_isSequenceType (__main__.OperatorTestCase) ... ok @@ -70,22 +57,10 @@ test_truediv (__main__.OperatorTestCase) ... ok test_truth (__main__.OperatorTestCase) ... ok -====================================================================== -FAIL: test_isCallable (__main__.OperatorTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 116, in test_isCallable - check(self, C(), 0) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operator.py", line 112, in check - self.assert_(operator.isCallable(o) == callable(o) == v) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError - ---------------------------------------------------------------------- -Ran 41 tests in 10.831s +Ran 41 tests in 15.735s -FAILED (failures=1) +OK ========================== closed ========================== -execution time: 17.710351944 seconds -exit status: 1 +execution time: 24.1210589409 seconds +exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_os.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_os.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_os.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_os.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_os.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:32:17 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:38:35 2005 + ============================================================ faking faking @@ -12,9 +17,9 @@ faking faking faking -/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program +/home/hpk/pypy-dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program result = apply(fn, self.unwrappedargs, self.unwrappedkwds) -/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program +/home/hpk/pypy-dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program result = apply(fn, self.unwrappedargs, self.unwrappedkwds) test_tempnam (__main__.TemporaryFileTests) ... ok test_tmpfile (__main__.TemporaryFileTests) ... ok @@ -26,9 +31,9 @@ test_traversal (__main__.WalkTests) ... ok ---------------------------------------------------------------------- -Ran 8 tests in 15.158s +Ran 8 tests in 7.715s OK ========================== closed ========================== -execution time: 32.4310340881 seconds +execution time: 23.6628520489 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_parser.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_parser.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_parser.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:32:54 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:38:59 2005 + ============================================================ faking faking @@ -13,6 +18,16 @@ faking faking faking +Traceback (application-level): + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 384 in ? + test_main() + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 379 in test_main + IllegalSyntaxTestCase + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + run_suite(suite, testclass) + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite + raise TestFailed(msg) +TestFailed: errors occurred; run in verbose mode for details test_assert (__main__.RoundtripLegalSyntaxTestCase) ... ERROR test_basic_import_statement (__main__.RoundtripLegalSyntaxTestCase) ... ERROR test_expressions (__main__.RoundtripLegalSyntaxTestCase) ... ERROR @@ -36,11 +51,11 @@ ERROR: test_assert (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 142, in test_assert + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 142, in test_assert self.check_suite("assert alo < ahi and blo < bhi\n") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -48,11 +63,11 @@ ERROR: test_basic_import_statement (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 131, in test_basic_import_statement + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 131, in test_basic_import_statement self.check_suite("import sys") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -60,11 +75,11 @@ ERROR: test_expressions (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 39, in test_expressions + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 39, in test_expressions self.check_expr("foo(1)") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 25, in check_expr + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 25, in check_expr self.roundtrip(parser.expr, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -72,11 +87,11 @@ ERROR: test_function_defs (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 102, in test_function_defs + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 102, in test_function_defs self.check_suite("def f(): pass") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -84,11 +99,11 @@ ERROR: test_import_from_statement (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 121, in test_import_from_statement + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 121, in test_import_from_statement self.check_suite("from sys.path import *") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -96,11 +111,11 @@ ERROR: test_pep263 (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 138, in test_pep263 + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 138, in test_pep263 self.check_suite("# -*- coding: iso-8859-1 -*-\n" - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -108,11 +123,11 @@ ERROR: test_print (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 72, in test_print + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 72, in test_print self.check_suite("print") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -120,11 +135,11 @@ ERROR: test_simple_assignments (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 84, in test_simple_assignments + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 84, in test_simple_assignments self.check_suite("a = b") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -132,11 +147,11 @@ ERROR: test_simple_augmented_assignments (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 88, in test_simple_augmented_assignments + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 88, in test_simple_augmented_assignments self.check_suite("a += b") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -144,33 +159,23 @@ ERROR: test_simple_expression (__main__.RoundtripLegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 81, in test_simple_expression + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 81, in test_simple_expression self.check_suite("a") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' ====================================================================== ERROR: test_yield_statement (__main__.RoundtripLegalSyntaxTestCase) -------Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 384 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 379 in test_main - IllegalSyntaxTestCase - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred; run in verbose mode for details ----------------------------------------------------------------- +---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 31, in test_yield_statement + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 31, in test_yield_statement self.check_suite("def f(): yield 1") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite self.roundtrip(parser.suite, s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip t = st1.totuple() AttributeError: 'st' object has no attribute 'totuple' @@ -178,7 +183,7 @@ ERROR: test_a_comma_comma_c (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 330, in test_a_comma_comma_c + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 330, in test_a_comma_comma_c self.check_bad_tree(tree, "a,,c") TypeError: instance exception may not have a separate value @@ -186,7 +191,7 @@ ERROR: test_illegal_operator (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 363, in test_illegal_operator + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 363, in test_illegal_operator self.check_bad_tree(tree, "a $= b") TypeError: instance exception may not have a separate value @@ -194,7 +199,7 @@ ERROR: test_illegal_yield_1 (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 216, in test_illegal_yield_1 + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 216, in test_illegal_yield_1 self.check_bad_tree(tree, "def f():\n return 1\n yield 1") TypeError: instance exception may not have a separate value @@ -202,7 +207,7 @@ ERROR: test_illegal_yield_2 (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 280, in test_illegal_yield_2 + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 280, in test_illegal_yield_2 self.check_bad_tree(tree, "def f():\n return 1\n yield 1") TypeError: instance exception may not have a separate value @@ -210,7 +215,7 @@ ERROR: test_junk (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 161, in test_junk + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 161, in test_junk self.check_bad_tree((1, 2, 3), "") TypeError: instance exception may not have a separate value @@ -218,7 +223,7 @@ ERROR: test_malformed_global (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 374, in test_malformed_global + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 374, in test_malformed_global self.check_bad_tree(tree, "malformed global ast") TypeError: instance exception may not have a separate value @@ -226,14 +231,14 @@ ERROR: test_print_chevron_comma (__main__.IllegalSyntaxTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_parser.py", line 303, in test_print_chevron_comma + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 303, in test_print_chevron_comma self.check_bad_tree(tree, "print >>fp,") TypeError: instance exception may not have a separate value ---------------------------------------------------------------------- -Ran 18 tests in 16.099s +Ran 18 tests in 24.877s FAILED (errors=18) ========================== closed ========================== -execution time: 30.3473911285 seconds +execution time: 44.0624110699 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:57:07 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:39:44 2005 + ============================================================ faking faking @@ -11,18 +16,18 @@ faking faking Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py", line 83 in ? + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py", line 83 in ? test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py", line 79 in test_main + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py", line 79 in test_main run_unittest(TestImport) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite raise TestFailed(err) TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics self.assert_(not sys.modules.has_key(self.module_name) and - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError @@ -32,16 +37,16 @@ FAIL: test_package_import__semantics (__main__.TestImport) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics + File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics self.assert_(not sys.modules.has_key(self.module_name) and - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless + File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 278, in failUnless if not expr: raise self.failureException, msg AssertionError ---------------------------------------------------------------------- -Ran 1 test in 2.738s +Ran 1 test in 2.262s FAILED (failures=1) ========================== closed ========================== -execution time: 9.64418315887 seconds +execution time: 10.8054561615 seconds exit status: 1 Modified: pypy/dist/lib-python-2.3.4/test/result/test_posix.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_posix.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_posix.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_posix.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_posix.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:58:18 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:39:55 2005 + ============================================================ faking faking @@ -12,9 +17,9 @@ faking faking faking -/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program +/home/hpk/pypy-dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program result = apply(fn, self.unwrappedargs, self.unwrappedkwds) -/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program +/home/hpk/pypy-dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program result = apply(fn, self.unwrappedargs, self.unwrappedkwds) testNoArgFunctions (__main__.PosixTester) ... ok test_access (__main__.PosixTester) ... ok @@ -36,9 +41,9 @@ test_utime (__main__.PosixTester) ... ok ---------------------------------------------------------------------- -Ran 18 tests in 5.236s +Ran 18 tests in 6.943s OK ========================== closed ========================== -execution time: 19.8876509666 seconds +execution time: 17.5544378757 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_posixpath.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_posixpath.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:58:38 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:40:12 2005 + ============================================================ faking faking @@ -38,9 +43,9 @@ test_time (__main__.PosixPathTest) ... ok ---------------------------------------------------------------------- -Ran 22 tests in 16.715s +Ran 22 tests in 13.988s OK ========================== closed ========================== -execution time: 22.6635370255 seconds +execution time: 21.7480809689 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pow.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pow.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pow.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pow.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_pow.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:59:01 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:40:34 2005 + ============================================================ faking faking @@ -18,9 +23,9 @@ test_powlong (__main__.PowTest) ... ok ---------------------------------------------------------------------- -Ran 6 tests in 436.506s +Ran 6 tests in 682.102s OK ========================== closed ========================== -execution time: 442.172743797 seconds +execution time: 689.412278891 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pprint.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_pprint.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:06:23 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:52:04 2005 + ============================================================ faking faking @@ -18,9 +23,9 @@ test_unreadable (__main__.QueryTestCase) ... ok ---------------------------------------------------------------------- -Ran 6 tests in 89.198s +Ran 6 tests in 109.304s OK ========================== closed ========================== -execution time: 95.3246901035 seconds +execution time: 116.874181986 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_profile.out ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_profile.out (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_profile.out Thu Apr 28 22:23:18 2005 @@ -1,5 +1,5 @@ test_profile - 53 function calls in 0.999 CPU seconds + 53 function calls in 1.000 CPU seconds Ordered by: standard name Modified: pypy/dist/lib-python-2.3.4/test/result/test_profile.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_profile.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_profile.txt Thu Apr 28 22:23:18 2005 @@ -1,11 +1,16 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_profile.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_profile.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:07:58 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:54:01 2005 + OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_profile.out +see output in: /home/hpk/pypy-dist/lib-python-2.3.4/test/result/test_profile.out ============================================================ faking faking @@ -16,5 +21,5 @@ faking FAILED: test output differs ========================== closed ========================== -execution time: 37.9071319103 seconds +execution time: 29.7527279854 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_profilehooks.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_profilehooks.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:08:37 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:54:31 2005 + ============================================================ faking faking @@ -29,9 +34,9 @@ test_simple (__main__.ProfileSimulatorTestCase) ... ok ---------------------------------------------------------------------- -Ran 17 tests in 13.247s +Ran 17 tests in 9.933s OK ========================== closed ========================== -execution time: 21.3004338741 seconds +execution time: 20.6761231422 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rfc822.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_rfc822.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:40:52 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:54:51 2005 + ============================================================ faking faking @@ -24,9 +29,9 @@ test_twisted (__main__.MessageTestCase) ... ok ---------------------------------------------------------------------- -Ran 12 tests in 150.885s +Ran 12 tests in 27.441s OK ========================== closed ========================== -execution time: 157.554761171 seconds +execution time: 35.267731905 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_robotparser.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_robotparser.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:45:54 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:55:27 2005 + ============================================================ faking faking @@ -49,9 +54,9 @@ RobotTest(7, good, /foo.html) ... ok ---------------------------------------------------------------------- -Ran 34 tests in 15.824s +Ran 34 tests in 14.374s OK ========================== closed ========================== -execution time: 43.0967400074 seconds +execution time: 39.267277956 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sets.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sets.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sets.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sets.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_sets.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:02:22 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 21:56:06 2005 + ============================================================ faking faking @@ -242,10 +247,10 @@ test_summations (__main__.TestIdentities) ... ok ---------------------------------------------------------------------- -Ran 225 tests in 142.568s +Ran 225 tests in 115.187s OK doctest (test.test_sets) ... 14 tests with zero failures ========================== closed ========================== -execution time: 582.504189968 seconds +execution time: 394.171689987 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sgmllib.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_sgmllib.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:12:04 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:02:40 2005 + ============================================================ faking faking @@ -35,9 +40,9 @@ Handling of XHTML-style empty start tags ... ok ---------------------------------------------------------------------- -Ran 19 tests in 259.441s +Ran 19 tests in 44.597s OK ========================== closed ========================== -execution time: 369.886216879 seconds +execution time: 86.2246849537 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sha.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sha.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sha.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/pypy/lib/test2/test_sha.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/pypy/lib/test2/test_sha.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:18:14 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:04:06 2005 + ============================================================ faking faking @@ -14,9 +19,9 @@ test_case_2 (__main__.SHATestCase) ... ok ---------------------------------------------------------------------- -Ran 2 tests in 9.152s +Ran 2 tests in 11.396s OK ========================== closed ========================== -execution time: 15.4205079079 seconds +execution time: 19.0084838867 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_shelve.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_shelve.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:18:30 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:04:25 2005 + ============================================================ faking faking @@ -34,9 +39,9 @@ test_proto2_file_shelf (__main__.TestCase) ... ok ---------------------------------------------------------------------- -Ran 17 tests in 331.441s +Ran 17 tests in 186.651s OK ========================== closed ========================== -execution time: 362.125012159 seconds +execution time: 229.252748013 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_shlex.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_shlex.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:24:33 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:08:15 2005 + ============================================================ faking faking @@ -14,9 +19,9 @@ Test data splitting with posix parser ... ok ---------------------------------------------------------------------- -Ran 2 tests in 432.432s +Ran 2 tests in 105.531s OK ========================== closed ========================== -execution time: 438.691277981 seconds +execution time: 112.971960068 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_shutil.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_shutil.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:31:51 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:10:08 2005 + ============================================================ faking faking @@ -13,9 +18,9 @@ test_rmtree_errors (__main__.TestShutil) ... ok ---------------------------------------------------------------------- -Ran 1 test in 2.067s +Ran 1 test in 1.158s OK ========================== closed ========================== -execution time: 8.71469092369 seconds +execution time: 8.8846039772 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_string.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_string.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_string.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_string.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_string.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:17:45 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:10:17 2005 + ============================================================ faking faking @@ -38,9 +43,9 @@ test_maketrans (__main__.ModuleTest) ... ok ---------------------------------------------------------------------- -Ran 26 tests in 16.790s +Ran 26 tests in 23.335s OK ========================== closed ========================== -execution time: 25.6396739483 seconds +execution time: 34.5350129604 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_syntax.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_syntax.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:37:18 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:11:23 2005 + ============================================================ faking faking @@ -19,9 +24,9 @@ test_global_err_then_warn (__main__.SyntaxTestCase) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 11.143s +Ran 3 tests in 3.774s OK ========================== closed ========================== -execution time: 18.3976719379 seconds +execution time: 12.2583858967 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_sys.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_sys.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_sys.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sys.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_sys.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:37:37 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:11:35 2005 + ============================================================ faking faking @@ -26,9 +31,9 @@ test_setcheckinterval (__main__.SysModuleTest) ... ok ---------------------------------------------------------------------- -Ran 14 tests in 5.058s +Ran 14 tests in 6.282s OK ========================== closed ========================== -execution time: 11.6134719849 seconds +execution time: 13.919118166 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_textwrap.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_textwrap.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:43:11 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:11:49 2005 + ============================================================ faking faking @@ -38,9 +43,9 @@ test_dedent_uneven (__main__.DedentTestCase) ... ok ---------------------------------------------------------------------- -Ran 22 tests in 88.819s +Ran 22 tests in 102.097s OK ========================== closed ========================== -execution time: 121.529804945 seconds +execution time: 123.550081015 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_time.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_time.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_time.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_time.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_time.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:45:28 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:13:53 2005 + ============================================================ faking faking @@ -21,9 +26,9 @@ test_tzset (__main__.TimeTestCase) ... ok ---------------------------------------------------------------------- -Ran 8 tests in 3.394s +Ran 8 tests in 4.455s OK ========================== closed ========================== -execution time: 9.14596509933 seconds +execution time: 11.8618779182 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_trace.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_trace.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_trace.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_trace.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_trace.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:53:28 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:14:05 2005 + ============================================================ faking faking @@ -48,9 +53,9 @@ test_19_no_jump_without_trace_function (__main__.JumpTestCase) ... ok ---------------------------------------------------------------------- -Ran 33 tests in 22.022s +Ran 33 tests in 22.315s OK ========================== closed ========================== -execution time: 39.4037489891 seconds +execution time: 35.3537540436 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_types.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_types.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_types.txt Thu Apr 28 22:23:18 2005 @@ -1,12 +1,16 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py /u/pedronis/PyPy/dist/pypy/lib/test2/test_types.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/pypy/lib/test2/test_types.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 oldstyle: no -startdate: Thu Apr 28 17:21:16 2005 -pypy-revision: 11595 +pypy-revision: 11605 +startdate: Thu Apr 28 22:14:40 2005 + OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_types.out +see output in: /home/hpk/pypy-dist/lib-python-2.3.4/test/result/test_types.out ============================================================ faking faking @@ -15,5 +19,5 @@ faking OK ========================== closed ========================== -execution time: 212.364502907 seconds +execution time: 328.119639158 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_unary.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_unary.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_unary.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unary.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_unary.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:09:30 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:20:08 2005 + ============================================================ faking faking @@ -18,9 +23,9 @@ test_positive (__main__.UnaryOpTestCase) ... ok ---------------------------------------------------------------------- -Ran 6 tests in 2.198s +Ran 6 tests in 2.652s OK ========================== closed ========================== -execution time: 9.84963107109 seconds +execution time: 9.99253201485 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_univnewlines.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_univnewlines.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:39:50 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:20:18 2005 + ============================================================ faking faking @@ -37,9 +42,9 @@ test_seek (__main__.TestMixedNewlines) ... ok ---------------------------------------------------------------------- -Ran 25 tests in 7.485s +Ran 25 tests in 9.770s OK ========================== closed ========================== -execution time: 20.885365963 seconds +execution time: 27.8694770336 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllib.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_urllib.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:40:16 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:20:46 2005 + ============================================================ faking faking @@ -46,9 +51,9 @@ test_quoting (__main__.Pathname_Tests) ... ok ---------------------------------------------------------------------- -Ran 26 tests in 184.136s +Ran 26 tests in 179.457s OK ========================== closed ========================== -execution time: 201.134269953 seconds +execution time: 201.598355055 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urlparse.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_urlparse.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:51:37 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:24:08 2005 + ============================================================ faking faking @@ -17,9 +22,9 @@ test_urldefrag (__main__.UrlParseTestCase) ... ok ---------------------------------------------------------------------- -Ran 5 tests in 8.444s +Ran 5 tests in 13.088s OK ========================== closed ========================== -execution time: 14.2433149815 seconds +execution time: 20.4439439774 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userdict.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_userdict.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:51:51 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:24:28 2005 + ============================================================ faking faking @@ -20,9 +25,9 @@ test_write (__main__.UserDictMixinTest) ... ok ---------------------------------------------------------------------- -Ran 8 tests in 51.954s +Ran 8 tests in 11.563s OK ========================== closed ========================== -execution time: 63.4154179096 seconds +execution time: 24.07132411 seconds exit status: 0 Modified: pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt Thu Apr 28 22:23:18 2005 @@ -1,9 +1,14 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_warnings.py -run by: pedronis at ratthing-b246 +testreport-version: 1.0 +command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_warnings.py +run by: hpk at central.merlinux.de sys.platform: linux2 sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:09:42 2005 -pypy-revision: 11549 +cpu model: AMD Athlon(tm) Processor +cpu mhz: 2134.402 +oldstyle: no +pypy-revision: 11605 +startdate: Thu Apr 28 22:24:52 2005 + ============================================================ faking faking @@ -19,9 +24,9 @@ test_warn_specific_category (__main__.TestModule) ... ok ---------------------------------------------------------------------- -Ran 3 tests in 8.684s +Ran 3 tests in 5.866s OK ========================== closed ========================== -execution time: 14.5311660767 seconds +execution time: 13.1912460327 seconds exit status: 0 From cfbolz at codespeak.net Thu Apr 28 22:42:36 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Thu, 28 Apr 2005 22:42:36 +0200 (CEST) Subject: [pypy-svn] r11608 - pypy/dist/pypy/module/builtin Message-ID: <20050428204236.2B0E627BCC@code1.codespeak.net> Author: cfbolz Date: Thu Apr 28 22:42:35 2005 New Revision: 11608 Modified: pypy/dist/pypy/module/builtin/app_complex.py Log: Somewhat messy fix of app_complex to make test_complex pass (although it may still timeout). Modified: pypy/dist/pypy/module/builtin/app_complex.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_complex.py (original) +++ pypy/dist/pypy/module/builtin/app_complex.py Thu Apr 28 22:42:35 2005 @@ -15,8 +15,10 @@ # XXX this class is not well tested - # provide __new__to prevend the default which has no parameters + # provide __new__to prevent the default which has no parameters def __new__(typ, real=0.0, imag=None): + if real.__class__ == complex and imag is None: + return real ret = object.__new__(typ) ret._init(real, imag) return ret @@ -29,7 +31,7 @@ getattr(self, '__dict__', None)) def _init(self, real=0.0, imag=None): - if isinstance(real, str): + if isinstance(real, (str, unicode)): if imag is not None: msg = "complex() can't take second arg if first is a string" raise TypeError, msg @@ -38,31 +40,69 @@ re = real.real im = real.imag else: - re = float(real) - im = 0.0 + if hasattr(real, "__complex__"): + co = real.__complex__() + if not isinstance(co, complex): + raise TypeError, "complex() argument must be a string or a number" + re = co.real + im = co.imag + else: + try: + re = float(real) + except ValueError: + raise ValueError, "complex() argument must be a string or a number" + im = 0.0 - if isinstance(imag, str): + if isinstance(imag, (str, unicode)): msg = "complex() second arg can't be a string" raise TypeError, msg elif isinstance(imag, complex): re -= imag.imag im += imag.real elif imag is not None: - im += float(imag) + try: + im += float(imag) + except ValueError: + raise ValueError, "complex() argument must be a string or a number" real_slot.__set__(self, re) imag_slot.__set__(self, im) - def _makeComplexFromString(self, string): + def _makeComplexFromString(self, string_): import re - pat = re.compile(" *([\+\-]?\d*\.?\d*)([\+\-]?\d*\.?\d*)[jJ] *") - m = pat.match(string) + string_ = string_.strip().lower() + pat = re.compile("([\+\-]?\d*\.?\d*)?([\+\-]?\d*\.?\d*j)?") + m = pat.match(string_) x, y = m.groups() - if len(y) == 1 and y in '+-': - y = y + '1.0' - x, y = map(float, [x, y]) - return x, y - + if x is None: + x = "" + if y is None: + y = "" + if len(string_) - (len(x) + len(y)) != 0: + raise ValueError, "complex() arg is a malformed string" + if x == "": + if y == "": + raise ValueError, "complex() arg is an empty string" + if y[-1] != "j": + raise ValueError, "complex() arg is a malformed string" + assert y[-1] == "j" + y = y[:-1] + if len(y) <= 1: + y += "1" + return 0, float(y) + if y == "": + return float(x), 0 + if y[-1] != "j": + raise ValueError, "complex() arg is a malformed string" + assert y[-1] == "j" + y = y[:-1] + if y == "": + if x in "+-": + x += "1.0" + return 0, float(x) + if y in "+-": + y += "1.0" + return float(x), float(y) def __description(self, precision): if self.real != 0.: @@ -230,6 +270,8 @@ real = 1. imag = 0. elif a.real == 0. and a.imag == 0.: + if b.imag != 0. or b.real < 0.: + raise ZeroDivisionError, "0.0 to a negative or complex power" real = 0. imag = 0. else: @@ -299,19 +341,12 @@ # unsupported operations def __lt__(self, other): + result = self.__coerce__(other) + if result is NotImplemented: + return result raise TypeError, "cannot compare complex numbers using <, <=, >, >=" - - def __le__(self, other): - raise TypeError, "cannot compare complex numbers using <, <=, >, >=" - - - def __gt__(self, other): - raise TypeError, "cannot compare complex numbers using <, <=, >, >=" - - - def __ge__(self, other): - raise TypeError, "cannot compare complex numbers using <, <=, >, >=" + __le__ = __gt__ = __ge__ = __lt__ def __int__(self): From pedronis at codespeak.net Fri Apr 29 00:38:02 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 29 Apr 2005 00:38:02 +0200 (CEST) Subject: [pypy-svn] r11611 - in pypy/dist: lib-python-2.3.4/test/result pypy/module/builtin Message-ID: <20050428223802.6FA7327BCC@code1.codespeak.net> Author: pedronis Date: Fri Apr 29 00:38:02 2005 New Revision: 11611 Modified: pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt pypy/dist/pypy/module/builtin/app_inspect.py Log: change to pass test_isinstance Modified: pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt (original) +++ pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt Fri Apr 29 00:38:02 2005 @@ -1,13 +1,11 @@ testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 +command: /Library/Frameworks/Python.framework/Versions/2.4/Resources/Python.app/Contents/MacOS/Python /Users/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /Users/pedronis/PyPy/dist/pypy/interpreter/py.py /Users/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py +run by: pedronis at c-0f8b70d5.022-54-67626719.cust.bredbandsbolaget.se +sys.platform: darwin +sys.version_info: (2, 4, 1, 'final', 0) oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:02:55 2005 +pypy-revision: unknown +startdate: Fri Apr 29 00:30:54 2005 ============================================================ faking @@ -15,16 +13,6 @@ faking faking faking -Traceback (application-level): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py", line 278 in ? - test_main() - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py", line 273 in test_main - TestIsInstanceIsSubclass - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred; run in verbose mode for details test_bases_raises_other_than_attribute_error (__main__.TestIsInstanceExceptions) ... ok test_class_has_no_bases (__main__.TestIsInstanceExceptions) ... ok test_dont_mask_non_attribute_error (__main__.TestIsInstanceExceptions) ... ok @@ -35,36 +23,16 @@ test_mask_attribute_error_in_cls_arg (__main__.TestIsSubclassExceptions) ... ok test_isinstance_abstract (__main__.TestIsInstanceIsSubclass) ... ok test_isinstance_normal (__main__.TestIsInstanceIsSubclass) ... ok -test_isinstance_recursion_limit (__main__.TestIsInstanceIsSubclass) ... FAIL +test_isinstance_recursion_limit (__main__.TestIsInstanceIsSubclass) ... ok test_subclass_abstract (__main__.TestIsInstanceIsSubclass) ... ok test_subclass_normal (__main__.TestIsInstanceIsSubclass) ... ok -test_subclass_recursion_limit (__main__.TestIsInstanceIsSubclass) ... FAIL +test_subclass_recursion_limit (__main__.TestIsInstanceIsSubclass) ... ok test_subclass_tuple (__main__.TestIsInstanceIsSubclass) ... ok -====================================================================== -FAIL: test_isinstance_recursion_limit (__main__.TestIsInstanceIsSubclass) ---------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py", line 256, in test_isinstance_recursion_limit - self.assertRaises(RuntimeError, blowstack, isinstance, '', str) - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises - raise self.failureException, excName -AssertionError: RuntimeError +Ran 15 tests in 31.442s -====================================================================== -FAIL: test_subclass_recursion_limit (__main__.TestIsInstanceIsSubclass) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_isinstance.py", line 251, in test_subclass_recursion_limit - self.assertRaises(RuntimeError, blowstack, issubclass, str, str) - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 295, in failUnlessRaises - raise self.failureException, excName -AssertionError: RuntimeError - ----------------------------------------------------------------------- -Ran 15 tests in 18.782s - -FAILED (failures=2) +OK ========================== closed ========================== -execution time: 36.8320848942 seconds -exit status: 1 +execution time: 50.0806570053 seconds +exit status: 0 Modified: pypy/dist/pypy/module/builtin/app_inspect.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_inspect.py (original) +++ pypy/dist/pypy/module/builtin/app_inspect.py Fri Apr 29 00:38:02 2005 @@ -22,10 +22,12 @@ return True return False -def _issubclass(cls, klass_or_tuple, check_cls): +def _issubclass(cls, klass_or_tuple, check_cls, depth): + if depth == 0: + raise RuntimeError,"maximum recursion depth excedeed" if _issubtype(type(klass_or_tuple), tuple): for klass in klass_or_tuple: - if issubclass(cls, klass): + if _issubclass(cls, klass, True, depth-1): return True return False try: @@ -38,7 +40,8 @@ return _recursive_issubclass(cls, klass_or_tuple) def issubclass(cls, klass_or_tuple): - return _issubclass(cls, klass_or_tuple, True) + import sys + return _issubclass(cls, klass_or_tuple, True, sys.getrecursionlimit()) def isinstance(obj, klass_or_tuple): if issubclass(type(obj), klass_or_tuple): @@ -48,8 +51,9 @@ except AttributeError: return False else: + import sys return (objcls is not type(obj) and - _issubclass(objcls, klass_or_tuple, False)) + _issubclass(objcls, klass_or_tuple, False, sys.getrecursionlimit())) def vars(*obj): From hpk at codespeak.net Fri Apr 29 11:48:02 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 29 Apr 2005 11:48:02 +0200 (CEST) Subject: [pypy-svn] r11612 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050429094802.60E8427BD3@code1.codespeak.net> Author: hpk Date: Fri Apr 29 11:48:02 2005 New Revision: 11612 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: refactoring the fine grained model of test execution to move towards the coarse grained + collected test classes and doctests. Next i think about merging the outputtests which should end up folding all compliance test runs through one central item class. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 11:48:02 2005 @@ -34,24 +34,9 @@ help="timeout running of a test module (default 15*60 seconds)"), ) - mydir = py.magic.autopath().dirpath() pypydir = py.path.local(pypy.__file__).dirpath() -def make_module(space, dottedname, filepath): - #print "making module", dottedname, "from", filepath - w_dottedname = space.wrap(dottedname) - mod = PyPyModule(space, w_dottedname) - w_globals = mod.w_dict - w_filename = space.wrap(str(filepath)) - w_execfile = space.builtin.get('execfile') - print "calling execfile", w_filename - space.call_function(w_execfile, w_filename, w_globals, w_globals) - w_mod = space.wrap(mod) - w_modules = space.sys.get('modules') - space.setitem(w_modules, w_dottedname, w_mod) - return w_mod - def callex(space, func, *args, **kwargs): try: return func(*args, **kwargs) @@ -97,6 +82,10 @@ raise TypeError, "expected TestSuite or TestClass, got %r" %(suite_or_class) return res + # + # exported API + # + def intercept_test_support(suites=[], doctestmodules=[]): """ intercept calls to test_support.run_doctest and run_suite. Return doctestmodules, suites which will hold collected @@ -111,12 +100,7 @@ test_support.run_suite = hack_run_suite return suites, doctestmodules - # - # exported API - # - def collect_test_main(mod): - suites, doctestmodules = intercept_test_support() - mod.test_main() + def collect_intercepted(suites, doctestmodules): namemethodlist = [] for method in getmethods(suites): name = (method.__class__.__name__ + '.' + @@ -138,10 +122,18 @@ sys.argv[:] = ['python', filename] ''') -collect_test_main = app.interphook('collect_test_main') +intercept_test_support = app.interphook('intercept_test_support') +collect_intercepted = app.interphook('collect_intercepted') run_testcase_method = app.interphook('run_testcase_method') set_argv = app.interphook('set_argv') +def intercepted_run_file(space, fspath): + w_suites, w_doctestmodules = space.unpacktuple(intercept_test_support(space)) + callex(space, run_file, str(fspath), space) + w_result = callex(space, collect_intercepted, space, w_suites, w_doctestmodules) + w_namemethods, w_doctestlist = space.unpacktuple(w_result) + return w_namemethods, w_doctestlist + class OpErrorModule(py.test.collect.Module): # wraps some methods around a py.test Module in order # to get clean KeyboardInterrupt behaviour (while @@ -268,12 +260,10 @@ if self.testdecl.oldstyle or pypy_option.oldstyle: space.enable_old_style_classes_as_default_metaclass() try: - self.w_mod = make_module(space, name, fspath) + w_namemethods, w_doctestlist = intercepted_run_file(space, fspath) finally: if not pypy_option.oldstyle: space.enable_new_style_classes_as_default_metaclass() - w_result = callex(space, collect_test_main, space, self.w_mod) - w_namemethods, w_doctestlist = space.unpacktuple(w_result) # setup {name -> wrapped testcase method} self.name2w_method = {} @@ -424,7 +414,7 @@ 'test_dircache.py' : TestDecl(True, UTTestMainModule), 'test_dis.py' : TestDecl(True, UTTestMainModule), 'test_dl.py' : TestDecl(False, SimpleRunModule), - 'test_doctest.py' : TestDecl(False, SimpleRunModule), + 'test_doctest.py' : TestDecl(True, UTTestMainModule), 'test_doctest2.py' : TestDecl(True, UTTestMainModule), 'test_dumbdbm.py' : TestDecl(False, UTTestMainModule), #rev 10840: 5 of 7 tests fail From arigo at codespeak.net Fri Apr 29 12:36:15 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 29 Apr 2005 12:36:15 +0200 (CEST) Subject: [pypy-svn] r11614 - in pypy/dist/lib-python-2.3.4/test: . result result/mixed@mixed Message-ID: <20050429103615.4C7FA27BE9@code1.codespeak.net> Author: arigo Date: Fri Apr 29 12:36:11 2005 New Revision: 11614 Added: pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/ pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_MimeWriter.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_MimeWriter.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_StringIO.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test___all__.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test___all__.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test___future__.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test___future__.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_aepack.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_al.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_al.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_anydbm.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_array.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_array.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_asynchat.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_asynchat.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_asynchat.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_atexit.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_audioop.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_augassign.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_augassign.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_augassign.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_base64.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_base64.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_bastion.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_binascii.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_binhex.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_binop.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_binop.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_bisect.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_bool.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_bool.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_bsddb.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_bsddb185.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_bsddb3.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_bufio.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_builtin.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_bz2.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_calendar.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_call.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_call.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_capi.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_capi.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_cd.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_cd.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_cfgparser.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_cgi.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_cgi.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_cgi.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_charmapcodec.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_cl.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_cl.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_class.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_class.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_class.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_class.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_cmath.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_codeccallbacks.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_codecs.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_codeop.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_coercion.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_coercion.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_coercion.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_commands.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_commands.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_compare.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_compare.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_compare.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_compare.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_compile.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_compile.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_complex.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_complex.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_contains.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_contains.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_cookie.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_cookie.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_cookie.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_copy.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_copy.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_copy_reg.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_cpickle.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_crypt.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_csv.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_csv.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_curses.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_curses.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_datetime.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_dbm.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_descr.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_descr.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_descrtut.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_difflib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_dircache.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_dis.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_dis.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_dl.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_dl.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_doctest.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_doctest2.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_dumbdbm.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_dummy_thread.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_dummy_threading.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_email.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_email.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_email_codecs.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_enumerate.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_eof.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_eof.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_errno.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_errno.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_exceptions.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_exceptions.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_exceptions.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_extcall.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_extcall.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_extcall.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_fcntl.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_file.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_file.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_filecmp.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_fileinput.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_fnmatch.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_fork1.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_format.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_format.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_fpformat.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_frozen.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_frozen.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_frozen.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_funcattrs.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_future.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_future.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_future.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_future.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_future1.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_future1.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_future2.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_future2.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_future3.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_future3.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_gc.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_gc.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_gdbm.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_generators.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_generators.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_getargs.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_getargs2.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_getopt.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_gettext.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_gl.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_gl.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_glob.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_glob.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_global.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_global.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_global.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_global.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_grammar.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_grammar.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_grammar.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_grp.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_grp.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_gzip.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_hash.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_hash.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_heapq.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_hexoct.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_hmac.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_hotshot.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_htmllib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_htmlparser.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_httplib.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_httplib.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_httplib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_imageop.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_imaplib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_imgfile.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_imp.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_imp.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_import.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_import.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_importhooks.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_inspect.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_ioctl.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_isinstance.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_iter.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_iter.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_itertools.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_largefile.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_linuxaudiodev.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_linuxaudiodev.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_locale.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_locale.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_logging.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_logging.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_logging.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_logging.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_long.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_long.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_long_future.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_longexp.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_longexp.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_longexp.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_macfs.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_macostools.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_macpath.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_mailbox.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_marshal.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_math.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_math.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_math.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_math.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_md5.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_md5.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_md5.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_md5.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_mhlib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_mimetools.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_mimetypes.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_minidom.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_mmap.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_mmap.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_mmap.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_module.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_module.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_mpz.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_multifile.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_mutants.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_mutants.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_netrc.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_new.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_new.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_new.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_new.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_nis.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_nis.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_nis.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_nis.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_normalization.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_ntpath.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_opcodes.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_opcodes.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_opcodes.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_openpty.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_openpty.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_openpty.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_operations.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_operations.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_operations.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_operations.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_operator.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_operator.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_optparse.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_os.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_os.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_ossaudiodev.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_ossaudiodev.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_parser.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_parser.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pep247.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pep263.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pep277.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pickle.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pickletools.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pkg.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pkg.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pkg.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pkgimport.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_plistlib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_poll.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_poll.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_poll.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_poll.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_popen.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_popen.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_popen.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_popen.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_popen2.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_popen2.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_popen2.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_posix.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_posix.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_posixpath.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pow.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pow.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pprint.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_profile.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_profile.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_profile.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_profile.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_profilehooks.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pty.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pty.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pty.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pty.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pwd.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pyclbr.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pyexpat.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_pyexpat.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_queue.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_queue.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_quopri.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_random.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_random.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_re.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_re.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_regex.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_regex.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_regex.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_regex.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_repr.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_repr.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_resource.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_resource.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_resource.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_resource.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_rfc822.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_rgbimg.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_rgbimg.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_richcmp.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_robotparser.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_rotor.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_rotor.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_rotor.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_sax.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_sax.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_scope.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_scope.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_scope.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_scope.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_scriptpackages.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_select.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_select.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_sets.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_sets.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_sgmllib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_sha.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_sha.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_shelve.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_shlex.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_shutil.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_signal.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_signal.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_signal.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_signal.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_slice.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_slice.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_socket.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_socket.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_socket_ssl.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_socketserver.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_softspace.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_sort.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_sort.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_str.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_str.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_strftime.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_string.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_string.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_stringprep.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_strop.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_strop.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_strptime.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_struct.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_struct.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_structseq.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_sunaudiodev.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_sundry.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_symtable.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_syntax.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_sys.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_sys.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_tarfile.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_tempfile.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_textwrap.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_thread.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_thread.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_thread.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_thread.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_threaded_import.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_threadedtempfile.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_threadedtempfile.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_threading.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_threading.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_time.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_time.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_timeout.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_timing.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_timing.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_tokenize.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_tokenize.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_tokenize.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_trace.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_trace.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_traceback.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_types.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_types.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_types.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_types.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_ucn.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_unary.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_unary.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_unicode.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_unicode_file.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_unicode_file.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_unicodedata.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_univnewlines.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_unpack.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_urllib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_urllib2.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_urllibnet.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_urlparse.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_userdict.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_userlist.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_userstring.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_uu.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_uu.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_warnings.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_wave.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_wave.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_weakref.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_whichdb.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_winreg.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_winreg.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_winreg.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_winsound.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_xmllib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_xmlrpc.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_xpickle.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_xreadline.out - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_xreadline.out pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_xreadline.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_zipfile.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_zipimport.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt pypy/dist/lib-python-2.3.4/test/result/mixed at mixed/test_zlib.txt - copied unchanged from r11612, pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt Removed: pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.out pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt pypy/dist/lib-python-2.3.4/test/result/test___all__.txt pypy/dist/lib-python-2.3.4/test/result/test___future__.txt pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt pypy/dist/lib-python-2.3.4/test/result/test_al.txt pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt pypy/dist/lib-python-2.3.4/test/result/test_array.txt pypy/dist/lib-python-2.3.4/test/result/test_asynchat.out pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt pypy/dist/lib-python-2.3.4/test/result/test_augassign.out pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt pypy/dist/lib-python-2.3.4/test/result/test_base64.txt pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt pypy/dist/lib-python-2.3.4/test/result/test_binop.txt pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt pypy/dist/lib-python-2.3.4/test/result/test_bool.txt pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt pypy/dist/lib-python-2.3.4/test/result/test_call.txt pypy/dist/lib-python-2.3.4/test/result/test_capi.txt pypy/dist/lib-python-2.3.4/test/result/test_cd.txt pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt pypy/dist/lib-python-2.3.4/test/result/test_cgi.out pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt pypy/dist/lib-python-2.3.4/test/result/test_cl.txt pypy/dist/lib-python-2.3.4/test/result/test_class.out pypy/dist/lib-python-2.3.4/test/result/test_class.txt pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt pypy/dist/lib-python-2.3.4/test/result/test_coercion.out pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt pypy/dist/lib-python-2.3.4/test/result/test_commands.txt pypy/dist/lib-python-2.3.4/test/result/test_compare.out pypy/dist/lib-python-2.3.4/test/result/test_compare.txt pypy/dist/lib-python-2.3.4/test/result/test_compile.txt pypy/dist/lib-python-2.3.4/test/result/test_complex.txt pypy/dist/lib-python-2.3.4/test/result/test_contains.txt pypy/dist/lib-python-2.3.4/test/result/test_cookie.out pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt pypy/dist/lib-python-2.3.4/test/result/test_copy.txt pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt pypy/dist/lib-python-2.3.4/test/result/test_csv.txt pypy/dist/lib-python-2.3.4/test/result/test_curses.txt pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt pypy/dist/lib-python-2.3.4/test/result/test_descr.txt pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt pypy/dist/lib-python-2.3.4/test/result/test_dis.txt pypy/dist/lib-python-2.3.4/test/result/test_dl.txt pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt pypy/dist/lib-python-2.3.4/test/result/test_email.txt pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt pypy/dist/lib-python-2.3.4/test/result/test_eof.txt pypy/dist/lib-python-2.3.4/test/result/test_errno.txt pypy/dist/lib-python-2.3.4/test/result/test_exceptions.out pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt pypy/dist/lib-python-2.3.4/test/result/test_extcall.out pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt pypy/dist/lib-python-2.3.4/test/result/test_file.txt pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt pypy/dist/lib-python-2.3.4/test/result/test_format.txt pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt pypy/dist/lib-python-2.3.4/test/result/test_frozen.out pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt pypy/dist/lib-python-2.3.4/test/result/test_future.out pypy/dist/lib-python-2.3.4/test/result/test_future.txt pypy/dist/lib-python-2.3.4/test/result/test_future1.txt pypy/dist/lib-python-2.3.4/test/result/test_future2.txt pypy/dist/lib-python-2.3.4/test/result/test_future3.txt pypy/dist/lib-python-2.3.4/test/result/test_gc.txt pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt pypy/dist/lib-python-2.3.4/test/result/test_generators.txt pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt pypy/dist/lib-python-2.3.4/test/result/test_gl.txt pypy/dist/lib-python-2.3.4/test/result/test_glob.txt pypy/dist/lib-python-2.3.4/test/result/test_global.out pypy/dist/lib-python-2.3.4/test/result/test_global.txt pypy/dist/lib-python-2.3.4/test/result/test_grammar.out pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt pypy/dist/lib-python-2.3.4/test/result/test_grp.txt pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt pypy/dist/lib-python-2.3.4/test/result/test_hash.txt pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt pypy/dist/lib-python-2.3.4/test/result/test_httplib.out pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt pypy/dist/lib-python-2.3.4/test/result/test_imp.txt pypy/dist/lib-python-2.3.4/test/result/test_import.txt pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt pypy/dist/lib-python-2.3.4/test/result/test_iter.txt pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.out pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/test_locale.txt pypy/dist/lib-python-2.3.4/test/result/test_logging.out pypy/dist/lib-python-2.3.4/test/result/test_logging.txt pypy/dist/lib-python-2.3.4/test/result/test_long.txt pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt pypy/dist/lib-python-2.3.4/test/result/test_longexp.out pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt pypy/dist/lib-python-2.3.4/test/result/test_math.out pypy/dist/lib-python-2.3.4/test/result/test_math.txt pypy/dist/lib-python-2.3.4/test/result/test_md5.out pypy/dist/lib-python-2.3.4/test/result/test_md5.txt pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt pypy/dist/lib-python-2.3.4/test/result/test_mmap.out pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt pypy/dist/lib-python-2.3.4/test/result/test_module.txt pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt pypy/dist/lib-python-2.3.4/test/result/test_mutants.txt pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt pypy/dist/lib-python-2.3.4/test/result/test_new.out pypy/dist/lib-python-2.3.4/test/result/test_new.txt pypy/dist/lib-python-2.3.4/test/result/test_nis.out pypy/dist/lib-python-2.3.4/test/result/test_nis.txt pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt pypy/dist/lib-python-2.3.4/test/result/test_opcodes.out pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt pypy/dist/lib-python-2.3.4/test/result/test_openpty.out pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt pypy/dist/lib-python-2.3.4/test/result/test_operations.out pypy/dist/lib-python-2.3.4/test/result/test_operations.txt pypy/dist/lib-python-2.3.4/test/result/test_operator.txt pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt pypy/dist/lib-python-2.3.4/test/result/test_os.txt pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.out pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/test_parser.txt pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt pypy/dist/lib-python-2.3.4/test/result/test_pkg.out pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt pypy/dist/lib-python-2.3.4/test/result/test_poll.out pypy/dist/lib-python-2.3.4/test/result/test_poll.txt pypy/dist/lib-python-2.3.4/test/result/test_popen.out pypy/dist/lib-python-2.3.4/test/result/test_popen.txt pypy/dist/lib-python-2.3.4/test/result/test_popen2.out pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt pypy/dist/lib-python-2.3.4/test/result/test_posix.txt pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt pypy/dist/lib-python-2.3.4/test/result/test_pow.txt pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt pypy/dist/lib-python-2.3.4/test/result/test_profile.out pypy/dist/lib-python-2.3.4/test/result/test_profile.txt pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt pypy/dist/lib-python-2.3.4/test/result/test_pty.out pypy/dist/lib-python-2.3.4/test/result/test_pty.txt pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.out pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt pypy/dist/lib-python-2.3.4/test/result/test_queue.txt pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt pypy/dist/lib-python-2.3.4/test/result/test_random.txt pypy/dist/lib-python-2.3.4/test/result/test_re.txt pypy/dist/lib-python-2.3.4/test/result/test_regex.out pypy/dist/lib-python-2.3.4/test/result/test_regex.txt pypy/dist/lib-python-2.3.4/test/result/test_repr.txt pypy/dist/lib-python-2.3.4/test/result/test_resource.out pypy/dist/lib-python-2.3.4/test/result/test_resource.txt pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.out pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt pypy/dist/lib-python-2.3.4/test/result/test_rotor.out pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt pypy/dist/lib-python-2.3.4/test/result/test_sax.txt pypy/dist/lib-python-2.3.4/test/result/test_scope.out pypy/dist/lib-python-2.3.4/test/result/test_scope.txt pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt pypy/dist/lib-python-2.3.4/test/result/test_select.txt pypy/dist/lib-python-2.3.4/test/result/test_sets.txt pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_sha.txt pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt pypy/dist/lib-python-2.3.4/test/result/test_signal.out pypy/dist/lib-python-2.3.4/test/result/test_signal.txt pypy/dist/lib-python-2.3.4/test/result/test_slice.txt pypy/dist/lib-python-2.3.4/test/result/test_socket.txt pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt pypy/dist/lib-python-2.3.4/test/result/test_sort.txt pypy/dist/lib-python-2.3.4/test/result/test_str.txt pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt pypy/dist/lib-python-2.3.4/test/result/test_string.txt pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt pypy/dist/lib-python-2.3.4/test/result/test_strop.txt pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt pypy/dist/lib-python-2.3.4/test/result/test_struct.txt pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt pypy/dist/lib-python-2.3.4/test/result/test_sys.txt pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt pypy/dist/lib-python-2.3.4/test/result/test_thread.out pypy/dist/lib-python-2.3.4/test/result/test_thread.txt pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.out pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt pypy/dist/lib-python-2.3.4/test/result/test_threading.txt pypy/dist/lib-python-2.3.4/test/result/test_time.txt pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt pypy/dist/lib-python-2.3.4/test/result/test_timing.txt pypy/dist/lib-python-2.3.4/test/result/test_tokenize.out pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt pypy/dist/lib-python-2.3.4/test/result/test_trace.txt pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt pypy/dist/lib-python-2.3.4/test/result/test_types.out pypy/dist/lib-python-2.3.4/test/result/test_types.txt pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt pypy/dist/lib-python-2.3.4/test/result/test_unary.txt pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.out pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt pypy/dist/lib-python-2.3.4/test/result/test_uu.txt pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt pypy/dist/lib-python-2.3.4/test/result/test_wave.txt pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt pypy/dist/lib-python-2.3.4/test/result/test_winreg.out pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt pypy/dist/lib-python-2.3.4/test/result/test_xreadline.out pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt Modified: pypy/dist/lib-python-2.3.4/test/conftest.py pypy/dist/lib-python-2.3.4/test/result/quickreport.py Log: Create test results in a directory lib-python-2.3.4/test/result/user at host/. Moved the existing test results to mixed at mixed for now. Should be deleted once we have a few fresh directories of result. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 12:36:11 2005 @@ -750,7 +750,7 @@ def run(self): """ invoke a subprocess running the test file via PyPy. - record its output into the 'result' subdirectory. + record its output into the 'result/user at host' subdirectory. (we might want to create subdirectories for each user, because we will probably all produce such result runs and they will not be the same @@ -771,7 +771,16 @@ sopt = " ".join(pypy_options) TIMEOUT = option.timeout cmd = "%s %s %d %s %s %s" %(python, alarm_script, TIMEOUT, pypy_script, sopt, fspath) - resultfilename = mydir.join('result', fspath.new(ext='.txt').basename) + + try: + username = getpass.getuser() + except: + username = 'unknown' + userhost = '%s@%s' % (username, socket.gethostname()) + + resultdir = mydir.join('result', userhost) + resultdir.ensure(dir=1) + resultfilename = resultdir.join(fspath.new(ext='.txt').basename) resultfile = resultfilename.open('w') if issubclass(self.testdecl.testclass, OutputTestModule): outputfilename = resultfilename.new(ext='.out') @@ -781,13 +790,9 @@ else: outputfilename = None - try: - username = getpass.getuser() - except: - username = 'unknown' print >> resultfile, "testreport-version: 1.0" print >> resultfile, "command:", cmd - print >> resultfile, "run by: %s@%s" % (username, socket.gethostname()) + print >> resultfile, "run by: %s" % userhost print >> resultfile, "sys.platform:", sys.platform print >> resultfile, "sys.version_info:", sys.version_info info = try_getcpuinfo() Modified: pypy/dist/lib-python-2.3.4/test/result/quickreport.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/result/quickreport.py (original) +++ pypy/dist/lib-python-2.3.4/test/result/quickreport.py Fri Apr 29 12:36:11 2005 @@ -17,10 +17,20 @@ table. """ -import sys; sys.path.insert(0, '../../..') +import sys, os +try: + __file__ +except NameError: + __file__ = sys.argv[0] +dir = os.path.abspath(__file__) +dir = os.path.dirname(dir) # result/ +dir = os.path.dirname(dir) # test/ +dir = os.path.dirname(dir) # lib-python-2.3.4/ +dir = os.path.dirname(dir) # dist/ +sys.path.insert(0, dir) import py, re -mydir = py.magic.autopath().dirpath() +mydir = py.path.local() r_end = re.compile(r"""(.+)\s*========================== closed ========================== execution time: (.+) seconds @@ -142,10 +152,15 @@ print print header print + count = 0 for result in allresults(): print result + count += 1 print - + if count == 0: + print >> sys.stderr, """No result found. Try to run it as: + cd user at host; python ../quickreport.py + """ if __name__ == '__main__': if len(sys.argv) <= 1: Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,110 +0,0 @@ -test_MimeWriter -From: bwarsaw at cnri.reston.va.us -Date: Mon Feb 12 17:21:48 EST 1996 -To: kss-submit at cnri.reston.va.us -MIME-Version: 1.0 -Content-Type: multipart/knowbot; - boundary="801spam999"; - version="0.1" - -This is a multi-part message in MIME format. - ---801spam999 -Content-Type: multipart/knowbot-metadata; - boundary="802spam999" - - ---802spam999 -Content-Type: message/rfc822 -KP-Metadata-Type: simple -KP-Access: read-only - -KPMD-Interpreter: python -KPMD-Interpreter-Version: 1.3 -KPMD-Owner-Name: Barry Warsaw -KPMD-Owner-Rendezvous: bwarsaw at cnri.reston.va.us -KPMD-Home-KSS: kss.cnri.reston.va.us -KPMD-Identifier: hdl://cnri.kss/my_first_knowbot -KPMD-Launch-Date: Mon Feb 12 16:39:03 EST 1996 - ---802spam999 -Content-Type: text/isl -KP-Metadata-Type: complex -KP-Metadata-Key: connection -KP-Access: read-only -KP-Connection-Description: Barry's Big Bass Business -KP-Connection-Id: B4 -KP-Connection-Direction: client - -INTERFACE Seller-1; - -TYPE Seller = OBJECT - DOCUMENTATION "A simple Seller interface to test ILU" - METHODS - price():INTEGER, - END; - ---802spam999 -Content-Type: message/external-body; - access-type="URL"; - URL="hdl://cnri.kss/generic-knowbot" - -Content-Type: text/isl -KP-Metadata-Type: complex -KP-Metadata-Key: generic-interface -KP-Access: read-only -KP-Connection-Description: Generic Interface for All Knowbots -KP-Connection-Id: generic-kp -KP-Connection-Direction: client - - ---802spam999-- - ---801spam999 -Content-Type: multipart/knowbot-code; - boundary="803spam999" - - ---803spam999 -Content-Type: text/plain -KP-Module-Name: BuyerKP - -class Buyer: - def __setup__(self, maxprice): - self._maxprice = maxprice - - def __main__(self, kos): - """Entry point upon arrival at a new KOS.""" - broker = kos.broker() - # B4 == Barry's Big Bass Business :-) - seller = broker.lookup('Seller_1.Seller', 'B4') - if seller: - price = seller.price() - print 'Seller wants $', price, '... ' - if price > self._maxprice: - print 'too much!' - else: - print "I'll take it!" - else: - print 'no seller found here' - ---803spam999-- - ---801spam999 -Content-Type: multipart/knowbot-state; - boundary="804spam999" -KP-Main-Module: main - - ---804spam999 -Content-Type: text/plain -KP-Module-Name: main - -# instantiate a buyer instance and put it in a magic place for the KOS -# to find. -__kp__ = Buyer() -__kp__.__setup__(500) - ---804spam999-- - ---801spam999-- Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_MimeWriter.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,18 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_MimeWriter.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:31:10 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_MimeWriter.out -============================================================ -faking -faking -faking -faking -faking -OK -========================== closed ========================== -execution time: 9.36941385269 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_StringIO.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,51 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_StringIO.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:10:51 2005 - -============================================================ -faking -faking -faking -faking -faking -test_closed_flag (__main__.TestStringIO) ... ok -test_iterator (__main__.TestStringIO) ... ok -test_reads (__main__.TestStringIO) ... ok -test_truncate (__main__.TestStringIO) ... ok -test_unicode (__main__.TestStringIO) ... ok -test_writelines (__main__.TestStringIO) ... ok -test_writes (__main__.TestStringIO) ... ok -test_closed_flag (__main__.TestcStringIO) ... ok -test_iterator (__main__.TestcStringIO) ... ok -test_reads (__main__.TestcStringIO) ... ok -test_truncate (__main__.TestcStringIO) ... ok -test_writelines (__main__.TestcStringIO) ... ok -test_writes (__main__.TestcStringIO) ... ok -test_closed_flag (__main__.TestBufferStringIO) ... ok -test_iterator (__main__.TestBufferStringIO) ... ok -test_reads (__main__.TestBufferStringIO) ... ok -test_truncate (__main__.TestBufferStringIO) ... ok -test_unicode (__main__.TestBufferStringIO) ... ok -test_writelines (__main__.TestBufferStringIO) ... ok -test_writes (__main__.TestBufferStringIO) ... ok -test_closed_flag (__main__.TestBuffercStringIO) ... ok -test_iterator (__main__.TestBuffercStringIO) ... ok -test_reads (__main__.TestBuffercStringIO) ... ok -test_truncate (__main__.TestBuffercStringIO) ... ok -test_writelines (__main__.TestBuffercStringIO) ... ok -test_writes (__main__.TestBuffercStringIO) ... ok - ----------------------------------------------------------------------- -Ran 26 tests in 14.696s - -OK -========================== closed ========================== -execution time: 32.1398749352 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test___all__.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test___all__.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,58 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:40:56 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 205 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 202 in test_main - test_support.run_unittest(AllTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 144, in test_all - self.check_all("re") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 41, in check_all - "%s has no __all__ attribute" % modname) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180, in verify - raise TestFailed(reason) -TestFailed: re has no __all__ attribute - -test_all (__main__.AllTest) ... ERROR - -====================================================================== -ERROR: test_all (__main__.AllTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 144, in test_all - self.check_all("re") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___all__.py", line 41, in check_all - "%s has no __all__ attribute" % modname) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180, in verify - raise TestFailed(reason) -TestFailed: re has no __all__ attribute - ----------------------------------------------------------------------- -Ran 1 test in 793.580s - -FAILED (errors=1) -========================== closed ========================== -execution time: 821.671632051 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test___future__.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test___future__.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,18 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test___future__.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:54:38 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Checking __future__ nested_scopes value _Feature((2, 1, 0, 'beta', 1), (2, 2, 0, 'alpha', 0), 16) -Checking __future__ generators value _Feature((2, 2, 0, 'alpha', 1), (2, 3, 0, 'final', 0), 4096) -Checking __future__ division value _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192) -========================== closed ========================== -execution time: 8.18518209457 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_aepack.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_aepack.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:54:46 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_aepack.py", line 4 in ? -import aepack -ImportError: aepack -========================== closed ========================== -execution time: 4.09968686104 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_al.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_al.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_al.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:54:51 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_al.py", line 5 in ? -import al -ImportError: al -========================== closed ========================== -execution time: 0.787994146347 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_anydbm.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,28 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_anydbm.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:54:52 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_anydbm_creation (__main__.AnyDBMTestCase) ... ok -test_anydbm_keys (__main__.AnyDBMTestCase) ... ok -test_anydbm_modification (__main__.AnyDBMTestCase) ... ok -test_anydbm_read (__main__.AnyDBMTestCase) ... ok - ----------------------------------------------------------------------- -Ran 4 tests in 29.785s - -OK -========================== closed ========================== -execution time: 40.3560171127 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_array.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_array.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,242 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_array.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:55:32 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -test_constructor (__main__.BadConstructorTest) ... ok -test_add (__main__.CharacterTest) ... ok -test_buffer (__main__.CharacterTest) ... ERROR -test_buffer_info (__main__.CharacterTest) ... ok -test_byteswap (__main__.CharacterTest) ... ok -test_cmp (__main__.CharacterTest) ... FAIL -test_constructor (__main__.CharacterTest) ... ok -test_count (__main__.CharacterTest) ... ok -test_coveritertraverse (__main__.CharacterTest) ... ok -test_delitem (__main__.CharacterTest) ... ok -test_extend (__main__.CharacterTest) ... ok -test_getitem (__main__.CharacterTest) ... ok -test_getslice (__main__.CharacterTest) ... ok -test_iadd (__main__.CharacterTest) ... FAIL -test_imul (__main__.CharacterTest) ... FAIL -test_index (__main__.CharacterTest) ... ok -test_insert (__main__.CharacterTest) ... ok -test_len (__main__.CharacterTest) ... ok -test_mul (__main__.CharacterTest) ... ok -test_nounicode (__main__.CharacterTest) ... ok -test_pop (__main__.CharacterTest) ... ok -test_remove (__main__.CharacterTest) ... ok -test_repr (__main__.CharacterTest) ... ok -test_reverse (__main__.CharacterTest) ... ok -test_setitem (__main__.CharacterTest) ... ok -test_setslice (__main__.CharacterTest) ... ok -test_str (__main__.CharacterTest) ... ok -test_subbclassing (__main__.CharacterTest) ... ok -test_tofromfile (__main__.CharacterTest) ... Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 644, in CALL_FUNCTION_VAR - f.CALL_FUNCTION(oparg, w_varargs) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW - f.CALL_FUNCTION(oparg, w_varargs, w_varkw) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args - frame.setfastscope(scope_w) - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) -pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > -========================== closed ========================== -execution time: 66.1407701969 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_asynchat.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_asynchat.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_asynchat Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_asynchat.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_asynchat.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:56:39 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_asynchat.out -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_asynchat.py", line 3 in ? -import thread # If this fails, we can't test this module -ImportError: thread -FAILED: test output differs -========================== closed ========================== -execution time: 2.45180296898 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_atexit.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_atexit.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:56:42 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_atexit.py", line 37 in ? -""") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 194 in vereq - raise TestFailed, "%r == %r" % (a, b) -TestFailed: '' == "handler2 (7,) {'kw': 'abc'}\nhandler2 () {}\nhandler1\n" -========================== closed ========================== -execution time: 8.41355109215 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_audioop.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_audioop.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:56:52 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_audioop.py", line 2 in ? -import audioop -ImportError: audioop -========================== closed ========================== -execution time: 1.88180184364 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_augassign.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_augassign.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,51 +0,0 @@ -test_augassign -6 -[6] -6 -[1, 2, 3, 4, 1, 2, 3, 4] -[1, 2, 1, 2, 3] -True -True -True -11 -True -12 -True -True -13 -__add__ called -__radd__ called -__iadd__ called -__sub__ called -__rsub__ called -__isub__ called -__mul__ called -__rmul__ called -__imul__ called -__div__ called -__rdiv__ called -__idiv__ called -__floordiv__ called -__rfloordiv__ called -__ifloordiv__ called -__mod__ called -__rmod__ called -__imod__ called -__pow__ called -__rpow__ called -__ipow__ called -__or__ called -__ror__ called -__ior__ called -__and__ called -__rand__ called -__iand__ called -__xor__ called -__rxor__ called -__ixor__ called -__rshift__ called -__rrshift__ called -__irshift__ called -__lshift__ called -__rlshift__ called -__ilshift__ called Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_augassign.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_augassign.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:56:55 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_augassign.out -============================================================ -faking -faking -faking -OK -========================== closed ========================== -execution time: 4.99358296394 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_base64.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_base64.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,27 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_base64.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:05:26 2005 - -============================================================ -faking -faking -faking -faking -faking -test_decodestring (__main__.Base64TestCase) ... ok -test_encodestring (__main__.Base64TestCase) ... ok - ----------------------------------------------------------------------- -Ran 2 tests in 1.291s - -OK -========================== closed ========================== -execution time: 12.391712904 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_bastion.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,12 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bastion.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:57:10 2005 -pypy-revision: 11549 -============================================================ -faking -faking -========================== closed ========================== -execution time: 0.777083873749 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_binascii.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,56 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:57:10 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py", line 155 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py", line 152 in test_main - test_support.run_unittest(BinASCIITest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred in __main__.BinASCIITest -test_base64invalid (__main__.BinASCIITest) ... ok -test_base64valid (__main__.BinASCIITest) ... ok -test_crc32 (__main__.BinASCIITest) ... ok -test_exceptions (__main__.BinASCIITest) ... ERROR -test_functions (__main__.BinASCIITest) ... ok -test_hex (__main__.BinASCIITest) ... ok -test_qp (__main__.BinASCIITest) ... ok -test_uu (__main__.BinASCIITest) ... ERROR - -====================================================================== -ERROR: test_exceptions (__main__.BinASCIITest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py", line 17, in test_exceptions - self.assert_(issubclass(binascii.Error, Exception)) -TypeError: arg 1 must be a class or type - -====================================================================== -ERROR: test_uu (__main__.BinASCIITest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binascii.py", line 102, in test_uu - self.assertRaises(binascii.Error, binascii.a2b_uu, "\xff\x00") -TypeError: instance exception may not have a separate value - ----------------------------------------------------------------------- -Ran 8 tests in 39.460s - -FAILED (errors=2) -========================== closed ========================== -execution time: 47.0662410259 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_binhex.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,67 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 21:57:58 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py", line 49 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py", line 45 in test_main - test_support.run_unittest(BinHexTestCase) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py", line 33, in test_binhex - binhex.binhex(self.fname1, self.fname2) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 260, in binhex - ofp = BinHex(finfo, out) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 196, in __init__ - self._writeinfo(name, finfo) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 212, in _writeinfo - self._writecrc() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 221, in _writecrc - self.ofp.write(struct.pack('>h', self.crc)) - File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 293, in pack - result += [format['pack'](var,format['size'],endianness)] - File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 111, in pack_signed_int - raise OverflowError,"Number:%i to large to convert" % number -OverflowError: Number:51917 to large to convert - -test_binhex (__main__.BinHexTestCase) ... ERROR - -====================================================================== -ERROR: test_binhex (__main__.BinHexTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_binhex.py", line 33, in test_binhex - binhex.binhex(self.fname1, self.fname2) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 260, in binhex - ofp = BinHex(finfo, out) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 196, in __init__ - self._writeinfo(name, finfo) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 212, in _writeinfo - self._writecrc() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/binhex.py", line 221, in _writecrc - self.ofp.write(struct.pack('>h', self.crc)) - File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 293, in pack - result += [format['pack'](var,format['size'],endianness)] - File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 111, in pack_signed_int - raise OverflowError,"Number:%i to large to convert" % number -OverflowError: Number:51917 to large to convert - ----------------------------------------------------------------------- -Ran 1 test in 3.151s - -FAILED (errors=1) -========================== closed ========================== -execution time: 9.49319386482 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_binop.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_binop.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,34 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_binop.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:05:39 2005 - -============================================================ -faking -faking -faking -faking -faking -test_add (__main__.RatTestCase) ... ok -test_constructor (__main__.RatTestCase) ... ok -test_div (__main__.RatTestCase) ... ok -test_eq (__main__.RatTestCase) ... ok -test_floordiv (__main__.RatTestCase) ... ok -test_future_div (__main__.RatTestCase) ... ok -test_gcd (__main__.RatTestCase) ... ok -test_mul (__main__.RatTestCase) ... ok -test_sub (__main__.RatTestCase) ... ok - ----------------------------------------------------------------------- -Ran 9 tests in 22.342s - -OK -========================== closed ========================== -execution time: 30.0572090149 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_bisect.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,36 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_bisect.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:06:09 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_backcompatibility (__main__.TestBisect) ... ok -test_optionalSlicing (__main__.TestBisect) ... ok -test_precomputed (__main__.TestBisect) ... ok -test_random (__main__.TestBisect) ... ok -test_backcompatibility (__main__.TestInsort) ... ok -test_vsListSort (__main__.TestInsort) ... ok - ----------------------------------------------------------------------- -Ran 6 tests in 104.054s - -OK -doctest (test.test_bisect) ... 14 tests with zero failures -========================== closed ========================== -execution time: 203.219065189 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_bool.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_bool.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,76 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:05:12 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 348 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 345 in test_main - test_support.run_unittest(BoolTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 331, in test_convert_to_bool - check(Foo()) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 327, in - check = lambda o: self.assertRaises(TypeError, bool, o) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises - callableObj(*args, **kwargs) -RuntimeError: internal errormaximum recursion depth exceeded - -test_boolean (__main__.BoolTest) ... ok -test_callable (__main__.BoolTest) ... ok -test_convert (__main__.BoolTest) ... ok -test_convert_to_bool (__main__.BoolTest) ... ERROR -test_cpickle (__main__.BoolTest) ... ok -test_fileclosed (__main__.BoolTest) ... ok -test_hasattr (__main__.BoolTest) ... ok -test_haskey (__main__.BoolTest) ... ok -test_int (__main__.BoolTest) ... ok -test_isinstance (__main__.BoolTest) ... ok -test_issubclass (__main__.BoolTest) ... ok -test_marshal (__main__.BoolTest) ... ok -test_math (__main__.BoolTest) ... ok -test_mixedpickle (__main__.BoolTest) ... ok -test_operator (__main__.BoolTest) ... ok -test_pickle (__main__.BoolTest) ... ok -test_picklevalues (__main__.BoolTest) ... ok -test_print (__main__.BoolTest) ... ok -test_repr (__main__.BoolTest) ... ok -test_str (__main__.BoolTest) ... ok -test_string (__main__.BoolTest) ... ok -test_subclass (__main__.BoolTest) ... ok - -====================================================================== -ERROR: test_convert_to_bool (__main__.BoolTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 331, in test_convert_to_bool - check(Foo()) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bool.py", line 327, in - check = lambda o: self.assertRaises(TypeError, bool, o) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises - callableObj(*args, **kwargs) -RuntimeError: internal errormaximum recursion depth exceeded - ----------------------------------------------------------------------- -Ran 22 tests in 44.826s - -FAILED (errors=1) -========================== closed ========================== -execution time: 52.0181930065 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_bsddb.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:06:05 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb.py", line 6 in ? -import bsddb - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/bsddb/__init__.py", line 40 in ? - import _bsddb -ImportError: _bsddb -========================== closed ========================== -execution time: 3.27077317238 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_bsddb185.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb185.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:06:09 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb185.py", line 9 in ? -import bsddb185 -ImportError: bsddb185 -========================== closed ========================== -execution time: 4.13291215897 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_bsddb3.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb3.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:06:13 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bsddb3.py", line 58 in ? - from bsddb import db - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/bsddb/__init__.py", line 40 in ? - import _bsddb -ImportError: _bsddb -========================== closed ========================== -execution time: 4.46537494659 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_bufio.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,15 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bufio.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:06:18 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -========================== closed ========================== -execution time: 547.107976913 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_builtin.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,81 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_builtin.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:09:32 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -/home/hpk/pypy-dist/pypy/objspace/std/intobject.py:442: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up - ret = "0x%lx" % x -/home/hpk/pypy-dist/pypy/objspace/std/intobject.py:430: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up - ret = "0%lo" % x -test_abs (__main__.BuiltinTest) ... ok -test_apply (__main__.BuiltinTest) ... ok -test_callable (__main__.BuiltinTest) ... ok -test_chr (__main__.BuiltinTest) ... ok -test_cmp (__main__.BuiltinTest) ... ok -test_coerce (__main__.BuiltinTest) ... ok -test_compile (__main__.BuiltinTest) ... ok -test_delattr (__main__.BuiltinTest) ... ok -test_dir (__main__.BuiltinTest) ... ok -test_divmod (__main__.BuiltinTest) ... ok -test_eval (__main__.BuiltinTest) ... ok -test_execfile (__main__.BuiltinTest) ... ok -test_filter (__main__.BuiltinTest) ... ok -test_filter_subclasses (__main__.BuiltinTest) ... ok -test_float (__main__.BuiltinTest) ... ok -test_getattr (__main__.BuiltinTest) ... ok -test_hasattr (__main__.BuiltinTest) ... ok -test_hash (__main__.BuiltinTest) ... ok -test_hex (__main__.BuiltinTest) ... ok -test_id (__main__.BuiltinTest) ... ok -test_import (__main__.BuiltinTest) ... ok -test_input_and_raw_input (__main__.BuiltinTest) ... ok -test_int (__main__.BuiltinTest) ... ok -test_intern (__main__.BuiltinTest) ... ok -test_isinstance (__main__.BuiltinTest) ... ok -test_issubclass (__main__.BuiltinTest) ... ok -test_iter (__main__.BuiltinTest) ... ok -test_len (__main__.BuiltinTest) ... ok -test_list (__main__.BuiltinTest) ... ok -test_long (__main__.BuiltinTest) ... ok -test_map (__main__.BuiltinTest) ... ok -test_max (__main__.BuiltinTest) ... ok -test_min (__main__.BuiltinTest) ... ok -test_oct (__main__.BuiltinTest) ... ok -test_open (__main__.BuiltinTest) ... ok -test_ord (__main__.BuiltinTest) ... ok -test_pow (__main__.BuiltinTest) ... ok -test_range (__main__.BuiltinTest) ... ok -test_reduce (__main__.BuiltinTest) ... ok -test_reload (__main__.BuiltinTest) ... ok -test_repr (__main__.BuiltinTest) ... ok -test_round (__main__.BuiltinTest) ... ok -test_setattr (__main__.BuiltinTest) ... ok -test_str (__main__.BuiltinTest) ... ok -test_sum (__main__.BuiltinTest) ... ok -test_tuple (__main__.BuiltinTest) ... ok -test_type (__main__.BuiltinTest) ... ok -test_unichr (__main__.BuiltinTest) ... ok -test_vars (__main__.BuiltinTest) ... ok -test_zip (__main__.BuiltinTest) ... ok - ----------------------------------------------------------------------- -Ran 50 tests in 480.231s - -OK -========================== closed ========================== -execution time: 497.741446972 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_bz2.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bz2.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:20:42 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_bz2.py", line 11 in ? -import bz2 -ImportError: bz2 -========================== closed ========================== -execution time: 4.66898298264 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_calendar.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_calendar.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:17:50 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -test_days (__main__.CalendarTestCase) ... ok -test_enumerateweekdays (__main__.CalendarTestCase) ... ok -test_isleap (__main__.CalendarTestCase) ... ok -test_months (__main__.CalendarTestCase) ... ok -test_setfirstweekday (__main__.CalendarTestCase) ... ok - ----------------------------------------------------------------------- -Ran 5 tests in 40.134s - -OK -========================== closed ========================== -execution time: 61.0287189484 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_call.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_call.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,52 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_call.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:18:51 2005 - -============================================================ -faking -faking -faking -faking -faking -test_oldargs0_0 (__main__.CFunctionCalls) ... ok -test_oldargs0_0_ext (__main__.CFunctionCalls) ... ok -test_oldargs0_0_kw (__main__.CFunctionCalls) ... ok -test_oldargs0_1 (__main__.CFunctionCalls) ... ok -test_oldargs0_1_ext (__main__.CFunctionCalls) ... ok -test_oldargs0_1_kw (__main__.CFunctionCalls) ... ok -test_oldargs0_2 (__main__.CFunctionCalls) ... ok -test_oldargs0_2_ext (__main__.CFunctionCalls) ... ok -test_oldargs0_2_kw (__main__.CFunctionCalls) ... ok -test_oldargs1_0 (__main__.CFunctionCalls) ... ok -test_oldargs1_0_ext (__main__.CFunctionCalls) ... ok -test_oldargs1_0_kw (__main__.CFunctionCalls) ... ok -test_oldargs1_1 (__main__.CFunctionCalls) ... ok -test_oldargs1_1_ext (__main__.CFunctionCalls) ... ok -test_oldargs1_1_kw (__main__.CFunctionCalls) ... ok -test_oldargs1_2 (__main__.CFunctionCalls) ... ok -test_oldargs1_2_ext (__main__.CFunctionCalls) ... ok -test_oldargs1_2_kw (__main__.CFunctionCalls) ... ok -test_varargs0 (__main__.CFunctionCalls) ... ok -test_varargs0_ext (__main__.CFunctionCalls) ... ok -test_varargs0_kw (__main__.CFunctionCalls) ... ok -test_varargs1 (__main__.CFunctionCalls) ... ok -test_varargs1_ext (__main__.CFunctionCalls) ... ok -test_varargs1_kw (__main__.CFunctionCalls) ... ok -test_varargs2 (__main__.CFunctionCalls) ... ok -test_varargs2_ext (__main__.CFunctionCalls) ... ok -test_varargs2_kw (__main__.CFunctionCalls) ... ok - ----------------------------------------------------------------------- -Ran 27 tests in 9.826s - -OK -========================== closed ========================== -execution time: 18.6441709995 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_capi.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_capi.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_capi.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:21:35 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_capi.py", line 6 in ? -import _testcapi -ImportError: _testcapi -========================== closed ========================== -execution time: 4.10063791275 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_cd.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_cd.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cd.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:21:39 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cd.py", line 5 in ? -import cd -ImportError: cd -========================== closed ========================== -execution time: 0.751883029938 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_cfgparser.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,300 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cfgparser.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:21:41 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_basic (__main__.ConfigParserTestCase) ... ok -test_boolean (__main__.ConfigParserTestCase) ... ok -test_case_sensitivity (__main__.ConfigParserTestCase) ... ok -test_interpolation (__main__.ConfigParserTestCase) ... ok -test_interpolation_missing_value (__main__.ConfigParserTestCase) ... ok -test_items (__main__.ConfigParserTestCase) ... ok -test_parse_errors (__main__.ConfigParserTestCase) ... ok -test_query_errors (__main__.ConfigParserTestCase) ... ok -test_weird_errors (__main__.ConfigParserTestCase) ... ok -test_write (__main__.ConfigParserTestCase) ... ok -test_basic (__main__.RawConfigParserTestCase) ... ok -test_boolean (__main__.RawConfigParserTestCase) ... ok -test_case_sensitivity (__main__.RawConfigParserTestCase) ... ok -test_interpolation (__main__.RawConfigParserTestCase) ... ok -test_items (__main__.RawConfigParserTestCase) ... ok -test_parse_errors (__main__.RawConfigParserTestCase) ... ok -test_query_errors (__main__.RawConfigParserTestCase) ... ok -test_weird_errors (__main__.RawConfigParserTestCase) ... ok -test_write (__main__.RawConfigParserTestCase) ... ok -test_basic (__main__.SafeConfigParserTestCase) ... ok -test_boolean (__main__.SafeConfigParserTestCase) ... ok -test_case_sensitivity (__main__.SafeConfigParserTestCase) ... ok -test_interpolation (__main__.SafeConfigParserTestCase) ... Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 499, in LOAD_ATTR - w_value = f.space.getattr(w_obj, w_attributename) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 126, in getattr - return space.get_and_call_function(w_descr, w_obj, w_name) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 87, in get_and_call_function - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_ObjSpace_Arguments - File "/u/pedronis/PyPy/dist/pypy/module/classobjinterp.py", line 1747, in __getattribute__ - return fastf_instance___getattribute__(space, w_self, w_name) - File "/u/pedronis/PyPy/dist/pypy/module/classobjinterp.py", line 1757, in __getattribute__ - w_0 = space.call_function(gfunc_instance_getattr1, w_self, w_name) - File "/u/pedronis/PyPy/dist/pypy/interpreter/baseobjspace.py", line 234, in call_function - return self.call_args(w_func, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_ObjSpace_Arguments - File "/u/pedronis/PyPy/dist/pypy/module/classobjinterp.py", line 1556, in instance_getattr1 - return fastf_instance_getattr1(space, w_inst, w_name, w_exc) - File "/u/pedronis/PyPy/dist/pypy/module/classobjinterp.py", line 1722, in instance_getattr1 - w_43 = space.call_function(w_39, w_40, w_41, w_42) - File "/u/pedronis/PyPy/dist/pypy/interpreter/baseobjspace.py", line 234, in call_function - return self.call_args(w_func, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args - frame.setfastscope(scope_w) - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) -pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > -========================== closed ========================== -execution time: 118.21816802 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_cgi.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_cgi.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,29 +0,0 @@ -test_cgi -'' -'&' -'&&' -';' -';&;' -'=' -'=&=' -'=;=' -'=a' -'&=a' -'=a&' -'=&a' -'b=a' -'b+=a' -'a=b=a' -'a=+b=a' -'&b=a' -'b&=a' -'a=a+b&b=b+c' -'a=a+b&a=b+a' -'x=1&y=2.0&z=2-3.%2b0' -'x=1;y=2.0&z=2-3.%2b0' -'x=1;y=2.0;z=2-3.%2b0' -'Hbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=env' -'group_id=5470&set=custom&_assigned_to=31392&_status=1&_category=100&SUBMIT=Browse' -Testing log -Testing initlog 1 -Testing log 2 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_cgi.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cgi.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:23:39 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_cgi.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -OK -========================== closed ========================== -execution time: 92.329431057 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_charmapcodec.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,29 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_charmapcodec.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:19:10 2005 - -============================================================ -faking -faking -faking -faking -faking -test_constructorx (__main__.CharmapCodecTest) ... ok -test_constructory (__main__.CharmapCodecTest) ... ok -test_encodex (__main__.CharmapCodecTest) ... ok -test_maptoundefined (__main__.CharmapCodecTest) ... ok - ----------------------------------------------------------------------- -Ran 4 tests in 2.154s - -OK -========================== closed ========================== -execution time: 9.77231407166 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_cl.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_cl.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cl.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:25:22 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cl.py", line 5 in ? -import cl -ImportError: cl -========================== closed ========================== -execution time: 0.714554071426 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_class.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_class.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,70 +0,0 @@ -test_class -__init__: () -__coerce__: (1,) -__add__: (1,) -__coerce__: (1,) -__radd__: (1,) -__coerce__: (1,) -__sub__: (1,) -__coerce__: (1,) -__rsub__: (1,) -__coerce__: (1,) -__mul__: (1,) -__coerce__: (1,) -__rmul__: (1,) -__coerce__: (1,) -__div__: (1,) -__coerce__: (1,) -__rdiv__: (1,) -__coerce__: (1,) -__mod__: (1,) -__coerce__: (1,) -__rmod__: (1,) -__coerce__: (1,) -__divmod__: (1,) -__coerce__: (1,) -__rdivmod__: (1,) -__coerce__: (1,) -__pow__: (1,) -__coerce__: (1,) -__rpow__: (1,) -__coerce__: (1,) -__rshift__: (1,) -__coerce__: (1,) -__rrshift__: (1,) -__coerce__: (1,) -__lshift__: (1,) -__coerce__: (1,) -__rlshift__: (1,) -__coerce__: (1,) -__and__: (1,) -__coerce__: (1,) -__rand__: (1,) -__coerce__: (1,) -__or__: (1,) -__coerce__: (1,) -__ror__: (1,) -__coerce__: (1,) -__xor__: (1,) -__coerce__: (1,) -__rxor__: (1,) -__contains__: (1,) -__getitem__: (1,) -__setitem__: (1, 1) -__delitem__: (1,) -__getslice__: (0, 42) -__setslice__: (0, 42, 'The Answer') -__delslice__: (0, 42) -__getitem__: (slice(2, 1024, 10),) -__setitem__: (slice(2, 1024, 10), 'A lot') -__delitem__: (slice(2, 1024, 10),) -__getitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),) -__setitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100), 'Strange') -__delitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),) -__getitem__: (slice(0, 42, None),) -__setitem__: (slice(0, 42, None), 'The Answer') -__delitem__: (slice(0, 42, None),) -__neg__: () -__pos__: () -__abs__: () -__int__: () Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_class.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_class.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,23 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_class.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:25:24 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_class.out -============================================================ -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_class.py", line 199 in ? - int(testme) -TypeError: __int__ returned non-int (type NoneType) -FAILED: test output differs -========================== closed ========================== -execution time: 15.9479799271 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_cmath.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,38 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_cmath.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:19:19 2005 - -============================================================ -faking -faking -faking -faking -faking -Calling sinh(1.000000) = 1.175201 -Calling asin(1.000000) = 1.570796 -Calling asinh(1.000000) = 0.881373 -Calling log(1.000000) = 0.000000 -Calling atan(0.200000) = 0.197395 -Calling tanh(1.000000) = 0.761594 -Calling atanh(0.200000) = 0.202732 -Calling cos(1.000000) = 0.540302 -Calling sqrt(1.000000) = 1.000000 -Calling cosh(1.000000) = 1.543080 -Calling exp(1.000000) = 2.718281 -Calling acosh(1.000000) = 0.000000 -Calling acos(1.000000) = 0.000000 -Calling log10(1.000000) = 0.000000 -Calling sin(1.000000) = 0.841470 -Calling tan(1.000000) = 1.557407 -PI = 3.14159265358 -E = 2.71828182845 -========================== closed ========================== -execution time: 19.7615480423 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_codeccallbacks.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,197 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_codeccallbacks.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:25:53 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -test_backslashescape (__main__.CodecCallbackTest) ... ok -test_badandgoodbackslashreplaceexceptions (__main__.CodecCallbackTest) ... Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW - f.CALL_FUNCTION(oparg, w_varargs, w_varkw) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args - frame.setfastscope(scope_w) - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) -pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > -========================== closed ========================== -execution time: 19.1045050621 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_codecs.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,172 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_codecs.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:26:13 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -test_only_one_bom (__main__.UTF16Test) ... Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args - frame.setfastscope(scope_w) - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) -pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > -========================== closed ========================== -execution time: 9.94337916374 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_codeop.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,29 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_codeop.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:19:39 2005 - -============================================================ -faking -faking -faking -faking -faking -test_filename (__main__.CodeopTests) ... ok -test_incomplete (__main__.CodeopTests) ... ok -test_invalid (__main__.CodeopTests) ... ok -test_valid (__main__.CodeopTests) ... ok - ----------------------------------------------------------------------- -Ran 4 tests in 4.787s - -OK -========================== closed ========================== -execution time: 12.7703418732 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_coercion.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_coercion.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,1054 +0,0 @@ -test_coercion -2 + 2 = 4 -2 += 2 => 4 -2 - 2 = 0 -2 -= 2 => 0 -2 * 2 = 4 -2 *= 2 => 4 -2 / 2 = 1 -2 /= 2 => 1 -2 ** 2 = 4 -2 **= 2 => 4 -2 % 2 = 0 -2 %= 2 => 0 -2 + 4.0 = 6.0 -2 += 4.0 => 6.0 -2 - 4.0 = -2.0 -2 -= 4.0 => -2.0 -2 * 4.0 = 8.0 -2 *= 4.0 => 8.0 -2 / 4.0 = 0.5 -2 /= 4.0 => 0.5 -2 ** 4.0 = 16.0 -2 **= 4.0 => 16.0 -2 % 4.0 = 2.0 -2 %= 4.0 => 2.0 -2 + 2 = 4 -2 += 2 => 4 -2 - 2 = 0 -2 -= 2 => 0 -2 * 2 = 4 -2 *= 2 => 4 -2 / 2 = 1 -2 /= 2 => 1 -2 ** 2 = 4 -2 **= 2 => 4 -2 % 2 = 0 -2 %= 2 => 0 -2 + (2+0j) = (4+0j) -2 += (2+0j) => (4+0j) -2 - (2+0j) = 0j -2 -= (2+0j) => 0j -2 * (2+0j) = (4+0j) -2 *= (2+0j) => (4+0j) -2 / (2+0j) = (1+0j) -2 /= (2+0j) => (1+0j) -2 ** (2+0j) = (4+0j) -2 **= (2+0j) => (4+0j) -2 % (2+0j) = 0j -2 %= (2+0j) => 0j -2 + [1] ... -2 += [1] ... -2 - [1] ... -2 -= [1] ... -2 * [1] = [1, 1] -2 *= [1] => [1, 1] -2 / [1] ... -2 /= [1] ... -2 ** [1] ... -2 **= [1] ... -2 % [1] ... -2 %= [1] ... -2 + (2,) ... -2 += (2,) ... -2 - (2,) ... -2 -= (2,) ... -2 * (2,) = (2, 2) -2 *= (2,) => (2, 2) -2 / (2,) ... -2 /= (2,) ... -2 ** (2,) ... -2 **= (2,) ... -2 % (2,) ... -2 %= (2,) ... -2 + None ... -2 += None ... -2 - None ... -2 -= None ... -2 * None ... -2 *= None ... -2 / None ... -2 /= None ... -2 ** None ... -2 **= None ... -2 % None ... -2 %= None ... -2 + = 3 -2 += => 3 -2 - = 1 -2 -= => 1 -2 * = 2 -2 *= => 2 -2 / = 2 -2 /= => 2 -2 ** = 2 -2 **= => 2 -2 % = 0 -2 %= => 0 -2 + = 4 -2 += => 4 -2 - = 0 -2 -= => 0 -2 * = 4 -2 *= => 4 -2 / = 1 -2 /= => 1 -2 ** = 4 -2 **= => 4 -2 % = 0 -2 %= => 0 -4.0 + 2 = 6.0 -4.0 += 2 => 6.0 -4.0 - 2 = 2.0 -4.0 -= 2 => 2.0 -4.0 * 2 = 8.0 -4.0 *= 2 => 8.0 -4.0 / 2 = 2.0 -4.0 /= 2 => 2.0 -4.0 ** 2 = 16.0 -4.0 **= 2 => 16.0 -4.0 % 2 = 0.0 -4.0 %= 2 => 0.0 -4.0 + 4.0 = 8.0 -4.0 += 4.0 => 8.0 -4.0 - 4.0 = 0.0 -4.0 -= 4.0 => 0.0 -4.0 * 4.0 = 16.0 -4.0 *= 4.0 => 16.0 -4.0 / 4.0 = 1.0 -4.0 /= 4.0 => 1.0 -4.0 ** 4.0 = 256.0 -4.0 **= 4.0 => 256.0 -4.0 % 4.0 = 0.0 -4.0 %= 4.0 => 0.0 -4.0 + 2 = 6.0 -4.0 += 2 => 6.0 -4.0 - 2 = 2.0 -4.0 -= 2 => 2.0 -4.0 * 2 = 8.0 -4.0 *= 2 => 8.0 -4.0 / 2 = 2.0 -4.0 /= 2 => 2.0 -4.0 ** 2 = 16.0 -4.0 **= 2 => 16.0 -4.0 % 2 = 0.0 -4.0 %= 2 => 0.0 -4.0 + (2+0j) = (6+0j) -4.0 += (2+0j) => (6+0j) -4.0 - (2+0j) = (2+0j) -4.0 -= (2+0j) => (2+0j) -4.0 * (2+0j) = (8+0j) -4.0 *= (2+0j) => (8+0j) -4.0 / (2+0j) = (2+0j) -4.0 /= (2+0j) => (2+0j) -4.0 ** (2+0j) = (16+0j) -4.0 **= (2+0j) => (16+0j) -4.0 % (2+0j) = 0j -4.0 %= (2+0j) => 0j -4.0 + [1] ... -4.0 += [1] ... -4.0 - [1] ... -4.0 -= [1] ... -4.0 * [1] ... -4.0 *= [1] ... -4.0 / [1] ... -4.0 /= [1] ... -4.0 ** [1] ... -4.0 **= [1] ... -4.0 % [1] ... -4.0 %= [1] ... -4.0 + (2,) ... -4.0 += (2,) ... -4.0 - (2,) ... -4.0 -= (2,) ... -4.0 * (2,) ... -4.0 *= (2,) ... -4.0 / (2,) ... -4.0 /= (2,) ... -4.0 ** (2,) ... -4.0 **= (2,) ... -4.0 % (2,) ... -4.0 %= (2,) ... -4.0 + None ... -4.0 += None ... -4.0 - None ... -4.0 -= None ... -4.0 * None ... -4.0 *= None ... -4.0 / None ... -4.0 /= None ... -4.0 ** None ... -4.0 **= None ... -4.0 % None ... -4.0 %= None ... -4.0 + = 5.0 -4.0 += => 5.0 -4.0 - = 3.0 -4.0 -= => 3.0 -4.0 * = 4.0 -4.0 *= => 4.0 -4.0 / = 4.0 -4.0 /= => 4.0 -4.0 ** = 4.0 -4.0 **= => 4.0 -4.0 % = 0.0 -4.0 %= => 0.0 -4.0 + = 6.0 -4.0 += => 6.0 -4.0 - = 2.0 -4.0 -= => 2.0 -4.0 * = 8.0 -4.0 *= => 8.0 -4.0 / = 2.0 -4.0 /= => 2.0 -4.0 ** = 16.0 -4.0 **= => 16.0 -4.0 % = 0.0 -4.0 %= => 0.0 -2 + 2 = 4 -2 += 2 => 4 -2 - 2 = 0 -2 -= 2 => 0 -2 * 2 = 4 -2 *= 2 => 4 -2 / 2 = 1 -2 /= 2 => 1 -2 ** 2 = 4 -2 **= 2 => 4 -2 % 2 = 0 -2 %= 2 => 0 -2 + 4.0 = 6.0 -2 += 4.0 => 6.0 -2 - 4.0 = -2.0 -2 -= 4.0 => -2.0 -2 * 4.0 = 8.0 -2 *= 4.0 => 8.0 -2 / 4.0 = 0.5 -2 /= 4.0 => 0.5 -2 ** 4.0 = 16.0 -2 **= 4.0 => 16.0 -2 % 4.0 = 2.0 -2 %= 4.0 => 2.0 -2 + 2 = 4 -2 += 2 => 4 -2 - 2 = 0 -2 -= 2 => 0 -2 * 2 = 4 -2 *= 2 => 4 -2 / 2 = 1 -2 /= 2 => 1 -2 ** 2 = 4 -2 **= 2 => 4 -2 % 2 = 0 -2 %= 2 => 0 -2 + (2+0j) = (4+0j) -2 += (2+0j) => (4+0j) -2 - (2+0j) = 0j -2 -= (2+0j) => 0j -2 * (2+0j) = (4+0j) -2 *= (2+0j) => (4+0j) -2 / (2+0j) = (1+0j) -2 /= (2+0j) => (1+0j) -2 ** (2+0j) = (4+0j) -2 **= (2+0j) => (4+0j) -2 % (2+0j) = 0j -2 %= (2+0j) => 0j -2 + [1] ... -2 += [1] ... -2 - [1] ... -2 -= [1] ... -2 * [1] = [1, 1] -2 *= [1] => [1, 1] -2 / [1] ... -2 /= [1] ... -2 ** [1] ... -2 **= [1] ... -2 % [1] ... -2 %= [1] ... -2 + (2,) ... -2 += (2,) ... -2 - (2,) ... -2 -= (2,) ... -2 * (2,) = (2, 2) -2 *= (2,) => (2, 2) -2 / (2,) ... -2 /= (2,) ... -2 ** (2,) ... -2 **= (2,) ... -2 % (2,) ... -2 %= (2,) ... -2 + None ... -2 += None ... -2 - None ... -2 -= None ... -2 * None ... -2 *= None ... -2 / None ... -2 /= None ... -2 ** None ... -2 **= None ... -2 % None ... -2 %= None ... -2 + = 3 -2 += => 3 -2 - = 1 -2 -= => 1 -2 * = 2 -2 *= => 2 -2 / = 2 -2 /= => 2 -2 ** = 2 -2 **= => 2 -2 % = 0 -2 %= => 0 -2 + = 4 -2 += => 4 -2 - = 0 -2 -= => 0 -2 * = 4 -2 *= => 4 -2 / = 1 -2 /= => 1 -2 ** = 4 -2 **= => 4 -2 % = 0 -2 %= => 0 -(2+0j) + 2 = (4+0j) -(2+0j) += 2 => (4+0j) -(2+0j) - 2 = 0j -(2+0j) -= 2 => 0j -(2+0j) * 2 = (4+0j) -(2+0j) *= 2 => (4+0j) -(2+0j) / 2 = (1+0j) -(2+0j) /= 2 => (1+0j) -(2+0j) ** 2 = (4+0j) -(2+0j) **= 2 => (4+0j) -(2+0j) % 2 = 0j -(2+0j) %= 2 => 0j -(2+0j) + 4.0 = (6+0j) -(2+0j) += 4.0 => (6+0j) -(2+0j) - 4.0 = (-2+0j) -(2+0j) -= 4.0 => (-2+0j) -(2+0j) * 4.0 = (8+0j) -(2+0j) *= 4.0 => (8+0j) -(2+0j) / 4.0 = (0.5+0j) -(2+0j) /= 4.0 => (0.5+0j) -(2+0j) ** 4.0 = (16+0j) -(2+0j) **= 4.0 => (16+0j) -(2+0j) % 4.0 = (2+0j) -(2+0j) %= 4.0 => (2+0j) -(2+0j) + 2 = (4+0j) -(2+0j) += 2 => (4+0j) -(2+0j) - 2 = 0j -(2+0j) -= 2 => 0j -(2+0j) * 2 = (4+0j) -(2+0j) *= 2 => (4+0j) -(2+0j) / 2 = (1+0j) -(2+0j) /= 2 => (1+0j) -(2+0j) ** 2 = (4+0j) -(2+0j) **= 2 => (4+0j) -(2+0j) % 2 = 0j -(2+0j) %= 2 => 0j -(2+0j) + (2+0j) = (4+0j) -(2+0j) += (2+0j) => (4+0j) -(2+0j) - (2+0j) = 0j -(2+0j) -= (2+0j) => 0j -(2+0j) * (2+0j) = (4+0j) -(2+0j) *= (2+0j) => (4+0j) -(2+0j) / (2+0j) = (1+0j) -(2+0j) /= (2+0j) => (1+0j) -(2+0j) ** (2+0j) = (4+0j) -(2+0j) **= (2+0j) => (4+0j) -(2+0j) % (2+0j) = 0j -(2+0j) %= (2+0j) => 0j -(2+0j) + [1] ... -(2+0j) += [1] ... -(2+0j) - [1] ... -(2+0j) -= [1] ... -(2+0j) * [1] ... -(2+0j) *= [1] ... -(2+0j) / [1] ... -(2+0j) /= [1] ... -(2+0j) ** [1] ... -(2+0j) **= [1] ... -(2+0j) % [1] ... -(2+0j) %= [1] ... -(2+0j) + (2,) ... -(2+0j) += (2,) ... -(2+0j) - (2,) ... -(2+0j) -= (2,) ... -(2+0j) * (2,) ... -(2+0j) *= (2,) ... -(2+0j) / (2,) ... -(2+0j) /= (2,) ... -(2+0j) ** (2,) ... -(2+0j) **= (2,) ... -(2+0j) % (2,) ... -(2+0j) %= (2,) ... -(2+0j) + None ... -(2+0j) += None ... -(2+0j) - None ... -(2+0j) -= None ... -(2+0j) * None ... -(2+0j) *= None ... -(2+0j) / None ... -(2+0j) /= None ... -(2+0j) ** None ... -(2+0j) **= None ... -(2+0j) % None ... -(2+0j) %= None ... -(2+0j) + = (3+0j) -(2+0j) += => (3+0j) -(2+0j) - = (1+0j) -(2+0j) -= => (1+0j) -(2+0j) * = (2+0j) -(2+0j) *= => (2+0j) -(2+0j) / = (2+0j) -(2+0j) /= => (2+0j) -(2+0j) ** = (2+0j) -(2+0j) **= => (2+0j) -(2+0j) % = 0j -(2+0j) %= => 0j -(2+0j) + = (4+0j) -(2+0j) += => (4+0j) -(2+0j) - = 0j -(2+0j) -= => 0j -(2+0j) * = (4+0j) -(2+0j) *= => (4+0j) -(2+0j) / = (1+0j) -(2+0j) /= => (1+0j) -(2+0j) ** = (4+0j) -(2+0j) **= => (4+0j) -(2+0j) % = 0j -(2+0j) %= => 0j -[1] + 2 ... -[1] += 2 ... -[1] - 2 ... -[1] -= 2 ... -[1] * 2 = [1, 1] -[1] *= 2 => [1, 1] -[1] / 2 ... -[1] /= 2 ... -[1] ** 2 ... -[1] **= 2 ... -[1] % 2 ... -[1] %= 2 ... -[1] + 4.0 ... -[1] += 4.0 ... -[1] - 4.0 ... -[1] -= 4.0 ... -[1] * 4.0 ... -[1] *= 4.0 ... -[1] / 4.0 ... -[1] /= 4.0 ... -[1] ** 4.0 ... -[1] **= 4.0 ... -[1] % 4.0 ... -[1] %= 4.0 ... -[1] + 2 ... -[1] += 2 ... -[1] - 2 ... -[1] -= 2 ... -[1] * 2 = [1, 1] -[1] *= 2 => [1, 1] -[1] / 2 ... -[1] /= 2 ... -[1] ** 2 ... -[1] **= 2 ... -[1] % 2 ... -[1] %= 2 ... -[1] + (2+0j) ... -[1] += (2+0j) ... -[1] - (2+0j) ... -[1] -= (2+0j) ... -[1] * (2+0j) ... -[1] *= (2+0j) ... -[1] / (2+0j) ... -[1] /= (2+0j) ... -[1] ** (2+0j) ... -[1] **= (2+0j) ... -[1] % (2+0j) ... -[1] %= (2+0j) ... -[1] + [1] = [1, 1] -[1] += [1] => [1, 1] -[1] - [1] ... -[1] -= [1] ... -[1] * [1] ... -[1] *= [1] ... -[1] / [1] ... -[1] /= [1] ... -[1] ** [1] ... -[1] **= [1] ... -[1] % [1] ... -[1] %= [1] ... -[1] + (2,) ... -[1] += (2,) => [1, 2] -[1] - (2,) ... -[1] -= (2,) ... -[1] * (2,) ... -[1] *= (2,) ... -[1] / (2,) ... -[1] /= (2,) ... -[1] ** (2,) ... -[1] **= (2,) ... -[1] % (2,) ... -[1] %= (2,) ... -[1] + None ... -[1] += None ... -[1] - None ... -[1] -= None ... -[1] * None ... -[1] *= None ... -[1] / None ... -[1] /= None ... -[1] ** None ... -[1] **= None ... -[1] % None ... -[1] %= None ... -[1] + ... -[1] += ... -[1] - ... -[1] -= ... -[1] * ... -[1] *= ... -[1] / ... -[1] /= ... -[1] ** ... -[1] **= ... -[1] % ... -[1] %= ... -[1] + ... -[1] += ... -[1] - ... -[1] -= ... -[1] * ... -[1] *= ... -[1] / ... -[1] /= ... -[1] ** ... -[1] **= ... -[1] % ... -[1] %= ... -(2,) + 2 ... -(2,) += 2 ... -(2,) - 2 ... -(2,) -= 2 ... -(2,) * 2 = (2, 2) -(2,) *= 2 => (2, 2) -(2,) / 2 ... -(2,) /= 2 ... -(2,) ** 2 ... -(2,) **= 2 ... -(2,) % 2 ... -(2,) %= 2 ... -(2,) + 4.0 ... -(2,) += 4.0 ... -(2,) - 4.0 ... -(2,) -= 4.0 ... -(2,) * 4.0 ... -(2,) *= 4.0 ... -(2,) / 4.0 ... -(2,) /= 4.0 ... -(2,) ** 4.0 ... -(2,) **= 4.0 ... -(2,) % 4.0 ... -(2,) %= 4.0 ... -(2,) + 2 ... -(2,) += 2 ... -(2,) - 2 ... -(2,) -= 2 ... -(2,) * 2 = (2, 2) -(2,) *= 2 => (2, 2) -(2,) / 2 ... -(2,) /= 2 ... -(2,) ** 2 ... -(2,) **= 2 ... -(2,) % 2 ... -(2,) %= 2 ... -(2,) + (2+0j) ... -(2,) += (2+0j) ... -(2,) - (2+0j) ... -(2,) -= (2+0j) ... -(2,) * (2+0j) ... -(2,) *= (2+0j) ... -(2,) / (2+0j) ... -(2,) /= (2+0j) ... -(2,) ** (2+0j) ... -(2,) **= (2+0j) ... -(2,) % (2+0j) ... -(2,) %= (2+0j) ... -(2,) + [1] ... -(2,) += [1] ... -(2,) - [1] ... -(2,) -= [1] ... -(2,) * [1] ... -(2,) *= [1] ... -(2,) / [1] ... -(2,) /= [1] ... -(2,) ** [1] ... -(2,) **= [1] ... -(2,) % [1] ... -(2,) %= [1] ... -(2,) + (2,) = (2, 2) -(2,) += (2,) => (2, 2) -(2,) - (2,) ... -(2,) -= (2,) ... -(2,) * (2,) ... -(2,) *= (2,) ... -(2,) / (2,) ... -(2,) /= (2,) ... -(2,) ** (2,) ... -(2,) **= (2,) ... -(2,) % (2,) ... -(2,) %= (2,) ... -(2,) + None ... -(2,) += None ... -(2,) - None ... -(2,) -= None ... -(2,) * None ... -(2,) *= None ... -(2,) / None ... -(2,) /= None ... -(2,) ** None ... -(2,) **= None ... -(2,) % None ... -(2,) %= None ... -(2,) + ... -(2,) += ... -(2,) - ... -(2,) -= ... -(2,) * ... -(2,) *= ... -(2,) / ... -(2,) /= ... -(2,) ** ... -(2,) **= ... -(2,) % ... -(2,) %= ... -(2,) + ... -(2,) += ... -(2,) - ... -(2,) -= ... -(2,) * ... -(2,) *= ... -(2,) / ... -(2,) /= ... -(2,) ** ... -(2,) **= ... -(2,) % ... -(2,) %= ... -None + 2 ... -None += 2 ... -None - 2 ... -None -= 2 ... -None * 2 ... -None *= 2 ... -None / 2 ... -None /= 2 ... -None ** 2 ... -None **= 2 ... -None % 2 ... -None %= 2 ... -None + 4.0 ... -None += 4.0 ... -None - 4.0 ... -None -= 4.0 ... -None * 4.0 ... -None *= 4.0 ... -None / 4.0 ... -None /= 4.0 ... -None ** 4.0 ... -None **= 4.0 ... -None % 4.0 ... -None %= 4.0 ... -None + 2 ... -None += 2 ... -None - 2 ... -None -= 2 ... -None * 2 ... -None *= 2 ... -None / 2 ... -None /= 2 ... -None ** 2 ... -None **= 2 ... -None % 2 ... -None %= 2 ... -None + (2+0j) ... -None += (2+0j) ... -None - (2+0j) ... -None -= (2+0j) ... -None * (2+0j) ... -None *= (2+0j) ... -None / (2+0j) ... -None /= (2+0j) ... -None ** (2+0j) ... -None **= (2+0j) ... -None % (2+0j) ... -None %= (2+0j) ... -None + [1] ... -None += [1] ... -None - [1] ... -None -= [1] ... -None * [1] ... -None *= [1] ... -None / [1] ... -None /= [1] ... -None ** [1] ... -None **= [1] ... -None % [1] ... -None %= [1] ... -None + (2,) ... -None += (2,) ... -None - (2,) ... -None -= (2,) ... -None * (2,) ... -None *= (2,) ... -None / (2,) ... -None /= (2,) ... -None ** (2,) ... -None **= (2,) ... -None % (2,) ... -None %= (2,) ... -None + None ... -None += None ... -None - None ... -None -= None ... -None * None ... -None *= None ... -None / None ... -None /= None ... -None ** None ... -None **= None ... -None % None ... -None %= None ... -None + ... -None += ... -None - ... -None -= ... -None * ... -None *= ... -None / ... -None /= ... -None ** ... -None **= ... -None % ... -None %= ... -None + ... -None += ... -None - ... -None -= ... -None * ... -None *= ... -None / ... -None /= ... -None ** ... -None **= ... -None % ... -None %= ... - + 2 = 3 - += 2 => 3 - - 2 = -1 - -= 2 => -1 - * 2 = 2 - *= 2 => 2 - / 2 = 0 - /= 2 => 0 - ** 2 = 1 - **= 2 => 1 - % 2 = 1 - %= 2 => 1 - + 4.0 = 5.0 - += 4.0 => 5.0 - - 4.0 = -3.0 - -= 4.0 => -3.0 - * 4.0 = 4.0 - *= 4.0 => 4.0 - / 4.0 = 0.25 - /= 4.0 => 0.25 - ** 4.0 = 1.0 - **= 4.0 => 1.0 - % 4.0 = 1.0 - %= 4.0 => 1.0 - + 2 = 3 - += 2 => 3 - - 2 = -1 - -= 2 => -1 - * 2 = 2 - *= 2 => 2 - / 2 = 0 - /= 2 => 0 - ** 2 = 1 - **= 2 => 1 - % 2 = 1 - %= 2 => 1 - + (2+0j) = (3+0j) - += (2+0j) => (3+0j) - - (2+0j) = (-1+0j) - -= (2+0j) => (-1+0j) - * (2+0j) = (2+0j) - *= (2+0j) => (2+0j) - / (2+0j) = (0.5+0j) - /= (2+0j) => (0.5+0j) - ** (2+0j) = (1+0j) - **= (2+0j) => (1+0j) - % (2+0j) = (1+0j) - %= (2+0j) => (1+0j) - + [1] ... - += [1] ... - - [1] ... - -= [1] ... - * [1] = [1] - *= [1] => [1] - / [1] ... - /= [1] ... - ** [1] ... - **= [1] ... - % [1] ... - %= [1] ... - + (2,) ... - += (2,) ... - - (2,) ... - -= (2,) ... - * (2,) = (2,) - *= (2,) => (2,) - / (2,) ... - /= (2,) ... - ** (2,) ... - **= (2,) ... - % (2,) ... - %= (2,) ... - + None ... - += None ... - - None ... - -= None ... - * None ... - *= None ... - / None ... - /= None ... - ** None ... - **= None ... - % None ... - %= None ... - + = 2 - += => 2 - - = 0 - -= => 0 - * = 1 - *= => 1 - / = 1 - /= => 1 - ** = 1 - **= => 1 - % = 0 - %= => 0 - + = 3 - += => 3 - - = -1 - -= => -1 - * = 2 - *= => 2 - / = 0 - /= => 0 - ** = 1 - **= => 1 - % = 1 - %= => 1 - + 2 = 4 - += 2 => 4 - - 2 = 0 - -= 2 => 0 - * 2 = 4 - *= 2 => 4 - / 2 = 1 - /= 2 => 1 - ** 2 = 4 - **= 2 => 4 - % 2 = 0 - %= 2 => 0 - + 4.0 = 6.0 - += 4.0 => 6.0 - - 4.0 = -2.0 - -= 4.0 => -2.0 - * 4.0 = 8.0 - *= 4.0 => 8.0 - / 4.0 = 0.5 - /= 4.0 => 0.5 - ** 4.0 = 16.0 - **= 4.0 => 16.0 - % 4.0 = 2.0 - %= 4.0 => 2.0 - + 2 = 4 - += 2 => 4 - - 2 = 0 - -= 2 => 0 - * 2 = 4 - *= 2 => 4 - / 2 = 1 - /= 2 => 1 - ** 2 = 4 - **= 2 => 4 - % 2 = 0 - %= 2 => 0 - + (2+0j) = (4+0j) - += (2+0j) => (4+0j) - - (2+0j) = 0j - -= (2+0j) => 0j - * (2+0j) = (4+0j) - *= (2+0j) => (4+0j) - / (2+0j) = (1+0j) - /= (2+0j) => (1+0j) - ** (2+0j) = (4+0j) - **= (2+0j) => (4+0j) - % (2+0j) = 0j - %= (2+0j) => 0j - + [1] ... - += [1] ... - - [1] ... - -= [1] ... - * [1] = [1, 1] - *= [1] => [1, 1] - / [1] ... - /= [1] ... - ** [1] ... - **= [1] ... - % [1] ... - %= [1] ... - + (2,) ... - += (2,) ... - - (2,) ... - -= (2,) ... - * (2,) = (2, 2) - *= (2,) => (2, 2) - / (2,) ... - /= (2,) ... - ** (2,) ... - **= (2,) ... - % (2,) ... - %= (2,) ... - + None ... - += None ... - - None ... - -= None ... - * None ... - *= None ... - / None ... - /= None ... - ** None ... - **= None ... - % None ... - %= None ... - + = 3 - += => 3 - - = 1 - -= => 1 - * = 2 - *= => 2 - / = 2 - /= => 2 - ** = 2 - **= => 2 - % = 0 - %= => 0 - + = 4 - += => 4 - - = 0 - -= => 0 - * = 4 - *= => 4 - / = 1 - /= => 1 - ** = 4 - **= => 4 - % = 0 - %= => 0 -divmod(2, 2) = (1, 0) -divmod(2, 4.0) = (0.0, 2.0) -divmod(2, 2) = (1L, 0L) -divmod(2, (2+0j)) = ((1+0j), 0j) -divmod(2, [1]) ... -divmod(2, (2,)) ... -divmod(2, None) ... -divmod(2, ) ... -divmod(2, ) = (1, 0) -divmod(4.0, 2) = (2.0, 0.0) -divmod(4.0, 4.0) = (1.0, 0.0) -divmod(4.0, 2) = (2.0, 0.0) -divmod(4.0, (2+0j)) = ((2+0j), 0j) -divmod(4.0, [1]) ... -divmod(4.0, (2,)) ... -divmod(4.0, None) ... -divmod(4.0, ) ... -divmod(4.0, ) = (2.0, 0.0) -divmod(2, 2) = (1L, 0L) -divmod(2, 4.0) = (0.0, 2.0) -divmod(2, 2) = (1L, 0L) -divmod(2, (2+0j)) = ((1+0j), 0j) -divmod(2, [1]) ... -divmod(2, (2,)) ... -divmod(2, None) ... -divmod(2, ) ... -divmod(2, ) = (1L, 0L) -divmod((2+0j), 2) = ((1+0j), 0j) -divmod((2+0j), 4.0) = (0j, (2+0j)) -divmod((2+0j), 2) = ((1+0j), 0j) -divmod((2+0j), (2+0j)) = ((1+0j), 0j) -divmod((2+0j), [1]) ... -divmod((2+0j), (2,)) ... -divmod((2+0j), None) ... -divmod((2+0j), ) ... -divmod((2+0j), ) = ((1+0j), 0j) -divmod([1], 2) ... -divmod([1], 4.0) ... -divmod([1], 2) ... -divmod([1], (2+0j)) ... -divmod([1], [1]) ... -divmod([1], (2,)) ... -divmod([1], None) ... -divmod([1], ) ... -divmod([1], ) ... -divmod((2,), 2) ... -divmod((2,), 4.0) ... -divmod((2,), 2) ... -divmod((2,), (2+0j)) ... -divmod((2,), [1]) ... -divmod((2,), (2,)) ... -divmod((2,), None) ... -divmod((2,), ) ... -divmod((2,), ) ... -divmod(None, 2) ... -divmod(None, 4.0) ... -divmod(None, 2) ... -divmod(None, (2+0j)) ... -divmod(None, [1]) ... -divmod(None, (2,)) ... -divmod(None, None) ... -divmod(None, ) ... -divmod(None, ) ... -divmod(, 2) ... -divmod(, 4.0) ... -divmod(, 2) ... -divmod(, (2+0j)) ... -divmod(, [1]) ... -divmod(, (2,)) ... -divmod(, None) ... -divmod(, ) ... -divmod(, ) ... -divmod(, 2) = (1, 0) -divmod(, 4.0) = (0.0, 2.0) -divmod(, 2) = (1L, 0L) -divmod(, (2+0j)) = ((1+0j), 0j) -divmod(, [1]) ... -divmod(, (2,)) ... -divmod(, None) ... -divmod(, ) ... -divmod(, ) = (1, 0) Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_coercion.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,29 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:26:32 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_coercion.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py:0: DeprecationWarning: complex divmod(), // and % are deprecated -/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py:1: DeprecationWarning: complex divmod(), // and % are deprecated - import copy -/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py:63: DeprecationWarning: complex divmod(), // and % are deprecated - return other % self.arg -/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_coercion.py:60: DeprecationWarning: complex divmod(), // and % are deprecated - return self.arg % other -FAILED: test output differs -========================== closed ========================== -execution time: 618.596800089 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_commands.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_commands.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_commands.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:19:53 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_getoutput (__main__.CommandTests) ... ok -test_getstatus (__main__.CommandTests) ... ok - ----------------------------------------------------------------------- -Ran 2 tests in 7.524s - -OK -========================== closed ========================== -execution time: 17.2003479004 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_compare.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_compare.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,101 +0,0 @@ -test_compare -2 == 2 -2 == 2.0 -2 == 2 -2 == (2+0j) -2 != [1] -2 != (3,) -2 != None -2 != -2 == -2 == -2.0 == 2 -2.0 == 2.0 -2.0 == 2 -2.0 == (2+0j) -2.0 != [1] -2.0 != (3,) -2.0 != None -2.0 != -2.0 == -2.0 == -2 == 2 -2 == 2.0 -2 == 2 -2 == (2+0j) -2 != [1] -2 != (3,) -2 != None -2 != -2 == -2 == -(2+0j) == 2 -(2+0j) == 2.0 -(2+0j) == 2 -(2+0j) == (2+0j) -(2+0j) != [1] -(2+0j) != (3,) -(2+0j) != None -(2+0j) != -(2+0j) == -(2+0j) == -[1] != 2 -[1] != 2.0 -[1] != 2 -[1] != (2+0j) -[1] == [1] -[1] != (3,) -[1] != None -[1] != -[1] != -[1] != -(3,) != 2 -(3,) != 2.0 -(3,) != 2 -(3,) != (2+0j) -(3,) != [1] -(3,) == (3,) -(3,) != None -(3,) != -(3,) != -(3,) != -None != 2 -None != 2.0 -None != 2 -None != (2+0j) -None != [1] -None != (3,) -None == None -None != -None != -None != - != 2 - != 2.0 - != 2 - != (2+0j) - != [1] - != (3,) - != None - == - != - != - == 2 - == 2.0 - == 2 - == (2+0j) - != [1] - != (3,) - != None - != - == - == - == 2 - == 2.0 - == 2 - == (2+0j) - != [1] - != (3,) - != None - != - == - == Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_compare.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_compare.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py --oldstyle /home/hpk/pypy-dist/lib-python-2.3.4/test/test_compare.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: yes -pypy-revision: 11605 -startdate: Thu Apr 28 20:20:10 2005 - -OUTPUT TEST -see output in: /home/hpk/pypy-dist/lib-python-2.3.4/test/result/test_compare.out -============================================================ -faking -faking -faking -OK -========================== closed ========================== -execution time: 129.927108049 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_compile.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_compile.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,40 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_compile.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:22:20 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -:0: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:0: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -test_argument_handling (__main__.TestSpecifics) ... ok -test_argument_order (__main__.TestSpecifics) ... ok -test_complex_args (__main__.TestSpecifics) ... ok -test_debug_assignment (__main__.TestSpecifics) ... ok -test_duplicate_global_local (__main__.TestSpecifics) ... ok -test_float_literals (__main__.TestSpecifics) ... ok -test_indentation (__main__.TestSpecifics) ... ok -test_literals_with_leading_zeroes (__main__.TestSpecifics) ... ok -test_sequence_unpacking_error (__main__.TestSpecifics) ... ok -test_syntax_error (__main__.TestSpecifics) ... ok -test_unary_minus (__main__.TestSpecifics) ... ok - ----------------------------------------------------------------------- -Ran 11 tests in 8.363s - -OK -========================== closed ========================== -execution time: 45.7873818874 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_complex.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_complex.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,45 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:39:18 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py", line 316 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py", line 313 in test_main - test_support.run_unittest(ComplexTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py", line 75 in test_div - self.check_div(x, y) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_complex.py", line 67 in check_div - q = z.__truediv__(y) -KeyboardInterrupt -test_abs (__main__.ComplexTest) ... ok -test_boolcontext (__main__.ComplexTest) ... ok -test_coerce (__main__.ComplexTest) ... ok -test_conjugate (__main__.ComplexTest) ... ok -test_constructor (__main__.ComplexTest) ... ERROR -test_div (__main__.ComplexTest) ... ========================== closed ========================== -execution time: 899.966392994 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_contains.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_contains.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,15 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_contains.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:54:19 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -========================== closed ========================== -execution time: 10.3121509552 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_cookie.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_cookie.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,323 +0,0 @@ -test_cookie - -Set-Cookie: chips=ahoy; -Set-Cookie: vienna=finger; - chips 'ahoy' 'ahoy' -Set-Cookie: chips=ahoy; - vienna 'finger' 'finger' -Set-Cookie: vienna=finger; - -Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"; - keebler 'E=mc2; L="Loves"; fudge=\n;' 'E=mc2; L="Loves"; fudge=\n;' -Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"; - -Set-Cookie: keebler=E=mc2; - keebler 'E=mc2' 'E=mc2' -Set-Cookie: keebler=E=mc2; -Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme; - - - - - - -If anything blows up after this line, it's from Cookie's doctest. -Running Cookie.__doc__ -Trying: import Cookie -Expecting: nothing -ok -Trying: C = Cookie.SimpleCookie() -Expecting: nothing -ok -Trying: C = Cookie.SerialCookie() -Expecting: nothing -ok -Trying: C = Cookie.SmartCookie() -Expecting: nothing -ok -Trying: C = Cookie.SmartCookie() -Expecting: nothing -ok -Trying: C["fig"] = "newton" -Expecting: nothing -ok -Trying: C["sugar"] = "wafer" -Expecting: nothing -ok -Trying: print C -Expecting: -Set-Cookie: fig=newton; -Set-Cookie: sugar=wafer; -ok -Trying: C = Cookie.SmartCookie() -Expecting: nothing -ok -Trying: C["rocky"] = "road" -Expecting: nothing -ok -Trying: C["rocky"]["path"] = "/cookie" -Expecting: nothing -ok -Trying: print C.output(header="Cookie:") -Expecting: Cookie: rocky=road; Path=/cookie; -ok -Trying: print C.output(attrs=[], header="Cookie:") -Expecting: Cookie: rocky=road; -ok -Trying: C = Cookie.SmartCookie() -Expecting: nothing -ok -Trying: C.load("chips=ahoy; vienna=finger") -Expecting: nothing -ok -Trying: print C -Expecting: -Set-Cookie: chips=ahoy; -Set-Cookie: vienna=finger; -ok -Trying: C = Cookie.SmartCookie() -Expecting: nothing -ok -Trying: C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=\\012;";') -Expecting: nothing -ok -Trying: print C -Expecting: Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=\012;"; -ok -Trying: C = Cookie.SmartCookie() -Expecting: nothing -ok -Trying: C["oreo"] = "doublestuff" -Expecting: nothing -ok -Trying: C["oreo"]["path"] = "/" -Expecting: nothing -ok -Trying: print C -Expecting: Set-Cookie: oreo=doublestuff; Path=/; -ok -Trying: C = Cookie.SmartCookie() -Expecting: nothing -ok -Trying: C["twix"] = "none for you" -Expecting: nothing -ok -Trying: C["twix"].value -Expecting: 'none for you' -ok -Trying: C = Cookie.SimpleCookie() -Expecting: nothing -ok -Trying: C["number"] = 7 -Expecting: nothing -ok -Trying: C["string"] = "seven" -Expecting: nothing -ok -Trying: C["number"].value -Expecting: '7' -ok -Trying: C["string"].value -Expecting: 'seven' -ok -Trying: print C -Expecting: -Set-Cookie: number=7; -Set-Cookie: string=seven; -ok -Trying: C = Cookie.SerialCookie() -Expecting: nothing -ok -Trying: C["number"] = 7 -Expecting: nothing -ok -Trying: C["string"] = "seven" -Expecting: nothing -ok -Trying: C["number"].value -Expecting: 7 -ok -Trying: C["string"].value -Expecting: 'seven' -ok -Trying: print C -Expecting: -Set-Cookie: number="I7\012."; -Set-Cookie: string="S'seven'\012p1\012."; -***************************************************************** -Failure in example: print C -from line #126 of Cookie -Expected: -Set-Cookie: number="I7\012."; -Set-Cookie: string="S'seven'\012p1\012."; -Got: -Set-Cookie: number="I7\012."; -Set-Cookie: string="S'seven'\012p0\012."; -Trying: C = Cookie.SmartCookie() -Expecting: nothing -ok -Trying: C["number"] = 7 -Expecting: nothing -ok -Trying: C["string"] = "seven" -Expecting: nothing -ok -Trying: C["number"].value -Expecting: 7 -ok -Trying: C["string"].value -Expecting: 'seven' -ok -Trying: print C -Expecting: -Set-Cookie: number="I7\012."; -Set-Cookie: string=seven; -ok -Trying: C = Cookie.Cookie() -Expecting: nothing -ok -Trying: print C.__class__.__name__ -Expecting: SmartCookie -ok -1 of 46 examples failed in Cookie.__doc__ -Running Cookie.BaseCookie.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.__doc__ -Running Cookie.BaseCookie._BaseCookie__ParseString.__doc__ -0 of 0 examples failed in Cookie.BaseCookie._BaseCookie__ParseString.__doc__ -Running Cookie.BaseCookie._BaseCookie__set.__doc__ -0 of 0 examples failed in Cookie.BaseCookie._BaseCookie__set.__doc__ -Running Cookie.BaseCookie.__init__.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.__init__.__doc__ -Running Cookie.BaseCookie.__repr__.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.__repr__.__doc__ -Running Cookie.BaseCookie.__setitem__.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.__setitem__.__doc__ -Running Cookie.BaseCookie.__str__.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.__str__.__doc__ -Running Cookie.BaseCookie.js_output.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.js_output.__doc__ -Running Cookie.BaseCookie.load.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.load.__doc__ -Running Cookie.BaseCookie.output.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.output.__doc__ -Running Cookie.BaseCookie.value_decode.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.value_decode.__doc__ -Running Cookie.BaseCookie.value_encode.__doc__ -0 of 0 examples failed in Cookie.BaseCookie.value_encode.__doc__ -Running Cookie.Cookie.__doc__ -0 of 0 examples failed in Cookie.Cookie.__doc__ -Running Cookie.Cookie.__init__.__doc__ -0 of 0 examples failed in Cookie.Cookie.__init__.__doc__ -Running Cookie.Cookie.value_decode.__doc__ -0 of 0 examples failed in Cookie.Cookie.value_decode.__doc__ -Running Cookie.Cookie.value_encode.__doc__ -0 of 0 examples failed in Cookie.Cookie.value_encode.__doc__ -Running Cookie.CookieError.__doc__ -0 of 0 examples failed in Cookie.CookieError.__doc__ -Running Cookie.Morsel.__doc__ -0 of 0 examples failed in Cookie.Morsel.__doc__ -Running Cookie.Morsel.OutputString.__doc__ -0 of 0 examples failed in Cookie.Morsel.OutputString.__doc__ -Running Cookie.Morsel.__init__.__doc__ -0 of 0 examples failed in Cookie.Morsel.__init__.__doc__ -Running Cookie.Morsel.__repr__.__doc__ -0 of 0 examples failed in Cookie.Morsel.__repr__.__doc__ -Running Cookie.Morsel.__setitem__.__doc__ -0 of 0 examples failed in Cookie.Morsel.__setitem__.__doc__ -Running Cookie.Morsel.__str__.__doc__ -0 of 0 examples failed in Cookie.Morsel.__str__.__doc__ -Running Cookie.Morsel.isReservedKey.__doc__ -0 of 0 examples failed in Cookie.Morsel.isReservedKey.__doc__ -Running Cookie.Morsel.js_output.__doc__ -0 of 0 examples failed in Cookie.Morsel.js_output.__doc__ -Running Cookie.Morsel.output.__doc__ -0 of 0 examples failed in Cookie.Morsel.output.__doc__ -Running Cookie.Morsel.set.__doc__ -0 of 0 examples failed in Cookie.Morsel.set.__doc__ -Running Cookie.SerialCookie.__doc__ -0 of 0 examples failed in Cookie.SerialCookie.__doc__ -Running Cookie.SerialCookie.__init__.__doc__ -0 of 0 examples failed in Cookie.SerialCookie.__init__.__doc__ -Running Cookie.SerialCookie.value_decode.__doc__ -0 of 0 examples failed in Cookie.SerialCookie.value_decode.__doc__ -Running Cookie.SerialCookie.value_encode.__doc__ -0 of 0 examples failed in Cookie.SerialCookie.value_encode.__doc__ -Running Cookie.SimpleCookie.__doc__ -0 of 0 examples failed in Cookie.SimpleCookie.__doc__ -Running Cookie.SimpleCookie.value_decode.__doc__ -0 of 0 examples failed in Cookie.SimpleCookie.value_decode.__doc__ -Running Cookie.SimpleCookie.value_encode.__doc__ -0 of 0 examples failed in Cookie.SimpleCookie.value_encode.__doc__ -Running Cookie.SmartCookie.__doc__ -0 of 0 examples failed in Cookie.SmartCookie.__doc__ -Running Cookie.SmartCookie.__init__.__doc__ -0 of 0 examples failed in Cookie.SmartCookie.__init__.__doc__ -Running Cookie.SmartCookie.value_decode.__doc__ -0 of 0 examples failed in Cookie.SmartCookie.value_decode.__doc__ -Running Cookie.SmartCookie.value_encode.__doc__ -0 of 0 examples failed in Cookie.SmartCookie.value_encode.__doc__ -Running Cookie._getdate.__doc__ -0 of 0 examples failed in Cookie._getdate.__doc__ -Running Cookie._quote.__doc__ -0 of 0 examples failed in Cookie._quote.__doc__ -Running Cookie._test.__doc__ -0 of 0 examples failed in Cookie._test.__doc__ -Running Cookie._unquote.__doc__ -0 of 0 examples failed in Cookie._unquote.__doc__ -42 items had no tests: - Cookie.BaseCookie - Cookie.BaseCookie._BaseCookie__ParseString - Cookie.BaseCookie._BaseCookie__set - Cookie.BaseCookie.__init__ - Cookie.BaseCookie.__repr__ - Cookie.BaseCookie.__setitem__ - Cookie.BaseCookie.__str__ - Cookie.BaseCookie.js_output - Cookie.BaseCookie.load - Cookie.BaseCookie.output - Cookie.BaseCookie.value_decode - Cookie.BaseCookie.value_encode - Cookie.Cookie - Cookie.Cookie.__init__ - Cookie.Cookie.value_decode - Cookie.Cookie.value_encode - Cookie.CookieError - Cookie.Morsel - Cookie.Morsel.OutputString - Cookie.Morsel.__init__ - Cookie.Morsel.__repr__ - Cookie.Morsel.__setitem__ - Cookie.Morsel.__str__ - Cookie.Morsel.isReservedKey - Cookie.Morsel.js_output - Cookie.Morsel.output - Cookie.Morsel.set - Cookie.SerialCookie - Cookie.SerialCookie.__init__ - Cookie.SerialCookie.value_decode - Cookie.SerialCookie.value_encode - Cookie.SimpleCookie - Cookie.SimpleCookie.value_decode - Cookie.SimpleCookie.value_encode - Cookie.SmartCookie - Cookie.SmartCookie.__init__ - Cookie.SmartCookie.value_decode - Cookie.SmartCookie.value_encode - Cookie._getdate - Cookie._quote - Cookie._test - Cookie._unquote -***************************************************************** -1 items had failures: - 1 of 46 in Cookie -46 tests in 43 items. -45 passed and 1 failed. -***Test Failed*** 1 failures. Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_cookie.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,28 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cookie.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:54:29 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_cookie.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cookie.py", line 52 in ? -run_doctest(Cookie) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest - raise TestFailed("%d of %d doctests failed" % (f, t)) -TestFailed: 1 of 46 doctests failed -FAILED: test output differs -========================== closed ========================== -execution time: 379.597671986 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_copy.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_copy.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,79 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_copy.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:23:06 2005 - -============================================================ -faking -faking -faking -faking -faking -test_copy_atomic (__main__.TestCopy) ... ok -test_copy_basic (__main__.TestCopy) ... ok -test_copy_cant (__main__.TestCopy) ... ok -test_copy_copy (__main__.TestCopy) ... ok -test_copy_dict (__main__.TestCopy) ... ok -test_copy_inst_copy (__main__.TestCopy) ... ok -test_copy_inst_getinitargs (__main__.TestCopy) ... ok -test_copy_inst_getstate (__main__.TestCopy) ... ok -test_copy_inst_getstate_setstate (__main__.TestCopy) ... ok -test_copy_inst_setstate (__main__.TestCopy) ... ok -test_copy_inst_vanilla (__main__.TestCopy) ... ok -test_copy_list (__main__.TestCopy) ... ok -test_copy_list_subclass (__main__.TestCopy) ... ok -test_copy_reduce (__main__.TestCopy) ... ok -test_copy_reduce_ex (__main__.TestCopy) ... ok -test_copy_registry (__main__.TestCopy) ... ok -test_copy_slots (__main__.TestCopy) ... ok -test_copy_tuple (__main__.TestCopy) ... ok -test_copy_tuple_subclass (__main__.TestCopy) ... ok -test_deepcopy_atomic (__main__.TestCopy) ... ok -test_deepcopy_basic (__main__.TestCopy) ... ok -test_deepcopy_cant (__main__.TestCopy) ... ok -test_deepcopy_deepcopy (__main__.TestCopy) ... ok -test_deepcopy_dict (__main__.TestCopy) ... ok -test_deepcopy_inst_deepcopy (__main__.TestCopy) ... ok -test_deepcopy_inst_getinitargs (__main__.TestCopy) ... ok -test_deepcopy_inst_getstate (__main__.TestCopy) ... ok -test_deepcopy_inst_getstate_setstate (__main__.TestCopy) ... ok -test_deepcopy_inst_setstate (__main__.TestCopy) ... ok -test_deepcopy_inst_vanilla (__main__.TestCopy) ... ok -test_deepcopy_issubclass (__main__.TestCopy) ... ok -test_deepcopy_keepalive (__main__.TestCopy) ... ok -test_deepcopy_list (__main__.TestCopy) ... ok -test_deepcopy_list_subclass (__main__.TestCopy) ... ok -test_deepcopy_memo (__main__.TestCopy) ... ok -test_deepcopy_reduce (__main__.TestCopy) ... ok -test_deepcopy_reduce_ex (__main__.TestCopy) ... ok -test_deepcopy_reflexive_dict (__main__.TestCopy) ... ok -test_deepcopy_reflexive_inst (__main__.TestCopy) ... ok -test_deepcopy_reflexive_list (__main__.TestCopy) ... ok -test_deepcopy_reflexive_tuple (__main__.TestCopy) ... ok -test_deepcopy_registry (__main__.TestCopy) ... ok -test_deepcopy_slots (__main__.TestCopy) ... ok -test_deepcopy_tuple (__main__.TestCopy) ... ok -test_deepcopy_tuple_subclass (__main__.TestCopy) ... ok -test_exceptions (__main__.TestCopy) ... ok -test_getstate_exc (__main__.TestCopy) ... ok -test_reconstruct_nostate (__main__.TestCopy) ... ok -test_reconstruct_reflexive (__main__.TestCopy) ... ok -test_reconstruct_state (__main__.TestCopy) ... ok -test_reconstruct_state_setstate (__main__.TestCopy) ... ok -test_reconstruct_string (__main__.TestCopy) ... ok -test_reduce_4tuple (__main__.TestCopy) ... ok -test_reduce_5tuple (__main__.TestCopy) ... ok - ----------------------------------------------------------------------- -Ran 54 tests in 28.907s - -OK -========================== closed ========================== -execution time: 38.0915360451 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_copy_reg.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,34 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_copy_reg.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:23:44 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_bool (__main__.CopyRegTestCase) ... ok -test_class (__main__.CopyRegTestCase) ... ok -test_extension_registry (__main__.CopyRegTestCase) ... ok -test_noncallable_constructor (__main__.CopyRegTestCase) ... ok -test_noncallable_reduce (__main__.CopyRegTestCase) ... ok - ----------------------------------------------------------------------- -Ran 5 tests in 4.719s - -OK -========================== closed ========================== -execution time: 25.5751731396 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_cpickle.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,48 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cpickle.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:01:42 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cpickle.py", line 103 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_cpickle.py", line 99 in test_main - cPickleFastPicklerTests - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "pickletester.py", line 777 in test_dict_chunking - y = self.loads(s) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 1394 in loads - return Unpickler(file).load() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 872 in load - dispatch[key](self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 926 in load_int - data = self.readline() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/StringIO.py", line 129 in readline - r = self.buf[self.pos:newpos] -KeyboardInterrupt -test_dict_chunking (__main__.cPickleTests) ... ========================== closed ========================== -execution time: 900.079277039 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_crypt.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_crypt.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:16:43 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_crypt.py", line 7 in ? -import crypt -ImportError: crypt -========================== closed ========================== -execution time: 4.3122279644 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_csv.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_csv.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,23 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_csv.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:16:47 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_csv.py", line 8 in ? -import csv - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/csv.py", line 7 in ? -from _csv import Error, __version__, writer, reader, register_dialect, \ -ImportError: _csv -========================== closed ========================== -execution time: 5.46783208847 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_curses.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_curses.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_curses.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:16:53 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_curses.py", line 11 in ? -import curses, sys, tempfile - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/curses/__init__.py", line 15 in ? -from _curses import * -ImportError: _curses -========================== closed ========================== -execution time: 0.830815076828 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_datetime.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,123 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_datetime.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:24:09 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_datetime.py", line 3113 in ? - test_main() - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_datetime.py", line 3096 in test_main - test_support.run_suite(thesuite) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_datetime.py", line 565 in test_ordinal_conversions - self.assertEqual(d, d2) -KeyboardInterrupt -test_constants (__main__.TestModule) ... ok -test_non_abstractness (__main__.TestTZInfo) ... ok -test_normal (__main__.TestTZInfo) ... ok -test_pickling_base (__main__.TestTZInfo) ... ok -test_pickling_subclass (__main__.TestTZInfo) ... ok -test_subclass_must_override (__main__.TestTZInfo) ... ok -test_basic_attributes (__main__.TestTimeDelta) ... ok -test_bool (__main__.TestTimeDelta) ... ok -test_carries (__main__.TestTimeDelta) ... ok -test_compare (__main__.TestTimeDelta) ... ok -test_computations (__main__.TestTimeDelta) ... ok -test_constructor (__main__.TestTimeDelta) ... ok -test_disallowed_computations (__main__.TestTimeDelta) ... ok -test_harmful_mixed_comparison (__main__.TestTimeDelta) ... ok -test_harmless_mixed_comparison (__main__.TestTimeDelta) ... ok -test_hash_equality (__main__.TestTimeDelta) ... ok -test_massive_normalization (__main__.TestTimeDelta) ... ok -test_microsecond_rounding (__main__.TestTimeDelta) ... ok -test_overflow (__main__.TestTimeDelta) ... ok -test_pickling (__main__.TestTimeDelta) ... ok -test_resolution_info (__main__.TestTimeDelta) ... ok -test_roundtrip (__main__.TestTimeDelta) ... ok -test_str (__main__.TestTimeDelta) ... ok -test_subclass_timedelta (__main__.TestTimeDelta) ... ok -test_delta_non_days_ignored (__main__.TestDateOnly) ... ok -test_bad_constructor_arguments (__main__.TestDate) ... ok -test_basic_attributes (__main__.TestDate) ... ok -test_bool (__main__.TestDate) ... ok -test_compare (__main__.TestDate) ... ok -test_computations (__main__.TestDate) ... ok -test_ctime (__main__.TestDate) ... ok -test_extreme_ordinals (__main__.TestDate) ... ok -test_extreme_timedelta (__main__.TestDate) ... ok -test_fromtimestamp (__main__.TestDate) ... ok -test_harmful_mixed_comparison (__main__.TestDate) ... ok -test_harmless_mixed_comparison (__main__.TestDate) ... ok -test_hash_equality (__main__.TestDate) ... ok -test_iso_long_years (__main__.TestDate) ... ok -test_isocalendar (__main__.TestDate) ... ok -test_isoformat (__main__.TestDate) ... ok -test_mixed_compare (__main__.TestDate) ... ok -test_ordinal_conversions (__main__.TestDate) ... ok -test_overflow (__main__.TestDate) ... ok -test_pickling (__main__.TestDate) ... ok -test_replace (__main__.TestDate) ... ok -test_resolution_info (__main__.TestDate) ... ok -test_roundtrip (__main__.TestDate) ... ok -test_srftime_out_of_range (__main__.TestDate) ... ok -test_strftime (__main__.TestDate) ... ok -test_subclass_date (__main__.TestDate) ... ok -test_timetuple (__main__.TestDate) ... ok -test_today (__main__.TestDate) ... ok -test_weekday (__main__.TestDate) ... ok -test_astimezone (__main__.TestDateTime) ... ok -test_bad_constructor_arguments (__main__.TestDateTime) ... ok -test_basic_attributes (__main__.TestDateTime) ... ok -test_basic_attributes_nonzero (__main__.TestDateTime) ... ok -test_bool (__main__.TestDateTime) ... ok -test_combine (__main__.TestDateTime) ... ok -test_compare (__main__.TestDateTime) ... ok -test_computations (__main__.TestDateTime) ... ok -test_ctime (__main__.TestDateTime) ... ok -test_extract (__main__.TestDateTime) ... ok -test_extreme_ordinals (__main__.TestDateTime) ... ok -test_extreme_timedelta (__main__.TestDateTime) ... ok -test_fromtimestamp (__main__.TestDateTime) ... ok -test_harmful_mixed_comparison (__main__.TestDateTime) ... ok -test_harmless_mixed_comparison (__main__.TestDateTime) ... ok -test_hash_equality (__main__.TestDateTime) ... ok -test_iso_long_years (__main__.TestDateTime) ... ok -test_isocalendar (__main__.TestDateTime) ... ok -test_isoformat (__main__.TestDateTime) ... ok -test_mixed_compare (__main__.TestDateTime) ... ok -test_more_compare (__main__.TestDateTime) ... ok -test_more_ctime (__main__.TestDateTime) ... ok -test_more_pickling (__main__.TestDateTime) ... ok -test_more_strftime (__main__.TestDateTime) ... ok -test_more_timetuple (__main__.TestDateTime) ... ok -test_ordinal_conversions (__main__.TestDateTime) ... ========================== closed ========================== -execution time: 904.02614212 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_dbm.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dbm.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:31:55 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dbm.py", line 7 in ? -import dbm -ImportError: dbm -========================== closed ========================== -execution time: 3.99978995323 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_descr.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_descr.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,28 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descr.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:32:00 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descr.py", line 4050 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descr.py", line 3956 in test_main - weakref_segfault() # Must be first, somehow - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descr.py", line 3924 in weakref_segfault - import weakref - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/weakref.py", line 14 in ? -from _weakref import \ -ImportError: _weakref -Testing weakref segfault... -========================== closed ========================== -execution time: 20.6545219421 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_descrtut.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,181 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descrtut.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:32:21 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -***************************************************************** -Failure in example: print defaultdict # show our type -from line #4 of test.test_descrtut.__test__.tut1 -Expected: -Got: -***************************************************************** -Failure in example: print type(defaultdict) # its metatype -from line #6 of test.test_descrtut.__test__.tut1 -Expected: -Got: -***************************************************************** -Failure in example: print type(a) # show its type -from line #11 of test.test_descrtut.__test__.tut1 -Expected: -Got: -***************************************************************** -Failure in example: print a.__class__ # show its class -from line #13 of test.test_descrtut.__test__.tut1 -Expected: -Got: -***************************************************************** -Failure in example: print sorted(a.keys()) -from line #40 of test.test_descrtut.__test__.tut1 -Expected: [1, 2, '__builtins__', 'x'] -Got: ['__builtins__', 'x', 1, 2] -***************************************************************** -Failure in example: exec "print foo" in a -from line #49 of test.test_descrtut.__test__.tut1 -Expected: -Traceback (most recent call last): - File "", line 1, in ? - File "", line 1, in ? -NameError: name 'foo' is not defined -Got: 0.0 -***************************************************************** -Failure in example: type([]) -from line #6 of test.test_descrtut.__test__.tut3 -Expected: -Got: -***************************************************************** -Failure in example: [].__class__ -from line #8 of test.test_descrtut.__test__.tut3 -Expected: -Got: -***************************************************************** -Failure in example: list -from line #10 of test.test_descrtut.__test__.tut3 -Expected: -Got: -***************************************************************** -Failure in example: -pprint.pprint(dir(list)) # like list.__dict__.keys(), but sorted -from line #30 of test.test_descrtut.__test__.tut3 -Expected: -['__add__', - '__class__', - '__contains__', - '__delattr__', - '__delitem__', - '__delslice__', - '__doc__', - '__eq__', - '__ge__', - '__getattribute__', - '__getitem__', - '__getslice__', - '__gt__', - '__hash__', - '__iadd__', - '__imul__', - '__init__', - '__iter__', - '__le__', - '__len__', - '__lt__', - '__mul__', - '__ne__', - '__new__', - '__reduce__', - '__reduce_ex__', - '__repr__', - '__rmul__', - '__setattr__', - '__setitem__', - '__setslice__', - '__str__', - 'append', - 'count', - 'extend', - 'index', - 'insert', - 'pop', - 'remove', - 'reverse', - 'sort'] -Got: -['__add__', - '__class__', - '__contains__', - '__delattr__', - '__delitem__', - '__eq__', - '__ge__', - '__getattribute__', - '__getitem__', - '__gt__', - '__hash__', - '__iadd__', - '__imul__', - '__init__', - '__iter__', - '__le__', - '__len__', - '__lt__', - '__mul__', - '__ne__', - '__new__', - '__radd__', - '__reduce__', - '__reduce_ex__', - '__repr__', - '__reversed__', - '__rmul__', - '__setattr__', - '__setitem__', - '__str__', - 'append', - 'count', - 'extend', - 'index', - 'insert', - 'pop', - 'remove', - 'reverse', - 'sort'] -***************************************************************** -Failure in example: property -from line #50 of test.test_descrtut.__test__.tut5 -Expected: -Got: -***************************************************************** -Failure in example: C().foo() -from line #15 of test.test_descrtut.__test__.tut8 -Expected: -TypeError: unbound method foo() must be called with B instance as first argument (got C instance instead) -Got: -TypeError: unbound method must be called with instance as first argument -***************************************************************** -4 items had failures: - 6 of 30 in test.test_descrtut.__test__.tut1 - 4 of 1Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descrtut.py", line 503 in ? - test_main(1) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_descrtut.py", line 499 in test_main - test_support.run_doctest(test_descrtut, verbose) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest - raise TestFailed("%d of %d doctests failed" % (f, t)) -TestFailed: 12 of 96 doctests failed -3 in test.test_descrtut.__test__.tut3 - 1 of 15 in test.test_descrtut.__test__.tut5 - 1 of 6 in test.test_descrtut.__test__.tut8 -***Test Failed*** 12 failures. -========================== closed ========================== -execution time: 341.696279049 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_difflib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,76 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_difflib.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:38:03 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_difflib.py", line 17 in ? -test_support.run_unittest(TestSFbugs, Doctests) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 423 in runTest - self.__testFunc() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 1359 in runit - _utest(tester, name, doc, filename, lineno) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 1298 in _utest - failures, tries = tester.runstring(doc, name) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 743 in runstring - self.compileflags, self.optionflags) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 510 in _run_examples - optionflags) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442 in _run_examples_inner - compileflags, 1) in globs - File "", line 1 in ? - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 54 in pprint - printer.pprint(object) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 105 in pprint - self._stream.write(self.pformat(object) + "\n") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 109 in pformat - self._format(object, sio, 0, 0, {}, 0) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 127 in _format - rep = self._repr(object, context, level - 1) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 191 in _repr - self._depth, level) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 203 in format - return _safe_repr(object, context, maxlevels, level) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 277 in _safe_repr - orepr, oreadable, orecur = _safe_repr(o, context, maxlevels, level) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 277 in _safe_repr - orepr, oreadable, orecur = _safe_repr(o, context, maxlevels, level) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pprint.py", line 268 in _safe_repr - if objid in context: -KeyboardInterrupt -test_ratio_for_null_seqn (__main__.TestSFbugs) ... ok -doctest of difflib.Differ ... ok -doctest of difflib.Differ._fancy_replace ... ok -doctest of difflib.Differ._qformat ... ok -doctest of difflib.Differ.compare ... ok -doctest of difflib.IS_CHARACTER_JUNK ... ok -doctest of difflib.IS_LINE_JUNK ... ok -doctest of difflib.SequenceMatcher ... ok -doctest of difflib.SequenceMatcher.find_longest_match ... ok -doctest of difflib.SequenceMatcher.get_grouped_opcodes ... ========================== closed ========================== -execution time: 899.986752033 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_dircache.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,27 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_dircache.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:39:14 2005 - -============================================================ -faking -faking -faking -faking -faking -test_annotate (__main__.DircacheTests) ... ok -test_listdir (__main__.DircacheTests) ... ok - ----------------------------------------------------------------------- -Ran 2 tests in 2.794s - -OK -========================== closed ========================== -execution time: 13.2859859467 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_dis.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_dis.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,33 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_dis.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:39:27 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -test_boundaries (__main__.DisTests) ... ok -test_bug_708901 (__main__.DisTests) ... ok -test_dis (__main__.DisTests) ... ok -test_opmap (__main__.DisTests) ... ok -test_opname (__main__.DisTests) ... ok - ----------------------------------------------------------------------- -Ran 5 tests in 9.770s - -OK -========================== closed ========================== -execution time: 19.4439890385 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_dl.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_dl.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dl.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:53:55 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dl.py", line 6 in ? -import dl -ImportError: dl -========================== closed ========================== -execution time: 0.777956008911 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_doctest.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,474 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_doctest.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 23:53:56 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -Running doctest.__doc__ -Trying: [1, 2, 3].remove(42) -Expecting: -Traceback (most recent call last): - File "", line 1, in ? -ValueError: list.remove(x): x not in list -ok -Trying: x = 12 -Expecting: nothing -ok -Trying: x -Expecting: 12 -ok -Trying: -if x == 13: - print "yes" -else: - print "no" - print "NO" - print "NO!!!" -Expecting: -no -NO -NO!!! -ok -Trying: -if "yes" == \ - "y" + \ - "es": # in the source code you'll see the doubled backslashes - print 'yes' -Expecting: yes -ok -Trying: assert "Easy!" -Expecting: nothing -ok -Trying: import math -Expecting: nothing -ok -Trying: math.floor(1.9) -Expecting: 1.0 -ok -0 of 8 examples failed in doctest.__doc__ -Running doctest.DocTestSuite.__doc__ -0 of 0 examples failed in doctest.DocTestSuite.__doc__ -Running doctest.DocTestTestFailure.__doc__ -0 of 0 examples failed in doctest.DocTestTestFailure.__doc__ -Running doctest.Tester.__doc__ -Trying: from doctest import Tester -Expecting: nothing -ok -Trying: t = Tester(globs={'x': 42}, verbose=0) -Expecting: nothing -ok -Trying: -t.runstring(r''' - >>> x = x * 2 - >>> print x - 42 -''', 'XYZ') -Expecting: -***************************************************************** -Failure in example: print x -from line #2 of XYZ -Expected: 42 -Got: 84 -(1, 2) -ok -Trying: t.runstring(">>> x = x * 2\n>>> print x\n84\n", 'example2') -Expecting: (0, 2) -ok -Trying: t.summarize() -Expecting: -***************************************************************** -1 items had failures: - 1 of 2 in XYZ -***Test Failed*** 1 failures. -(1, 4) -ok -Trying: t.summarize(verbose=1) -Expecting: -1 items passed all tests: - 2 tests in example2 -***************************************************************** -1 items had failures: - 1 of 2 in XYZ -4 tests in 2 items. -3 passed and 1 failed. -***Test Failed*** 1 failures. -(1, 4) -ok -0 of 6 examples failed in doctest.Tester.__doc__ -Running doctest.Tester._Tester__record_outcome.__doc__ -0 of 0 examples failed in doctest.Tester._Tester__record_outcome.__doc__ -Running doctest.Tester._Tester__runone.__doc__ -0 of 0 examples failed in doctest.Tester._Tester__runone.__doc__ -Running doctest.Tester.__init__.__doc__ -0 of 0 examples failed in doctest.Tester.__init__.__doc__ -Running doctest.Tester.merge.__doc__ -Trying: from doctest import Tester -Expecting: nothing -ok -Trying: t1 = Tester(globs={}, verbose=0) -Expecting: nothing -ok -Trying: -t1.runstring(''' ->>> x = 12 ->>> print x -12 -''', "t1example") -Expecting: (0, 2) -ok -Trying: t2 = Tester(globs={}, verbose=0) -Expecting: nothing -ok -Trying: -t2.runstring(''' ->>> x = 13 ->>> print x -13 -''', "t2example") -Expecting: (0, 2) -ok -Trying: common = ">>> assert 1 + 2 == 3\n" -Expecting: nothing -ok -Trying: t1.runstring(common, "common") -Expecting: (0, 1) -ok -Trying: t2.runstring(common, "common") -Expecting: (0, 1) -ok -Trying: t1.merge(t2) -Expecting: *** Tester.merge: 'common' in both testers; summing outcomes. -ok -Trying: t1.summarize(1) -Expecting: -3 items passed all tests: - 2 tests in common - 2 tests in t1example - 2 tests in t2example -6 tests in 3 items. -6 passed and 0 failed. -Test passed. -(0, 6) -ok -0 of 10 examples failed in doctest.Tester.merge.__doc__ -Running doctest.Tester.run__test__.__doc__ -0 of 0 examples failed in doctest.Tester.run__test__.__doc__ -Running doctest.Tester.rundict.__doc__ -Trying: import new -Expecting: nothing -ok -Trying: m1 = new.module('_m1') -Expecting: nothing -ok -Trying: m2 = new.module('_m2') -Expecting: nothing -ok -Trying: -test_data = """ -def _f(): - '''>>> assert 1 == 1 - ''' -def g(): - '''>>> assert 2 != 1 - ''' -class H: - '''>>> assert 2 > 1 - ''' - def bar(self): - '''>>> assert 1 < 2 - ''' -""" -Expecting: nothing -ok -Trying: exec test_data in m1.__dict__ -Expecting: nothing -ok -Trying: exec test_data in m2.__dict__ -Expecting: nothing -ok -Trying: m1.__dict__.update({"f2": m2._f, "g2": m2.g, "h2": m2.H}) -Expecting: nothing -ok -Trying: t = Tester(globs={}, verbose=0, isprivate=is_private) -Expecting: nothing -ok -Trying: -t.rundict(m1.__dict__, "rundict_test", m1) # _f, f2 and g2 and h2 skipped -Expecting: (0, 3) -ok -Trying: t = Tester(globs={}, verbose=0) -Expecting: nothing -ok -Trying: -t.rundict(m1.__dict__, "rundict_test_pvt", m1) # Only f2, g2 and h2 skipped -Expecting: (0, 4) -ok -Trying: t = Tester(globs={}, verbose=0) -Expecting: nothing -ok -Trying: t.rundict(m1.__dict__, "rundict_test_pvt") # None are skipped. -Expecting: (0, 8) -ok -Trying: testmod(m1, isprivate=is_private) -Expecting: (0, 3) -ok -0 of 14 examples failed in doctest.Tester.rundict.__doc__ -Running doctest.Tester.rundoc.__doc__ -Trying: t = Tester(globs={}, verbose=0) -Expecting: nothing -ok -Trying: -def _f(): - '''Trivial docstring example. - >>> assert 2 == 2 - ''' - return 32 -Expecting: nothing -ok -Trying: t.rundoc(_f) # expect 0 failures in 1 example -Expecting: (0, 1) -ok -0 of 3 examples failed in doctest.Tester.rundoc.__doc__ -Running doctest.Tester.runstring.__doc__ -Trying: t = Tester(globs={}, verbose=1) -Expecting: nothing -ok -Trying: -test = r''' - # just an example - >>> x = 1 + 2 - >>> x - 3 -''' -Expecting: nothing -ok -Trying: t.runstring(test, "Example") -Expecting: -Running string Example -Trying: x = 1 + 2 -Expecting: nothing -ok -Trying: x -Expecting: 3 -ok -0 of 2 examples failed in string Example -(0, 2) -ok -0 of 3 examples failed in doctest.Tester.runstring.__doc__ -Running doctest.Tester.summarize.__doc__ -0 of 0 examples failed in doctest.Tester.summarize.__doc__ -Running doctest._SpoofOut.__doc__ -0 of 0 examples failed in doctest._SpoofOut.__doc__ -Running doctest._SpoofOut.__init__.__doc__ -0 of 0 examples failed in doctest._SpoofOut.__init__.__doc__ -Running doctest._SpoofOut.clear.__doc__ -0 of 0 examples failed in doctest._SpoofOut.clear.__doc__ -Running doctest._SpoofOut.flush.__doc__ -0 of 0 examples failed in doctest._SpoofOut.flush.__doc__ -Running doctest._SpoofOut.get.__doc__ -0 of 0 examples failed in doctest._SpoofOut.get.__doc__ -Running doctest._SpoofOut.write.__doc__ -0 of 0 examples failed in doctest._SpoofOut.write.__doc__ -Running doctest._TestClass.__doc__ -Trying: _TestClass(13).get() + _TestClass(-12).get() -Expecting: 1 -ok -Trying: hex(_TestClass(13).square().get()) -Expecting: '0xa9' -ok -0 of 2 examples failed in doctest._TestClass.__doc__ -Running doctest._TestClass.__init__.__doc__ -Trying: t = _TestClass(123) -Expecting: nothing -ok -Trying: print t.get() -Expecting: 123 -ok -0 of 2 examples failed in doctest._TestClass.__init__.__doc__ -Running doctest._TestClass.get.__doc__ -Trying: x = _TestClass(-42) -Expecting: nothing -ok -Trying: print x.get() -Expecting: -42 -ok -0 of 2 examples failed in doctest._TestClass.get.__doc__ -Running doctest._TestClass.square.__doc__ -Trying: _TestClass(13).square().get() -Expecting: 169 -ok -0 of 1 examples failed in doctest._TestClass.square.__doc__ -Running doctest._expect.__doc__ -0 of 0 examples failed in doctest._expect.__doc__ -Running doctest._extract_doctests.__doc__ -0 of 0 examples failed in doctest._extract_doctests.__doc__ -Running doctest._extract_examples.__doc__ -0 of 0 examples failed in doctest._extract_examples.__doc__ -Running doctest._extract_future_flags.__doc__ -0 of 0 examples failed in doctest._extract_future_flags.__doc__ -Running doctest._find_tests.__doc__ -0 of 0 examples failed in doctest._find_tests.__doc__ -Running doctest._from_module.__doc__ -0 of 0 examples failed in doctest._from_module.__doc__ -Running doctest._get_doctest.__doc__ -0 of 0 examples failed in doctest._get_doctest.__doc__ -Running doctest._normalize_module.__doc__ -0 of 0 examples failed in doctest._normalize_module.__doc__ -Running doctest._run_examples.__doc__ -0 of 0 examples failed in doctest._run_examples.__doc__ -Running doctest._run_examples_inner.__doc__ -0 of 0 examples failed in doctest._run_examples_inner.__doc__ -Running doctest._tag_out.__doc__ -0 of 0 examples failed in doctest._tag_out.__doc__ -Running doctest._test.__doc__ -0 of 0 examples failed in doctest._test.__doc__ -Running doctest._utest.__doc__ -0 of 0 examples failed in doctest._utest.__doc__ -Running doctest.debug.__doc__ -0 of 0 examples failed in doctest.debug.__doc__ -Running doctest.is_private.__doc__ -Trying: is_private("a.b", "my_func") -Expecting: False -ok -Trying: is_private("____", "_my_func") -Expecting: True -ok -Trying: is_private("someclass", "__init__") -Expecting: False -ok -Trying: is_private("sometypo", "__init_") -Expecting: True -ok -Trying: is_private("x.y.z", "_") -Expecting: True -ok -Trying: is_private("_x.y.z", "__") -Expecting: False -ok -Trying: is_private("", "") # senseless but consistent -Expecting: False -ok -0 of 7 examples failed in doctest.is_private.__doc__ -Running doctest.run_docstring_examples.__doc__ -0 of 0 examples failed in doctest.run_docstring_examples.__doc__ -Running doctest.testmod.__doc__ -0 of 0 examples failed in doctest.testmod.__doc__ -Running doctest.testsource.__doc__ -0 of 0 examples failed in doctest.testsource.__doc__ -Running doctest.__test__._TestClass.__doc__ -Trying: _TestClass(13).get() + _TestClass(-12).get() -Expecting: 1 -ok -Trying: hex(_TestClass(13).square().get()) -Expecting: '0xa9' -ok -0 of 2 examples failed in doctest.__test__._TestClass.__doc__ -Running doctest.__test__._TestClass.__init__.__doc__ -Trying: t = _TestClass(123) -Expecting: nothing -ok -Trying: print t.get() -Expecting: 123 -ok -0 of 2 examples failed in doctest.__test__._TestClass.__init__.__doc__ -Running doctest.__test__._TestClass.get.__doc__ -Trying: x = _TestClass(-42) -Expecting: nothing -ok -Trying: print x.get() -Expecting: -42 -ok -0 of 2 examples failed in doctest.__test__._TestClass.get.__doc__ -Running doctest.__test__._TestClass.square.__doc__ -Trying: _TestClass(13).square().get() -Expecting: 169 -ok -0 of 1 examples failed in doctest.__test__._TestClass.square.__doc__ -Running string doctest.__test__.bool-int equivalence -Trying: 4 == 4 -Expecting: 1 -ok -Trying: 4 == 4 -Expecting: True -ok -Trying: 4 > 4 -Expecting: 0 -ok -Trying: 4 > 4 -Expecting: False -ok -0 of 4 examples failed in string doctest.__test__.bool-int equivalence -Running string doctest.__test__.string -Trying: x = 1; y = 2 -Expecting: nothing -ok -Trying: x + y, x * y -Expecting: (3, 2) -ok -0 of 2 examples failed in string doctest.__test__.string -30 items had no tests: - doctest.DocTestSuite - doctest.DocTestTestFailure - doctest.Tester._Tester__record_outcome - doctest.Tester._Tester__runone - doctest.Tester.__init__ - doctest.Tester.run__test__ - doctest.Tester.summarize - doctest._SpoofOut - doctest._SpoofOut.__init__ - doctest._SpoofOut.clear - doctest._SpoofOut.flush - doctest._SpoofOut.get - doctest._SpoofOut.write - doctest._expect - doctest._extract_doctests - doctest._extract_examples - doctest._extract_future_flags - doctest._find_tests - doctest._from_module - doctest._get_doctest - doctest._normalize_module - doctest._run_examples - doctest._run_examples_inner - doctest._tag_out - doctest._test - doctest._utest - doctest.debug - doctest.run_docstring_examples - doctest.testmod - doctest.testsource -17 items passed all tests: - 8 tests in doctest - 6 tests in doctest.Tester - 10 tests in doctest.Tester.merge - 14 tests in doctest.Tester.rundict - 3 tests in doctest.Tester.rundoc - 3 tests in doctest.Tester.runstring - 2 tests in doctest._TestClass - 2 tests in doctest._TestClass.__init__ - 2 tests in doctest._TestClass.get - 1 tests in doctest._TestClass.square - 2 tests in doctest.__test__._TestClass - 2 tests in doctest.__test__._TestClass.__init__ - 2 tests in doctest.__test__._TestClass.get - 1 tests in doctest.__test__._TestClass.square - 4 tests in doctest.__test__.bool-int equivalence - 2 tests in doctest.__test__.string - 7 tests in doctest.is_private -71 tests in 47 items. -71 passed and 0 failed. -Test passed. -doctest (doctest) ... 71 tests with zero failures -========================== closed ========================== -execution time: 367.565813065 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_doctest2.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,123 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_doctest2.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:39:47 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -Running test.test_doctest2.__doc__ -Trying: print 'yup' # 1 -Expecting: yup -ok -0 of 1 examples failed in test.test_doctest2.__doc__ -Running test.test_doctest2.C.__doc__ -Trying: print C() # 2 -Expecting: 42 -ok -0 of 1 examples failed in test.test_doctest2.C.__doc__ -Running test.test_doctest2.C.D.__doc__ -Trying: print "In D!" # 5 -Expecting: In D! -ok -0 of 1 examples failed in test.test_doctest2.C.D.__doc__ -Running test.test_doctest2.C.D.nested.__doc__ -Trying: print 3 # 6 -Expecting: 3 -ok -0 of 1 examples failed in test.test_doctest2.C.D.nested.__doc__ -Running test.test_doctest2.C.__init__.__doc__ -Trying: print C() # 3 -Expecting: 42 -ok -0 of 1 examples failed in test.test_doctest2.C.__init__.__doc__ -Running test.test_doctest2.C.__str__.__doc__ -Trying: print C() # 4 -Expecting: 42 -ok -0 of 1 examples failed in test.test_doctest2.C.__str__.__doc__ -Running test.test_doctest2.C.clsm.__doc__ -Trying: print C.clsm(22) # 18 -Expecting: 22 -ok -Trying: print C().clsm(23) # 19 -Expecting: 23 -ok -0 of 2 examples failed in test.test_doctest2.C.clsm.__doc__ -Running test.test_doctest2.C.getx.__doc__ -Trying: c = C() # 7 -Expecting: nothing -ok -Trying: c.x = 12 # 8 -Expecting: nothing -ok -Trying: print c.x # 9 -Expecting: -12 -ok -0 of 3 examples failed in test.test_doctest2.C.getx.__doc__ -Running test.test_doctest2.C.setx.__doc__ -Trying: c = C() # 10 -Expecting: nothing -ok -Trying: c.x = 12 # 11 -Expecting: nothing -ok -Trying: print c.x # 12 -Expecting: -12 -ok -0 of 3 examples failed in test.test_doctest2.C.setx.__doc__ -Running test.test_doctest2.C.statm.__doc__ -Trying: print C.statm() # 16 -Expecting: 666 -ok -Trying: print C().statm() # 17 -Expecting: 666 -ok -0 of 2 examples failed in test.test_doctest2.C.statm.__doc__ -Running string test.test_doctest2.C.x -Trying: c = C() # 13 -Expecting: nothing -ok -Trying: c.x = 12 # 14 -Expecting: nothing -ok -Trying: print c.x # 15 -Expecting: -12 -ok -0 of 3 examples failed in string test.test_doctest2.C.x -Running test.test_doctest2.test_main.__doc__ -0 of 0 examples failed in test.test_doctest2.test_main.__doc__ -1 items had no tests: - test.test_doctest2.test_main -11 items passed all tests: - 1 tests in test.test_doctest2 - 1 tests in test.test_doctest2.C - 1 tests in test.test_doctest2.C.D - 1 tests in test.test_doctest2.C.D.nested - 1 tests in test.test_doctest2.C.__init__ - 1 tests in test.test_doctest2.C.__str__ - 2 tests in test.test_doctest2.C.clsm - 3 tests in test.test_doctest2.C.getx - 3 tests in test.test_doctest2.C.setx - 2 tests in test.test_doctest2.C.statm - 3 tests in test.test_doctest2.C.x -19 tests in 12 items. -19 passed and 0 failed. -Test passed. -doctest (test.test_doctest2) ... 19 tests with zero failures -========================== closed ========================== -execution time: 91.4183619022 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_dumbdbm.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,27 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dumbdbm.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:04:57 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -test_close_twice (__main__.DumbDBMTestCase) ... ok -test_dumbdbm_creation (__main__.DumbDBMTestCase) ... ok -test_dumbdbm_keys (__main__.DumbDBMTestCase) ... ok -test_dumbdbm_modification (__main__.DumbDBMTestCase) ... ok -test_dumbdbm_read (__main__.DumbDBMTestCase) ... ok -test_random (__main__.DumbDBMTestCase) ... ok -test_write_write_read (__main__.DumbDBMTestCase) ... ok - ----------------------------------------------------------------------- -Ran 7 tests in 434.531s - -OK -========================== closed ========================== -execution time: 442.381337881 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_dummy_thread.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,48 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_dummy_thread.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:41:18 2005 - -============================================================ -faking -faking -faking -faking -faking - -*** Using as _thread module *** -test_cond_acquire_fail (__main__.LockTests) ... ok -test_cond_acquire_success (__main__.LockTests) ... ok -test_improper_release (__main__.LockTests) ... ok -test_initlock (__main__.LockTests) ... ok -test_release (__main__.LockTests) ... ok -test_uncond_acquire_blocking (__main__.LockTests) ... -*** Waiting for thread to release the lock (approx. 0 sec.) *** -done -ok -test_uncond_acquire_return_val (__main__.LockTests) ... ok -test_uncond_acquire_success (__main__.LockTests) ... ok -test_LockType (__main__.MiscTests) ... ok -test_exit (__main__.MiscTests) ... ok -test_ident (__main__.MiscTests) ... ok -test_interrupt_in_main (__main__.MiscTests) ... ok -test_interrupt_main (__main__.MiscTests) ... ok -test_arg_passing (__main__.ThreadTests) ... ok -test_multi_creation (__main__.ThreadTests) ... -*** Testing multiple thread creation (will take approx. 0 to 5 sec.) *** -done -ok - ----------------------------------------------------------------------- -Ran 15 tests in 6.778s - -OK -========================== closed ========================== -execution time: 18.1124308109 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_dummy_threading.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,57 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_dummy_threading.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:12:41 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -task will run for 0 sec -1 tasks are running -task done - is finished. 0 tasks are running -waiting for all tasks to complete -all tasks done -========================== closed ========================== -execution time: 13.0425028801 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_email.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_email.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,23 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_email.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:12:54 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_email.py", line 6 in ? -from email.test.test_email import suite - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/email/__init__.py", line 69 in ? -from encodings.aliases import aliases # The aliases dictionary - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/encodings/__init__.py", line 137 in ? -codecs.register(search_function) -TypeError: argument must be callable -========================== closed ========================== -execution time: 5.51378512383 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_email_codecs.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,23 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_email_codecs.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:13:00 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_email_codecs.py", line 6 in ? -from email.test.test_email_codecs import suite - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/email/__init__.py", line 69 in ? -from encodings.aliases import aliases # The aliases dictionary - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/encodings/__init__.py", line 137 in ? -codecs.register(search_function) -TypeError: argument must be callable -========================== closed ========================== -execution time: 5.0849070549 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_enumerate.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_enumerate.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:13:06 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_enumerate.py", line 111 in ? -class MyEnum(enumerate): -TypeError: default __new__ takes no parameters -========================== closed ========================== -execution time: 4.98667097092 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_eof.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_eof.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,52 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:13:12 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py", line 32 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py", line 29 in test_main - test_support.run_unittest(EOFTestCase) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred in __main__.EOFTestCase -test_EOFC (__main__.EOFTestCase) ... FAIL -test_EOFS (__main__.EOFTestCase) ... FAIL - -====================================================================== -FAIL: test_EOFC (__main__.EOFTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py", line 15, in test_EOFC - "EOL while scanning single-quoted string (line 1)") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual - raise self.failureException, \ -AssertionError: "args=('EOL while scanning single-quoted string (, line 1)',)" != 'EOL while scanning single-quoted string (line 1)' - -====================================================================== -FAIL: test_EOFS (__main__.EOFTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_eof.py", line 24, in test_EOFS - "EOF while scanning triple-quoted string (line 1)") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual - raise self.failureException, \ -AssertionError: "args=('EOF while scanning triple-quoted string (, line 1)',)" != 'EOF while scanning triple-quoted string (line 1)' - ----------------------------------------------------------------------- -Ran 2 tests in 2.223s - -FAILED (failures=2) -========================== closed ========================== -execution time: 9.08724808693 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_errno.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_errno.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,132 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_errno.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:13:21 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -E2BIG: 7 -EACCES: 13 -EADDRINUSE: 98 -EADDRNOTAVAIL: 99 -EADV: 68 -EAFNOSUPPORT: 97 -EAGAIN: 11 -EALREADY: 114 -EBADE: 52 -EBADF: 9 -EBADFD: 77 -EBADMSG: 74 -EBADR: 53 -EBADRQC: 56 -EBADSLT: 57 -EBFONT: 59 -EBUSY: 16 -ECHILD: 10 -ECHRNG: 44 -ECOMM: 70 -ECONNABORTED: 103 -ECONNREFUSED: 111 -ECONNRESET: 104 -EDEADLK: 35 -EDEADLOCK: 35 -EDESTADDRREQ: 89 -EDOM: 33 -EDQUOT: 122 -EEXIST: 17 -EFAULT: 14 -EFBIG: 27 -EHOSTDOWN: 112 -EHOSTUNREACH: 113 -EIDRM: 43 -EILSEQ: 84 -EINPROGRESS: 115 -EINTR: 4 -EINVAL: 22 -EIO: 5 -EISCONN: 106 -EISDIR: 21 -EL2HLT: 51 -EL2NSYNC: 45 -EL3HLT: 46 -EL3RST: 47 -ELIBACC: 79 -ELIBBAD: 80 -ELIBEXEC: 83 -ELIBMAX: 82 -ELIBSCN: 81 -ELNRNG: 48 -ELOOP: 40 -EMFILE: 24 -EMLINK: 31 -EMSGSIZE: 90 -EMULTIHOP: 72 -ENAMETOOLONG: 36 -ENETDOWN: 100 -ENETRESET: 102 -ENETUNREACH: 101 -ENFILE: 23 -ENOANO: 55 -ENOBUFS: 105 -ENOCSI: 50 -ENODATA: 61 -ENODEV: 19 -ENOENT: 2 -ENOEXEC: 8 -ENOLCK: 37 -ENOLINK: 67 -ENOMEM: 12 -ENOMSG: 42 -ENONET: 64 -ENOPKG: 65 -ENOPROTOOPT: 92 -ENOSPC: 28 -ENOSR: 63 -ENOSTR: 60 -ENOSYS: 38 -ENOTBLK: 15 -ENOTCONN: 107 -ENOTDIR: 20 -ENOTEMPTY: 39 -ENOTOBACCO: not found -ENOTSOCK: 88 -ENOTTY: 25 -ENOTUNIQ: 76 -ENXIO: 6 -EOPNOTSUPP: 95 -EOVERFLOW: 75 -EPERM: 1 -EPFNOSUPPORT: 96 -EPIPE: 32 -EPROTO: 71 -EPROTONOSUPPORT: 93 -EPROTOTYPE: 91 -ERANGE: 34 -EREMCHG: 78 -EREMOTE: 66 -ERESTART: 85 -EROFS: 30 -ESHUTDOWN: 108 -ESOCKTNOSUPPORT: 94 -ESPIPE: 29 -ESRCH: 3 -ESRMNT: 69 -ESTALE: 116 -ESTRPIPE: 86 -ETIME: 62 -ETIMEDOUT: 110 -ETOOMANYREFS: 109 -ETXTBSY: 26 -EUNATCH: 49 -EUSERS: 87 -EWOULDBLOCK: 11 -EXDEV: 18 -EXFULL: 54 -========================== closed ========================== -execution time: 17.3119370937 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_exceptions.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_exceptions.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -test_exceptions -5. Built-in exceptions -spam - -spam - -errno=None args=('spam',) strerror=None filename=None - -spam - -spam - -'spam' - -spam - -(not testable in a script) -spam - -(not safe to test) -spam - -spam - Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_exceptions.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,25 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_exceptions.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:13:40 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_exceptions.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_exceptions.py", line 95 in ? - while 1: x = x+x -KeyboardInterrupt -FAILED: test output differs -========================== closed ========================== -execution time: 900.337150097 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_extcall.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_extcall.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,112 +0,0 @@ -test_extcall -() {} -(1,) {} -(1, 2) {} -(1, 2, 3) {} -(1, 2, 3, 4, 5) {} -(1, 2, 3, 4, 5) {} -(1, 2, 3, 4, 5) {} -(1, 2, 3) {'a': 4, 'b': 5} -(1, 2, 3, 4, 5) {'a': 6, 'b': 7} -(1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5} -TypeError: g() takes at least 1 argument (0 given) -TypeError: g() takes at least 1 argument (0 given) -TypeError: g() takes at least 1 argument (0 given) -1 () {} -1 (2,) {} -1 (2, 3) {} -1 (2, 3, 4, 5) {} -0 (1, 2) {} -0 (1, 2, 3) {} -1 () {'a': 1, 'b': 2, 'c': 3, 'd': 4} -{'a': 1, 'b': 2, 'c': 3} -{'a': 1, 'b': 2, 'c': 3} -g() got multiple values for keyword argument 'x' -got multiple values for keyword argument 'a' -keywords must be strings -h() got an unexpected keyword argument 'e' -object is not iter()-able -object is not iter()-able -object None is not callable -the keywords must be a dictionary -the keywords must be a dictionary -object None is not callable -got multiple values for keyword argument 'b' -3 512 True -3 -3 -za () {} -> za() takes exactly 1 argument (0 given) -za () {'a': 'aa'} -> ok za aa B D E V a -za () {'d': 'dd'} -> za() got an unexpected keyword argument 'd' -za () {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd' -za () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got 3 unexpected keyword arguments -za (1, 2) {} -> za() takes exactly 1 argument (2 given) -za (1, 2) {'a': 'aa'} -> za() got multiple values for keyword argument 'a' -za (1, 2) {'d': 'dd'} -> za() takes exactly 1 argument (3 given) -za (1, 2) {'a': 'aa', 'd': 'dd'} -> za() got multiple values for keyword argument 'a' -za (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got multiple values for keyword argument 'a' -za (1, 2, 3, 4, 5) {} -> za() takes exactly 1 argument (5 given) -za (1, 2, 3, 4, 5) {'a': 'aa'} -> za() got multiple values for keyword argument 'a' -za (1, 2, 3, 4, 5) {'d': 'dd'} -> za() takes exactly 1 argument (6 given) -za (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> za() got multiple values for keyword argument 'a' -za (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got multiple values for keyword argument 'a' -zade () {} -> zade() takes at least 1 argument (0 given) -zade () {'a': 'aa'} -> ok zade aa B d e V a -zade () {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given) -zade () {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d -zade () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b' -zade (1, 2) {} -> ok zade 1 B 2 e V e -zade (1, 2) {'a': 'aa'} -> zade() got multiple values for keyword argument 'a' -zade (1, 2) {'d': 'dd'} -> zade() got multiple values for keyword argument 'd' -zade (1, 2) {'a': 'aa', 'd': 'dd'} -> zade() got multiple values for keyword argument 'a' -zade (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got multiple values for keyword argument 'a' -zade (1, 2, 3, 4, 5) {} -> zade() takes at most 3 arguments (5 given) -zade (1, 2, 3, 4, 5) {'a': 'aa'} -> zade() got multiple values for keyword argument 'a' -zade (1, 2, 3, 4, 5) {'d': 'dd'} -> zade() got multiple values for keyword argument 'd' -zade (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zade() got multiple values for keyword argument 'a' -zade (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got multiple values for keyword argument 'a' -zabk () {} -> zabk() takes exactly 2 non-keyword arguments (0 given) -zabk () {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (0 given) -zabk () {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) -zabk () {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) -zabk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'} -zabk (1, 2) {} -> ok zabk 1 2 D E V {} -zabk (1, 2) {'a': 'aa'} -> zabk() got multiple values for keyword argument 'a' -zabk (1, 2) {'d': 'dd'} -> ok zabk 1 2 D E V {'d': 'dd'} -zabk (1, 2) {'a': 'aa', 'd': 'dd'} -> zabk() got multiple values for keyword argument 'a' -zabk (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabk() got multiple values for keyword argument 'a' -zabk (1, 2, 3, 4, 5) {} -> zabk() takes exactly 2 non-keyword arguments (5 given) -zabk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabk() got multiple values for keyword argument 'a' -zabk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (5 given) -zabk (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabk() got multiple values for keyword argument 'a' -zabk (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabk() got multiple values for keyword argument 'a' -zabdv () {} -> zabdv() takes at least 2 arguments (0 given) -zabdv () {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (0 given) -zabdv () {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) -zabdv () {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) -zabdv () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e' -zabdv (1, 2) {} -> ok zabdv 1 2 d E () e -zabdv (1, 2) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a' -zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E () d -zabdv (1, 2) {'a': 'aa', 'd': 'dd'} -> zabdv() got multiple values for keyword argument 'a' -zabdv (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got multiple values for keyword argument 'a' -zabdv (1, 2, 3, 4, 5) {} -> ok zabdv 1 2 3 E (4, 5) e -zabdv (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a' -zabdv (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdv() got multiple values for keyword argument 'd' -zabdv (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabdv() got multiple values for keyword argument 'a' -zabdv (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got multiple values for keyword argument 'a' -zabdevk () {} -> zabdevk() takes at least 2 arguments (0 given) -zabdevk () {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) -zabdevk () {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) -zabdevk () {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) -zabdevk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee () {} -zabdevk (1, 2) {} -> ok zabdevk 1 2 d e () {} -zabdevk (1, 2) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a' -zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e () {} -zabdevk (1, 2) {'a': 'aa', 'd': 'dd'} -> zabdevk() got multiple values for keyword argument 'a' -zabdevk (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdevk() got multiple values for keyword argument 'a' -zabdevk (1, 2, 3, 4, 5) {} -> ok zabdevk 1 2 3 4 (5,) {} -zabdevk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a' -zabdevk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdevk() got multiple values for keyword argument 'd' -zabdevk (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabdevk() got multiple values for keyword argument 'a' -zabdevk (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdevk() got multiple values for keyword argument 'a' Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_extcall.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,18 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_extcall.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:28:41 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_extcall.out -============================================================ -faking -faking -faking -faking -faking -FAILED: test output differs -========================== closed ========================== -execution time: 84.05382514 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_fcntl.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,17 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fcntl.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:30:09 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fcntl.py", line 7 in ? -import fcntl -ImportError: fcntl -========================== closed ========================== -execution time: 5.84749293327 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_file.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_file.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,55 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_file.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:30:15 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args - frame.setfastscope(scope_w) - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) -pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > -========================== closed ========================== -execution time: 7.10462999344 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_filecmp.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_filecmp.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:30:23 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -test_different (__main__.FileCompareTestCase) ... ok -test_matching (__main__.FileCompareTestCase) ... ok -test_cmpfiles (__main__.DirCompareTestCase) ... ok -test_dircmp (__main__.DirCompareTestCase) ... ok - ----------------------------------------------------------------------- -Ran 4 tests in 16.762s - -OK -========================== closed ========================== -execution time: 25.5888230801 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_fileinput.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,33 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fileinput.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:30:49 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -1. Simple iteration (bs=0) -2. Status variables (bs=0) -3. Nextfile (bs=0) -4. Stdin (bs=0) -5. Boundary conditions (bs=0) -6. Inplace (bs=0) -7. Simple iteration (bs=30) -8. Status variables (bs=30) -9. Nextfile (bs=30) -10. Stdin (bs=30) -11. Boundary conditions (bs=30) -12. Inplace (bs=30) -13. 0-byte files -14. Files that don't end with newline -========================== closed ========================== -execution time: 109.3401649 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_fnmatch.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,30 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_fnmatch.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:41:36 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_fnmatch (__main__.FnmatchTestCase) ... ok - ----------------------------------------------------------------------- -Ran 1 test in 10.575s - -OK -========================== closed ========================== -execution time: 19.2948019505 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_fork1.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fork1.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:33:12 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_fork1.py", line 13 in ? -import os, sys, time, thread -ImportError: thread -========================== closed ========================== -execution time: 4.03707313538 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_format.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_format.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,276 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_format.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:33:17 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -'%.1d' % (1,) =? '1' ... yes -u'%.1d' % (1,) =? '1' ... yes -'%.*d' % (2147483647, 1) works? ... overflow (this is fine) -u'%.*d' % (2147483647, 1) works? ... overflow (this is fine) -'%.100d' % (1,) =? '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes -u'%.100d' % (1,) =? '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes -'%#.117x' % (1,) =? '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes -u'%#.117x' % (1,) =? '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes -'%#.118x' % (1,) =? '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... yes -u'%#.118x' % (1,) =? '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001' ... overflow (this is fine) -'%f' % (1.0,) =? '1.000000' ... yes -u'%f' % (1.0,) =? '1.000000' ... yes -'%#.*g' % (109, -3.3333333333333334e+48) works? ... yes -u'%#.*g' % (109, -3.3333333333333334e+48) works? ... yes -'%#.*g' % (110, -3.3333333333333334e+48) works? ... yes -u'%#.*g' % (110, -3.3333333333333334e+48) works? ... overflow (this is fine) -'%#.*g' % (110, -3.3333333333333333e+99) works? ... yes -u'%#.*g' % (110, -3.3333333333333333e+99) works? ... overflow (this is fine) -'%12.*f' % (123456, 1.0) works? ... yes -u'%12.*f' % (123456, 1.0) works? ... overflow (this is fine) -'%x' % 10L =? 'a' ... yes -u'%x' % 10L =? 'a' ... yes -'%x' % 100000000000L =? '174876e800' ... yes -u'%x' % 100000000000L =? '174876e800' ... yes -'%o' % 10L =? '12' ... yes -u'%o' % 10L =? '12' ... yes -'%o' % 100000000000L =? '1351035564000' ... yes -u'%o' % 100000000000L =? '1351035564000' ... yes -'%d' % 10L =? '10' ... yes -u'%d' % 10L =? '10' ... yes -'%d' % 100000000000L =? '100000000000' ... yes -u'%d' % 100000000000L =? '100000000000' ... yes -'%d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes -u'%d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes -'%d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes -u'%d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes -'%5d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes -u'%5d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes -'%31d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes -u'%31d' % -123456789012345678901234567890L =? '-123456789012345678901234567890' ... yes -'%32d' % -123456789012345678901234567890L =? ' -123456789012345678901234567890' ... yes -u'%32d' % -123456789012345678901234567890L =? ' -123456789012345678901234567890' ... yes -'%-32d' % -123456789012345678901234567890L =? '-123456789012345678901234567890 ' ... yes -u'%-32d' % -123456789012345678901234567890L =? '-123456789012345678901234567890 ' ... yes -'%032d' % -123456789012345678901234567890L =? '-0123456789012345678901234567890' ... yes -u'%032d' % -123456789012345678901234567890L =? '-0123456789012345678901234567890' ... yes -'%-032d' % -123456789012345678901234567890L =? '-123456789012345678901234567890 ' ... yes -u'%-032d' % -123456789012345678901234567890L =? '-123456789012345678901234567890 ' ... yes -'%034d' % -123456789012345678901234567890L =? '-000123456789012345678901234567890' ... yes -u'%034d' % -123456789012345678901234567890L =? '-000123456789012345678901234567890' ... yes -'%034d' % 123456789012345678901234567890L =? '0000123456789012345678901234567890' ... yes -u'%034d' % 123456789012345678901234567890L =? '0000123456789012345678901234567890' ... yes -'%0+34d' % 123456789012345678901234567890L =? '+000123456789012345678901234567890' ... yes -u'%0+34d' % 123456789012345678901234567890L =? '+000123456789012345678901234567890' ... yes -'%+34d' % 123456789012345678901234567890L =? ' +123456789012345678901234567890' ... yes -u'%+34d' % 123456789012345678901234567890L =? ' +123456789012345678901234567890' ... yes -'%34d' % 123456789012345678901234567890L =? ' 123456789012345678901234567890' ... yes -u'%34d' % 123456789012345678901234567890L =? ' 123456789012345678901234567890' ... yes -'%.2d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes -u'%.2d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes -'%.30d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes -u'%.30d' % 123456789012345678901234567890L =? '123456789012345678901234567890' ... yes -'%.31d' % 123456789012345678901234567890L =? '0123456789012345678901234567890' ... yes -u'%.31d' % 123456789012345678901234567890L =? '0123456789012345678901234567890' ... yes -'%32.31d' % 123456789012345678901234567890L =? ' 0123456789012345678901234567890' ... yes -u'%32.31d' % 123456789012345678901234567890L =? ' 0123456789012345678901234567890' ... yes -'%x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes -u'%x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes -'%x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes -u'%x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes -'%5x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes -u'%5x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes -'%22x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes -u'%22x' % -1375488932362216742658885L =? '-1234567890abcdef12345' ... yes -'%23x' % -1375488932362216742658885L =? ' -1234567890abcdef12345' ... yes -u'%23x' % -1375488932362216742658885L =? ' -1234567890abcdef12345' ... yes -'%-23x' % -1375488932362216742658885L =? '-1234567890abcdef12345 ' ... yes -u'%-23x' % -1375488932362216742658885L =? '-1234567890abcdef12345 ' ... yes -'%023x' % -1375488932362216742658885L =? '-01234567890abcdef12345' ... yes -u'%023x' % -1375488932362216742658885L =? '-01234567890abcdef12345' ... yes -'%-023x' % -1375488932362216742658885L =? '-1234567890abcdef12345 ' ... yes -u'%-023x' % -1375488932362216742658885L =? '-1234567890abcdef12345 ' ... yes -'%025x' % -1375488932362216742658885L =? '-0001234567890abcdef12345' ... yes -u'%025x' % -1375488932362216742658885L =? '-0001234567890abcdef12345' ... yes -'%025x' % 1375488932362216742658885L =? '00001234567890abcdef12345' ... yes -u'%025x' % 1375488932362216742658885L =? '00001234567890abcdef12345' ... yes -'%0+25x' % 1375488932362216742658885L =? '+0001234567890abcdef12345' ... yes -u'%0+25x' % 1375488932362216742658885L =? '+0001234567890abcdef12345' ... yes -'%+25x' % 1375488932362216742658885L =? ' +1234567890abcdef12345' ... yes -u'%+25x' % 1375488932362216742658885L =? ' +1234567890abcdef12345' ... yes -'%25x' % 1375488932362216742658885L =? ' 1234567890abcdef12345' ... yes -u'%25x' % 1375488932362216742658885L =? ' 1234567890abcdef12345' ... yes -'%.2x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes -u'%.2x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes -'%.21x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes -u'%.21x' % 1375488932362216742658885L =? '1234567890abcdef12345' ... yes -'%.22x' % 1375488932362216742658885L =? '01234567890abcdef12345' ... yes -u'%.22x' % 1375488932362216742658885L =? '01234567890abcdef12345' ... yes -'%23.22x' % 1375488932362216742658885L =? ' 01234567890abcdef12345' ... yes -u'%23.22x' % 1375488932362216742658885L =? ' 01234567890abcdef12345' ... yes -'%-23.22x' % 1375488932362216742658885L =? '01234567890abcdef12345 ' ... yes -u'%-23.22x' % 1375488932362216742658885L =? '01234567890abcdef12345 ' ... yes -'%X' % 1375488932362216742658885L =? '1234567890ABCDEF12345' ... yes -u'%X' % 1375488932362216742658885L =? '1234567890ABCDEF12345' ... yes -'%#X' % 1375488932362216742658885L =? '0X1234567890ABCDEF12345' ... yes -u'%#X' % 1375488932362216742658885L =? '0X1234567890ABCDEF12345' ... yes -'%#x' % 1375488932362216742658885L =? '0x1234567890abcdef12345' ... yes -u'%#x' % 1375488932362216742658885L =? '0x1234567890abcdef12345' ... yes -'%#x' % -1375488932362216742658885L =? '-0x1234567890abcdef12345' ... yes -u'%#x' % -1375488932362216742658885L =? '-0x1234567890abcdef12345' ... yes -'%#.23x' % -1375488932362216742658885L =? '-0x001234567890abcdef12345' ... yes -u'%#.23x' % -1375488932362216742658885L =? '-0x001234567890abcdef12345' ... yes -'%#+.23x' % 1375488932362216742658885L =? '+0x001234567890abcdef12345' ... yes -u'%#+.23x' % 1375488932362216742658885L =? '+0x001234567890abcdef12345' ... yes -'%# .23x' % 1375488932362216742658885L =? ' 0x001234567890abcdef12345' ... yes -u'%# .23x' % 1375488932362216742658885L =? ' 0x001234567890abcdef12345' ... yes -'%#+.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes -u'%#+.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes -'%#-+.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes -u'%#-+.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes -'%#-+26.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes -u'%#-+26.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345' ... yes -'%#-+27.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345 ' ... yes -u'%#-+27.23X' % 1375488932362216742658885L =? '+0X001234567890ABCDEF12345 ' ... yes -'%#+27.23X' % 1375488932362216742658885L =? ' +0X001234567890ABCDEF12345' ... yes -u'%#+27.23X' % 1375488932362216742658885L =? ' +0X001234567890ABCDEF12345' ... yes -'%#+027.23X' % 1375488932362216742658885L =? '+0X0001234567890ABCDEF12345' ... yes -u'%#+027.23X' % 1375488932362216742658885L =? '+0X0001234567890ABCDEF12345' ... yes -'%#+27.23X' % 1375488932362216742658885L =? ' +0X001234567890ABCDEF12345' ... yes -u'%#+27.23X' % 1375488932362216742658885L =? ' +0X001234567890ABCDEF12345' ... yes -'%o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes -u'%o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes -'%o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes -u'%o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes -'%5o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes -u'%5o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes -'%33o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes -u'%33o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670' ... yes -'%34o' % -12935167030485801517351291832L =? ' -12345670123456701234567012345670' ... yes -u'%34o' % -12935167030485801517351291832L =? ' -12345670123456701234567012345670' ... yes -'%-34o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670 ' ... yes -u'%-34o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670 ' ... yes -'%034o' % -12935167030485801517351291832L =? '-012345670123456701234567012345670' ... yes -u'%034o' % -12935167030485801517351291832L =? '-012345670123456701234567012345670' ... yes -'%-034o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670 ' ... yes -u'%-034o' % -12935167030485801517351291832L =? '-12345670123456701234567012345670 ' ... yes -'%036o' % -12935167030485801517351291832L =? '-00012345670123456701234567012345670' ... yes -u'%036o' % -12935167030485801517351291832L =? '-00012345670123456701234567012345670' ... yes -'%036o' % 12935167030485801517351291832L =? '000012345670123456701234567012345670' ... yes -u'%036o' % 12935167030485801517351291832L =? '000012345670123456701234567012345670' ... yes -'%0+36o' % 12935167030485801517351291832L =? '+00012345670123456701234567012345670' ... yes -u'%0+36o' % 12935167030485801517351291832L =? '+00012345670123456701234567012345670' ... yes -'%+36o' % 12935167030485801517351291832L =? ' +12345670123456701234567012345670' ... yes -u'%+36o' % 12935167030485801517351291832L =? ' +12345670123456701234567012345670' ... yes -'%36o' % 12935167030485801517351291832L =? ' 12345670123456701234567012345670' ... yes -u'%36o' % 12935167030485801517351291832L =? ' 12345670123456701234567012345670' ... yes -'%.2o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes -u'%.2o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes -'%.32o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes -u'%.32o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes -'%.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -u'%.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -'%34.33o' % 12935167030485801517351291832L =? ' 012345670123456701234567012345670' ... yes -u'%34.33o' % 12935167030485801517351291832L =? ' 012345670123456701234567012345670' ... yes -'%-34.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670 ' ... yes -u'%-34.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670 ' ... yes -'%o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes -u'%o' % 12935167030485801517351291832L =? '12345670123456701234567012345670' ... yes -'%#o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -u'%#o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -'%#o' % -12935167030485801517351291832L =? '-012345670123456701234567012345670' ... yes -u'%#o' % -12935167030485801517351291832L =? '-012345670123456701234567012345670' ... yes -'%#.34o' % -12935167030485801517351291832L =? '-0012345670123456701234567012345670' ... yes -u'%#.34o' % -12935167030485801517351291832L =? '-0012345670123456701234567012345670' ... yes -'%#+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes -u'%#+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes -'%# .34o' % 12935167030485801517351291832L =? ' 0012345670123456701234567012345670' ... yes -u'%# .34o' % 12935167030485801517351291832L =? ' 0012345670123456701234567012345670' ... yes -'%#+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes -u'%#+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes -'%#-+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes -u'%#-+.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670' ... yes -'%#-+37.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670 ' ... yes -u'%#-+37.34o' % 12935167030485801517351291832L =? '+0012345670123456701234567012345670 ' ... yes -'%#+37.34o' % 12935167030485801517351291832L =? ' +0012345670123456701234567012345670' ... yes -u'%#+37.34o' % 12935167030485801517351291832L =? ' +0012345670123456701234567012345670' ... yes -'%.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -u'%.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -'%#.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -u'%#.33o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -'%#.32o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -u'%#.32o' % 12935167030485801517351291832L =? '012345670123456701234567012345670' ... yes -'%034.33o' % 12935167030485801517351291832L =? '0012345670123456701234567012345670' ... yes -u'%034.33o' % 12935167030485801517351291832L =? '0012345670123456701234567012345670' ... yes -'%0#34.33o' % 12935167030485801517351291832L =? '0012345670123456701234567012345670' ... yes -u'%0#34.33o' % 12935167030485801517351291832L =? '0012345670123456701234567012345670' ... yes -'%d' % 42 =? '42' ... yes -u'%d' % 42 =? '42' ... yes -'%d' % -42 =? '-42' ... yes -u'%d' % -42 =? '-42' ... yes -'%d' % 42L =? '42' ... yes -u'%d' % 42L =? '42' ... yes -'%d' % -42L =? '-42' ... yes -u'%d' % -42L =? '-42' ... yes -'%#x' % 1 =? '0x1' ... yes -u'%#x' % 1 =? '0x1' ... yes -'%#x' % 1L =? '0x1' ... yes -u'%#x' % 1L =? '0x1' ... yes -'%#X' % 1 =? '0X1' ... yes -u'%#X' % 1 =? '0X1' ... yes -'%#X' % 1L =? '0X1' ... yes -u'%#X' % 1L =? '0X1' ... yes -'%Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_format.py", line 236 in ? - "%*d"%(sys.maxint, -127) -OverflowError: repeated string is too long: 1 2147483643 -#o' % 1 =? '01' ... yes -u'%#o' % 1 =? '01' ... yes -'%#o' % 1L =? '01' ... yes -u'%#o' % 1L =? '01' ... yes -'%#o' % 0 =? '0' ... yes -u'%#o' % 0 =? '0' ... yes -'%#o' % 0L =? '0' ... yes -u'%#o' % 0L =? '0' ... yes -'%o' % 0 =? '0' ... yes -u'%o' % 0 =? '0' ... yes -'%o' % 0L =? '0' ... yes -u'%o' % 0L =? '0' ... yes -'%d' % 0 =? '0' ... yes -u'%d' % 0 =? '0' ... yes -'%d' % 0L =? '0' ... yes -u'%d' % 0L =? '0' ... yes -'%#x' % 0 =? '0x0' ... yes -u'%#x' % 0 =? '0x0' ... yes -'%#x' % 0L =? '0x0' ... yes -u'%#x' % 0L =? '0x0' ... yes -'%#X' % 0 =? '0X0' ... yes -u'%#X' % 0 =? '0X0' ... yes -'%#X' % 0L =? '0X0' ... yes -u'%#X' % 0L =? '0X0' ... yes -'%x' % 66 =? '42' ... yes -u'%x' % 66 =? '42' ... yes -'%x' % 66L =? '42' ... yes -u'%x' % 66L =? '42' ... yes -'%x' % -66L =? '-42' ... yes -u'%x' % -66L =? '-42' ... yes -'%o' % 34 =? '42' ... yes -u'%o' % 34 =? '42' ... yes -'%o' % 34L =? '42' ... yes -u'%o' % 34L =? '42' ... yes -'%o' % -34L =? '-42' ... yes -u'%o' % -34L =? '-42' ... yes -Testing exceptions -'abc %a' % 1 works? ... yes -u'abc %\u3000' % 1 works? ... yes -'%d' % '1' works? ... yes -'%g' % '1' works? ... yes -'no format' % '1' works? ... yes -'no format' % u'1' works? ... yes -u'no format' % '1' works? ... yes -u'no format' % u'1' works? ... yes -========================== closed ========================== -execution time: 106.728466034 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_fpformat.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,32 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_fpformat.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:41:56 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_basic_cases (__main__.FpformatTest) ... ok -test_failing_values (__main__.FpformatTest) ... ok -test_reasonable_values (__main__.FpformatTest) ... ok - ----------------------------------------------------------------------- -Ran 3 tests in 206.369s - -OK -========================== closed ========================== -execution time: 218.382091999 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_frozen.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_frozen.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_frozen Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_frozen.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_frozen.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:37:39 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_frozen.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_frozen.py", line 9 in ? - raise TestFailed, "import __hello__ failed:" + str(x) -TestFailed: import __hello__ failed:__hello__ -FAILED: test output differs -========================== closed ========================== -execution time: 5.75176596642 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_funcattrs.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_funcattrs.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:37:45 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_funcattrs.py", line 38 in ? - del b.__dict__ -AttributeError: cannot delete attribute -========================== closed ========================== -execution time: 4.61488699913 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_future.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_future.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,8 +0,0 @@ -test_future -6 -6 -SyntaxError badsyntax_future3 3 -SyntaxError badsyntax_future4 3 -SyntaxError badsyntax_future5 4 -SyntaxError badsyntax_future6 3 -SyntaxError badsyntax_future7 3 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_future.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_future.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_future.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:37:51 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_future.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -OK -========================== closed ========================== -execution time: 13.5751800537 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_future1.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_future1.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,14 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_future1.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:38:05 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -6 -========================== closed ========================== -execution time: 1.19209599495 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_future2.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_future2.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,14 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_future2.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:38:06 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -6 -========================== closed ========================== -execution time: 1.63168501854 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_future3.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_future3.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,28 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_future3.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:45:34 2005 - -============================================================ -faking -faking -faking -faking -faking -test_floor_div_operator (__main__.TestFuture) ... ok -test_nested_scopes (__main__.TestFuture) ... ok -test_true_div_as_default (__main__.TestFuture) ... ok - ----------------------------------------------------------------------- -Ran 3 tests in 1.301s - -OK -========================== closed ========================== -execution time: 14.6286120415 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_gc.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_gc.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gc.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:38:14 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gc.py", line 419 in ? -test() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gc.py", line 399 in test - enabled = gc.isenabled() -AttributeError: 'module' object has no attribute 'isenabled' -disabling automatic collection -========================== closed ========================== -execution time: 5.23049592972 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_gdbm.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gdbm.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:38:20 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gdbm.py", line 6 in ? -import gdbm -ImportError: gdbm -========================== closed ========================== -execution time: 1.40752983093 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_generators.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_generators.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,289 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_generators.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:38:23 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -***************************************************************** -Failure in example: type(g) -from line #78 of test.test_generators.__test__.email -Expected: -Got: -***************************************************************** -Failure in example: type(i) -from line #81 of test.test_generators.__test__.email -Expected: -Got: -***************************************************************** -Failure in example: print i.next.__doc__ -from line #85 of test.test_generators.__test__.email -Expected: x.next() -> the next value, or raise StopIteration -Got: None -***************************************************************** -Failure in example: type(i.gi_frame) -from line #97 of test.test_generators.__test__.email -Expected: -Got: -***************************************************************** -Failure in example: i.gi_running = 42 -from line #99 of test.test_generators.__test__.email -Expected: TypeError: readonly attribute -Got: TypeError: read-only attribute -***************************************************************** -Failure in example: gen = random.WichmannHill(42) -from line #146 of test.test_generators.__test__.email -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? -AttributeError: 'module' object has no attribute 'WichmannHill' -***************************************************************** -Failure in example: -while 1: - for s in sets: - print "%s->%s" % (s, s.find()), - print - if len(roots) > 1: - s1 = gen.choice(roots) - roots.remove(s1) - s2 = gen.choice(roots) - s1.union(s2) - print "merged", s1, "into", s2 - else: - break -from line #147 of test.test_generators.__test__.email -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 6, in ? -NameError: global name 'gen' is not defined -***************************************************************** -Failure in example: k.next() -from line #52 of test.test_generators.__test__.pep -Expected: ZeroDivisionError: integer division or modulo by zero -Got: ZeroDivisionError: integer division by zero -***************************************************************** -Failure in example: -def f(): - return 22 - yield 1 -from line #2 of test.test_generators.__test__.syntax -Expected: -SyntaxError: 'return' with argument inside generator (, line 2) -Got: -SyntaxError: args=("'return' with argument inside generator (, line 2)",) -***************************************************************** -Failure in example: -def f(): - yield 1 - return 22 -from line #9 of test.test_generators.__test__.syntax -Expected: -SyntaxError: 'return' with argument inside generator (, line 3) -Got: -SyntaxError: args=("'return' with argument inside generator (, line 3)",) -***************************************************************** -Failure in example: -def f(): - yield 1 - return None -from line #18 of test.test_generators.__test__.syntax -Expected: -SyntaxError: 'return' with argument inside generator (, line 3) -Got: -SyntaxError: args=("'return' with argument inside generator (, line 3)",) -***************************************************************** -Failure in example: -def f(): - try: - yield 1 - finally: - pass -from line #31 of test.test_generators.__test__.syntax -Expected: -SyntaxError: 'yield' not allowed in a 'try' block with a 'finally' clause (, line 3) -Got: -SyntaxError: args=("'yield' not allowed in a 'try' block with a 'finally' clause (, line 3)",) -***************************************************************** -Failure in example: -def f(): - try: - try: - 1//0 - except ZeroDivisionError: - yield 666 # bad because *outer* try has finally - except: - pass - finally: - pass -from line #40 of test.test_generators.__test__.syntax -Expected: -SyntaxError: 'yield' not allowed in a 'try' block with a 'finally' clause (, line 6) -Got: -SyntaxError: args=("'yield' not allowed in a 'try' block with a 'finally' clause (, line 6)",) -***************************************************************** -Failure in example: -def f(): - yield -from line #73 of test.test_generators.__test__.syntax -Expected: SyntaxError: invalid syntax -Got: SyntaxError: args=('invalid syntax (, line 2)',) -***************************************************************** -Failure in example: -def f(): - if 0: - yield -from line #78 of test.test_generators.__test__.syntax -Expected: SyntaxError: invalid syntax -Got: SyntaxError: args=('invalid syntax (, line 3)',) -***************************************************************** -Failure in example: type(f()) -from line #87 of test.test_generators.__test__.syntax -Expected: -Got: -***************************************************************** -Failure in example: type(f()) -from line #93 of test.test_generators.__test__.syntax -Expected: -Got: -***************************************************************** -Failure in example: type(f()) -from line #117 of test.test_generators.__test__.syntax -Expected: -Got: -***************************************************************** -Failure in example: type(f()) -from line #125 of test.test_generators.__test__.syntax -Expected: -Got: -***************************************************************** -Failure in example: type(f()) -from line #135 of test.test_generators.__test__.syntax -Expected: -Got: -***************************************************************** -Failure in example: type(f()) -from line #143 of test.test_generators.__test__.syntax -Expected: -Got: -***************************************************************** -Failure in example: -def f(): - if 0: - lambda x: x # shouldn't trigger here - return # or here - def f(i): - return 2*i # or here - if 0: - return 3 # but *this* sucks (line 8) - if 0: - yield 2 # because it's a generator -from line #147 of test.test_generators.__test__.syntax -Expected: -SyntaxError: 'return' with argument inside generator (, line 8) -Got: -SyntaxError: args=("'return' with argument inside generator (, line 8)",) -***************************************************************** -Failure in example: import weakref -from line #2 of test.test_generators.__test__.weakref -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/weakref.py", line 14, in ? - from _weakref import \ -ImportError: _weakref -***************************************************************** -Failure in example: wr = weakref.ref(gen) -from line #6 of test.test_generators.__test__.weakref -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? -NameError: global name 'weakref' is not defined -***************************************************************** -Failure in example: wr() is gen -from line #7 of test.test_generators.__test__.weakref -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? -NameError: global name 'wr' is not defined -**********************************************************Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_generators.py", line 1412 in ? - test_main(1) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_generators.py", line 1408 in test_main - test_support.run_doctest(test_generators, verbose) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest - raise TestFailed("%d of %d doctests failed" % (f, t)) -TestFailed: 30 of 152 doctests failed -******* -Failure in example: p = weakref.proxy(gen) -from line #9 of test.test_generators.__test__.weakref -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? -NameError: global name 'weakref' is not defined -***************************************************************** -Failure in example: wr = weakref.ref(gi) -from line #14 of test.test_generators.__test__.weakref -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? -NameError: global name 'weakref' is not defined -***************************************************************** -Failure in example: wr() is gi -from line #15 of test.test_generators.__test__.weakref -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? -NameError: global name 'wr' is not defined -***************************************************************** -Failure in example: p = weakref.proxy(gi) -from line #17 of test.test_generators.__test__.weakref -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? -NameError: global name 'weakref' is not defined -***************************************************************** -Failure in example: list(p) -from line #18 of test.test_generators.__test__.weakref -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? -NameError: global name 'p' is not defined -***************************************************************** -4 items had failures: - 7 of 31 in test.test_generators.__test__.email - 1 of 20 in test.test_generators.__test__.pep - 14 of 29 in test.test_generators.__test__.syntax - 8 of 10 in test.test_generators.__test__.weakref -***Test Failed*** 30 failures. -========================== closed ========================== -execution time: 629.011167049 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_getargs.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,25 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getargs.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:48:53 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getargs.py", line 22 in ? - marshal.loads(unicode(r"\222", 'unicode-escape')) - File "/u/pedronis/PyPy/dist/pypy/lib/marshal.py", line 343 in loads - return load(f) - File "/u/pedronis/PyPy/dist/pypy/lib/marshal.py", line 334 in load - return Unmarshaller(f).load() - File "/u/pedronis/PyPy/dist/pypy/lib/marshal.py", line 187 in load - return self.dispatch[c](self) -KeyError: u'\x92' -========================== closed ========================== -execution time: 8.69703292847 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_getargs2.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getargs2.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:49:03 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getargs2.py", line 50 in ? -from _testcapi import UCHAR_MAX, USHRT_MAX, UINT_MAX, ULONG_MAX, INT_MAX, \ -ImportError: _testcapi -========================== closed ========================== -execution time: 20.2972948551 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_getopt.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,27 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_getopt.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:49:25 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -Running tests on getopt.short_has_arg -Running tests on getopt.long_has_args -Running tests on getopt.do_shorts -Running tests on getopt.do_longs -Running tests on getopt.getopt -Running tests on getopt.gnu_getopt -doctest (__main__) ... 12 tests with zero failures -Module getopt: tests completed successfully. -========================== closed ========================== -execution time: 274.563966036 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_gettext.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,402 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:53:59 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_double_quotes (__main__.GettextTestCase1) ... ERROR -test_multiline_strings (__main__.GettextTestCase1) ... ERROR -test_some_translations (__main__.GettextTestCase1) ... ERROR -test_the_alternative_interface (__main__.GettextTestCase1) ... ERROR -test_triple_double_quotes (__main__.GettextTestCase1) ... ERROR -test_triple_single_quotes (__main__.GettextTestCase1) ... ERROR -test_bindtextdomain (__main__.GettextTestCase2) ... ERROR -test_double_quotes (__main__.GettextTestCase2) ... ERROR -test_multiline_strings (__main__.GettextTestCase2) ... ERROR -test_some_translations (__main__.GettextTestCase2) ... ERROR -test_textdomain (__main__.GettextTestCase2) ... ERROR -test_triple_double_quotes (__main__.GettextTestCase2) ... ERROR -test_triple_single_quotes (__main__.GettextTestCase2) ... ERROR -test_de (__main__.PluralFormsTestCase) ... ERROR -test_fr (__main__.PluralFormsTestCase) ... ERROR -test_gd (__main__.PluralFormsTestCase) ... ERROR -test_gd2 (__main__.PluralFormsTestCase) ... ERROR -test_hu (__main__.PluralFormsTestCase) ... ERROR -test_lt (__main__.PluralFormsTestCase) ... ERROR -test_pl (__main__.PluralFormsTestCase) ... ERROR -test_plural_forms1 (__main__.PluralFormsTestCase) ... ERROR -test_plural_forms2 (__main__.PluralFormsTestCase) ... ERROR -test_ru (__main__.PluralFormsTestCase) ... ERROR -test_security (__main__.PluralFormsTestCase) ... ERROR -test_sl (__main__.PluralFormsTestCase) ... ERROR -test_unicode_msgid (__main__.UnicodeTranslationsTest) ... ERROR -test_unicode_msgstr (__main__.UnicodeTranslationsTest) ... ERROR -test_weird_metadata (__main__.WeirdMetadataTest) ... ERROR - -====================================================================== -ERROR: test_double_quotes (__main__.GettextTestCase1) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 91, in setUp - gettext.install('gettext', self.localedir) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 428, in install - translation(domain, localedir, fallback=True).install(unicode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 416, in translation - t = _translations.setdefault(key, class_(open(mofile, 'rb'))) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 176, in __init__ - self._parse(fp) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 282, in _parse - self.plural = c2py(plural) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gettext.py", line 121, in c2py - plural = expr.sub(repl, stack.pop()) -TypeError: len() of unsized object - -====================================================================== -ERROR: test_multiline_strings (__main__.GettextTestCase1) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_some_translations (__main__.GettextTestCase1) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_the_alternative_interface (__main__.GettextTestCase1) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_triple_double_quotes (__main__.GettextTestCase1) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_triple_single_quotes (__main__.GettextTestCase1) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 88, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_bindtextdomain (__main__.GettextTestCase2) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_double_quotes (__main__.GettextTestCase2) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_multiline_strings (__main__.GettextTestCase2) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_some_translations (__main__.GettextTestCase2) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_textdomain (__main__.GettextTestCase2) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_triple_double_quotes (__main__.GettextTestCase2) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_triple_single_quotes (__main__.GettextTestCase2) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 151, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_de (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_fr (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_gd (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_gd2 (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_hu (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_lt (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_pl (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_plural_forms1 (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_plural_forms2 (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSATraceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 345 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 341 in test_main - run_suite(suite()) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred; run in verbose mode for details -GES - -====================================================================== -ERROR: test_ru (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_security (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_sl (__main__.PluralFormsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 210, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_unicode_msgid (__main__.UnicodeTranslationsTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 293, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_unicode_msgstr (__main__.UnicodeTranslationsTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 293, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - -====================================================================== -ERROR: test_weird_metadata (__main__.WeirdMetadataTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 313, in setUp - GettextBaseTest.setUp(self) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gettext.py", line 69, in setUp - os.makedirs(LOCALEDIR) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/os.py", line 154, in makedirs - mkdir(name, mode) -OSError: errno=17 args=(17, 'File exists') strerror=File exists filename=xx/LC_MESSAGES - ----------------------------------------------------------------------- -Ran 28 tests in 294.663s - -FAILED (errors=28) -========================== closed ========================== -execution time: 323.007567883 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_gl.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_gl.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gl.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 00:59:23 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gl.py", line 7 in ? -import gl, GL, time -ImportError: gl -========================== closed ========================== -execution time: 5.7698700428 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_glob.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_glob.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,33 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_glob.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:45:49 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_glob_directory_names (__main__.GlobTests) ... ok -test_glob_literal (__main__.GlobTests) ... ok -test_glob_nested_directory (__main__.GlobTests) ... ok -test_glob_one_directory (__main__.GlobTests) ... ok - ----------------------------------------------------------------------- -Ran 4 tests in 20.096s - -OK -========================== closed ========================== -execution time: 31.215569973 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_global.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_global.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,20 +0,0 @@ -test_global -should have raised SyntaxError: -def wrong1(): - a = 1 - b = 2 - global a - global b - -should have raised SyntaxError: -def wrong2(): - print x - global x - -should have raised SyntaxError: -def wrong3(): - print x - x = 2 - global x - -as expected, no SyntaxError Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_global.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_global.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_global.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:00:15 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_global.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -:2: SyntaxWarning: name 'a' is assigned to before global declaration -:2: SyntaxWarning: name 'b' is assigned to before global declaration -:2: SyntaxWarning: name 'x' is used prior to global declaration -:2: SyntaxWarning: name 'x' is assigned to before global declaration -FAILED: test output differs -========================== closed ========================== -execution time: 10.2659399509 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_grammar.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_grammar.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,40 +0,0 @@ -test_grammar -1. Parser -1.1 Tokens -1.1.1 Backslashes -1.1.2 Numeric literals -1.1.2.1 Plain integers -1.1.2.2 Long integers -1.1.2.3 Floating point -1.1.3 String literals -1.2 Grammar -single_input -file_input -expr_input -eval_input -funcdef -lambdef -simple_stmt -expr_stmt -print_stmt -1 2 3 -1 2 3 -1 1 1 -extended print_stmt -1 2 3 -1 2 3 -1 1 1 -hello world -del_stmt -pass_stmt -flow_stmt -break_stmt -continue_stmt -continue + try/except ok -continue + try/finally ok -testing continue and break in try/except in loop -return_stmt -raise_stmt -import_stmt -global_stmt -exec_stmt Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_grammar.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:00:26 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_grammar.out -============================================================ -faking -faking -/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py:42: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up - if -2147483647-1 != 020000000000: raise TestFailed, 'max negative int' -/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py:44: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up - if 037777777777 != -1: raise TestFailed, 'oct -1' -/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py:45: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up - if 0xffffffff != -1: raise TestFailed, 'hex -1' -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py", line 453 in ? -f() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grammar.py", line 446 in f - exec r"""if 1: - File "", line 2 in ? -TypeError: exec: arg 1 must be a string, file, or code object -FAILED: test output differs -========================== closed ========================== -execution time: 9.01975488663 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_grp.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_grp.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grp.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:00:36 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_grp.py", line 3 in ? -import grp -ImportError: grp -========================== closed ========================== -execution time: 1.79234695435 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_gzip.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gzip.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:00:39 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_gzip.py", line 3 in ? -import gzip - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/gzip.py", line 9 in ? -import zlib -ImportError: zlib -========================== closed ========================== -execution time: 7.8925640583 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_hash.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_hash.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,28 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_hash.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:46:20 2005 - -============================================================ -faking -faking -faking -faking -faking -test_coerced_floats (__main__.HashEqualityTestCase) ... ok -test_coerced_integers (__main__.HashEqualityTestCase) ... ok -test_numeric_literals (__main__.HashEqualityTestCase) ... ok - ----------------------------------------------------------------------- -Ran 3 tests in 1.526s - -OK -========================== closed ========================== -execution time: 11.7051789761 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_heapq.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_heapq.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:46:32 2005 - -============================================================ -faking -faking -faking -faking -faking -All OK -========================== closed ========================== -execution time: 382.338042974 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_hexoct.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,43 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_hexoct.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:52:54 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -:4: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:5: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:7: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:8: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:11: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:12: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:4: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:5: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:7: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:8: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:11: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -:12: FutureWarning: hex/oct constants > sys.maxint will return positive values in Python 2.4 and up -test_hex_baseline (__main__.TextHexOct) ... ok -test_hex_unsigned (__main__.TextHexOct) ... ok -test_oct_baseline (__main__.TextHexOct) ... ok -test_oct_unsigned (__main__.TextHexOct) ... ok - ----------------------------------------------------------------------- -Ran 4 tests in 1.857s - -OK -========================== closed ========================== -execution time: 16.4112038612 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_hmac.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,65 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:53:11 2005 - -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 167 in ? - test_main() - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 163 in test_main - CopyTestCase - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors - "9294727A3638BB1C13F48EF8158BFC9D") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test - self.assertEqual(h.hexdigest().upper(), digest.upper()) - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual - raise self.failureException, \ -AssertionError: '000000000000000000000000E71DFA9D' != '9294727A3638BB1C13F48EF8158BFC9D' - -test_md5_vectors (__main__.TestVectorsTestCase) ... FAIL -test_sha_vectors (__main__.TestVectorsTestCase) ... ok -test_normal (__main__.ConstructorTestCase) ... ok -test_withmodule (__main__.ConstructorTestCase) ... ok -test_withtext (__main__.ConstructorTestCase) ... ok -test_default_is_md5 (__main__.SanityTestCase) ... ok -test_exercise_all_methods (__main__.SanityTestCase) ... ok -test_attributes (__main__.CopyTestCase) ... ok -test_equality (__main__.CopyTestCase) ... ok -test_realcopy (__main__.CopyTestCase) ... ok - -====================================================================== -FAIL: test_md5_vectors (__main__.TestVectorsTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 17, in test_md5_vectors - "9294727A3638BB1C13F48EF8158BFC9D") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_hmac.py", line 13, in md5test - self.assertEqual(h.hexdigest().upper(), digest.upper()) - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual - raise self.failureException, \ -AssertionError: '000000000000000000000000E71DFA9D' != '9294727A3638BB1C13F48EF8158BFC9D' - ----------------------------------------------------------------------- -Ran 10 tests in 167.282s - -FAILED (failures=1) -========================== closed ========================== -execution time: 182.006867886 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_hotshot.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hotshot.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:09:57 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_hotshot.py", line 1 in ? -import hotshot - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/hotshot/__init__.py", line 3 in ? -import _hotshot -ImportError: _hotshot -========================== closed ========================== -execution time: 4.8516690731 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_htmllib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_htmllib.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:56:13 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_anchor_collection (__main__.HTMLParserTestCase) ... ok -test_decl_collection (__main__.HTMLParserTestCase) ... ok - ----------------------------------------------------------------------- -Ran 2 tests in 2.094s - -OK -========================== closed ========================== -execution time: 63.9509100914 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_htmlparser.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,48 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_htmlparser.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 20:57:19 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_attr_entity_replacement (__main__.HTMLParserTestCase) ... ok -test_attr_funky_names (__main__.HTMLParserTestCase) ... ok -test_attr_syntax (__main__.HTMLParserTestCase) ... ok -test_attr_values (__main__.HTMLParserTestCase) ... ok -test_bad_nesting (__main__.HTMLParserTestCase) ... ok -test_bare_ampersands (__main__.HTMLParserTestCase) ... ok -test_bare_pointy_brackets (__main__.HTMLParserTestCase) ... ok -test_buffer_artefacts (__main__.HTMLParserTestCase) ... ok -test_cdata_content (__main__.HTMLParserTestCase) ... ok -test_declaration_junk_chars (__main__.HTMLParserTestCase) ... ok -test_doctype_decl (__main__.HTMLParserTestCase) ... ok -test_get_starttag_text (__main__.HTMLParserTestCase) ... ok -test_illegal_declarations (__main__.HTMLParserTestCase) ... ok -test_processing_instruction_only (__main__.HTMLParserTestCase) ... ok -test_simple_html (__main__.HTMLParserTestCase) ... ok -test_startendtag (__main__.HTMLParserTestCase) ... ok -test_starttag_end_boundary (__main__.HTMLParserTestCase) ... ok -test_starttag_junk_chars (__main__.HTMLParserTestCase) ... ok -test_unclosed_entityref (__main__.HTMLParserTestCase) ... ok - ----------------------------------------------------------------------- -Ran 19 tests in 282.261s - -OK -========================== closed ========================== -execution time: 336.537530899 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_httplib.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_httplib.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,13 +0,0 @@ -test_httplib -reply: 'HTTP/1.1 200 Ok\r\n' -Text -reply: 'HTTP/1.1 400.100 Not Ok\r\n' -BadStatusLine raised as expected -InvalidURL raised as expected -InvalidURL raised as expected -reply: 'HTTP/1.1 200 OK\r\n' -header: Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme" -header: Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme" -reply: 'HTTP/1.1 200 OK\r\n' -header: Content-Length: 14432 - Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_httplib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_httplib.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:27:17 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_httplib.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -OK -========================== closed ========================== -execution time: 30.9055290222 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_imageop.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imageop.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:27:48 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imageop.py", line 10 in ? -import imageop, uu, os -ImportError: imageop -========================== closed ========================== -execution time: 4.55727982521 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_imaplib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imaplib.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:27:53 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -========================== closed ========================== -execution time: 97.3515319824 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_imgfile.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imgfile.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:29:30 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imgfile.py", line 9 in ? -import imgfile, uu, os -ImportError: imgfile -========================== closed ========================== -execution time: 5.05778217316 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_imp.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_imp.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,23 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imp.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:29:36 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imp.py", line 39 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imp.py", line 36 in test_main - testLock() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_imp.py", line 13 in testLock - lock_held_at_start = imp.lock_held() -AttributeError: 'module' object has no attribute 'lock_held' -========================== closed ========================== -execution time: 4.62441587448 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_import.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_import.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_import.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:29:41 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_import.py", line 67 in ? - test_with_extension(os.extsep + "py") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_import.py", line 53 in test_with_extension - raise ValueError("import from .pyc/.pyo failed: %s" % err) -ValueError: import from .pyc/.pyo failed: No module named @test -========================== closed ========================== -execution time: 6.98207688332 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_importhooks.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,66 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:29:49 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 206 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 203 in test_main - test_support.run_unittest(ImportHooksTestCase) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred in __main__.ImportHooksTestCase -testBlocker (__main__.ImportHooksTestCase) ... ERROR -testImpWrapper (__main__.ImportHooksTestCase) ... ERROR -testMetaPath (__main__.ImportHooksTestCase) ... ERROR -testPathHook (__main__.ImportHooksTestCase) ... ERROR - -====================================================================== -ERROR: testBlocker (__main__.ImportHooksTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp - self.meta_path = sys.meta_path[:] -AttributeError: 'module' object has no attribute 'meta_path' - -====================================================================== -ERROR: testImpWrapper (__main__.ImportHooksTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp - self.meta_path = sys.meta_path[:] -AttributeError: 'module' object has no attribute 'meta_path' - -====================================================================== -ERROR: testMetaPath (__main__.ImportHooksTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp - self.meta_path = sys.meta_path[:] -AttributeError: 'module' object has no attribute 'meta_path' - -====================================================================== -ERROR: testPathHook (__main__.ImportHooksTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_importhooks.py", line 129, in setUp - self.meta_path = sys.meta_path[:] -AttributeError: 'module' object has no attribute 'meta_path' - ----------------------------------------------------------------------- -Ran 4 tests in 2.386s - -FAILED (errors=4) -========================== closed ========================== -execution time: 10.7792191505 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_inspect.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_inspect.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:30:01 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_inspect.py", line 80 in ? -mod = imp.load_source('testmod', TESTFN) -AttributeError: 'module' object has no attribute 'load_source' -========================== closed ========================== -execution time: 255.218666077 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_ioctl.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ioctl.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:34:17 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ioctl.py", line 2 in ? -from test_support import TestSkipped, run_unittest - File "test_support.py", line 4 in ? - raise ImportError, 'test_support must be imported from the test package' -ImportError: test_support must be imported from the test package -========================== closed ========================== -execution time: 8.79495596886 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_isinstance.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,38 +0,0 @@ -testreport-version: 1.0 -command: /Library/Frameworks/Python.framework/Versions/2.4/Resources/Python.app/Contents/MacOS/Python /Users/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /Users/pedronis/PyPy/dist/pypy/interpreter/py.py /Users/pedronis/PyPy/dist/lib-python-2.3.4/test/test_isinstance.py -run by: pedronis at c-0f8b70d5.022-54-67626719.cust.bredbandsbolaget.se -sys.platform: darwin -sys.version_info: (2, 4, 1, 'final', 0) -oldstyle: no -pypy-revision: unknown -startdate: Fri Apr 29 00:30:54 2005 - -============================================================ -faking -faking -faking -faking -faking -test_bases_raises_other_than_attribute_error (__main__.TestIsInstanceExceptions) ... ok -test_class_has_no_bases (__main__.TestIsInstanceExceptions) ... ok -test_dont_mask_non_attribute_error (__main__.TestIsInstanceExceptions) ... ok -test_mask_attribute_error (__main__.TestIsInstanceExceptions) ... ok -test_dont_mask_non_attribute_error (__main__.TestIsSubclassExceptions) ... ok -test_dont_mask_non_attribute_error_in_cls_arg (__main__.TestIsSubclassExceptions) ... ok -test_mask_attribute_error (__main__.TestIsSubclassExceptions) ... ok -test_mask_attribute_error_in_cls_arg (__main__.TestIsSubclassExceptions) ... ok -test_isinstance_abstract (__main__.TestIsInstanceIsSubclass) ... ok -test_isinstance_normal (__main__.TestIsInstanceIsSubclass) ... ok -test_isinstance_recursion_limit (__main__.TestIsInstanceIsSubclass) ... ok -test_subclass_abstract (__main__.TestIsInstanceIsSubclass) ... ok -test_subclass_normal (__main__.TestIsInstanceIsSubclass) ... ok -test_subclass_recursion_limit (__main__.TestIsInstanceIsSubclass) ... ok -test_subclass_tuple (__main__.TestIsInstanceIsSubclass) ... ok - ----------------------------------------------------------------------- -Ran 15 tests in 31.442s - -OK -========================== closed ========================== -execution time: 50.0806570053 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_iter.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_iter.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,227 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_iter.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:34:49 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -test_builtin_filter (__main__.TestCase) ... ok -test_builtin_list (__main__.TestCase) ... ok -test_builtin_map (__main__.TestCase) ... ok -test_builtin_max_min (__main__.TestCase) ... ok -test_builtin_reduce (__main__.TestCase) ... ok -test_builtin_tuple (__main__.TestCase) ... ok -test_builtin_zip (__main__.TestCase) ... ok -test_countOf (__main__.TestCase) ... ok -test_exception_function (__main__.TestCase) ... ok -test_exception_sequence (__main__.TestCase) ... ok -test_in_and_not_in (__main__.TestCase) ... ok -test_indexOf (__main__.TestCase) ... ok -test_iter_basic (__main__.TestCase) ... ok -test_iter_big_range (__main__.TestCase) ... ok -test_iter_callable (__main__.TestCase) ... ok -test_iter_class_for (__main__.TestCase) ... ok -test_iter_class_iter (__main__.TestCase) ... ok -test_iter_dict (__main__.TestCase) ... ok -test_iter_empty (__main__.TestCase) ... ok -test_iter_file (__main__.TestCase) ... ok -test_iter_for_loop (__main__.TestCase) ... ok -test_iter_function (__main__.TestCase) ... ok -test_iter_function_stop (__main__.TestCase) ... ok -test_iter_idempotency (__main__.TestCase) ... ok -test_iter_independence (__main__.TestCase) ... ok -test_iter_string (__main__.TestCase) ... ok -test_iter_tuple (__main__.TestCase) ... ok -test_iter_unicode (__main__.TestCase) ... ok -test_iter_xrange (__main__.TestCase) ... ok -test_nested_comprehensions_for (__main__.TestCase) ... ok -test_nested_comprehensions_iter (__main__.TestCase) ... ok -test_seq_class_for (__main__.TestCase) ... ok -test_seq_class_iter (__main__.TestCase) ... ok -test_sinkstate_callable (__main__.TestCase) ... ok -test_sinkstate_dict (__main__.TestCase) ... ok -test_sinkstate_enumerate (__main__.TestCase) ... ok -test_sinkstate_list (__main__.TestCase) ... ok -test_sinkstate_range (__main__.TestCase) ... ok -test_sinkstate_sequence (__main__.TestCase) ... ok -test_sinkstate_string (__main__.TestCase) ... ok -test_sinkstate_tuple (__main__.TestCase) ... ok -test_sinkstate_yield (__main__.TestCase) ... ok -test_stop_sequence (__main__.TestCase) ... ok -test_unicode_join_endcase (__main__.TestCase) ... ok -test_unpack_iter (__main__.TestCase) ... FAIL -test_writelines (__main__.TestCase) ... Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args - frame.setfastscope(scope_w) - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) -pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > -========================== closed ========================== -execution time: 102.834505796 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_itertools.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,63 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/pypy/lib/test2/test_itertools.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:03:33 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_StopIteration (__main__.TestBasicOps) ... ok -test_chain (__main__.TestBasicOps) ... ok -test_count (__main__.TestBasicOps) ... ok -test_cycle (__main__.TestBasicOps) ... ok -test_dropwhile (__main__.TestBasicOps) ... ok -test_ifilter (__main__.TestBasicOps) ... ok -test_ifilterfalse (__main__.TestBasicOps) ... ok -test_imap (__main__.TestBasicOps) ... ok -test_islice (__main__.TestBasicOps) ... ok -test_izip (__main__.TestBasicOps) ... ok -test_repeat (__main__.TestBasicOps) ... ok -test_starmap (__main__.TestBasicOps) ... ok -test_takewhile (__main__.TestBasicOps) ... ok -test_chain (__main__.TestVariousIteratorArgs) ... ok -test_cycle (__main__.TestVariousIteratorArgs) ... ok -test_dropwhile (__main__.TestVariousIteratorArgs) ... ok -test_ifilter (__main__.TestVariousIteratorArgs) ... ok -test_ifilterfalse (__main__.TestVariousIteratorArgs) ... ok -test_imap (__main__.TestVariousIteratorArgs) ... ok -test_islice (__main__.TestVariousIteratorArgs) ... ok -test_izip (__main__.TestVariousIteratorArgs) ... ok -test_starmap (__main__.TestVariousIteratorArgs) ... ok -test_takewhile (__main__.TestVariousIteratorArgs) ... ok -test_chain (__main__.TestGC) ... ok -test_cycle (__main__.TestGC) ... ok -test_ifilter (__main__.TestGC) ... ok -test_ifilterfalse (__main__.TestGC) ... ok -test_imap (__main__.TestGC) ... ok -test_islice (__main__.TestGC) ... ok -test_izip (__main__.TestGC) ... ok -test_starmap (__main__.TestGC) ... ok -test_sf_793826 (__main__.RegressionTests) ... ok -test_sf_950057 (__main__.RegressionTests) ... ok - ----------------------------------------------------------------------- -Ran 33 tests in 256.648s - -OK -doctest (__main__) ... 35 tests with zero failures -========================== closed ========================== -execution time: 386.108942032 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_largefile.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,55 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_largefile.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:51:35 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -create large file via seek (may be sparse file) ... -check file size with os.fstat -2500000001L =?= 2500000001L ... yes -check file size with os.stat -2500000001L =?= 2500000001L ... yes -play around with seek() and read() with the built largefile -0L =?= 0 ... yes -'z' =?= 'z' ... yes -1L =?= 1 ... yes -0L =?= 0 ... yes -0L =?= 0 ... yes -42L =?= 42 ... yes -42L =?= 42 ... yes -84L =?= 84 ... yes -84L =?= 84 ... yes -2500000001L =?= 2500000001L ... yes -2499999991L =?= 2499999991L ... yes -0L =?= 0 ... yes -2500000000L =?= 2500000000L ... yes -'a' =?= 'a' ... yes -'z' =?= 'z' ... yes -1L =?= 1 ... yes -play around with os.lseek() with the built largefile -0L =?= 0 ... yes -42L =?= 42 ... yes -84L =?= 84 ... yes -84L =?= 84 ... yes -2500000001L =?= 2500000001L ... yes -2499999991L =?= 2499999991L ... yes -0L =?= 0 ... yes -2500000000L =?= 2500000000L ... yes -'a' =?= 'a' ... yes -try truncate -2500000001L =?= 2500000001L ... yes -2499999990L =?= 2499999990L ... yes -2499999990L =?= 2499999990L ... yes -42L =?= 42 ... yes -2499999989L =?= 2499999989L ... yes -0L =?= 0 ... yes -1 =?= 1 ... yes -========================== closed ========================== -execution time: 14.4720249176 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_linuxaudiodev Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_linuxaudiodev.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:51:49 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_linuxaudiodev.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_linuxaudiodev.py", line 7 in ? -import fcntl -ImportError: fcntl -FAILED: test output differs -========================== closed ========================== -execution time: 5.08338594437 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_locale.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_locale.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_locale.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:51:56 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_locale.py", line 16 in ? - raise ImportError, "test locale %s not supported" % tloc -ImportError: test locale en_US not supported -========================== closed ========================== -execution time: 5.23888087273 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_logging.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_logging.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_logging Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_logging.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_logging.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_logging.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 01:52:03 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_logging.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_logging.py", line 29 in ? -import socket, threading, time - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/threading.py", line 6 in ? - import thread -ImportError: thread -FAILED: test output differs -========================== closed ========================== -execution time: 15.7029800415 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_long.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_long.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,30 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_long.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:09:59 2005 - -============================================================ -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_long.py", line 436 in ? -test_division() - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_long.py", line 100 in test_division - y = getran(leny) or 1L - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_long.py", line 50 in getran - r = int(random() * (SHIFT * 2)) | 1 # force 1 bits to start -KeyboardInterrupt -long / * % divmod -========================== closed ========================== -execution time: 902.377927065 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_long_future.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long_future.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:07:22 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long_future.py", line 55 in ? -test_true_division() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_long_future.py", line 19 in test_true_division - verify(1 / mhuge == 0.0) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180 in verify - raise TestFailed(reason) -TestFailed: test failed -long true division -========================== closed ========================== -execution time: 6.14067292213 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_longexp.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_longexp.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,2 +0,0 @@ -test_longexp -65580 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_longexp.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_longexp.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:07:29 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_longexp.out -============================================================ -faking -faking -faking -OK -========================== closed ========================== -execution time: 2.79140210152 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_macfs.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macfs.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:07:32 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macfs.py", line 6 in ? -import macfs -ImportError: macfs -========================== closed ========================== -execution time: 10.4201729298 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_macostools.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macostools.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:07:43 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macostools.py", line 4 in ? -import macostools -ImportError: macostools -========================== closed ========================== -execution time: 3.9751958847 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_macpath.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,26 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_macpath.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:07:48 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -test_abspath (__main__.MacPathTestCase) ... ok -test_commonprefix (__main__.MacPathTestCase) ... ok -test_isabs (__main__.MacPathTestCase) ... ok -test_split (__main__.MacPathTestCase) ... ok -test_splitdrive (__main__.MacPathTestCase) ... ok -test_splitext (__main__.MacPathTestCase) ... ok - ----------------------------------------------------------------------- -Ran 6 tests in 2.620s - -OK -========================== closed ========================== -execution time: 9.74198007584 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_mailbox.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,29 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_mailbox.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:25:02 2005 - -============================================================ -faking -faking -faking -faking -faking -Test an empty maildir mailbox ... ok -test_nonempty_maildir_both (__main__.MaildirTestCase) ... ok -test_nonempty_maildir_cur (__main__.MaildirTestCase) ... ok -test_nonempty_maildir_new (__main__.MaildirTestCase) ... ok - ----------------------------------------------------------------------- -Ran 4 tests in 3.131s - -OK -========================== closed ========================== -execution time: 19.8124909401 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_marshal.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,15 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_marshal.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:08:14 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -========================== closed ========================== -execution time: 783.13994503 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_math.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_math.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,29 +0,0 @@ -test_math -math module, testing with eps 1e-05 -constants -acos -asin -atan -atan2 -ceil -cos -cosh -degrees -exp -fabs -floor -fmod -frexp -hypot -ldexp -log -log10 -modf -pow -radians -sin -sinh -sqrt -tan -tanh -exceptions Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_math.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_math.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,18 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_math.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:21:18 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_math.out -============================================================ -faking -faking -faking -faking -faking -FAILED: test output differs -========================== closed ========================== -execution time: 5.44168496132 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_md5.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_md5.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,9 +0,0 @@ -test_md5 -MD5 test suite: -MD5 ("") = 000000000000000000000000ecf8427e -MD5 ("a") = 00000000000000000000000069772661 -MD5 ("abc") = 00000000000000000000000028e17f72 -MD5 ("message digest") = 000000000000000000000000aaf161d0 -MD5 ("abcdefghijklmnopqrstuvwxyz") = 000000000000000000000000ca67e13b -MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 0000000000000000000000009f419d9f -MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 0000000000000000000000002107b67a Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_md5.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_md5.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_md5.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:21:23 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_md5.out -============================================================ -faking -faking -faking -FAILED: test output differs -========================== closed ========================== -execution time: 13.2258200645 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_mhlib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,34 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_mhlib.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:25:21 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_basic (__main__.MhlibTests) ... ok -test_listfolders (__main__.MhlibTests) ... ok -test_modify (__main__.MhlibTests) ... ok -test_read (__main__.MhlibTests) ... ok -test_sequence (__main__.MhlibTests) ... ok - ----------------------------------------------------------------------- -Ran 5 tests in 644.741s - -OK -========================== closed ========================== -execution time: 657.055916071 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_mimetools.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_mimetools.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:36:19 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -test_boundary (__main__.MimeToolsTest) ... ok -test_decodeencode (__main__.MimeToolsTest) ... ok -test_message (__main__.MimeToolsTest) ... ok - ----------------------------------------------------------------------- -Ran 3 tests in 56.622s - -OK -========================== closed ========================== -execution time: 65.6861732006 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_mimetypes.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,37 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_mimetypes.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:37:24 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_data_urls (__main__.MimeTypesTestCase) ... ok -test_default_data (__main__.MimeTypesTestCase) ... ok -test_file_parsing (__main__.MimeTypesTestCase) ... ok -test_guess_all_types (__main__.MimeTypesTestCase) ... ok -test_non_standard_types (__main__.MimeTypesTestCase) ... ok - ----------------------------------------------------------------------- -Ran 5 tests in 14.173s - -OK -========================== closed ========================== -execution time: 28.6301989555 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_minidom.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,25 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_minidom.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:31:19 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_minidom.py", line 12 in ? -import xml.parsers.expat - File "/usr/lib/python2.3/site-packages/_xmlplus/parsers/expat.py", line 4 in ? -from pyexpat import * -ImportError: pyexpat -========================== closed ========================== -execution time: 35.8120279312 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_mmap.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_mmap.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_mmap Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_mmap.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mmap.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:31:55 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_mmap.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mmap.py", line 2 in ? -import mmap -ImportError: mmap -FAILED: test output differs -========================== closed ========================== -execution time: 4.39550495148 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_module.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_module.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_module.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:32:00 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_module.py", line 10 in ? -verify(foo.__dict__ is None) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180 in verify - raise TestFailed(reason) -TestFailed: test failed -========================== closed ========================== -execution time: 4.18672609329 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_mpz.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mpz.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 02:32:05 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_mpz.py", line 2 in ? -import mpz -ImportError: mpz -========================== closed ========================== -execution time: 0.689690113068 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_multifile.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,20 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_multifile.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:37:53 2005 - -============================================================ -faking -faking -faking -faking -faking -========================== closed ========================== -execution time: 8.31684589386 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_mutants.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_mutants.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /home/arigo/pypysrc/pypy/tool/alarm.py 900 /home/arigo/pypysrc/pypy/interpreter/py.py --oldstyle /home/arigo/pypysrc/lib-python-2.3.4/test/test_mutants.py -run by: arigo at tismerysoft.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Wed Apr 27 22:58:27 2005 -pypy-revision: 11518 -============================================================ -faking -faking -faking -faking -faking -trying w/ lengths 47 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ==========================timeout========================== -. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ========================== closed ========================== -execution time: 1452.85674214 seconds -exit status: 143 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_netrc.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,26 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_netrc.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:38:01 2005 - -============================================================ -faking -faking -faking -faking -faking -test_case_1 (__main__.NetrcTestCase) ... ok - ----------------------------------------------------------------------- -Ran 1 test in 2.597s - -OK -========================== closed ========================== -execution time: 10.0679290295 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_new.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_new.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,10 +0,0 @@ -test_new -new.module() - -new.classobj() -__main__.Spam -new.instance() -<__main__.Spam instance at 0x413c234c> -new.instancemethod() - -new.function() Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_new.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_new.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_new.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:30:41 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_new.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_new.py", line 67 in ? -func = new.function(ccode, g) -TypeError: default __new__ takes no parameters -FAILED: test output differs -========================== closed ========================== -execution time: 5.20506906509 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_nis.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_nis.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_nis Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_nis.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_nis.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_nis.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:30:47 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_nis.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_nis.py", line 2 in ? -import nis -ImportError: nis -FAILED: test output differs -========================== closed ========================== -execution time: 4.31751489639 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_normalization.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_normalization.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:30:51 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_normalization.py", line 91 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_normalization.py", line 44 in test_main - raise TestSkipped(TESTDATAFILE + " not found, download from " + -TestSkipped: NormalizationTest-3.2.0.txt not found, download from http://www.unicode.org/Public/3.2-Update/NormalizationTest-3.2.0.txt -========================== closed ========================== -execution time: 4.30832386017 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_ntpath.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ntpath.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:30:56 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -No errors. Thank your lucky stars. -========================== closed ========================== -execution time: 7.37295985222 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_opcodes.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_opcodes.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,5 +0,0 @@ -test_opcodes -2. Opcodes -XXX Not yet fully implemented -2.1 try inside for loop -2.2 raise class exceptions Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_opcodes.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_opcodes.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:31:04 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_opcodes.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_opcodes.py", line 61 in ? -try: raise BClass, a -BClass: <__main__.BClass instance at 0x413d4d4c> -FAILED: test output differs -========================== closed ========================== -execution time: 6.91907310486 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_openpty.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_openpty.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,4 +0,0 @@ -test_openpty -Calling os.openpty() -(master, slave) = (3, 4) -Ping! Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_openpty.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,18 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_openpty.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:31:11 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_openpty.out -============================================================ -faking -faking -faking -faking -faking -FAILED: test output differs -========================== closed ========================== -execution time: 6.78429794312 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_operations.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_operations.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,5 +0,0 @@ -test_operations -3. Operations -XXX Mostly not yet implemented -3.1 Dictionary lookups succeed even if __cmp__() raises an exception -raising error Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_operations.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_operations.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operations.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:31:18 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_operations.out -============================================================ -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operations.py", line 36 in ? -d[x2] = 2 - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_operations.py", line 29 in __cmp__ - raise RuntimeError, "gotcha" -RuntimeError: gotcha -FAILED: test output differs -========================== closed ========================== -execution time: 2.17960906029 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_operator.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_operator.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,66 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_operator.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:38:11 2005 - -============================================================ -faking -faking -faking -faking -faking -test_abs (__main__.OperatorTestCase) ... ok -test_add (__main__.OperatorTestCase) ... ok -test_bitwise_and (__main__.OperatorTestCase) ... ok -test_bitwise_or (__main__.OperatorTestCase) ... ok -test_bitwise_xor (__main__.OperatorTestCase) ... ok -test_concat (__main__.OperatorTestCase) ... ok -test_contains (__main__.OperatorTestCase) ... ok -test_countOf (__main__.OperatorTestCase) ... ok -test_delitem (__main__.OperatorTestCase) ... ok -test_delslice (__main__.OperatorTestCase) ... ok -test_div (__main__.OperatorTestCase) ... ok -test_eq (__main__.OperatorTestCase) ... ok -test_floordiv (__main__.OperatorTestCase) ... ok -test_ge (__main__.OperatorTestCase) ... ok -test_getitem (__main__.OperatorTestCase) ... ok -test_getslice (__main__.OperatorTestCase) ... ok -test_gt (__main__.OperatorTestCase) ... ok -test_indexOf (__main__.OperatorTestCase) ... ok -test_invert (__main__.OperatorTestCase) ... ok -test_is (__main__.OperatorTestCase) ... ok -test_isCallable (__main__.OperatorTestCase) ... ok -test_isMappingType (__main__.OperatorTestCase) ... ok -test_isNumberType (__main__.OperatorTestCase) ... ok -test_isSequenceType (__main__.OperatorTestCase) ... ok -test_is_not (__main__.OperatorTestCase) ... ok -test_le (__main__.OperatorTestCase) ... ok -test_lshift (__main__.OperatorTestCase) ... ok -test_lt (__main__.OperatorTestCase) ... ok -test_mod (__main__.OperatorTestCase) ... ok -test_mul (__main__.OperatorTestCase) ... ok -test_ne (__main__.OperatorTestCase) ... ok -test_neg (__main__.OperatorTestCase) ... ok -test_pos (__main__.OperatorTestCase) ... ok -test_pow (__main__.OperatorTestCase) ... ok -test_repeat (__main__.OperatorTestCase) ... ok -test_rshift (__main__.OperatorTestCase) ... ok -test_setitem (__main__.OperatorTestCase) ... ok -test_setslice (__main__.OperatorTestCase) ... ok -test_sub (__main__.OperatorTestCase) ... ok -test_truediv (__main__.OperatorTestCase) ... ok -test_truth (__main__.OperatorTestCase) ... ok - ----------------------------------------------------------------------- -Ran 41 tests in 15.735s - -OK -========================== closed ========================== -execution time: 24.1210589409 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_optparse.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_optparse.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:31:39 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_optparse.py", line 1219 in ? - unittest.main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 720 in __init__ - self.parseArgs(argv) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 741 in parseArgs - self.test = self.testLoader.loadTestsFromModule(self.module) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 465 in loadTestsFromModule - tests.append(self.loadTestsFromTestCase(obj)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 456 in loadTestsFromTestCase - self.getTestCaseNames(testCaseClass))) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 532 in getTestCaseNames - testFnNames.sort(self.sortTestMethodsUsing) -TypeError: cmp() takes exactly 2 arguments (3 given) -========================== closed ========================== -execution time: 37.1863081455 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_os.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_os.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,39 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_os.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:38:35 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -/home/hpk/pypy-dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program - result = apply(fn, self.unwrappedargs, self.unwrappedkwds) -/home/hpk/pypy-dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program - result = apply(fn, self.unwrappedargs, self.unwrappedkwds) -test_tempnam (__main__.TemporaryFileTests) ... ok -test_tmpfile (__main__.TemporaryFileTests) ... ok -test_tmpnam (__main__.TemporaryFileTests) ... ok -test_stat_attributes (__main__.StatAttributeTests) ... ok -test_statvfs_attributes (__main__.StatAttributeTests) ... ok -test_read (__main__.EnvironTests) ... ok -test_write (__main__.EnvironTests) ... ok -test_traversal (__main__.WalkTests) ... ok - ----------------------------------------------------------------------- -Ran 8 tests in 7.715s - -OK -========================== closed ========================== -execution time: 23.6628520489 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_ossaudiodev Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ossaudiodev.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:32:50 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_ossaudiodev.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ossaudiodev.py", line 7 in ? -import fcntl -ImportError: fcntl -FAILED: test output differs -========================== closed ========================== -execution time: 4.33334302902 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_parser.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_parser.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,244 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:38:59 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 384 in ? - test_main() - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 379 in test_main - IllegalSyntaxTestCase - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred; run in verbose mode for details -test_assert (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_basic_import_statement (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_expressions (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_function_defs (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_import_from_statement (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_pep263 (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_print (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_simple_assignments (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_simple_augmented_assignments (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_simple_expression (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_yield_statement (__main__.RoundtripLegalSyntaxTestCase) ... ERROR -test_a_comma_comma_c (__main__.IllegalSyntaxTestCase) ... ERROR -test_illegal_operator (__main__.IllegalSyntaxTestCase) ... ERROR -test_illegal_yield_1 (__main__.IllegalSyntaxTestCase) ... ERROR -test_illegal_yield_2 (__main__.IllegalSyntaxTestCase) ... ERROR -test_junk (__main__.IllegalSyntaxTestCase) ... ERROR -test_malformed_global (__main__.IllegalSyntaxTestCase) ... ERROR -test_print_chevron_comma (__main__.IllegalSyntaxTestCase) ... ERROR - -====================================================================== -ERROR: test_assert (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 142, in test_assert - self.check_suite("assert alo < ahi and blo < bhi\n") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_basic_import_statement (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 131, in test_basic_import_statement - self.check_suite("import sys") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_expressions (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 39, in test_expressions - self.check_expr("foo(1)") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 25, in check_expr - self.roundtrip(parser.expr, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_function_defs (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 102, in test_function_defs - self.check_suite("def f(): pass") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_import_from_statement (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 121, in test_import_from_statement - self.check_suite("from sys.path import *") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_pep263 (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 138, in test_pep263 - self.check_suite("# -*- coding: iso-8859-1 -*-\n" - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_print (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 72, in test_print - self.check_suite("print") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_simple_assignments (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 84, in test_simple_assignments - self.check_suite("a = b") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_simple_augmented_assignments (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 88, in test_simple_augmented_assignments - self.check_suite("a += b") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_simple_expression (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 81, in test_simple_expression - self.check_suite("a") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_yield_statement (__main__.RoundtripLegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 31, in test_yield_statement - self.check_suite("def f(): yield 1") - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 28, in check_suite - self.roundtrip(parser.suite, s) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 15, in roundtrip - t = st1.totuple() -AttributeError: 'st' object has no attribute 'totuple' - -====================================================================== -ERROR: test_a_comma_comma_c (__main__.IllegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 330, in test_a_comma_comma_c - self.check_bad_tree(tree, "a,,c") -TypeError: instance exception may not have a separate value - -====================================================================== -ERROR: test_illegal_operator (__main__.IllegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 363, in test_illegal_operator - self.check_bad_tree(tree, "a $= b") -TypeError: instance exception may not have a separate value - -====================================================================== -ERROR: test_illegal_yield_1 (__main__.IllegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 216, in test_illegal_yield_1 - self.check_bad_tree(tree, "def f():\n return 1\n yield 1") -TypeError: instance exception may not have a separate value - -====================================================================== -ERROR: test_illegal_yield_2 (__main__.IllegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 280, in test_illegal_yield_2 - self.check_bad_tree(tree, "def f():\n return 1\n yield 1") -TypeError: instance exception may not have a separate value - -====================================================================== -ERROR: test_junk (__main__.IllegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 161, in test_junk - self.check_bad_tree((1, 2, 3), "") -TypeError: instance exception may not have a separate value - -====================================================================== -ERROR: test_malformed_global (__main__.IllegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 374, in test_malformed_global - self.check_bad_tree(tree, "malformed global ast") -TypeError: instance exception may not have a separate value - -====================================================================== -ERROR: test_print_chevron_comma (__main__.IllegalSyntaxTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_parser.py", line 303, in test_print_chevron_comma - self.check_bad_tree(tree, "print >>fp,") -TypeError: instance exception may not have a separate value - ----------------------------------------------------------------------- -Ran 18 tests in 24.877s - -FAILED (errors=18) -========================== closed ========================== -execution time: 44.0624110699 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pep247.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep247.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:33:25 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep247.py", line 48 in ? - check_hash_module(md5) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep247.py", line 29 in check_hash_module - assert hasattr(obj1, 'digest_size'), "Objects must have digest_size attr" -AssertionError: Objects must have digest_size attr -========================== closed ========================== -execution time: 4.53939318657 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pep263.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,12 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep263.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:33:30 2005 -pypy-revision: 11549 -============================================================ -faking -faking -========================== closed ========================== -execution time: 0.77823805809 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pep277.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep277.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:33:31 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pep277.py", line 6 in ? - raise test_support.TestSkipped, "test works only on NT+" -TestSkipped: test works only on NT+ -========================== closed ========================== -execution time: 4.25580000877 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pickle.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,58 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickle.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:33:36 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickle.py", line 73 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickle.py", line 68 in test_main - PersPicklerTests - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/pickletester.py", line 776 in test_dict_chunking - s = self.dumps(x, proto) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickle.py", line 15 in dumps - return pickle.dumps(arg, proto) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 1386 in dumps - Pickler(file, protocol, bin).dump(obj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 231 in dump - self.save(obj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 293 in save - f(self, obj) # Call unbound method with explicit self - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 663 in save_dict - self._batch_setitems(obj.iteritems()) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 676 in _batch_setitems - save(k) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 293 in save - f(self, obj) # Call unbound method with explicit self - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 472 in save_int - self.write(INT + `obj` + '\n') - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/StringIO.py", line 165 in write - self.len = self.pos = self.pos + len(s) -KeyboardInterrupt -test_dict_chunking (__main__.PickleTests) ... ========================== closed ========================== -execution time: 900.041561127 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pickletools.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,713 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickletools.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:48:36 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -Running pickletools.__doc__ -0 of 0 examples failed in pickletools.__doc__ -Running pickletools.ArgumentDescriptor.__doc__ -0 of 0 examples failed in pickletools.ArgumentDescriptor.__doc__ -Running pickletools.ArgumentDescriptor.__init__.__doc__ -0 of 0 examples failed in pickletools.ArgumentDescriptor.__init__.__doc__ -Running pickletools.OpcodeInfo.__doc__ -0 of 0 examples failed in pickletools.OpcodeInfo.__doc__ -Running pickletools.OpcodeInfo.__init__.__doc__ -0 of 0 examples failed in pickletools.OpcodeInfo.__init__.__doc__ -Running pickletools.StackObject.__doc__ -0 of 0 examples failed in pickletools.StackObject.__doc__ -Running pickletools.StackObject.__init__.__doc__ -0 of 0 examples failed in pickletools.StackObject.__init__.__doc__ -Running pickletools.StackObject.__repr__.__doc__ -0 of 0 examples failed in pickletools.StackObject.__repr__.__doc__ -Running pickletools._test.__doc__ -0 of 0 examples failed in pickletools._test.__doc__ -Running pickletools.dis.__doc__ -0 of 0 examples failed in pickletools.dis.__doc__ -Running pickletools.genops.__doc__ -0 of 0 examples failed in pickletools.genops.__doc__ -Running pickletools.read_decimalnl_long.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_decimalnl_long(StringIO.StringIO("1234\n56")) -Expecting: -Traceback (most recent call last): -... -ValueError: trailing 'L' required in '1234' -ok -Trying: read_decimalnl_long(StringIO.StringIO("1234L\n56")) -Expecting: 1234L -ok -Trying: -read_decimalnl_long(StringIO.StringIO("123456789012345678901234L\n6")) -Expecting: 123456789012345678901234L -ok -0 of 4 examples failed in pickletools.read_decimalnl_long.__doc__ -Running pickletools.read_decimalnl_short.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_decimalnl_short(StringIO.StringIO("1234\n56")) -Expecting: 1234 -ok -Trying: read_decimalnl_short(StringIO.StringIO("1234L\n56")) -Expecting: -Traceback (most recent call last): -... -ValueError: trailing 'L' not allowed in '1234L' -ok -0 of 3 examples failed in pickletools.read_decimalnl_short.__doc__ -Running pickletools.read_float8.__doc__ -Trying: import StringIO, struct -Expecting: nothing -ok -Trying: raw = struct.pack(">d", -1.25) -Expecting: nothing -ok -Trying: raw -Expecting: '\xbf\xf4\x00\x00\x00\x00\x00\x00' -***************************************************************** -Failure in example: raw -from line #3 of pickletools.read_float8 -Expected: '\xbf\xf4\x00\x00\x00\x00\x00\x00' -Got: '\xc0\x00\x00\x00\x00\x00\x00\x00' -Trying: read_float8(StringIO.StringIO(raw + "\n")) -Expecting: -1.25 -***************************************************************** -Failure in example: read_float8(StringIO.StringIO(raw + "\n")) -from line #5 of pickletools.read_float8 -Expected: -1.25 -Got: -2.0 -2 of 4 examples failed in pickletools.read_float8.__doc__ -Running pickletools.read_floatnl.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_floatnl(StringIO.StringIO("-1.25\n6")) -Expecting: -1.25 -ok -0 of 2 examples failed in pickletools.read_floatnl.__doc__ -Running pickletools.read_int4.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_int4(StringIO.StringIO('\xff\x00\x00\x00')) -Expecting: 255 -ok -Trying: read_int4(StringIO.StringIO('\x00\x00\x00\x80')) == -(2**31) -Expecting: True -ok -0 of 3 examples failed in pickletools.read_int4.__doc__ -Running pickletools.read_long1.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_long1(StringIO.StringIO("\x00")) -Expecting: 0L -ok -Trying: read_long1(StringIO.StringIO("\x02\xff\x00")) -Expecting: 255L -ok -Trying: read_long1(StringIO.StringIO("\x02\xff\x7f")) -Expecting: 32767L -ok -Trying: read_long1(StringIO.StringIO("\x02\x00\xff")) -Expecting: -256L -ok -Trying: read_long1(StringIO.StringIO("\x02\x00\x80")) -Expecting: -32768L -ok -0 of 6 examples failed in pickletools.read_long1.__doc__ -Running pickletools.read_long4.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_long4(StringIO.StringIO("\x02\x00\x00\x00\xff\x00")) -Expecting: 255L -ok -Trying: read_long4(StringIO.StringIO("\x02\x00\x00\x00\xff\x7f")) -Expecting: 32767L -ok -Trying: read_long4(StringIO.StringIOfaking -("\x02\x00\x00\x00\x00\xff")) -Expecting: -256L -ok -Trying: read_long4(StringIO.StringIO("\x02\x00\x00\x00\x00\x80")) -Expecting: -32768L -ok -Trying: read_long1(StringIO.StringIO("\x00\x00\x00\x00")) -Expecting: 0L -ok -0 of 6 examples failed in pickletools.read_long4.__doc__ -Running pickletools.read_string1.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_string1(StringIO.StringIO("\x00")) -Expecting: '' -ok -Trying: read_string1(StringIO.StringIO("\x03abcdef")) -Expecting: 'abc' -ok -0 of 3 examples failed in pickletools.read_string1.__doc__ -Running pickletools.read_string4.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_string4(StringIO.StringIO("\x00\x00\x00\x00abc")) -Expecting: '' -ok -Trying: read_string4(StringIO.StringIO("\x03\x00\x00\x00abcdef")) -Expecting: 'abc' -ok -Trying: read_string4(StringIO.StringIO("\x00\x00\x00\x03abcdef")) -Expecting: -Traceback (most recent call last): -... -ValueError: expected 50331648 bytes in a string4, but only 6 remain -ok -0 of 4 examples failed in pickletools.read_string4.__doc__ -Running pickletools.read_stringnl.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_stringnl(StringIO.StringIO("'abcd'\nefg\n")) -Expecting: 'abcd' -ok -Trying: read_stringnl(StringIO.StringIO("\n")) -Expecting: -Traceback (most recent call last): -... -ValueError: no string quotes around '' -ok -Trying: read_stringnl(StringIO.StringIO("\n"), stripquotes=False) -Expecting: '' -ok -Trying: read_stringnl(StringIO.StringIO("''\n")) -Expecting: '' -ok -Trying: read_stringnl(StringIO.StringIO('"abcd"')) -Expecting: -Traceback (most recent call last): -... -ValueError: no newline found when trying to read stringnl -ok -Trying: read_stringnl(StringIO.StringIO(r"'a\n\\b\x00c\td'" + "\n'e'")) -Expecting: 'a\n\\b\x00c\td' -ok -0 of 7 examples failed in pickletools.read_stringnl.__doc__ -Running pickletools.read_stringnl_noescape.__doc__ -0 of 0 examples failed in pickletools.read_stringnl_noescape.__doc__ -Running pickletools.read_stringnl_noescape_pair.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_stringnl_noescape_pair(StringIO.StringIO("Queue\nEmpty\njunk")) -Expecting: 'Queue Empty' -ok -0 of 2 examples failed in pickletools.read_stringnl_noescape_pair.__doc__ -Running pickletools.read_uint1.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_uint1(StringIO.StringIO('\xff')) -Expecting: 255 -ok -0 of 2 examples failed in pickletools.read_uint1.__doc__ -Running pickletools.read_uint2.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_uint2(StringIO.StringIO('\xff\x00')) -Expecting: 255 -ok -Trying: read_uint2(StringIO.StringIO('\xff\xff')) -Expecting: 65535 -ok -0 of 3 examples failed in pickletools.read_uint2.__doc__ -Running pickletools.read_unicodestring4.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: s = u'abcd\uabcd' -Expecting: nothing -ok -Trying: enc = s.encode('utf-8') -Expecting: nothing -ok -Trying: enc -Expecting: 'abcd\xea\xaf\x8d' -ok -Trying: n = chr(len(enc)) + chr(0) * 3 # little-endian 4-byte length -Expecting: nothing -ok -Trying: t = read_unicodestring4(StringIO.StringIO(n + enc + 'junk')) -Expecting: nothing -ok -Trying: s == t -Expecting: True -ok -Trying: read_unicodestring4(StringIO.StringIO(n + enc[:-1])) -Expecting: -Traceback (most recent call last): -... -ValueError: expected 7 bytes in a unicodestring4, but only 6 remain -ok -0 of 8 examples failed in pickletools.read_unicodestring4.__doc__ -Running pickletools.read_unicodestringnl.__doc__ -Trying: import StringIO -Expecting: nothing -ok -Trying: read_unicodestringnl(StringIO.StringIO("abc\uabcd\njunk")) -Expecting: u'abc\uabcd' -ok -0 of 2 examples failed in pickletools.read_unicodestringnl.__doc__ -Running string pickletools.__test__.disassembler_memo_test -Trying: import pickle -Expecting: nothing -ok -Trying: from StringIO import StringIO -Expecting: nothing -ok -Trying: f = StringIO() -Expecting: nothing -ok -Trying: p = pickle.Pickler(f, 2) -Expecting: nothing -ok -Trying: x = [1, 2, 3] -Expecting: nothing -ok -Trying: p.dump(x) -Expecting: nothing -ok -Trying: p.dump(x) -Expecting: nothing -ok -Trying: f.seek(0) -Expecting: nothing -ok -Trying: memo = {} -Expecting: nothing -ok -Trying: dis(f, memo=memo) -Expecting: - 0: \x80 PROTO 2 - 2: ] EMPTY_LIST - 3: q BINPUT 0 - 5: ( MARK - 6: K BININT1 1 - 8: K BININT1 2 - 10: K BININT1 3 - 12: e APPENDS (MARK at 5) - 13: . STOP -highest protocol among opcodes = 2 -ok -Trying: dis(f, memo=memo) -Expecting: - 14: \x80 PROTO 2 - 16: h BINGET 0 - 18: . STOP -highest protocol among opcodes = 2 -ok -0 of 11 examples failed in string pickletools.__test__.disassembler_memo_test -Running string pickletools.__test__.disassembler_test -Trying: import pickle -Expecting: nothing -ok -Trying: x = [1, 2, (3, 4), {'abc': u"def"}] -Expecting: nothing -ok -Trying: pkl = pickle.dumps(x, 0) -Expecting: nothing -ok -Trying: dis(pkl) -Expecting: - 0: ( MARK - 1: l LIST (MARK at 0) - 2: p PUT 0 - 5: I INT 1 - 8: a APPEND - 9: I INT 2 - 12: a APPEND - 13: ( MARK - 14: I INT 3 - 17: I INT 4 - 20: t TUPLE (MARK at 13) - 21: p PUT 1 - 24: a APPEND - 25: ( MARK - 26: d DICT (MARK at 25) - 27: p PUT 2 - 30: S STRING 'abc' - 37: p PUT 3 - 40: V UNICODE u'def' - 45: p PUT 4 - 48: s SETITEM - 49: a APPEND - 50: . STOP -highest protocol among opcodes = 0 -ok -Trying: pkl = pickle.dumps(x, 1) -Expecting: nothing -ok -Trying: dis(pkl) -Expecting: - 0: ] EMPTY_LIST - 1: q BINPUT 0 - 3: ( MARK - 4: K BININT1 1 - 6: K BININT1 2 - 8: ( MARK - 9: K BININT1 3 - 11: K BININT1 4 - 13: t TUPLE (MARK at 8) - 14: q BINPUT 1 - 16: } EMPTY_DICT - 17: q BINPUT 2 - 19: U SHORT_BINSTRING 'abc' - 24: q BINPUT 3 - 26: X BINUNICODE u'def' - 34: q BINPUT 4 - 36: s SETITEM - 37: e APPENDS (MARK at 3) - 38: . STOP -highest protocol among opcodes = 1 -ok -Trying: import random -Expecting: nothing -ok -Trying: dis(pickle.dumps(random.random, 0)) -Expecting: - 0: c GLOBAL 'random random' - 15: p PUT 0 - 18: . STOP -highest protocol among opcodes = 0 -***************************************************************** -Failure in example: dis(pickle.dumps(random.random, 0)) -from line #58 of pickletools.__test__.disassembler_test -Exception raised: -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/doctest.py", line 442, in _run_examples_inner - compileflags, 1) in globs - File "", line 1, in ? - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 1386, in dumps - Pickler(file, protocol, bin).dump(obj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 231, in dump - self.save(obj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 313, in save - rv = reduce(self.proto) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/copy_reg.py", line 69, in _reduce_ex - raise TypeError, "can't pickle %s objects" % base.__name__ -TypeError: can't pickle method objects -Trying: x = [pickle.PicklingError()] * 2 -Expecting: nothing -ok -Trying: dis(pickle.dumps(x, 0)) -Expecting: - 0: ( MARK - 1: l LIST (MARK at 0) - 2: p PUT 0 - 5: ( MARK - 6: i INST 'pickle PicklingError' (MARK at 5) - 28: p PUT 1 - 31: ( MARK - 32: d DICT (MARK at 31) - 33: p PUT 2 - 36: S STRING 'args' - 44: p PUT 3 - 47: ( MARK - 48: t TUPLE (MARK at 47) - 49: s SETITEM - 50: b BUILD - 51: a APPEND - 52: g GET 1 - 55: a APPEND - 56: . STOP -highest protocol among opcodes = 0 -***************************************************************** -Failure in example: dis(pickle.dumps(x, 0)) -from line #65 of pickletools.__test__.disassembler_test -Expected: - 0: ( MARK - 1: l LIST (MARK at 0) - 2: p PUT 0 - 5: ( MARK - 6: i INST 'pickle PicklingError' (MARK at 5) - 28: p PUT 1 - 31: ( MARK - 32: d DICT (MARK at 31) - 33: p PUT 2 - 36: S STRING 'args' - 44: p PUT 3 - 47: ( MARK - 48: t TUPLE (MARK at 47) - 49: s SETITEM - 50: b BUILD - 51: a APPEND - 52: g GET 1 - 55: a APPEND - 56: . STOP -highest protocol among opcodes = 0 -Got: - 0: ( MARK - 1: l LIST (MARK at 0) - 2: p PUT 0 - 5: c GLOBAL 'copy_reg _reconstructor' - 30: p PUT 1 - 33: ( MARK - 34: c GLOBAL 'pickle PicklingError' - 56: p PUT 2 - 59: c GLOBAL '__builtin__ object' - 79: p PUT 3 - 82: N NONE - 83: t TUPLE (MARK at 33) - 84: p PUT 4 - 87: R REDUCE - 88: p PUT 5 - 91: ( MARK - 92: d DICT (MARK at 91) - 93: p PUT 6 - 96: S STRING 'args' - 104: p PUT 7 - 107: ( MARK - 108: t TUPLE (MARK at 107) - 109: s SETITEM - 110: b BUILD - 111: a APPEND - 112: g GET 5 - 115: a APPEND - 116: . STOP -highest protocol among opcodes = 0 -Trying: dis(pickle.dumps(x, 1)) -Expecting: - 0: ] EMPTY_LIST - 1: q BINPUT 0 - 3: ( MARK - 4: ( MARK - 5: c GLOBAL 'pickle PicklingError' - 27: q BINPUT 1 - 29: o OBJ (MARK at 4) - 30: q BINPUT 2 - 32: } EMPTY_DICT - 33: q BINPUT 3 - 35: U SHORT_BINSTRING 'args' - 41: q BINPUT 4 - 43: ) EMPTY_TUPLE - 44: s SETITEM - 45: b BUILD - 46: h BINGET 2 - 48: e APPENDS (MARK at 3) - 49: . STOP -highest protocol among opcodes = 1 -***************************************************************** -Failure in example: dis(pickle.dumps(x, 1)) -from line #87 of pickletools.__test__.disassembler_test -Expected: - 0: ] EMPTY_LIST - 1: q BINPUT 0 - 3: ( MARK - 4: ( MARK - 5: c GLOBAL 'pickle PicklingError' - 27: q BINPUT 1 - 29: o OBJ (MARK at 4) - 30: q BINPUT 2 - 32: } EMPTY_DICT - 33: q BINPUT 3 - 35: U SHORT_BINSTRING 'args' - 41: q BINPUT 4 - 43: ) EMPTY_TUPLE - 44: s SETITEM - 45: b BUILD - 46: h BINGET 2 - 48: e APPENDS (MARK at 3) - 49: . STOP -highest protocol among opcodes = 1 -Got: - 0: ] EMPTY_LIST - 1: q BINPUT 0 - 3: ( MARK - 4: c GLOBAL 'copy_reg _reconstructor' - 29: q BINPUT 1 - 31: ( MARK - 32: c GLOBAL 'pickle PicklingError' - 54: q BINPUT 2 - 56: c GLOBAL '__builtin__ object' - 76: q BINPUT 3 - 78: N NONE - 79: t TUPLE (MARK at 31) - 80: q BINPUT 4 - 82: R REDUCE - 83: q BINPUT 5 - 85: } EMPTY_DICT - 86: q BINPUT 6 - 88: U SHORT_BINSTRING 'args' - 94: q BINPUT 7 - 96: ) EMPTY_TUPLE - 97: s SETITEM - 98: b BUILD - 99: h BINGET 5 - 101: e APPENDS (MARK at 3) - 102: . STOP -highest protocol among opcodes = 1 -Trying: L = [] -Expecting: nothing -ok -Trying: T = L, -Expecting: nothing -ok -Trying: L.append(T) -Expecting: nothing -ok -Trying: L[0] is T -Expecting: True -ok -Trying: T[0] is L -Expecting: True -ok -Trying: L[0][0] is L -Expecting: True -ok -Trying: T[0][0] is T -Expecting: True -ok -Trying: dis(pickle.dumps(L, 0)) -Expecting: - 0: ( MARK - 1: l LIST (MARK at 0) - 2: p PUT 0 - 5: ( MARK - 6: g GET 0 - 9: t TUPLE (MARK at 5) - 10: p PUT 1 - 13: a APPEND - 14: . STOP -highest protocol among opcodes = 0 -ok -Trying: dis(pickle.dumps(L, 1)) -Expecting: - 0: ] EMPTY_LIST - 1: q Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pickletools.py", line 3 in ? -test_support.run_doctest(pickletools) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 290 in run_doctest - raise TestFailed("%d of %d doctests failed" % (f, t)) -TestFailed: 5 of 94 doctests failed -BINPUT 0 - 3: ( MARK - 4: h BINGET 0 - 6: t TUPLE (MARK at 3) - 7: q BINPUT 1 - 9: a APPEND - 10: . STOP -highest protocol among opcodes = 1 -ok -Trying: dis(pickle.dumps(T, 0)) -Expecting: - 0: ( MARK - 1: ( MARK - 2: l LIST (MARK at 1) - 3: p PUT 0 - 6: ( MARK - 7: g GET 0 - 10: t TUPLE (MARK at 6) - 11: p PUT 1 - 14: a APPEND - 15: 0 POP - 16: 0 POP (MARK at 0) - 17: g GET 1 - 20: . STOP -highest protocol among opcodes = 0 -ok -Trying: dis(pickle.dumps(T, 1)) -Expecting: - 0: ( MARK - 1: ] EMPTY_LIST - 2: q BINPUT 0 - 4: ( MARK - 5: h BINGET 0 - 7: t TUPLE (MARK at 4) - 8: q BINPUT 1 - 10: a APPEND - 11: 1 POP_MARK (MARK at 0) - 12: h BINGET 1 - 14: . STOP -highest protocol among opcodes = 1 -ok -Trying: dis(pickle.dumps(L, 2)) -Expecting: - 0: \x80 PROTO 2 - 2: ] EMPTY_LIST - 3: q BINPUT 0 - 5: h BINGET 0 - 7: \x85 TUPLE1 - 8: q BINPUT 1 - 10: a APPEND - 11: . STOP -highest protocol among opcodes = 2 -ok -Trying: dis(pickle.dumps(T, 2)) -Expecting: - 0: \x80 PROTO 2 - 2: ] EMPTY_LIST - 3: q BINPUT 0 - 5: h BINGET 0 - 7: \x85 TUPLE1 - 8: q BINPUT 1 - 10: a APPEND - 11: 0 POP - 12: h BINGET 1 - 14: . STOP -highest protocol among opcodes = 2 -ok -3 of 24 examples failed in string pickletools.__test__.disassembler_test -12 items had no tests: - pickletools - pickletools.ArgumentDescriptor - pickletools.ArgumentDescriptor.__init__ - pickletools.OpcodeInfo - pickletools.OpcodeInfo.__init__ - pickletools.StackObject - pickletools.StackObject.__init__ - pickletools.StackObject.__repr__ - pickletools._test - pickletools.dis - pickletools.genops - pickletools.read_stringnl_noescape -15 items passed all tests: - 11 tests in pickletools.__test__.disassembler_memo_test - 4 tests in pickletools.read_decimalnl_long - 3 tests in pickletools.read_decimalnl_short - 2 tests in pickletools.read_floatnl - 3 tests in pickletools.read_int4 - 6 tests in pickletools.read_long1 - 6 tests in pickletools.read_long4 - 3 tests in pickletools.read_string1 - 4 tests in pickletools.read_string4 - 7 tests in pickletools.read_stringnl - 2 tests in pickletools.read_stringnl_noescape_pair - 2 tests in pickletools.read_uint1 - 3 tests in pickletools.read_uint2 - 8 tests in pickletools.read_unicodestring4 - 2 tests in pickletools.read_unicodestringnl -***************************************************************** -2 items had failures: - 3 of 24 in pickletools.__test__.disassembler_test - 2 of 4 in pickletools.read_float8 -94 tests in 29 items. -89 passed and 5 failed. -***Test Failed*** 5 failures. -========================== closed ========================== -execution time: 487.773357153 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pkg.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pkg.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,121 +0,0 @@ -test_pkg -running test t1 -mkdir /tmp/tmpyjFK1y/t1 -write /tmp/tmpyjFK1y/t1/__init__.py -sys.path = ['/tmp/tmpyjFK1y', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] -rmdir /tmp/tmpyjFK1y/t1 -rmdir /tmp/tmpyjFK1y -running test t2 -mkdir /tmp/tmpO81fq5/t2 -write /tmp/tmpO81fq5/t2/__init__.py -mkdir /tmp/tmpO81fq5/t2/sub -write /tmp/tmpO81fq5/t2/sub/__init__.py -mkdir /tmp/tmpO81fq5/t2/sub/subsub -write /tmp/tmpO81fq5/t2/sub/subsub/__init__.py -sys.path = ['/tmp/tmpO81fq5', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] -t2 loading -doc for t2 -t2.sub.subsub loading -t2 t2.sub t2.sub.subsub -['sub', 't2'] -t2.sub t2.sub.subsub -t2.sub.subsub -['spam', 'sub', 'subsub', 't2'] -t2 t2.sub t2.sub.subsub -['spam', 'sub', 'subsub', 't2'] -rmdir /tmp/tmpO81fq5/t2/sub/subsub -rmdir /tmp/tmpO81fq5/t2/sub -rmdir /tmp/tmpO81fq5/t2 -rmdir /tmp/tmpO81fq5 -running test t3 -mkdir /tmp/tmpZAAbFD/t3 -write /tmp/tmpZAAbFD/t3/__init__.py -mkdir /tmp/tmpZAAbFD/t3/sub -write /tmp/tmpZAAbFD/t3/sub/__init__.py -mkdir /tmp/tmpZAAbFD/t3/sub/subsub -write /tmp/tmpZAAbFD/t3/sub/subsub/__init__.py -sys.path = ['/tmp/tmpZAAbFD', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] -t3 loading -t3.sub.subsub loading -t3 t3.sub t3.sub.subsub -t3 loading -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkg.py", line 66, in runtest - execfile(fname, globals(), {}) - File "/tmp/tmpZLWDPt", line 5, in ? - reload(t3.sub) -AttributeError: 'module' object has no attribute 'sub' -rmdir /tmp/tmpZAAbFD/t3/sub/subsub -rmdir /tmp/tmpZAAbFD/t3/sub -rmdir /tmp/tmpZAAbFD/t3 -rmdir /tmp/tmpZAAbFD -running test t4 -write /tmp/tmpkf50O2/t4.py -mkdir /tmp/tmpkf50O2/t4 -write /tmp/tmpkf50O2/t4/__init__.py -write /tmp/tmpkf50O2/t4/sub.py -mkdir /tmp/tmpkf50O2/t4/sub -write /tmp/tmpkf50O2/t4/sub/__init__.py -write /tmp/tmpkf50O2/t4/sub/subsub.py -mkdir /tmp/tmpkf50O2/t4/sub/subsub -write /tmp/tmpkf50O2/t4/sub/subsub/__init__.py -sys.path = ['/tmp/tmpkf50O2', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] -t4 loading -t4.sub.subsub loading -t4.sub.subsub.spam = 1 -rmdir /tmp/tmpkf50O2/t4/sub/subsub -rmdir /tmp/tmpkf50O2/t4/sub -rmdir /tmp/tmpkf50O2/t4 -rmdir /tmp/tmpkf50O2 -running test t5 -mkdir /tmp/tmpB4z795/t5 -write /tmp/tmpB4z795/t5/__init__.py -write /tmp/tmpB4z795/t5/string.py -write /tmp/tmpB4z795/t5/foo.py -sys.path = ['/tmp/tmpB4z795', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] -t5.foo loading -t5.string loading -1 -['foo', 'string', 't5'] -['__file__', '__name__', '__path__', 'foo', 'string', 't5'] -['__file__', '__name__', 'string'] -['__file__', '__name__', 'spam'] -rmdir /tmp/tmpB4z795/t5 -rmdir /tmp/tmpB4z795 -running test t6 -mkdir /tmp/tmpKIkd4b/t6 -write /tmp/tmpKIkd4b/t6/__init__.py -write /tmp/tmpKIkd4b/t6/spam.py -write /tmp/tmpKIkd4b/t6/ham.py -write /tmp/tmpKIkd4b/t6/eggs.py -sys.path = ['/tmp/tmpKIkd4b', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] -['__all__', '__file__', '__name__', '__path__'] -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkg.py", line 66, in runtest - execfile(fname, globals(), {}) - File "/tmp/tmpL8EK10", line 4, in ? - from t6 import * -AttributeError: 'module' object has no attribute 'spam' -rmdir /tmp/tmpKIkd4b/t6 -rmdir /tmp/tmpKIkd4b -running test t7 -write /tmp/tmpZfUKRE/t7.py -mkdir /tmp/tmpZfUKRE/t7 -write /tmp/tmpZfUKRE/t7/__init__.py -write /tmp/tmpZfUKRE/t7/sub.py -mkdir /tmp/tmpZfUKRE/t7/sub -write /tmp/tmpZfUKRE/t7/sub/__init__.py -write /tmp/tmpZfUKRE/t7/sub/subsub.py -mkdir /tmp/tmpZfUKRE/t7/sub/subsub -write /tmp/tmpZfUKRE/t7/sub/subsub/__init__.py -sys.path = ['/tmp/tmpZfUKRE', '', '/u/pedronis/PyPy/dist/pypy/lib', '/u/pedronis/PyPy/dist/lib-python-2.3.4', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/Numeric', '/usr/lib/python2.3/site-packages/PIL', '/usr/lib/site-python'] -t7 loading -['__file__', '__name__', '__path__'] -['__file__', '__name__', '__path__'] -t7.sub.subsub loading -['__file__', '__name__', '__path__', 'spam'] -t7.sub.subsub.spam = 1 -rmdir /tmp/tmpZfUKRE/t7/sub/subsub -rmdir /tmp/tmpZfUKRE/t7/sub -rmdir /tmp/tmpZfUKRE/t7 -rmdir /tmp/tmpZfUKRE Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pkg.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,18 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pkg.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:56:45 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_pkg.out -============================================================ -faking -faking -faking -faking -faking -FAILED: test output differs -========================== closed ========================== -execution time: 21.8735609055 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pkgimport.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,52 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:39:44 2005 - -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py", line 83 in ? - test_main() - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py", line 79 in test_main - run_unittest(TestImport) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics - self.assert_(not sys.modules.has_key(self.module_name) and - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError - -test_package_import__semantics (__main__.TestImport) ... FAIL - -====================================================================== -FAIL: test_package_import__semantics (__main__.TestImport) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/home/hpk/pypy-dist/lib-python-2.3.4/test/test_pkgimport.py", line 55, in test_package_import__semantics - self.assert_(not sys.modules.has_key(self.module_name) and - File "/home/hpk/pypy-dist/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError - ----------------------------------------------------------------------- -Ran 1 test in 2.262s - -FAILED (failures=1) -========================== closed ========================== -execution time: 10.8054561615 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_plistlib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_plistlib.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:57:17 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_plistlib.py", line 4 in ? -import plistlib -ImportError: plistlib -========================== closed ========================== -execution time: 4.00961995125 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_poll.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_poll.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,2 +0,0 @@ -test_poll -Running poll test 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_poll.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_poll.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,25 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_poll.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:57:22 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_poll.out -============================================================ -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_poll.py", line 171 in ? -test_poll1() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_poll.py", line 37 in test_poll1 - p.register(rd, select.POLLIN) -AttributeError: 'poll' object has no attribute 'register' -FAILED: test output differs -========================== closed ========================== -execution time: 4.90954208374 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_popen.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_popen.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,3 +0,0 @@ -test_popen -Test popen: -popen seemed to process the command-line correctly Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_popen.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_popen.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,27 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_popen.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:57:27 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_popen.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -OK -========================== closed ========================== -execution time: 7.19031000137 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_popen2.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_popen2.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,9 +0,0 @@ -test_popen2 -Test popen2 module: -testing popen2... -testing popen3... -All OK -Testing os module: -testing popen2... -testing popen3... -All OK Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_popen2.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,18 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_popen2.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 11:57:35 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_popen2.out -============================================================ -faking -faking -faking -faking -faking -OK -========================== closed ========================== -execution time: 43.8546290398 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_posix.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_posix.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,49 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_posix.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:39:55 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -/home/hpk/pypy-dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tmpnam is a potential security risk to your program - result = apply(fn, self.unwrappedargs, self.unwrappedkwds) -/home/hpk/pypy-dist/pypy/objspace/std/fake.py:141: RuntimeWarning: tempnam is a potential security risk to your program - result = apply(fn, self.unwrappedargs, self.unwrappedkwds) -testNoArgFunctions (__main__.PosixTester) ... ok -test_access (__main__.PosixTester) ... ok -test_chdir (__main__.PosixTester) ... ok -test_dup (__main__.PosixTester) ... ok -test_dup2 (__main__.PosixTester) ... ok -test_fdopen (__main__.PosixTester) ... ok -test_fstat (__main__.PosixTester) ... ok -test_fstatvfs (__main__.PosixTester) ... ok -test_ftruncate (__main__.PosixTester) ... ok -test_lsdir (__main__.PosixTester) ... ok -test_pipe (__main__.PosixTester) ... ok -test_stat (__main__.PosixTester) ... ok -test_statvfs (__main__.PosixTester) ... ok -test_strerror (__main__.PosixTester) ... ok -test_tempnam (__main__.PosixTester) ... ok -test_tmpfile (__main__.PosixTester) ... ok -test_umask (__main__.PosixTester) ... ok -test_utime (__main__.PosixTester) ... ok - ----------------------------------------------------------------------- -Ran 18 tests in 6.943s - -OK -========================== closed ========================== -execution time: 17.5544378757 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_posixpath.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,51 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_posixpath.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:40:12 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_abspath (__main__.PosixPathTest) ... ok -test_basename (__main__.PosixPathTest) ... ok -test_commonprefix (__main__.PosixPathTest) ... ok -test_dirname (__main__.PosixPathTest) ... ok -test_exists (__main__.PosixPathTest) ... ok -test_expanduser (__main__.PosixPathTest) ... ok -test_expandvars (__main__.PosixPathTest) ... ok -test_getsize (__main__.PosixPathTest) ... ok -test_isabs (__main__.PosixPathTest) ... ok -test_isdir (__main__.PosixPathTest) ... ok -test_isfile (__main__.PosixPathTest) ... ok -test_islink (__main__.PosixPathTest) ... ok -test_ismount (__main__.PosixPathTest) ... ok -test_join (__main__.PosixPathTest) ... ok -test_normcase (__main__.PosixPathTest) ... ok -test_normpath (__main__.PosixPathTest) ... ok -test_realpath (__main__.PosixPathTest) ... ok -test_samestat (__main__.PosixPathTest) ... ok -test_split (__main__.PosixPathTest) ... ok -test_splitdrive (__main__.PosixPathTest) ... ok -test_splitext (__main__.PosixPathTest) ... ok -test_time (__main__.PosixPathTest) ... ok - ----------------------------------------------------------------------- -Ran 22 tests in 13.988s - -OK -========================== closed ========================== -execution time: 21.7480809689 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pow.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pow.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_pow.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:40:34 2005 - -============================================================ -faking -faking -faking -faking -faking -test_bug643260 (__main__.PowTest) ... ok -test_bug705231 (__main__.PowTest) ... ok -test_other (__main__.PowTest) ... ok -test_powfloat (__main__.PowTest) ... ok -test_powint (__main__.PowTest) ... ok -test_powlong (__main__.PowTest) ... ok - ----------------------------------------------------------------------- -Ran 6 tests in 682.102s - -OK -========================== closed ========================== -execution time: 689.412278891 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pprint.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_pprint.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:52:04 2005 - -============================================================ -faking -faking -faking -faking -faking -test_basic (__main__.QueryTestCase) ... ok -test_basic_line_wrap (__main__.QueryTestCase) ... ok -test_knotted (__main__.QueryTestCase) ... ok -test_same_as_repr (__main__.QueryTestCase) ... ok -test_subclassing (__main__.QueryTestCase) ... ok -test_unreadable (__main__.QueryTestCase) ... ok - ----------------------------------------------------------------------- -Ran 6 tests in 109.304s - -OK -========================== closed ========================== -execution time: 116.874181986 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_profile.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_profile.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,17 +0,0 @@ -test_profile - 53 function calls in 1.000 CPU seconds - - Ordered by: standard name - - ncalls tottime percall cumtime percall filename:lineno(function) - 1 0.000 0.000 1.000 1.000 :1(?) - 0 0.000 0.000 profile:0(profiler) - 1 0.000 0.000 1.000 1.000 profile:0(testfunc()) - 1 0.399 0.399 1.000 1.000 test_profile.py:21(testfunc) - 2 0.080 0.040 0.600 0.300 test_profile.py:30(helper) - 4 0.116 0.029 0.120 0.030 test_profile.py:48(helper1) - 8 0.312 0.039 0.399 0.049 test_profile.py:56(helper2) - 8 0.063 0.007 0.079 0.009 test_profile.py:66(subhelper) - 28 0.027 0.000 0.027 0.000 test_profile.py:78(__getattr__) - - Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_profile.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_profile.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,25 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_profile.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:54:01 2005 - -OUTPUT TEST -see output in: /home/hpk/pypy-dist/lib-python-2.3.4/test/result/test_profile.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -FAILED: test output differs -========================== closed ========================== -execution time: 29.7527279854 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_profilehooks.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,42 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_profilehooks.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:54:31 2005 - -============================================================ -faking -faking -faking -faking -faking -test_caught_exception (__main__.ProfileHookTestCase) ... ok -test_caught_nested_exception (__main__.ProfileHookTestCase) ... ok -test_distant_exception (__main__.ProfileHookTestCase) ... ok -test_exception (__main__.ProfileHookTestCase) ... ok -test_exception_in_except_clause (__main__.ProfileHookTestCase) ... ok -test_exception_propogation (__main__.ProfileHookTestCase) ... ok -test_generator (__main__.ProfileHookTestCase) ... ok -test_nested_exception (__main__.ProfileHookTestCase) ... ok -test_raise (__main__.ProfileHookTestCase) ... ok -test_raise_reraise (__main__.ProfileHookTestCase) ... ok -test_raise_twice (__main__.ProfileHookTestCase) ... ok -test_simple (__main__.ProfileHookTestCase) ... ok -test_stop_iteration (__main__.ProfileHookTestCase) ... ok -test_basic_exception (__main__.ProfileSimulatorTestCase) ... ok -test_caught_exception (__main__.ProfileSimulatorTestCase) ... ok -test_distant_exception (__main__.ProfileSimulatorTestCase) ... ok -test_simple (__main__.ProfileSimulatorTestCase) ... ok - ----------------------------------------------------------------------- -Ran 17 tests in 9.933s - -OK -========================== closed ========================== -execution time: 20.6761231422 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pty.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pty.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_pty Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pty.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pty.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pty.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:08:58 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_pty.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pty.py", line 1 in ? -import pty, os, sys, signal - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pty.py", line 19 in ? -import termios -ImportError: termios -FAILED: test output differs -========================== closed ========================== -execution time: 3.28979802132 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pwd.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pwd.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:09:02 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pwd.py", line 4 in ? -import pwd -ImportError: pwd -========================== closed ========================== -execution time: 4.29201197624 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pyclbr.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,48 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:09:07 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py", line 162 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py", line 158 in test_main - run_unittest(PyclbrTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py", line 132 in test_easy - self.checkModule('doctest') - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyclbr.py", line 64 in checkModule - dict = pyclbr.readmodule_ex(moduleName) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pyclbr.py", line 106 in readmodule_ex - return _readmodule(module, path) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pyclbr.py", line 158 in _readmodule - for tokentype, token, start, end, line in g: - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tokenize.py", line 241 in generate_tokens - token, initial = line[start:end], line[start] -KeyboardInterrupt -test_easy (__main__.PyclbrTest) ... ========================== closed ========================== -execution time: 899.995666981 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_pyexpat Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_pyexpat.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyexpat.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:24:08 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_pyexpat.out -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_pyexpat.py", line 6 in ? -import pyexpat -ImportError: pyexpat -FAILED: test output differs -========================== closed ========================== -execution time: 0.891980886459 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_queue.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_queue.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_queue.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:24:09 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_queue.py", line 5 in ? -import threading - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/threading.py", line 6 in ? - import thread -ImportError: thread -========================== closed ========================== -execution time: 0.94482088089 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_quopri.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,28 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_quopri.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:24:10 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -test_decode (__main__.QuopriTestCase) ... ok -test_decode_header (__main__.QuopriTestCase) ... ok -test_decodestring (__main__.QuopriTestCase) ... ok -test_embedded_ws (__main__.QuopriTestCase) ... ok -test_encode (__main__.QuopriTestCase) ... ok -test_encode_header (__main__.QuopriTestCase) ... ok -test_encodestring (__main__.QuopriTestCase) ... ok -test_idempotent_string (__main__.QuopriTestCase) ... ok - ----------------------------------------------------------------------- -Ran 8 tests in 16.695s - -OK -========================== closed ========================== -execution time: 22.6545300484 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_random.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_random.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,25 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_random.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:24:33 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_random.py", line 124 in ? -class WichmannHill_TestBasicOps(TestBasicOps): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_random.py", line 125 in WichmannHill_TestBasicOps - gen = random.WichmannHill() -AttributeError: 'module' object has no attribute 'WichmannHill' -========================== closed ========================== -execution time: 12.9748449326 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_re.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_re.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,99 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_re.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:24:47 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_re.py", line 629 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_re.py", line 625 in test_main - run_unittest(ReTests) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_re.py", line 378 in test_sre_character_literals - self.assertNotEqual(re.match(r"\x%02x0" % i, chr(i)+"0"), None) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 132 in match - return _compile(pattern, flags).match(string) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 228 in _compile - p = sre_compile.compile(pattern, flags) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_compile.py", line 467 in compile - p = sre_parse.parse(p, flags) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 617 in parse - source = Tokenizer(str) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 186 in __init__ - self.__next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 198 in __next - self.index = self.index + len(char) -KeyboardInterrupt -test_anyall (__main__.ReTests) ... ok -test_basic_re_sub (__main__.ReTests) ... ERROR -test_bigcharset (__main__.ReTests) ... ok -test_bug_113254 (__main__.ReTests) ... ok -test_bug_114660 (__main__.ReTests) ... ok -test_bug_117612 (__main__.ReTests) ... ok -test_bug_418626 (__main__.ReTests) ... ok -test_bug_448951 (__main__.ReTests) ... ok -test_bug_449000 (__main__.ReTests) ... ok -test_bug_449964 (__main__.ReTests) ... ok -test_bug_462270 (__main__.ReTests) ... ok -test_bug_527371 (__main__.ReTests) ... ERROR -test_bug_545855 (__main__.ReTests) ... ok -test_bug_612074 (__main__.ReTests) ... ok -test_bug_725106 (__main__.ReTests) ... ok -test_bug_725149 (__main__.ReTests) ... ok -test_bug_764548 (__main__.ReTests) ... ok -test_bug_926075 (__main__.ReTests) ... ok -test_category (__main__.ReTests) ... ok -test_constants (__main__.ReTests) ... ok -test_expand (__main__.ReTests) ... ok -test_finditer (__main__.ReTests) ... ok -test_flags (__main__.ReTests) ... ok -test_getattr (__main__.ReTests) ... ERROR -test_getlower (__main__.ReTests) ... ok -test_groupdict (__main__.ReTests) ... ok -test_ignore_case (__main__.ReTests) ... ok -test_non_consuming (__main__.ReTests) ... ok -test_not_literal (__main__.ReTests) ... ok -test_pickling (__main__.ReTests) ... ERROR -test_qualified_re_split (__main__.ReTests) ... ok -test_qualified_re_sub (__main__.ReTests) ... ok -test_re_escape (__main__.ReTests) ... ok -test_re_findall (__main__.ReTests) ... ok -test_re_groupref (__main__.ReTests) ... ok -test_re_groupref_exists (__main__.ReTests) ... ok -test_re_match (__main__.ReTests) ... ok -test_re_split (__main__.ReTests) ... ok -test_re_subn (__main__.ReTests) ... ok -test_repeat_minmax (__main__.ReTests) ... ok -test_scanner (__main__.ReTests) ... ERROR -test_search_coverage (__main__.ReTests) ... ok -test_search_star_plus (__main__.ReTests) ... ok -test_special_escapes (__main__.ReTests) ... ok -test_sre_character_literals (__main__.ReTests) ... ========================== closed ========================== -execution time: 899.978173971 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_regex.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_regex.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_regex Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_regex.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_regex.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_regex.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:39:47 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_regex.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_regex.py", line 5 in ? -import regex -ImportError: regex -FAILED: test output differs -========================== closed ========================== -execution time: 15.0013129711 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_repr.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_repr.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,93 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:40:03 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 289 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 283 in test_main - run_unittest(ReprTests) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred in __main__.ReprTests -test_buffer (__main__.ReprTests) ... FAIL -test_builtin_function (__main__.ReprTests) ... FAIL -test_cell (__main__.ReprTests) ... ok -test_container (__main__.ReprTests) ... ok -test_descriptors (__main__.ReprTests) ... FAIL -test_file (__main__.ReprTests) ... ok -test_instance (__main__.ReprTests) ... ok -test_lambda (__main__.ReprTests) ... FAIL -test_nesting (__main__.ReprTests) ... ok -test_numbers (__main__.ReprTests) ... ok -test_string (__main__.ReprTests) ... ok -test_xrange (__main__.ReprTests) ... FAIL - -====================================================================== -FAIL: test_buffer (__main__.ReprTests) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 150, in test_buffer - self.failUnless(repr(x).startswith('') - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual - raise self.failureException, \ -AssertionError: '' != '' - -====================================================================== -FAIL: test_descriptors (__main__.ReprTests) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 159, in test_descriptors - eq(repr(dict.items), "") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual - raise self.failureException, \ -AssertionError: '' != "" - -====================================================================== -FAIL: test_lambda (__main__.ReprTests) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 110, in test_lambda - self.failUnless(repr(lambda x: x).startswith( - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError - -====================================================================== -FAIL: test_xrange (__main__.ReprTests) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_repr.py", line 125, in test_xrange - eq(repr(xrange(1)), 'xrange(1)') - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual - raise self.failureException, \ -AssertionError: '' != 'xrange(1)' - ----------------------------------------------------------------------- -Ran 12 tests in 36.049s - -FAILED (failures=5) -========================== closed ========================== -execution time: 44.7513849735 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_resource.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_resource.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_resource Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_resource.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_resource.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_resource.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:40:48 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_resource.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_resource.py", line 2 in ? -import resource -ImportError: resource -FAILED: test output differs -========================== closed ========================== -execution time: 3.53213500977 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_rfc822.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,37 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_rfc822.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:54:51 2005 - -============================================================ -faking -faking -faking -faking -faking -test_2getaddrlist (__main__.MessageTestCase) ... ok -test_addr_ipquad (__main__.MessageTestCase) ... ok -test_basic (__main__.MessageTestCase) ... ok -test_bogus_to_header (__main__.MessageTestCase) ... ok -test_commas_in_full_name (__main__.MessageTestCase) ... ok -test_get (__main__.MessageTestCase) ... ok -test_parseaddr (__main__.MessageTestCase) ... ok -test_quote_unquote (__main__.MessageTestCase) ... ok -test_quoted_name (__main__.MessageTestCase) ... ok -test_rfc2822_phrases (__main__.MessageTestCase) ... ok -test_setdefault (__main__.MessageTestCase) ... ok -test_twisted (__main__.MessageTestCase) ... ok - ----------------------------------------------------------------------- -Ran 12 tests in 27.441s - -OK -========================== closed ========================== -execution time: 35.267731905 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_rgbimg Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_rgbimg.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rgbimg.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:43:30 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_rgbimg.out -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rgbimg.py", line 3 in ? -import rgbimg, os, uu -ImportError: rgbimg -FAILED: test output differs -========================== closed ========================== -execution time: 0.925149917603 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_richcmp.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,245 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:43:31 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -test_mixed (__main__.VectorTest) ... ok -test_basic (__main__.NumberTest) ... ok -test_values (__main__.NumberTest) ... ok -test_misbehavin (__main__.MiscTest) ... ok -test_not (__main__.MiscTest) ... ok -test_recursion (__main__.MiscTest) ... ok -test_recursion2 (__main__.MiscTest) ... ERROR -test_dicts (__main__.DictTest) ... ok -test_badentry (__main__.ListTest) ... ERROR -test_coverage (__main__.ListTest) ... ok -test_goodentry (__main__.ListTest) ... ok - -====================================================================== -ERROR: test_recursion2 (__main__.MiscTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 273, in test_recursion2 - self.assert_(Weird() == Weird()) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyTraceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 358 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 355 in test_main - test_support.run_unittest(VectorTest, NumberTest, MiscTest, DictTest, ListTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred; run in verbose mode for details -Py/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 265, in __eq__ - return self != other - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 267, in __ne__ - return self == other -RuntimeError: maximum recursion depth exceeded - -====================================================================== -ERROR: test_badentry (__main__.ListTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 339, in test_badentry - self.assertRaises(Exc, op, x, y) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises - callableObj(*args, **kwargs) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_richcmp.py", line 91, in - "eq": (lambda a,b: a==b, operator.eq, operator.__eq__), -TypeError: unsupported operand types for issubtype (classobj, type) - ----------------------------------------------------------------------- -Ran 11 tests in 130.603s - -FAILED (errors=2) -========================== closed ========================== -execution time: 142.851455927 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_robotparser.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,62 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_robotparser.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:55:27 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -RobotTest(1, good, /) ... ok -RobotTest(1, good, /test.html) ... ok -RobotTest(1, bad, /cyberworld/map/index.html) ... ok -RobotTest(1, bad, /tmp/xxx) ... ok -RobotTest(1, bad, /foo.html) ... ok -RobotTest(2, good, /) ... ok -RobotTest(2, good, /test.html) ... ok -RobotTest(2, good, ('cybermapper', '/cyberworld/map/index.html')) ... ok -RobotTest(2, bad, /cyberworld/map/index.html) ... ok -RobotTest(3, bad, /cyberworld/map/index.html) ... ok -RobotTest(3, bad, /) ... ok -RobotTest(3, bad, /tmp/) ... ok -RobotTest(4, bad, /tmp) ... ok -RobotTest(4, bad, /tmp.html) ... ok -RobotTest(4, bad, /tmp/a.html) ... ok -RobotTest(4, bad, /a%3cd.html) ... ok -RobotTest(4, bad, /a%3Cd.html) ... ok -RobotTest(4, bad, /a%2fb.html) ... ok -RobotTest(4, bad, /~joe/index.html) ... ok -RobotTest(5, bad, /tmp) ... ok -RobotTest(5, bad, /tmp.html) ... ok -RobotTest(5, bad, /tmp/a.html) ... ok -RobotTest(5, bad, /a%3cd.html) ... ok -RobotTest(5, bad, /a%3Cd.html) ... ok -RobotTest(5, bad, /a%2fb.html) ... ok -RobotTest(5, bad, /~joe/index.html) ... ok -RobotTest(6, good, /tmp) ... ok -RobotTest(6, bad, /tmp/) ... ok -RobotTest(6, bad, /tmp/a.html) ... ok -RobotTest(6, bad, /a%3cd.html) ... ok -RobotTest(6, bad, /a%3Cd.html) ... ok -RobotTest(6, bad, /a/b.html) ... ok -RobotTest(6, bad, /%7Ejoe/index.html) ... ok -RobotTest(7, good, /foo.html) ... ok - ----------------------------------------------------------------------- -Ran 34 tests in 14.374s - -OK -========================== closed ========================== -execution time: 39.267277956 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_rotor.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_rotor.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_rotor Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_rotor.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rotor.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:46:38 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_rotor.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_rotor.py", line 7 in ? -import rotor -ImportError: rotor -FAILED: test output differs -========================== closed ========================== -execution time: 12.6251718998 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_sax.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_sax.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,56 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sax.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 12:46:51 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sax.py", line 7 in ? - make_parser() - File "/usr/lib/python2.3/site-packages/_xmlplus/sax/sax2exts.py", line 37 in make_parser - return XMLParserFactory.make_parser(parser_list) - File "/usr/lib/python2.3/site-packages/_xmlplus/sax/saxexts.py", line 64 in make_parser - return self._create_parser(parser_name) - File "/usr/lib/python2.3/site-packages/_xmlplus/sax/saxexts.py", line 42 in _create_parser - drv_module = __import__(parser_name,{},{},['create_parser']) - File "/usr/lib/python2.3/site-packages/_xmlplus/sax/drivers2/drv_xmlproc.py", line 9 in ? -from xml.parsers.xmlproc import xmlproc, xmlval, xmlapp - File "/usr/lib/python2.3/site-packages/_xmlplus/parsers/xmlproc/xmlproc.py", line 14 in ? -from dtdparser import * - File "/usr/lib/python2.3/site-packages/_xmlplus/parsers/xmlproc/dtdparser.py", line 12 in ? -from xmlutils import * - File "/usr/lib/python2.3/site-packages/_xmlplus/parsers/xmlproc/xmlutils.py", line 879 in ? - reg_names = characters.re_Names() - File "/usr/lib/python2.3/site-packages/_xmlplus/utils/characters.py", line 67 in re_Names - _re_Names = re.compile(Names) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 179 in compile - return _compile(pattern, flags) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 228 in _compile - p = sre_compile.compile(pattern, flags) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_compile.py", line 467 in compile - p = sre_parse.parse(p, flags) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 624 in parse - p = _parse_sub(source, pattern, 0) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 404 in _parse - this = source.get() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 208 in get - self.__next() -KeyboardInterrupt -========================== closed ========================== -execution time: 900.010243177 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_scope.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_scope.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,17 +0,0 @@ -test_scope -1. simple nesting -2. extra nesting -3. simple nesting + rebinding -4. nesting with global but no free -5. nesting through class -6. nesting plus free ref to global -7. nearest enclosing scope -8. mixed freevars and cellvars -9. free variable in method -10. recursion -11. unoptimized namespaces -12. lambdas -13. UnboundLocal -14. complex definitions -15. scope of global statements -16. check leaks Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_scope.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_scope.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,33 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_scope.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:01:51 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_scope.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -:2: SyntaxWarning: import * only allowed at module level -:1: SyntaxWarning: import * only allowed at module level -:1: SyntaxWarning: import * only allowed at module level -:2: SyntaxWarning: import * only allowed at module level -:2: SyntaxWarning: import * only allowed at module level -:6: SyntaxWarning: import * only allowed at module level -:11: SyntaxWarning: import * only allowed at module level -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_scope.py", line 410 in ? -verify(Foo.count == 0) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 180 in verify - raise TestFailed(reason) -TestFailed: test failed -FAILED: test output differs -========================== closed ========================== -execution time: 18.7362339497 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_scriptpackages.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_scriptpackages.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:02:10 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_scriptpackages.py", line 8 in ? -import aetools -ImportError: aetools -========================== closed ========================== -execution time: 5.81923818588 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_select.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_select.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,41 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_select.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:02:17 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args - frame.setfastscope(scope_w) - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) -pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > -========================== closed ========================== -execution time: 4.45952796936 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_sets.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_sets.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,256 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_sets.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 21:56:06 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_constructor (__main__.TestSetOfSets) ... ok -test_instanceWithException (__main__.TestExceptionPropagation) ... ok -test_instancesWithoutException (__main__.TestExceptionPropagation) ... ok -test_copy (__main__.TestBasicOpsEmpty) ... ok -test_empty_difference (__main__.TestBasicOpsEmpty) ... ok -test_empty_difference_rev (__main__.TestBasicOpsEmpty) ... ok -test_empty_intersection (__main__.TestBasicOpsEmpty) ... ok -test_empty_union (__main__.TestBasicOpsEmpty) ... ok -test_equivalent_equality (__main__.TestBasicOpsEmpty) ... ok -test_intersection_empty (__main__.TestBasicOpsEmpty) ... ok -test_iteration (__main__.TestBasicOpsEmpty) ... ok -test_length (__main__.TestBasicOpsEmpty) ... ok -test_pickling (__main__.TestBasicOpsEmpty) ... ok -test_repr (__main__.TestBasicOpsEmpty) ... ok -test_self_difference (__main__.TestBasicOpsEmpty) ... ok -test_self_equality (__main__.TestBasicOpsEmpty) ... ok -test_self_intersection (__main__.TestBasicOpsEmpty) ... ok -test_self_symmetric_difference (__main__.TestBasicOpsEmpty) ... ok -test_self_union (__main__.TestBasicOpsEmpty) ... ok -test_union_empty (__main__.TestBasicOpsEmpty) ... ok -test_copy (__main__.TestBasicOpsSingleton) ... ok -test_empty_difference (__main__.TestBasicOpsSingleton) ... ok -test_empty_difference_rev (__main__.TestBasicOpsSingleton) ... ok -test_empty_intersection (__main__.TestBasicOpsSingleton) ... ok -test_empty_union (__main__.TestBasicOpsSingleton) ... ok -test_equivalent_equality (__main__.TestBasicOpsSingleton) ... ok -test_in (__main__.TestBasicOpsSingleton) ... ok -test_intersection_empty (__main__.TestBasicOpsSingleton) ... ok -test_iteration (__main__.TestBasicOpsSingleton) ... ok -test_length (__main__.TestBasicOpsSingleton) ... ok -test_not_in (__main__.TestBasicOpsSingleton) ... ok -test_pickling (__main__.TestBasicOpsSingleton) ... ok -test_repr (__main__.TestBasicOpsSingleton) ... ok -test_self_difference (__main__.TestBasicOpsSingleton) ... ok -test_self_equality (__main__.TestBasicOpsSingleton) ... ok -test_self_intersection (__main__.TestBasicOpsSingleton) ... ok -test_self_symmetric_difference (__main__.TestBasicOpsSingleton) ... ok -test_self_union (__main__.TestBasicOpsSingleton) ... ok -test_union_empty (__main__.TestBasicOpsSingleton) ... ok -test_copy (__main__.TestBasicOpsTuple) ... ok -test_empty_difference (__main__.TestBasicOpsTuple) ... ok -test_empty_difference_rev (__main__.TestBasicOpsTuple) ... ok -test_empty_intersection (__main__.TestBasicOpsTuple) ... ok -test_empty_union (__main__.TestBasicOpsTuple) ... ok -test_equivalent_equality (__main__.TestBasicOpsTuple) ... ok -test_in (__main__.TestBasicOpsTuple) ... ok -test_intersection_empty (__main__.TestBasicOpsTuple) ... ok -test_iteration (__main__.TestBasicOpsTuple) ... ok -test_length (__main__.TestBasicOpsTuple) ... ok -test_not_in (__main__.TestBasicOpsTuple) ... ok -test_pickling (__main__.TestBasicOpsTuple) ... ok -test_repr (__main__.TestBasicOpsTuple) ... ok -test_self_difference (__main__.TestBasicOpsTuple) ... ok -test_self_equality (__main__.TestBasicOpsTuple) ... ok -test_self_intersection (__main__.TestBasicOpsTuple) ... ok -test_self_symmetric_difference (__main__.TestBasicOpsTuple) ... ok -test_self_union (__main__.TestBasicOpsTuple) ... ok -test_union_empty (__main__.TestBasicOpsTuple) ... ok -test_copy (__main__.TestBasicOpsTriple) ... ok -test_empty_difference (__main__.TestBasicOpsTriple) ... ok -test_empty_difference_rev (__main__.TestBasicOpsTriple) ... ok -test_empty_intersection (__main__.TestBasicOpsTriple) ... ok -test_empty_union (__main__.TestBasicOpsTriple) ... ok -test_equivalent_equality (__main__.TestBasicOpsTriple) ... ok -test_intersection_empty (__main__.TestBasicOpsTriple) ... ok -test_iteration (__main__.TestBasicOpsTriple) ... ok -test_length (__main__.TestBasicOpsTriple) ... ok -test_pickling (__main__.TestBasicOpsTriple) ... ok -test_repr (__main__.TestBasicOpsTriple) ... ok -test_self_difference (__main__.TestBasicOpsTriple) ... ok -test_self_equality (__main__.TestBasicOpsTriple) ... ok -test_self_intersection (__main__.TestBasicOpsTriple) ... ok -test_self_symmetric_difference (__main__.TestBasicOpsTriple) ... ok -test_self_union (__main__.TestBasicOpsTriple) ... ok -test_union_empty (__main__.TestBasicOpsTriple) ... ok -test_cmp (__main__.TestBinaryOps) ... ok -test_eq (__main__.TestBinaryOps) ... ok -test_intersection_non_overlap (__main__.TestBinaryOps) ... ok -test_intersection_overlap (__main__.TestBinaryOps) ... ok -test_intersection_subset (__main__.TestBinaryOps) ... ok -test_intersection_superset (__main__.TestBinaryOps) ... ok -test_sym_difference_non_overlap (__main__.TestBinaryOps) ... ok -test_sym_difference_overlap (__main__.TestBinaryOps) ... ok -test_sym_difference_subset (__main__.TestBinaryOps) ... ok -test_sym_difference_superset (__main__.TestBinaryOps) ... ok -test_union_non_overlap (__main__.TestBinaryOps) ... ok -test_union_overlap (__main__.TestBinaryOps) ... ok -test_union_subset (__main__.TestBinaryOps) ... ok -test_union_superset (__main__.TestBinaryOps) ... ok -test_difference_method_call (__main__.TestUpdateOps) ... ok -test_difference_non_overlap (__main__.TestUpdateOps) ... ok -test_difference_overlap (__main__.TestUpdateOps) ... ok -test_difference_subset (__main__.TestUpdateOps) ... ok -test_difference_superset (__main__.TestUpdateOps) ... ok -test_intersection_method_call (__main__.TestUpdateOps) ... ok -test_intersection_non_overlap (__main__.TestUpdateOps) ... ok -test_intersection_overlap (__main__.TestUpdateOps) ... ok -test_intersection_subset (__main__.TestUpdateOps) ... ok -test_intersection_superset (__main__.TestUpdateOps) ... ok -test_sym_difference_method_call (__main__.TestUpdateOps) ... ok -test_sym_difference_non_overlap (__main__.TestUpdateOps) ... ok -test_sym_difference_overlap (__main__.TestUpdateOps) ... ok -test_sym_difference_subset (__main__.TestUpdateOps) ... ok -test_sym_difference_superset (__main__.TestUpdateOps) ... ok -test_union_method_call (__main__.TestUpdateOps) ... ok -test_union_non_overlap (__main__.TestUpdateOps) ... ok -test_union_overlap (__main__.TestUpdateOps) ... ok -test_union_subset (__main__.TestUpdateOps) ... ok -test_union_superset (__main__.TestUpdateOps) ... ok -test_add_absent (__main__.TestMutate) ... ok -test_add_present (__main__.TestMutate) ... ok -test_add_until_full (__main__.TestMutate) ... ok -test_clear (__main__.TestMutate) ... ok -test_discard_absent (__main__.TestMutate) ... ok -test_discard_present (__main__.TestMutate) ... ok -test_pop (__main__.TestMutate) ... ok -test_remove_absent (__main__.TestMutate) ... ok -test_remove_present (__main__.TestMutate) ... ok -test_remove_until_empty (__main__.TestMutate) ... ok -test_update_empty_tuple (__main__.TestMutate) ... ok -test_update_unit_tuple_non_overlap (__main__.TestMutate) ... ok -test_update_unit_tuple_overlap (__main__.TestMutate) ... ok -test_issubset (__main__.TestSubsetEqualEmpty) ... ok -test_issubset (__main__.TestSubsetEqualNonEmpty) ... ok -test_issubset (__main__.TestSubsetEmptyNonEmpty) ... ok -test_issubset (__main__.TestSubsetPartial) ... ok -test_issubset (__main__.TestSubsetNonOverlap) ... ok -test_difference (__main__.TestOnlySetsNumeric) ... ok -test_difference_update (__main__.TestOnlySetsNumeric) ... ok -test_difference_update_operator (__main__.TestOnlySetsNumeric) ... ok -test_eq_ne (__main__.TestOnlySetsNumeric) ... ok -test_ge_gt_le_lt (__main__.TestOnlySetsNumeric) ... ok -test_intersection (__main__.TestOnlySetsNumeric) ... ok -test_intersection_update (__main__.TestOnlySetsNumeric) ... ok -test_intersection_update_operator (__main__.TestOnlySetsNumeric) ... ok -test_sym_difference (__main__.TestOnlySetsNumeric) ... ok -test_sym_difference_update (__main__.TestOnlySetsNumeric) ... ok -test_sym_difference_update_operator (__main__.TestOnlySetsNumeric) ... ok -test_union (__main__.TestOnlySetsNumeric) ... ok -test_union_update (__main__.TestOnlySetsNumeric) ... ok -test_union_update_operator (__main__.TestOnlySetsNumeric) ... ok -test_difference (__main__.TestOnlySetsDict) ... ok -test_difference_update (__main__.TestOnlySetsDict) ... ok -test_difference_update_operator (__main__.TestOnlySetsDict) ... ok -test_eq_ne (__main__.TestOnlySetsDict) ... ok -test_ge_gt_le_lt (__main__.TestOnlySetsDict) ... ok -test_intersection (__main__.TestOnlySetsDict) ... ok -test_intersection_update (__main__.TestOnlySetsDict) ... ok -test_intersection_update_operator (__main__.TestOnlySetsDict) ... ok -test_sym_difference (__main__.TestOnlySetsDict) ... ok -test_sym_difference_update (__main__.TestOnlySetsDict) ... ok -test_sym_difference_update_operator (__main__.TestOnlySetsDict) ... ok -test_union (__main__.TestOnlySetsDict) ... ok -test_union_update (__main__.TestOnlySetsDict) ... ok -test_union_update_operator (__main__.TestOnlySetsDict) ... ok -test_difference (__main__.TestOnlySetsOperator) ... ok -test_difference_update (__main__.TestOnlySetsOperator) ... ok -test_difference_update_operator (__main__.TestOnlySetsOperator) ... ok -test_eq_ne (__main__.TestOnlySetsOperator) ... ok -test_ge_gt_le_lt (__main__.TestOnlySetsOperator) ... ok -test_intersection (__main__.TestOnlySetsOperator) ... ok -test_intersection_update (__main__.TestOnlySetsOperator) ... ok -test_intersection_update_operator (__main__.TestOnlySetsOperator) ... ok -test_sym_difference (__main__.TestOnlySetsOperator) ... ok -test_sym_difference_update (__main__.TestOnlySetsOperator) ... ok -test_sym_difference_update_operator (__main__.TestOnlySetsOperator) ... ok -test_union (__main__.TestOnlySetsOperator) ... ok -test_union_update (__main__.TestOnlySetsOperator) ... ok -test_union_update_operator (__main__.TestOnlySetsOperator) ... ok -test_difference (__main__.TestOnlySetsTuple) ... ok -test_difference_update (__main__.TestOnlySetsTuple) ... ok -test_difference_update_operator (__main__.TestOnlySetsTuple) ... ok -test_eq_ne (__main__.TestOnlySetsTuple) ... ok -test_ge_gt_le_lt (__main__.TestOnlySetsTuple) ... ok -test_intersection (__main__.TestOnlySetsTuple) ... ok -test_intersection_update (__main__.TestOnlySetsTuple) ... ok -test_intersection_update_operator (__main__.TestOnlySetsTuple) ... ok -test_sym_difference (__main__.TestOnlySetsTuple) ... ok -test_sym_difference_update (__main__.TestOnlySetsTuple) ... ok -test_sym_difference_update_operator (__main__.TestOnlySetsTuple) ... ok -test_union (__main__.TestOnlySetsTuple) ... ok -test_union_update (__main__.TestOnlySetsTuple) ... ok -test_union_update_operator (__main__.TestOnlySetsTuple) ... ok -test_difference (__main__.TestOnlySetsString) ... ok -test_difference_update (__main__.TestOnlySetsString) ... ok -test_difference_update_operator (__main__.TestOnlySetsString) ... ok -test_eq_ne (__main__.TestOnlySetsString) ... ok -test_ge_gt_le_lt (__main__.TestOnlySetsString) ... ok -test_intersection (__main__.TestOnlySetsString) ... ok -test_intersection_update (__main__.TestOnlySetsString) ... ok -test_intersection_update_operator (__main__.TestOnlySetsString) ... ok -test_sym_difference (__main__.TestOnlySetsString) ... ok -test_sym_difference_update (__main__.TestOnlySetsString) ... ok -test_sym_difference_update_operator (__main__.TestOnlySetsString) ... ok -test_union (__main__.TestOnlySetsString) ... ok -test_union_update (__main__.TestOnlySetsString) ... ok -test_union_update_operator (__main__.TestOnlySetsString) ... ok -test_difference (__main__.TestOnlySetsGenerator) ... ok -test_difference_update (__main__.TestOnlySetsGenerator) ... ok -test_difference_update_operator (__main__.TestOnlySetsGenerator) ... ok -test_eq_ne (__main__.TestOnlySetsGenerator) ... ok -test_ge_gt_le_lt (__main__.TestOnlySetsGenerator) ... ok -test_intersection (__main__.TestOnlySetsGenerator) ... ok -test_intersection_update (__main__.TestOnlySetsGenerator) ... ok -test_intersection_update_operator (__main__.TestOnlySetsGenerator) ... ok -test_sym_difference (__main__.TestOnlySetsGenerator) ... ok -test_sym_difference_update (__main__.TestOnlySetsGenerator) ... ok -test_sym_difference_update_operator (__main__.TestOnlySetsGenerator) ... ok -test_union (__main__.TestOnlySetsGenerator) ... ok -test_union_update (__main__.TestOnlySetsGenerator) ... ok -test_union_update_operator (__main__.TestOnlySetsGenerator) ... ok -test_copy (__main__.TestCopyingEmpty) ... ok -test_deep_copy (__main__.TestCopyingEmpty) ... ok -test_copy (__main__.TestCopyingSingleton) ... ok -test_deep_copy (__main__.TestCopyingSingleton) ... ok -test_copy (__main__.TestCopyingTriple) ... ok -test_deep_copy (__main__.TestCopyingTriple) ... ok -test_copy (__main__.TestCopyingTuple) ... ok -test_deep_copy (__main__.TestCopyingTuple) ... ok -test_copy (__main__.TestCopyingNested) ... ok -test_deep_copy (__main__.TestCopyingNested) ... ok -test_binopsVsSubsets (__main__.TestIdentities) ... ok -test_commutativity (__main__.TestIdentities) ... ok -test_exclusion (__main__.TestIdentities) ... ok -test_summations (__main__.TestIdentities) ... ok - ----------------------------------------------------------------------- -Ran 225 tests in 115.187s - -OK -doctest (test.test_sets) ... 14 tests with zero failures -========================== closed ========================== -execution time: 394.171689987 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_sgmllib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,48 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_sgmllib.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:02:40 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_attr_funky_names (__main__.SGMLParserTestCase) ... ok -test_attr_syntax (__main__.SGMLParserTestCase) ... ok -test_attr_values (__main__.SGMLParserTestCase) ... ok -test_bad_nesting (__main__.SGMLParserTestCase) ... ok -test_bare_ampersands (__main__.SGMLParserTestCase) ... ok -test_bare_pointy_brackets (__main__.SGMLParserTestCase) ... ok -test_cdata_content (__main__.SGMLParserTestCase) ... ok -test_declaration_junk_chars (__main__.SGMLParserTestCase) ... ok -test_doctype_decl_external (__main__.SGMLParserTestCase) ... ok -test_doctype_decl_internal (__main__.SGMLParserTestCase) ... ok -test_enumerated_attr_type (__main__.SGMLParserTestCase) ... ok -test_get_starttag_text (__main__.SGMLParserTestCase) ... ok -test_illegal_declarations (__main__.SGMLParserTestCase) ... ok -test_processing_instruction_only (__main__.SGMLParserTestCase) ... ok -Be sure quotes in unquoted attributes are made part of the value ... ok -Make sure attribute names with underscores are accepted ... ok -Make sure tag names with underscores are accepted ... ok -test_weird_starttags (__main__.SGMLParserTestCase) ... ok -Handling of XHTML-style empty start tags ... ok - ----------------------------------------------------------------------- -Ran 19 tests in 44.597s - -OK -========================== closed ========================== -execution time: 86.2246849537 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_sha.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_sha.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,27 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/pypy/lib/test2/test_sha.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:04:06 2005 - -============================================================ -faking -faking -faking -faking -faking -test_case_1 (__main__.SHATestCase) ... ok -test_case_2 (__main__.SHATestCase) ... ok - ----------------------------------------------------------------------- -Ran 2 tests in 11.396s - -OK -========================== closed ========================== -execution time: 19.0084838867 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_shelve.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,47 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_shelve.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:04:25 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_read (__main__.TestAsciiFileShelve) ... ok -test_write (__main__.TestAsciiFileShelve) ... ok -test_read (__main__.TestBinaryFileShelve) ... ok -test_write (__main__.TestBinaryFileShelve) ... ok -test_read (__main__.TestProto2FileShelve) ... ok -test_write (__main__.TestProto2FileShelve) ... ok -test_read (__main__.TestAsciiMemShelve) ... ok -test_write (__main__.TestAsciiMemShelve) ... ok -test_read (__main__.TestBinaryMemShelve) ... ok -test_write (__main__.TestBinaryMemShelve) ... ok -test_read (__main__.TestProto2MemShelve) ... ok -test_write (__main__.TestProto2MemShelve) ... ok -test_ascii_file_shelf (__main__.TestCase) ... ok -test_binary_file_shelf (__main__.TestCase) ... ok -test_in_memory_shelf (__main__.TestCase) ... ok -test_mutable_entry (__main__.TestCase) ... ok -test_proto2_file_shelf (__main__.TestCase) ... ok - ----------------------------------------------------------------------- -Ran 17 tests in 186.651s - -OK -========================== closed ========================== -execution time: 229.252748013 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_shlex.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,27 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_shlex.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:08:15 2005 - -============================================================ -faking -faking -faking -faking -faking -Test compatibility interface ... ok -Test data splitting with posix parser ... ok - ----------------------------------------------------------------------- -Ran 2 tests in 105.531s - -OK -========================== closed ========================== -execution time: 112.971960068 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_shutil.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,26 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_shutil.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:10:08 2005 - -============================================================ -faking -faking -faking -faking -faking -test_rmtree_errors (__main__.TestShutil) ... ok - ----------------------------------------------------------------------- -Ran 1 test in 1.158s - -OK -========================== closed ========================== -execution time: 8.8846039772 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_signal.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_signal.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_signal Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_signal.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_signal.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_signal.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:32:00 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_signal.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_signal.py", line 3 in ? -import signal -ImportError: signal -FAILED: test output differs -========================== closed ========================== -execution time: 4.26091384888 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_slice.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_slice.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,15 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_slice.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:32:05 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -========================== closed ========================== -execution time: 4.31634616852 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_socket.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_socket.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:32:09 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket.py", line 9 in ? -import thread, threading -ImportError: thread -========================== closed ========================== -execution time: 8.09365582466 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_socket_ssl.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket_ssl.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:32:18 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket_ssl.py", line 68 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socket_ssl.py", line 63 in test_main - raise test_support.TestSkipped("socket module has no ssl support") -TestSkipped: socket module has no ssl support -========================== closed ========================== -execution time: 8.08756494522 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_socketserver.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socketserver.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:32:26 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_socketserver.py", line 11 in ? -import threading - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/threading.py", line 6 in ? - import thread -ImportError: thread -========================== closed ========================== -execution time: 9.97106981277 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_softspace.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,15 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_softspace.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:32:37 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -========================== closed ========================== -execution time: 6.17266988754 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_sort.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_sort.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,268 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sort.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:32:43 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Testing size 0 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 1 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 2 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 3 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 3 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 4 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 5 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 7 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 8 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 9 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 15 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 16 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 17 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 31 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 32 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 33 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 63 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 64 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - complaining at Complains(59) Complains(58) - checking exception during sort left some permutation - checking stability -Testing size 65 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 127 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - complaining at Complains(25) Complains(38) - checking exception during sort left some permutation - checking stability -Testing size 128 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - complaining at Complains(60) Complains(77) - checking exception during sort left some permutation - checking stability -Testing size 129 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - checking stability -Testing size 255 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - complaining at Complains(61) Complains(113) - checking exception during sort left some permutation - checking stability -Testing size 256 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - complaining at Complains(209) Complains(205) - checking exception during sort left some permutati==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sort.py", line 97 in ? - s.sort(lambda a, b: int(random.random() * 3) - 1) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sort.py", line 97 in - s.sort(lambda a, b: int(random.random() * 3) - 1) - File "/u/pedronis/PyPy/dist/pypy/lib/random.py", line 192 in random - self._seed = x, y, z -KeyboardInterrupt -on - checking stability -Testing size 257 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. - checking an insane function left some permutation - complaining at Complains(86) Complains(84) - checking exception during sort left some permutation - checking stability -Testing size 511 - checking identity - checking reversed - checking random permutation - checking reversed via function - Checking against an insane comparison function. - If the implementation isn't careful, this may segfault. -========================== closed ========================== -execution time: 899.97881794 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_str.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_str.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,46 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_str.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 13:47:44 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_str.py", line 25 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_str.py", line 22 in test_main - test_support.run_unittest(StrTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/string_tests.py", line 586 in test_floatformatting - self.checkcall(format, "__mod__", value) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/string_tests.py", line 80 in checkcall - args = self.fixtype(args) -KeyboardInterrupt -test___contains__ (__main__.StrTest) ... ok -test_capitalize (__main__.StrTest) ... ok -test_center (__main__.StrTest) ... ok -test_count (__main__.StrTest) ... ok -test_encoding_decoding (__main__.StrTest) ... ERROR -test_endswith (__main__.StrTest) ... ERROR -test_expandtabs (__main__.StrTest) ... ok -test_find (__main__.StrTest) ... ok -test_floatformatting (__main__.StrTest) ... ========================== closed ========================== -execution time: 900.069540977 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_strftime.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,61 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strftime.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:02:44 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strftime.py", line 158 in ? -main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strftime.py", line 29 in main - strftest(now + (i + j*100)*23*3603) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strftime.py", line 125 in strftest - if re.match(escapestr(e[1], ampm), result): continue - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 132 in match - return _compile(pattern, flags).match(string) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre.py", line 228 in _compile - p = sre_compile.compile(pattern, flags) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_compile.py", line 467 in compile - p = sre_parse.parse(p, flags) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 624 in parse - p = _parse_sub(source, pattern, 0) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 317 in _parse_sub - items.append(_parse(source, state)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 376 in _parse - this = source.get() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 208 in get - self.__next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/sre_parse.py", line 189 in __next - self.next = None -KeyboardInterrupt -strftime test for Thu Apr 28 14:02:52 2005 -Strftime test, platform: linux2, Python version: 2.3.4 -Supports nonstandard '%c' format (near-asctime() format) -Supports nonstandard '%x' format (%m/%d/%y %H:%M:%S) -Supports nonstandard '%Z' format (time zone name) -Supports nonstandard '%D' format (mm/dd/yy) -Supports nonstandard '%e' format (day of month as number, blank padded ( 0-31)) -Supports nonstandard '%h' format (abbreviated month name) -Supports nonstandard '%k' format (hour, blank padded ( 0-23)) -Supports nonstandard '%n' format (newline character) -Supports nonstandard '%r' format (%I:%M:%S %p) -Supports nonstandard '%R' format (%H:%M) -Supports nonstandard '%s' format (seconds since the Epoch in UCT) -Supports nonstandard '%t' format (tab character) -Supports nonstandard '%T' format (%H:%M:%S) -Supports nonstandard '%3y' format (year without century rendered using fieldwidth) -========================== closed ========================== -execution time: 899.976232052 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_string.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_string.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,51 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_string.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:10:17 2005 - -============================================================ -faking -faking -faking -faking -faking -test_capitalize (__main__.StringTest) ... ok -test_center (__main__.StringTest) ... ok -test_count (__main__.StringTest) ... ok -test_expandtabs (__main__.StringTest) ... ok -test_find (__main__.StringTest) ... ok -test_index (__main__.StringTest) ... ok -test_join (__main__.StringTest) ... ok -test_ljust (__main__.StringTest) ... ok -test_lower (__main__.StringTest) ... ok -test_maketrans (__main__.StringTest) ... ok -test_replace (__main__.StringTest) ... ok -test_rfind (__main__.StringTest) ... ok -test_rindex (__main__.StringTest) ... ok -test_rjust (__main__.StringTest) ... ok -test_split (__main__.StringTest) ... ok -test_strip (__main__.StringTest) ... ok -test_swapcase (__main__.StringTest) ... ok -test_translate (__main__.StringTest) ... ok -test_upper (__main__.StringTest) ... ok -test_zfill (__main__.StringTest) ... ok -test_atof (__main__.ModuleTest) ... ok -test_atoi (__main__.ModuleTest) ... ok -test_atol (__main__.ModuleTest) ... ok -test_attrs (__main__.ModuleTest) ... ok -test_capwords (__main__.ModuleTest) ... ok -test_maketrans (__main__.ModuleTest) ... ok - ----------------------------------------------------------------------- -Ran 26 tests in 23.335s - -OK -========================== closed ========================== -execution time: 34.5350129604 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_stringprep.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,15 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_stringprep.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:18:54 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -========================== closed ========================== -execution time: 6.99787116051 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_strop.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_strop.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strop.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:19:01 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strop.py", line 5 in ? -import strop -ImportError: strop -========================== closed ========================== -execution time: 17.8228149414 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_strptime.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,89 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:19:19 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py", line 506 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py", line 501 in test_main - CacheTests - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py", line 194, in test_compile - "Match failed with '%s' regex and '%s' string" % -AttributeError: 'SRE_Pattern' object has no attribute 'pattern' - -test_basic (__main__.getlang_Tests) ... ok -test_am_pm (__main__.LocaleTime_Tests) ... ok -test_by_hand_input (__main__.LocaleTime_Tests) ... ok -test_date_time (__main__.LocaleTime_Tests) ... ok -test_lang (__main__.LocaleTime_Tests) ... ok -test_month (__main__.LocaleTime_Tests) ... ok -test_timezone (__main__.LocaleTime_Tests) ... ok -test_unknowntimezone (__main__.LocaleTime_Tests) ... ok -test_weekday (__main__.LocaleTime_Tests) ... ok -test_blankpattern (__main__.TimeRETests) ... ok -test_compile (__main__.TimeRETests) ... ERROR -test_getitem (__main__.TimeRETests) ... ok -test_matching_with_escapes (__main__.TimeRETests) ... ok -test_pattern (__main__.TimeRETests) ... ok -test_pattern_escaping (__main__.TimeRETests) ... ok -test_TypeError (__main__.StrptimeTests) ... ok -test_bad_timezone (__main__.StrptimeTests) ... ok -test_caseinsensitive (__main__.StrptimeTests) ... ok -test_date (__main__.StrptimeTests) ... ok -test_date_time (__main__.StrptimeTests) ... ok -test_day (__main__.StrptimeTests) ... ok -test_defaults (__main__.StrptimeTests) ... ok -test_escaping (__main__.StrptimeTests) ... ok -test_hour (__main__.StrptimeTests) ... ok -test_julian (__main__.StrptimeTests) ... ok -test_minute (__main__.StrptimeTests) ... ok -test_month (__main__.StrptimeTests) ... ok -test_percent (__main__.StrptimeTests) ... ok -test_second (__main__.StrptimeTests) ... ok -test_time (__main__.StrptimeTests) ... ok -test_timezone (__main__.StrptimeTests) ... ok -test_unconverteddata (__main__.StrptimeTests) ... ok -test_weekday (__main__.StrptimeTests) ... ok -test_year (__main__.StrptimeTests) ... ok -test_twelve_noon_midnight (__main__.Strptime12AMPMTests) ... ok -test_all_julian_days (__main__.JulianTests) ... ok -test_day_of_week_calculation (__main__.CalculationTests) ... ok -test_gregorian_calculation (__main__.CalculationTests) ... ok -test_julian_calculation (__main__.CalculationTests) ... ok -test_new_localetime (__main__.CacheTests) ... ok -test_regex_cleanup (__main__.CacheTests) ... ok -test_time_re_recreation (__main__.CacheTests) ... ok - -====================================================================== -ERROR: test_compile (__main__.TimeRETests) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_strptime.py", line 194, in test_compile - "Match failed with '%s' regex and '%s' string" % -AttributeError: 'SRE_Pattern' object has no attribute 'pattern' - ----------------------------------------------------------------------- -Ran 42 tests in 728.549s - -FAILED (errors=1) -========================== closed ========================== -execution time: 746.773476124 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_struct.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_struct.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,20 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_struct.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:31:46 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_struct.py", line 80 in ? - raise TestFailed, "unpack/pack not transitive (%s, %s)" % ( -TestFailed: unpack/pack not transitive (xcbhilfd, ('a', 1, 255, 65535, 65536, 3.1414999961853028, 4.0)) -trying: xcbhilfd -========================== closed ========================== -execution time: 6.83288693428 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_structseq.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,62 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_structseq.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:31:54 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_ObjSpace_W_Root_Arguments - File "", line 4, in _mm_call_typeS0_perform_call - File "", line 2, in _mm_call_typeS0 - File "/u/pedronis/PyPy/dist/pypy/objspace/std/typeobject.py", line 230, in call__Type - w_newobject = space.call_args(w_newfunc, __args__.prepend(w_type)) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_ObjSpace_W_Root_args_w - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 76, in fake__new__ - args = [space.unwrap(w_arg) for w_arg in args_w] - File "/u/pedronis/PyPy/dist/pypy/objspace/std/objspace.py", line 236, in unwrap - return w_obj.unwrap() - File "/u/pedronis/PyPy/dist/pypy/objspace/std/model.py", line 122, in unwrap - raise UnwrapError, 'cannot unwrap %r' % (w_self,) -pypy.objspace.std.model.UnwrapError: cannot unwrap > -========================== closed ========================== -execution time: 7.08072185516 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_sunaudiodev.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sunaudiodev.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:32:01 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sunaudiodev.py", line 2 in ? -import sunaudiodev -ImportError: sunaudiodev -========================== closed ========================== -execution time: 4.54633402824 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_sundry.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,28 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sundry.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:32:07 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_sundry.py", line 38 in ? -import encodings - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/encodings/__init__.py", line 137 in ? -codecs.register(search_function) -TypeError: argument must be callable -skipping curses -========================== closed ========================== -execution time: 304.7646451 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_symtable.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_symtable.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:37:13 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_symtable.py", line 3 in ? -import _symtable -ImportError: _symtable -========================== closed ========================== -execution time: 4.8308699131 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_syntax.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,32 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_syntax.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:11:23 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_assign_call (__main__.SyntaxTestCase) ... ok -test_assign_del (__main__.SyntaxTestCase) ... ok -test_global_err_then_warn (__main__.SyntaxTestCase) ... ok - ----------------------------------------------------------------------- -Ran 3 tests in 3.774s - -OK -========================== closed ========================== -execution time: 12.2583858967 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_sys.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_sys.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,39 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_sys.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:11:35 2005 - -============================================================ -faking -faking -faking -faking -faking -test_attributes (__main__.SysModuleTest) ... ok -test_custom_displayhook (__main__.SysModuleTest) ... ok -test_dlopenflags (__main__.SysModuleTest) ... ok -test_exc_clear (__main__.SysModuleTest) ... ok -test_exit (__main__.SysModuleTest) ... ok -test_getdefaultencoding (__main__.SysModuleTest) ... ok -test_getframe (__main__.SysModuleTest) ... ok -test_getwindowsversion (__main__.SysModuleTest) ... ok -test_lost_displayhook (__main__.SysModuleTest) ... ok -test_original_displayhook (__main__.SysModuleTest) ... ok -test_original_excepthook (__main__.SysModuleTest) ... ok -test_recursionlimit (__main__.SysModuleTest) ... ok -test_refcount (__main__.SysModuleTest) ... ok -test_setcheckinterval (__main__.SysModuleTest) ... ok - ----------------------------------------------------------------------- -Ran 14 tests in 6.282s - -OK -========================== closed ========================== -execution time: 13.919118166 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_tarfile.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,217 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:37:48 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Test member extraction. ... ERROR -Test readlines() method of _FileObject. ... ERROR -Test seek() method of _FileObject, incl. random reading. ... ERROR -Test sparse member extraction. ... ERROR -Test member extraction, and for StreamError when ... ERROR -Test readlines() method of _FileObject. ... ERROR -Test seek() method of _FileObject, incl. random reading. ... ERROR -Test sparse member extraction. ... ERROR -Compare the normal tar and the stream tar. ... ERROR -test_nonposix (__main__.WriteTest) ... ERROR -test_posix (__main__.WriteTest) ... ERROR -test_nonposix (__main__.WriteStreamTest) ... ERROR -test_posix (__main__.WriteStreamTest) ... ERROR - -====================================================================== -ERROR: Test member extraction. ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp - self.tar = tarfile.open(tarname(self.comp), mode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 875, in open - return func(name, filemode, fileobj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 912, in taropen - return cls(name, mode, fileobj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ - self.firstmember = self.next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: empty, unreadable or compressed file - -====================================================================== -ERROR: Test readlines() method of _FileObject. ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp - self.tar = tarfile.open(tarname(self.comp), mode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 875, in open - return func(name, filemode, fileobj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 912, in taropen - return cls(name, mode, fileobj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ - self.firstmember = self.next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: empty, unreadable or compressed file - -====================================================================== -ERROR: Test seek() method of _FileObject, incl. random reading. ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp - self.tar = tarfile.open(tarname(self.comp), mode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 875, in open - return func(name, filemode, fileobj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 912, in taropen - return cls(name, mode, fileobj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ - self.firstmember = self.next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: empty, unreadable or compressed file - -====================================================================== -ERROR: Test sparse member extraction. ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp - self.tar = tarfile.open(tarname(self.comp), mode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 875, in open - return func(name, filemode, fileobj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 912, in taropen - return cls(name, mode, fileobj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ - self.firstmember = self.next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: empty, unreadable or compressed file - -====================================================================== -ERROR: Test member extraction, and for StreamError when ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp - self.tar = tarfile.open(tarname(self.comp), mode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open - _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ - self.firstmember = self.next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: empty, unreadable or compressed file - -====================================================================== -ERROR: Test readlines() method of _FileObject. ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp - self.tar = tarfile.open(tarname(self.comp), mode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open - _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ - self.firstmember = self.next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: empty, unreadable or compressed file - -====================================================================== -ERROR: Test seek() method of _FileObject, incl. random reading. ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp - self.tar = tarfile.open(tarname(self.comp), mode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open - _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ - self.firstmember = self.next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: empty, unreadable or compressed file - -====================================================================== -ERROR: Test sparse member extraction. ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp - self.tar = tarfile.open(tarname(self.comp), mode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open - _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ - self.firstmember = self.next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: empty, unreadable or compressed file - -====================================================================== -ERROR: Compare the normal tar and the stream tar. ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 51, in setUp - self.tar = tarfile.open(tarname(self.comp), mode) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 886, in open - _Stream(name, filemode, comptype, fileobj, bufsize)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 810, in __init__ - self.firstmember = self.next() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 1578Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 275 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 263 in test_main - test_support.run_unittest(*tests) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred; run in verbose mode for details -, in next - raise ReadError,"empty, unreadable or compressed file" -ReadError: empty, unreadable or compressed file - -====================================================================== -ERROR: test_nonposix (__main__.WriteTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp - self.src = tarfile.open(tarname(self.comp), 'r') - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 898, in open - raise ReadError, "file could not be opened successfully" -ReadError: file could not be opened successfully - -====================================================================== -ERROR: test_posix (__main__.WriteTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp - self.src = tarfile.open(tarname(self.comp), 'r') - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 898, in open - raise ReadError, "file could not be opened successfully" -ReadError: file could not be opened successfully - -====================================================================== -ERROR: test_nonposix (__main__.WriteStreamTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp - self.src = tarfile.open(tarname(self.comp), 'r') - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 898, in open - raise ReadError, "file could not be opened successfully" -ReadError: file could not be opened successfully - -====================================================================== -ERROR: test_posix (__main__.WriteStreamTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tarfile.py", line 179, in setUp - self.src = tarfile.open(tarname(self.comp), 'r') - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/tarfile.py", line 898, in open - raise ReadError, "file could not be opened successfully" -ReadError: file could not be opened successfully - ----------------------------------------------------------------------- -Ran 13 tests in 32.838s - -FAILED (errors=13) -========================== closed ========================== -execution time: 50.853992939 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_tempfile.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,239 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tempfile.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:38:40 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -fd 110 is open in childTraceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/tf_inherit_check.py", line 20 in ? - sys.exit(1) -SystemExit: 1 -test_exports (__main__.test_exports) ... ok -test_get_six_char_str (__main__.test__RandomNameSequence) ... ok -test_many (__main__.test__RandomNameSequence) ... ok -test_supports_iter (__main__.test__RandomNameSequence) ... ok -test_nonempty_list (__main__.test__candidate_tempdir_list) ... ok -test_wanted_dirs (__main__.test__candidate_tempdir_list) ... ok -test_retval (__main__.test__get_candidate_names) ... ok -test_same_thing (__main__.test__get_candidate_names) ... ok -test_basic (__main__.test__mkstemp_inner) ... ok -test_basic_many (__main__.test__mkstemp_inner) ... ok -test_choose_directory (__main__.test__mkstemp_inner) ... ERROR -test_file_mode (__main__.test__mkstemp_inner) ... ok -test_noinherit (__main__.test__mkstemp_inner) ... FAIL -test_textmode (__main__.test__mkstemp_inner) ... ok -test_sane_template (__main__.test_gettempprefix) ... ok -test_usable_template (__main__.test_gettempprefix) ... ok -test_directory_exists (__main__.test_gettempdir) ... ok -test_directory_writable (__main__.test_gettempdir) ... Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 644, in CALL_FUNCTION_VAR - f.CALL_FUNCTION(oparg, w_varargs) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args - frame.setfastscope(scope_w) - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) -pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > -========================== closed ========================== -execution time: 271.10127902 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_textwrap.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,51 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_textwrap.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:11:49 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_bad_width (__main__.WrapTestCase) ... ok -test_em_dash (__main__.WrapTestCase) ... ok -test_fix_sentence_endings (__main__.WrapTestCase) ... ok -test_funky_hyphens (__main__.WrapTestCase) ... ok -test_funky_parens (__main__.WrapTestCase) ... ok -test_hyphenated (__main__.WrapTestCase) ... ok -test_initial_whitespace (__main__.WrapTestCase) ... ok -test_simple (__main__.WrapTestCase) ... ok -test_split (__main__.WrapTestCase) ... ok -test_unicode (__main__.WrapTestCase) ... ok -test_unix_options (__main__.WrapTestCase) ... ok -test_whitespace (__main__.WrapTestCase) ... ok -test_wrap_short (__main__.WrapTestCase) ... ok -test_wrap_short_1line (__main__.WrapTestCase) ... ok -test_break_long (__main__.LongWordTestCase) ... ok -test_nobreak_long (__main__.LongWordTestCase) ... ok -test_fill (__main__.IndentTestCases) ... ok -test_initial_indent (__main__.IndentTestCases) ... ok -test_subsequent_indent (__main__.IndentTestCases) ... ok -test_dedent_even (__main__.DedentTestCase) ... ok -test_dedent_nomargin (__main__.DedentTestCase) ... ok -test_dedent_uneven (__main__.DedentTestCase) ... ok - ----------------------------------------------------------------------- -Ran 22 tests in 102.097s - -OK -========================== closed ========================== -execution time: 123.550081015 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_thread.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_thread.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_thread Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_thread.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_thread.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_thread.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:45:13 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_thread.out -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_thread.py", line 7 in ? -import thread -ImportError: thread -FAILED: test output differs -========================== closed ========================== -execution time: 5.60875320435 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_threaded_import.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threaded_import.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:45:19 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threaded_import.py", line 8 in ? -import thread -ImportError: thread -========================== closed ========================== -execution time: 1.15094518661 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_threadedtempfile Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threadedtempfile.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:45:21 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_threadedtempfile.out -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threadedtempfile.py", line 23 in ? -import thread # If this fails, we can't test this module -ImportError: thread -FAILED: test output differs -========================== closed ========================== -execution time: 1.09182906151 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_threading.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_threading.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threading.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:45:22 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_threading.py", line 7 in ? -import threading - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/threading.py", line 6 in ? - import thread -ImportError: thread -========================== closed ========================== -execution time: 5.38162899017 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_time.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_time.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,34 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_time.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:13:53 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -test_asctime (__main__.TimeTestCase) ... ok -test_clock (__main__.TimeTestCase) ... ok -test_conversions (__main__.TimeTestCase) ... ok -test_data_attributes (__main__.TimeTestCase) ... ok -test_sleep (__main__.TimeTestCase) ... ok -test_strftime (__main__.TimeTestCase) ... ok -test_strptime (__main__.TimeTestCase) ... ok -test_tzset (__main__.TimeTestCase) ... ok - ----------------------------------------------------------------------- -Ran 8 tests in 4.455s - -OK -========================== closed ========================== -execution time: 11.8618779182 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_timeout.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,245 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_timeout.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:45:37 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -testBlockingThenTimeout (__main__.CreationTestCase) ... ok -testFloatReturnValue (__main__.CreationTestCase) ... ok -testObjectCreation (__main__.CreationTestCase) ... ok -testRangeCheck (__main__.CreationTestCase) ... ok -testReturnType (__main__.CreationTestCase) ... ok -testTimeoutThenBlocking (__main__.CreationTestCase) ... ok -testTypeCheck (__main__.CreationTestCase) ... Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/pypy/interpreter/py.py", line 78, in main_ - main.run_file(args[0], space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 59, in run_file - run_string(istring, filename, space) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 50, in run_string - _run_eval_string(source, filename, space, False) - File "/u/pedronis/PyPy/dist/pypy/interpreter/main.py", line 39, in _run_eval_string - retval = pycode.exec_code(space, w_globals, w_globals) - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 24, in exec_code - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 653, in CALL_FUNCTION_VAR_KW - f.CALL_FUNCTION(oparg, w_varargs, w_varkw) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/eval.py", line 70, in resume - result = self.eval(executioncontext) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyframe.py", line 97, in eval - self.dispatch() - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 54, in dispatch - fn(self, oparg) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 644, in CALL_FUNCTION_VAR - f.CALL_FUNCTION(oparg, w_varargs) - File "/u/pedronis/PyPy/dist/pypy/interpreter/pyopcode.py", line 639, in CALL_FUNCTION - w_result = f.space.call_args(w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 99, in call_args - return space.get_and_call_args(w_descr, w_obj, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 80, in get_and_call_args - return descr.call_args(args.prepend(w_obj)) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 40, in call_args - return frame.run() - File "/u/pedronis/PyPy/dist/pypy/interpreter/gateway.py", line 249, in run - w_result = self._run() - File "", line 3, in _run_UWS_Method_Arguments - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 180, in descr_method_call - return self.call_args(__args__) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 163, in call_args - return self.space.call_args(self.w_function, args) - File "/u/pedronis/PyPy/dist/pypy/objspace/descroperation.py", line 92, in call_args - return w_obj.call_args(args) - File "/u/pedronis/PyPy/dist/pypy/interpreter/function.py", line 39, in call_args - frame.setfastscope(scope_w) - File "/u/pedronis/PyPy/dist/pypy/objspace/std/fake.py", line 133, in setfastscope - raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) -pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > -========================== closed ========================== -execution time: 12.0541088581 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_timing.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_timing.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_timing.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:45:50 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_timing.py", line 2 in ? -import timing -ImportError: timing -========================== closed ========================== -execution time: 4.13484716415 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_tokenize.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_tokenize.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,650 +0,0 @@ -test_tokenize -starting... -1,0-1,35: COMMENT "# Tests for the 'tokenize' module.\n" -2,0-2,43: COMMENT '# Large bits stolen from test_grammar.py. \n' -3,0-3,1: NL '\n' -4,0-4,11: COMMENT '# Comments\n' -5,0-5,3: STRING '"#"' -5,3-5,4: NEWLINE '\n' -6,0-6,3: COMMENT "#'\n" -7,0-7,3: COMMENT '#"\n' -8,0-8,3: COMMENT '#\\\n' -9,7-9,9: COMMENT '#\n' -10,4-10,10: COMMENT '# abc\n' -11,0-12,4: STRING "'''#\n#'''" -12,4-12,5: NEWLINE '\n' -13,0-13,1: NL '\n' -14,0-14,1: NAME 'x' -14,2-14,3: OP '=' -14,4-14,5: NUMBER '1' -14,7-14,8: COMMENT '#' -14,8-14,9: NEWLINE '\n' -15,0-15,1: NL '\n' -16,0-16,25: COMMENT '# Balancing continuation\n' -17,0-17,1: NL '\n' -18,0-18,1: NAME 'a' -18,2-18,3: OP '=' -18,4-18,5: OP '(' -18,5-18,6: NUMBER '3' -18,6-18,7: OP ',' -18,8-18,9: NUMBER '4' -18,9-18,10: OP ',' -18,10-18,11: NL '\n' -19,2-19,3: NUMBER '5' -19,3-19,4: OP ',' -19,5-19,6: NUMBER '6' -19,6-19,7: OP ')' -19,7-19,8: NEWLINE '\n' -20,0-20,1: NAME 'y' -20,2-20,3: OP '=' -20,4-20,5: OP '[' -20,5-20,6: NUMBER '3' -20,6-20,7: OP ',' -20,8-20,9: NUMBER '4' -20,9-20,10: OP ',' -20,10-20,11: NL '\n' -21,2-21,3: NUMBER '5' -21,3-21,4: OP ']' -21,4-21,5: NEWLINE '\n' -22,0-22,1: NAME 'z' -22,2-22,3: OP '=' -22,4-22,5: OP '{' -22,5-22,8: STRING "'a'" -22,8-22,9: OP ':' -22,9-22,10: NUMBER '5' -22,10-22,11: OP ',' -22,11-22,12: NL '\n' -23,2-23,5: STRING "'b'" -23,5-23,6: OP ':' -23,6-23,7: NUMBER '6' -23,7-23,8: OP '}' -23,8-23,9: NEWLINE '\n' -24,0-24,1: NAME 'x' -24,2-24,3: OP '=' -24,4-24,5: OP '(' -24,5-24,8: NAME 'len' -24,8-24,9: OP '(' -24,9-24,10: OP '`' -24,10-24,11: NAME 'y' -24,11-24,12: OP '`' -24,12-24,13: OP ')' -24,14-24,15: OP '+' -24,16-24,17: NUMBER '5' -24,17-24,18: OP '*' -24,18-24,19: NAME 'x' -24,20-24,21: OP '-' -24,22-24,23: NAME 'a' -24,23-24,24: OP '[' -24,24-24,25: NL '\n' -25,3-25,4: NUMBER '3' -25,5-25,6: OP ']' -25,6-25,7: NL '\n' -26,3-26,4: OP '-' -26,5-26,6: NAME 'x' -26,7-26,8: OP '+' -26,9-26,12: NAME 'len' -26,12-26,13: OP '(' -26,13-26,14: OP '{' -26,14-26,15: NL '\n' -27,3-27,4: OP '}' -27,4-27,5: NL '\n' -28,4-28,5: OP ')' -28,5-28,6: NL '\n' -29,2-29,3: OP ')' -29,3-29,4: NEWLINE '\n' -30,0-30,1: NL '\n' -31,0-31,37: COMMENT '# Backslash means line continuation:\n' -32,0-32,1: NAME 'x' -32,2-32,3: OP '=' -32,4-32,5: NUMBER '1' -33,0-33,1: OP '+' -33,2-33,3: NUMBER '1' -33,3-33,4: NEWLINE '\n' -34,0-34,1: NL '\n' -35,0-35,55: COMMENT '# Backslash does not means continuation in comments :\\\n' -36,0-36,1: NAME 'x' -36,2-36,3: OP '=' -36,4-36,5: NUMBER '0' -36,5-36,6: NEWLINE '\n' -37,0-37,1: NL '\n' -38,0-38,20: COMMENT '# Ordinary integers\n' -39,0-39,4: NUMBER '0xff' -39,5-39,7: OP '<>' -39,8-39,11: NUMBER '255' -39,11-39,12: NEWLINE '\n' -40,0-40,4: NUMBER '0377' -40,5-40,7: OP '<>' -40,8-40,11: NUMBER '255' -40,11-40,12: NEWLINE '\n' -41,0-41,10: NUMBER '2147483647' -41,13-41,15: OP '!=' -41,16-41,28: NUMBER '017777777777' -41,28-41,29: NEWLINE '\n' -42,0-42,1: OP '-' -42,1-42,11: NUMBER '2147483647' -42,11-42,12: OP '-' -42,12-42,13: NUMBER '1' -42,14-42,16: OP '!=' -42,17-42,29: NUMBER '020000000000' -42,29-42,30: NEWLINE '\n' -43,0-43,12: NUMBER '037777777777' -43,13-43,15: OP '!=' -43,16-43,17: OP '-' -43,17-43,18: NUMBER '1' -43,18-43,19: NEWLINE '\n' -44,0-44,10: NUMBER '0xffffffff' -44,11-44,13: OP '!=' -44,14-44,15: OP '-' -44,15-44,16: NUMBER '1' -44,16-44,17: NEWLINE '\n' -45,0-45,1: NL '\n' -46,0-46,16: COMMENT '# Long integers\n' -47,0-47,1: NAME 'x' -47,2-47,3: OP '=' -47,4-47,6: NUMBER '0L' -47,6-47,7: NEWLINE '\n' -48,0-48,1: NAME 'x' -48,2-48,3: OP '=' -48,4-48,6: NUMBER '0l' -48,6-48,7: NEWLINE '\n' -49,0-49,1: NAME 'x' -49,2-49,3: OP '=' -49,4-49,23: NUMBER '0xffffffffffffffffL' -49,23-49,24: NEWLINE '\n' -50,0-50,1: NAME 'x' -50,2-50,3: OP '=' -50,4-50,23: NUMBER '0xffffffffffffffffl' -50,23-50,24: NEWLINE '\n' -51,0-51,1: NAME 'x' -51,2-51,3: OP '=' -51,4-51,23: NUMBER '077777777777777777L' -51,23-51,24: NEWLINE '\n' -52,0-52,1: NAME 'x' -52,2-52,3: OP '=' -52,4-52,23: NUMBER '077777777777777777l' -52,23-52,24: NEWLINE '\n' -53,0-53,1: NAME 'x' -53,2-53,3: OP '=' -53,4-53,35: NUMBER '123456789012345678901234567890L' -53,35-53,36: NEWLINE '\n' -54,0-54,1: NAME 'x' -54,2-54,3: OP '=' -54,4-54,35: NUMBER '123456789012345678901234567890l' -54,35-54,36: NEWLINE '\n' -55,0-55,1: NL '\n' -56,0-56,25: COMMENT '# Floating-point numbers\n' -57,0-57,1: NAME 'x' -57,2-57,3: OP '=' -57,4-57,8: NUMBER '3.14' -57,8-57,9: NEWLINE '\n' -58,0-58,1: NAME 'x' -58,2-58,3: OP '=' -58,4-58,8: NUMBER '314.' -58,8-58,9: NEWLINE '\n' -59,0-59,1: NAME 'x' -59,2-59,3: OP '=' -59,4-59,9: NUMBER '0.314' -59,9-59,10: NEWLINE '\n' -60,0-60,18: COMMENT '# XXX x = 000.314\n' -61,0-61,1: NAME 'x' -61,2-61,3: OP '=' -61,4-61,8: NUMBER '.314' -61,8-61,9: NEWLINE '\n' -62,0-62,1: NAME 'x' -62,2-62,3: OP '=' -62,4-62,8: NUMBER '3e14' -62,8-62,9: NEWLINE '\n' -63,0-63,1: NAME 'x' -63,2-63,3: OP '=' -63,4-63,8: NUMBER '3E14' -63,8-63,9: NEWLINE '\n' -64,0-64,1: NAME 'x' -64,2-64,3: OP '=' -64,4-64,9: NUMBER '3e-14' -64,9-64,10: NEWLINE '\n' -65,0-65,1: NAME 'x' -65,2-65,3: OP '=' -65,4-65,9: NUMBER '3e+14' -65,9-65,10: NEWLINE '\n' -66,0-66,1: NAME 'x' -66,2-66,3: OP '=' -66,4-66,9: NUMBER '3.e14' -66,9-66,10: NEWLINE '\n' -67,0-67,1: NAME 'x' -67,2-67,3: OP '=' -67,4-67,9: NUMBER '.3e14' -67,9-67,10: NEWLINE '\n' -68,0-68,1: NAME 'x' -68,2-68,3: OP '=' -68,4-68,9: NUMBER '3.1e4' -68,9-68,10: NEWLINE '\n' -69,0-69,1: NL '\n' -70,0-70,18: COMMENT '# String literals\n' -71,0-71,1: NAME 'x' -71,2-71,3: OP '=' -71,4-71,6: STRING "''" -71,6-71,7: OP ';' -71,8-71,9: NAME 'y' -71,10-71,11: OP '=' -71,12-71,14: STRING '""' -71,14-71,15: OP ';' -71,15-71,16: NEWLINE '\n' -72,0-72,1: NAME 'x' -72,2-72,3: OP '=' -72,4-72,8: STRING "'\\''" -72,8-72,9: OP ';' -72,10-72,11: NAME 'y' -72,12-72,13: OP '=' -72,14-72,17: STRING '"\'"' -72,17-72,18: OP ';' -72,18-72,19: NEWLINE '\n' -73,0-73,1: NAME 'x' -73,2-73,3: OP '=' -73,4-73,7: STRING '\'"\'' -73,7-73,8: OP ';' -73,9-73,10: NAME 'y' -73,11-73,12: OP '=' -73,13-73,17: STRING '"\\""' -73,17-73,18: OP ';' -73,18-73,19: NEWLINE '\n' -74,0-74,1: NAME 'x' -74,2-74,3: OP '=' -74,4-74,32: STRING '"doesn\'t \\"shrink\\" does it"' -74,32-74,33: NEWLINE '\n' -75,0-75,1: NAME 'y' -75,2-75,3: OP '=' -75,4-75,31: STRING '\'doesn\\\'t "shrink" does it\'' -75,31-75,32: NEWLINE '\n' -76,0-76,1: NAME 'x' -76,2-76,3: OP '=' -76,4-76,32: STRING '"does \\"shrink\\" doesn\'t it"' -76,32-76,33: NEWLINE '\n' -77,0-77,1: NAME 'y' -77,2-77,3: OP '=' -77,4-77,31: STRING '\'does "shrink" doesn\\\'t it\'' -77,31-77,32: NEWLINE '\n' -78,0-78,1: NAME 'x' -78,2-78,3: OP '=' -78,4-83,3: STRING '"""\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n"""' -83,3-83,4: NEWLINE '\n' -84,0-84,1: NAME 'y' -84,2-84,3: OP '=' -84,4-84,63: STRING '\'\\nThe "quick"\\nbrown fox\\njumps over\\nthe \\\'lazy\\\' dog.\\n\'' -84,63-84,64: NEWLINE '\n' -85,0-85,1: NAME 'y' -85,2-85,3: OP '=' -85,4-90,3: STRING '\'\'\'\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n\'\'\'' -90,3-90,4: OP ';' -90,4-90,5: NEWLINE '\n' -91,0-91,1: NAME 'y' -91,2-91,3: OP '=' -91,4-96,1: STRING '"\\n\\\nThe \\"quick\\"\\n\\\nbrown fox\\n\\\njumps over\\n\\\nthe \'lazy\' dog.\\n\\\n"' -96,1-96,2: OP ';' -96,2-96,3: NEWLINE '\n' -97,0-97,1: NAME 'y' -97,2-97,3: OP '=' -97,4-102,1: STRING '\'\\n\\\nThe \\"quick\\"\\n\\\nbrown fox\\n\\\njumps over\\n\\\nthe \\\'lazy\\\' dog.\\n\\\n\'' -102,1-102,2: OP ';' -102,2-102,3: NEWLINE '\n' -103,0-103,1: NAME 'x' -103,2-103,3: OP '=' -103,4-103,9: STRING "r'\\\\'" -103,10-103,11: OP '+' -103,12-103,17: STRING "R'\\\\'" -103,17-103,18: NEWLINE '\n' -104,0-104,1: NAME 'x' -104,2-104,3: OP '=' -104,4-104,9: STRING "r'\\''" -104,10-104,11: OP '+' -104,12-104,14: STRING "''" -104,14-104,15: NEWLINE '\n' -105,0-105,1: NAME 'y' -105,2-105,3: OP '=' -105,4-107,6: STRING "r'''\nfoo bar \\\\\nbaz'''" -107,7-107,8: OP '+' -107,9-108,6: STRING "R'''\nfoo'''" -108,6-108,7: NEWLINE '\n' -109,0-109,1: NAME 'y' -109,2-109,3: OP '=' -109,4-111,3: STRING 'r"""foo\nbar \\\\ baz\n"""' -111,4-111,5: OP '+' -111,6-112,3: STRING "R'''spam\n'''" -112,3-112,4: NEWLINE '\n' -113,0-113,1: NAME 'x' -113,2-113,3: OP '=' -113,4-113,10: STRING "u'abc'" -113,11-113,12: OP '+' -113,13-113,19: STRING "U'ABC'" -113,19-113,20: NEWLINE '\n' -114,0-114,1: NAME 'y' -114,2-114,3: OP '=' -114,4-114,10: STRING 'u"abc"' -114,11-114,12: OP '+' -114,13-114,19: STRING 'U"ABC"' -114,19-114,20: NEWLINE '\n' -115,0-115,1: NAME 'x' -115,2-115,3: OP '=' -115,4-115,11: STRING "ur'abc'" -115,12-115,13: OP '+' -115,14-115,21: STRING "Ur'ABC'" -115,22-115,23: OP '+' -115,24-115,31: STRING "uR'ABC'" -115,32-115,33: OP '+' -115,34-115,41: STRING "UR'ABC'" -115,41-115,42: NEWLINE '\n' -116,0-116,1: NAME 'y' -116,2-116,3: OP '=' -116,4-116,11: STRING 'ur"abc"' -116,12-116,13: OP '+' -116,14-116,21: STRING 'Ur"ABC"' -116,22-116,23: OP '+' -116,24-116,31: STRING 'uR"ABC"' -116,32-116,33: OP '+' -116,34-116,41: STRING 'UR"ABC"' -116,41-116,42: NEWLINE '\n' -117,0-117,1: NAME 'x' -117,2-117,3: OP '=' -117,4-117,10: STRING "ur'\\\\'" -117,11-117,12: OP '+' -117,13-117,19: STRING "UR'\\\\'" -117,19-117,20: NEWLINE '\n' -118,0-118,1: NAME 'x' -118,2-118,3: OP '=' -118,4-118,10: STRING "ur'\\''" -118,11-118,12: OP '+' -118,13-118,15: STRING "''" -118,15-118,16: NEWLINE '\n' -119,0-119,1: NAME 'y' -119,2-119,3: OP '=' -119,4-121,6: STRING "ur'''\nfoo bar \\\\\nbaz'''" -121,7-121,8: OP '+' -121,9-122,6: STRING "UR'''\nfoo'''" -122,6-122,7: NEWLINE '\n' -123,0-123,1: NAME 'y' -123,2-123,3: OP '=' -123,4-125,3: STRING 'Ur"""foo\nbar \\\\ baz\n"""' -125,4-125,5: OP '+' -125,6-126,3: STRING "uR'''spam\n'''" -126,3-126,4: NEWLINE '\n' -127,0-127,1: NL '\n' -128,0-128,14: COMMENT '# Indentation\n' -129,0-129,2: NAME 'if' -129,3-129,4: NUMBER '1' -129,4-129,5: OP ':' -129,5-129,6: NEWLINE '\n' -130,0-130,4: INDENT ' ' -130,4-130,5: NAME 'x' -130,6-130,7: OP '=' -130,8-130,9: NUMBER '2' -130,9-130,10: NEWLINE '\n' -131,0-131,0: DEDENT '' -131,0-131,2: NAME 'if' -131,3-131,4: NUMBER '1' -131,4-131,5: OP ':' -131,5-131,6: NEWLINE '\n' -132,0-132,8: INDENT ' ' -132,8-132,9: NAME 'x' -132,10-132,11: OP '=' -132,12-132,13: NUMBER '2' -132,13-132,14: NEWLINE '\n' -133,0-133,0: DEDENT '' -133,0-133,2: NAME 'if' -133,3-133,4: NUMBER '1' -133,4-133,5: OP ':' -133,5-133,6: NEWLINE '\n' -134,0-134,4: INDENT ' ' -134,4-134,9: NAME 'while' -134,10-134,11: NUMBER '0' -134,11-134,12: OP ':' -134,12-134,13: NEWLINE '\n' -135,0-135,5: INDENT ' ' -135,5-135,7: NAME 'if' -135,8-135,9: NUMBER '0' -135,9-135,10: OP ':' -135,10-135,11: NEWLINE '\n' -136,0-136,11: INDENT ' ' -136,11-136,12: NAME 'x' -136,13-136,14: OP '=' -136,15-136,16: NUMBER '2' -136,16-136,17: NEWLINE '\n' -137,5-137,5: DEDENT '' -137,5-137,6: NAME 'x' -137,7-137,8: OP '=' -137,9-137,10: NUMBER '2' -137,10-137,11: NEWLINE '\n' -138,0-138,0: DEDENT '' -138,0-138,0: DEDENT '' -138,0-138,2: NAME 'if' -138,3-138,4: NUMBER '0' -138,4-138,5: OP ':' -138,5-138,6: NEWLINE '\n' -139,0-139,2: INDENT ' ' -139,2-139,4: NAME 'if' -139,5-139,6: NUMBER '2' -139,6-139,7: OP ':' -139,7-139,8: NEWLINE '\n' -140,0-140,3: INDENT ' ' -140,3-140,8: NAME 'while' -140,9-140,10: NUMBER '0' -140,10-140,11: OP ':' -140,11-140,12: NEWLINE '\n' -141,0-141,8: INDENT ' ' -141,8-141,10: NAME 'if' -141,11-141,12: NUMBER '1' -141,12-141,13: OP ':' -141,13-141,14: NEWLINE '\n' -142,0-142,10: INDENT ' ' -142,10-142,11: NAME 'x' -142,12-142,13: OP '=' -142,14-142,15: NUMBER '2' -142,15-142,16: NEWLINE '\n' -143,0-143,1: NL '\n' -144,0-144,12: COMMENT '# Operators\n' -145,0-145,1: NL '\n' -146,0-146,0: DEDENT '' -146,0-146,0: DEDENT '' -146,0-146,0: DEDENT '' -146,0-146,0: DEDENT '' -146,0-146,3: NAME 'def' -146,4-146,7: NAME 'd22' -146,7-146,8: OP '(' -146,8-146,9: NAME 'a' -146,9-146,10: OP ',' -146,11-146,12: NAME 'b' -146,12-146,13: OP ',' -146,14-146,15: NAME 'c' -146,15-146,16: OP '=' -146,16-146,17: NUMBER '1' -146,17-146,18: OP ',' -146,19-146,20: NAME 'd' -146,20-146,21: OP '=' -146,21-146,22: NUMBER '2' -146,22-146,23: OP ')' -146,23-146,24: OP ':' -146,25-146,29: NAME 'pass' -146,29-146,30: NEWLINE '\n' -147,0-147,3: NAME 'def' -147,4-147,8: NAME 'd01v' -147,8-147,9: OP '(' -147,9-147,10: NAME 'a' -147,10-147,11: OP '=' -147,11-147,12: NUMBER '1' -147,12-147,13: OP ',' -147,14-147,15: OP '*' -147,15-147,20: NAME 'restt' -147,20-147,21: OP ',' -147,22-147,24: OP '**' -147,24-147,29: NAME 'restd' -147,29-147,30: OP ')' -147,30-147,31: OP ':' -147,32-147,36: NAME 'pass' -147,36-147,37: NEWLINE '\n' -148,0-148,1: NL '\n' -149,0-149,1: OP '(' -149,1-149,2: NAME 'x' -149,2-149,3: OP ',' -149,4-149,5: NAME 'y' -149,5-149,6: OP ')' -149,7-149,9: OP '<>' -149,10-149,11: OP '(' -149,11-149,12: OP '{' -149,12-149,15: STRING "'a'" -149,15-149,16: OP ':' -149,16-149,17: NUMBER '1' -149,17-149,18: OP '}' -149,18-149,19: OP ',' -149,20-149,21: OP '{' -149,21-149,24: STRING "'b'" -149,24-149,25: OP ':' -149,25-149,26: NUMBER '2' -149,26-149,27: OP '}' -149,27-149,28: OP ')' -149,28-149,29: NEWLINE '\n' -150,0-150,1: NL '\n' -151,0-151,13: COMMENT '# comparison\n' -152,0-152,2: NAME 'if' -152,3-152,4: NUMBER '1' -152,5-152,6: OP '<' -152,7-152,8: NUMBER '1' -152,9-152,10: OP '>' -152,11-152,12: NUMBER '1' -152,13-152,15: OP '==' -152,16-152,17: NUMBER '1' -152,18-152,20: OP '>=' -152,21-152,22: NUMBER '1' -152,23-152,25: OP '<=' -152,26-152,27: NUMBER '1' -152,28-152,30: OP '<>' -152,31-152,32: NUMBER '1' -152,33-152,35: OP '!=' -152,36-152,37: NUMBER '1' -152,38-152,40: NAME 'in' -152,41-152,42: NUMBER '1' -152,43-152,46: NAME 'not' -152,47-152,49: NAME 'in' -152,50-152,51: NUMBER '1' -152,52-152,54: NAME 'is' -152,55-152,56: NUMBER '1' -152,57-152,59: NAME 'is' -152,60-152,63: NAME 'not' -152,64-152,65: NUMBER '1' -152,65-152,66: OP ':' -152,67-152,71: NAME 'pass' -152,71-152,72: NEWLINE '\n' -153,0-153,1: NL '\n' -154,0-154,9: COMMENT '# binary\n' -155,0-155,1: NAME 'x' -155,2-155,3: OP '=' -155,4-155,5: NUMBER '1' -155,6-155,7: OP '&' -155,8-155,9: NUMBER '1' -155,9-155,10: NEWLINE '\n' -156,0-156,1: NAME 'x' -156,2-156,3: OP '=' -156,4-156,5: NUMBER '1' -156,6-156,7: OP '^' -156,8-156,9: NUMBER '1' -156,9-156,10: NEWLINE '\n' -157,0-157,1: NAME 'x' -157,2-157,3: OP '=' -157,4-157,5: NUMBER '1' -157,6-157,7: OP '|' -157,8-157,9: NUMBER '1' -157,9-157,10: NEWLINE '\n' -158,0-158,1: NL '\n' -159,0-159,8: COMMENT '# shift\n' -160,0-160,1: NAME 'x' -160,2-160,3: OP '=' -160,4-160,5: NUMBER '1' -160,6-160,8: OP '<<' -160,9-160,10: NUMBER '1' -160,11-160,13: OP '>>' -160,14-160,15: NUMBER '1' -160,15-160,16: NEWLINE '\n' -161,0-161,1: NL '\n' -162,0-162,11: COMMENT '# additive\n' -163,0-163,1: NAME 'x' -163,2-163,3: OP '=' -163,4-163,5: NUMBER '1' -163,6-163,7: OP '-' -163,8-163,9: NUMBER '1' -163,10-163,11: OP '+' -163,12-163,13: NUMBER '1' -163,14-163,15: OP '-' -163,16-163,17: NUMBER '1' -163,18-163,19: OP '+' -163,20-163,21: NUMBER '1' -163,21-163,22: NEWLINE '\n' -164,0-164,1: NL '\n' -165,0-165,17: COMMENT '# multiplicative\n' -166,0-166,1: NAME 'x' -166,2-166,3: OP '=' -166,4-166,5: NUMBER '1' -166,6-166,7: OP '/' -166,8-166,9: NUMBER '1' -166,10-166,11: OP '*' -166,12-166,13: NUMBER '1' -166,14-166,15: OP '%' -166,16-166,17: NUMBER '1' -166,17-166,18: NEWLINE '\n' -167,0-167,1: NL '\n' -168,0-168,8: COMMENT '# unary\n' -169,0-169,1: NAME 'x' -169,2-169,3: OP '=' -169,4-169,5: OP '~' -169,5-169,6: NUMBER '1' -169,7-169,8: OP '^' -169,9-169,10: NUMBER '1' -169,11-169,12: OP '&' -169,13-169,14: NUMBER '1' -169,15-169,16: OP '|' -169,17-169,18: NUMBER '1' -169,19-169,20: OP '&' -169,21-169,22: NUMBER '1' -169,23-169,24: OP '^' -169,25-169,26: OP '-' -169,26-169,27: NUMBER '1' -169,27-169,28: NEWLINE '\n' -170,0-170,1: NAME 'x' -170,2-170,3: OP '=' -170,4-170,5: OP '-' -170,5-170,6: NUMBER '1' -170,6-170,7: OP '*' -170,7-170,8: NUMBER '1' -170,8-170,9: OP '/' -170,9-170,10: NUMBER '1' -170,11-170,12: OP '+' -170,13-170,14: NUMBER '1' -170,14-170,15: OP '*' -170,15-170,16: NUMBER '1' -170,17-170,18: OP '-' -170,19-170,20: OP '-' -170,20-170,21: OP '-' -170,21-170,22: OP '-' -170,22-170,23: NUMBER '1' -170,23-170,24: OP '*' -170,24-170,25: NUMBER '1' -170,25-170,26: NEWLINE '\n' -171,0-171,1: NL '\n' -172,0-172,11: COMMENT '# selector\n' -173,0-173,6: NAME 'import' -173,7-173,10: NAME 'sys' -173,10-173,11: OP ',' -173,12-173,16: NAME 'time' -173,16-173,17: NEWLINE '\n' -174,0-174,1: NAME 'x' -174,2-174,3: OP '=' -174,4-174,7: NAME 'sys' -174,7-174,8: OP '.' -174,8-174,15: NAME 'modules' -174,15-174,16: OP '[' -174,16-174,22: STRING "'time'" -174,22-174,23: OP ']' -174,23-174,24: OP '.' -174,24-174,28: NAME 'time' -174,28-174,29: OP '(' -174,29-174,30: OP ')' -174,30-174,31: NEWLINE '\n' -175,0-175,1: NL '\n' -176,0-176,0: ENDMARKER '' -finished Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_tokenize.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,22 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_tokenize.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:45:55 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_tokenize.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -FAILED: test output differs -========================== closed ========================== -execution time: 452.486554146 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_trace.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_trace.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,61 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_trace.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:14:05 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -test_1_basic (__main__.TraceTestCase) ... ok -test_2_arigo (__main__.TraceTestCase) ... ok -test_3_one_instr (__main__.TraceTestCase) ... ok -test_4_no_pop_blocks (__main__.TraceTestCase) ... ok -test_5_no_pop_tops (__main__.TraceTestCase) ... ok -test_6_call (__main__.TraceTestCase) ... ok -test_7_raise (__main__.TraceTestCase) ... ok -test_8_settrace_and_return (__main__.TraceTestCase) ... ok -test_9_settrace_and_raise (__main__.TraceTestCase) ... ok -test_call (__main__.RaisingTraceFuncTestCase) ... ok -test_exception (__main__.RaisingTraceFuncTestCase) ... ok -test_line (__main__.RaisingTraceFuncTestCase) ... ok -test_return (__main__.RaisingTraceFuncTestCase) ... ok -test_trash_stack (__main__.RaisingTraceFuncTestCase) ... ok -test_01_jump_simple_forwards (__main__.JumpTestCase) ... ok -test_02_jump_simple_backwards (__main__.JumpTestCase) ... ok -test_03_jump_out_of_block_forwards (__main__.JumpTestCase) ... ok -test_04_jump_out_of_block_backwards (__main__.JumpTestCase) ... ok -test_05_jump_to_codeless_line (__main__.JumpTestCase) ... ok -test_06_jump_to_same_line (__main__.JumpTestCase) ... ok -test_07_jump_in_nested_finally (__main__.JumpTestCase) ... ok -test_08_no_jump_too_far_forwards (__main__.JumpTestCase) ... ok -test_09_no_jump_too_far_backwards (__main__.JumpTestCase) ... ok -test_10_no_jump_to_except_1 (__main__.JumpTestCase) ... ok -test_11_no_jump_to_except_2 (__main__.JumpTestCase) ... ok -test_12_no_jump_to_except_3 (__main__.JumpTestCase) ... ok -test_13_no_jump_to_except_4 (__main__.JumpTestCase) ... ok -test_14_no_jump_forwards_into_block (__main__.JumpTestCase) ... ok -test_15_no_jump_backwards_into_block (__main__.JumpTestCase) ... ok -test_16_no_jump_into_finally_block (__main__.JumpTestCase) ... ok -test_17_no_jump_out_of_finally_block (__main__.JumpTestCase) ... ok -test_18_no_jump_to_non_integers (__main__.JumpTestCase) ... ok -test_19_no_jump_without_trace_function (__main__.JumpTestCase) ... ok - ----------------------------------------------------------------------- -Ran 33 tests in 22.315s - -OK -========================== closed ========================== -execution time: 35.3537540436 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_traceback.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,52 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:54:08 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py", line 49 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py", line 45 in test_main - run_unittest(TracebackCases) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred in __main__.TracebackCases -test_caret (__main__.TracebackCases) ... FAIL -test_nocaret (__main__.TracebackCases) ... FAIL - -====================================================================== -FAIL: test_caret (__main__.TracebackCases) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py", line 30, in test_caret - self.assert_(len(err) == 4) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError - -====================================================================== -FAIL: test_nocaret (__main__.TracebackCases) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_traceback.py", line 40, in test_nocaret - self.assert_(len(err) == 3) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 278, in failUnless - if not expr: raise self.failureException, msg -AssertionError - ----------------------------------------------------------------------- -Ran 2 tests in 2.614s - -FAILED (failures=2) -========================== closed ========================== -execution time: 9.74295496941 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_types.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_types.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -test_types -6. Built-in types -6.1 Truth value testing -6.2 Boolean operations -6.3 Comparisons -6.4 Numeric types (mostly conversions) -6.4.1 32-bit integers -6.4.2 Long integers -6.4.3 Floating point numbers -6.5 Sequence types -6.5.1 Strings -6.5.2 Tuples -6.5.3 Lists -6.5.3a Additional list operations -6.6 Mappings == Dictionaries -Buffers Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_types.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_types.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,23 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/pypy/lib/test2/test_types.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:14:40 2005 - -OUTPUT TEST -see output in: /home/hpk/pypy-dist/lib-python-2.3.4/test/result/test_types.out -============================================================ -faking -faking -faking -faking -faking -OK -========================== closed ========================== -execution time: 328.119639158 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_ucn.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,37 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ucn.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 14:54:29 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ucn.py", line 144 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ucn.py", line 141 in test_main - test_support.run_unittest(UnicodeNamesTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_ucn.py", line 99 in test_bmp_characters - char = unichr(code) -KeyboardInterrupt -test_ascii_letters (__main__.UnicodeNamesTest) ... ok -test_bmp_characters (__main__.UnicodeNamesTest) ... ========================== closed ========================== -execution time: 899.962950945 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_unary.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_unary.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_unary.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:20:08 2005 - -============================================================ -faking -faking -faking -faking -faking -test_bad_types (__main__.UnaryOpTestCase) ... ok -test_invert (__main__.UnaryOpTestCase) ... ok -test_negation_of_exponentiation (__main__.UnaryOpTestCase) ... ok -test_negative (__main__.UnaryOpTestCase) ... ok -test_no_overflow (__main__.UnaryOpTestCase) ... ok -test_positive (__main__.UnaryOpTestCase) ... ok - ----------------------------------------------------------------------- -Ran 6 tests in 2.652s - -OK -========================== closed ========================== -execution time: 9.99253201485 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_unicode.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,39 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:09:40 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode.py", line 716 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode.py", line 713 in test_main - test_support.run_unittest(UnicodeTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode.py", line 624 in test_codecs - u = u''.join(map(unichr, range(0,0xd800)+range(0xe000,0x10000))) -KeyboardInterrupt -test___contains__ (__main__.UnicodeTest) ... ok -test_capitalize (__main__.UnicodeTest) ... ok -test_center (__main__.UnicodeTest) ... ok -test_codecs (__main__.UnicodeTest) ... ========================== closed ========================== -execution time: 900.133581161 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_unicode_file Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_unicode_file.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode_file.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:24:40 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_unicode_file.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicode_file.py", line 13 in ? - raise TestSkipped("No Unicode filesystem semantics on this platform.") -TestSkipped: No Unicode filesystem semantics on this platform. -FAILED: test output differs -========================== closed ========================== -execution time: 8.40083408356 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_unicodedata.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,36 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicodedata.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:24:49 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicodedata.py", line 213 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicodedata.py", line 209 in test_main - UnicodeFunctionsTest - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unicodedata.py", line 185 in test_decimal_numeric_consistent - c = unichr(i) -KeyboardInterrupt -test_decimal_numeric_consistent (__main__.UnicodeMiscTest) ... ========================== closed ========================== -execution time: 899.971873999 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_univnewlines.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,50 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_univnewlines.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:20:18 2005 - -============================================================ -faking -faking -faking -faking -faking -test_execfile (__main__.TestNativeNewlines) ... ok -test_read (__main__.TestNativeNewlines) ... ok -test_readline (__main__.TestNativeNewlines) ... ok -test_readlines (__main__.TestNativeNewlines) ... ok -test_seek (__main__.TestNativeNewlines) ... ok -test_execfile (__main__.TestCRNewlines) ... ok -test_read (__main__.TestCRNewlines) ... ok -test_readline (__main__.TestCRNewlines) ... ok -test_readlines (__main__.TestCRNewlines) ... ok -test_seek (__main__.TestCRNewlines) ... ok -test_execfile (__main__.TestLFNewlines) ... ok -test_read (__main__.TestLFNewlines) ... ok -test_readline (__main__.TestLFNewlines) ... ok -test_readlines (__main__.TestLFNewlines) ... ok -test_seek (__main__.TestLFNewlines) ... ok -test_execfile (__main__.TestCRLFNewlines) ... ok -test_read (__main__.TestCRLFNewlines) ... ok -test_readline (__main__.TestCRLFNewlines) ... ok -test_readlines (__main__.TestCRLFNewlines) ... ok -test_seek (__main__.TestCRLFNewlines) ... ok -test_execfile (__main__.TestMixedNewlines) ... ok -test_read (__main__.TestMixedNewlines) ... ok -test_readline (__main__.TestMixedNewlines) ... ok -test_readlines (__main__.TestMixedNewlines) ... ok -test_seek (__main__.TestMixedNewlines) ... ok - ----------------------------------------------------------------------- -Ran 25 tests in 9.770s - -OK -========================== closed ========================== -execution time: 27.8694770336 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_unpack.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,28 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_unpack.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:40:11 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -unpack tuple -unpack list -unpack implied tuple -unpack string -unpack sequence -unpack single tuple/list -unpack non-sequence -unpack tuple wrong size -unpack list wrong size -unpack sequence too short -unpack sequence too long -unpack sequence too long, wrong error -unpack sequence too short, wrong error -========================== closed ========================== -execution time: 5.47094893456 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_urllib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,59 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_urllib.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:20:46 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_close (__main__.urlopen_FileTests) ... ok -test_fileno (__main__.urlopen_FileTests) ... ok -test_geturl (__main__.urlopen_FileTests) ... ok -test_info (__main__.urlopen_FileTests) ... ok -test_interface (__main__.urlopen_FileTests) ... ok -test_iter (__main__.urlopen_FileTests) ... ok -test_read (__main__.urlopen_FileTests) ... ok -test_readline (__main__.urlopen_FileTests) ... ok -test_readlines (__main__.urlopen_FileTests) ... ok -test_basic (__main__.urlretrieve_FileTests) ... ok -test_copy (__main__.urlretrieve_FileTests) ... ok -test_reporthook (__main__.urlretrieve_FileTests) ... ok -test_default_quoting (__main__.QuotingTests) ... ok -test_default_safe (__main__.QuotingTests) ... ok -test_never_quote (__main__.QuotingTests) ... ok -test_quoting_space (__main__.QuotingTests) ... ok -test_safe (__main__.QuotingTests) ... ok -test_unquoting (__main__.UnquotingTests) ... ok -test_unquoting_parts (__main__.UnquotingTests) ... ok -test_unquoting_plus (__main__.UnquotingTests) ... ok -test_doseq (__main__.urlencode_Tests) ... ok -test_quoting (__main__.urlencode_Tests) ... ok -test_using_mapping (__main__.urlencode_Tests) ... ok -test_using_sequence (__main__.urlencode_Tests) ... ok -test_basic (__main__.Pathname_Tests) ... ok -test_quoting (__main__.Pathname_Tests) ... ok - ----------------------------------------------------------------------- -Ran 26 tests in 179.457s - -OK -========================== closed ========================== -execution time: 201.598355055 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_urllib2.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,23 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllib2.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:43:37 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -========================== closed ========================== -execution time: 340.029372931 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_urllibnet.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,68 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:49:17 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py", line 160 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py", line 157 in test_main - urlretrieveNetworkTests) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py", line 113, in test_bad_address - urllib.urlopen, "http://www.python.invalid/") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises - callableObj(*args, **kwargs) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/urllib.py", line 76, in urlopen - return opener.open(url) -TypeError: instance exception may not have a separate value - -testURLread (__main__.URLTimeoutTest) ... ok -test_bad_address (__main__.urlopenNetworkTests) ... ERROR -test_basic (__main__.urlopenNetworkTests) ... ok -test_fileno (__main__.urlopenNetworkTests) ... ok -test_geturl (__main__.urlopenNetworkTests) ... ok -test_info (__main__.urlopenNetworkTests) ... ok -test_readlines (__main__.urlopenNetworkTests) ... ok -test_basic (__main__.urlretrieveNetworkTests) ... ok -test_header (__main__.urlretrieveNetworkTests) ... ok -test_specified_path (__main__.urlretrieveNetworkTests) ... ok - -====================================================================== -ERROR: test_bad_address (__main__.urlopenNetworkTests) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_urllibnet.py", line 113, in test_bad_address - urllib.urlopen, "http://www.python.invalid/") - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 289, in failUnlessRaises - callableObj(*args, **kwargs) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/urllib.py", line 76, in urlopen - return opener.open(url) -TypeError: instance exception may not have a separate value - ----------------------------------------------------------------------- -Ran 10 tests in 124.984s - -FAILED (errors=1) -========================== closed ========================== -execution time: 139.159852028 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_urlparse.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,30 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_urlparse.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:24:08 2005 - -============================================================ -faking -faking -faking -faking -faking -test_RFC1808 (__main__.UrlParseTestCase) ... ok -test_RFC2396 (__main__.UrlParseTestCase) ... ok -test_frags (__main__.UrlParseTestCase) ... ok -test_unparse_parse (__main__.UrlParseTestCase) ... ok -test_urldefrag (__main__.UrlParseTestCase) ... ok - ----------------------------------------------------------------------- -Ran 5 tests in 13.088s - -OK -========================== closed ========================== -execution time: 20.4439439774 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_userdict.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,33 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_userdict.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:24:28 2005 - -============================================================ -faking -faking -faking -faking -faking -test_read (__main__.TestMappingProtocol) ... ok -test_write (__main__.TestMappingProtocol) ... ok -test_all (__main__.UserDictTest) ... ok -test_read (__main__.UserDictTest) ... ok -test_write (__main__.UserDictTest) ... ok -test_all (__main__.UserDictMixinTest) ... ok -test_read (__main__.UserDictMixinTest) ... ok -test_write (__main__.UserDictMixinTest) ... ok - ----------------------------------------------------------------------- -Ran 8 tests in 11.563s - -OK -========================== closed ========================== -execution time: 24.07132411 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_userlist.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,45 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userlist.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:52:55 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -test_add_specials (__main__.UserListTest) ... ok -test_addmul (__main__.UserListTest) ... ok -test_append (__main__.UserListTest) ... ok -test_cmplen (__main__.UserListTest) ... ok -test_constructors (__main__.UserListTest) ... ok -test_contains (__main__.UserListTest) ... ok -test_count (__main__.UserListTest) ... ok -test_delitem (__main__.UserListTest) ... ok -test_delslice (__main__.UserListTest) ... ok -test_extend (__main__.UserListTest) ... ok -test_getitem (__main__.UserListTest) ... ok -test_getslice (__main__.UserListTest) ... ok -test_iadd (__main__.UserListTest) ... ok -test_imul (__main__.UserListTest) ... ok -test_index (__main__.UserListTest) ... ok -test_insert (__main__.UserListTest) ... ok -test_pop (__main__.UserListTest) ... ok -test_radd_specials (__main__.UserListTest) ... ok -test_remove (__main__.UserListTest) ... ok -test_repr (__main__.UserListTest) ... ok -test_reverse (__main__.UserListTest) ... ok -test_setitem (__main__.UserListTest) ... ok -test_setslice (__main__.UserListTest) ... ok -test_slice (__main__.UserListTest) ... ok -test_sort (__main__.UserListTest) ... ok - ----------------------------------------------------------------------- -Ran 25 tests in 76.131s - -OK -========================== closed ========================== -execution time: 82.5773038864 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_userstring.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,44 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userstring.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 15:54:17 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userstring.py", line 50 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_userstring.py", line 47 in test_main - test_support.run_unittest(UserStringTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/string_tests.py", line 575 in test_floatformatting - format = '%%.%if' % prec -KeyboardInterrupt -test___contains__ (__main__.UserStringTest) ... ok -test_capitalize (__main__.UserStringTest) ... ok -test_center (__main__.UserStringTest) ... ok -test_count (__main__.UserStringTest) ... ok -test_encoding_decoding (__main__.UserStringTest) ... ERROR -test_endswith (__main__.UserStringTest) ... ERROR -test_expandtabs (__main__.UserStringTest) ... ok -test_find (__main__.UserStringTest) ... ok -test_floatformatting (__main__.UserStringTest) ... ========================== closed ========================== -execution time: 899.991379976 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_uu.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_uu.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,55 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:09:18 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py", line 172 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py", line 169 in test_main - test_support.run_unittest(UUTest, UUStdIOTest, UUFileTest) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 247 in run_suite - raise TestFailed(err) -TestFailed: Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py", line 148, in test_decode - self.assertEqual(s, plaintext) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual - raise self.failureException, \ -AssertionError: '' != 'The smooth-scaled python crept over the sleeping dog\n' - -test_decode (__main__.UUTest) ... ok -test_encode (__main__.UUTest) ... ok -test_missingbegin (__main__.UUTest) ... ok -test_truncatedinput (__main__.UUTest) ... ok -test_decode (__main__.UUStdIOTest) ... ok -test_encode (__main__.UUStdIOTest) ... ok -test_decode (__main__.UUFileTest) ... FAIL -test_decodetwice (__main__.UUFileTest) ... ok -test_encode (__main__.UUFileTest) ... ok - -====================================================================== -FAIL: test_decode (__main__.UUFileTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_uu.py", line 148, in test_decode - self.assertEqual(s, plaintext) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 302, in failUnlessEqual - raise self.failureException, \ -AssertionError: '' != 'The smooth-scaled python crept over the sleeping dog\n' - ----------------------------------------------------------------------- -Ran 9 tests in 15.087s - -FAILED (failures=1) -========================== closed ========================== -execution time: 23.3923621178 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_warnings.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,32 +0,0 @@ -testreport-version: 1.0 -command: /usr/bin/python /home/hpk/pypy-dist/pypy/tool/alarm.py 900 /home/hpk/pypy-dist/pypy/interpreter/py.py /home/hpk/pypy-dist/lib-python-2.3.4/test/test_warnings.py -run by: hpk at central.merlinux.de -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -cpu model: AMD Athlon(tm) Processor -cpu mhz: 2134.402 -oldstyle: no -pypy-revision: 11605 -startdate: Thu Apr 28 22:24:52 2005 - -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_filtering (__main__.TestModule) ... ok -test_warn_default_category (__main__.TestModule) ... ok -test_warn_specific_category (__main__.TestModule) ... ok - ----------------------------------------------------------------------- -Ran 3 tests in 5.866s - -OK -========================== closed ========================== -execution time: 13.1912460327 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_wave.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_wave.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,31 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_wave.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:09:56 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_wave.py", line 20 in ? -f.writeframes(output) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/wave.py", line 421 in writeframes - self.writeframesraw(data) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/wave.py", line 405 in writeframesraw - self._ensure_header_written(len(data)) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/wave.py", line 448 in _ensure_header_written - self._write_header(datasize) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/wave.py", line 461 in _write_header - self._sampwidth * 8, 'data')) - File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 293 in pack - result += [format['pack'](var,format['size'],endianness)] - File "/u/pedronis/PyPy/dist/pypy/lib/struct.py", line 109 in pack_signed_int - raise StructError,"argument for i,I,l,L,q,Q,h,H must be integer" -StructError: argument for i,I,l,L,q,Q,h,H must be integer -========================== closed ========================== -execution time: 5.42613506317 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_weakref.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,21 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_weakref.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:10:02 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_weakref.py", line 5 in ? -import weakref - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/weakref.py", line 14 in ? -from _weakref import \ -ImportError: _weakref -========================== closed ========================== -execution time: 4.26104903221 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_whichdb.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,25 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_whichdb.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:10:07 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -test_whichdb_dumbdbm (__main__.WhichDBTestCase) ... ok - ----------------------------------------------------------------------- -Ran 1 test in 6.118s - -OK -========================== closed ========================== -execution time: 17.6551411152 seconds -exit status: 0 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_winreg.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_winreg.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_winreg Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_winreg.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_winreg.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:10:25 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_winreg.out -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_winreg.py", line 4 in ? -from _winreg import * -ImportError: _winreg -FAILED: test output differs -========================== closed ========================== -execution time: 0.874945163727 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_winsound.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_winsound.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:10:26 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_winsound.py", line 5 in ? -import winsound, time -ImportError: winsound -========================== closed ========================== -execution time: 4.26573610306 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_xmllib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,25 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmllib.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:10:31 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmllib.py", line 22 in ? -import xmllib - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmllib.py", line 39 in ? -starttagmatch = re.compile('<(?P'+_Name+')' -AttributeError: 'SRE_Pattern' object has no attribute 'pattern' -========================== closed ========================== -execution time: 102.461355925 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_xmlrpc.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,70 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:12:14 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -/u/pedronis/PyPy/dist/lib-python-2.3.4/xmllib.py:9: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. - warnings.warn("The xmllib module is obsolete. Use xml.sax instead.", DeprecationWarning) -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py", line 45 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py", line 41 in test_main - test_support.run_unittest(XMLRPCTestCase) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 246 in run_suite - raise TestFailed(msg) -TestFailed: errors occurred in __main__.XMLRPCTestCase -test_dump_bad_dict (__main__.XMLRPCTestCase) ... ok -test_dump_big_int (__main__.XMLRPCTestCase) ... ok -test_dump_big_long (__main__.XMLRPCTestCase) ... ok -test_dump_load (__main__.XMLRPCTestCase) ... ERROR -test_dump_none (__main__.XMLRPCTestCase) ... ERROR - -====================================================================== -ERROR: test_dump_load (__main__.XMLRPCTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py", line 19, in test_dump_load - xmlrpclib.loads(xmlrpclib.dumps((alist,)))[0][0]) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 1011, in loads - p, u = getparser() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 906, in getparser - parser = SlowParser(target) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 539, in __init__ - import xmllib # lazy subclassing (!) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmllib.py", line 39, in ? - starttagmatch = re.compile('<(?P'+_Name+')' -AttributeError: 'SRE_Pattern' object has no attribute 'pattern' - -====================================================================== -ERROR: test_dump_none (__main__.XMLRPCTestCase) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xmlrpc.py", line 37, in test_dump_none - xmlrpclib.loads(strg)[0][0]) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 1011, in loads - p, u = getparser() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 906, in getparser - parser = SlowParser(target) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/xmlrpclib.py", line 540, in __init__ - if xmllib.XMLParser not in SlowParser.__bases__: -AttributeError: 'module' object has no attribute 'XMLParser' - ----------------------------------------------------------------------- -Ran 5 tests in 103.095s - -FAILED (errors=2) -========================== closed ========================== -execution time: 114.541185141 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_xpickle.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,54 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xpickle.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:14:09 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -faking -faking -faking -faking -==========================timeout========================== -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xpickle.py", line 44 in ? - test_main() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xpickle.py", line 40 in test_main - DumpPickle_LoadCPickle - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 262 in run_unittest - run_suite(suite, testclass) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_support.py", line 234 in run_suite - result = runner.run(suite) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 658 in run - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 389 in __call__ - test(result) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/unittest.py", line 229 in __call__ - testMethod() - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/pickletester.py", line 776 in test_dict_chunking - s = self.dumps(x, proto) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xpickle.py", line 19 in dumps - return cPickle.dumps(arg, proto) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 1386 in dumps - Pickler(file, protocol, bin).dump(obj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 231 in dump - self.save(obj) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 293 in save - f(self, obj) # Call unbound method with explicit self - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 663 in save_dict - self._batch_setitems(obj.iteritems()) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/pickle.py", line 678 in _batch_setitems - write(SETITEM) - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/StringIO.py", line 165 in write - self.len = self.pos = self.pos + len(s) -KeyboardInterrupt -test_dict_chunking (__main__.DumpCPickle_LoadPickle) ... ========================== closed ========================== -execution time: 900.014615059 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_xreadline.out ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_xreadline.out Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1 +0,0 @@ -test_xreadline Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_xreadline.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,24 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xreadline.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:29:09 2005 -pypy-revision: 11549 -OUTPUT TEST -see output in: /u/pedronis/PyPy/dist/lib-python-2.3.4/test/result/test_xreadline.out -============================================================ -faking -faking -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_xreadline.py", line 16 in ? -import xreadlines -ImportError: xreadlines -FAILED: test output differs -========================== closed ========================== -execution time: 10.5921299458 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_zipfile.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,16 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zipfile.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:29:21 2005 -pypy-revision: 11549 -============================================================ -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zipfile.py", line 1 in ? -import zlib # implied prerequisite -ImportError: zlib -========================== closed ========================== -execution time: 0.768661975861 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_zipimport.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zipimport.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:29:22 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zipimport.py", line 8 in ? -import zlib # implied prerequisite -ImportError: zlib -========================== closed ========================== -execution time: 4.60285902023 seconds -exit status: 1 Deleted: /pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt ============================================================================== --- /pypy/dist/lib-python-2.3.4/test/result/test_zlib.txt Fri Apr 29 12:36:11 2005 +++ (empty file) @@ -1,19 +0,0 @@ -command: /usr/bin/python /u/pedronis/PyPy/dist/pypy/tool/alarm.py 900 /u/pedronis/PyPy/dist/pypy/interpreter/py.py --oldstyle /u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zlib.py -run by: pedronis at ratthing-b246 -sys.platform: linux2 -sys.version_info: (2, 3, 5, 'final', 0) -startdate: Thu Apr 28 16:29:27 2005 -pypy-revision: 11549 -============================================================ -faking -faking -faking -faking -faking -Traceback (application-level): - File "/u/pedronis/PyPy/dist/lib-python-2.3.4/test/test_zlib.py", line 3 in ? -import zlib -ImportError: zlib -========================== closed ========================== -execution time: 4.73801016808 seconds -exit status: 1 From arigo at codespeak.net Fri Apr 29 12:54:24 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 29 Apr 2005 12:54:24 +0200 (CEST) Subject: [pypy-svn] r11615 - in pypy: dist/lib-python-2.3.4/test/result testresult Message-ID: <20050429105424.24F9127BE9@code1.codespeak.net> Author: arigo Date: Fri Apr 29 12:54:23 2005 New Revision: 11615 Added: pypy/testresult/ - copied from r11614, pypy/dist/lib-python-2.3.4/test/result/ Removed: pypy/dist/lib-python-2.3.4/test/result/ Log: Moved the test result subdirectory out of the way of 'dist'. From arigo at codespeak.net Fri Apr 29 12:55:12 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 29 Apr 2005 12:55:12 +0200 (CEST) Subject: [pypy-svn] r11616 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050429105512.4A2B727BE9@code1.codespeak.net> Author: arigo Date: Fri Apr 29 12:55:12 2005 New Revision: 11616 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: Skip tests with an explanation message if the test result subdirectory was not checked out. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 12:55:12 2005 @@ -778,6 +778,11 @@ username = 'unknown' userhost = '%s@%s' % (username, socket.gethostname()) + if not mydir.join('result').check(dir=1): + py.test.skip("""'result' subdirectory not found. + To run tests in reporting mode (without -E), you first have to + check it out as follows into the current directory: + svn co http://codespeak.net/svn/pypy/testresult""") resultdir = mydir.join('result', userhost) resultdir.ensure(dir=1) resultfilename = resultdir.join(fspath.new(ext='.txt').basename) From arigo at codespeak.net Fri Apr 29 12:56:31 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 29 Apr 2005 12:56:31 +0200 (CEST) Subject: [pypy-svn] r11617 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050429105631.99F8127BE9@code1.codespeak.net> Author: arigo Date: Fri Apr 29 12:56:31 2005 New Revision: 11617 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: Oups, wrong message. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 12:56:31 2005 @@ -782,7 +782,7 @@ py.test.skip("""'result' subdirectory not found. To run tests in reporting mode (without -E), you first have to check it out as follows into the current directory: - svn co http://codespeak.net/svn/pypy/testresult""") + svn co http://codespeak.net/svn/pypy/testresult result""") resultdir = mydir.join('result', userhost) resultdir.ensure(dir=1) resultfilename = resultdir.join(fspath.new(ext='.txt').basename) From arigo at codespeak.net Fri Apr 29 13:07:08 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 29 Apr 2005 13:07:08 +0200 (CEST) Subject: [pypy-svn] r11618 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050429110708.3842027BF6@code1.codespeak.net> Author: arigo Date: Fri Apr 29 13:07:08 2005 New Revision: 11618 Modified: pypy/dist/lib-python-2.3.4/test/ (props changed) Log: svn:ignore the 'result' subdirectory. From tismer at codespeak.net Fri Apr 29 14:47:00 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 29 Apr 2005 14:47:00 +0200 (CEST) Subject: [pypy-svn] r11619 - pypy/dist/pypy/translator Message-ID: <20050429124700.8A7D327BF5@code1.codespeak.net> Author: tismer Date: Fri Apr 29 14:46:59 2005 New Revision: 11619 Modified: pypy/dist/pypy/translator/annrpython.py Log: forgot to save my clean-ups before checking in Modified: pypy/dist/pypy/translator/annrpython.py ============================================================================== --- pypy/dist/pypy/translator/annrpython.py (original) +++ pypy/dist/pypy/translator/annrpython.py Fri Apr 29 14:46:59 2005 @@ -397,7 +397,9 @@ if link.exitcase == s_exitswitch.const] knownvars, knownvarvalue = getattr(self.bindings.get(block.exitswitch), "knowntypedata", (None, None)) - + + # filter out those exceptions which cannot + # occour for this specific, typed operation. if block.exitswitch == Constant(last_exception): op = block.operations[-1] if op.opname in annmodel.BINARY_OPERATIONS: @@ -416,12 +418,6 @@ for link in exits if link.exitcase is None or link.exitcase in can_only_throw ] - print can_only_throw - print exits - print len(exits) - for link in exits: - print link, link.exitcase - print 100*"*" for link in exits: self.links_followed[link] = True From hpk at codespeak.net Fri Apr 29 15:24:02 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 29 Apr 2005 15:24:02 +0200 (CEST) Subject: [pypy-svn] r11623 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050429132402.4D8A727BF3@code1.codespeak.net> Author: hpk Date: Fri Apr 29 15:24:02 2005 New Revision: 11623 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: - new 'testmap' format, it is now a list which should be rather obvious. - while the fine grained invocation ('-E') is largely refactored and simplified the coarse grained (default) reporting one should hopefully just continue to work. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 15:24:02 2005 @@ -127,172 +127,103 @@ run_testcase_method = app.interphook('run_testcase_method') set_argv = app.interphook('set_argv') -def intercepted_run_file(space, fspath): +def start_intercept(space): w_suites, w_doctestmodules = space.unpacktuple(intercept_test_support(space)) - callex(space, run_file, str(fspath), space) + return w_suites, w_doctestmodules + +def collect_intercept(space, w_suites, w_doctestmodules): w_result = callex(space, collect_intercepted, space, w_suites, w_doctestmodules) w_namemethods, w_doctestlist = space.unpacktuple(w_result) return w_namemethods, w_doctestlist -class OpErrorModule(py.test.collect.Module): - # wraps some methods around a py.test Module in order - # to get clean KeyboardInterrupt behaviour (while - # running pypy we often get a wrapped - # space.w_KeyboardInterrupt) - # - def __init__(self, fspath, parent, testdecl): - super(py.test.collect.Module, self).__init__(fspath, parent) - self.testdecl = testdecl - - space = property(lambda x: gettestobjspace()) - - def tryiter(self, stopitems=()): - try: - for x in super(OpErrorModule, self).tryiter(stopitems): - yield x - except OperationError, e: - space = self.space - if space and e.match(space, space.w_KeyboardInterrupt): - raise Keyboardinterrupt - appexcinfo = pytestsupport.AppExceptionInfo(space, e) - if appexcinfo.traceback: - raise self.Failed(excinfo=appexcinfo) - raise - -class OutputTestModule(OpErrorModule): - def run(self): - return ['apprunoutput'] - def join(self, name): - if name == 'apprunoutput': - return OutputTestItem(name, parent=self, fspath=self.fspath) - -class SimpleRunModule(OpErrorModule): - def run(self): - return ['apprun'] - - def join(self, name): - if name == 'apprun': - return RunAppFileItem(name, parent=self, fspath=self.fspath) - -class TestDeclMixin(object): - def testdecl(self): - current = self.parent - while current is not None: - if hasattr(current, 'testdecl'): - return current.testdecl - current = self.sparent - testdecl = property(testdecl) - -class RunAppFileItem(py.test.Item, TestDeclMixin): - """ simple run a module file at app level, fail the test - if running the appfile results in an OperationError. - """ - def __init__(self, name, parent, fspath): - super(RunAppFileItem, self).__init__(name, parent) - self.fspath = fspath - self.space = gettestobjspace() - - def getfspath(self): - if self.parent.testdecl.modified: - # we have to use a modified test ... (this could probably - # be done by just looking for the according test file - # but i found this more explicit) - return pypydir.join('lib', 'test2', self.fspath.basename) - else: - return self.fspath # unmodified regrtest - - def run_file(self): - space = self.space - if self.testdecl.oldstyle or pypy_option.oldstyle: - space.enable_old_style_classes_as_default_metaclass() - try: - callex(space, run_file(str(self.getfspath()), space)) - finally: - if not pypy_option.oldstyle: - space.enable_new_style_classes_as_default_metaclass() - - def run(self): - self.run_file() - -class OutputTestItem(RunAppFileItem): +class SimpleRunItem(py.test.Item): """ Run a module file and compare its output to the expected output in the output/ directory. """ - def run(self): - outputpath = self.fspath.dirpath('output', self.fspath.purebasename) - if not outputpath.check(): - py.test.fail("expected outputfile at %s" %(outputpath,)) - + def call_capture(self, func, *args): oldsysout = sys.stdout sys.stdout = capturesysout = py.std.cStringIO.StringIO() try: - super(OutputTestItem, self).run() + try: + res = regrtest.run_file(space) + except: + print capturesysout.getvalue() + raise + else: + return res, capturesysout.getvalue() finally: sys.stdout = oldsysout - # we want to compare outputs - result = self.fspath.purebasename+"\n"+capturesysout.getvalue() # regrtest itself prepends the test_name to the captured output - expected = outputpath.read(mode='r') - if result != expected: - reportdiff(expected, result) - py.test.fail("output check failed: %s" % (self.fspath.basename,)) - else: - print result + + def run(self): + # XXX integrate this into InterceptedRunModule + # but we want a py.test refactoring towards + # more autonomy of colitems regarding + # their representations + regrtest = self.parent.regrtest + space = gettestobjspace() + res, output = call_capture(regrtest.run_file, space) + + outputpath = regrtest.getoutputpath() + if outputpath: + # we want to compare outputs + # regrtest itself prepends the test_name to the captured output + result = outputpath.purebasename + "\n" + output + expected = outputpath.read(mode='r') + if result != expected: + reportdiff(expected, result) + py.test.fail("output check failed: %s" % (self.fspath.basename,)) + if output: + print output, # -class UTTestMainModule(OpErrorModule): +class InterceptedRunModule(py.test.collect.Module): """ special handling for tests with a proper 'def test_main(): ' definition invoking test_support.run_suite or run_unittest (XXX add support for test_support.run_doctest). """ + def __init__(self, name, parent, regrtest): + super(InterceptedRunModule, self).__init__(name, parent) + self.regrtest = regrtest + def _prepare(self): - if hasattr(self, 'name2w_method'): + if hasattr(self, 'name2item'): return - space = self.space - - # load module at app-level - name = self.fspath.purebasename - space = self.space - if self.testdecl.modified: - fspath = pypydir.join('lib', 'test2', self.fspath.basename) - else: - fspath = self.fspath - - if self.testdecl.oldstyle or pypy_option.oldstyle: - space.enable_old_style_classes_as_default_metaclass() - try: - w_namemethods, w_doctestlist = intercepted_run_file(space, fspath) - finally: - if not pypy_option.oldstyle: - space.enable_new_style_classes_as_default_metaclass() + self.name2item = {} + space = gettestobjspace() + if self.regrtest.dumbtest or self.regrtest.getoutputpath(): + self.name2item['output'] = SimpleRunItem('output', self) + return + + tup = start_intercept(space) + self.regrtest.run_file(space) + w_namemethods, w_doctestlist = collect_intercept(space, *tup) # setup {name -> wrapped testcase method} - self.name2w_method = {} for w_item in space.unpackiterable(w_namemethods): w_name, w_method = space.unpacktuple(w_item) name = space.str_w(w_name) - self.name2w_method[name] = w_method + testitem = AppTestCaseMethod(name, parent=self, w_method=w_method) + self.name2item[name] = testitem # setup {name -> wrapped doctest module} - self.name2w_doctestmodule = {} for w_item in space.unpackiterable(w_doctestlist): w_name, w_module = space.unpacktuple(w_item) name = space.str_w(w_name) - self.name2w_doctestmodule[name] = w_module + testitem = AppDocTestModule(name, parent=self, w_module=w_module) + self.name2item[name] = testitem def run(self): self._prepare() - keys = self.name2w_method.keys() - keys.extend(self.name2w_doctestmodule.keys()) + keys = self.name2item.keys() + keys.sort(lambda x,y: cmp(x.lower(), y.lower())) return keys def join(self, name): self._prepare() - if name in self.name2w_method: - w_method = self.name2w_method[name] - return AppTestCaseMethod(name, parent=self, w_method=w_method) - if name in self.name2w_doctestmodule: - w_module = self.name2w_doctestmodule[name] - return AppDocTestModule(name, parent=self, w_module=w_module) + try: + return self.name2item[name] + except KeyError: + pass class AppDocTestModule(py.test.Item): def __init__(self, name, parent, w_module): @@ -305,7 +236,7 @@ class AppTestCaseMethod(py.test.Item): def __init__(self, name, parent, w_method): super(AppTestCaseMethod, self).__init__(name, parent) - self.space = parent.space + self.space = gettestobjspace() self.w_method = w_method def run(self): @@ -319,386 +250,409 @@ # classification of all tests files (this is ongoing work) # -class TestDecl: - """ Test Declaration.""" - def __init__(self, enabled, testclass, modified=False, oldstyle=False): - """ if modified is True, the actual test item - needs to be taken from the pypy/lib/test2 - hierarchy. - """ +class RegrTest: + """ Regression Test Declaration.""" + modifiedtestdir = pypydir.join('lib', 'test2') + def __init__(self, basename, enabled=False, dumbtest=False, oldstyle=False): + self.basename = basename self.enabled = enabled - self.testclass = testclass - self.modified = modified + self.dumbtest = dumbtest self.oldstyle = oldstyle -testmap = { - 'test_MimeWriter.py' : TestDecl(False, OutputTestModule), - 'test_StringIO.py' : TestDecl(True, UTTestMainModule), - 'test___all__.py' : TestDecl(False, UTTestMainModule), - 'test___future__.py' : TestDecl(False, SimpleRunModule), - 'test_aepack.py' : TestDecl(False, UTTestMainModule), - 'test_al.py' : TestDecl(False, SimpleRunModule), - 'test_anydbm.py' : TestDecl(False, UTTestMainModule), - 'test_array.py' : TestDecl(False, UTTestMainModule), + def ismodified(self): + return self.modifiedtestdir.join(self.basename).check() + + def getfspath(self): + fn = self.modifiedtestdir.join(self.basename) + if fn.check(): + return fn + fn = mydir.join(self.basename) + return fn + + def getoutputpath(self): + p = mydir.join('output', self.basename).new(ext='') + if p.check(file=1): + return p + + def run_file(self, space): + fspath = self.getfspath() + assert fspath.check() + if self.oldstyle or pypy_option.oldstyle: + space.enable_old_style_classes_as_default_metaclass() + try: + callex(space, run_file, str(fspath), space) + finally: + if not pypy_option.oldstyle: + space.enable_new_style_classes_as_default_metaclass() + +testmap = [ + RegrTest('test___all__.py', enabled=False), + RegrTest('test___future__.py', enabled=False, dumbtest=1), + RegrTest('test_aepack.py', enabled=False), + RegrTest('test_al.py', enabled=False, dumbtest=1), + RegrTest('test_anydbm.py', enabled=False), + RegrTest('test_array.py', enabled=False), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_asynchat.py' : TestDecl(False, OutputTestModule), - 'test_atexit.py' : TestDecl(False, SimpleRunModule), - 'test_audioop.py' : TestDecl(False, SimpleRunModule), - 'test_augassign.py' : TestDecl(False, OutputTestModule), - 'test_base64.py' : TestDecl(True, UTTestMainModule), - 'test_bastion.py' : TestDecl(False, SimpleRunModule), - 'test_binascii.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_asynchat.py', enabled=False), + RegrTest('test_atexit.py', enabled=False, dumbtest=1), + RegrTest('test_audioop.py', enabled=False, dumbtest=1), + RegrTest('test_augassign.py', enabled=False), + RegrTest('test_base64.py', enabled=True), + RegrTest('test_bastion.py', enabled=False, dumbtest=1), + RegrTest('test_binascii.py', enabled=False), #rev 10840: 2 of 8 tests fail - 'test_binhex.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_binhex.py', enabled=False), #rev 10840: 1 of 1 test fails - 'test_binop.py' : TestDecl(True, UTTestMainModule), - 'test_bisect.py' : TestDecl(True, UTTestMainModule), - 'test_bool.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_binop.py', enabled=True), + RegrTest('test_bisect.py', enabled=True), + RegrTest('test_bool.py', enabled=False), #rev 10840: Infinite recursion in DescrOperation.is_true - 'test_bsddb.py' : TestDecl(False, UTTestMainModule), - 'test_bsddb185.py' : TestDecl(False, UTTestMainModule), - 'test_bsddb3.py' : TestDecl(False, UTTestMainModule), - 'test_bufio.py' : TestDecl(False, SimpleRunModule), - 'test_builtin.py' : TestDecl(True, UTTestMainModule), - 'test_bz2.py' : TestDecl(False, UTTestMainModule), - 'test_calendar.py' : TestDecl(True, UTTestMainModule), - 'test_call.py' : TestDecl(True, UTTestMainModule), - 'test_capi.py' : TestDecl(False, SimpleRunModule), - 'test_cd.py' : TestDecl(False, SimpleRunModule), - 'test_cfgparser.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_bsddb.py', enabled=False), + RegrTest('test_bsddb185.py', enabled=False), + RegrTest('test_bsddb3.py', enabled=False), + RegrTest('test_bufio.py', enabled=False, dumbtest=1), + RegrTest('test_builtin.py', enabled=True), + RegrTest('test_bz2.py', enabled=False), + RegrTest('test_calendar.py', enabled=True), + RegrTest('test_call.py', enabled=True), + RegrTest('test_capi.py', enabled=False, dumbtest=1), + RegrTest('test_cd.py', enabled=False, dumbtest=1), + RegrTest('test_cfgparser.py', enabled=False), #rev 10840: Uncaught interp-level exception: #File "pypy/objspace/std/fake.py", line 133, in setfastscope #raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e)) #pypy.objspace.std.model.UnwrapError: calling : cannot unwrap > - 'test_cgi.py' : TestDecl(False, OutputTestModule), - 'test_charmapcodec.py' : TestDecl(True, UTTestMainModule), - 'test_cl.py' : TestDecl(False, SimpleRunModule), - 'test_class.py' : TestDecl(False, OutputTestModule), - 'test_cmath.py' : TestDecl(True, SimpleRunModule), - 'test_codeccallbacks.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_cgi.py', enabled=False), + RegrTest('test_charmapcodec.py', enabled=True), + RegrTest('test_cl.py', enabled=False, dumbtest=1), + RegrTest('test_class.py', enabled=False), + RegrTest('test_cmath.py', enabled=True, dumbtest=1), + RegrTest('test_codeccallbacks.py', enabled=False), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_codecs.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_codecs.py', enabled=False), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_codeop.py' : TestDecl(True, UTTestMainModule), - 'test_coercion.py' : TestDecl(False, OutputTestModule), - 'test_commands.py' : TestDecl(True, UTTestMainModule), - 'test_compare.py' : TestDecl(True, OutputTestModule, oldstyle=True), - 'test_compile.py' : TestDecl(True, UTTestMainModule), - 'test_complex.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_codeop.py', enabled=True), + RegrTest('test_coercion.py', enabled=False), + RegrTest('test_commands.py', enabled=True), + RegrTest('test_compare.py', enabled=True, oldstyle=True), + RegrTest('test_compile.py', enabled=True), + RegrTest('test_complex.py', enabled=False), #rev 10840: at least one test fails, after several hours I gave up waiting for the rest - 'test_contains.py' : TestDecl(False, SimpleRunModule), - 'test_cookie.py' : TestDecl(False, OutputTestModule), - 'test_copy.py' : TestDecl(True, UTTestMainModule), - 'test_copy_reg.py' : TestDecl(True, UTTestMainModule), - 'test_cpickle.py' : TestDecl(False, UTTestMainModule), - 'test_crypt.py' : TestDecl(False, SimpleRunModule), - 'test_csv.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_contains.py', enabled=False, dumbtest=1), + RegrTest('test_cookie.py', enabled=False), + RegrTest('test_copy.py', enabled=True), + RegrTest('test_copy_reg.py', enabled=True), + RegrTest('test_cpickle.py', enabled=False), + RegrTest('test_crypt.py', enabled=False, dumbtest=1), + RegrTest('test_csv.py', enabled=False), #rev 10840: ImportError: _csv - 'test_curses.py' : TestDecl(False, SimpleRunModule), - 'test_datetime.py' : TestDecl(True, UTTestMainModule), - 'test_dbm.py' : TestDecl(False, SimpleRunModule), - 'test_descr.py' : TestDecl(False, UTTestMainModule), - 'test_descrtut.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_curses.py', enabled=False, dumbtest=1), + RegrTest('test_datetime.py', enabled=True), + RegrTest('test_dbm.py', enabled=False, dumbtest=1), + RegrTest('test_descr.py', enabled=False), + RegrTest('test_descrtut.py', enabled=False), #rev 10840: 19 of 96 tests fail - 'test_difflib.py' : TestDecl(False, SimpleRunModule), - 'test_dircache.py' : TestDecl(True, UTTestMainModule), - 'test_dis.py' : TestDecl(True, UTTestMainModule), - 'test_dl.py' : TestDecl(False, SimpleRunModule), - 'test_doctest.py' : TestDecl(True, UTTestMainModule), - 'test_doctest2.py' : TestDecl(True, UTTestMainModule), - 'test_dumbdbm.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_difflib.py', enabled=False, dumbtest=1), + RegrTest('test_dircache.py', enabled=True), + RegrTest('test_dis.py', enabled=True), + RegrTest('test_dl.py', enabled=False, dumbtest=1), + RegrTest('test_doctest.py', enabled=True), + RegrTest('test_doctest2.py', enabled=True), + RegrTest('test_dumbdbm.py', enabled=False), #rev 10840: 5 of 7 tests fail - 'test_dummy_thread.py' : TestDecl(True, UTTestMainModule), - 'test_dummy_threading.py': TestDecl(False, SimpleRunModule), - 'test_email.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_dummy_thread.py', enabled=True), + RegrTest('test_dummy_threading.py', enabled=False, dumbtest=1), + RegrTest('test_email.py', enabled=False), #rev 10840: Uncaught interp-level exception - 'test_email_codecs.py' : TestDecl(False, SimpleRunModule), - 'test_enumerate.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_email_codecs.py', enabled=False, dumbtest=1), + RegrTest('test_enumerate.py', enabled=False), #rev 10840: fails because enumerate is a type in CPy: the test tries to subclass it - 'test_eof.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_eof.py', enabled=False), #rev 10840: some error strings differ slightly XXX - 'test_errno.py' : TestDecl(False, SimpleRunModule), - 'test_exceptions.py' : TestDecl(False, OutputTestModule), - 'test_extcall.py' : TestDecl(False, OutputTestModule), - 'test_fcntl.py' : TestDecl(False, SimpleRunModule), - 'test_file.py' : TestDecl(False, SimpleRunModule), - 'test_filecmp.py' : TestDecl(False, UTTestMainModule), - 'test_fileinput.py' : TestDecl(False, SimpleRunModule), - 'test_fnmatch.py' : TestDecl(True, UTTestMainModule), - 'test_fork1.py' : TestDecl(False, SimpleRunModule), - 'test_format.py' : TestDecl(False, SimpleRunModule), - 'test_fpformat.py' : TestDecl(True, UTTestMainModule), - 'test_frozen.py' : TestDecl(False, OutputTestModule), - 'test_funcattrs.py' : TestDecl(False, SimpleRunModule), - 'test_future.py' : TestDecl(False, OutputTestModule), - 'test_future1.py' : TestDecl(False, SimpleRunModule), - 'test_future2.py' : TestDecl(False, SimpleRunModule), - 'test_future3.py' : TestDecl(True, UTTestMainModule), - 'test_gc.py' : TestDecl(False, SimpleRunModule), - 'test_gdbm.py' : TestDecl(False, SimpleRunModule), - 'test_generators.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_errno.py', enabled=False, dumbtest=1), + RegrTest('test_exceptions.py', enabled=False), + RegrTest('test_extcall.py', enabled=False), + RegrTest('test_fcntl.py', enabled=False, dumbtest=1), + RegrTest('test_file.py', enabled=False, dumbtest=1), + RegrTest('test_filecmp.py', enabled=False), + RegrTest('test_fileinput.py', enabled=False, dumbtest=1), + RegrTest('test_fnmatch.py', enabled=True), + RegrTest('test_fork1.py', enabled=False, dumbtest=1), + RegrTest('test_format.py', enabled=False, dumbtest=1), + RegrTest('test_fpformat.py', enabled=True), + RegrTest('test_frozen.py', enabled=False), + RegrTest('test_funcattrs.py', enabled=False, dumbtest=1), + RegrTest('test_future.py', enabled=False), + RegrTest('test_future1.py', enabled=False, dumbtest=1), + RegrTest('test_future2.py', enabled=False, dumbtest=1), + RegrTest('test_future3.py', enabled=True), + RegrTest('test_gc.py', enabled=False, dumbtest=1), + RegrTest('test_gdbm.py', enabled=False, dumbtest=1), + RegrTest('test_generators.py', enabled=False), #rev 10840: 30 of 152 tests fail - 'test_getargs.py' : TestDecl(False, SimpleRunModule), - 'test_getargs2.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_getargs.py', enabled=False, dumbtest=1), + RegrTest('test_getargs2.py', enabled=False), #rev 10840: ImportError: _testcapi - 'test_getopt.py' : TestDecl(False, SimpleRunModule), - 'test_gettext.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_getopt.py', enabled=False, dumbtest=1), + RegrTest('test_gettext.py', enabled=False), #rev 10840: 28 of 28 tests fail - 'test_gl.py' : TestDecl(False, SimpleRunModule), - 'test_glob.py' : TestDecl(True, UTTestMainModule), - 'test_global.py' : TestDecl(False, OutputTestModule), - 'test_grammar.py' : TestDecl(False, OutputTestModule), - 'test_grp.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_gl.py', enabled=False, dumbtest=1), + RegrTest('test_glob.py', enabled=True), + RegrTest('test_global.py', enabled=False), + RegrTest('test_grammar.py', enabled=False), + RegrTest('test_grp.py', enabled=False), #rev 10840: ImportError: grp - 'test_gzip.py' : TestDecl(False, SimpleRunModule), - 'test_hash.py' : TestDecl(True, UTTestMainModule), - 'test_heapq.py' : TestDecl(True, UTTestMainModule), - 'test_hexoct.py' : TestDecl(True, UTTestMainModule), - 'test_hmac.py' : TestDecl(True, UTTestMainModule), - 'test_hotshot.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_gzip.py', enabled=False, dumbtest=1), + RegrTest('test_hash.py', enabled=True), + RegrTest('test_heapq.py', enabled=True), + RegrTest('test_hexoct.py', enabled=True), + RegrTest('test_hmac.py', enabled=True), + RegrTest('test_hotshot.py', enabled=False), #rev 10840: ImportError: _hotshot - 'test_htmllib.py' : TestDecl(True, UTTestMainModule), - 'test_htmlparser.py' : TestDecl(True, UTTestMainModule), - 'test_httplib.py' : TestDecl(False, OutputTestModule), - 'test_imageop.py' : TestDecl(False, SimpleRunModule), - 'test_imaplib.py' : TestDecl(False, SimpleRunModule), - 'test_imgfile.py' : TestDecl(False, SimpleRunModule), - 'test_imp.py' : TestDecl(False, UTTestMainModule), - 'test_import.py' : TestDecl(False, SimpleRunModule), - 'test_importhooks.py' : TestDecl(False, UTTestMainModule), - 'test_inspect.py' : TestDecl(False, SimpleRunModule), - 'test_ioctl.py' : TestDecl(False, UTTestMainModule), - 'test_isinstance.py' : TestDecl(True, UTTestMainModule), - 'test_iter.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_htmllib.py', enabled=True), + RegrTest('test_htmlparser.py', enabled=True), + RegrTest('test_httplib.py', enabled=False), + RegrTest('test_imageop.py', enabled=False, dumbtest=1), + RegrTest('test_imaplib.py', enabled=False, dumbtest=1), + RegrTest('test_imgfile.py', enabled=False, dumbtest=1), + RegrTest('test_imp.py', enabled=False), + RegrTest('test_import.py', enabled=False, dumbtest=1), + RegrTest('test_importhooks.py', enabled=False), + RegrTest('test_inspect.py', enabled=False, dumbtest=1), + RegrTest('test_ioctl.py', enabled=False), + RegrTest('test_isinstance.py', enabled=True), + RegrTest('test_iter.py', enabled=False), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_itertools.py' : TestDecl(True, UTTestMainModule, modified=True), + RegrTest('test_itertools.py', enabled=True), # modified version in pypy/lib/test2 - 'test_largefile.py' : TestDecl(False, SimpleRunModule), - 'test_linuxaudiodev.py' : TestDecl(False, OutputTestModule), - 'test_locale.py' : TestDecl(False, SimpleRunModule), - 'test_logging.py' : TestDecl(False, OutputTestModule), - 'test_long.py' : TestDecl(True, SimpleRunModule), # takes hours - 'test_long_future.py' : TestDecl(False, SimpleRunModule), - 'test_longexp.py' : TestDecl(False, OutputTestModule), - 'test_macfs.py' : TestDecl(False, UTTestMainModule), - 'test_macostools.py' : TestDecl(False, UTTestMainModule), - 'test_macpath.py' : TestDecl(False, UTTestMainModule), - 'test_mailbox.py' : TestDecl(True, UTTestMainModule), - 'test_marshal.py' : TestDecl(False, SimpleRunModule), - 'test_math.py' : TestDecl(False, OutputTestModule), - 'test_md5.py' : TestDecl(False, OutputTestModule), - 'test_mhlib.py' : TestDecl(True, UTTestMainModule), - 'test_mimetools.py' : TestDecl(True, UTTestMainModule), - 'test_mimetypes.py' : TestDecl(True, UTTestMainModule), - 'test_minidom.py' : TestDecl(False, SimpleRunModule), - 'test_mmap.py' : TestDecl(False, OutputTestModule), - 'test_module.py' : TestDecl(False, SimpleRunModule), - 'test_mpz.py' : TestDecl(False, SimpleRunModule), - 'test_multifile.py' : TestDecl(True, UTTestMainModule), - 'test_mutants.py' : TestDecl(False, SimpleRunModule), - 'test_netrc.py' : TestDecl(True, UTTestMainModule), - 'test_new.py' : TestDecl(False, OutputTestModule), - 'test_nis.py' : TestDecl(False, OutputTestModule), - 'test_normalization.py' : TestDecl(False, UTTestMainModule), - 'test_ntpath.py' : TestDecl(False, SimpleRunModule), - 'test_opcodes.py' : TestDecl(False, OutputTestModule), - 'test_openpty.py' : TestDecl(False, OutputTestModule), - 'test_operations.py' : TestDecl(False, OutputTestModule), - 'test_operator.py' : TestDecl(True, UTTestMainModule), - 'test_optparse.py' : TestDecl(False, UTTestMainModule), - 'test_os.py' : TestDecl(True, UTTestMainModule), - 'test_ossaudiodev.py' : TestDecl(False, OutputTestModule), - 'test_parser.py' : TestDecl(True, UTTestMainModule), + RegrTest('test_largefile.py', enabled=False, dumbtest=1), + RegrTest('test_linuxaudiodev.py', enabled=False), + RegrTest('test_locale.py', enabled=False, dumbtest=1), + RegrTest('test_logging.py', enabled=False), + RegrTest('test_long.py', enabled=True, dumbtest=1), + RegrTest('test_long_future.py', enabled=False, dumbtest=1), + RegrTest('test_longexp.py', enabled=False), + RegrTest('test_macfs.py', enabled=False), + RegrTest('test_macostools.py', enabled=False), + RegrTest('test_macpath.py', enabled=False), + RegrTest('test_mailbox.py', enabled=True), + RegrTest('test_marshal.py', enabled=False, dumbtest=1), + RegrTest('test_math.py', enabled=False), + RegrTest('test_md5.py', enabled=False), + RegrTest('test_mhlib.py', enabled=True), + RegrTest('test_mimetools.py', enabled=True), + RegrTest('test_mimetypes.py', enabled=True), + RegrTest('test_MimeWriter.py', enabled=False), + RegrTest('test_minidom.py', enabled=False, dumbtest=1), + RegrTest('test_mmap.py', enabled=False), + RegrTest('test_module.py', enabled=False, dumbtest=1), + RegrTest('test_mpz.py', enabled=False, dumbtest=1), + RegrTest('test_multifile.py', enabled=True), + RegrTest('test_mutants.py', enabled=False, dumbtest=1), + RegrTest('test_netrc.py', enabled=True), + RegrTest('test_new.py', enabled=False), + RegrTest('test_nis.py', enabled=False), + RegrTest('test_normalization.py', enabled=False), + RegrTest('test_ntpath.py', enabled=False, dumbtest=1), + RegrTest('test_opcodes.py', enabled=False), + RegrTest('test_openpty.py', enabled=False), + RegrTest('test_operations.py', enabled=False), + RegrTest('test_operator.py', enabled=True), + RegrTest('test_optparse.py', enabled=False), + RegrTest('test_os.py', enabled=True), + RegrTest('test_ossaudiodev.py', enabled=False), + RegrTest('test_parser.py', enabled=True), #rev 10840: 18 of 18 tests fail - 'test_pep247.py' : TestDecl(False, SimpleRunModule), - 'test_pep263.py' : TestDecl(False, SimpleRunModule), - 'test_pep277.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_pep247.py', enabled=False, dumbtest=1), + RegrTest('test_pep263.py', enabled=False, dumbtest=1), + RegrTest('test_pep277.py', enabled=False), # XXX this test is _also_ an output test, damn it # seems to be the only one that invokes run_unittest # and is an unittest - 'test_pickle.py' : TestDecl(False, UTTestMainModule), - 'test_pickletools.py' : TestDecl(False, SimpleRunModule), - 'test_pkg.py' : TestDecl(False, OutputTestModule), - 'test_pkgimport.py' : TestDecl(True, UTTestMainModule), - 'test_plistlib.py' : TestDecl(False, UTTestMainModule), - 'test_poll.py' : TestDecl(False, OutputTestModule), - 'test_popen.py' : TestDecl(False, OutputTestModule), - 'test_popen2.py' : TestDecl(False, OutputTestModule), - 'test_posix.py' : TestDecl(True, UTTestMainModule), - 'test_posixpath.py' : TestDecl(True, UTTestMainModule), - 'test_pow.py' : TestDecl(True, UTTestMainModule), - 'test_pprint.py' : TestDecl(True, UTTestMainModule), - 'test_profile.py' : TestDecl(True, OutputTestModule), - 'test_profilehooks.py' : TestDecl(True, UTTestMainModule), - 'test_pty.py' : TestDecl(False, OutputTestModule), - 'test_pwd.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_pickle.py', enabled=False), + RegrTest('test_pickletools.py', enabled=False, dumbtest=1), + RegrTest('test_pkg.py', enabled=False), + RegrTest('test_pkgimport.py', enabled=True), + RegrTest('test_plistlib.py', enabled=False), + RegrTest('test_poll.py', enabled=False), + RegrTest('test_popen.py', enabled=False), + RegrTest('test_popen2.py', enabled=False), + RegrTest('test_posix.py', enabled=True), + RegrTest('test_posixpath.py', enabled=True), + RegrTest('test_pow.py', enabled=True), + RegrTest('test_pprint.py', enabled=True), + RegrTest('test_profile.py', enabled=True), + RegrTest('test_profilehooks.py', enabled=True), + RegrTest('test_pty.py', enabled=False), + RegrTest('test_pwd.py', enabled=False), #rev 10840: ImportError: pwd - 'test_pyclbr.py' : TestDecl(False, UTTestMainModule), - 'test_pyexpat.py' : TestDecl(False, OutputTestModule), - 'test_queue.py' : TestDecl(False, SimpleRunModule), - 'test_quopri.py' : TestDecl(False, UTTestMainModule), - 'test_random.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_pyclbr.py', enabled=False), + RegrTest('test_pyexpat.py', enabled=False), + RegrTest('test_queue.py', enabled=False, dumbtest=1), + RegrTest('test_quopri.py', enabled=False), + RegrTest('test_random.py', enabled=False), #rev 10840: Uncaught app-level exception: #class WichmannHill_TestBasicOps(TestBasicOps): #File "test_random.py", line 125 in WichmannHill_TestBasicOps #gen = random.WichmannHill() #AttributeError: 'module' object has no attribute 'WichmannHill' - 'test_re.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_re.py', enabled=False), #rev 10840: 7 of 47 tests fail - 'test_regex.py' : TestDecl(False, OutputTestModule), - 'test_repr.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_regex.py', enabled=False), + RegrTest('test_repr.py', enabled=False), #rev 10840: 6 of 12 tests fail. Always minor stuff like #'' != '' - 'test_resource.py' : TestDecl(False, OutputTestModule), - 'test_rfc822.py' : TestDecl(True, UTTestMainModule), - 'test_rgbimg.py' : TestDecl(False, OutputTestModule), - 'test_richcmp.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_resource.py', enabled=False), + RegrTest('test_rfc822.py', enabled=True), + RegrTest('test_rgbimg.py', enabled=False), + RegrTest('test_richcmp.py', enabled=False), #rev 10840: 1 of 11 test fails. The failing one had an infinite recursion. - 'test_robotparser.py' : TestDecl(True, UTTestMainModule), - 'test_rotor.py' : TestDecl(False, OutputTestModule), - 'test_sax.py' : TestDecl(False, SimpleRunModule), - 'test_scope.py' : TestDecl(False, OutputTestModule), - 'test_scriptpackages.py' : TestDecl(False, UTTestMainModule), - 'test_select.py' : TestDecl(False, SimpleRunModule), - 'test_sets.py' : TestDecl(True, UTTestMainModule), - 'test_sgmllib.py' : TestDecl(True, UTTestMainModule), - 'test_sha.py' : TestDecl(True, UTTestMainModule, modified=True), + RegrTest('test_robotparser.py', enabled=True), + RegrTest('test_rotor.py', enabled=False), + RegrTest('test_sax.py', enabled=False, dumbtest=1), + RegrTest('test_scope.py', enabled=False), + RegrTest('test_scriptpackages.py', enabled=False), + RegrTest('test_select.py', enabled=False, dumbtest=1), + RegrTest('test_sets.py', enabled=True), + RegrTest('test_sgmllib.py', enabled=True), + RegrTest('test_sha.py', enabled=True), # one test is taken out (too_slow_test_case_3), rest passses - 'test_shelve.py' : TestDecl(True, UTTestMainModule), - 'test_shlex.py' : TestDecl(True, UTTestMainModule), - 'test_shutil.py' : TestDecl(True, UTTestMainModule), - 'test_signal.py' : TestDecl(False, OutputTestModule), - 'test_slice.py' : TestDecl(False, SimpleRunModule), - 'test_socket.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_shelve.py', enabled=True), + RegrTest('test_shlex.py', enabled=True), + RegrTest('test_shutil.py', enabled=True), + RegrTest('test_signal.py', enabled=False), + RegrTest('test_slice.py', enabled=False, dumbtest=1), + RegrTest('test_socket.py', enabled=False), #rev 10840: ImportError: thread - 'test_socket_ssl.py' : TestDecl(False, UTTestMainModule), - 'test_socketserver.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_socket_ssl.py', enabled=False), + RegrTest('test_socketserver.py', enabled=False), #rev 10840: ImportError: thread - 'test_softspace.py' : TestDecl(False, SimpleRunModule), - 'test_sort.py' : TestDecl(False, SimpleRunModule), - 'test_str.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_softspace.py', enabled=False, dumbtest=1), + RegrTest('test_sort.py', enabled=False, dumbtest=1), + RegrTest('test_str.py', enabled=False), #rev 10840: at least two tests fail, after several hours I gave up waiting for the rest - 'test_strftime.py' : TestDecl(False, SimpleRunModule), - 'test_string.py' : TestDecl(True, UTTestMainModule), - 'test_stringprep.py' : TestDecl(False, SimpleRunModule), - 'test_strop.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_strftime.py', enabled=False, dumbtest=1), + RegrTest('test_string.py', enabled=True), + RegrTest('test_StringIO.py', enabled=True), + RegrTest('test_stringprep.py', enabled=False, dumbtest=1), + RegrTest('test_strop.py', enabled=False), #rev 10840: ImportError: strop - 'test_strptime.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_strptime.py', enabled=False), #rev 10840: 1 of 42 test fails: seems to be some regex problem - 'test_struct.py' : TestDecl(False, SimpleRunModule), - 'test_structseq.py' : TestDecl(False, SimpleRunModule), - 'test_sunaudiodev.py' : TestDecl(False, SimpleRunModule), - 'test_sundry.py' : TestDecl(False, SimpleRunModule), + RegrTest('test_struct.py', enabled=False, dumbtest=1), + RegrTest('test_structseq.py', enabled=False, dumbtest=1), + RegrTest('test_sunaudiodev.py', enabled=False, dumbtest=1), + RegrTest('test_sundry.py', enabled=False, dumbtest=1), # test_support is not a test - 'test_symtable.py' : TestDecl(False, SimpleRunModule), - 'test_syntax.py' : TestDecl(True, UTTestMainModule), - 'test_sys.py' : TestDecl(True, UTTestMainModule), - 'test_tarfile.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_symtable.py', enabled=False, dumbtest=1), + RegrTest('test_syntax.py', enabled=True), + RegrTest('test_sys.py', enabled=True), + RegrTest('test_tarfile.py', enabled=False), #rev 10840: 13 of 13 test fail - 'test_tempfile.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_tempfile.py', enabled=False), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_textwrap.py' : TestDecl(True, UTTestMainModule), - 'test_thread.py' : TestDecl(False, OutputTestModule), - 'test_threaded_import.py': TestDecl(False, UTTestMainModule), - 'test_threadedtempfile.py': TestDecl(False, OutputTestModule), + RegrTest('test_textwrap.py', enabled=True), + RegrTest('test_thread.py', enabled=False), + RegrTest('test_threaded_import.py', enabled=False), + RegrTest('test_threadedtempfile.py', enabled=False), #rev 10840: ImportError: thread - 'test_threading.py' : TestDecl(False, SimpleRunModule), + RegrTest('test_threading.py', enabled=False, dumbtest=1), #rev 10840: ImportError: thread - 'test_time.py' : TestDecl(True, UTTestMainModule), - 'test_timeout.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_time.py', enabled=True), + RegrTest('test_timeout.py', enabled=False), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser - 'test_timing.py' : TestDecl(False, SimpleRunModule), - 'test_tokenize.py' : TestDecl(False, OutputTestModule), - 'test_trace.py' : TestDecl(True, UTTestMainModule), - 'test_traceback.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_timing.py', enabled=False, dumbtest=1), + RegrTest('test_tokenize.py', enabled=False), + RegrTest('test_trace.py', enabled=True), + RegrTest('test_traceback.py', enabled=False), #rev 10840: 2 of 2 tests fail - 'test_types.py' : TestDecl(True, OutputTestModule, modified=True), + RegrTest('test_types.py', enabled=True), #rev 11598: one of the mod related to dict iterators is questionable # and questions whether how we implement them is meaningful in the # long run - 'test_ucn.py' : TestDecl(False, UTTestMainModule), - 'test_unary.py' : TestDecl(True, UTTestMainModule), - 'test_unicode.py' : TestDecl(False, UTTestMainModule), - 'test_unicode_file.py' : TestDecl(False, OutputTestModule), - 'test_unicodedata.py' : TestDecl(False, UTTestMainModule), - 'test_univnewlines.py' : TestDecl(True, UTTestMainModule), - 'test_unpack.py' : TestDecl(False, SimpleRunModule), - 'test_urllib.py' : TestDecl(True, UTTestMainModule), + RegrTest('test_ucn.py', enabled=False), + RegrTest('test_unary.py', enabled=True), + RegrTest('test_unicode.py', enabled=False), + RegrTest('test_unicode_file.py', enabled=False), + RegrTest('test_unicodedata.py', enabled=False), + RegrTest('test_univnewlines.py', enabled=True), + RegrTest('test_unpack.py', enabled=False, dumbtest=1), + RegrTest('test_urllib.py', enabled=True), #rev 10840: 10 of 10 tests fail - 'test_urllib2.py' : TestDecl(False, SimpleRunModule), - 'test_urllibnet.py' : TestDecl(False, UTTestMainModule), - 'test_urlparse.py' : TestDecl(True, UTTestMainModule), - 'test_userdict.py' : TestDecl(True, UTTestMainModule), + RegrTest('test_urllib2.py', enabled=False, dumbtest=1), + RegrTest('test_urllibnet.py', enabled=False), + RegrTest('test_urlparse.py', enabled=True), + RegrTest('test_userdict.py', enabled=True), #rev 10840: 5 of 25 tests fail - 'test_userlist.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_userlist.py', enabled=False), #rev 10840: at least two tests fail, after several hours I gave up waiting for the rest - 'test_userstring.py' : TestDecl(False, UTTestMainModule), - 'test_uu.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_userstring.py', enabled=False), + RegrTest('test_uu.py', enabled=False), #rev 10840: 1 of 9 test fails - 'test_warnings.py' : TestDecl(True, UTTestMainModule), - 'test_wave.py' : TestDecl(False, SimpleRunModule), - 'test_weakref.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_warnings.py', enabled=True), + RegrTest('test_wave.py', enabled=False, dumbtest=1), + RegrTest('test_weakref.py', enabled=False), #rev 10840: ImportError: _weakref - 'test_whichdb.py' : TestDecl(False, UTTestMainModule), - 'test_winreg.py' : TestDecl(False, OutputTestModule), - 'test_winsound.py' : TestDecl(False, UTTestMainModule), - 'test_xmllib.py' : TestDecl(False, UTTestMainModule), - 'test_xmlrpc.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_whichdb.py', enabled=False), + RegrTest('test_winreg.py', enabled=False), + RegrTest('test_winsound.py', enabled=False), + RegrTest('test_xmllib.py', enabled=False), + RegrTest('test_xmlrpc.py', enabled=False), #rev 10840: 2 of 5 tests fail - 'test_xpickle.py' : TestDecl(False, UTTestMainModule), - 'test_xreadline.py' : TestDecl(False, OutputTestModule), - 'test_zipfile.py' : TestDecl(False, SimpleRunModule), - 'test_zipimport.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_xpickle.py', enabled=False), + RegrTest('test_xreadline.py', enabled=False), + RegrTest('test_zipfile.py', enabled=False, dumbtest=1), + RegrTest('test_zipimport.py', enabled=False), #rev 10840: ImportError: zlib - 'test_zlib.py' : TestDecl(False, UTTestMainModule), + RegrTest('test_zlib.py', enabled=False), #rev 10840: ImportError: zlib -} +] class RegrDirectory(py.test.collect.Directory): """ The central hub for gathering CPython's compliance tests @@ -708,23 +662,24 @@ please correct them! """ testmap = testmap + + def get(self, name, cache={}): + if not cache: + for x in testmap: + cache[x.basename] = x + return cache.get(name, None) + def run(self): - l = [] - items = self.testmap.items() - items.sort(lambda x,y: cmp(x[0].lower(), y[0].lower())) - for name, testdecl in items: - if option.withdisabled or testdecl.enabled: - l.append(name) - return l + return [x.basename for x in self.testmap + if x.enabled or pypy_option.withdisabled] def join(self, name): - if name in self.testmap: - testdecl = self.testmap[name] - fspath = self.fspath.join(name) - if option.extracttests: - return testdecl.testclass(fspath, parent=self, testdecl=testdecl) + regrtest = self.get(name) + if regrtest is not None: + if not option.extracttests: + return RunFileExternal(name, parent=self, regrtest=regrtest) else: - return RunFileExternal(fspath, parent=self, testdecl=testdecl) + return InterceptedRunModule(name, self, regrtest) Directory = RegrDirectory @@ -735,19 +690,24 @@ except: return 'unknown' # on windows people not always have 'svn' in their path -class RunFileExternal(OpErrorModule): - # a Module shows more nicely with the session reporting - # (i know this needs to become nicer) +class RunFileExternal(py.test.collect.Module): + def __init__(self, name, parent, regrtest): + super(RunFileExternal, self).__init__(name, parent) + self.regrtest = regrtest + def tryiter(self, stopitems=()): + # shortcut pre-counting of items return [] + def run(self): - return ['pypy-ext'] - def join(self, name): - if name == 'pypy-ext': - return ReallyRunFileExternal(name, parent=self, fspath=self.fspath) + if self.regrtest.ismodified(): + return ['modified'] + return ['unmodified'] -class ReallyRunFileExternal(RunAppFileItem): + def join(self, name): + return ReallyRunFileExternal(name, parent=self) +class ReallyRunFileExternal(py.test.Item): def run(self): """ invoke a subprocess running the test file via PyPy. record its output into the 'result/user at host' subdirectory. @@ -760,13 +720,14 @@ import time import socket import getpass - fspath = self.getfspath() + regrtest = self.parent.regrtest + fspath = regrtest.getfspath() python = sys.executable pypy_dir = py.path.local(pypy.__file__).dirpath() pypy_script = pypy_dir.join('interpreter', 'py.py') alarm_script = pypy_dir.join('tool', 'alarm.py') pypy_options = [] - if self.testdecl.oldstyle: + if regrtest.oldstyle or pypy_option.oldstyle: pypy_options.append('--oldstyle') sopt = " ".join(pypy_options) TIMEOUT = option.timeout @@ -787,7 +748,7 @@ resultdir.ensure(dir=1) resultfilename = resultdir.join(fspath.new(ext='.txt').basename) resultfile = resultfilename.open('w') - if issubclass(self.testdecl.testclass, OutputTestModule): + if regrtest.getoutputpath(): outputfilename = resultfilename.new(ext='.out') outputfile = outputfilename.open('w') print >> outputfile, self.fspath.purebasename @@ -805,7 +766,7 @@ print >>resultfile, "cpu model:", info['model name'] print >>resultfile, "cpu mhz:", info['cpu mhz'] - print >> resultfile, "oldstyle:", self.testdecl.oldstyle and 'yes' or 'no' + print >> resultfile, "oldstyle:", regrtest.oldstyle and 'yes' or 'no' print >> resultfile, 'pypy-revision:', getrev(pypydir) print >> resultfile, "startdate:", time.ctime() @@ -831,12 +792,12 @@ failure = None resultfile = resultfilename.open('a') if outputfilename: - expectedfilename = mydir.join('output', self.fspath.purebasename) + expectedfilename = regrtest.getoutputpath() expected = expectedfilename.read(mode='r') result = outputfilename.read(mode='r') if result != expected: reportdiff(expected, result) - failure = "output check failed: %s" % (self.fspath.basename,) + failure = "output check failed: %s" % (fspath.basename,) print >> resultfile, 'FAILED: test output differs' else: print >> resultfile, 'OK' From hpk at codespeak.net Fri Apr 29 15:41:54 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 29 Apr 2005 15:41:54 +0200 (CEST) Subject: [pypy-svn] r11624 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050429134154.137BB27BF3@code1.codespeak.net> Author: hpk Date: Fri Apr 29 15:41:53 2005 New Revision: 11624 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: ups ... fix piling up ever more tests Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 15:41:53 2005 @@ -86,11 +86,13 @@ # exported API # - def intercept_test_support(suites=[], doctestmodules=[]): + def intercept_test_support(): """ intercept calls to test_support.run_doctest and run_suite. Return doctestmodules, suites which will hold collected items from these test_support invocations. """ + suites = [] + doctestmodules = [] def hack_run_doctest(module, verbose=None): doctestmodules.append(module) test_support.run_doctest = hack_run_doctest From hpk at codespeak.net Fri Apr 29 16:15:15 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 29 Apr 2005 16:15:15 +0200 (CEST) Subject: [pypy-svn] r11625 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050429141515.E193627BF5@code1.codespeak.net> Author: hpk Date: Fri Apr 29 16:15:15 2005 New Revision: 11625 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: allow to specify timeouts in 'megapystones', default is 100MP now: the number of seconds equivalent to running 100 Million Pystones (around 900 seconds on codespeak.net). example: py.test -T 1000mp Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 16:15:15 2005 @@ -10,6 +10,7 @@ # the following adds command line options as a side effect! from pypy.conftest import gettestobjspace, option as pypy_option from test.regrtest import reportdiff +from test import pystone # # Interfacing/Integrating with py.test's collection process @@ -29,11 +30,22 @@ Option('-E', '--extracttests', action="store_true", default=False, dest="extracttests", help="try to extract single tests and run them via py.test/PyPy"), - Option('-T', '--timeout', action="store", type="int", - default=15*60, dest="timeout", - help="timeout running of a test module (default 15*60 seconds)"), + Option('-T', '--timeout', action="store", type="string", + default="100mp", dest="timeout", + help="fail a test module after the given timeout. " + "specify in seconds or 'XXXmp' aka Mega-Pystones") ) +def gettimeout(): + timeout = option.timeout.lower() + if timeout.endswith('mp'): + megapystone = float(timeout[:-2]) + t, stone = pystone.Proc0(10000) + pystonetime = t/stone + seconds = megapystone * 1000000 * pystonetime + return seconds + return float(timeout) + mydir = py.magic.autopath().dirpath() pypydir = py.path.local(pypy.__file__).dirpath() @@ -732,9 +744,9 @@ if regrtest.oldstyle or pypy_option.oldstyle: pypy_options.append('--oldstyle') sopt = " ".join(pypy_options) - TIMEOUT = option.timeout - cmd = "%s %s %d %s %s %s" %(python, alarm_script, TIMEOUT, pypy_script, sopt, fspath) + TIMEOUT = gettimeout() + cmd = "%s %s %d %s %s %s" %(python, alarm_script, TIMEOUT, pypy_script, sopt, fspath) try: username = getpass.getuser() except: @@ -771,6 +783,7 @@ print >> resultfile, "oldstyle:", regrtest.oldstyle and 'yes' or 'no' print >> resultfile, 'pypy-revision:', getrev(pypydir) print >> resultfile, "startdate:", time.ctime() + print >> resultfile, "timeout: %s seconds" %(TIMEOUT,) print >> resultfile if outputfilename: From pedronis at codespeak.net Fri Apr 29 16:42:47 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 29 Apr 2005 16:42:47 +0200 (CEST) Subject: [pypy-svn] r11626 - in pypy/dist: lib-python-2.3.4/test pypy/lib/test2 pypy/objspace/std Message-ID: <20050429144247.B03F227BF5@code1.codespeak.net> Author: pedronis Date: Fri Apr 29 16:42:47 2005 New Revision: 11626 Added: pypy/dist/pypy/lib/test2/test_coercion.py (contents, props changed) Modified: pypy/dist/lib-python-2.3.4/test/conftest.py pypy/dist/pypy/objspace/std/listobject.py pypy/dist/pypy/objspace/std/stdtypedef.py pypy/dist/pypy/objspace/std/stringobject.py pypy/dist/pypy/objspace/std/tupleobject.py Log: test_coercion passes after changes needed since str(TypeError) is different in PyPy because of new-styleness marked as such in conftest, notice that it also needs to be run with oldstyle because it depends on __coerce__ delegation through descroperation did not work for str|list|tuple */*=, fixing that was only necessary. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 16:42:47 2005 @@ -353,7 +353,8 @@ #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser RegrTest('test_codeop.py', enabled=True), - RegrTest('test_coercion.py', enabled=False), + RegrTest('test_coercion.py', enabled=False, oldstyle=True), + # needed changes because our exceptions are new-style and so have a different str(.) behavior RegrTest('test_commands.py', enabled=True), RegrTest('test_compare.py', enabled=True, oldstyle=True), RegrTest('test_compile.py', enabled=True), Added: pypy/dist/pypy/lib/test2/test_coercion.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/lib/test2/test_coercion.py Fri Apr 29 16:42:47 2005 @@ -0,0 +1,118 @@ +import copy +import sys +import warnings + +# Fake a number that implements numeric methods through __coerce__ +class CoerceNumber: + def __init__(self, arg): + self.arg = arg + + def __repr__(self): + return '' % repr(self.arg) + + def __coerce__(self, other): + if isinstance(other, CoerceNumber): + return self.arg, other.arg + else: + return (self.arg, other) + + +# Fake a number that implements numeric ops through methods. +class MethodNumber: + + def __init__(self,arg): + self.arg = arg + + def __repr__(self): + return '' % repr(self.arg) + + def __add__(self,other): + return self.arg + other + + def __radd__(self,other): + return other + self.arg + + def __sub__(self,other): + return self.arg - other + + def __rsub__(self,other): + return other - self.arg + + def __mul__(self,other): + return self.arg * other + + def __rmul__(self,other): + return other * self.arg + + def __div__(self,other): + return self.arg / other + + def __rdiv__(self,other): + return other / self.arg + + def __pow__(self,other): + return self.arg ** other + + def __rpow__(self,other): + return other ** self.arg + + def __mod__(self,other): + return self.arg % other + + def __rmod__(self,other): + return other % self.arg + + def __cmp__(self, other): + return cmp(self.arg, other) + + +candidates = [ 2, 4.0, 2L, 2+0j, [1], (2,), None, + MethodNumber(1), CoerceNumber(2)] + +infix_binops = [ '+', '-', '*', '/', '**', '%' ] +prefix_binops = [ 'divmod' ] + +def do_infix_binops(): + for a in candidates: + for b in candidates: + for op in infix_binops: + print '%s %s %s' % (a, op, b), + try: + x = eval('a %s b' % op) + except: + error = sys.exc_info()[:2] + print '... exceptions.%s' % error[0].__name__ + else: + print '=', x + try: + z = copy.copy(a) + except copy.Error: + z = a # assume it has no inplace ops + print '%s %s= %s' % (a, op, b), + try: + exec('z %s= b' % op) + except: + error = sys.exc_info()[:2] + print '... exceptions.%s' % error[0].__name__ + else: + print '=>', z + +def do_prefix_binops(): + for a in candidates: + for b in candidates: + for op in prefix_binops: + print '%s(%s, %s)' % (op, a, b), + try: + x = eval('%s(a, b)' % op) + except: + error = sys.exc_info()[:2] + print '... exceptions.%s' % error[0].__name__ + else: + print '=', x + +warnings.filterwarnings("ignore", + r'complex divmod\(\), // and % are deprecated', + DeprecationWarning, + r'test.test_coercion$') +do_infix_binops() +do_prefix_binops() Modified: pypy/dist/pypy/objspace/std/listobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/listobject.py (original) +++ pypy/dist/pypy/objspace/std/listobject.py Fri Apr 29 16:42:47 2005 @@ -130,7 +130,13 @@ list_extend__List_ANY(space, w_list1, w_iterable2) return w_list1 -def mul_list_times(space, w_list, times): +def mul_list_times(space, w_list, w_times): + try: + times = space.int_w(w_times) + except OperationError, e: + if e.match(space, space.w_TypeError): + raise FailedToImplement + raise w_res = W_ListObject(space, []) size = w_list.ob_size newlen = size * times # XXX check overflow @@ -146,13 +152,18 @@ return w_res def mul__List_ANY(space, w_list, w_times): - return mul_list_times(space, w_list, space.int_w(w_times)) + return mul_list_times(space, w_list, w_times) def mul__ANY_List(space, w_times, w_list): - return mul_list_times(space, w_list, space.int_w(w_times)) + return mul_list_times(space, w_list, w_times) def inplace_mul__List_ANY(space, w_list, w_times): - times = space.int_w(w_times) + try: + times = space.int_w(w_times) + except OperationError, e: + if e.match(space, space.w_TypeError): + raise FailedToImplement + raise if times <= 0: w_list.clear() return w_list Modified: pypy/dist/pypy/objspace/std/stdtypedef.py ============================================================================== --- pypy/dist/pypy/objspace/std/stdtypedef.py (original) +++ pypy/dist/pypy/objspace/std/stdtypedef.py Fri Apr 29 16:42:47 2005 @@ -211,7 +211,8 @@ dest.append(expr_arg) renaming = ', '.join(dest) +" = "+', '.join(src) - if allow_NotImplemented_results and len(multimethod.specialnames) > 1: + if allow_NotImplemented_results and (len(multimethod.specialnames) > 1 or + multimethod.name.startswith('inplace_')): # turn FailedToImplement into NotImplemented code = """def %s_perform_call(space, %s): %s Modified: pypy/dist/pypy/objspace/std/stringobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/stringobject.py (original) +++ pypy/dist/pypy/objspace/std/stringobject.py Fri Apr 29 16:42:47 2005 @@ -915,7 +915,13 @@ w_empty = space.newstring([]) return str_join__String_ANY(space, w_empty, w_r) -def mul_string_times(space, w_str, mul): +def mul_string_times(space, w_str, w_times): + try: + mul = space.int_w(w_times) + except OperationError, e: + if e.match(space, space.w_TypeError): + raise FailedToImplement + raise input = w_str._value if mul < 0: return space.wrap("") @@ -934,10 +940,10 @@ return space.wrap("".join(buffer)) def mul__String_ANY(space, w_str, w_times): - return mul_string_times(space, w_str, space.int_w(w_times)) + return mul_string_times(space, w_str, w_times) def mul__ANY_String(space, w_times, w_str): - return mul_string_times(space, w_str, space.int_w(w_times)) + return mul_string_times(space, w_str, w_times) def add__String_String(space, w_left, w_right): right = w_right._value Modified: pypy/dist/pypy/objspace/std/tupleobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/tupleobject.py (original) +++ pypy/dist/pypy/objspace/std/tupleobject.py Fri Apr 29 16:42:47 2005 @@ -65,15 +65,21 @@ items2 = w_tuple2.wrappeditems return W_TupleObject(space, items1 + items2) -def mul_tuple_times(space, w_tuple, times): +def mul_tuple_times(space, w_tuple, w_times): + try: + times = space.int_w(w_times) + except OperationError, e: + if e.match(space, space.w_TypeError): + raise FailedToImplement + raise items = w_tuple.wrappeditems return W_TupleObject(space, items * times) def mul__Tuple_ANY(space, w_tuple, w_times): - return mul_tuple_times(space, w_tuple, space.int_w(w_times)) + return mul_tuple_times(space, w_tuple, w_times) def mul__ANY_Tuple(space, w_times, w_tuple): - return mul_tuple_times(space, w_tuple, space.int_w(w_times)) + return mul_tuple_times(space, w_tuple, w_times) def eq__Tuple_Tuple(space, w_tuple1, w_tuple2): items1 = w_tuple1.wrappeditems From hpk at codespeak.net Fri Apr 29 16:44:36 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 29 Apr 2005 16:44:36 +0200 (CEST) Subject: [pypy-svn] r11627 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050429144436.581DB27BE1@code1.codespeak.net> Author: hpk Date: Fri Apr 29 16:44:36 2005 New Revision: 11627 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: fix output capturing for fine grained Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 16:44:36 2005 @@ -154,7 +154,8 @@ """ Run a module file and compare its output to the expected output in the output/ directory. """ - def call_capture(self, func, *args): + def call_capture(self, space, func, *args): + regrtest = self.parent.regrtest oldsysout = sys.stdout sys.stdout = capturesysout = py.std.cStringIO.StringIO() try: @@ -175,7 +176,7 @@ # their representations regrtest = self.parent.regrtest space = gettestobjspace() - res, output = call_capture(regrtest.run_file, space) + res, output = self.call_capture(space, regrtest.run_file, space) outputpath = regrtest.getoutputpath() if outputpath: @@ -198,6 +199,7 @@ def __init__(self, name, parent, regrtest): super(InterceptedRunModule, self).__init__(name, parent) self.regrtest = regrtest + self.fspath = regrtest.getfspath() def _prepare(self): if hasattr(self, 'name2item'): From hpk at codespeak.net Fri Apr 29 16:52:21 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 29 Apr 2005 16:52:21 +0200 (CEST) Subject: [pypy-svn] r11629 - pypy/dist/pypy/lib/test2 Message-ID: <20050429145221.AC39727BE1@code1.codespeak.net> Author: hpk Date: Fri Apr 29 16:52:21 2005 New Revision: 11629 Modified: pypy/dist/pypy/lib/test2/conftest.py Log: quickfix: don't run cpython-level tests in lib/test2 (IMO it's not really worth it currently ...) Modified: pypy/dist/pypy/lib/test2/conftest.py ============================================================================== --- pypy/dist/pypy/lib/test2/conftest.py (original) +++ pypy/dist/pypy/lib/test2/conftest.py Fri Apr 29 16:52:21 2005 @@ -101,13 +101,14 @@ super(UTTestCase, self).__init__(name, parent) self._obj = cls -TestDecl = libconftest.TestDecl - -testmap = { - 'test_itertools.py' : TestDecl(True, UTModuleOnCPython), - 'test_sha.py' : TestDecl(True, UTModuleOnCPython), -} +#testmap = { +# 'test_itertools.py' : TestDecl(True, UTModuleOnCPython), +# 'test_sha.py' : TestDecl(True, UTModuleOnCPython), +#} class Directory(libconftest.Directory): - testmap = testmap + + def run(self): + py.test.skip("running modified tests on native cpython not supported currently.") + From hpk at codespeak.net Fri Apr 29 16:59:25 2005 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 29 Apr 2005 16:59:25 +0200 (CEST) Subject: [pypy-svn] r11631 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050429145925.2F92827BE1@code1.codespeak.net> Author: hpk Date: Fri Apr 29 16:59:24 2005 New Revision: 11631 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: make it more obvious if we are running a modified test module Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Fri Apr 29 16:59:24 2005 @@ -711,6 +711,7 @@ def __init__(self, name, parent, regrtest): super(RunFileExternal, self).__init__(name, parent) self.regrtest = regrtest + self.fspath = regrtest.getfspath() def tryiter(self, stopitems=()): # shortcut pre-counting of items From tismer at codespeak.net Fri Apr 29 18:23:00 2005 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 29 Apr 2005 18:23:00 +0200 (CEST) Subject: [pypy-svn] r11633 - pypy/dist/pypy/tool Message-ID: <20050429162300.37E3227BF0@code1.codespeak.net> Author: tismer Date: Fri Apr 29 18:23:00 2005 New Revision: 11633 Modified: pypy/dist/pypy/tool/_enum_exceptions.py Log: added an explicit implementation of SyntaxError__str__ Modified: pypy/dist/pypy/tool/_enum_exceptions.py ============================================================================== --- pypy/dist/pypy/tool/_enum_exceptions.py (original) +++ pypy/dist/pypy/tool/_enum_exceptions.py Fri Apr 29 18:23:00 2005 @@ -77,7 +77,6 @@ print >> f, " # please implement %s.%s (%r)" % (name, attname, meth) else: try: - print >> f, " # auto-generated code, please check carefully!" for line in func(exc): print >> f, " " + line except ValueError, e: @@ -106,6 +105,7 @@ except: x = 42 use_default = x is None # looks fine so far. + yield "# auto-generated code, please check carefully!" yield "def __getitem__(self, idx):" if use_default: yield " if not hasattr(self, 'args'):" @@ -260,6 +260,7 @@ groupassign[key].append( (order, assignment) ) cases = groupassign.items() cases.sort() + yield "# auto-generated code, please check carefully!" yield "def __init__(self, *args):" if len(cases) > 1 or len(cases[0][0]) != maxprobe: yield " argc = len(args)" @@ -285,6 +286,13 @@ yield indent * " " + line def tryGenerate__str__(exc, maxprobe=20): + if exc in known__str__: + import inspect + src = inspect.getsource(known__str__[exc]) + for line in src.split("\n"): + yield line + return + minargs, maxargs, working = findAllArgs(exc, maxprobe) # checking the default case (well, there are two) simple = False @@ -304,6 +312,7 @@ break else: simple = arg1_methods and min(arg1_methods) == max(arg1_methods) + yield "# auto-generated code, please check carefully!" if simple: yield "def __str__(self):" yield " args = self.args" @@ -329,6 +338,28 @@ yield " ])" yield " return res" +known__str__ = {} + +# SyntaxError +def __str__(self): + if type(self.msg) is not str: + return self.msg + + have_filename = type(self.filename) is str + have_lineno = type(self.lineno) is int + if have_filename or have_lineno: + import os + fname = os.path.basename(self.filename or "???") + if have_filename and have_lineno: + buffer = "%s (%s, line %ld)" % (self.msg, fname, self.lineno) + elif have_filename: + buffer ="%s (%s)" % (self.msg, fname) + elif have_lineno: + buffer = "%s (line %ld)" % (self.msg, self.lineno) + return buffer + +known__str__[SyntaxError] = __str__ + if __name__ == "__main__": import pypy, os prefix = os.path.dirname(pypy.__file__) From pedronis at codespeak.net Fri Apr 29 19:58:42 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 29 Apr 2005 19:58:42 +0200 (CEST) Subject: [pypy-svn] r11634 - in pypy/dist/pypy: lib module tool Message-ID: <20050429175842.EC7B327BBC@code1.codespeak.net> Author: pedronis Date: Fri Apr 29 19:58:42 2005 New Revision: 11634 Modified: pypy/dist/pypy/lib/_exceptions.py pypy/dist/pypy/module/exceptionsinterp.py pypy/dist/pypy/tool/_enum_exceptions.py Log: regenerated _exceptions.py and then exceptionsinterp.py, we get better str(.) for SyntaxErrors, we still don't pass test_eof.py but that seems because of difference in the content of the exception itself fixed the problem that buffer could have not been defined. thanks Christian Modified: pypy/dist/pypy/lib/_exceptions.py ============================================================================== --- pypy/dist/pypy/lib/_exceptions.py (original) +++ pypy/dist/pypy/lib/_exceptions.py Fri Apr 29 19:58:42 2005 @@ -22,7 +22,6 @@ Exception | +-- SystemExit - +-- TaskletExit +-- StopIteration +-- StandardError | | @@ -166,15 +165,12 @@ else: return str(args) -class Warning(Exception): - """Base class for warning categories.""" - -class SyntaxWarning(Warning): - """Base class for warnings about dubious syntax.""" - class StopIteration(Exception): """Signal the end from iterator.next().""" +class Warning(Exception): + """Base class for warning categories.""" + class PendingDeprecationWarning(Warning): """Base class for warnings about features which will be deprecated in the future.""" @@ -212,33 +208,6 @@ class DeprecationWarning(Warning): """Base class for warnings about deprecated features.""" -class UnicodeEncodeError(UnicodeError): - """Unicode encoding error.""" - - # auto-generated code, please check carefully! - def __init__(self, *args): - argc = len(args) - self.args = args # modified: always assign args, no error check - if argc == 5: - self.encoding = args[0] - self.object = args[1] - self.start = args[2] - self.end = args[3] - self.reason = args[4] - - # auto-generated code, please check carefully! - def __str__(self): - # this is a bad hack, please supply an implementation - res = ' '.join([ - 'object=' + str(getattr(self, 'object', None)), - 'end=' + str(getattr(self, 'end', None)), - 'encoding=' + str(getattr(self, 'encoding', None)), - 'args=' + str(getattr(self, 'args', None)), - 'start=' + str(getattr(self, 'start', None)), - 'reason=' + str(getattr(self, 'reason', None)), - ]) - return res - class ArithmeticError(StandardError): """Base class for arithmetic errors.""" @@ -278,13 +247,24 @@ self.offset = args[1][2] self.text = args[1][3] - # auto-generated code, please check carefully! def __str__(self): - # this is a bad hack, please supply an implementation - res = ' '.join([ - 'args=' + str(getattr(self, 'args', None)), - ]) - return res + if type(self.msg) is not str: + return self.msg + + buffer = self.msg + have_filename = type(self.filename) is str + have_lineno = type(self.lineno) is int + if have_filename or have_lineno: + import os + fname = os.path.basename(self.filename or "???") + if have_filename and have_lineno: + buffer = "%s (%s, line %ld)" % (self.msg, fname, self.lineno) + elif have_filename: + buffer ="%s (%s)" % (self.msg, fname) + elif have_lineno: + buffer = "%s (line %ld)" % (self.msg, self.lineno) + return buffer + class FutureWarning(Warning): """Base class for warnings about constructs that will change semantically in the future.""" @@ -366,8 +346,8 @@ class UserWarning(Warning): """Base class for warnings generated by user code.""" -class TaskletExit(SystemExit): - """Request to exit from a tasklet.""" +class SyntaxWarning(Warning): + """Base class for warnings about dubious syntax.""" class MemoryError(StandardError): """Out of memory.""" @@ -384,5 +364,29 @@ class OverflowError(ArithmeticError): """Result too large to be represented.""" -class WindowsError(OSError): - """MS-Windows OS system call failed.""" +class UnicodeEncodeError(UnicodeError): + """Unicode encoding error.""" + + # auto-generated code, please check carefully! + def __init__(self, *args): + argc = len(args) + self.args = args # modified: always assign args, no error check + if argc == 5: + self.encoding = args[0] + self.object = args[1] + self.start = args[2] + self.end = args[3] + self.reason = args[4] + + # auto-generated code, please check carefully! + def __str__(self): + # this is a bad hack, please supply an implementation + res = ' '.join([ + 'object=' + str(getattr(self, 'object', None)), + 'end=' + str(getattr(self, 'end', None)), + 'encoding=' + str(getattr(self, 'encoding', None)), + 'args=' + str(getattr(self, 'args', None)), + 'start=' + str(getattr(self, 'start', None)), + 'reason=' + str(getattr(self, 'reason', None)), + ]) + return res Modified: pypy/dist/pypy/module/exceptionsinterp.py ============================================================================== --- pypy/dist/pypy/module/exceptionsinterp.py (original) +++ pypy/dist/pypy/module/exceptionsinterp.py Fri Apr 29 19:58:42 2005 @@ -1,6 +1,12 @@ #!/bin/env python # -*- coding: LATIN-1 -*- +#************************************************************* + +def initexceptions(space): + """NOT_RPYTHON""" + + __doc__ = \ """Python's standard exception class hierarchy. Before Python 1.5, the standard exceptions were all simple string objects. @@ -25,7 +31,6 @@ Exception | +-- SystemExit - +-- TaskletExit +-- StopIteration +-- StandardError | | @@ -90,13 +95,8 @@ +-- RuntimeWarning +-- FutureWarning""" -#************************************************************* - -def initexceptions(space): - """NOT_RPYTHON""" - # global declarations -# global object g48dict +# global object g46dict # global object gs_MemoryError # global object gcls_MemoryError # global object gcls_StandardError @@ -120,16 +120,14 @@ # global object gcls_KeyError # global object gcls_LookupError # global object gs_LookupError -# global object gs_TaskletExit -# global object gcls_TaskletExit -# global object gcls_SystemExit -# global object gs_SystemExit +# global object gs_SyntaxWarning +# global object gcls_SyntaxWarning +# global object gcls_Warning +# global object gs_Warning # global object gs_StopIteration # global object gcls_StopIteration # global object gs_PendingDeprecationWarning # global object gcls_PendingDeprecationWarning -# global object gcls_Warning -# global object gs_Warning # global object gs_EnvironmentError # global object gcls_EnvironmentError # global object gs_OSError @@ -154,12 +152,12 @@ # global object gcls_IOError # global object gs_FutureWarning # global object gcls_FutureWarning -# global object gs_ZeroDivisionError -# global object gcls_ZeroDivisionError +# global object gs_SystemExit +# global object gcls_SystemExit # global object gs_EOFError # global object gcls_EOFError # global object gs___file__ -# global object gs__home_arigo_svn_pypy_dist_pypy_l +# global object gs__u_pedronis_PyPy_dist_pypy_lib__ # global object gs_TabError # global object gcls_TabError # global object gs_UnicodeEncodeError @@ -183,22 +181,21 @@ # global object gcls_KeyboardInterrupt # global object gs_UserWarning # global object gcls_UserWarning -# global object gs_SyntaxWarning -# global object gcls_SyntaxWarning +# global object gs_ZeroDivisionError +# global object gcls_ZeroDivisionError # global object gs_NotImplementedError # global object gcls_NotImplementedError # global object gs_SystemError # global object gcls_SystemError # global object gs_OverflowError # global object gcls_OverflowError -# global object gs_WindowsError -# global object gcls_WindowsError # global object gs___init__ # global object gfunc_UnicodeDecodeError___init__ # global object gs___str__ # global object gfunc_UnicodeDecodeError___str__ # global object gfunc_UnicodeEncodeError___init__ # global object gfunc_UnicodeEncodeError___str__ +# global object gfunc_SystemExit___init__ # global object gfunc_SyntaxError___init__ # global object gfunc_SyntaxError___str__ # global object gs_filename @@ -210,7 +207,6 @@ # global object gs_text # global object gfunc_EnvironmentError___init__ # global object gfunc_EnvironmentError___str__ -# global object gfunc_SystemExit___init__ # global object gfunc_KeyError___str__ # global object gfunc_UnicodeTranslateError___init__ # global object gfunc_UnicodeTranslateError___str__ @@ -220,9 +216,141 @@ # global object gfunc_Exception___str__ ##SECTION## +## filename '/usr/lib/python2.3/posixpath.py' +## function 'split' +## firstlineno 74 +##SECTION## +# global declarations +# global object gs_rfind +# global object gs___1 +# global object gcls_ValueError_1 +# global object gs_rstrip + + def split(space, __args__): + '''Split a pathname. Returns tuple "(head, tail)" where "tail" is + everything after the final slash. Either part may be empty.''' + + funcname = "split" + signature = ['p'], None, None + defaults_w = [] + w_p, = __args__.parse(funcname, signature, defaults_w) + return fastf_split(space, w_p) + + f_split = split + + def split(space, w_p): + '''Split a pathname. Returns tuple "(head, tail)" where "tail" is + everything after the final slash. Either part may be empty.''' + goto = 1 # startblock + while True: + + if goto == 1: + w_0 = space.getattr(w_p, gs_rfind) + w_1 = space.call_function(w_0, gs___1) + w_2 = space.add(w_1, gi_1) + w_3 = space.newslice(space.w_None, w_2, space.w_None) + w_4 = space.getitem(w_p, w_3) + w_5 = space.newslice(w_2, space.w_None, space.w_None) + w_6 = space.getitem(w_p, w_5) + w_7 = space.newtuple([w_4, w_6]) + w_8 = space.len(w_7) + w_9 = space.eq(w_8, gi_2) + v0 = space.is_true(w_9) + if v0 == True: + w_10 = w_7 + goto = 2 + else: + assert v0 == False + w_etype, w_evalue = space.w_ValueError, space.w_None + goto = 7 + + if goto == 2: + w_11 = space.getitem(w_10, gi_0) + w_12 = space.getitem(w_10, gi_1) + v1 = space.is_true(w_11) + if v1 == True: + w_head, w_tail = w_11, w_12 + goto = 3 + else: + assert v1 == False + w_head_1, w_tail_1, w_13 = w_11, w_12, w_11 + goto = 4 + + if goto == 3: + w_14 = space.len(w_head) + w_15 = space.mul(gs___1, w_14) + w_16 = space.ne(w_head, w_15) + w_head_1, w_tail_1, w_13 = w_head, w_tail, w_16 + goto = 4 + + if goto == 4: + v2 = space.is_true(w_13) + if v2 == True: + w_tail_2, w_17 = w_tail_1, w_head_1 + goto = 5 + else: + assert v2 == False + w_18, w_19 = w_head_1, w_tail_1 + goto = 6 + + if goto == 5: + w_20 = space.getattr(w_17, gs_rstrip) + w_21 = space.call_function(w_20, gs___1) + w_18, w_19 = w_21, w_tail_2 + goto = 6 + + if goto == 6: + w_22 = space.newtuple([w_18, w_19]) + w_23 = w_22 + goto = 8 + + if goto == 7: + raise gOperationError(w_etype, w_evalue) + + if goto == 8: + return w_23 + + fastf_split = split + +##SECTION## +## filename '/usr/lib/python2.3/posixpath.py' +## function 'basename' +## firstlineno 110 +##SECTION## +# global declaration +# global object gfunc_split + + def basename(space, __args__): + """Returns the final component of a pathname""" + + funcname = "basename" + signature = ['p'], None, None + defaults_w = [] + w_p, = __args__.parse(funcname, signature, defaults_w) + return fastf_basename(space, w_p) + + f_basename = basename + + def basename(space, w_p): + """Returns the final component of a pathname""" + goto = 1 # startblock + while True: + + if goto == 1: + w_0 = fastf_split(space, w_p) + w_1 = space.getitem(w_0, gi_1) + w_2 = w_1 + goto = 2 + + if goto == 2: + return w_2 + + fastf_basename = basename + +##SECTION## ## filename 'lib/_exceptions.py' ## function '__getitem__' -## firstlineno 94 +## firstlineno 93 ##SECTION## def __getitem__(space, __args__): funcname = "__getitem__" @@ -251,7 +379,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__init__' -## firstlineno 98 +## firstlineno 97 ##SECTION## def __init__(space, __args__): funcname = "__init__" @@ -279,7 +407,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__str__' -## firstlineno 102 +## firstlineno 101 ##SECTION## # global declarations # global object gs_args @@ -325,12 +453,12 @@ if goto == 3: w_8 = space.getitem(w_6, gi_0) - w_9 = space.call_function(space.w_str, w_8) + w_9 = space.str(w_8) w_3 = w_9 goto = 5 if goto == 4: - w_10 = space.call_function(space.w_str, w_7) + w_10 = space.str(w_7) w_3 = w_10 goto = 5 @@ -342,7 +470,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__init__' -## firstlineno 131 +## firstlineno 130 ##SECTION## # global declarations # global object gi_4 @@ -395,7 +523,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__str__' -## firstlineno 141 +## firstlineno 140 ##SECTION## # global declarations # global object gs_getattr @@ -427,19 +555,19 @@ if goto == 1: w_0 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_start, space.w_None) - w_1 = space.call_function(space.w_str, w_0) + w_1 = space.str(w_0) w_2 = space.add(gs_start_, w_1) w_3 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_reason, space.w_None) - w_4 = space.call_function(space.w_str, w_3) + w_4 = space.str(w_3) w_5 = space.add(gs_reason_, w_4) w_6 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_args, space.w_None) - w_7 = space.call_function(space.w_str, w_6) + w_7 = space.str(w_6) w_8 = space.add(gs_args_, w_7) w_9 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_end, space.w_None) - w_10 = space.call_function(space.w_str, w_9) + w_10 = space.str(w_9) w_11 = space.add(gs_end_, w_10) w_12 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_object, space.w_None) - w_13 = space.call_function(space.w_str, w_12) + w_13 = space.str(w_12) w_14 = space.add(gs_object_, w_13) w_15 = space.newlist([w_2, w_5, w_8, w_11, w_14]) w_16 = space.call_function(gbltinmethod_join, w_15) @@ -454,7 +582,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__str__' -## firstlineno 159 +## firstlineno 158 ##SECTION## def __str__(space, __args__): funcname = "__str__" @@ -500,7 +628,7 @@ goto = 5 if goto == 4: - w_10 = space.call_function(space.w_str, w_7) + w_10 = space.str(w_7) w_3 = w_10 goto = 5 @@ -512,7 +640,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__init__' -## firstlineno 185 +## firstlineno 181 ##SECTION## def __init__(space, __args__): funcname = "__init__" @@ -596,7 +724,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__str__' -## firstlineno 199 +## firstlineno 195 ##SECTION## # global declarations # global object gs_errno @@ -620,16 +748,16 @@ if goto == 1: w_0 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_errno, space.w_None) - w_1 = space.call_function(space.w_str, w_0) + w_1 = space.str(w_0) w_2 = space.add(gs_errno_, w_1) w_3 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_args, space.w_None) - w_4 = space.call_function(space.w_str, w_3) + w_4 = space.str(w_3) w_5 = space.add(gs_args_, w_4) w_6 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_strerror, space.w_None) - w_7 = space.call_function(space.w_str, w_6) + w_7 = space.str(w_6) w_8 = space.add(gs_strerror_, w_7) w_9 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_filename, space.w_None) - w_10 = space.call_function(space.w_str, w_9) + w_10 = space.str(w_9) w_11 = space.add(gs_filename_, w_10) w_12 = space.newlist([w_2, w_5, w_8, w_11]) w_13 = space.call_function(gbltinmethod_join, w_12) @@ -644,111 +772,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__init__' -## firstlineno 219 -##SECTION## -# global declaration -# global object gi_5 - - def __init__(space, __args__): - funcname = "__init__" - signature = ['self'], 'args', None - defaults_w = [] - w_self, w_args = __args__.parse(funcname, signature, defaults_w) - return fastf_UnicodeEncodeError___init__(space, w_self, w_args) - - f_UnicodeEncodeError___init__ = __init__ - - def __init__(space, w_self, w_args): - goto = 1 # startblock - while True: - - if goto == 1: - w_0 = space.len(w_args) - w_1 = space.setattr(w_self, gs_args, w_args) - w_2 = space.eq(w_0, gi_5) - v0 = space.is_true(w_2) - if v0 == True: - w_self_1, w_args_1 = w_self, w_args - goto = 2 - else: - assert v0 == False - w_3 = space.w_None - goto = 3 - - if goto == 2: - w_4 = space.getitem(w_args_1, gi_0) - w_5 = space.setattr(w_self_1, gs_encoding, w_4) - w_6 = space.getitem(w_args_1, gi_1) - w_7 = space.setattr(w_self_1, gs_object, w_6) - w_8 = space.getitem(w_args_1, gi_2) - w_9 = space.setattr(w_self_1, gs_start, w_8) - w_10 = space.getitem(w_args_1, gi_3) - w_11 = space.setattr(w_self_1, gs_end, w_10) - w_12 = space.getitem(w_args_1, gi_4) - w_13 = space.setattr(w_self_1, gs_reason, w_12) - w_3 = space.w_None - goto = 3 - - if goto == 3: - return w_3 - - fastf_UnicodeEncodeError___init__ = __init__ - -##SECTION## -## filename 'lib/_exceptions.py' -## function '__str__' -## firstlineno 230 -##SECTION## -# global declarations -# global object gs_encoding -# global object gs_encoding_ - - def __str__(space, __args__): - funcname = "__str__" - signature = ['self'], None, None - defaults_w = [] - w_self, = __args__.parse(funcname, signature, defaults_w) - return fastf_UnicodeEncodeError___str__(space, w_self) - - f_UnicodeEncodeError___str__ = __str__ - - def __str__(space, w_self): - goto = 1 # startblock - while True: - - if goto == 1: - w_0 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_object, space.w_None) - w_1 = space.call_function(space.w_str, w_0) - w_2 = space.add(gs_object_, w_1) - w_3 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_end, space.w_None) - w_4 = space.call_function(space.w_str, w_3) - w_5 = space.add(gs_end_, w_4) - w_6 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_encoding, space.w_None) - w_7 = space.call_function(space.w_str, w_6) - w_8 = space.add(gs_encoding_, w_7) - w_9 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_args, space.w_None) - w_10 = space.call_function(space.w_str, w_9) - w_11 = space.add(gs_args_, w_10) - w_12 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_start, space.w_None) - w_13 = space.call_function(space.w_str, w_12) - w_14 = space.add(gs_start_, w_13) - w_15 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_reason, space.w_None) - w_16 = space.call_function(space.w_str, w_15) - w_17 = space.add(gs_reason_, w_16) - w_18 = space.newlist([w_2, w_5, w_8, w_11, w_14, w_17]) - w_19 = space.call_function(gbltinmethod_join, w_18) - w_20 = w_19 - goto = 2 - - if goto == 2: - return w_20 - - fastf_UnicodeEncodeError___str__ = __str__ - -##SECTION## -## filename 'lib/_exceptions.py' -## function '__init__' -## firstlineno 270 +## firstlineno 239 ##SECTION## def __init__(space, __args__): funcname = "__init__" @@ -817,8 +841,15 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__str__' -## firstlineno 282 +## firstlineno 250 ##SECTION## +# global declarations +# global object gfunc_basename +# global object gs____ +# global object gs__s___s__line__ld_ +# global object gs__s___s_ +# global object gs__s__line__ld_ + def __str__(space, __args__): funcname = "__str__" signature = ['self'], None, None @@ -833,15 +864,154 @@ while True: if goto == 1: - w_0 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_args, space.w_None) - w_1 = space.call_function(space.w_str, w_0) - w_2 = space.add(gs_args_, w_1) - w_3 = space.newlist([w_2]) - w_4 = space.call_function(gbltinmethod_join, w_3) - w_5 = w_4 - goto = 2 + w_0 = space.getattr(w_self, gs_msg) + w_1 = space.type(w_0) + w_2 = space.is_(w_1, space.w_str) + v0 = space.is_true(w_2) + if v0 == True: + w_self_1 = w_self + goto = 3 + else: + assert v0 == False + w_3 = w_self + goto = 2 if goto == 2: + w_4 = space.getattr(w_3, gs_msg) + w_5 = w_4 + goto = 15 + + if goto == 3: + w_6 = space.getattr(w_self_1, gs_msg) + w_7 = space.getattr(w_self_1, gs_filename) + w_8 = space.type(w_7) + w_9 = space.is_(w_8, space.w_str) + w_10 = space.getattr(w_self_1, gs_lineno) + w_11 = space.type(w_10) + w_12 = space.is_(w_11, space.w_int) + v1 = space.is_true(w_9) + if v1 == True: + (w_self_2, w_buffer, w_have_lineno, w_have_filename, + w_13) = (w_self_1, w_6, w_12, w_9, w_9) + goto = 4 + else: + assert v1 == False + (w_self_2, w_buffer, w_have_lineno, w_have_filename, + w_13) = (w_self_1, w_6, w_12, w_9, w_12) + goto = 4 + + if goto == 4: + v2 = space.is_true(w_13) + if v2 == True: + (w_self_3, w_buffer_1, w_have_lineno_1, + w_have_filename_1) = (w_self_2, w_buffer, w_have_lineno, + w_have_filename) + goto = 5 + else: + assert v2 == False + w_5 = w_buffer + goto = 15 + + if goto == 5: + w_14 = space.getattr(w_self_3, gs_filename) + v3 = space.is_true(w_14) + if v3 == True: + (w_self_4, w_buffer_2, w_have_lineno_2, w_have_filename_2, + w_15) = (w_self_3, w_buffer_1, w_have_lineno_1, + w_have_filename_1, w_14) + goto = 7 + else: + assert v3 == False + (w_self_5, w_buffer_3, w_have_lineno_3, + w_have_filename_3) = (w_self_3, w_buffer_1, w_have_lineno_1, + w_have_filename_1) + goto = 6 + + if goto == 6: + w_16 = fastf_basename(space, gs____) + (w_self_6, w_fname, w_buffer_4, w_have_lineno_4, + w_have_filename_4) = (w_self_5, w_16, w_buffer_3, + w_have_lineno_3, w_have_filename_3) + goto = 8 + + if goto == 7: + w_17 = fastf_basename(space, w_15) + (w_self_6, w_fname, w_buffer_4, w_have_lineno_4, + w_have_filename_4) = (w_self_4, w_17, w_buffer_2, + w_have_lineno_2, w_have_filename_2) + goto = 8 + + if goto == 8: + v4 = space.is_true(w_have_filename_4) + if v4 == True: + (w_self_7, w_fname_1, w_buffer_5, w_have_lineno_5, + w_have_filename_5, w_18) = (w_self_6, w_fname, w_buffer_4, + w_have_lineno_4, w_have_filename_4, w_have_lineno_4) + goto = 9 + else: + assert v4 == False + (w_self_7, w_fname_1, w_buffer_5, w_have_lineno_5, + w_have_filename_5, w_18) = (w_self_6, w_fname, w_buffer_4, + w_have_lineno_4, w_have_filename_4, w_have_filename_4) + goto = 9 + + if goto == 9: + v5 = space.is_true(w_18) + if v5 == True: + w_self_8, w_fname_2 = w_self_7, w_fname_1 + goto = 10 + else: + assert v5 == False + (w_self_9, w_fname_3, w_buffer_6, w_have_lineno_6, + w_19) = (w_self_7, w_fname_1, w_buffer_5, w_have_lineno_5, + w_have_filename_5) + goto = 11 + + if goto == 10: + w_20 = space.getattr(w_self_8, gs_msg) + w_21 = space.getattr(w_self_8, gs_lineno) + w_22 = space.newtuple([w_20, w_fname_2, w_21]) + w_23 = space.mod(gs__s___s__line__ld_, w_22) + w_5 = w_23 + goto = 15 + + if goto == 11: + v6 = space.is_true(w_19) + if v6 == True: + w_fname_4, w_24 = w_fname_3, w_self_9 + goto = 12 + else: + assert v6 == False + (w_self_10, w_buffer_7, w_25) = (w_self_9, w_buffer_6, + w_have_lineno_6) + goto = 13 + + if goto == 12: + w_26 = space.getattr(w_24, gs_msg) + w_27 = space.newtuple([w_26, w_fname_4]) + w_28 = space.mod(gs__s___s_, w_27) + w_5 = w_28 + goto = 15 + + if goto == 13: + v7 = space.is_true(w_25) + if v7 == True: + w_self_11 = w_self_10 + goto = 14 + else: + assert v7 == False + w_5 = w_buffer_7 + goto = 15 + + if goto == 14: + w_29 = space.getattr(w_self_11, gs_msg) + w_30 = space.getattr(w_self_11, gs_lineno) + w_31 = space.newtuple([w_29, w_30]) + w_32 = space.mod(gs__s__line__ld_, w_31) + w_5 = w_32 + goto = 15 + + if goto == 15: return w_5 fastf_SyntaxError___str__ = __str__ @@ -849,7 +1019,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__init__' -## firstlineno 296 +## firstlineno 276 ##SECTION## # global declaration # global object gs_code @@ -926,7 +1096,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__init__' -## firstlineno 331 +## firstlineno 311 ##SECTION## def __init__(space, __args__): funcname = "__init__" @@ -976,7 +1146,7 @@ ##SECTION## ## filename 'lib/_exceptions.py' ## function '__str__' -## firstlineno 342 +## firstlineno 322 ##SECTION## def __str__(space, __args__): funcname = "__str__" @@ -993,22 +1163,22 @@ if goto == 1: w_0 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_object, space.w_None) - w_1 = space.call_function(space.w_str, w_0) + w_1 = space.str(w_0) w_2 = space.add(gs_object_, w_1) w_3 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_end, space.w_None) - w_4 = space.call_function(space.w_str, w_3) + w_4 = space.str(w_3) w_5 = space.add(gs_end_, w_4) w_6 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_encoding, space.w_None) - w_7 = space.call_function(space.w_str, w_6) + w_7 = space.str(w_6) w_8 = space.add(gs_encoding_, w_7) w_9 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_args, space.w_None) - w_10 = space.call_function(space.w_str, w_9) + w_10 = space.str(w_9) w_11 = space.add(gs_args_, w_10) w_12 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_start, space.w_None) - w_13 = space.call_function(space.w_str, w_12) + w_13 = space.str(w_12) w_14 = space.add(gs_start_, w_13) w_15 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_reason, space.w_None) - w_16 = space.call_function(space.w_str, w_15) + w_16 = space.str(w_15) w_17 = space.add(gs_reason_, w_16) w_18 = space.newlist([w_2, w_5, w_8, w_11, w_14, w_17]) w_19 = space.call_function(gbltinmethod_join, w_18) @@ -1021,8 +1191,112 @@ fastf_UnicodeDecodeError___str__ = __str__ ##SECTION## - g48dict = space.newdict([]) - __doc__ = space.wrap(globals()['__doc__']) +## filename 'lib/_exceptions.py' +## function '__init__' +## firstlineno 371 +##SECTION## +# global declaration +# global object gi_5 + + def __init__(space, __args__): + funcname = "__init__" + signature = ['self'], 'args', None + defaults_w = [] + w_self, w_args = __args__.parse(funcname, signature, defaults_w) + return fastf_UnicodeEncodeError___init__(space, w_self, w_args) + + f_UnicodeEncodeError___init__ = __init__ + + def __init__(space, w_self, w_args): + goto = 1 # startblock + while True: + + if goto == 1: + w_0 = space.len(w_args) + w_1 = space.setattr(w_self, gs_args, w_args) + w_2 = space.eq(w_0, gi_5) + v0 = space.is_true(w_2) + if v0 == True: + w_self_1, w_args_1 = w_self, w_args + goto = 2 + else: + assert v0 == False + w_3 = space.w_None + goto = 3 + + if goto == 2: + w_4 = space.getitem(w_args_1, gi_0) + w_5 = space.setattr(w_self_1, gs_encoding, w_4) + w_6 = space.getitem(w_args_1, gi_1) + w_7 = space.setattr(w_self_1, gs_object, w_6) + w_8 = space.getitem(w_args_1, gi_2) + w_9 = space.setattr(w_self_1, gs_start, w_8) + w_10 = space.getitem(w_args_1, gi_3) + w_11 = space.setattr(w_self_1, gs_end, w_10) + w_12 = space.getitem(w_args_1, gi_4) + w_13 = space.setattr(w_self_1, gs_reason, w_12) + w_3 = space.w_None + goto = 3 + + if goto == 3: + return w_3 + + fastf_UnicodeEncodeError___init__ = __init__ + +##SECTION## +## filename 'lib/_exceptions.py' +## function '__str__' +## firstlineno 382 +##SECTION## +# global declarations +# global object gs_encoding +# global object gs_encoding_ + + def __str__(space, __args__): + funcname = "__str__" + signature = ['self'], None, None + defaults_w = [] + w_self, = __args__.parse(funcname, signature, defaults_w) + return fastf_UnicodeEncodeError___str__(space, w_self) + + f_UnicodeEncodeError___str__ = __str__ + + def __str__(space, w_self): + goto = 1 # startblock + while True: + + if goto == 1: + w_0 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_object, space.w_None) + w_1 = space.str(w_0) + w_2 = space.add(gs_object_, w_1) + w_3 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_end, space.w_None) + w_4 = space.str(w_3) + w_5 = space.add(gs_end_, w_4) + w_6 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_encoding, space.w_None) + w_7 = space.str(w_6) + w_8 = space.add(gs_encoding_, w_7) + w_9 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_args, space.w_None) + w_10 = space.str(w_9) + w_11 = space.add(gs_args_, w_10) + w_12 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_start, space.w_None) + w_13 = space.str(w_12) + w_14 = space.add(gs_start_, w_13) + w_15 = space.call_function((space.builtin.get(space.str_w(gs_getattr))), w_self, gs_reason, space.w_None) + w_16 = space.str(w_15) + w_17 = space.add(gs_reason_, w_16) + w_18 = space.newlist([w_2, w_5, w_8, w_11, w_14, w_17]) + w_19 = space.call_function(gbltinmethod_join, w_18) + w_20 = w_19 + goto = 2 + + if goto == 2: + return w_20 + + fastf_UnicodeEncodeError___str__ = __str__ + +##SECTION## + w__doc__ = space.wrap(__doc__) + g46dict = space.newdict([]) gs_MemoryError = space.wrap('MemoryError') _dic = space.newdict([]) gs___module__ = space.wrap('__module__') @@ -1050,7 +1324,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_MemoryError, _bases, _dic]) gcls_MemoryError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_MemoryError, gcls_MemoryError) + space.setitem(g46dict, gs_MemoryError, gcls_MemoryError) gs_ImportError = space.wrap('ImportError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1059,7 +1333,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_ImportError, _bases, _dic]) gcls_ImportError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_ImportError, gcls_ImportError) + space.setitem(g46dict, gs_ImportError, gcls_ImportError) gs_RuntimeError = space.wrap('RuntimeError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1068,7 +1342,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_RuntimeError, _bases, _dic]) gcls_RuntimeError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_RuntimeError, gcls_RuntimeError) + space.setitem(g46dict, gs_RuntimeError, gcls_RuntimeError) gs_UnicodeTranslateError = space.wrap('UnicodeTranslateError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1093,7 +1367,7 @@ _bases = space.newtuple([gcls_UnicodeError]) _args = space.newtuple([gs_UnicodeTranslateError, _bases, _dic]) gcls_UnicodeTranslateError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_UnicodeTranslateError, gcls_UnicodeTranslateError) + space.setitem(g46dict, gs_UnicodeTranslateError, gcls_UnicodeTranslateError) gs_KeyError = space.wrap('KeyError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1110,24 +1384,24 @@ _bases = space.newtuple([gcls_LookupError]) _args = space.newtuple([gs_KeyError, _bases, _dic]) gcls_KeyError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_KeyError, gcls_KeyError) - gs_TaskletExit = space.wrap('TaskletExit') + space.setitem(g46dict, gs_KeyError, gcls_KeyError) + gs_SyntaxWarning = space.wrap('SyntaxWarning') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) - _doc = space.wrap("""Request to exit from the interpreter.""") + _doc = space.wrap("""Base class for warning categories.""") space.setitem(_dic, gs___doc__, _doc) - gs_SystemExit = space.wrap('SystemExit') + gs_Warning = space.wrap('Warning') _bases = space.newtuple([gcls_Exception]) - _args = space.newtuple([gs_SystemExit, _bases, _dic]) - gcls_SystemExit = space.call(space.w_type, _args) + _args = space.newtuple([gs_Warning, _bases, _dic]) + gcls_Warning = space.call(space.w_type, _args) _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) - _doc = space.wrap("""Request to exit from a tasklet.""") + _doc = space.wrap("""Base class for warnings about dubious syntax.""") space.setitem(_dic, gs___doc__, _doc) - _bases = space.newtuple([gcls_SystemExit]) - _args = space.newtuple([gs_TaskletExit, _bases, _dic]) - gcls_TaskletExit = space.call(space.w_type, _args) - space.setitem(g48dict, gs_TaskletExit, gcls_TaskletExit) + _bases = space.newtuple([gcls_Warning]) + _args = space.newtuple([gs_SyntaxWarning, _bases, _dic]) + gcls_SyntaxWarning = space.call(space.w_type, _args) + space.setitem(g46dict, gs_SyntaxWarning, gcls_SyntaxWarning) gs_StopIteration = space.wrap('StopIteration') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1136,24 +1410,16 @@ _bases = space.newtuple([gcls_Exception]) _args = space.newtuple([gs_StopIteration, _bases, _dic]) gcls_StopIteration = space.call(space.w_type, _args) - space.setitem(g48dict, gs_StopIteration, gcls_StopIteration) + space.setitem(g46dict, gs_StopIteration, gcls_StopIteration) gs_PendingDeprecationWarning = space.wrap('PendingDeprecationWarning') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) - _doc = space.wrap("""Base class for warning categories.""") - space.setitem(_dic, gs___doc__, _doc) - gs_Warning = space.wrap('Warning') - _bases = space.newtuple([gcls_Exception]) - _args = space.newtuple([gs_Warning, _bases, _dic]) - gcls_Warning = space.call(space.w_type, _args) - _dic = space.newdict([]) - space.setitem(_dic, gs___module__, gs__exceptions) _doc = space.wrap("""Base class for warnings about features which will be deprecated in the future.""") space.setitem(_dic, gs___doc__, _doc) _bases = space.newtuple([gcls_Warning]) _args = space.newtuple([gs_PendingDeprecationWarning, _bases, _dic]) gcls_PendingDeprecationWarning = space.call(space.w_type, _args) - space.setitem(g48dict, gs_PendingDeprecationWarning, gcls_PendingDeprecationWarning) + space.setitem(g46dict, gs_PendingDeprecationWarning, gcls_PendingDeprecationWarning) gs_EnvironmentError = space.wrap('EnvironmentError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1162,8 +1428,8 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_EnvironmentError, _bases, _dic]) gcls_EnvironmentError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_EnvironmentError, gcls_EnvironmentError) - space.setitem(g48dict, gs_LookupError, gcls_LookupError) + space.setitem(g46dict, gs_EnvironmentError, gcls_EnvironmentError) + space.setitem(g46dict, gs_LookupError, gcls_LookupError) gs_OSError = space.wrap('OSError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1172,7 +1438,7 @@ _bases = space.newtuple([gcls_EnvironmentError]) _args = space.newtuple([gs_OSError, _bases, _dic]) gcls_OSError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_OSError, gcls_OSError) + space.setitem(g46dict, gs_OSError, gcls_OSError) gs_DeprecationWarning = space.wrap('DeprecationWarning') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1181,8 +1447,8 @@ _bases = space.newtuple([gcls_Warning]) _args = space.newtuple([gs_DeprecationWarning, _bases, _dic]) gcls_DeprecationWarning = space.call(space.w_type, _args) - space.setitem(g48dict, gs_DeprecationWarning, gcls_DeprecationWarning) - space.setitem(g48dict, gs_UnicodeError, gcls_UnicodeError) + space.setitem(g46dict, gs_DeprecationWarning, gcls_DeprecationWarning) + space.setitem(g46dict, gs_UnicodeError, gcls_UnicodeError) gs_FloatingPointError = space.wrap('FloatingPointError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1199,7 +1465,7 @@ _bases = space.newtuple([gcls_ArithmeticError]) _args = space.newtuple([gs_FloatingPointError, _bases, _dic]) gcls_FloatingPointError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_FloatingPointError, gcls_FloatingPointError) + space.setitem(g46dict, gs_FloatingPointError, gcls_FloatingPointError) gs_AttributeError = space.wrap('AttributeError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1208,7 +1474,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_AttributeError, _bases, _dic]) gcls_AttributeError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_AttributeError, gcls_AttributeError) + space.setitem(g46dict, gs_AttributeError, gcls_AttributeError) gs_IndentationError = space.wrap('IndentationError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1225,7 +1491,7 @@ _bases = space.newtuple([gcls_SyntaxError]) _args = space.newtuple([gs_IndentationError, _bases, _dic]) gcls_IndentationError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_IndentationError, gcls_IndentationError) + space.setitem(g46dict, gs_IndentationError, gcls_IndentationError) gs_NameError = space.wrap('NameError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1234,7 +1500,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_NameError, _bases, _dic]) gcls_NameError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_NameError, gcls_NameError) + space.setitem(g46dict, gs_NameError, gcls_NameError) gs_OverflowWarning = space.wrap('OverflowWarning') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1243,7 +1509,7 @@ _bases = space.newtuple([gcls_Warning]) _args = space.newtuple([gs_OverflowWarning, _bases, _dic]) gcls_OverflowWarning = space.call(space.w_type, _args) - space.setitem(g48dict, gs_OverflowWarning, gcls_OverflowWarning) + space.setitem(g46dict, gs_OverflowWarning, gcls_OverflowWarning) gs_IOError = space.wrap('IOError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1252,8 +1518,8 @@ _bases = space.newtuple([gcls_EnvironmentError]) _args = space.newtuple([gs_IOError, _bases, _dic]) gcls_IOError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_IOError, gcls_IOError) - space.setitem(g48dict, gs_ValueError, gcls_ValueError) + space.setitem(g46dict, gs_IOError, gcls_IOError) + space.setitem(g46dict, gs_ValueError, gcls_ValueError) gs_FutureWarning = space.wrap('FutureWarning') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1262,18 +1528,17 @@ _bases = space.newtuple([gcls_Warning]) _args = space.newtuple([gs_FutureWarning, _bases, _dic]) gcls_FutureWarning = space.call(space.w_type, _args) - space.setitem(g48dict, gs_FutureWarning, gcls_FutureWarning) - gs_ZeroDivisionError = space.wrap('ZeroDivisionError') + space.setitem(g46dict, gs_FutureWarning, gcls_FutureWarning) + gs_SystemExit = space.wrap('SystemExit') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) - _doc = space.wrap("""Second argument to a division or modulo operation was zero.""") + _doc = space.wrap("""Request to exit from the interpreter.""") space.setitem(_dic, gs___doc__, _doc) - _bases = space.newtuple([gcls_ArithmeticError]) - _args = space.newtuple([gs_ZeroDivisionError, _bases, _dic]) - gcls_ZeroDivisionError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_ZeroDivisionError, gcls_ZeroDivisionError) - space.setitem(g48dict, gs_SystemExit, gcls_SystemExit) - space.setitem(g48dict, gs_Exception, gcls_Exception) + _bases = space.newtuple([gcls_Exception]) + _args = space.newtuple([gs_SystemExit, _bases, _dic]) + gcls_SystemExit = space.call(space.w_type, _args) + space.setitem(g46dict, gs_SystemExit, gcls_SystemExit) + space.setitem(g46dict, gs_Exception, gcls_Exception) gs_EOFError = space.wrap('EOFError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1282,11 +1547,12 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_EOFError, _bases, _dic]) gcls_EOFError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_EOFError, gcls_EOFError) - space.setitem(g48dict, gs_StandardError, gcls_StandardError) + space.setitem(g46dict, gs_EOFError, gcls_EOFError) + space.setitem(g46dict, gs_StandardError, gcls_StandardError) gs___file__ = space.wrap('__file__') - gs__home_arigo_svn_pypy_dist_pypy_l = space.wrap('/home/arigo/svn/pypy/dist/pypy/lib/_exceptions.py') - space.setitem(g48dict, gs___file__, gs__home_arigo_svn_pypy_dist_pypy_l) + gs__u_pedronis_PyPy_dist_pypy_lib__ = space.wrap( +"""/u/pedronis/PyPy/dist/pypy/lib/_exceptions.py""") + space.setitem(g46dict, gs___file__, gs__u_pedronis_PyPy_dist_pypy_lib__) gs_TabError = space.wrap('TabError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1295,8 +1561,8 @@ _bases = space.newtuple([gcls_IndentationError]) _args = space.newtuple([gs_TabError, _bases, _dic]) gcls_TabError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_TabError, gcls_TabError) - space.setitem(g48dict, gs_SyntaxError, gcls_SyntaxError) + space.setitem(g46dict, gs_TabError, gcls_TabError) + space.setitem(g46dict, gs_SyntaxError, gcls_SyntaxError) gs_UnicodeEncodeError = space.wrap('UnicodeEncodeError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1305,7 +1571,7 @@ _bases = space.newtuple([gcls_UnicodeError]) _args = space.newtuple([gs_UnicodeEncodeError, _bases, _dic]) gcls_UnicodeEncodeError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_UnicodeEncodeError, gcls_UnicodeEncodeError) + space.setitem(g46dict, gs_UnicodeEncodeError, gcls_UnicodeEncodeError) gs_UnboundLocalError = space.wrap('UnboundLocalError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1314,9 +1580,9 @@ _bases = space.newtuple([gcls_NameError]) _args = space.newtuple([gs_UnboundLocalError, _bases, _dic]) gcls_UnboundLocalError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_UnboundLocalError, gcls_UnboundLocalError) + space.setitem(g46dict, gs_UnboundLocalError, gcls_UnboundLocalError) gs___name__ = space.wrap('__name__') - space.setitem(g48dict, gs___name__, gs__exceptions) + space.setitem(g46dict, gs___name__, gs__exceptions) gs_ReferenceError = space.wrap('ReferenceError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1325,7 +1591,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_ReferenceError, _bases, _dic]) gcls_ReferenceError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_ReferenceError, gcls_ReferenceError) + space.setitem(g46dict, gs_ReferenceError, gcls_ReferenceError) gs_AssertionError = space.wrap('AssertionError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1334,7 +1600,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_AssertionError, _bases, _dic]) gcls_AssertionError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_AssertionError, gcls_AssertionError) + space.setitem(g46dict, gs_AssertionError, gcls_AssertionError) gs_UnicodeDecodeError = space.wrap('UnicodeDecodeError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1343,7 +1609,7 @@ _bases = space.newtuple([gcls_UnicodeError]) _args = space.newtuple([gs_UnicodeDecodeError, _bases, _dic]) gcls_UnicodeDecodeError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_UnicodeDecodeError, gcls_UnicodeDecodeError) + space.setitem(g46dict, gs_UnicodeDecodeError, gcls_UnicodeDecodeError) gs_TypeError = space.wrap('TypeError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1352,7 +1618,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_TypeError, _bases, _dic]) gcls_TypeError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_TypeError, gcls_TypeError) + space.setitem(g46dict, gs_TypeError, gcls_TypeError) gs_IndexError = space.wrap('IndexError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1361,7 +1627,7 @@ _bases = space.newtuple([gcls_LookupError]) _args = space.newtuple([gs_IndexError, _bases, _dic]) gcls_IndexError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_IndexError, gcls_IndexError) + space.setitem(g46dict, gs_IndexError, gcls_IndexError) gs_RuntimeWarning = space.wrap('RuntimeWarning') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1370,7 +1636,7 @@ _bases = space.newtuple([gcls_Warning]) _args = space.newtuple([gs_RuntimeWarning, _bases, _dic]) gcls_RuntimeWarning = space.call(space.w_type, _args) - space.setitem(g48dict, gs_RuntimeWarning, gcls_RuntimeWarning) + space.setitem(g46dict, gs_RuntimeWarning, gcls_RuntimeWarning) gs_KeyboardInterrupt = space.wrap('KeyboardInterrupt') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1379,7 +1645,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_KeyboardInterrupt, _bases, _dic]) gcls_KeyboardInterrupt = space.call(space.w_type, _args) - space.setitem(g48dict, gs_KeyboardInterrupt, gcls_KeyboardInterrupt) + space.setitem(g46dict, gs_KeyboardInterrupt, gcls_KeyboardInterrupt) gs_UserWarning = space.wrap('UserWarning') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1388,19 +1654,19 @@ _bases = space.newtuple([gcls_Warning]) _args = space.newtuple([gs_UserWarning, _bases, _dic]) gcls_UserWarning = space.call(space.w_type, _args) - space.setitem(g48dict, gs_UserWarning, gcls_UserWarning) - gs_SyntaxWarning = space.wrap('SyntaxWarning') + space.setitem(g46dict, gs_UserWarning, gcls_UserWarning) + gs_ZeroDivisionError = space.wrap('ZeroDivisionError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) - _doc = space.wrap("""Base class for warnings about dubious syntax.""") + _doc = space.wrap("""Second argument to a division or modulo operation was zero.""") space.setitem(_dic, gs___doc__, _doc) - _bases = space.newtuple([gcls_Warning]) - _args = space.newtuple([gs_SyntaxWarning, _bases, _dic]) - gcls_SyntaxWarning = space.call(space.w_type, _args) - space.setitem(g48dict, gs_SyntaxWarning, gcls_SyntaxWarning) - space.setitem(g48dict, gs___doc__, __doc__) - space.setitem(g48dict, gs_ArithmeticError, gcls_ArithmeticError) - space.setitem(g48dict, gs_Warning, gcls_Warning) + _bases = space.newtuple([gcls_ArithmeticError]) + _args = space.newtuple([gs_ZeroDivisionError, _bases, _dic]) + gcls_ZeroDivisionError = space.call(space.w_type, _args) + space.setitem(g46dict, gs_ZeroDivisionError, gcls_ZeroDivisionError) + space.setitem(g46dict, gs___doc__, w__doc__) + space.setitem(g46dict, gs_ArithmeticError, gcls_ArithmeticError) + space.setitem(g46dict, gs_Warning, gcls_Warning) gs_NotImplementedError = space.wrap('NotImplementedError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1409,7 +1675,7 @@ _bases = space.newtuple([gcls_RuntimeError]) _args = space.newtuple([gs_NotImplementedError, _bases, _dic]) gcls_NotImplementedError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_NotImplementedError, gcls_NotImplementedError) + space.setitem(g46dict, gs_NotImplementedError, gcls_NotImplementedError) gs_SystemError = space.wrap('SystemError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1421,7 +1687,7 @@ _bases = space.newtuple([gcls_StandardError]) _args = space.newtuple([gs_SystemError, _bases, _dic]) gcls_SystemError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_SystemError, gcls_SystemError) + space.setitem(g46dict, gs_SystemError, gcls_SystemError) gs_OverflowError = space.wrap('OverflowError') _dic = space.newdict([]) space.setitem(_dic, gs___module__, gs__exceptions) @@ -1430,16 +1696,7 @@ _bases = space.newtuple([gcls_ArithmeticError]) _args = space.newtuple([gs_OverflowError, _bases, _dic]) gcls_OverflowError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_OverflowError, gcls_OverflowError) - gs_WindowsError = space.wrap('WindowsError') - _dic = space.newdict([]) - space.setitem(_dic, gs___module__, gs__exceptions) - _doc = space.wrap("""MS-Windows OS system call failed.""") - space.setitem(_dic, gs___doc__, _doc) - _bases = space.newtuple([gcls_OSError]) - _args = space.newtuple([gs_WindowsError, _bases, _dic]) - gcls_WindowsError = space.call(space.w_type, _args) - space.setitem(g48dict, gs_WindowsError, gcls_WindowsError) + space.setitem(g46dict, gs_OverflowError, gcls_OverflowError) gs___init__ = space.wrap('__init__') from pypy.interpreter import gateway gfunc_UnicodeDecodeError___init__ = space.wrap(gateway.interp2app(f_UnicodeDecodeError___init__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) @@ -1451,6 +1708,8 @@ space.setattr(gcls_UnicodeEncodeError, gs___init__, gfunc_UnicodeEncodeError___init__) gfunc_UnicodeEncodeError___str__ = space.wrap(gateway.interp2app(f_UnicodeEncodeError___str__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_UnicodeEncodeError, gs___str__, gfunc_UnicodeEncodeError___str__) + gfunc_SystemExit___init__ = space.wrap(gateway.interp2app(f_SystemExit___init__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) + space.setattr(gcls_SystemExit, gs___init__, gfunc_SystemExit___init__) gfunc_SyntaxError___init__ = space.wrap(gateway.interp2app(f_SyntaxError___init__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_SyntaxError, gs___init__, gfunc_SyntaxError___init__) gfunc_SyntaxError___str__ = space.wrap(gateway.interp2app(f_SyntaxError___str__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) @@ -1472,8 +1731,6 @@ space.setattr(gcls_EnvironmentError, gs___init__, gfunc_EnvironmentError___init__) gfunc_EnvironmentError___str__ = space.wrap(gateway.interp2app(f_EnvironmentError___str__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_EnvironmentError, gs___str__, gfunc_EnvironmentError___str__) - gfunc_SystemExit___init__ = space.wrap(gateway.interp2app(f_SystemExit___init__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) - space.setattr(gcls_SystemExit, gs___init__, gfunc_SystemExit___init__) gfunc_KeyError___str__ = space.wrap(gateway.interp2app(f_KeyError___str__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_KeyError, gs___str__, gfunc_KeyError___str__) gfunc_UnicodeTranslateError___init__ = space.wrap(gateway.interp2app(f_UnicodeTranslateError___init__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) @@ -1488,8 +1745,8 @@ gfunc_Exception___str__ = space.wrap(gateway.interp2app(f_Exception___str__, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) space.setattr(gcls_Exception, gs___str__, gfunc_Exception___str__) gs_args = space.wrap('args') - gi_0 = space.newint(0) - gi_1 = space.newint(1) + gi_0 = space.wrap(0) + gi_1 = space.wrap(1) gs_getattr = space.wrap('getattr') gs_start = space.wrap('start') gs_start_ = space.wrap('start=') @@ -1503,17 +1760,27 @@ gs__ = space.wrap(' ') gs_join = space.wrap('join') gbltinmethod_join = space.getattr(gs__, gs_join) - gi_4 = space.newint(4) - gi_2 = space.newint(2) - gi_3 = space.newint(3) - gs_code = space.wrap('code') + gi_4 = space.wrap(4) + gi_2 = space.wrap(2) + gi_3 = space.wrap(3) gs_errno = space.wrap('errno') gs_errno_ = space.wrap('errno=') gs_strerror = space.wrap('strerror') gs_strerror_ = space.wrap('strerror=') gs_filename_ = space.wrap('filename=') + gfunc_basename = space.wrap(gateway.interp2app(f_basename, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) + gs____ = space.wrap('???') + gs__s___s__line__ld_ = space.wrap('%s (%s, line %ld)') + gs__s___s_ = space.wrap('%s (%s)') + gs__s__line__ld_ = space.wrap('%s (line %ld)') + gfunc_split = space.wrap(gateway.interp2app(f_split, unwrap_spec=[gateway.ObjSpace, gateway.Arguments])) + gs_rfind = space.wrap('rfind') + gs___1 = space.wrap('/') + gs_rstrip = space.wrap('rstrip') + from pypy.interpreter.error import OperationError as gOperationError + gs_code = space.wrap('code') gs_encoding = space.wrap('encoding') gs_encoding_ = space.wrap('encoding=') - gi_5 = space.newint(5) - return g48dict + gi_5 = space.wrap(5) + return g46dict Modified: pypy/dist/pypy/tool/_enum_exceptions.py ============================================================================== --- pypy/dist/pypy/tool/_enum_exceptions.py (original) +++ pypy/dist/pypy/tool/_enum_exceptions.py Fri Apr 29 19:58:42 2005 @@ -345,6 +345,7 @@ if type(self.msg) is not str: return self.msg + buffer = self.msg have_filename = type(self.filename) is str have_lineno = type(self.lineno) is int if have_filename or have_lineno: From arigo at codespeak.net Fri Apr 29 23:04:42 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 29 Apr 2005 23:04:42 +0200 (CEST) Subject: [pypy-svn] r11635 - pypy/dist/pypy/interpreter Message-ID: <20050429210442.2831F27BA7@code1.codespeak.net> Author: arigo Date: Fri Apr 29 23:04:41 2005 New Revision: 11635 Modified: pypy/dist/pypy/interpreter/gateway.py Log: Cosmetics. Modified: pypy/dist/pypy/interpreter/gateway.py ============================================================================== --- pypy/dist/pypy/interpreter/gateway.py (original) +++ pypy/dist/pypy/interpreter/gateway.py Fri Apr 29 23:04:41 2005 @@ -253,7 +253,7 @@ raise OperationError(self.space.w_MemoryError, self.space.w_None) except RuntimeError, e: raise OperationError(self.space.w_RuntimeError, - self.space.wrap("internal error" + str(e))) + self.space.wrap("internal error: " + str(e))) if w_result is None: w_result = self.space.w_None return w_result From arigo at codespeak.net Fri Apr 29 23:06:08 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 29 Apr 2005 23:06:08 +0200 (CEST) Subject: [pypy-svn] r11636 - pypy/dist/pypy/lib/test2 Message-ID: <20050429210608.8DC7F27BAC@code1.codespeak.net> Author: arigo Date: Fri Apr 29 23:06:08 2005 New Revision: 11636 Modified: pypy/dist/pypy/lib/test2/test_class.py Log: - remove the hacks at the beginning of this test file, no longer needed. - PyPy follows 2.4 and Jython's strict type-checking of what __int__&co return (of course: Samuele wrote that part in PyPy :-) Modified: pypy/dist/pypy/lib/test2/test_class.py ============================================================================== --- pypy/dist/pypy/lib/test2/test_class.py (original) +++ pypy/dist/pypy/lib/test2/test_class.py Fri Apr 29 23:06:08 2005 @@ -2,25 +2,6 @@ from test.test_support import TestFailed -# HACK BEGIN - -# After this implementation is complete and -# incorporated into the core after translation, -# this test file should really vanish! - -import pypy, os, new -prefix = os.path.dirname(pypy.__file__) -libdir = os.path.join(prefix, "lib") -fname = "_classobj.py" -fpath = os.path.join(libdir, fname) -mod = new.module("_classobj") -mod.__file__ = fpath -execfile(fpath, mod.__dict__) - -__metaclass__ = mod.classobj - -# HACK END - testmeths = [ # Binary operations @@ -214,7 +195,8 @@ -testme +testme abs(testme) -if sys.platform[:4] != 'java': +# PyPy enforces the same rule as Jython and CPython 2.4 +if 0: # sys.platform[:4] != 'java': int(testme) long(testme) float(testme) From arigo at codespeak.net Fri Apr 29 23:06:57 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 29 Apr 2005 23:06:57 +0200 (CEST) Subject: [pypy-svn] r11637 - pypy/dist/pypy/lib Message-ID: <20050429210657.9C75727BA7@code1.codespeak.net> Author: arigo Date: Fri Apr 29 23:06:57 2005 New Revision: 11637 Added: pypy/dist/pypy/lib/_re_bak.py - copied unchanged from r11618, pypy/dist/pypy/lib/re.py Removed: pypy/dist/pypy/lib/re.py Log: Remove (but keep in a corner) our re.py, which is basically the same as the stdlib's now, but with a missing __all__ attribute. (Makes test___all__.py fail) Deleted: /pypy/dist/pypy/lib/re.py ============================================================================== --- /pypy/dist/pypy/lib/re.py Fri Apr 29 23:06:57 2005 +++ (empty file) @@ -1,43 +0,0 @@ -from sre import * - -''' -# from dumbre import Pattern -# from plexre import Pattern -# from sre_adapt import Pattern - - -# Constants, from CPython -I = IGNORECASE = 2 -L = LOCALE = 4 -M = MULTILINE = 8 -S = DOTALL = 16 -U = UNICODE = 32 -X = VERBOSE = 64 - - -# From CPython -def escape(pattern): - "Escape all non-alphanumeric characters in pattern." - s = list(pattern) - for i in range(len(pattern)): - c = pattern[i] - if not ("a" <= c <= "z" or "A" <= c <= "Z" or "0" <= c <= "9"): - if c == "\000": - s[i] = "\\000" - else: - s[i] = "\\" + c - return ''.join(s) - - -_cache = {} - -def compile(pattern, flags=0): - if (pattern, flags) in _cache: - return _cache[pattern, flags] - compiled = Pattern(pattern, flags) - _cache[pattern, flags] = compiled - return compiled - -def match(pattern, string, flags=0): - return compile(pattern, flags).match(string) -''' From arigo at codespeak.net Fri Apr 29 23:09:45 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 29 Apr 2005 23:09:45 +0200 (CEST) Subject: [pypy-svn] r11638 - in pypy/dist/pypy/objspace: . test Message-ID: <20050429210945.E9BF027BAC@code1.codespeak.net> Author: arigo Date: Fri Apr 29 23:09:45 2005 New Revision: 11638 Modified: pypy/dist/pypy/objspace/descroperation.py pypy/dist/pypy/objspace/test/test_descroperation.py Log: - Strict type-checking of what __nonzero__() returned. - Added a real space.nonzero() method, which was supposed to be there according to baseobjspace's MethodTable, but didn't actually work completely (it didn't try __len__() for example), unlike is_true(). - An XXX: do we want to type- and value-check the result of __len__() ? Modified: pypy/dist/pypy/objspace/descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/descroperation.py (original) +++ pypy/dist/pypy/objspace/descroperation.py Fri Apr 29 23:09:45 2005 @@ -154,14 +154,28 @@ if w_obj == space.w_None: return False w_descr = space.lookup(w_obj, '__nonzero__') - if w_descr is not None: - w_res = space.get_and_call_function(w_descr, w_obj) - return space.is_true(w_res) - w_descr = space.lookup(w_obj, '__len__') - if w_descr is not None: - w_res = space.get_and_call_function(w_descr, w_obj) + if w_descr is None: + w_descr = space.lookup(w_obj, '__len__') + if w_descr is None: + return True + w_res = space.get_and_call_function(w_descr, w_obj) + w_restype = space.type(w_res) + if (space.is_w(w_restype, space.w_bool) or + space.is_w(w_restype, space.w_int)): return space.is_true(w_res) - return True + else: + raise OperationError(space.w_TypeError, + space.wrap('__nonzero__ should return ' + 'bool or int')) + + def nonzero(self, w_obj): + if self.is_true(w_obj): + return self.w_True + else: + return self.w_False + +## def len(self, w_obj): +## XXX needs to check that the result is an int (or long?) >= 0 def iter(space, w_obj): w_descr = space.lookup(w_obj, '__iter__') Modified: pypy/dist/pypy/objspace/test/test_descroperation.py ============================================================================== --- pypy/dist/pypy/objspace/test/test_descroperation.py (original) +++ pypy/dist/pypy/objspace/test/test_descroperation.py Fri Apr 29 23:09:45 2005 @@ -1,5 +1,19 @@ +class Test_DescrOperation: + + def test_nonzero(self): + space = self.space + assert space.nonzero(space.w_True) is space.w_True + assert space.nonzero(space.w_False) is space.w_False + assert space.nonzero(space.wrap(42)) is space.w_True + assert space.nonzero(space.wrap(0)) is space.w_False + l = space.newlist([]) + assert space.nonzero(l) is space.w_False + space.call_method(l, 'append', space.w_False) + assert space.nonzero(l) is space.w_True + + class AppTest_Descroperation: def test_getslice(self): @@ -77,3 +91,11 @@ x = 2 x **= 5 assert x == 32 + + def test_typechecks(self): + class myint(int): + pass + class X(object): + def __nonzero__(self): + return myint(1) + raises(TypeError, "not X()") From ale at codespeak.net Sat Apr 30 00:00:11 2005 From: ale at codespeak.net (ale at codespeak.net) Date: Sat, 30 Apr 2005 00:00:11 +0200 (CEST) Subject: [pypy-svn] r11639 - in pypy/dist/pypy/lib: . test2 Message-ID: <20050429220011.A8BBA27BB7@code1.codespeak.net> Author: ale Date: Sat Apr 30 00:00:11 2005 New Revision: 11639 Added: pypy/dist/pypy/lib/_codecs.py pypy/dist/pypy/lib/codecs.py pypy/dist/pypy/lib/test2/test_codeccallbacks.py pypy/dist/pypy/lib/unicodecodec.py Log: A preliminary checkin of the python translation of the _codecsmodule (and friends). The module _codecs exposes the same methods as _codecs.pyd in CPython. As in CPython it is a wrapper for the actual codecs which I have put in unicodecodec.py ( for now). Not all codecs are implemented yet, and not all test passes. I had to change the test2/test_codeccallbacks.py in order to test the codecs without involving unicode strings. There some serious problems to be solved : 1) how to make a global registry from appspace. I have used module variables (in _codecs.py) for now. Ther may be better ways. 2) UnicodeError,UnicodeEncodeError,UnicodeDecodeError exceptions ar faked ? doesnt work as in Cpython anyway. 3) In translating the design from _codecsmodule.c I have discoered a sideeffect. The Encodings package injects the functions exposed in _codecs.py into a class. This converts the function into an unbound method. In a comment in the Encodings package it is mentioned that this doesnt happen for c functions. This is work in progress Added: pypy/dist/pypy/lib/_codecs.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/lib/_codecs.py Sat Apr 30 00:00:11 2005 @@ -0,0 +1,351 @@ +""" + + _codecs -- Provides access to the codec registry and the builtin + codecs. + + This module should never be imported directly. The standard library + module "codecs" wraps this builtin module for use within Python. + + The codec registry is accessible via: + + register(search_function) -> None + + lookup(encoding) -> (encoder, decoder, stream_reader, stream_writer) + + The builtin Unicode codecs use the following interface: + + _encode(Unicode_object[,errors='strict']) -> + (string object, bytes consumed) + + _decode(char_buffer_obj[,errors='strict']) -> + (Unicode object, bytes consumed) + + _encode() interfaces also accept non-Unicode object as + input. The objects are then converted to Unicode using + PyUnicode_FromObject() prior to applying the conversion. + + These s are available: utf_8, unicode_escape, + raw_unicode_escape, unicode_internal, latin_1, ascii (7-bit), + mbcs (on win32). + + +Written by Marc-Andre Lemburg (mal at lemburg.com). + +Copyright (c) Corporation for National Research Initiatives. + +""" +from pypy.lib.unicodecodec import * + +#/* --- Registry ----------------------------------------------------------- */ +codec_search_path = [] +codec_search_cache = {} +codec_error_registry = {} + +def codec_register( search_function ): + """register(search_function) + + Register a codec search function. Search functions are expected to take + one argument, the encoding name in all lower case letters, and return + a tuple of functions (encoder, decoder, stream_reader, stream_writer). + """ + + if callable(search_function): + codec_search_path.append(search_function) + +register = codec_register + +def codec_lookup(encoding): + """lookup(encoding) -> (encoder, decoder, stream_reader, stream_writer) + Looks up a codec tuple in the Python codec registry and returns + a tuple of functions. + """ + + result = codec_search_cache.get(encoding,None) + if not result: + for search in codec_search_path: + result=search(encoding) + if result : break + return result + +lookup = codec_lookup + +def lookup_error(errors): + """lookup_error(errors) -> handler + + Return the error handler for the specified error handling name + or raise a LookupError, if no handler exists under this name. + """ + try: + err_handler = codec_error_registry[errors] + except KeyError: + raise LookupError("unknown error handler name %s"%errors) + return err_handler + +def register_error(errors, handler): + """register_error(errors, handler) + + Register the specified error handler under the name + errors. handler must be a callable object, that + will be called with an exception instance containing + information about the location of the encoding/decoding + error and must return a (replacement, new position) tuple. + """ + if callable(handler): + codec_error_registry[errors] = handler + else: + raise TypeError("handler must be callable") + +def encode(v, encoding='defaultencoding',errors='strict'): + """encode(obj, [encoding[,errors]]) -> object + + Encodes obj using the codec registered for encoding. encoding defaults + to the default encoding. errors may be given to set a different error + handling scheme. Default is 'strict' meaning that encoding errors raise + a ValueError. Other possible values are 'ignore', 'replace' and + 'xmlcharrefreplace' as well as any other name registered with + codecs.register_error that can handle ValueErrors. + """ + + encoder = lookup(encoding)[0] + if encoder : + res = encoder(v,errors) + return res[0] + +def decode(obj,encoding='defaultencoding',errors='strict'): + """decode(obj, [encoding[,errors]]) -> object + + Decodes obj using the codec registered for encoding. encoding defaults + to the default encoding. errors may be given to set a different error + handling scheme. Default is 'strict' meaning that encoding errors raise + a ValueError. Other possible values are 'ignore' and 'replace' + as well as any other name registerd with codecs.register_error that is + able to handle ValueErrors. + """ + decoder = lookup(encoding)[1] + if decoder: + res = decoder(obj,errors) + return res[0] + +def latin_1_encode(inst,obj,errors='strict'): + """None + """ + res = PyUnicode_EncodeLatin1(obj,len(obj),errors) + return res, len(res) +# XXX MBCS codec might involve ctypes ? +def mbcs_decode(): + """None + """ + pass + +def readbuffer_encode(inst,obj,errors='strict'): + """None + """ + res = str(obj) + return res,len(res) + +def escape_encode(inst,obj,errors='strict'): + """None + """ + s = repr(obj) + v = s[1:-1] + return v,len(v) +# XXX +def utf_8_decode(inst,data,errors='strict'): + """None + """ + pass +# XXX +def raw_unicode_escape_decode(inst,data,errors='strict'): + """None + """ + pass + +def utf_7_decode(inst,data,errors='strict'): + """None + """ + unistr = PyUnicode_DecodeUTF7(data,errors='strict') + return unistr,len(unistr) +# XXX +def unicode_escape_encode(inst,obj,errors='strict'): + """None + """ + pass +# XXX +def latin_1_decode(inst,data,errors='strict'): + """None + """ + pass +# XXX +def utf_16_decode(inst,data,errors='strict'): + """None + """ + pass +# XXX +def unicode_escape_decode(inst,data,errors='strict'): + """None + """ + pass + +def ascii_decode(inst,data,errors='strict'): + """None + """ + res = PyUnicode_DecodeASCII(data,len(data),errors) + return res,len(res) + +def charmap_encode(obj,errors='strict',mapping='latin-1'): + """None + """ + res = PyUnicode_EncodeCharmap(obj,len(obj),mapping,errors) + return res,len(res) + +def unicode_internal_encode(inst,obj,errors='strict'): + """None + """ + if type(obj) == unicode: + return obj, len(obj) + else: + return PyUnicode_FromUnicode(obj,size),size +# XXX +def utf_16_ex_decode(inst,data,errors='strict'): + """None + """ + pass +# XXX Check if this is right +def escape_decode(data,errors='strict'): + """None + """ + return data,len(data) + +def charbuffer_encode(inst,obj,errors='strict'): + """None + """ + res = str(obj) + return res,len(res) +# XXX +def charmap_decode(inst,data,errors='strict'): + """None + """ + pass + +def utf_7_encode(inst,obj,errors='strict'): + """None + """ + obj = PyUnicode_FromObject(obj) + return (PyUnicode_EncodeUTF7(PyUnicode_AS_UNICODE(obj), + PyUnicode_GET_SIZE(obj), + 0, + 0, + errors), + PyUnicode_GET_SIZE(obj)) + +def mbcs_encode(inst,obj,errors='strict'): + """None + """ + return (PyUnicode_EncodeMBCS( + PyUnicode_AS_UNICODE(obj), + PyUnicode_GET_SIZE(obj), + errors), + PyUnicode_GET_SIZE(obj)); + + +def ascii_encode(inst,obj,errors='strict'): + """None + """ + return (PyUnicode_EncodeASCII( + PyUnicode_AS_UNICODE(obj), + PyUnicode_GET_SIZE(obj), + errors), + PyUnicode_GET_SIZE(obj)) + +def utf_16_encode(inst,obj,errors='strict'): + """None + """ + u = PyUnicode_EncodeUTF16(obj,len(obj),errors) + return u,len(u) + +def raw_unicode_escape_encode(inst,obj,errors='strict'): + """None + """ + res = PyUnicode_EncodeRawUnicodeEscape(obj,len(obj)) + return res,len(res) +# XXX +def utf_8_encode(inst,obj,errors='strict'): + """None + """ + pass +# XXX +def utf_16_le_encode(inst,obj,errors='strict'): + """None + """ + pass +# XXX +def utf_16_be_encode(inst,obj,errors='strict'): + """None + """ + pass + +def unicode_internal_decode(inst,unistr,errors='strict'): + """None + """ + if type(unistr) == unicode: + return unistr,len(unistr) + else: + return unicode(unistr),len(unistr) +# XXX +def utf_16_le_decode(inst,data,errors='strict'): + """None + """ + pass +# XXX +def utf_16_be_decode(inst,data,errors='strict'): + """None + """ + pass + +def strict_errors(exc): + if isinstance(exc,Exception): + raise exc + else: + raise TypeError("codec must pass exception instance") + +def ignore_errors(exc): + if type(exc) in [UnicodeEncodeError,UnicodeDecodeError,UnicodeTranslateError]: + return u'',exc.end + else: + raise TypeError("don't know how to handle %.400s in error callback"%type(exc)) +# XXX +def replace_errors(exc): + if isinstance(exc,Exception): + raise exc + else: + raise TypeError("codec must pass exception instance") +# XXX +def xmlcharrefreplace_errors(exc): + if isinstance(exc,Exception): + raise exc + else: + raise TypeError("codec must pass exception instance") + +def backslashreplace_errors(exc): + if isinstance(exc,UnicodeEncodeError): + p=['\\'] + for c in exc.object[exc.start:exc.end]: + oc = ord(c) + if (oc >= 0x00010000): + p.append('U') + p.append("%.8x" % ord(c)) + elif (oc >= 0x100): + p.append('u') + p.append("%.4x" % ord(c)) + else: + p.append('x') + p.append("%.2x" % ord(c)) + return u''.join(p),exc.end + else: + raise TypeError("don't know how to handle %.400s in error callback"%type(exc)) + +register_error("strict",strict_errors) +register_error("ignore",ignore_errors) +register_error("replace",replace_errors) +register_error("xmlcharrefreplace",xmlcharrefreplace_errors) +register_error("backslashreplace",backslashreplace_errors) \ No newline at end of file Added: pypy/dist/pypy/lib/codecs.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/lib/codecs.py Sat Apr 30 00:00:11 2005 @@ -0,0 +1,750 @@ +""" codecs -- Python Codec Registry, API and helpers. + + +Written by Marc-Andre Lemburg (mal at lemburg.com). + +(c) Copyright CNRI, All Rights Reserved. NO WARRANTY. + +"""#" + +import __builtin__, sys + +### Registry and builtin stateless codec functions + +try: + import sys + if sys.path[0] != r'd:\projects\pypy_co': + sys.path.insert(0,r'd:\projects\pypy_co') + from pypy.lib import _codecs + reload(_codecs) + del _codecs + from pypy.lib._codecs import * +except ImportError, why: + raise SystemError,\ + 'Failed to load the builtin codecs: %s' % why + +__all__ = ["register", "lookup", "open", "EncodedFile", "BOM", "BOM_BE", + "BOM_LE", "BOM32_BE", "BOM32_LE", "BOM64_BE", "BOM64_LE", + "BOM_UTF8", "BOM_UTF16", "BOM_UTF16_LE", "BOM_UTF16_BE", + "BOM_UTF32", "BOM_UTF32_LE", "BOM_UTF32_BE", + "strict_errors", "ignore_errors", "replace_errors", + "xmlcharrefreplace_errors", + "register_error", "lookup_error"] + +### Constants + +# +# Byte Order Mark (BOM = ZERO WIDTH NO-BREAK SPACE = U+FEFF) +# and its possible byte string values +# for UTF8/UTF16/UTF32 output and little/big endian machines +# + +# UTF-8 +BOM_UTF8 = '\xef\xbb\xbf' + +# UTF-16, little endian +BOM_LE = BOM_UTF16_LE = '\xff\xfe' + +# UTF-16, big endian +BOM_BE = BOM_UTF16_BE = '\xfe\xff' + +# UTF-32, little endian +BOM_UTF32_LE = '\xff\xfe\x00\x00' + +# UTF-32, big endian +BOM_UTF32_BE = '\x00\x00\xfe\xff' + +if sys.byteorder == 'little': + + # UTF-16, native endianness + BOM = BOM_UTF16 = BOM_UTF16_LE + + # UTF-32, native endianness + BOM_UTF32 = BOM_UTF32_LE + +else: + + # UTF-16, native endianness + BOM = BOM_UTF16 = BOM_UTF16_BE + + # UTF-32, native endianness + BOM_UTF32 = BOM_UTF32_BE + +# Old broken names (don't use in new code) +BOM32_LE = BOM_UTF16_LE +BOM32_BE = BOM_UTF16_BE +BOM64_LE = BOM_UTF32_LE +BOM64_BE = BOM_UTF32_BE + + +### Codec base classes (defining the API) + +class Codec: + + """ Defines the interface for stateless encoders/decoders. + + The .encode()/.decode() methods may use different error + handling schemes by providing the errors argument. These + string values are predefined: + + 'strict' - raise a ValueError error (or a subclass) + 'ignore' - ignore the character and continue with the next + 'replace' - replace with a suitable replacement character; + Python will use the official U+FFFD REPLACEMENT + CHARACTER for the builtin Unicode codecs on + decoding and '?' on encoding. + 'xmlcharrefreplace' - Replace with the appropriate XML + character reference (only for encoding). + 'backslashreplace' - Replace with backslashed escape sequences + (only for encoding). + + The set of allowed values can be extended via register_error. + + """ + def encode(self, input, errors='strict'): + + """ Encodes the object input and returns a tuple (output + object, length consumed). + + errors defines the error handling to apply. It defaults to + 'strict' handling. + + The method may not store state in the Codec instance. Use + StreamCodec for codecs which have to keep state in order to + make encoding/decoding efficient. + + The encoder must be able to handle zero length input and + return an empty object of the output object type in this + situation. + + """ + raise NotImplementedError + + def decode(self, input, errors='strict'): + + """ Decodes the object input and returns a tuple (output + object, length consumed). + + input must be an object which provides the bf_getreadbuf + buffer slot. Python strings, buffer objects and memory + mapped files are examples of objects providing this slot. + + errors defines the error handling to apply. It defaults to + 'strict' handling. + + The method may not store state in the Codec instance. Use + StreamCodec for codecs which have to keep state in order to + make encoding/decoding efficient. + + The decoder must be able to handle zero length input and + return an empty object of the output object type in this + situation. + + """ + raise NotImplementedError + +# +# The StreamWriter and StreamReader class provide generic working +# interfaces which can be used to implement new encoding submodules +# very easily. See encodings/utf_8.py for an example on how this is +# done. +# + +class StreamWriter(Codec): + + def __init__(self, stream, errors='strict'): + + """ Creates a StreamWriter instance. + + stream must be a file-like object open for writing + (binary) data. + + The StreamWriter may use different error handling + schemes by providing the errors keyword argument. These + parameters are predefined: + + 'strict' - raise a ValueError (or a subclass) + 'ignore' - ignore the character and continue with the next + 'replace'- replace with a suitable replacement character + 'xmlcharrefreplace' - Replace with the appropriate XML + character reference. + 'backslashreplace' - Replace with backslashed escape + sequences (only for encoding). + + The set of allowed parameter values can be extended via + register_error. + """ + self.stream = stream + self.errors = errors + + def write(self, object): + + """ Writes the object's contents encoded to self.stream. + """ + data, consumed = self.encode(object, self.errors) + print type(data) + self.stream.write(data) + + def writelines(self, list): + + """ Writes the concatenated list of strings to the stream + using .write(). + """ + self.write(''.join(list)) + + def reset(self): + + """ Flushes and resets the codec buffers used for keeping state. + + Calling this method should ensure that the data on the + output is put into a clean state, that allows appending + of new fresh data without having to rescan the whole + stream to recover state. + + """ + pass + + def __getattr__(self, name, + getattr=getattr): + + """ Inherit all other methods from the underlying stream. + """ + return getattr(self.stream, name) + +### + +class StreamReader(Codec): + + def __init__(self, stream, errors='strict'): + + """ Creates a StreamReader instance. + + stream must be a file-like object open for reading + (binary) data. + + The StreamReader may use different error handling + schemes by providing the errors keyword argument. These + parameters are predefined: + + 'strict' - raise a ValueError (or a subclass) + 'ignore' - ignore the character and continue with the next + 'replace'- replace with a suitable replacement character; + + The set of allowed parameter values can be extended via + register_error. + """ + self.stream = stream + self.errors = errors + self.bytebuffer = "" + self.charbuffer = u"" + self.atcr = False + + def decode(self, input, errors='strict'): + raise NotImplementedError + + def read(self, size=-1, chars=-1): + + """ Decodes data from the stream self.stream and returns the + resulting object. + + chars indicates the number of characters to read from the + stream. read() will never return more than chars + characters, but it might return less, if there are not enough + characters available. + + size indicates the approximate maximum number of bytes to + read from the stream for decoding purposes. The decoder + can modify this setting as appropriate. The default value + -1 indicates to read and decode as much as possible. size + is intended to prevent having to decode huge files in one + step. + + The method should use a greedy read strategy meaning that + it should read as much data as is allowed within the + definition of the encoding and the given size, e.g. if + optional encoding endings or state markers are available + on the stream, these should be read too. + """ + # read until we get the required number of characters (if available) + while True: + # can the request can be satisfied from the character buffer? + if chars < 0: + if self.charbuffer: + break + else: + if len(self.charbuffer) >= chars: + break + # we need more data + if size < 0: + newdata = self.stream.read() + else: + newdata = self.stream.read(size) + # decode bytes (those remaining from the last call included) + data = self.bytebuffer + newdata + newchars, decodedbytes = self.decode(data, self.errors) + # keep undecoded bytes until the next call + self.bytebuffer = data[decodedbytes:] + # put new characters in the character buffer + self.charbuffer += newchars + # there was no data available + if not newdata: + break + if chars < 0: + # Return everything we've got + result = self.charbuffer + self.charbuffer = u"" + else: + # Return the first chars characters + result = self.charbuffer[:chars] + self.charbuffer = self.charbuffer[chars:] + return result + + def readline(self, size=None, keepends=True): + + """ Read one line from the input stream and return the + decoded data. + + size, if given, is passed as size argument to the + read() method. + + """ + readsize = size or 72 + line = u"" + # If size is given, we call read() only once + while True: + data = self.read(readsize) + if self.atcr and data.startswith(u"\n"): + data = data[1:] + if data: + self.atcr = data.endswith(u"\r") + line += data + lines = line.splitlines(True) + if lines: + line0withend = lines[0] + line0withoutend = lines[0].splitlines(False)[0] + if line0withend != line0withoutend: # We really have a line end + # Put the rest back together and keep it until the next call + self.charbuffer = u"".join(lines[1:]) + self.charbuffer + if keepends: + line = line0withend + else: + line = line0withoutend + break + # we didn't get anything or this was our only try + elif not data or size is not None: + if line and not keepends: + line = line.splitlines(False)[0] + break + if readsize<8000: + readsize *= 2 + return line + + def readlines(self, sizehint=None, keepends=True): + + """ Read all lines available on the input stream + and return them as list of lines. + + Line breaks are implemented using the codec's decoder + method and are included in the list entries. + + sizehint, if given, is ignored since there is no efficient + way to finding the true end-of-line. + + """ + data = self.read() + return data.splitlines(keepends) + + def reset(self): + + """ Resets the codec buffers used for keeping state. + + Note that no stream repositioning should take place. + This method is primarily intended to be able to recover + from decoding errors. + + """ + pass + + def next(self): + + """ Return the next decoded line from the input stream.""" + line = self.readline() + if line: + return line + raise StopIteration + + def __iter__(self): + return self + + def __getattr__(self, name, + getattr=getattr): + + """ Inherit all other methods from the underlying stream. + """ + return getattr(self.stream, name) + +### + +class StreamReaderWriter: + + """ StreamReaderWriter instances allow wrapping streams which + work in both read and write modes. + + The design is such that one can use the factory functions + returned by the codec.lookup() function to construct the + instance. + + """ + # Optional attributes set by the file wrappers below + encoding = 'unknown' + + def __init__(self, stream, Reader, Writer, errors='strict'): + + """ Creates a StreamReaderWriter instance. + + stream must be a Stream-like object. + + Reader, Writer must be factory functions or classes + providing the StreamReader, StreamWriter interface resp. + + Error handling is done in the same way as defined for the + StreamWriter/Readers. + + """ + self.stream = stream + self.reader = Reader(stream, errors) + self.writer = Writer(stream, errors) + self.errors = errors + + def read(self, size=-1): + + return self.reader.read(size) + + def readline(self, size=None): + + return self.reader.readline(size) + + def readlines(self, sizehint=None): + + return self.reader.readlines(sizehint) + + def next(self): + + """ Return the next decoded line from the input stream.""" + return self.reader.next() + + def __iter__(self): + return self + + def write(self, data): + + return self.writer.write(data) + + def writelines(self, list): + + return self.writer.writelines(list) + + def reset(self): + + self.reader.reset() + self.writer.reset() + + def __getattr__(self, name, + getattr=getattr): + + """ Inherit all other methods from the underlying stream. + """ + return getattr(self.stream, name) + +### + +class StreamRecoder: + + """ StreamRecoder instances provide a frontend - backend + view of encoding data. + + They use the complete set of APIs returned by the + codecs.lookup() function to implement their task. + + Data written to the stream is first decoded into an + intermediate format (which is dependent on the given codec + combination) and then written to the stream using an instance + of the provided Writer class. + + In the other direction, data is read from the stream using a + Reader instance and then return encoded data to the caller. + + """ + # Optional attributes set by the file wrappers below + data_encoding = 'unknown' + file_encoding = 'unknown' + + def __init__(self, stream, encode, decode, Reader, Writer, + errors='strict'): + + """ Creates a StreamRecoder instance which implements a two-way + conversion: encode and decode work on the frontend (the + input to .read() and output of .write()) while + Reader and Writer work on the backend (reading and + writing to the stream). + + You can use these objects to do transparent direct + recodings from e.g. latin-1 to utf-8 and back. + + stream must be a file-like object. + + encode, decode must adhere to the Codec interface, Reader, + Writer must be factory functions or classes providing the + StreamReader, StreamWriter interface resp. + + encode and decode are needed for the frontend translation, + Reader and Writer for the backend translation. Unicode is + used as intermediate encoding. + + Error handling is done in the same way as defined for the + StreamWriter/Readers. + + """ + self.stream = stream + self.encode = encode + self.decode = decode + self.reader = Reader(stream, errors) + self.writer = Writer(stream, errors) + self.errors = errors + + def read(self, size=-1): + + data = self.reader.read(size) + data, bytesencoded = self.encode(data, self.errors) + return data + + def readline(self, size=None): + + if size is None: + data = self.reader.readline() + else: + data = self.reader.readline(size) + data, bytesencoded = self.encode(data, self.errors) + return data + + def readlines(self, sizehint=None): + + data = self.reader.read() + data, bytesencoded = self.encode(data, self.errors) + return data.splitlines(1) + + def next(self): + + """ Return the next decoded line from the input stream.""" + return self.reader.next() + + def __iter__(self): + return self + + def write(self, data): + + data, bytesdecoded = self.decode(data, self.errors) + return self.writer.write(data) + + def writelines(self, list): + + data = ''.join(list) + data, bytesdecoded = self.decode(data, self.errors) + return self.writer.write(data) + + def reset(self): + + self.reader.reset() + self.writer.reset() + + def __getattr__(self, name, + getattr=getattr): + + """ Inherit all other methods from the underlying stream. + """ + return getattr(self.stream, name) + +### Shortcuts + +def open(filename, mode='rb', encoding=None, errors='strict', buffering=1): + + """ Open an encoded file using the given mode and return + a wrapped version providing transparent encoding/decoding. + + Note: The wrapped version will only accept the object format + defined by the codecs, i.e. Unicode objects for most builtin + codecs. Output is also codec dependent and will usually by + Unicode as well. + + Files are always opened in binary mode, even if no binary mode + was specified. This is done to avoid data loss due to encodings + using 8-bit values. The default file mode is 'rb' meaning to + open the file in binary read mode. + + encoding specifies the encoding which is to be used for the + file. + + errors may be given to define the error handling. It defaults + to 'strict' which causes ValueErrors to be raised in case an + encoding error occurs. + + buffering has the same meaning as for the builtin open() API. + It defaults to line buffered. + + The returned wrapped file object provides an extra attribute + .encoding which allows querying the used encoding. This + attribute is only available if an encoding was specified as + parameter. + + """ + if encoding is not None and \ + 'b' not in mode: + # Force opening of the file in binary mode + mode = mode + 'b' + file = __builtin__.open(filename, mode, buffering) + if encoding is None: + return file + (e, d, sr, sw) = lookup(encoding) + srw = StreamReaderWriter(file, sr, sw, errors) + # Add attributes to simplify introspection + srw.encoding = encoding + return srw + +def EncodedFile(file, data_encoding, file_encoding=None, errors='strict'): + + """ Return a wrapped version of file which provides transparent + encoding translation. + + Strings written to the wrapped file are interpreted according + to the given data_encoding and then written to the original + file as string using file_encoding. The intermediate encoding + will usually be Unicode but depends on the specified codecs. + + Strings are read from the file using file_encoding and then + passed back to the caller as string using data_encoding. + + If file_encoding is not given, it defaults to data_encoding. + + errors may be given to define the error handling. It defaults + to 'strict' which causes ValueErrors to be raised in case an + encoding error occurs. + + The returned wrapped file object provides two extra attributes + .data_encoding and .file_encoding which reflect the given + parameters of the same name. The attributes can be used for + introspection by Python programs. + + """ + if file_encoding is None: + file_encoding = data_encoding + encode, decode = lookup(data_encoding)[:2] + Reader, Writer = lookup(file_encoding)[2:] + sr = StreamRecoder(file, + encode, decode, Reader, Writer, + errors) + # Add attributes to simplify introspection + sr.data_encoding = data_encoding + sr.file_encoding = file_encoding + return sr + +### Helpers for codec lookup + +def getencoder(encoding): + + """ Lookup up the codec for the given encoding and return + its encoder function. + + Raises a LookupError in case the encoding cannot be found. + + """ + return lookup(encoding)[0] + +def getdecoder(encoding): + + """ Lookup up the codec for the given encoding and return + its decoder function. + + Raises a LookupError in case the encoding cannot be found. + + """ + return lookup(encoding)[1] + +def getreader(encoding): + + """ Lookup up the codec for the given encoding and return + its StreamReader class or factory function. + + Raises a LookupError in case the encoding cannot be found. + + """ + return lookup(encoding)[2] + +def getwriter(encoding): + + """ Lookup up the codec for the given encoding and return + its StreamWriter class or factory function. + + Raises a LookupError in case the encoding cannot be found. + + """ + return lookup(encoding)[3] + +### Helpers for charmap-based codecs + +def make_identity_dict(rng): + + """ make_identity_dict(rng) -> dict + + Return a dictionary where elements of the rng sequence are + mapped to themselves. + + """ + res = {} + for i in rng: + res[i]=i + return res + +def make_encoding_map(decoding_map): + + """ Creates an encoding map from a decoding map. + + If a target mapping in the decoding map occurs multiple + times, then that target is mapped to None (undefined mapping), + causing an exception when encountered by the charmap codec + during translation. + + One example where this happens is cp875.py which decodes + multiple character to \u001a. + + """ + m = {} + for k,v in decoding_map.items(): + if not v in m: + m[v] = k + else: + m[v] = None + return m + +### error handlers + +strict_errors = lookup_error("strict") +ignore_errors = lookup_error("ignore") +replace_errors = lookup_error("replace") +xmlcharrefreplace_errors = lookup_error("xmlcharrefreplace") +backslashreplace_errors = lookup_error("backslashreplace") + +# Tell modulefinder that using codecs probably needs the encodings +# package +_false = 1 +if _false: + import encodings + +### Tests + +if __name__ == '__main__': + + # Make stdout translate Latin-1 output into UTF-8 output + sys.stdout = EncodedFile(sys.stdout, 'latin-1', 'utf-8') + + # Have stdin translate Latin-1 input into UTF-8 input + sys.stdin = EncodedFile(sys.stdin, 'utf-8', 'latin-1') Added: pypy/dist/pypy/lib/test2/test_codeccallbacks.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/lib/test2/test_codeccallbacks.py Sat Apr 30 00:00:11 2005 @@ -0,0 +1,712 @@ +import test.test_support, unittest +import sys, codecs, htmlentitydefs, unicodedata + +class PosReturn: + # this can be used for configurable callbacks + + def __init__(self): + self.pos = 0 + + def handle(self, exc): + oldpos = self.pos + realpos = oldpos + if realpos<0: + realpos = len(exc.object) + realpos + # if we don't advance this time, terminate on the next call + # otherwise we'd get an endless loop + if realpos <= exc.start: + self.pos = len(exc.object) + return (u"", oldpos) + +class CodecCallbackTest(unittest.TestCase): + + def test_xmlcharrefreplace(self): + # replace unencodable characters which numeric character entities. + # For ascii, latin-1 and charmaps this is completely implemented + # in C and should be reasonably fast. + s = u"\u30b9\u30d1\u30e2 \xe4nd eggs" + self.assertEqual( + s.encode("ascii", "xmlcharrefreplace"), + "スパモ änd eggs" + ) + self.assertEqual( + s.encode("latin-1", "xmlcharrefreplace"), + "スパモ \xe4nd eggs" + ) + + def test_xmlcharnamereplace(self): + # This time use a named character entity for unencodable + # characters, if one is available. + + def xmlcharnamereplace(exc): + if not isinstance(exc, UnicodeEncodeError): + raise TypeError("don't know how to handle %r" % exc) + l = [] + for c in exc.object[exc.start:exc.end]: + try: + l.append(u"&%s;" % htmlentitydefs.codepoint2name[ord(c)]) + except KeyError: + l.append(u"&#%d;" % ord(c)) + return (u"".join(l), exc.end) + + codecs.register_error( + "test.xmlcharnamereplace", xmlcharnamereplace) + + sin = u"\xab\u211c\xbb = \u2329\u1234\u20ac\u232a" + sout = "«ℜ» = ⟨ሴ€⟩" + self.assertEqual(codecs.encode(sin,"ascii", "test.xmlcharnamereplace"), sout) + sout = "\xabℜ\xbb = ⟨ሴ€⟩" + self.assertEqual(codecs.encode(sin,"latin-1", "test.xmlcharnamereplace"), sout) + sout = "\xabℜ\xbb = ⟨ሴ\xa4⟩" + self.assertEqual(codecs.encode(sin,"iso-8859-15", "test.xmlcharnamereplace"), sout) + + def test_uninamereplace(self): + # We're using the names from the unicode database this time, + # and we're doing "syntax highlighting" here, i.e. we include + # the replaced text in ANSI escape sequences. For this it is + # useful that the error handler is not called for every single + # unencodable character, but for a complete sequence of + # unencodable characters, otherwise we would output many + # unneccessary escape sequences. + + def uninamereplace(exc): + if not isinstance(exc, UnicodeEncodeError): + raise TypeError("don't know how to handle %r" % exc) + l = [] + for c in exc.object[exc.start:exc.end]: + l.append(unicodedata.name(c, u"0x%x" % ord(c))) + return (u"\033[1m%s\033[0m" % u", ".join(l), exc.end) + + codecs.register_error( + "test.uninamereplace", uninamereplace) + + sin = u"\xac\u1234\u20ac\u8000" + sout = "\033[1mNOT SIGN, ETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000\033[0m" + self.assertEqual(codecs.encode(sin,"ascii", "test.uninamereplace"), sout) + + sout = "\xac\033[1mETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000\033[0m" + self.assertEqual(codecs.encode(sin,"latin-1", "test.uninamereplace"), sout) + + sout = "\xac\033[1mETHIOPIC SYLLABLE SEE\033[0m\xa4\033[1mCJK UNIFIED IDEOGRAPH-8000\033[0m" + self.assertEqual(codecs.encode(sin,"iso-8859-15", "test.uninamereplace"), sout) + + def test_backslashescape(self): + # Does the same as the "unicode-escape" encoding, but with different + # base encodings. + sin = u"a\xac\u1234\u20ac\u8000" + if sys.maxunicode > 0xffff: + sin += unichr(sys.maxunicode) + sout = "a\\xac\\u1234\\u20ac\\u8000" + if sys.maxunicode > 0xffff: + sout += "\\U%08x" % sys.maxunicode + self.assertEqual(codecs.encode(sin,"ascii", "backslashreplace"), sout) + + sout = "a\xac\\u1234\\u20ac\\u8000" + if sys.maxunicode > 0xffff: + sout += "\\U%08x" % sys.maxunicode + self.assertEqual(codecs.encode(sin,"latin-1", "backslashreplace"), sout) + + sout = "a\xac\\u1234\xa4\\u8000" + if sys.maxunicode > 0xffff: + sout += "\\U%08x" % sys.maxunicode + self.assertEqual(codecs.encode(sin,"iso-8859-15", "backslashreplace"), sout) + + def test_relaxedutf8(self): + # This is the test for a decoding callback handler, + # that relaxes the UTF-8 minimal encoding restriction. + # A null byte that is encoded as "\xc0\x80" will be + # decoded as a null byte. All other illegal sequences + # will be handled strictly. + def relaxedutf8(exc): + if not isinstance(exc, UnicodeDecodeError): + raise TypeError("don't know how to handle %r" % exc) + if exc.object[exc.start:exc.end].startswith("\xc0\x80"): + return (u"\x00", exc.start+2) # retry after two bytes + else: + raise exc + + codecs.register_error( + "test.relaxedutf8", relaxedutf8) + + sin = "a\x00b\xc0\x80c\xc3\xbc\xc0\x80\xc0\x80" + sout = u"a\x00b\x00c\xfc\x00\x00" + self.assertEqual(codecs.decode(sin,"utf-8", "test.relaxedutf8"), sout) + sin = "\xc0\x80\xc0\x81" + self.assertRaises(UnicodeError, codecs.decode,sin, "utf-8", "test.relaxedutf8") + + def test_charmapencode(self): + # For charmap encodings the replacement string will be + # mapped through the encoding again. This means, that + # to be able to use e.g. the "replace" handler, the + # charmap has to have a mapping for "?". + charmap = dict([ (ord(c), 2*c.upper()) for c in "abcdefgh"]) + sin = u"abc" + sout = "AABBCC" + self.assertEquals(codecs.charmap_encode(sin, "strict", charmap)[0], sout) + + sin = u"abcA" + self.assertRaises(UnicodeError, codecs.charmap_encode, sin, "strict", charmap) + + charmap[ord("?")] = "XYZ" + sin = u"abcDEF" + sout = "AABBCCXYZXYZXYZ" + self.assertEquals(codecs.charmap_encode(sin, "replace", charmap)[0], sout) + + charmap[ord("?")] = u"XYZ" + self.assertRaises(TypeError, codecs.charmap_encode, sin, "replace", charmap) + + charmap[ord("?")] = u"XYZ" + self.assertRaises(TypeError, codecs.charmap_encode, sin, "replace", charmap) + + def test_callbacks(self): + def handler1(exc): + if not isinstance(exc, UnicodeEncodeError) \ + and not isinstance(exc, UnicodeDecodeError): + raise TypeError("don't know how to handle %r" % exc) + l = [u"<%d>" % ord(exc.object[pos]) for pos in xrange(exc.start, exc.end)] + return (u"[%s]" % u"".join(l), exc.end) + + codecs.register_error("test.handler1", handler1) + + def handler2(exc): + if not isinstance(exc, UnicodeDecodeError): + raise TypeError("don't know how to handle %r" % exc) + l = [u"<%d>" % ord(exc.object[pos]) for pos in xrange(exc.start, exc.end)] + return (u"[%s]" % u"".join(l), exc.end+1) # skip one character + + codecs.register_error("test.handler2", handler2) + + s = "\x00\x81\x7f\x80\xff" + + self.assertEqual( + codecs.decode(s,"ascii", "test.handler1"), + u"\x00[<129>]\x7f[<128>][<255>]" + ) + self.assertEqual( + codecs.decode(s,"ascii", "test.handler2"), + u"\x00[<129>][<128>]" + ) + + self.assertEqual( + codecs.decode("\\u3042\u3xxx","unicode-escape", "test.handler1"), + u"\u3042[<92><117><51><120>]xx" + ) + + self.assertEqual( + codecs.decode("\\u3042\u3xx","unicode-escape", "test.handler1"), + u"\u3042[<92><117><51><120><120>]" + ) + + self.assertEqual( + codecs.charmap_decode("abc", "test.handler1", {ord("a"): u"z"})[0], + u"z[<98>][<99>]" + ) + + self.assertEqual( + codecs.encode(u"g\xfc\xdfrk","ascii", "test.handler1"), + u"g[<252><223>]rk" + ) + + self.assertEqual( + codecs.encode(u"g\xfc\xdf","ascii", "test.handler1"), + u"g[<252><223>]" + ) + + def test_longstrings(self): + # test long strings to check for memory overflow problems + errors = [ "strict", "ignore", "replace", "xmlcharrefreplace", "backslashreplace"] + # register the handlers under different names, + # to prevent the codec from recognizing the name + for err in errors: + codecs.register_error("test." + err, codecs.lookup_error(err)) + l = 1000 + errors += [ "test." + err for err in errors ] + for uni in [ s*l for s in (u"x", u"\u3042", u"a\xe4") ]: + for enc in ("ascii", "latin-1", "iso-8859-1", "iso-8859-15", "utf-8", "utf-7", "utf-16"): + for err in errors: + try: + codecs.encode(uni,enc, err) + except UnicodeError: + pass + + def check_exceptionobjectargs(self, exctype, args, msg): + # Test UnicodeError subclasses: construction, attribute assignment and __str__ conversion + # check with one missing argument + self.assertRaises(TypeError, exctype, *args[:-1]) + # check with one argument too much + self.assertRaises(TypeError, exctype, *(args + ["too much"])) + # check with one argument of the wrong type + wrongargs = [ "spam", u"eggs", 42, 1.0, None ] + for i in xrange(len(args)): + for wrongarg in wrongargs: + if type(wrongarg) is type(args[i]): + continue + # build argument array + callargs = [] + for j in xrange(len(args)): + if i==j: + callargs.append(wrongarg) + else: + callargs.append(args[i]) + self.assertRaises(TypeError, exctype, *callargs) + + # check with the correct number and type of arguments + exc = exctype(*args) + self.assertEquals(str(exc), msg) + + def test_unicodeencodeerror(self): + self.check_exceptionobjectargs( + UnicodeEncodeError, + ["ascii", u"g\xfcrk", 1, 2, "ouch"], + "'ascii' codec can't encode character u'\\xfc' in position 1: ouch" + ) + self.check_exceptionobjectargs( + UnicodeEncodeError, + ["ascii", u"g\xfcrk", 1, 4, "ouch"], + "'ascii' codec can't encode characters in position 1-3: ouch" + ) + self.check_exceptionobjectargs( + UnicodeEncodeError, + ["ascii", u"\xfcx", 0, 1, "ouch"], + "'ascii' codec can't encode character u'\\xfc' in position 0: ouch" + ) + self.check_exceptionobjectargs( + UnicodeEncodeError, + ["ascii", u"\u0100x", 0, 1, "ouch"], + "'ascii' codec can't encode character u'\\u0100' in position 0: ouch" + ) + self.check_exceptionobjectargs( + UnicodeEncodeError, + ["ascii", u"\uffffx", 0, 1, "ouch"], + "'ascii' codec can't encode character u'\\uffff' in position 0: ouch" + ) + if sys.maxunicode > 0xffff: + self.check_exceptionobjectargs( + UnicodeEncodeError, + ["ascii", u"\U00010000x", 0, 1, "ouch"], + "'ascii' codec can't encode character u'\\U00010000' in position 0: ouch" + ) + + def test_unicodedecodeerror(self): + self.check_exceptionobjectargs( + UnicodeDecodeError, + ["ascii", "g\xfcrk", 1, 2, "ouch"], + "'ascii' codec can't decode byte 0xfc in position 1: ouch" + ) + self.check_exceptionobjectargs( + UnicodeDecodeError, + ["ascii", "g\xfcrk", 1, 3, "ouch"], + "'ascii' codec can't decode bytes in position 1-2: ouch" + ) + + def test_unicodetranslateerror(self): + self.check_exceptionobjectargs( + UnicodeTranslateError, + [u"g\xfcrk", 1, 2, "ouch"], + "can't translate character u'\\xfc' in position 1: ouch" + ) + self.check_exceptionobjectargs( + UnicodeTranslateError, + [u"g\u0100rk", 1, 2, "ouch"], + "can't translate character u'\\u0100' in position 1: ouch" + ) + self.check_exceptionobjectargs( + UnicodeTranslateError, + [u"g\uffffrk", 1, 2, "ouch"], + "can't translate character u'\\uffff' in position 1: ouch" + ) + if sys.maxunicode > 0xffff: + self.check_exceptionobjectargs( + UnicodeTranslateError, + [u"g\U00010000rk", 1, 2, "ouch"], + "can't translate character u'\\U00010000' in position 1: ouch" + ) + self.check_exceptionobjectargs( + UnicodeTranslateError, + [u"g\xfcrk", 1, 3, "ouch"], + "can't translate characters in position 1-2: ouch" + ) + + def test_badandgoodstrictexceptions(self): + # "strict" complains about a non-exception passed in + self.assertRaises( + TypeError, + codecs.strict_errors, + 42 + ) + # "strict" complains about the wrong exception type + self.assertRaises( + Exception, + codecs.strict_errors, + Exception("ouch") + ) + + # If the correct exception is passed in, "strict" raises it + self.assertRaises( + UnicodeEncodeError, + codecs.strict_errors, + UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch") + ) + + def test_badandgoodignoreexceptions(self): + # "ignore" complains about a non-exception passed in + self.assertRaises( + TypeError, + codecs.ignore_errors, + 42 + ) + # "ignore" complains about the wrong exception type + self.assertRaises( + TypeError, + codecs.ignore_errors, + UnicodeError("ouch") + ) + # If the correct exception is passed in, "ignore" returns an empty replacement + self.assertEquals( + codecs.ignore_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")), + (u"", 1) + ) + self.assertEquals( + codecs.ignore_errors(UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")), + (u"", 1) + ) + self.assertEquals( + codecs.ignore_errors(UnicodeTranslateError(u"\u3042", 0, 1, "ouch")), + (u"", 1) + ) + + def test_badandgoodreplaceexceptions(self): + # "replace" complains about a non-exception passed in + self.assertRaises( + TypeError, + codecs.replace_errors, + 42 + ) + # "replace" complains about the wrong exception type + self.assertRaises( + TypeError, + codecs.replace_errors, + UnicodeError("ouch") + ) + # With the correct exception, "ignore" returns an empty replacement + self.assertEquals( + codecs.replace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")), + (u"?", 1) + ) + self.assertEquals( + codecs.replace_errors(UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")), + (u"\ufffd", 1) + ) + self.assertEquals( + codecs.replace_errors(UnicodeTranslateError(u"\u3042", 0, 1, "ouch")), + (u"\ufffd", 1) + ) + + def test_badandgoodxmlcharrefreplaceexceptions(self): + # "xmlcharrefreplace" complains about a non-exception passed in + self.assertRaises( + TypeError, + codecs.xmlcharrefreplace_errors, + 42 + ) + # "xmlcharrefreplace" complains about the wrong exception types + self.assertRaises( + TypeError, + codecs.xmlcharrefreplace_errors, + UnicodeError("ouch") + ) + # "xmlcharrefreplace" can only be used for encoding + self.assertRaises( + TypeError, + codecs.xmlcharrefreplace_errors, + UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch") + ) + self.assertRaises( + TypeError, + codecs.xmlcharrefreplace_errors, + UnicodeTranslateError(u"\u3042", 0, 1, "ouch") + ) + # Use the correct exception + self.assertEquals( + codecs.xmlcharrefreplace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")), + (u"&#%d;" % 0x3042, 1) + ) + + def test_badandgoodbackslashreplaceexceptions(self): + # "backslashreplace" complains about a non-exception passed in + self.assertRaises( + TypeError, + codecs.backslashreplace_errors, + 42 + ) + # "backslashreplace" complains about the wrong exception types + self.assertRaises( + TypeError, + codecs.backslashreplace_errors, + UnicodeError("ouch") + ) + # "backslashreplace" can only be used for encoding + self.assertRaises( + TypeError, + codecs.backslashreplace_errors, + UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch") + ) + self.assertRaises( + TypeError, + codecs.backslashreplace_errors, + UnicodeTranslateError(u"\u3042", 0, 1, "ouch") + ) + # Use the correct exception + self.assertEquals( + codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")), + (u"\\u3042", 1) + ) + self.assertEquals( + codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\x00", 0, 1, "ouch")), + (u"\\x00", 1) + ) + self.assertEquals( + codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\xff", 0, 1, "ouch")), + (u"\\xff", 1) + ) + self.assertEquals( + codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\u0100", 0, 1, "ouch")), + (u"\\u0100", 1) + ) + self.assertEquals( + codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\uffff", 0, 1, "ouch")), + (u"\\uffff", 1) + ) + if sys.maxunicode>0xffff: + self.assertEquals( + codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\U00010000", 0, 1, "ouch")), + (u"\\U00010000", 1) + ) + self.assertEquals( + codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\U0010ffff", 0, 1, "ouch")), + (u"\\U0010ffff", 1) + ) + + def test_badhandlerresults(self): + results = ( 42, u"foo", (1,2,3), (u"foo", 1, 3), (u"foo", None), (u"foo",), ("foo", 1, 3), ("foo", None), ("foo",) ) + encs = ("ascii", "latin-1", "iso-8859-1", "iso-8859-15") + + for res in results: + codecs.register_error("test.badhandler", lambda: res) + for enc in encs: + self.assertRaises( + TypeError, + codecs.encode, + u"\u3042", + enc, + "test.badhandler" + ) + for (enc, bytes) in ( + ("ascii", "\xff"), + ("utf-8", "\xff"), + ("utf-7", "+x-") + ): + self.assertRaises( + TypeError, + codecs.decode, + bytes, + enc, + "test.badhandler" + ) + + def test_lookup(self): + self.assertEquals(codecs.strict_errors, codecs.lookup_error("strict")) + self.assertEquals(codecs.ignore_errors, codecs.lookup_error("ignore")) + self.assertEquals(codecs.strict_errors, codecs.lookup_error("strict")) + self.assertEquals( + codecs.xmlcharrefreplace_errors, + codecs.lookup_error("xmlcharrefreplace") + ) + self.assertEquals( + codecs.backslashreplace_errors, + codecs.lookup_error("backslashreplace") + ) + + def test_unencodablereplacement(self): + def unencrepl(exc): + if isinstance(exc, UnicodeEncodeError): + return (u"\u4242", exc.end) + else: + raise TypeError("don't know how to handle %r" % exc) + codecs.register_error("test.unencreplhandler", unencrepl) + for enc in ("ascii", "iso-8859-1", "iso-8859-15"): + self.assertRaises( + UnicodeEncodeError, + codecs.encode, + u"\u4242", + enc, + "test.unencreplhandler" + ) + + def test_badregistercall(self): + # enhance coverage of: + # Modules/_codecsmodule.c::register_error() + # Python/codecs.c::PyCodec_RegisterError() + self.assertRaises(TypeError, codecs.register_error, 42) + self.assertRaises(TypeError, codecs.register_error, "test.dummy", 42) + + def test_unknownhandler(self): + # enhance coverage of: + # Modules/_codecsmodule.c::lookup_error() + self.assertRaises(LookupError, codecs.lookup_error, "test.unknown") + + def test_xmlcharrefvalues(self): + # enhance coverage of: + # Python/codecs.c::PyCodec_XMLCharRefReplaceErrors() + # and inline implementations + v = (1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 50000) + if sys.maxunicode>=100000: + v += (100000, 500000, 1000000) + s = u"".join([unichr(x) for x in v]) + codecs.register_error("test.xmlcharrefreplace", codecs.xmlcharrefreplace_errors) + for enc in ("ascii", "iso-8859-15"): + for err in ("xmlcharrefreplace", "test.xmlcharrefreplace"): + codecs.encode(s,enc, err) + + def test_decodehelper(self): + # enhance coverage of: + # Objects/unicodeobject.c::unicode_decode_call_errorhandler() + # and callers + self.assertRaises(LookupError, codecs.decode,"\xff", "ascii", "test.unknown") + + def baddecodereturn1(exc): + return 42 + codecs.register_error("test.baddecodereturn1", baddecodereturn1) + self.assertRaises(TypeError, codecs.decode, "\xff", "ascii", "test.baddecodereturn1") + self.assertRaises(TypeError, codecs.decode, "\\", "unicode-escape", "test.baddecodereturn1") + self.assertRaises(TypeError, codecs.decode, "\\x0", "unicode-escape", "test.baddecodereturn1") + self.assertRaises(TypeError, codecs.decode, "\\x0y", "unicode-escape", "test.baddecodereturn1") + self.assertRaises(TypeError, codecs.decode, "\\Uffffeeee", "unicode-escape", "test.baddecodereturn1") + self.assertRaises(TypeError, codecs.decode, "\\uyyyy", "raw-unicode-escape", "test.baddecodereturn1") + + def baddecodereturn2(exc): + return (u"?", None) + codecs.register_error("test.baddecodereturn2", baddecodereturn2) + self.assertRaises(TypeError, codecs.decode, "\xff", "ascii", "test.baddecodereturn2") + + handler = PosReturn() + codecs.register_error("test.posreturn", handler.handle) + + # Valid negative position + handler.pos = -1 + self.assertEquals(codecs.decode( "\xff0","ascii", "test.posreturn"), u"0") + + # Valid negative position + handler.pos = -2 + self.assertEquals(codecs.decode("\xff0","ascii", "test.posreturn"), u"") + + # Negative position out of bounds + handler.pos = -3 + self.assertRaises(IndexError, codecs.decode,"\xff0", "ascii", "test.posreturn") + + # Valid positive position + handler.pos = 1 + self.assertEquals(codecs.decode("\xff0","ascii", "test.posreturn"), u"0") + + # Largest valid positive position (one beyond end of input + handler.pos = 2 + self.assertEquals(codecs.decode("\xff0","ascii", "test.posreturn"), u"") + + # Invalid positive position + handler.pos = 3 + self.assertRaises(IndexError, codecs.decode,"\xff0", "ascii", "test.posreturn") + + # Restart at the "0" + handler.pos = 6 + self.assertEquals(codecs.decode("\\uyyyy0","raw-unicode-escape", "test.posreturn"), u"0") + + class D(dict): + def __getitem__(self, key): + raise ValueError + self.assertRaises(UnicodeError, codecs.charmap_decode, "\xff", "strict", {0xff: None}) + self.assertRaises(ValueError, codecs.charmap_decode, "\xff", "strict", D()) + self.assertRaises(TypeError, codecs.charmap_decode, "\xff", "strict", {0xff: sys.maxunicode+1}) + + def test_encodehelper(self): + # enhance coverage of: + # Objects/unicodeobject.c::unicode_encode_call_errorhandler() + # and callers + self.assertRaises(LookupError, codecs.decode,u"\xff", "ascii", "test.unknown") + + def badencodereturn1(exc): + return 42 + codecs.register_error("test.badencodereturn1", badencodereturn1) + self.assertRaises(TypeError, codecs.decode, u"\xff", "ascii", "test.badencodereturn1") + + def badencodereturn2(exc): + return (u"?", None) + codecs.register_error("test.badencodereturn2", badencodereturn2) + self.assertRaises(TypeError, codecs.decode,u"\xff", "ascii", "test.badencodereturn2") + + handler = PosReturn() + codecs.register_error("test.posreturn", handler.handle) + + # Valid negative position + handler.pos = -1 + self.assertEquals(u"\xff0".encode("ascii", "test.posreturn"), "0") + + # Valid negative position + handler.pos = -2 + self.assertEquals(u"\xff0".encode("ascii", "test.posreturn"), "") + + # Negative position out of bounds + handler.pos = -3 + self.assertRaises(IndexError, u"\xff0".encode, "ascii", "test.posreturn") + + # Valid positive position + handler.pos = 1 + self.assertEquals(u"\xff0".encode("ascii", "test.posreturn"), "0") + + # Largest valid positive position (one beyond end of input + handler.pos = 2 + self.assertEquals(u"\xff0".encode("ascii", "test.posreturn"), "") + + # Invalid positive position + handler.pos = 3 + self.assertRaises(IndexError, u"\xff0".encode, "ascii", "test.posreturn") + + handler.pos = 0 + + class D(dict): + def __getitem__(self, key): + raise ValueError + for err in ("strict", "replace", "xmlcharrefreplace", "backslashreplace", "test.posreturn"): + self.assertRaises(UnicodeError, codecs.charmap_encode, u"\xff", err, {0xff: None}) + self.assertRaises(ValueError, codecs.charmap_encode, u"\xff", err, D()) + self.assertRaises(TypeError, codecs.charmap_encode, u"\xff", err, {0xff: 300}) + + def test_translatehelper(self): + # enhance coverage of: + # Objects/unicodeobject.c::unicode_encode_call_errorhandler() + # and callers + # (Unfortunately the errors argument is not directly accessible + # from Python, so we can't test that much) + class D(dict): + def __getitem__(self, key): + raise ValueError + self.assertRaises(ValueError, u"\xff".translate, D()) + self.assertRaises(TypeError, u"\xff".translate, {0xff: sys.maxunicode+1}) + self.assertRaises(TypeError, u"\xff".translate, {0xff: ()}) + + def test_bug828737(self): + charmap = { + ord("&"): u"&", + ord("<"): u"<", + ord(">"): u">", + ord('"'): u""", + } + + for n in (1, 10, 100, 1000): + text = u'abcghi'*n + text.translate(charmap) + +def test_main(): + test.test_support.run_unittest(CodecCallbackTest) + +if __name__ == "__main__": + test_main() Added: pypy/dist/pypy/lib/unicodecodec.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/lib/unicodecodec.py Sat Apr 30 00:00:11 2005 @@ -0,0 +1,931 @@ + +## indicate whether a UTF-7 character is special i.e. cannot be directly +## encoded: +## 0 - not special +## 1 - special +## 2 - whitespace (optional) +## 3 - RFC2152 Set O (optional) + +utf7_special = [ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 1, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 3, 3, 3, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 1, 1, +] +unicode_latin1=[] +for i in range(256): + unicode_latin1.append(None) + +def PyUnicode_Check(op): + return type(op) == unicode +def PyUnicode_CheckExact(op): + return (type(op) == unicode) + + +def PyUnicode_GET_SIZE(op): + return len(unicode(op)) +def PyUnicode_GET_DATA_SIZE(op): + return len(unicode(op)) * len(u' ') +def PyUnicode_AS_UNICODE(op): + unicode(op) +def PyUnicode_AS_DATA(op): + buffer(unicode(op)) #XXX This is a read only buffer + +def SPECIAL(c, encodeO, encodeWS): + c = ord(c) + return (c>127 or utf7_special[c] == 1) or \ + (encodeWS and (utf7_special[(c)] == 2)) or \ + (encodeO and (utf7_special[(c)] == 3)) +def B64(n): + return ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(n) & 0x3f]) +def B64CHAR(c): + return (isalnum(c) or (c) == '+' or (c) == '/') +def UB64(c): + if (c) == '+' : + return 62 + elif (c) == '/': + return 63 + elif (c) >= 'a': + return ord(c) - 71 + elif (c) >= 'A': + return ord(c) - 65 + else: + return ord(c) + 4 + +def ENCODE(out, ch, bits) : + while (bits >= 6): + out.append( B64(ch >> (bits-6))) + bits -= 6; + return ''.join(out),ch,bits + +def DECODE(out, ch, bits, surrogate): + while (bits >= 16): + outCh = unicode (chr((ord(ch) >> (bits-16)) & 0xffff)) + bits -= 16 + if (surrogate): + ## We have already generated an error for the high surrogate + ## so let's not bother seeing if the low surrogate is correct or not + surrogate = 0 + elif (0xDC00 <= outCh and outCh <= 0xDFFF): +## This is a surrogate pair. Unfortunately we can't represent +## it in a 16-bit character + surrogate = 1 + raise UnicodeDecodeError,"code pairs are not supported" + else: + out.append( outCh ) + return ''.join(out),ch,bits,surrogate + +def PyUnicode_DecodeUTF7(s, size, errors): + + starts = s + errmsg = "" + inShift = 0 + bitsleft = 0 + charsleft = 0 + surrogate = 0 + p = [] + errorHandler = None + exc = None + + if (size == 0): + return unicode('') + i = 0 + while i < size: + + ch = s[i] + if (inShift): + if ((ch == '-') or not B64CHAR(ch)): + inShift = 0 + i += 1 + p, charsleft, bitsleft, surrogate = DECODE(p, charsleft, bitsleft, surrogate); + if (bitsleft >= 6): +## /* The shift sequence has a partial character in it. If +## bitsleft < 6 then we could just classify it as padding +## but that is not the case here */ + + raise UnicodeDecodeError, "partial character in shift sequence" +## /* According to RFC2152 the remaining bits should be zero. We +## choose to signal an error/insert a replacement character +## here so indicate the potential of a misencoded character. */ + +## /* On x86, a << b == a << (b%32) so make sure that bitsleft != 0 */ + if (bitsleft and (charsleft << (sizeof(charsleft) * 8 - bitsleft))): + raise UnicodeDecodeError, "non-zero padding bits in shift sequence" + if (ch == '-') : + if ((i < size) and (s[i] == '-')) : + p.append( '-') + inShift = 1 + + elif SPECIAL(ch,0,0) : + raise UnicodeDecodeError,"unexpected special character" + + else: + p.append( ch ) + else: + charsleft = (charsleft << 6) | UB64(ch) + bitsleft += 6 + i+=1 +## /* p, charsleft, bitsleft, surrogate = */ DECODE(p, charsleft, bitsleft, surrogate); + elif ( ch == '+' ): + startinpos = i + i+=1 + if (i 0 + else: + out.append(ch) + else: + if (not SPECIAL(ch, encodeSetO, encodeWhiteSpace)): + out.append(B64(charsleft << (6-bitsleft))) + charsleft = 0 + bitsleft = 0 +## /* Characters not in the BASE64 set implicitly unshift the sequence +## so no '-' is required, except if the character is itself a '-' */ + if (B64CHAR(ch) or ch == '-'): + out.append('-') + inShift = 0 + out.append(ch) + else: + bitsleft += 16 + charsleft = (charsleft << 16) | ch + out, charsleft, bitsleft = ENCODE(out, charsleft, bitsleft) + +## /* If the next character is special then we dont' need to terminate +## the shift sequence. If the next character is not a BASE64 character +## or '-' then the shift sequence will be terminated implicitly and we +## don't have to insert a '-'. */ + + if (bitsleft == 0): + if (i + 1 < size): + ch2 = s[i+1] + + if (SPECIAL(ch2, encodeSetO, encodeWhiteSpace)): + pass + elif (B64CHAR(ch2) or ch2 == '-'): + out.append( '-') + inShift = 0 + else: + inShift = 0 + else: + out.append( '-') + inShift = 0 + i+=1 + + if (bitsleft): + out.append(B64(charsleft << (6-bitsleft) )) + out.append( '-') + + return ''.join(out) + +def PyUnicode_FromOrdinal(ordinal): + + if (ordinal < 0 or ordinal > 0x10ffff): + raise ValueError, "unichr() arg not in range(0x110000) (wide Python build)" + +## if (ordinal < 0 or ordinal > 0xffff): +## raise ValueError, "unichr() arg not in range(0x1000) (narrow Python build)" + + s = unichr(ordinal) + return s,1 + +def PyUnicode_FromObject(obj): + +## /* XXX Perhaps we should make this API an alias of +## PyObject_Unicode() instead ?! */ + if (PyUnicode_CheckExact(obj)): + return obj + + if (PyUnicode_Check(obj)): +## /* For a Unicode subtype that's not a Unicode object, +## return a true Unicode object with the same data. */ + return PyUnicode_FromUnicode(PyUnicode_AS_UNICODE(obj),PyUnicode_GET_SIZE(obj)) + return PyUnicode_FromEncodedObject(obj, None, "strict") + +unicode_empty=u'' + +def PyUnicode_FromUnicode(u, size): + +## /* If the Unicode data is known at construction time, we can apply +## some optimizations which share commonly used objects. */ + if (u): + +## /* Optimization for empty strings */ + if (size == 0 and unicode_empty != None) : + return unicode_empty + + ## /* Single character Unicode objects in the Latin-1 range are + ## shared when using this constructor */ + if (size == 1 and ord(u) < 256) : + result = unicode_latin1[ord(u)] + if (not result): + result = unicode(u) + unicode_latin1[ord(u)] = result + if (not result): + return None + return result + return unicode(u) + +def PyUnicode_Decode(s,size,encoding,errors): + + if (encoding == None): + encoding = PyUnicode_GetDefaultEncoding() + +## /* Shortcuts for common default encodings */ + decoder = encodings.get(encoding,None) + if decoder: + return decoder(s,encoding,errors) +## /* Decode via the codec registry */ + buf = buffer(s) + result = PyCodec_Decode(buf, encoding, errors); + if (not PyUnicode_Check(result)): + raise UnicodeDecodeError, "decoder did not return an unicode object (type=%.400s)"%type(result) + return result + +def PyUnicode_FromEncodedObject(obj, encoding,errors): + + s = str(obj) + v = PyUnicode_Decode(s, len(s), encoding, errors) + return v + +def PyUnicode_DecodeASCII(s, size, errors): + +# /* ASCII is equivalent to the first 128 ordinals in Unicode. */ + if (size == 1 and ord(s) < 128) : + return PyUnicode_FromUnicode(unicode(s), 1) + if (size == 0): + return unicode('') + p = [] + for c in s: + if ord(c) < 128: + p.append(c) + else: + UnicodeDecodeError("ordinal not in range(128)",s.index(c)) + return ''.join(p) + +def PyUnicode_EncodeASCII(p,size,errors): + + return unicode_encode_ucs1(p, size, errors, 128) + +def PyUnicode_AsASCIIString(unistr): + + if not type(unistr) == unicode: + raise BadArgumnentError + return PyUnicode_EncodeASCII(PyUnicode_AS_UNICODE(unistr), + len(unicode), + None) + +##def PyUnicode_DecodeUTF16Stateful(s,size,errors,byteorder,consumed): +## +## bo = 0; /* assume native ordering by default */ +## errmsg = ""; +## /* Offsets from q for retrieving byte pairs in the right order. */ +###ifdef BYTEORDER_IS_LITTLE_ENDIAN +## int ihi = 1, ilo = 0; +###else +## int ihi = 0, ilo = 1; +###endif +## PyObject *errorHandler = NULL; +## PyObject *exc = NULL; +## +## /* Note: size will always be longer than the resulting Unicode +## character count */ +## unicode = _PyUnicode_New(size); +## if (!unicode) +## return NULL; +## if (size == 0) +## return (PyObject *)unicode; +## +## /* Unpack UTF-16 encoded data */ +## p = unicode->str; +## q = (unsigned char *)s; +## e = q + size; +## +## if (byteorder) +## bo = *byteorder; +## +## /* Check for BOM marks (U+FEFF) in the input and adjust current +## byte order setting accordingly. In native mode, the leading BOM +## mark is skipped, in all other modes, it is copied to the output +## stream as-is (giving a ZWNBSP character). */ +## if (bo == 0) { +## if (size >= 2) { +## const Py_UNICODE bom = (q[ihi] << 8) | q[ilo]; +###ifdef BYTEORDER_IS_LITTLE_ENDIAN +## if (bom == 0xFEFF) { +## q += 2; +## bo = -1; +## } +## else if (bom == 0xFFFE) { +## q += 2; +## bo = 1; +## } +###else +## if (bom == 0xFEFF) { +## q += 2; +## bo = 1; +## } +## else if (bom == 0xFFFE) { +## q += 2; +## bo = -1; +## } +###endif +## } +## } +## +## if (bo == -1) { +## /* force LE */ +## ihi = 1; +## ilo = 0; +## } +## else if (bo == 1) { +## /* force BE */ +## ihi = 0; +## ilo = 1; +## } +## +## while (q < e) { +## Py_UNICODE ch; +## /* remaining bytes at the end? (size should be even) */ +## if (e-q<2) { +## if (consumed) +## break; +## errmsg = "truncated data"; +## startinpos = ((const char *)q)-starts; +## endinpos = ((const char *)e)-starts; +## goto utf16Error; +## /* The remaining input chars are ignored if the callback +## chooses to skip the input */ +## } +## ch = (q[ihi] << 8) | q[ilo]; +## +## q += 2; +## +## if (ch < 0xD800 || ch > 0xDFFF) { +## *p++ = ch; +## continue; +## } +## +## /* UTF-16 code pair: */ +## if (q >= e) { +## errmsg = "unexpected end of data"; +## startinpos = (((const char *)q)-2)-starts; +## endinpos = ((const char *)e)-starts; +## goto utf16Error; +## } +## if (0xD800 <= ch && ch <= 0xDBFF) { +## Py_UNICODE ch2 = (q[ihi] << 8) | q[ilo]; +## q += 2; +## if (0xDC00 <= ch2 && ch2 <= 0xDFFF) { +###ifndef Py_UNICODE_WIDE +## *p++ = ch; +## *p++ = ch2; +###else +## *p++ = (((ch & 0x3FF)<<10) | (ch2 & 0x3FF)) + 0x10000; +###endif +## continue; +## } +## else { +## errmsg = "illegal UTF-16 surrogate"; +## startinpos = (((const char *)q)-4)-starts; +## endinpos = startinpos+2; +## goto utf16Error; +## } +## +## } +## errmsg = "illegal encoding"; +## startinpos = (((const char *)q)-2)-starts; +## endinpos = startinpos+2; +## /* Fall through to report the error */ +## +## utf16Error: +## outpos = p-PyUnicode_AS_UNICODE(unicode); +## if (unicode_decode_call_errorhandler( +## errors, &errorHandler, +## "utf16", errmsg, +## starts, size, &startinpos, &endinpos, &exc, (const char **)&q, +## (PyObject **)&unicode, &outpos, &p)) +## goto onError; +## } +## +## if (byteorder) +## *byteorder = bo; +## +## if (consumed) +## *consumed = (const char *)q-starts; +## +## /* Adjust length */ +## if (_PyUnicode_Resize(&unicode, p - unicode->str) < 0) +## goto onError; +## +## Py_XDECREF(errorHandler); +## Py_XDECREF(exc); +## return (PyObject *)unicode; +## +##onError: +## Py_DECREF(unicode); +## Py_XDECREF(errorHandler); +## Py_XDECREF(exc); +## return NULL; +##} + +def PyUnicode_EncodeUTF16(s,size,errors,byteorder='little'): + +# /* Offsets from p for storing byte pairs in the right order. */ +###ifdef BYTEORDER_IS_LITTLE_ENDIAN +## int ihi = 1, ilo = 0; +###else +## int ihi = 0, ilo = 1; +###endif + + def STORECHAR(CH,byteorder): + hi = chr(((CH) >> 8) & 0xff) + lo = chr((CH) & 0xff) + if byteorder == 'little': + return [lo,hi] + else: + return [hi,lo] + + p = [] + import sys + bom = sys.byteorder + if (byteorder == 0): + import sys + bom = sys.byteorder + p.extend(STORECHAR(0xFEFF,bom)) + + if (size == 0): + return "" + + if (byteorder == -1): + bom = 'little' + elif (byteorder == 1): + bom = 'big' + + + for c in s: + ch = ord(c) + ch2 = 0 + if (ch >= 0x10000) : + ch2 = 0xDC00 | ((ch-0x10000) & 0x3FF) + ch = 0xD800 | ((ch-0x10000) >> 10) + + p.extend(STORECHAR(ch,bom)) + if (ch2): + p.extend(STORECHAR(ch2,bom)) + + return ''.join(p) + + +def PyUnicode_DecodeMBCS(s, size, errors): + pass +##{ +## PyUnicodeObject *v; +## Py_UNICODE *p; +## +## /* First get the size of the result */ +## DWORD usize = MultiByteToWideChar(CP_ACP, 0, s, size, NULL, 0); +## if (size > 0 && usize==0) +## return PyErr_SetFromWindowsErrWithFilename(0, NULL); +## +## v = _PyUnicode_New(usize); +## if (v == NULL) +## return NULL; +## if (usize == 0) +## return (PyObject *)v; +## p = PyUnicode_AS_UNICODE(v); +## if (0 == MultiByteToWideChar(CP_ACP, 0, s, size, p, usize)) { +## Py_DECREF(v); +## return PyErr_SetFromWindowsErrWithFilename(0, NULL); +## } +## +## return (PyObject *)v; +##} + +##def PyUnicode_EncodeMBCS(p, size, errors): +## +#### /* If there are no characters, bail now! */ +## if (size==0) +## return "" +## from ctypes import * +## WideCharToMultiByte = windll.kernel32.WideCharToMultiByte +#### /* First get the size of the result */ +## mbcssize = WideCharToMultiByte(CP_ACP, 0, p, size, s, 0, None, None); +## if (mbcssize==0) +## raise UnicodeEncodeError, "Windows cannot decode the string %s" %p +### More error handling required (check windows errors and such) +## +### /* Do the conversion */ +#### s = ' '*mbcssize +#### if (0 == WideCharToMultiByte(CP_ACP, 0, p, size, s, mbcssize, NULL, NULL)): +#### raise UnicodeEncodeError, "Windows cannot decode the string %s" %p +## return s +def PyUnicode_DecodeUTF8(s, size, errors): + + return PyUnicode_DecodeUTF8Stateful(s, size, errors, NULL); + +def PyUnicode_DecodeUTF8Stateful(s,size,errors,consumed): + pass +##{ +## const char *starts = s; +## int n; +## int startinpos; +## int endinpos; +## int outpos; +## const char *e; +## PyUnicodeObject *unicode; +## Py_UNICODE *p; +## const char *errmsg = ""; +## PyObject *errorHandler = NULL; +## PyObject *exc = NULL; +## +## /* Note: size will always be longer than the resulting Unicode +## character count */ +## unicode = _PyUnicode_New(size); +## if (!unicode) +## return NULL; +## if (size == 0) { +## if (consumed) +## *consumed = 0; +## return (PyObject *)unicode; +## } +## +## /* Unpack UTF-8 encoded data */ +## p = unicode->str; +## e = s + size; +## +## while (s < e) { +## Py_UCS4 ch = (unsigned char)*s; +## +## if (ch < 0x80) { +## *p++ = (Py_UNICODE)ch; +## s++; +## continue; +## } +## +## n = utf8_code_length[ch]; +## +## if (s + n > e) { +## if (consumed) +## break; +## else { +## errmsg = "unexpected end of data"; +## startinpos = s-starts; +## endinpos = size; +## goto utf8Error; +## } +## } +## +## switch (n) { +## +## case 0: +## errmsg = "unexpected code byte"; +## startinpos = s-starts; +## endinpos = startinpos+1; +## goto utf8Error; +## +## case 1: +## errmsg = "internal error"; +## startinpos = s-starts; +## endinpos = startinpos+1; +## goto utf8Error; +## +## case 2: +## if ((s[1] & 0xc0) != 0x80) { +## errmsg = "invalid data"; +## startinpos = s-starts; +## endinpos = startinpos+2; +## goto utf8Error; +## } +## ch = ((s[0] & 0x1f) << 6) + (s[1] & 0x3f); +## if (ch < 0x80) { +## startinpos = s-starts; +## endinpos = startinpos+2; +## errmsg = "illegal encoding"; +## goto utf8Error; +## } +## else +## *p++ = (Py_UNICODE)ch; +## break; +## +## case 3: +## if ((s[1] & 0xc0) != 0x80 || +## (s[2] & 0xc0) != 0x80) { +## errmsg = "invalid data"; +## startinpos = s-starts; +## endinpos = startinpos+3; +## goto utf8Error; +## } +## ch = ((s[0] & 0x0f) << 12) + ((s[1] & 0x3f) << 6) + (s[2] & 0x3f); +## if (ch < 0x0800) { +## /* Note: UTF-8 encodings of surrogates are considered +## legal UTF-8 sequences; +## +## XXX For wide builds (UCS-4) we should probably try +## to recombine the surrogates into a single code +## unit. +## */ +## errmsg = "illegal encoding"; +## startinpos = s-starts; +## endinpos = startinpos+3; +## goto utf8Error; +## } +## else +## *p++ = (Py_UNICODE)ch; +## break; +## +## case 4: +## if ((s[1] & 0xc0) != 0x80 || +## (s[2] & 0xc0) != 0x80 || +## (s[3] & 0xc0) != 0x80) { +## errmsg = "invalid data"; +## startinpos = s-starts; +## endinpos = startinpos+4; +## goto utf8Error; +## } +## ch = ((s[0] & 0x7) << 18) + ((s[1] & 0x3f) << 12) + +## ((s[2] & 0x3f) << 6) + (s[3] & 0x3f); +## /* validate and convert to UTF-16 */ +## if ((ch < 0x10000) /* minimum value allowed for 4 +## byte encoding */ +## || (ch > 0x10ffff)) /* maximum value allowed for +## UTF-16 */ +## { +## errmsg = "illegal encoding"; +## startinpos = s-starts; +## endinpos = startinpos+4; +## goto utf8Error; +## } +###ifdef Py_UNICODE_WIDE +## *p++ = (Py_UNICODE)ch; +###else +## /* compute and append the two surrogates: */ +## +## /* translate from 10000..10FFFF to 0..FFFF */ +## ch -= 0x10000; +## +## /* high surrogate = top 10 bits added to D800 */ +## *p++ = (Py_UNICODE)(0xD800 + (ch >> 10)); +## +## /* low surrogate = bottom 10 bits added to DC00 */ +## *p++ = (Py_UNICODE)(0xDC00 + (ch & 0x03FF)); +###endif +## break; +## +## default: +## /* Other sizes are only needed for UCS-4 */ +## errmsg = "unsupported Unicode code range"; +## startinpos = s-starts; +## endinpos = startinpos+n; +## goto utf8Error; +## } +## s += n; +## continue; +## +## utf8Error: +## outpos = p-PyUnicode_AS_UNICODE(unicode); +## if (unicode_decode_call_errorhandler( +## errors, &errorHandler, +## "utf8", errmsg, +## starts, size, &startinpos, &endinpos, &exc, &s, +## (PyObject **)&unicode, &outpos, &p)) +## goto onError; +## } +## if (consumed) +## *consumed = s-starts; +## +## /* Adjust length */ +## if (_PyUnicode_Resize(&unicode, p - unicode->str) < 0) +## goto onError; +## +## Py_XDECREF(errorHandler); +## Py_XDECREF(exc); +## return (PyObject *)unicode; +## +##onError: +## Py_XDECREF(errorHandler); +## Py_XDECREF(exc); +## Py_DECREF(unicode); +## return NULL; +##} +## +##/* Allocation strategy: if the string is short, convert into a stack buffer +## and allocate exactly as much space needed at the end. Else allocate the +## maximum possible needed (4 result bytes per Unicode character), and return +## the excess memory at the end. +##*/ + +def PyUnicode_EncodeUTF8(s,size,errors): + + assert(s != NULL) + assert(size >= 0) + p = [] + i = 0 + while i> 6)))) + p.append(chr((0x80 | (ch & 0x3f)))) + else: +## /* Encode UCS2 Unicode ordinals */ + if (ord(ch) < 0x10000): +## /* Special case: check for high surrogate */ + if (0xD800 <=ord(ch) and ord(ch) <= 0xDBFF and i != size) : + ch2 = s[i] +## /* Check for low surrogate and combine the two to +## form a UCS4 value */ + if (0xDC00 <= ch2 and ch2 <= 0xDFFF) : + ch = ((ch - 0xD800) << 10 | (ch2 - 0xDC00)) + 0x10000 + i+=1 + p.extend(encodeUCS4(ch)) + continue +## /* Fall through: handles isolated high surrogates */ + p.append (chr((0xe0 | (ch >> 12)))) + p.append (chr((0x80 | ((ch >> 6) & 0x3f)))) + p.append (chr((0x80 | (ch & 0x3f)))) + continue + return ''.join(p) + +def encodeUCS4(ch): +## /* Encode UCS4 Unicode ordinals */ + p=[] + p.append (chr((0xf0 | (ch >> 18)))) + p.append (chr((0x80 | ((ch >> 12) & 0x3f)))) + p.append (chr((0x80 | ((ch >> 6) & 0x3f)))) + p.append (chr((0x80 | (ch & 0x3f)))) + return p + +#/* --- Latin-1 Codec ------------------------------------------------------ */ + +def PyUnicode_DecodeLatin1(s, size, errors): + pass +##{ +## PyUnicodeObject *v; +## Py_UNICODE *p; +## +## /* Latin-1 is equivalent to the first 256 ordinals in Unicode. */ +## if (size == 1) { +## Py_UNICODE r = *(unsigned char*)s; +## return PyUnicode_FromUnicode(&r, 1); +## } +## +## v = _PyUnicode_New(size); +## if (v == NULL) +## goto onError; +## if (size == 0) +## return (PyObject *)v; +## p = PyUnicode_AS_UNICODE(v); +## while (size-- > 0) +## *p++ = (unsigned char)*s++; +## return (PyObject *)v; +## +## onE rror: +## Py_XDECREF(v); +## return NULL; +##} +from pypy.lib._codecs import lookup_error + +def unicode_encode_ucs1(p,size,errors,limit): + + if limit==256: + reason = "ordinal not in range(256)" + encoding = "latin-1" + else: + reason = "ordinal not in range(128)" + encoding = "ascii" + + if (size == 0): + return '' + res = [] + for ch in p: + if ord(ch) < limit: + res.append(ch) + else: + + #/* startpos for collecting unencodable chars */ + collstart = p.index(ch) + collend = p.index(ch) + #/* find all unecodable characters */ + for c in p[collstart:]: + if ord(c) >= limit: + collend +=1 + else: + break + #uncollectable = [c for c in p if ord(c) >= limit] + handler = lookup_error(errors) + x = handler(UnicodeEncodeError(encoding,p,collstart,collend,reason)) + res.append(x) + + return ''.join(res) + +def PyUnicode_EncodeLatin1(p,size,errors): + + return unicode_encode_ucs1(p, size, errors, 256); + +def PyUnicode_EncodeRawUnicodeEscape(s,size): + + if (size == 0): + return u'' + + p = [] + for ch in s: +# /* Map 32-bit characters to '\Uxxxxxxxx' */ + if (ord(ch) >= 0x10000): + p.append('\\') + p.append('U') + p.append(hex(ord(ch))) + elif (ord(ch) >= 256) : +# /* Map 16-bit characters to '\uxxxx' */ + p.append('\\') + p.append('u') + p.append(hex(ord(ch))) +# /* Copy everything else as-is */ + else: + p.append(ch) + + p.append('\0') + return ''.join(p) + +def charmapencode_output(c,mapping,outobj,outpos): + + rep = mapping[c] + +def PyUnicode_EncodeCharmap(p,size,mapping='latin-1',errors='strict'): + +## /* the following variable is used for caching string comparisons +## * -1=not initialized, 0=unknown, 1=strict, 2=replace, +## * 3=ignore, 4=xmlcharrefreplace */ + +# /* Default to Latin-1 */ + if mapping == 'latin-1': + return PyUnicode_EncodeLatin1(p, size, errors) + if (size == 0): + return '' + inpos = 0 + res = [] + print type(mapping),type(p) + while (inpos")) + else: + #/* done with this character => adjust input position */ + inpos+=1 + + + return ''.join(res) + + +encodings = { "utf-8" : PyUnicode_DecodeUTF8, + "latin-1" : PyUnicode_DecodeLatin1, + "mbcs" : PyUnicode_DecodeMBCS, + "ascii" : PyUnicode_DecodeASCII, + } From cfbolz at codespeak.net Sat Apr 30 02:04:26 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sat, 30 Apr 2005 02:04:26 +0200 (CEST) Subject: [pypy-svn] r11640 - in pypy/dist/pypy: lib/test2 module/builtin Message-ID: <20050430000426.A27FF27BA0@code1.codespeak.net> Author: cfbolz Date: Sat Apr 30 02:04:26 2005 New Revision: 11640 Added: pypy/dist/pypy/lib/test2/test_enumerate.py Modified: pypy/dist/pypy/module/builtin/app_functional.py Log: Rewrote enumerate as a class to make test_enumerate pass. Added a custom test_enumerate since the original one tests that tuples are reused if their refcount is one. Added: pypy/dist/pypy/lib/test2/test_enumerate.py ============================================================================== --- (empty file) +++ pypy/dist/pypy/lib/test2/test_enumerate.py Sat Apr 30 02:04:26 2005 @@ -0,0 +1,146 @@ +import unittest +from sets import Set + +from test import test_support + +class G: + 'Sequence using __getitem__' + def __init__(self, seqn): + self.seqn = seqn + def __getitem__(self, i): + return self.seqn[i] + +class I: + 'Sequence using iterator protocol' + def __init__(self, seqn): + self.seqn = seqn + self.i = 0 + def __iter__(self): + return self + def next(self): + if self.i >= len(self.seqn): raise StopIteration + v = self.seqn[self.i] + self.i += 1 + return v + +class Ig: + 'Sequence using iterator protocol defined with a generator' + def __init__(self, seqn): + self.seqn = seqn + self.i = 0 + def __iter__(self): + for val in self.seqn: + yield val + +class X: + 'Missing __getitem__ and __iter__' + def __init__(self, seqn): + self.seqn = seqn + self.i = 0 + def next(self): + if self.i >= len(self.seqn): raise StopIteration + v = self.seqn[self.i] + self.i += 1 + return v + +class E: + 'Test propagation of exceptions' + def __init__(self, seqn): + self.seqn = seqn + self.i = 0 + def __iter__(self): + return self + def next(self): + 3/0 + +class N: + 'Iterator missing next()' + def __init__(self, seqn): + self.seqn = seqn + self.i = 0 + def __iter__(self): + return self + +class EnumerateTestCase(unittest.TestCase): + + enum = enumerate + seq, res = 'abc', [(0,'a'), (1,'b'), (2,'c')] + + def test_basicfunction(self): + self.assertEqual(type(self.enum(self.seq)), self.enum) + e = self.enum(self.seq) + self.assertEqual(iter(e), e) + self.assertEqual(list(self.enum(self.seq)), self.res) + self.enum.__doc__ + + def test_getitemseqn(self): + self.assertEqual(list(self.enum(G(self.seq))), self.res) + e = self.enum(G('')) + self.assertRaises(StopIteration, e.next) + + def test_iteratorseqn(self): + self.assertEqual(list(self.enum(I(self.seq))), self.res) + e = self.enum(I('')) + self.assertRaises(StopIteration, e.next) + + def test_iteratorgenerator(self): + self.assertEqual(list(self.enum(Ig(self.seq))), self.res) + e = self.enum(Ig('')) + self.assertRaises(StopIteration, e.next) + + def test_noniterable(self): + self.assertRaises(TypeError, self.enum, X(self.seq)) + + def test_illformediterable(self): + self.assertRaises(TypeError, list, self.enum(N(self.seq))) + + def test_exception_propagation(self): + self.assertRaises(ZeroDivisionError, list, self.enum(E(self.seq))) + + def test_argumentcheck(self): + self.assertRaises(TypeError, self.enum) # no arguments + self.assertRaises(TypeError, self.enum, 1) # wrong type (not iterable) + self.assertRaises(TypeError, self.enum, 'abc', 2) # too many arguments + + #Don't test this in PyPy, since the tuple can't be reused + def DONOT_test_tuple_reuse(self): + # Tests an implementation detail where tuple is reused + # whenever nothing else holds a reference to it + self.assertEqual(len(Set(map(id, list(enumerate(self.seq))))), len(self.seq)) + self.assertEqual(len(Set(map(id, enumerate(self.seq)))), min(1,len(self.seq))) + +class MyEnum(enumerate): + pass + +class SubclassTestCase(EnumerateTestCase): + + enum = MyEnum + +class TestEmpty(EnumerateTestCase): + + seq, res = '', [] + +class TestBig(EnumerateTestCase): + ##original test (takes too long in PyPy): + #seq = range(10,20000, 2) + #res = zip(range(20000), seq) + + seq = range(10, 200, 2) + res = zip(range(200), seq) + + +def test_main(verbose=None): + testclasses = (EnumerateTestCase, SubclassTestCase, TestEmpty, TestBig) + test_support.run_unittest(*testclasses) + + # verify reference counting + import sys + if verbose and hasattr(sys, "gettotalrefcount"): + counts = [None] * 5 + for i in xrange(len(counts)): + test_support.run_unittest(*testclasses) + counts[i] = sys.gettotalrefcount() + print counts + +if __name__ == "__main__": + test_main(verbose=True) Modified: pypy/dist/pypy/module/builtin/app_functional.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_functional.py (original) +++ pypy/dist/pypy/module/builtin/app_functional.py Sat Apr 30 02:04:26 2005 @@ -230,15 +230,25 @@ max = i return max -def enumerate(collection): - 'Generates an indexed series: (0,coll[0]), (1,coll[1]) ...' - it = iter(collection) # raises a TypeError early - def do_enumerate(it): - index = 0 - for value in it: - yield index, value - index += 1 - return do_enumerate(it) +class enumerate(object): + def __init__(self, collection): + self._iter = iter(collection) + self._index = 0 + + def next(self): + try: + result = self._index, self._iter.next() + except AttributeError: + # CPython raises a TypeError when next() is not defined + raise TypeError('%s has no next() method' % \ + (self._iter)) + + self._index += 1 + return result + + def __iter__(self): + return self + # ____________________________________________________________ From arigo at codespeak.net Sat Apr 30 15:18:40 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 30 Apr 2005 15:18:40 +0200 (CEST) Subject: [pypy-svn] r11644 - in pypy/dist/pypy: annotation lib/test2 module/builtin Message-ID: <20050430131840.DC5CE27BBE@code1.codespeak.net> Author: arigo Date: Sat Apr 30 15:18:40 2005 New Revision: 11644 Removed: pypy/dist/pypy/lib/test2/test_class.py Modified: pypy/dist/pypy/annotation/builtin.py pypy/dist/pypy/module/builtin/app_inspect.py Log: - Misc details. - Removed our own test_class.py. Modified: pypy/dist/pypy/annotation/builtin.py ============================================================================== --- pypy/dist/pypy/annotation/builtin.py (original) +++ pypy/dist/pypy/annotation/builtin.py Sat Apr 30 15:18:40 2005 @@ -167,6 +167,9 @@ def math_floor(x): return SomeFloat() +def math_any(*args): + return SomeFloat() + def rarith_intmask(s_obj): return SomeInteger() @@ -208,6 +211,7 @@ BUILTIN_ANALYZERS[AssertionError.__init__.im_func] = exception_init BUILTIN_ANALYZERS[math.fmod] = math_fmod BUILTIN_ANALYZERS[math.floor] = math_floor +BUILTIN_ANALYZERS[math.exp] = math_any BUILTIN_ANALYZERS[sys.getrefcount] = count BUILTIN_ANALYZERS[sys.getdefaultencoding] = conf Deleted: /pypy/dist/pypy/lib/test2/test_class.py ============================================================================== --- /pypy/dist/pypy/lib/test2/test_class.py Sat Apr 30 15:18:40 2005 +++ (empty file) @@ -1,318 +0,0 @@ -"Test the functionality of Python classes implementing operators." - -from test.test_support import TestFailed - -testmeths = [ - -# Binary operations - "add", - "radd", - "sub", - "rsub", - "mul", - "rmul", - "div", - "rdiv", - "mod", - "rmod", - "divmod", - "rdivmod", - "pow", - "rpow", - "rshift", - "rrshift", - "lshift", - "rlshift", - "and", - "rand", - "or", - "ror", - "xor", - "rxor", - -# List/dict operations - "contains", - "getitem", - "getslice", - "setitem", - "setslice", - "delitem", - "delslice", - -# Unary operations - "neg", - "pos", - "abs", - "int", - "long", - "float", - "oct", - "hex", - -# generic operations - "init", - ] - -# These need to return something other than None -# "coerce", -# "hash", -# "str", -# "repr", - -# These are separate because they can influence the test of other methods. -# "getattr", -# "setattr", -# "delattr", - -class AllTests: - def __coerce__(self, *args): - print "__coerce__:", args - return (self,) + args - - def __hash__(self, *args): - print "__hash__:", args - return hash(id(self)) - - def __str__(self, *args): - print "__str__:", args - return "AllTests" - - def __repr__(self, *args): - print "__repr__:", args - return "AllTests" - - def __cmp__(self, *args): - print "__cmp__:", args - return 0 - - def __del__(self, *args): - print "__del__:", args - -# Synthesize AllTests methods from the names in testmeths. - -method_template = """\ -def __%(method)s__(self, *args): - print "__%(method)s__:", args -""" - -for method in testmeths: - exec method_template % locals() in AllTests.__dict__ - -del method, method_template - -# this also tests __init__ of course. -testme = AllTests() - -# Binary operations - -testme + 1 -1 + testme - -testme - 1 -1 - testme - -testme * 1 -1 * testme - -if 1/2 == 0: - testme / 1 - 1 / testme -else: - # True division is in effect, so "/" doesn't map to __div__ etc; but - # the canned expected-output file requires that __div__ etc get called. - testme.__coerce__(1) - testme.__div__(1) - testme.__coerce__(1) - testme.__rdiv__(1) - -testme % 1 -1 % testme - -divmod(testme,1) -divmod(1, testme) - -testme ** 1 -1 ** testme - -testme >> 1 -1 >> testme - -testme << 1 -1 << testme - -testme & 1 -1 & testme - -testme | 1 -1 | testme - -testme ^ 1 -1 ^ testme - - -# List/dict operations - -1 in testme - -testme[1] -testme[1] = 1 -del testme[1] - -testme[:42] -testme[:42] = "The Answer" -del testme[:42] - -testme[2:1024:10] -testme[2:1024:10] = "A lot" -del testme[2:1024:10] - -testme[:42, ..., :24:, 24, 100] -testme[:42, ..., :24:, 24, 100] = "Strange" -del testme[:42, ..., :24:, 24, 100] - - -# Now remove the slice hooks to see if converting normal slices to slice -# object works. - -del AllTests.__getslice__ -del AllTests.__setslice__ -del AllTests.__delslice__ - -import sys -if sys.platform[:4] != 'java': - testme[:42] - testme[:42] = "The Answer" - del testme[:42] -else: - # This works under Jython, but the actual slice values are - # different. - print "__getitem__: (slice(0, 42, None),)" - print "__setitem__: (slice(0, 42, None), 'The Answer')" - print "__delitem__: (slice(0, 42, None),)" - -# Unary operations - --testme -+testme -abs(testme) -# PyPy enforces the same rule as Jython and CPython 2.4 -if 0: # sys.platform[:4] != 'java': - int(testme) - long(testme) - float(testme) - oct(testme) - hex(testme) -else: - # Jython enforced that these methods return - # a value of the expected type. - print "__int__: ()" - print "__long__: ()" - print "__float__: ()" - print "__oct__: ()" - print "__hex__: ()" - - -# And the rest... - -hash(testme) -repr(testme) -str(testme) - -testme == 1 -testme < 1 -testme > 1 -testme <> 1 -testme != 1 -1 == testme -1 < testme -1 > testme -1 <> testme -1 != testme - -# This test has to be last (duh.) - -del testme -if sys.platform[:4] == 'java': - import java - java.lang.System.gc() - -# Interfering tests - -class ExtraTests: - def __getattr__(self, *args): - print "__getattr__:", args - return "SomeVal" - - def __setattr__(self, *args): - print "__setattr__:", args - - def __delattr__(self, *args): - print "__delattr__:", args - -testme = ExtraTests() -testme.spam -testme.eggs = "spam, spam, spam and ham" -del testme.cardinal - - -# Test correct errors from hash() on objects with comparisons but no __hash__ - -class C0: - pass - -hash(C0()) # This should work; the next two should raise TypeError - -class C1: - def __cmp__(self, other): return 0 - -try: hash(C1()) -except TypeError: pass -else: raise TestFailed, "hash(C1()) should raise an exception" - -class C2: - def __eq__(self, other): return 1 - -try: hash(C2()) -except TypeError: pass -else: raise TestFailed, "hash(C2()) should raise an exception" - - -# Test for SF bug 532646 - -class A: - pass -A.__call__ = A() -a = A() -try: - a() # This should not segfault -except RuntimeError: - pass -else: - raise TestFailed, "how could this not have overflowed the stack?" - - -# Tests for exceptions raised in instance_getattr2(). - -def booh(self): - raise AttributeError, "booh" - -class A: - a = property(booh) -try: - A().a # Raised AttributeError: A instance has no attribute 'a' -except AttributeError, x: - if str(x) is not "booh": - print "attribute error for A().a got masked:", str(x) - -class E: - __eq__ = property(booh) -E() == E() # In debug mode, caused a C-level assert() to fail - -class I: - __init__ = property(booh) -try: - I() # In debug mode, printed XXX undetected error and raises AttributeError -except AttributeError, x: - pass -else: - print "attribute error for I.__init__ got masked" Modified: pypy/dist/pypy/module/builtin/app_inspect.py ============================================================================== --- pypy/dist/pypy/module/builtin/app_inspect.py (original) +++ pypy/dist/pypy/module/builtin/app_inspect.py Sat Apr 30 15:18:40 2005 @@ -24,6 +24,7 @@ def _issubclass(cls, klass_or_tuple, check_cls, depth): if depth == 0: + # XXX overzealous test compliance hack raise RuntimeError,"maximum recursion depth excedeed" if _issubtype(type(klass_or_tuple), tuple): for klass in klass_or_tuple: From arigo at codespeak.net Sat Apr 30 15:34:07 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 30 Apr 2005 15:34:07 +0200 (CEST) Subject: [pypy-svn] r11645 - pypy/dist/pypy/tool Message-ID: <20050430133407.3615B27BC1@code1.codespeak.net> Author: arigo Date: Sat Apr 30 15:34:06 2005 New Revision: 11645 Modified: pypy/dist/pypy/tool/alarm.py Log: This version of alarm.py is much more aggressive: it sends KeyboardInterrupts to the main thread until it dies. Modified: pypy/dist/pypy/tool/alarm.py ============================================================================== --- pypy/dist/pypy/tool/alarm.py (original) +++ pypy/dist/pypy/tool/alarm.py Sat Apr 30 15:34:06 2005 @@ -1,24 +1,37 @@ import traceback -def _main_with_alarm(): +def _main_with_alarm(finished): import sys, os import time import thread - def timeout_thread(timeout): + def timeout_thread(timeout, finished): stderr = sys.stderr interrupt_main = thread.interrupt_main - time.sleep(timeout) - stderr.write("="*26 + "timeout" + "="*26 + "\n") - interrupt_main() + sleep = time.sleep + now = time.time + while now() < timeout and not finished: + sleep(1.65123) + if not finished: + stderr.write("="*26 + "timeout" + "="*26 + "\n") + while not finished: + # send KeyboardInterrupt repeatedly until the main + # thread dies. Then quit (in case we are on a system + # where exiting the main thread doesn't kill us too). + interrupt_main() + sleep(0.031416) - timeout = float(sys.argv[1]) - thread.start_new_thread(timeout_thread, (timeout,)) + timeout = time.time() + float(sys.argv[1]) + thread.start_new_thread(timeout_thread, (timeout, finished)) del sys.argv[:2] sys.path.insert(0, os.path.dirname(sys.argv[0])) return sys.argv[0] -execfile(_main_with_alarm()) +finished = [] +try: + execfile(_main_with_alarm(finished)) +finally: + finished.append(True) From arigo at codespeak.net Sat Apr 30 15:34:48 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 30 Apr 2005 15:34:48 +0200 (CEST) Subject: [pypy-svn] r11646 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050430133448.D35E827BCE@code1.codespeak.net> Author: arigo Date: Sat Apr 30 15:34:48 2005 New Revision: 11646 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: test_class needs to be --oldstyle. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Sat Apr 30 15:34:48 2005 @@ -346,7 +346,7 @@ RegrTest('test_cgi.py', enabled=False), RegrTest('test_charmapcodec.py', enabled=True), RegrTest('test_cl.py', enabled=False, dumbtest=1), - RegrTest('test_class.py', enabled=False), + RegrTest('test_class.py', enabled=False, oldstyle=True), RegrTest('test_cmath.py', enabled=True, dumbtest=1), RegrTest('test_codeccallbacks.py', enabled=False), #rev 10840: Uncaught interp-level exception: Same place as test_cfgparser From arigo at codespeak.net Sat Apr 30 15:53:09 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 30 Apr 2005 15:53:09 +0200 (CEST) Subject: [pypy-svn] r11647 - pypy/dist/pypy/lib/test2 Message-ID: <20050430135309.3C38C27BDA@code1.codespeak.net> Author: arigo Date: Sat Apr 30 15:53:09 2005 New Revision: 11647 Added: pypy/dist/pypy/lib/test2/test_class.py - copied unchanged from r11646, vendor/cpython/Python-r241/dist/src/Lib/test/test_class.py Log: Copied test_class.py from Python 2.4.1, which more closely matches the semantics that we have. Note that copying tests from 2.4 in this kind of case is ok. Use svn cp http://codespeak.net/svn/vendor/cpython/Python-r241/dist/src/Lib/test/test_xyz.py pypy/lib/test2/test_xyz.py From pedronis at codespeak.net Sat Apr 30 16:08:51 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 30 Apr 2005 16:08:51 +0200 (CEST) Subject: [pypy-svn] r11649 - pypy/dist/pypy/objspace/std Message-ID: <20050430140851.45FE227B9F@code1.codespeak.net> Author: pedronis Date: Sat Apr 30 16:08:51 2005 New Revision: 11649 Modified: pypy/dist/pypy/objspace/std/typeobject.py Log: don't prefix type repr with pypy Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Sat Apr 30 16:08:51 2005 @@ -238,7 +238,7 @@ return space.newbool(w_type2 in w_type1.mro_w) def repr__Type(space, w_obj): - return space.wrap("" % w_obj.name) # XXX remove 'pypy' + return space.wrap("" % w_obj.name) def getattr__Type_ANY(space, w_type, w_name): name = space.str_w(w_name) From pedronis at codespeak.net Sat Apr 30 16:56:52 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 30 Apr 2005 16:56:52 +0200 (CEST) Subject: [pypy-svn] r11650 - pypy/dist/pypy/objspace/std Message-ID: <20050430145652.F21CF27BD8@code1.codespeak.net> Author: pedronis Date: Sat Apr 30 16:56:52 2005 New Revision: 11650 Modified: pypy/dist/pypy/objspace/std/typeobject.py pypy/dist/pypy/objspace/std/typetype.py Log: factor out is_heaptype Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Sat Apr 30 16:56:52 2005 @@ -215,6 +215,8 @@ from pypy.objspace.std.model import UnwrapError raise UnwrapError(w_self) + def is_heaptype(w_self): + return w_self.__flags__&_HEAPTYPE def call__Type(space, w_type, __args__): # special case for type(x) Modified: pypy/dist/pypy/objspace/std/typetype.py ============================================================================== --- pypy/dist/pypy/objspace/std/typetype.py (original) +++ pypy/dist/pypy/objspace/std/typetype.py Sat Apr 30 16:56:52 2005 @@ -2,8 +2,6 @@ from pypy.objspace.std.stdtypedef import * from pypy.objspace.std.dictproxyobject import descr_get_dictproxy -from copy_reg import _HEAPTYPE - def descr__new__(space, w_typetype, w_name, w_bases, w_dict): "This is used to create user-defined classes only." from pypy.objspace.std.typeobject import W_TypeObject @@ -104,7 +102,7 @@ return space.wrap(w_type.__flags__) def defunct_descr_get__module(space, w_type): - if w_type.__flags__ & _HEAPTYPE: + if w_type.is_heaptype(): return w_type.dict_w['__module__'] else: # here CPython checks for a module.name in the type description. @@ -124,7 +122,7 @@ def descr_set__module(space, w_type, w_value): w_type = _check(space, w_type) - if not (w_type.__flags__ & _HEAPTYPE): + if not w_type.is_heaptype(): raise OperationError(space.w_TypeError, space.wrap("can't set %s.__module__" % w_type.name)) From arigo at codespeak.net Sat Apr 30 17:04:37 2005 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 30 Apr 2005 17:04:37 +0200 (CEST) Subject: [pypy-svn] r11651 - in pypy/dist/pypy/interpreter: . test Message-ID: <20050430150437.AEF8927BE8@code1.codespeak.net> Author: arigo Date: Sat Apr 30 17:04:37 2005 New Revision: 11651 Modified: pypy/dist/pypy/interpreter/nestedscope.py pypy/dist/pypy/interpreter/test/test_nestedscope.py Log: CPython's locals() also contain the variables received from outer scopes. Modified: pypy/dist/pypy/interpreter/nestedscope.py ============================================================================== --- pypy/dist/pypy/interpreter/nestedscope.py (original) +++ pypy/dist/pypy/interpreter/nestedscope.py Sat Apr 30 17:04:37 2005 @@ -72,9 +72,7 @@ PyInterpFrame.fast2locals(self) # cellvars are values exported to inner scopes # freevars are values coming from outer scopes - # for locals we only want the ones exported to inner-scopes - # XXX check more exactly how CPython does it - freevarnames = self.code.co_cellvars # + self.code.co_freevars + freevarnames = self.code.co_cellvars + self.code.co_freevars for name, cell in zip(freevarnames, self.cells): try: w_value = cell.get() Modified: pypy/dist/pypy/interpreter/test/test_nestedscope.py ============================================================================== --- pypy/dist/pypy/interpreter/test/test_nestedscope.py (original) +++ pypy/dist/pypy/interpreter/test/test_nestedscope.py Sat Apr 30 17:04:37 2005 @@ -41,7 +41,7 @@ return locals() return g() d = f() - assert d == {'i':3} + assert d == {'i':3, 'x':3} def test_deeply_nested_scope_locals(self): def f(): @@ -53,5 +53,7 @@ return locals(), h() return g() outer_locals, inner_locals = f() - assert inner_locals == {'i':3} - assert len(outer_locals) == 1, "len!=1 for %r" % (outer_locals,) + assert inner_locals == {'i':3, 'x':3} + keys = outer_locals.keys() + keys.sort() + assert keys == ['h', 'x'] From cfbolz at codespeak.net Sat Apr 30 17:14:05 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sat, 30 Apr 2005 17:14:05 +0200 (CEST) Subject: [pypy-svn] r11652 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050430151405.12E5027BE8@code1.codespeak.net> Author: cfbolz Date: Sat Apr 30 17:14:04 2005 New Revision: 11652 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: enable test_enumerate Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Sat Apr 30 17:14:04 2005 @@ -394,9 +394,7 @@ #rev 10840: Uncaught interp-level exception RegrTest('test_email_codecs.py', enabled=False, dumbtest=1), - RegrTest('test_enumerate.py', enabled=False), - #rev 10840: fails because enumerate is a type in CPy: the test tries to subclass it - + RegrTest('test_enumerate.py', enabled=True), RegrTest('test_eof.py', enabled=False), #rev 10840: some error strings differ slightly XXX From pedronis at codespeak.net Sat Apr 30 17:22:20 2005 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 30 Apr 2005 17:22:20 +0200 (CEST) Subject: [pypy-svn] r11653 - in pypy/dist/pypy/objspace/std: . test Message-ID: <20050430152220.AFAB527BF5@code1.codespeak.net> Author: pedronis Date: Sat Apr 30 17:22:20 2005 New Revision: 11653 Modified: pypy/dist/pypy/objspace/std/test/test_typeobject.py pypy/dist/pypy/objspace/std/typeobject.py pypy/dist/pypy/objspace/std/typetype.py Log: improved type __repr__ with tests Modified: pypy/dist/pypy/objspace/std/test/test_typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/test/test_typeobject.py (original) +++ pypy/dist/pypy/objspace/std/test/test_typeobject.py Sat Apr 30 17:22:20 2005 @@ -271,5 +271,12 @@ raises(TypeError, A.__dict__['x'].__get__, z) raises(TypeError, A.__dict__['x'].__set__, z, 1) raises(TypeError, A.__dict__['x'].__delete__, z) + + def test_repr(self): + globals()['__name__'] = 'a' + class A(object): + pass + assert repr(A) == "" + assert repr(type(type)) == "" Modified: pypy/dist/pypy/objspace/std/typeobject.py ============================================================================== --- pypy/dist/pypy/objspace/std/typeobject.py (original) +++ pypy/dist/pypy/objspace/std/typeobject.py Sat Apr 30 17:22:20 2005 @@ -218,6 +218,14 @@ def is_heaptype(w_self): return w_self.__flags__&_HEAPTYPE + def get_module(w_self): + space = w_self.space + if '__module__' in w_self.dict_w: + return w_self.dict_w['__module__'] + else: + return space.wrap('__builtin__') + + def call__Type(space, w_type, __args__): # special case for type(x) if space.is_true(space.is_(w_type, space.w_type)): @@ -240,7 +248,19 @@ return space.newbool(w_type2 in w_type1.mro_w) def repr__Type(space, w_obj): - return space.wrap("" % w_obj.name) + w_mod = w_obj.get_module() + if not space.is_true(space.isinstance(w_mod, space.w_str)): + mod = None + else: + mod = space.str_w(w_mod) + if w_obj.is_heaptype(): + kind = 'class' + else: + kind = 'type' + if mod is not None and mod !='__builtin__': + return space.wrap("<%s '%s.%s'>" % (kind, mod, w_obj.name)) + else: + return space.wrap("<%s '%s'>" % (kind, w_obj.name)) def getattr__Type_ANY(space, w_type, w_name): name = space.str_w(w_name) Modified: pypy/dist/pypy/objspace/std/typetype.py ============================================================================== --- pypy/dist/pypy/objspace/std/typetype.py (original) +++ pypy/dist/pypy/objspace/std/typetype.py Sat Apr 30 17:22:20 2005 @@ -114,11 +114,8 @@ # therefore, we use the module attribute whenever it exists. def descr_get__module(space, w_type): - w_type = _check(space, w_type) - if '__module__' in w_type.dict_w: - return w_type.dict_w['__module__'] - else: - return space.wrap('__builtin__') + w_type = _check(space, w_type) + return w_type.get_module() def descr_set__module(space, w_type, w_value): w_type = _check(space, w_type) From cfbolz at codespeak.net Sat Apr 30 17:43:19 2005 From: cfbolz at codespeak.net (cfbolz at codespeak.net) Date: Sat, 30 Apr 2005 17:43:19 +0200 (CEST) Subject: [pypy-svn] r11654 - pypy/dist/lib-python-2.3.4/test Message-ID: <20050430154319.1482627BF7@code1.codespeak.net> Author: cfbolz Date: Sat Apr 30 17:43:18 2005 New Revision: 11654 Modified: pypy/dist/lib-python-2.3.4/test/conftest.py Log: test_scope passes now too. Modified: pypy/dist/lib-python-2.3.4/test/conftest.py ============================================================================== --- pypy/dist/lib-python-2.3.4/test/conftest.py (original) +++ pypy/dist/lib-python-2.3.4/test/conftest.py Sat Apr 30 17:43:18 2005 @@ -552,7 +552,7 @@ RegrTest('test_robotparser.py', enabled=True), RegrTest('test_rotor.py', enabled=False), RegrTest('test_sax.py', enabled=False, dumbtest=1), - RegrTest('test_scope.py', enabled=False), + RegrTest('test_scope.py', enabled=True), RegrTest('test_scriptpackages.py', enabled=False), RegrTest('test_select.py', enabled=False, dumbtest=1), RegrTest('test_sets.py', enabled=True),